Clean and regen docs (#401)

diff --git a/docs/dyn/servicemanagement_v1.services.configs.html b/docs/dyn/servicemanagement_v1.services.configs.html
index dee0d71..396dcf6 100644
--- a/docs/dyn/servicemanagement_v1.services.configs.html
+++ b/docs/dyn/servicemanagement_v1.services.configs.html
@@ -256,6 +256,9 @@
       },
     ],
   },
+  "id": "A String", # A unique ID for a specific instance of this message, typically assigned
+      # by the client for tracking purpose. If empty, the server may choose to
+      # generate one instead.
   "backend": { # `Backend` defines the backend configuration for a service. # API backend configuration.
     "rules": [ # A list of API backend rules that apply to individual API methods.
         #
@@ -264,6 +267,8 @@
         "selector": "A String", # Selects the methods to which this rule applies.
             #
             # Refer to selector for syntax details.
+        "minDeadline": 3.14, # Minimum deadline in seconds needed for this method. Calls having deadline
+            # value lower than this will be rejected.
         "deadline": 3.14, # The number of seconds to wait for a response from a request.  The
             # default depends on the deployment context.
         "address": "A String", # The address of the API backend.
@@ -337,9 +342,6 @@
     ],
   },
   "title": "A String", # The product title associated with this service.
-  "id": "A String", # A unique ID for a specific instance of this message, typically assigned
-      # by the client for tracking purpose. If empty, the server may choose to
-      # generate one instead.
   "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration.
       #
       # Example for an API targeted for external use:
@@ -392,13 +394,6 @@
               #      canonical_scopes: https://www.googleapis.com/auth/calendar,
               #                        https://www.googleapis.com/auth/calendar.read
         },
-        "allowWithoutCredential": True or False, # Whether to allow requests without a credential. The credential can be
-            # an OAuth token, Google cookies (first-party auth) or EndUserCreds.
-            #
-            # For requests without credentials, if the service control environment is
-            # specified, each incoming request **must** be associated with a service
-            # consumer. This can be done by passing an API key that belongs to a consumer
-            # project.
         "requirements": [ # Requirements for additional authentication providers.
           { # User-defined authentication requirements, including support for
               # [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
@@ -425,6 +420,18 @@
                 #                bookstore_web.apps.googleusercontent.com
           },
         ],
+        "allowWithoutCredential": True or False, # Whether to allow requests without a credential. The credential can be
+            # an OAuth token, Google cookies (first-party auth) or EndUserCreds.
+            #
+            # For requests without credentials, if the service control environment is
+            # specified, each incoming request **must** be associated with a service
+            # consumer. This can be done by passing an API key that belongs to a consumer
+            # project.
+        "customAuth": { # Configuration for a custom authentication provider. # Configuration for custom authentication.
+          "provider": "A String", # A configuration string containing connection information for the
+              # authentication provider, typically formatted as a SmartService string
+              # (go/smartservice).
+        },
         "selector": "A String", # Selects the methods to which this rule applies.
             #
             # Refer to selector for syntax details.
@@ -497,11 +504,11 @@
           #       rules:
           #       - selector: "google.example.library.v1.LibraryService.CreateBook"
           #         allow_unregistered_calls: true
+        "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
         "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
             # methods in all APIs.
             #
             # Refer to selector for syntax details.
-        "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
       },
     ],
     "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
@@ -584,6 +591,11 @@
           # parameters. Assume the following definition of the request message:
           #
           #
+          #     service Messaging {
+          #       rpc GetMessage(GetMessageRequest) returns (Message) {
+          #         option (google.api.http).get = "/v1/messages/{message_id}";
+          #       }
+          #     }
           #     message GetMessageRequest {
           #       message SubMessage {
           #         string subfield = 1;
@@ -742,31 +754,50 @@
             # body. NOTE: the referred field must not be a repeated field and must be
             # present at the top-level of request message type.
         "get": "A String", # Used for listing and getting information about resources.
-        "mediaDownload": { # Use this only for Scotty Requests. Do not use this for media support using # Use this only for Scotty Requests. Do not use this for bytestream methods.
-            # For media support, add instead [][google.bytestream.RestByteStream] as an
-            # API to your configuration.
-            # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
-            # your configuration for Bytestream methods.
-          "enabled": True or False, # Whether download is enabled.
-          "downloadService": "A String", # DO NOT USE THIS FIELD UNTIL THIS WARNING IS REMOVED.
-              #
-              # Specify name of the download service if one is used for download.
-        },
+        "restCollection": "A String", # Optional. The REST collection name is by default derived from the URL
+            # pattern. If specified, this field overrides the default collection name.
+            # Example:
+            #
+            #     rpc AddressesAggregatedList(AddressesAggregatedListRequest)
+            #         returns (AddressesAggregatedListResponse) {
+            #       option (google.api.http) = {
+            #         get: "/v1/projects/{project_id}/aggregated/addresses"
+            #         rest_collection: "projects.addresses"
+            #       };
+            #     }
+            #
+            # This method has the automatically derived collection name
+            # "projects.aggregated". Because, semantically, this rpc is actually an
+            # operation on the "projects.addresses" collection, the `rest_collection`
+            # field is configured to override the derived collection name.
         "additionalBindings": [ # Additional HTTP bindings for the selector. Nested bindings must
             # not contain an `additional_bindings` field themselves (that is,
             # the nesting may only be one level deep).
           # Object with schema name: HttpRule
         ],
-        "mediaUpload": { # Use this only for Scotty Requests. Do not use this for media support using # Use this only for Scotty Requests. Do not use this for media support using
+        "mediaUpload": { # Defines the Media configuration for a service in case of an upload. # Use this only for Scotty Requests. Do not use this for media support using
             # Bytestream, add instead
             # [][google.bytestream.RestByteStream] as an API to your
             # configuration for Bytestream methods.
+            # Use this only for Scotty Requests. Do not use this for media support using
             # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
             # your configuration for Bytestream methods.
+          "progressNotification": True or False, # Whether to receive a notification for progress changes of media upload.
+          "startNotification": True or False, # Whether to receive a notification on the start of media upload.
+          "mimeTypes": [ # An array of mimetype patterns. Esf will only accept uploads that match one
+              # of the given patterns.
+            "A String",
+          ],
+          "completeNotification": True or False, # A boolean that determines whether a notification for the completion of an
+              # upload should be sent to the backend. These notifications will not be seen
+              # by the client and will not consume quota.
           "enabled": True or False, # Whether upload is enabled.
-          "uploadService": "A String", # DO NOT USE THIS FIELD UNTIL THIS WARNING IS REMOVED.
+          "uploadService": "A String", # DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.
               #
               # Specify name of the upload service if one is used for upload.
+          "maxSize": "A String", # Optional maximum acceptable size for an upload.
+              # The size is specified in bytes.
+          "dropzone": "A String", # Name of the Scotty dropzone to use for the current API.
         },
         "selector": "A String", # Selects methods to which this rule applies.
             #
@@ -776,6 +807,39 @@
             # not set, the response message will be used as HTTP body of response.
             # NOTE: the referred field must be not a repeated field and must be present
             # at the top-level of response message type.
+        "restMethodName": "A String", # Optional. The rest method name is by default derived from the URL
+            # pattern. If specified, this field overrides the default method name.
+            # Example:
+            #
+            #     rpc CreateResource(CreateResourceRequest)
+            #         returns (CreateResourceResponse) {
+            #       option (google.api.http) = {
+            #         post: "/v1/resources",
+            #         body: "resource",
+            #         rest_method_name: "insert"
+            #       };
+            #     }
+            #
+            # This method has the automatically derived rest method name "create", but
+            #  for backwards compatability with apiary, it is specified as insert.
+        "mediaDownload": { # Defines the Media configuration for a service in case of a download. # Use this only for Scotty Requests. Do not use this for bytestream methods.
+            # For media support, add instead [][google.bytestream.RestByteStream] as an
+            # API to your configuration.
+            # Use this only for Scotty Requests. Do not use this for media support using
+            # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
+            # your configuration for Bytestream methods.
+          "useDirectDownload": True or False, # A boolean that determines if direct download from ESF should be used for
+              # download of this media.
+          "enabled": True or False, # Whether download is enabled.
+          "completeNotification": True or False, # A boolean that determines whether a notification for the completion of a
+              # download should be sent to the backend.
+          "maxDirectDownloadSize": "A String", # Optional maximum acceptable size for direct download.
+              # The size is specified in bytes.
+          "dropzone": "A String", # Name of the Scotty dropzone to use for the current API.
+          "downloadService": "A String", # DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.
+              #
+              # Specify name of the download service if one is used for download.
+        },
         "put": "A String", # Used for updating a resource.
         "patch": "A String", # Used for updating a resource.
         "post": "A String", # Used for creating a resource.
@@ -786,6 +850,12 @@
         "delete": "A String", # Used for deleting a resource.
       },
     ],
+    "fullyDecodeReservedExpansion": True or False, # When set to true, URL path parmeters will be fully URI-decoded except in
+        # cases of single segment matches in reserved expansion, where "%2F" will be
+        # left encoded.
+        #
+        # The default behavior is to not decode RFC 6570 reserved characters in multi
+        # segment matches.
   },
   "apis": [ # A list of API interfaces exported by this service. Only the `name` field
       # of the google.protobuf.Api needs to be provided by the configuration
@@ -793,31 +863,8 @@
       # normalization process. It is an error to specify an API interface here
       # which cannot be resolved against the associated IDL files.
     { # Api is a light-weight descriptor for a protocol buffer service.
-      "methods": [ # The methods of this api, in unspecified order.
-        { # Method represents a method of an api.
-          "name": "A String", # The simple name of this method.
-          "requestStreaming": True or False, # If true, the request is streamed.
-          "responseTypeUrl": "A String", # The URL of the output message type.
-          "requestTypeUrl": "A String", # A URL of the input message type.
-          "responseStreaming": True or False, # If true, the response is streamed.
-          "syntax": "A String", # The source syntax of this method.
-          "options": [ # Any metadata attached to the method.
-            { # A protocol buffer option, which can be attached to a message, field,
-                # enumeration, etc.
-              "name": "A String", # The option's name. For protobuf built-in options (options defined in
-                  # descriptor.proto), this is the short name. For example, `"map_entry"`.
-                  # For custom options, it should be the fully-qualified name. For example,
-                  # `"google.api.http"`.
-              "value": { # The option's value packed in an Any message. If the value is a primitive,
-                  # the corresponding wrapper type defined in google/protobuf/wrappers.proto
-                  # should be used. If the value is an enum, it should be stored as an int32
-                  # value using the google.protobuf.Int32Value type.
-                "a_key": "", # Properties of the object. Contains field @type with type URL.
-              },
-            },
-          ],
-        },
-      ],
+      "name": "A String", # The fully qualified name of this api, including package name
+          # followed by the api's simple name.
       "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this
           # message.
           # protobuf element, like the file in which it is defined.
@@ -943,8 +990,31 @@
           },
         },
       ],
-      "name": "A String", # The fully qualified name of this api, including package name
-          # followed by the api's simple name.
+      "methods": [ # The methods of this api, in unspecified order.
+        { # Method represents a method of an api.
+          "name": "A String", # The simple name of this method.
+          "requestStreaming": True or False, # If true, the request is streamed.
+          "responseTypeUrl": "A String", # The URL of the output message type.
+          "requestTypeUrl": "A String", # A URL of the input message type.
+          "responseStreaming": True or False, # If true, the response is streamed.
+          "syntax": "A String", # The source syntax of this method.
+          "options": [ # Any metadata attached to the method.
+            { # A protocol buffer option, which can be attached to a message, field,
+                # enumeration, etc.
+              "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                  # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                  # For custom options, it should be the fully-qualified name. For example,
+                  # `"google.api.http"`.
+              "value": { # The option's value packed in an Any message. If the value is a primitive,
+                  # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                  # should be used. If the value is an enum, it should be stored as an int32
+                  # value using the google.protobuf.Int32Value type.
+                "a_key": "", # Properties of the object. Contains field @type with type URL.
+              },
+            },
+          ],
+        },
+      ],
     },
   ],
   "customError": { # Customize service error responses.  For example, list any service # Custom error configuration.
@@ -972,6 +1042,160 @@
       "A String",
     ],
   },
+  "quota": { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration.
+      # usage.
+      #
+      # The quota configuration works this way:
+      # - The service configuration defines a set of metrics.
+      # - For API calls, the quota.metric_rules maps methods to metrics with
+      #   corresponding costs.
+      # - The quota.limits defines limits on the metrics, which will be used for
+      #   quota checks at runtime.
+      #
+      # An example quota configuration in yaml format:
+      #
+      #    quota:
+      #
+      #      - name: apiWriteQpsPerProject
+      #        metric: library.googleapis.com/write_calls
+      #        unit: "1/min/{project}"  # rate limit for consumer projects
+      #        values:
+      #          STANDARD: 10000
+      #
+      #
+      #      # The metric rules bind all methods to the read_calls metric,
+      #      # except for the UpdateBook and DeleteBook methods. These two methods
+      #      # are mapped to the write_calls metric, with the UpdateBook method
+      #      # consuming at twice rate as the DeleteBook method.
+      #      metric_rules:
+      #      - selector: "*"
+      #        metric_costs:
+      #          library.googleapis.com/read_calls: 1
+      #      - selector: google.example.library.v1.LibraryService.UpdateBook
+      #        metric_costs:
+      #          library.googleapis.com/write_calls: 2
+      #      - selector: google.example.library.v1.LibraryService.DeleteBook
+      #        metric_costs:
+      #          library.googleapis.com/write_calls: 1
+      #
+      #  Corresponding Metric definition:
+      #
+      #      metrics:
+      #      - name: library.googleapis.com/read_calls
+      #        display_name: Read requests
+      #        metric_kind: DELTA
+      #        value_type: INT64
+      #
+      #      - name: library.googleapis.com/write_calls
+      #        display_name: Write requests
+      #        metric_kind: DELTA
+      #        value_type: INT64
+    "metricRules": [ # List of `MetricRule` definitions, each one mapping a selected method to one
+        # or more metrics.
+      { # Bind API methods to metrics. Binding a method to a metric causes that
+          # metric's configured quota behaviors to apply to the method call.
+        "metricCosts": { # Metrics to update when the selected methods are called, and the associated
+            # cost applied to each metric.
+            #
+            # The key of the map is the metric name, and the values are the amount
+            # increased for the metric against which the quota limits are defined.
+            # The value must not be negative.
+          "a_key": "A String",
+        },
+        "selector": "A String", # Selects the methods to which this rule applies.
+            #
+            # Refer to selector for syntax details.
+      },
+    ],
+    "limits": [ # List of `QuotaLimit` definitions for the service.
+      { # `QuotaLimit` defines a specific limit that applies over a specified duration
+          # for a limit type. There can be at most one limit for a duration and limit
+          # type combination defined within a `QuotaGroup`.
+        "displayName": "A String", # User-visible display name for this limit.
+            # Optional. If not set, the UI will provide a default display name based on
+            # the quota configuration. This field can be used to override the default
+            # display name generated from the configuration.
+        "description": "A String", # Optional. User-visible, extended description for this quota limit.
+            # Should be used only when more context is needed to understand this limit
+            # than provided by the limit's display name (see: `display_name`).
+        "defaultLimit": "A String", # Default number of tokens that can be consumed during the specified
+            # duration. This is the number of tokens assigned when a client
+            # application developer activates the service for his/her project.
+            #
+            # Specifying a value of 0 will block all requests. This can be used if you
+            # are provisioning quota to selected consumers and blocking others.
+            # Similarly, a value of -1 will indicate an unlimited quota. No other
+            # negative values are allowed.
+            #
+            # Used by group-based quotas only.
+        "metric": "A String", # The name of the metric this quota limit applies to. The quota limits with
+            # the same metric will be checked together during runtime. The metric must be
+            # defined within the service config.
+            #
+            # Used by metric-based quotas only.
+        "values": { # Tiered limit values, currently only STANDARD is supported.
+          "a_key": "A String",
+        },
+        "maxLimit": "A String", # Maximum number of tokens that can be consumed during the specified
+            # duration. Client application developers can override the default limit up
+            # to this maximum. If specified, this value cannot be set to a value less
+            # than the default limit. If not specified, it is set to the default limit.
+            #
+            # To allow clients to apply overrides with no upper bound, set this to -1,
+            # indicating unlimited maximum quota.
+            #
+            # Used by group-based quotas only.
+        "duration": "A String", # Duration of this limit in textual notation. Example: "100s", "24h", "1d".
+            # For duration longer than a day, only multiple of days is supported. We
+            # support only "100s" and "1d" for now. Additional support will be added in
+            # the future. "0" indicates indefinite duration.
+            #
+            # Used by group-based quotas only.
+        "freeTier": "A String", # Free tier value displayed in the Developers Console for this limit.
+            # The free tier is the number of tokens that will be subtracted from the
+            # billed amount when billing is enabled.
+            # This field can only be set on a limit with duration "1d", in a billable
+            # group; it is invalid on any other limit. If this field is not set, it
+            # defaults to 0, indicating that there is no free tier for this service.
+            #
+            # Used by group-based quotas only.
+        "unit": "A String", # Specify the unit of the quota limit. It uses the same syntax as
+            # Metric.unit. The supported unit kinds are determined by the quota
+            # backend system.
+            #
+            # The [Google Service Control](https://cloud.google.com/service-control)
+            # supports the following unit components:
+            # * One of the time intevals:
+            #   * "/min"  for quota every minute.
+            #   * "/d"  for quota every 24 hours, starting 00:00 US Pacific Time.
+            #   * Otherwise the quota won't be reset by time, such as storage limit.
+            # * One and only one of the granted containers:
+            #   * "/{project}" quota for a project
+            #
+            # Here are some examples:
+            # * "1/min/{project}" for quota per minute per project.
+            #
+            # Note: the order of unit components is insignificant.
+            # The "1" at the beginning is required to follow the metric unit syntax.
+            #
+            # Used by metric-based quotas only.
+        "name": "A String", # Name of the quota limit. The name is used to refer to the limit when
+            # overriding the default limit on per-consumer basis.
+            #
+            # For metric-based quota limits, the name must be provided, and it must be
+            # unique within the service. The name can only include alphanumeric
+            # characters as well as '-'.
+            #
+            # The maximum length of the limit name is 64 characters.
+            #
+            # The name of a limit is used as a unique identifier for this limit.
+            # Therefore, once a limit has been put into use, its name should be
+            # immutable. You can use the display_name field to provide a user-friendly
+            # name for the limit. The display name can be evolved over time without
+            # affecting the identity of the limit.
+      },
+    ],
+  },
   "visibility": { # `Visibility` defines restrictions for the visibility of service # API visibility configuration.
       # elements.  Restrictions are specified using visibility labels
       # (e.g., TRUSTED_TESTER) that are elsewhere linked to users and projects.
@@ -1132,12 +1356,32 @@
       #     enums:
       #     - name: google.someapi.v1.SomeEnum
     { # Enum type definition.
-      "syntax": "A String", # The source syntax.
       "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
           # protobuf element, like the file in which it is defined.
         "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
             # protobuf element.  For example: `"google/protobuf/source_context.proto"`.
       },
+      "enumvalue": [ # Enum value definitions.
+        { # Enum value definition.
+          "options": [ # Protocol buffer options.
+            { # A protocol buffer option, which can be attached to a message, field,
+                # enumeration, etc.
+              "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                  # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                  # For custom options, it should be the fully-qualified name. For example,
+                  # `"google.api.http"`.
+              "value": { # The option's value packed in an Any message. If the value is a primitive,
+                  # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                  # should be used. If the value is an enum, it should be stored as an int32
+                  # value using the google.protobuf.Int32Value type.
+                "a_key": "", # Properties of the object. Contains field @type with type URL.
+              },
+            },
+          ],
+          "name": "A String", # Enum value name.
+          "number": 42, # Enum value number.
+        },
+      ],
       "options": [ # Protocol buffer options.
         { # A protocol buffer option, which can be attached to a message, field,
             # enumeration, etc.
@@ -1154,27 +1398,7 @@
         },
       ],
       "name": "A String", # Enum type name.
-      "enumvalue": [ # Enum value definitions.
-        { # Enum value definition.
-          "number": 42, # Enum value number.
-          "name": "A String", # Enum value name.
-          "options": [ # Protocol buffer options.
-            { # A protocol buffer option, which can be attached to a message, field,
-                # enumeration, etc.
-              "name": "A String", # The option's name. For protobuf built-in options (options defined in
-                  # descriptor.proto), this is the short name. For example, `"map_entry"`.
-                  # For custom options, it should be the fully-qualified name. For example,
-                  # `"google.api.http"`.
-              "value": { # The option's value packed in an Any message. If the value is a primitive,
-                  # the corresponding wrapper type defined in google/protobuf/wrappers.proto
-                  # should be used. If the value is an enum, it should be stored as an int32
-                  # value using the google.protobuf.Int32Value type.
-                "a_key": "", # Properties of the object. Contains field @type with type URL.
-              },
-            },
-          ],
-        },
-      ],
+      "syntax": "A String", # The source syntax.
     },
   ],
   "types": [ # A list of all proto message types included in this API service.
@@ -1516,12 +1740,12 @@
         "provided": [ # A list of full type names of provided contexts.
           "A String",
         ],
-        "requested": [ # A list of full type names of requested contexts.
-          "A String",
-        ],
         "selector": "A String", # Selects the methods to which this rule applies.
             #
             # Refer to selector for syntax details.
+        "requested": [ # A list of full type names of requested contexts.
+          "A String",
+        ],
       },
     ],
   },
@@ -1544,19 +1768,26 @@
         #       # allowed to proceed.
         #     - name: library-example.googleapis.com
         #       allow_cors: true
+      "target": "A String", # The specification of an Internet routable address of API frontend that will
+          # handle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary).
+          # It should be either a valid IPv4 address or a fully-qualified domain name.
+          # For example, "8.8.8.8" or "myservice.appspot.com".
+      "apis": [ # The list of APIs served by this endpoint.
+          #
+          # If no APIs are specified this translates to "all APIs" exported by the
+          # service, as defined in the top-level service configuration.
+        "A String",
+      ],
       "allowCors": True or False, # Allowing
           # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
           # cross-domain traffic, would allow the backends served from this endpoint to
           # receive and respond to HTTP OPTIONS requests. The response will be used by
           # the browser to determine whether the subsequent cross-origin request is
           # allowed to proceed.
-      "apis": [ # The list of APIs served by this endpoint.
-        "A String",
-      ],
+      "name": "A String", # The canonical name of this endpoint.
       "features": [ # The list of features enabled on this endpoint.
         "A String",
       ],
-      "name": "A String", # The canonical name of this endpoint.
       "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases,
           # please specify multiple google.api.Endpoint for each of the intented
           # alias.
@@ -1745,6 +1976,9 @@
         },
       ],
     },
+    "id": "A String", # A unique ID for a specific instance of this message, typically assigned
+        # by the client for tracking purpose. If empty, the server may choose to
+        # generate one instead.
     "backend": { # `Backend` defines the backend configuration for a service. # API backend configuration.
       "rules": [ # A list of API backend rules that apply to individual API methods.
           #
@@ -1753,6 +1987,8 @@
           "selector": "A String", # Selects the methods to which this rule applies.
               #
               # Refer to selector for syntax details.
+          "minDeadline": 3.14, # Minimum deadline in seconds needed for this method. Calls having deadline
+              # value lower than this will be rejected.
           "deadline": 3.14, # The number of seconds to wait for a response from a request.  The
               # default depends on the deployment context.
           "address": "A String", # The address of the API backend.
@@ -1826,9 +2062,6 @@
       ],
     },
     "title": "A String", # The product title associated with this service.
-    "id": "A String", # A unique ID for a specific instance of this message, typically assigned
-        # by the client for tracking purpose. If empty, the server may choose to
-        # generate one instead.
     "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration.
         #
         # Example for an API targeted for external use:
@@ -1881,13 +2114,6 @@
                 #      canonical_scopes: https://www.googleapis.com/auth/calendar,
                 #                        https://www.googleapis.com/auth/calendar.read
           },
-          "allowWithoutCredential": True or False, # Whether to allow requests without a credential. The credential can be
-              # an OAuth token, Google cookies (first-party auth) or EndUserCreds.
-              #
-              # For requests without credentials, if the service control environment is
-              # specified, each incoming request **must** be associated with a service
-              # consumer. This can be done by passing an API key that belongs to a consumer
-              # project.
           "requirements": [ # Requirements for additional authentication providers.
             { # User-defined authentication requirements, including support for
                 # [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
@@ -1914,6 +2140,18 @@
                   #                bookstore_web.apps.googleusercontent.com
             },
           ],
+          "allowWithoutCredential": True or False, # Whether to allow requests without a credential. The credential can be
+              # an OAuth token, Google cookies (first-party auth) or EndUserCreds.
+              #
+              # For requests without credentials, if the service control environment is
+              # specified, each incoming request **must** be associated with a service
+              # consumer. This can be done by passing an API key that belongs to a consumer
+              # project.
+          "customAuth": { # Configuration for a custom authentication provider. # Configuration for custom authentication.
+            "provider": "A String", # A configuration string containing connection information for the
+                # authentication provider, typically formatted as a SmartService string
+                # (go/smartservice).
+          },
           "selector": "A String", # Selects the methods to which this rule applies.
               #
               # Refer to selector for syntax details.
@@ -1986,11 +2224,11 @@
             #       rules:
             #       - selector: "google.example.library.v1.LibraryService.CreateBook"
             #         allow_unregistered_calls: true
+          "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
           "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
               # methods in all APIs.
               #
               # Refer to selector for syntax details.
-          "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
         },
       ],
       "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
@@ -2073,6 +2311,11 @@
             # parameters. Assume the following definition of the request message:
             #
             #
+            #     service Messaging {
+            #       rpc GetMessage(GetMessageRequest) returns (Message) {
+            #         option (google.api.http).get = "/v1/messages/{message_id}";
+            #       }
+            #     }
             #     message GetMessageRequest {
             #       message SubMessage {
             #         string subfield = 1;
@@ -2231,31 +2474,50 @@
               # body. NOTE: the referred field must not be a repeated field and must be
               # present at the top-level of request message type.
           "get": "A String", # Used for listing and getting information about resources.
-          "mediaDownload": { # Use this only for Scotty Requests. Do not use this for media support using # Use this only for Scotty Requests. Do not use this for bytestream methods.
-              # For media support, add instead [][google.bytestream.RestByteStream] as an
-              # API to your configuration.
-              # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
-              # your configuration for Bytestream methods.
-            "enabled": True or False, # Whether download is enabled.
-            "downloadService": "A String", # DO NOT USE THIS FIELD UNTIL THIS WARNING IS REMOVED.
-                #
-                # Specify name of the download service if one is used for download.
-          },
+          "restCollection": "A String", # Optional. The REST collection name is by default derived from the URL
+              # pattern. If specified, this field overrides the default collection name.
+              # Example:
+              #
+              #     rpc AddressesAggregatedList(AddressesAggregatedListRequest)
+              #         returns (AddressesAggregatedListResponse) {
+              #       option (google.api.http) = {
+              #         get: "/v1/projects/{project_id}/aggregated/addresses"
+              #         rest_collection: "projects.addresses"
+              #       };
+              #     }
+              #
+              # This method has the automatically derived collection name
+              # "projects.aggregated". Because, semantically, this rpc is actually an
+              # operation on the "projects.addresses" collection, the `rest_collection`
+              # field is configured to override the derived collection name.
           "additionalBindings": [ # Additional HTTP bindings for the selector. Nested bindings must
               # not contain an `additional_bindings` field themselves (that is,
               # the nesting may only be one level deep).
             # Object with schema name: HttpRule
           ],
-          "mediaUpload": { # Use this only for Scotty Requests. Do not use this for media support using # Use this only for Scotty Requests. Do not use this for media support using
+          "mediaUpload": { # Defines the Media configuration for a service in case of an upload. # Use this only for Scotty Requests. Do not use this for media support using
               # Bytestream, add instead
               # [][google.bytestream.RestByteStream] as an API to your
               # configuration for Bytestream methods.
+              # Use this only for Scotty Requests. Do not use this for media support using
               # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
               # your configuration for Bytestream methods.
+            "progressNotification": True or False, # Whether to receive a notification for progress changes of media upload.
+            "startNotification": True or False, # Whether to receive a notification on the start of media upload.
+            "mimeTypes": [ # An array of mimetype patterns. Esf will only accept uploads that match one
+                # of the given patterns.
+              "A String",
+            ],
+            "completeNotification": True or False, # A boolean that determines whether a notification for the completion of an
+                # upload should be sent to the backend. These notifications will not be seen
+                # by the client and will not consume quota.
             "enabled": True or False, # Whether upload is enabled.
-            "uploadService": "A String", # DO NOT USE THIS FIELD UNTIL THIS WARNING IS REMOVED.
+            "uploadService": "A String", # DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.
                 #
                 # Specify name of the upload service if one is used for upload.
+            "maxSize": "A String", # Optional maximum acceptable size for an upload.
+                # The size is specified in bytes.
+            "dropzone": "A String", # Name of the Scotty dropzone to use for the current API.
           },
           "selector": "A String", # Selects methods to which this rule applies.
               #
@@ -2265,6 +2527,39 @@
               # not set, the response message will be used as HTTP body of response.
               # NOTE: the referred field must be not a repeated field and must be present
               # at the top-level of response message type.
+          "restMethodName": "A String", # Optional. The rest method name is by default derived from the URL
+              # pattern. If specified, this field overrides the default method name.
+              # Example:
+              #
+              #     rpc CreateResource(CreateResourceRequest)
+              #         returns (CreateResourceResponse) {
+              #       option (google.api.http) = {
+              #         post: "/v1/resources",
+              #         body: "resource",
+              #         rest_method_name: "insert"
+              #       };
+              #     }
+              #
+              # This method has the automatically derived rest method name "create", but
+              #  for backwards compatability with apiary, it is specified as insert.
+          "mediaDownload": { # Defines the Media configuration for a service in case of a download. # Use this only for Scotty Requests. Do not use this for bytestream methods.
+              # For media support, add instead [][google.bytestream.RestByteStream] as an
+              # API to your configuration.
+              # Use this only for Scotty Requests. Do not use this for media support using
+              # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
+              # your configuration for Bytestream methods.
+            "useDirectDownload": True or False, # A boolean that determines if direct download from ESF should be used for
+                # download of this media.
+            "enabled": True or False, # Whether download is enabled.
+            "completeNotification": True or False, # A boolean that determines whether a notification for the completion of a
+                # download should be sent to the backend.
+            "maxDirectDownloadSize": "A String", # Optional maximum acceptable size for direct download.
+                # The size is specified in bytes.
+            "dropzone": "A String", # Name of the Scotty dropzone to use for the current API.
+            "downloadService": "A String", # DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.
+                #
+                # Specify name of the download service if one is used for download.
+          },
           "put": "A String", # Used for updating a resource.
           "patch": "A String", # Used for updating a resource.
           "post": "A String", # Used for creating a resource.
@@ -2275,6 +2570,12 @@
           "delete": "A String", # Used for deleting a resource.
         },
       ],
+      "fullyDecodeReservedExpansion": True or False, # When set to true, URL path parmeters will be fully URI-decoded except in
+          # cases of single segment matches in reserved expansion, where "%2F" will be
+          # left encoded.
+          #
+          # The default behavior is to not decode RFC 6570 reserved characters in multi
+          # segment matches.
     },
     "apis": [ # A list of API interfaces exported by this service. Only the `name` field
         # of the google.protobuf.Api needs to be provided by the configuration
@@ -2282,31 +2583,8 @@
         # normalization process. It is an error to specify an API interface here
         # which cannot be resolved against the associated IDL files.
       { # Api is a light-weight descriptor for a protocol buffer service.
-        "methods": [ # The methods of this api, in unspecified order.
-          { # Method represents a method of an api.
-            "name": "A String", # The simple name of this method.
-            "requestStreaming": True or False, # If true, the request is streamed.
-            "responseTypeUrl": "A String", # The URL of the output message type.
-            "requestTypeUrl": "A String", # A URL of the input message type.
-            "responseStreaming": True or False, # If true, the response is streamed.
-            "syntax": "A String", # The source syntax of this method.
-            "options": [ # Any metadata attached to the method.
-              { # A protocol buffer option, which can be attached to a message, field,
-                  # enumeration, etc.
-                "name": "A String", # The option's name. For protobuf built-in options (options defined in
-                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
-                    # For custom options, it should be the fully-qualified name. For example,
-                    # `"google.api.http"`.
-                "value": { # The option's value packed in an Any message. If the value is a primitive,
-                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
-                    # should be used. If the value is an enum, it should be stored as an int32
-                    # value using the google.protobuf.Int32Value type.
-                  "a_key": "", # Properties of the object. Contains field @type with type URL.
-                },
-              },
-            ],
-          },
-        ],
+        "name": "A String", # The fully qualified name of this api, including package name
+            # followed by the api's simple name.
         "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this
             # message.
             # protobuf element, like the file in which it is defined.
@@ -2432,8 +2710,31 @@
             },
           },
         ],
-        "name": "A String", # The fully qualified name of this api, including package name
-            # followed by the api's simple name.
+        "methods": [ # The methods of this api, in unspecified order.
+          { # Method represents a method of an api.
+            "name": "A String", # The simple name of this method.
+            "requestStreaming": True or False, # If true, the request is streamed.
+            "responseTypeUrl": "A String", # The URL of the output message type.
+            "requestTypeUrl": "A String", # A URL of the input message type.
+            "responseStreaming": True or False, # If true, the response is streamed.
+            "syntax": "A String", # The source syntax of this method.
+            "options": [ # Any metadata attached to the method.
+              { # A protocol buffer option, which can be attached to a message, field,
+                  # enumeration, etc.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
+                  "a_key": "", # Properties of the object. Contains field @type with type URL.
+                },
+              },
+            ],
+          },
+        ],
       },
     ],
     "customError": { # Customize service error responses.  For example, list any service # Custom error configuration.
@@ -2461,6 +2762,160 @@
         "A String",
       ],
     },
+    "quota": { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration.
+        # usage.
+        #
+        # The quota configuration works this way:
+        # - The service configuration defines a set of metrics.
+        # - For API calls, the quota.metric_rules maps methods to metrics with
+        #   corresponding costs.
+        # - The quota.limits defines limits on the metrics, which will be used for
+        #   quota checks at runtime.
+        #
+        # An example quota configuration in yaml format:
+        #
+        #    quota:
+        #
+        #      - name: apiWriteQpsPerProject
+        #        metric: library.googleapis.com/write_calls
+        #        unit: "1/min/{project}"  # rate limit for consumer projects
+        #        values:
+        #          STANDARD: 10000
+        #
+        #
+        #      # The metric rules bind all methods to the read_calls metric,
+        #      # except for the UpdateBook and DeleteBook methods. These two methods
+        #      # are mapped to the write_calls metric, with the UpdateBook method
+        #      # consuming at twice rate as the DeleteBook method.
+        #      metric_rules:
+        #      - selector: "*"
+        #        metric_costs:
+        #          library.googleapis.com/read_calls: 1
+        #      - selector: google.example.library.v1.LibraryService.UpdateBook
+        #        metric_costs:
+        #          library.googleapis.com/write_calls: 2
+        #      - selector: google.example.library.v1.LibraryService.DeleteBook
+        #        metric_costs:
+        #          library.googleapis.com/write_calls: 1
+        #
+        #  Corresponding Metric definition:
+        #
+        #      metrics:
+        #      - name: library.googleapis.com/read_calls
+        #        display_name: Read requests
+        #        metric_kind: DELTA
+        #        value_type: INT64
+        #
+        #      - name: library.googleapis.com/write_calls
+        #        display_name: Write requests
+        #        metric_kind: DELTA
+        #        value_type: INT64
+      "metricRules": [ # List of `MetricRule` definitions, each one mapping a selected method to one
+          # or more metrics.
+        { # Bind API methods to metrics. Binding a method to a metric causes that
+            # metric's configured quota behaviors to apply to the method call.
+          "metricCosts": { # Metrics to update when the selected methods are called, and the associated
+              # cost applied to each metric.
+              #
+              # The key of the map is the metric name, and the values are the amount
+              # increased for the metric against which the quota limits are defined.
+              # The value must not be negative.
+            "a_key": "A String",
+          },
+          "selector": "A String", # Selects the methods to which this rule applies.
+              #
+              # Refer to selector for syntax details.
+        },
+      ],
+      "limits": [ # List of `QuotaLimit` definitions for the service.
+        { # `QuotaLimit` defines a specific limit that applies over a specified duration
+            # for a limit type. There can be at most one limit for a duration and limit
+            # type combination defined within a `QuotaGroup`.
+          "displayName": "A String", # User-visible display name for this limit.
+              # Optional. If not set, the UI will provide a default display name based on
+              # the quota configuration. This field can be used to override the default
+              # display name generated from the configuration.
+          "description": "A String", # Optional. User-visible, extended description for this quota limit.
+              # Should be used only when more context is needed to understand this limit
+              # than provided by the limit's display name (see: `display_name`).
+          "defaultLimit": "A String", # Default number of tokens that can be consumed during the specified
+              # duration. This is the number of tokens assigned when a client
+              # application developer activates the service for his/her project.
+              #
+              # Specifying a value of 0 will block all requests. This can be used if you
+              # are provisioning quota to selected consumers and blocking others.
+              # Similarly, a value of -1 will indicate an unlimited quota. No other
+              # negative values are allowed.
+              #
+              # Used by group-based quotas only.
+          "metric": "A String", # The name of the metric this quota limit applies to. The quota limits with
+              # the same metric will be checked together during runtime. The metric must be
+              # defined within the service config.
+              #
+              # Used by metric-based quotas only.
+          "values": { # Tiered limit values, currently only STANDARD is supported.
+            "a_key": "A String",
+          },
+          "maxLimit": "A String", # Maximum number of tokens that can be consumed during the specified
+              # duration. Client application developers can override the default limit up
+              # to this maximum. If specified, this value cannot be set to a value less
+              # than the default limit. If not specified, it is set to the default limit.
+              #
+              # To allow clients to apply overrides with no upper bound, set this to -1,
+              # indicating unlimited maximum quota.
+              #
+              # Used by group-based quotas only.
+          "duration": "A String", # Duration of this limit in textual notation. Example: "100s", "24h", "1d".
+              # For duration longer than a day, only multiple of days is supported. We
+              # support only "100s" and "1d" for now. Additional support will be added in
+              # the future. "0" indicates indefinite duration.
+              #
+              # Used by group-based quotas only.
+          "freeTier": "A String", # Free tier value displayed in the Developers Console for this limit.
+              # The free tier is the number of tokens that will be subtracted from the
+              # billed amount when billing is enabled.
+              # This field can only be set on a limit with duration "1d", in a billable
+              # group; it is invalid on any other limit. If this field is not set, it
+              # defaults to 0, indicating that there is no free tier for this service.
+              #
+              # Used by group-based quotas only.
+          "unit": "A String", # Specify the unit of the quota limit. It uses the same syntax as
+              # Metric.unit. The supported unit kinds are determined by the quota
+              # backend system.
+              #
+              # The [Google Service Control](https://cloud.google.com/service-control)
+              # supports the following unit components:
+              # * One of the time intevals:
+              #   * "/min"  for quota every minute.
+              #   * "/d"  for quota every 24 hours, starting 00:00 US Pacific Time.
+              #   * Otherwise the quota won't be reset by time, such as storage limit.
+              # * One and only one of the granted containers:
+              #   * "/{project}" quota for a project
+              #
+              # Here are some examples:
+              # * "1/min/{project}" for quota per minute per project.
+              #
+              # Note: the order of unit components is insignificant.
+              # The "1" at the beginning is required to follow the metric unit syntax.
+              #
+              # Used by metric-based quotas only.
+          "name": "A String", # Name of the quota limit. The name is used to refer to the limit when
+              # overriding the default limit on per-consumer basis.
+              #
+              # For metric-based quota limits, the name must be provided, and it must be
+              # unique within the service. The name can only include alphanumeric
+              # characters as well as '-'.
+              #
+              # The maximum length of the limit name is 64 characters.
+              #
+              # The name of a limit is used as a unique identifier for this limit.
+              # Therefore, once a limit has been put into use, its name should be
+              # immutable. You can use the display_name field to provide a user-friendly
+              # name for the limit. The display name can be evolved over time without
+              # affecting the identity of the limit.
+        },
+      ],
+    },
     "visibility": { # `Visibility` defines restrictions for the visibility of service # API visibility configuration.
         # elements.  Restrictions are specified using visibility labels
         # (e.g., TRUSTED_TESTER) that are elsewhere linked to users and projects.
@@ -2621,12 +3076,32 @@
         #     enums:
         #     - name: google.someapi.v1.SomeEnum
       { # Enum type definition.
-        "syntax": "A String", # The source syntax.
         "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
             # protobuf element, like the file in which it is defined.
           "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
               # protobuf element.  For example: `"google/protobuf/source_context.proto"`.
         },
+        "enumvalue": [ # Enum value definitions.
+          { # Enum value definition.
+            "options": [ # Protocol buffer options.
+              { # A protocol buffer option, which can be attached to a message, field,
+                  # enumeration, etc.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
+                  "a_key": "", # Properties of the object. Contains field @type with type URL.
+                },
+              },
+            ],
+            "name": "A String", # Enum value name.
+            "number": 42, # Enum value number.
+          },
+        ],
         "options": [ # Protocol buffer options.
           { # A protocol buffer option, which can be attached to a message, field,
               # enumeration, etc.
@@ -2643,27 +3118,7 @@
           },
         ],
         "name": "A String", # Enum type name.
-        "enumvalue": [ # Enum value definitions.
-          { # Enum value definition.
-            "number": 42, # Enum value number.
-            "name": "A String", # Enum value name.
-            "options": [ # Protocol buffer options.
-              { # A protocol buffer option, which can be attached to a message, field,
-                  # enumeration, etc.
-                "name": "A String", # The option's name. For protobuf built-in options (options defined in
-                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
-                    # For custom options, it should be the fully-qualified name. For example,
-                    # `"google.api.http"`.
-                "value": { # The option's value packed in an Any message. If the value is a primitive,
-                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
-                    # should be used. If the value is an enum, it should be stored as an int32
-                    # value using the google.protobuf.Int32Value type.
-                  "a_key": "", # Properties of the object. Contains field @type with type URL.
-                },
-              },
-            ],
-          },
-        ],
+        "syntax": "A String", # The source syntax.
       },
     ],
     "types": [ # A list of all proto message types included in this API service.
@@ -3005,12 +3460,12 @@
           "provided": [ # A list of full type names of provided contexts.
             "A String",
           ],
-          "requested": [ # A list of full type names of requested contexts.
-            "A String",
-          ],
           "selector": "A String", # Selects the methods to which this rule applies.
               #
               # Refer to selector for syntax details.
+          "requested": [ # A list of full type names of requested contexts.
+            "A String",
+          ],
         },
       ],
     },
@@ -3033,19 +3488,26 @@
           #       # allowed to proceed.
           #     - name: library-example.googleapis.com
           #       allow_cors: true
+        "target": "A String", # The specification of an Internet routable address of API frontend that will
+            # handle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary).
+            # It should be either a valid IPv4 address or a fully-qualified domain name.
+            # For example, "8.8.8.8" or "myservice.appspot.com".
+        "apis": [ # The list of APIs served by this endpoint.
+            #
+            # If no APIs are specified this translates to "all APIs" exported by the
+            # service, as defined in the top-level service configuration.
+          "A String",
+        ],
         "allowCors": True or False, # Allowing
             # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
             # cross-domain traffic, would allow the backends served from this endpoint to
             # receive and respond to HTTP OPTIONS requests. The response will be used by
             # the browser to determine whether the subsequent cross-origin request is
             # allowed to proceed.
-        "apis": [ # The list of APIs served by this endpoint.
-          "A String",
-        ],
+        "name": "A String", # The canonical name of this endpoint.
         "features": [ # The list of features enabled on this endpoint.
           "A String",
         ],
-        "name": "A String", # The canonical name of this endpoint.
         "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases,
             # please specify multiple google.api.Endpoint for each of the intented
             # alias.
@@ -3245,6 +3707,9 @@
         },
       ],
     },
+    "id": "A String", # A unique ID for a specific instance of this message, typically assigned
+        # by the client for tracking purpose. If empty, the server may choose to
+        # generate one instead.
     "backend": { # `Backend` defines the backend configuration for a service. # API backend configuration.
       "rules": [ # A list of API backend rules that apply to individual API methods.
           #
@@ -3253,6 +3718,8 @@
           "selector": "A String", # Selects the methods to which this rule applies.
               #
               # Refer to selector for syntax details.
+          "minDeadline": 3.14, # Minimum deadline in seconds needed for this method. Calls having deadline
+              # value lower than this will be rejected.
           "deadline": 3.14, # The number of seconds to wait for a response from a request.  The
               # default depends on the deployment context.
           "address": "A String", # The address of the API backend.
@@ -3326,9 +3793,6 @@
       ],
     },
     "title": "A String", # The product title associated with this service.
-    "id": "A String", # A unique ID for a specific instance of this message, typically assigned
-        # by the client for tracking purpose. If empty, the server may choose to
-        # generate one instead.
     "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration.
         #
         # Example for an API targeted for external use:
@@ -3381,13 +3845,6 @@
                 #      canonical_scopes: https://www.googleapis.com/auth/calendar,
                 #                        https://www.googleapis.com/auth/calendar.read
           },
-          "allowWithoutCredential": True or False, # Whether to allow requests without a credential. The credential can be
-              # an OAuth token, Google cookies (first-party auth) or EndUserCreds.
-              #
-              # For requests without credentials, if the service control environment is
-              # specified, each incoming request **must** be associated with a service
-              # consumer. This can be done by passing an API key that belongs to a consumer
-              # project.
           "requirements": [ # Requirements for additional authentication providers.
             { # User-defined authentication requirements, including support for
                 # [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
@@ -3414,6 +3871,18 @@
                   #                bookstore_web.apps.googleusercontent.com
             },
           ],
+          "allowWithoutCredential": True or False, # Whether to allow requests without a credential. The credential can be
+              # an OAuth token, Google cookies (first-party auth) or EndUserCreds.
+              #
+              # For requests without credentials, if the service control environment is
+              # specified, each incoming request **must** be associated with a service
+              # consumer. This can be done by passing an API key that belongs to a consumer
+              # project.
+          "customAuth": { # Configuration for a custom authentication provider. # Configuration for custom authentication.
+            "provider": "A String", # A configuration string containing connection information for the
+                # authentication provider, typically formatted as a SmartService string
+                # (go/smartservice).
+          },
           "selector": "A String", # Selects the methods to which this rule applies.
               #
               # Refer to selector for syntax details.
@@ -3486,11 +3955,11 @@
             #       rules:
             #       - selector: "google.example.library.v1.LibraryService.CreateBook"
             #         allow_unregistered_calls: true
+          "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
           "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
               # methods in all APIs.
               #
               # Refer to selector for syntax details.
-          "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
         },
       ],
       "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
@@ -3573,6 +4042,11 @@
             # parameters. Assume the following definition of the request message:
             #
             #
+            #     service Messaging {
+            #       rpc GetMessage(GetMessageRequest) returns (Message) {
+            #         option (google.api.http).get = "/v1/messages/{message_id}";
+            #       }
+            #     }
             #     message GetMessageRequest {
             #       message SubMessage {
             #         string subfield = 1;
@@ -3731,31 +4205,50 @@
               # body. NOTE: the referred field must not be a repeated field and must be
               # present at the top-level of request message type.
           "get": "A String", # Used for listing and getting information about resources.
-          "mediaDownload": { # Use this only for Scotty Requests. Do not use this for media support using # Use this only for Scotty Requests. Do not use this for bytestream methods.
-              # For media support, add instead [][google.bytestream.RestByteStream] as an
-              # API to your configuration.
-              # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
-              # your configuration for Bytestream methods.
-            "enabled": True or False, # Whether download is enabled.
-            "downloadService": "A String", # DO NOT USE THIS FIELD UNTIL THIS WARNING IS REMOVED.
-                #
-                # Specify name of the download service if one is used for download.
-          },
+          "restCollection": "A String", # Optional. The REST collection name is by default derived from the URL
+              # pattern. If specified, this field overrides the default collection name.
+              # Example:
+              #
+              #     rpc AddressesAggregatedList(AddressesAggregatedListRequest)
+              #         returns (AddressesAggregatedListResponse) {
+              #       option (google.api.http) = {
+              #         get: "/v1/projects/{project_id}/aggregated/addresses"
+              #         rest_collection: "projects.addresses"
+              #       };
+              #     }
+              #
+              # This method has the automatically derived collection name
+              # "projects.aggregated". Because, semantically, this rpc is actually an
+              # operation on the "projects.addresses" collection, the `rest_collection`
+              # field is configured to override the derived collection name.
           "additionalBindings": [ # Additional HTTP bindings for the selector. Nested bindings must
               # not contain an `additional_bindings` field themselves (that is,
               # the nesting may only be one level deep).
             # Object with schema name: HttpRule
           ],
-          "mediaUpload": { # Use this only for Scotty Requests. Do not use this for media support using # Use this only for Scotty Requests. Do not use this for media support using
+          "mediaUpload": { # Defines the Media configuration for a service in case of an upload. # Use this only for Scotty Requests. Do not use this for media support using
               # Bytestream, add instead
               # [][google.bytestream.RestByteStream] as an API to your
               # configuration for Bytestream methods.
+              # Use this only for Scotty Requests. Do not use this for media support using
               # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
               # your configuration for Bytestream methods.
+            "progressNotification": True or False, # Whether to receive a notification for progress changes of media upload.
+            "startNotification": True or False, # Whether to receive a notification on the start of media upload.
+            "mimeTypes": [ # An array of mimetype patterns. Esf will only accept uploads that match one
+                # of the given patterns.
+              "A String",
+            ],
+            "completeNotification": True or False, # A boolean that determines whether a notification for the completion of an
+                # upload should be sent to the backend. These notifications will not be seen
+                # by the client and will not consume quota.
             "enabled": True or False, # Whether upload is enabled.
-            "uploadService": "A String", # DO NOT USE THIS FIELD UNTIL THIS WARNING IS REMOVED.
+            "uploadService": "A String", # DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.
                 #
                 # Specify name of the upload service if one is used for upload.
+            "maxSize": "A String", # Optional maximum acceptable size for an upload.
+                # The size is specified in bytes.
+            "dropzone": "A String", # Name of the Scotty dropzone to use for the current API.
           },
           "selector": "A String", # Selects methods to which this rule applies.
               #
@@ -3765,6 +4258,39 @@
               # not set, the response message will be used as HTTP body of response.
               # NOTE: the referred field must be not a repeated field and must be present
               # at the top-level of response message type.
+          "restMethodName": "A String", # Optional. The rest method name is by default derived from the URL
+              # pattern. If specified, this field overrides the default method name.
+              # Example:
+              #
+              #     rpc CreateResource(CreateResourceRequest)
+              #         returns (CreateResourceResponse) {
+              #       option (google.api.http) = {
+              #         post: "/v1/resources",
+              #         body: "resource",
+              #         rest_method_name: "insert"
+              #       };
+              #     }
+              #
+              # This method has the automatically derived rest method name "create", but
+              #  for backwards compatability with apiary, it is specified as insert.
+          "mediaDownload": { # Defines the Media configuration for a service in case of a download. # Use this only for Scotty Requests. Do not use this for bytestream methods.
+              # For media support, add instead [][google.bytestream.RestByteStream] as an
+              # API to your configuration.
+              # Use this only for Scotty Requests. Do not use this for media support using
+              # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
+              # your configuration for Bytestream methods.
+            "useDirectDownload": True or False, # A boolean that determines if direct download from ESF should be used for
+                # download of this media.
+            "enabled": True or False, # Whether download is enabled.
+            "completeNotification": True or False, # A boolean that determines whether a notification for the completion of a
+                # download should be sent to the backend.
+            "maxDirectDownloadSize": "A String", # Optional maximum acceptable size for direct download.
+                # The size is specified in bytes.
+            "dropzone": "A String", # Name of the Scotty dropzone to use for the current API.
+            "downloadService": "A String", # DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.
+                #
+                # Specify name of the download service if one is used for download.
+          },
           "put": "A String", # Used for updating a resource.
           "patch": "A String", # Used for updating a resource.
           "post": "A String", # Used for creating a resource.
@@ -3775,6 +4301,12 @@
           "delete": "A String", # Used for deleting a resource.
         },
       ],
+      "fullyDecodeReservedExpansion": True or False, # When set to true, URL path parmeters will be fully URI-decoded except in
+          # cases of single segment matches in reserved expansion, where "%2F" will be
+          # left encoded.
+          #
+          # The default behavior is to not decode RFC 6570 reserved characters in multi
+          # segment matches.
     },
     "apis": [ # A list of API interfaces exported by this service. Only the `name` field
         # of the google.protobuf.Api needs to be provided by the configuration
@@ -3782,31 +4314,8 @@
         # normalization process. It is an error to specify an API interface here
         # which cannot be resolved against the associated IDL files.
       { # Api is a light-weight descriptor for a protocol buffer service.
-        "methods": [ # The methods of this api, in unspecified order.
-          { # Method represents a method of an api.
-            "name": "A String", # The simple name of this method.
-            "requestStreaming": True or False, # If true, the request is streamed.
-            "responseTypeUrl": "A String", # The URL of the output message type.
-            "requestTypeUrl": "A String", # A URL of the input message type.
-            "responseStreaming": True or False, # If true, the response is streamed.
-            "syntax": "A String", # The source syntax of this method.
-            "options": [ # Any metadata attached to the method.
-              { # A protocol buffer option, which can be attached to a message, field,
-                  # enumeration, etc.
-                "name": "A String", # The option's name. For protobuf built-in options (options defined in
-                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
-                    # For custom options, it should be the fully-qualified name. For example,
-                    # `"google.api.http"`.
-                "value": { # The option's value packed in an Any message. If the value is a primitive,
-                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
-                    # should be used. If the value is an enum, it should be stored as an int32
-                    # value using the google.protobuf.Int32Value type.
-                  "a_key": "", # Properties of the object. Contains field @type with type URL.
-                },
-              },
-            ],
-          },
-        ],
+        "name": "A String", # The fully qualified name of this api, including package name
+            # followed by the api's simple name.
         "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this
             # message.
             # protobuf element, like the file in which it is defined.
@@ -3932,8 +4441,31 @@
             },
           },
         ],
-        "name": "A String", # The fully qualified name of this api, including package name
-            # followed by the api's simple name.
+        "methods": [ # The methods of this api, in unspecified order.
+          { # Method represents a method of an api.
+            "name": "A String", # The simple name of this method.
+            "requestStreaming": True or False, # If true, the request is streamed.
+            "responseTypeUrl": "A String", # The URL of the output message type.
+            "requestTypeUrl": "A String", # A URL of the input message type.
+            "responseStreaming": True or False, # If true, the response is streamed.
+            "syntax": "A String", # The source syntax of this method.
+            "options": [ # Any metadata attached to the method.
+              { # A protocol buffer option, which can be attached to a message, field,
+                  # enumeration, etc.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
+                  "a_key": "", # Properties of the object. Contains field @type with type URL.
+                },
+              },
+            ],
+          },
+        ],
       },
     ],
     "customError": { # Customize service error responses.  For example, list any service # Custom error configuration.
@@ -3961,6 +4493,160 @@
         "A String",
       ],
     },
+    "quota": { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration.
+        # usage.
+        #
+        # The quota configuration works this way:
+        # - The service configuration defines a set of metrics.
+        # - For API calls, the quota.metric_rules maps methods to metrics with
+        #   corresponding costs.
+        # - The quota.limits defines limits on the metrics, which will be used for
+        #   quota checks at runtime.
+        #
+        # An example quota configuration in yaml format:
+        #
+        #    quota:
+        #
+        #      - name: apiWriteQpsPerProject
+        #        metric: library.googleapis.com/write_calls
+        #        unit: "1/min/{project}"  # rate limit for consumer projects
+        #        values:
+        #          STANDARD: 10000
+        #
+        #
+        #      # The metric rules bind all methods to the read_calls metric,
+        #      # except for the UpdateBook and DeleteBook methods. These two methods
+        #      # are mapped to the write_calls metric, with the UpdateBook method
+        #      # consuming at twice rate as the DeleteBook method.
+        #      metric_rules:
+        #      - selector: "*"
+        #        metric_costs:
+        #          library.googleapis.com/read_calls: 1
+        #      - selector: google.example.library.v1.LibraryService.UpdateBook
+        #        metric_costs:
+        #          library.googleapis.com/write_calls: 2
+        #      - selector: google.example.library.v1.LibraryService.DeleteBook
+        #        metric_costs:
+        #          library.googleapis.com/write_calls: 1
+        #
+        #  Corresponding Metric definition:
+        #
+        #      metrics:
+        #      - name: library.googleapis.com/read_calls
+        #        display_name: Read requests
+        #        metric_kind: DELTA
+        #        value_type: INT64
+        #
+        #      - name: library.googleapis.com/write_calls
+        #        display_name: Write requests
+        #        metric_kind: DELTA
+        #        value_type: INT64
+      "metricRules": [ # List of `MetricRule` definitions, each one mapping a selected method to one
+          # or more metrics.
+        { # Bind API methods to metrics. Binding a method to a metric causes that
+            # metric's configured quota behaviors to apply to the method call.
+          "metricCosts": { # Metrics to update when the selected methods are called, and the associated
+              # cost applied to each metric.
+              #
+              # The key of the map is the metric name, and the values are the amount
+              # increased for the metric against which the quota limits are defined.
+              # The value must not be negative.
+            "a_key": "A String",
+          },
+          "selector": "A String", # Selects the methods to which this rule applies.
+              #
+              # Refer to selector for syntax details.
+        },
+      ],
+      "limits": [ # List of `QuotaLimit` definitions for the service.
+        { # `QuotaLimit` defines a specific limit that applies over a specified duration
+            # for a limit type. There can be at most one limit for a duration and limit
+            # type combination defined within a `QuotaGroup`.
+          "displayName": "A String", # User-visible display name for this limit.
+              # Optional. If not set, the UI will provide a default display name based on
+              # the quota configuration. This field can be used to override the default
+              # display name generated from the configuration.
+          "description": "A String", # Optional. User-visible, extended description for this quota limit.
+              # Should be used only when more context is needed to understand this limit
+              # than provided by the limit's display name (see: `display_name`).
+          "defaultLimit": "A String", # Default number of tokens that can be consumed during the specified
+              # duration. This is the number of tokens assigned when a client
+              # application developer activates the service for his/her project.
+              #
+              # Specifying a value of 0 will block all requests. This can be used if you
+              # are provisioning quota to selected consumers and blocking others.
+              # Similarly, a value of -1 will indicate an unlimited quota. No other
+              # negative values are allowed.
+              #
+              # Used by group-based quotas only.
+          "metric": "A String", # The name of the metric this quota limit applies to. The quota limits with
+              # the same metric will be checked together during runtime. The metric must be
+              # defined within the service config.
+              #
+              # Used by metric-based quotas only.
+          "values": { # Tiered limit values, currently only STANDARD is supported.
+            "a_key": "A String",
+          },
+          "maxLimit": "A String", # Maximum number of tokens that can be consumed during the specified
+              # duration. Client application developers can override the default limit up
+              # to this maximum. If specified, this value cannot be set to a value less
+              # than the default limit. If not specified, it is set to the default limit.
+              #
+              # To allow clients to apply overrides with no upper bound, set this to -1,
+              # indicating unlimited maximum quota.
+              #
+              # Used by group-based quotas only.
+          "duration": "A String", # Duration of this limit in textual notation. Example: "100s", "24h", "1d".
+              # For duration longer than a day, only multiple of days is supported. We
+              # support only "100s" and "1d" for now. Additional support will be added in
+              # the future. "0" indicates indefinite duration.
+              #
+              # Used by group-based quotas only.
+          "freeTier": "A String", # Free tier value displayed in the Developers Console for this limit.
+              # The free tier is the number of tokens that will be subtracted from the
+              # billed amount when billing is enabled.
+              # This field can only be set on a limit with duration "1d", in a billable
+              # group; it is invalid on any other limit. If this field is not set, it
+              # defaults to 0, indicating that there is no free tier for this service.
+              #
+              # Used by group-based quotas only.
+          "unit": "A String", # Specify the unit of the quota limit. It uses the same syntax as
+              # Metric.unit. The supported unit kinds are determined by the quota
+              # backend system.
+              #
+              # The [Google Service Control](https://cloud.google.com/service-control)
+              # supports the following unit components:
+              # * One of the time intevals:
+              #   * "/min"  for quota every minute.
+              #   * "/d"  for quota every 24 hours, starting 00:00 US Pacific Time.
+              #   * Otherwise the quota won't be reset by time, such as storage limit.
+              # * One and only one of the granted containers:
+              #   * "/{project}" quota for a project
+              #
+              # Here are some examples:
+              # * "1/min/{project}" for quota per minute per project.
+              #
+              # Note: the order of unit components is insignificant.
+              # The "1" at the beginning is required to follow the metric unit syntax.
+              #
+              # Used by metric-based quotas only.
+          "name": "A String", # Name of the quota limit. The name is used to refer to the limit when
+              # overriding the default limit on per-consumer basis.
+              #
+              # For metric-based quota limits, the name must be provided, and it must be
+              # unique within the service. The name can only include alphanumeric
+              # characters as well as '-'.
+              #
+              # The maximum length of the limit name is 64 characters.
+              #
+              # The name of a limit is used as a unique identifier for this limit.
+              # Therefore, once a limit has been put into use, its name should be
+              # immutable. You can use the display_name field to provide a user-friendly
+              # name for the limit. The display name can be evolved over time without
+              # affecting the identity of the limit.
+        },
+      ],
+    },
     "visibility": { # `Visibility` defines restrictions for the visibility of service # API visibility configuration.
         # elements.  Restrictions are specified using visibility labels
         # (e.g., TRUSTED_TESTER) that are elsewhere linked to users and projects.
@@ -4121,12 +4807,32 @@
         #     enums:
         #     - name: google.someapi.v1.SomeEnum
       { # Enum type definition.
-        "syntax": "A String", # The source syntax.
         "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
             # protobuf element, like the file in which it is defined.
           "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
               # protobuf element.  For example: `"google/protobuf/source_context.proto"`.
         },
+        "enumvalue": [ # Enum value definitions.
+          { # Enum value definition.
+            "options": [ # Protocol buffer options.
+              { # A protocol buffer option, which can be attached to a message, field,
+                  # enumeration, etc.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
+                  "a_key": "", # Properties of the object. Contains field @type with type URL.
+                },
+              },
+            ],
+            "name": "A String", # Enum value name.
+            "number": 42, # Enum value number.
+          },
+        ],
         "options": [ # Protocol buffer options.
           { # A protocol buffer option, which can be attached to a message, field,
               # enumeration, etc.
@@ -4143,27 +4849,7 @@
           },
         ],
         "name": "A String", # Enum type name.
-        "enumvalue": [ # Enum value definitions.
-          { # Enum value definition.
-            "number": 42, # Enum value number.
-            "name": "A String", # Enum value name.
-            "options": [ # Protocol buffer options.
-              { # A protocol buffer option, which can be attached to a message, field,
-                  # enumeration, etc.
-                "name": "A String", # The option's name. For protobuf built-in options (options defined in
-                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
-                    # For custom options, it should be the fully-qualified name. For example,
-                    # `"google.api.http"`.
-                "value": { # The option's value packed in an Any message. If the value is a primitive,
-                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
-                    # should be used. If the value is an enum, it should be stored as an int32
-                    # value using the google.protobuf.Int32Value type.
-                  "a_key": "", # Properties of the object. Contains field @type with type URL.
-                },
-              },
-            ],
-          },
-        ],
+        "syntax": "A String", # The source syntax.
       },
     ],
     "types": [ # A list of all proto message types included in this API service.
@@ -4505,12 +5191,12 @@
           "provided": [ # A list of full type names of provided contexts.
             "A String",
           ],
-          "requested": [ # A list of full type names of requested contexts.
-            "A String",
-          ],
           "selector": "A String", # Selects the methods to which this rule applies.
               #
               # Refer to selector for syntax details.
+          "requested": [ # A list of full type names of requested contexts.
+            "A String",
+          ],
         },
       ],
     },
@@ -4533,19 +5219,26 @@
           #       # allowed to proceed.
           #     - name: library-example.googleapis.com
           #       allow_cors: true
+        "target": "A String", # The specification of an Internet routable address of API frontend that will
+            # handle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary).
+            # It should be either a valid IPv4 address or a fully-qualified domain name.
+            # For example, "8.8.8.8" or "myservice.appspot.com".
+        "apis": [ # The list of APIs served by this endpoint.
+            #
+            # If no APIs are specified this translates to "all APIs" exported by the
+            # service, as defined in the top-level service configuration.
+          "A String",
+        ],
         "allowCors": True or False, # Allowing
             # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
             # cross-domain traffic, would allow the backends served from this endpoint to
             # receive and respond to HTTP OPTIONS requests. The response will be used by
             # the browser to determine whether the subsequent cross-origin request is
             # allowed to proceed.
-        "apis": [ # The list of APIs served by this endpoint.
-          "A String",
-        ],
+        "name": "A String", # The canonical name of this endpoint.
         "features": [ # The list of features enabled on this endpoint.
           "A String",
         ],
-        "name": "A String", # The canonical name of this endpoint.
         "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases,
             # please specify multiple google.api.Endpoint for each of the intented
             # alias.
@@ -4748,6 +5441,9 @@
             },
           ],
         },
+        "id": "A String", # A unique ID for a specific instance of this message, typically assigned
+            # by the client for tracking purpose. If empty, the server may choose to
+            # generate one instead.
         "backend": { # `Backend` defines the backend configuration for a service. # API backend configuration.
           "rules": [ # A list of API backend rules that apply to individual API methods.
               #
@@ -4756,6 +5452,8 @@
               "selector": "A String", # Selects the methods to which this rule applies.
                   #
                   # Refer to selector for syntax details.
+              "minDeadline": 3.14, # Minimum deadline in seconds needed for this method. Calls having deadline
+                  # value lower than this will be rejected.
               "deadline": 3.14, # The number of seconds to wait for a response from a request.  The
                   # default depends on the deployment context.
               "address": "A String", # The address of the API backend.
@@ -4829,9 +5527,6 @@
           ],
         },
         "title": "A String", # The product title associated with this service.
-        "id": "A String", # A unique ID for a specific instance of this message, typically assigned
-            # by the client for tracking purpose. If empty, the server may choose to
-            # generate one instead.
         "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration.
             #
             # Example for an API targeted for external use:
@@ -4884,13 +5579,6 @@
                     #      canonical_scopes: https://www.googleapis.com/auth/calendar,
                     #                        https://www.googleapis.com/auth/calendar.read
               },
-              "allowWithoutCredential": True or False, # Whether to allow requests without a credential. The credential can be
-                  # an OAuth token, Google cookies (first-party auth) or EndUserCreds.
-                  #
-                  # For requests without credentials, if the service control environment is
-                  # specified, each incoming request **must** be associated with a service
-                  # consumer. This can be done by passing an API key that belongs to a consumer
-                  # project.
               "requirements": [ # Requirements for additional authentication providers.
                 { # User-defined authentication requirements, including support for
                     # [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
@@ -4917,6 +5605,18 @@
                       #                bookstore_web.apps.googleusercontent.com
                 },
               ],
+              "allowWithoutCredential": True or False, # Whether to allow requests without a credential. The credential can be
+                  # an OAuth token, Google cookies (first-party auth) or EndUserCreds.
+                  #
+                  # For requests without credentials, if the service control environment is
+                  # specified, each incoming request **must** be associated with a service
+                  # consumer. This can be done by passing an API key that belongs to a consumer
+                  # project.
+              "customAuth": { # Configuration for a custom authentication provider. # Configuration for custom authentication.
+                "provider": "A String", # A configuration string containing connection information for the
+                    # authentication provider, typically formatted as a SmartService string
+                    # (go/smartservice).
+              },
               "selector": "A String", # Selects the methods to which this rule applies.
                   #
                   # Refer to selector for syntax details.
@@ -4989,11 +5689,11 @@
                 #       rules:
                 #       - selector: "google.example.library.v1.LibraryService.CreateBook"
                 #         allow_unregistered_calls: true
+              "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
               "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
                   # methods in all APIs.
                   #
                   # Refer to selector for syntax details.
-              "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
             },
           ],
           "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
@@ -5076,6 +5776,11 @@
                 # parameters. Assume the following definition of the request message:
                 #
                 #
+                #     service Messaging {
+                #       rpc GetMessage(GetMessageRequest) returns (Message) {
+                #         option (google.api.http).get = "/v1/messages/{message_id}";
+                #       }
+                #     }
                 #     message GetMessageRequest {
                 #       message SubMessage {
                 #         string subfield = 1;
@@ -5234,31 +5939,50 @@
                   # body. NOTE: the referred field must not be a repeated field and must be
                   # present at the top-level of request message type.
               "get": "A String", # Used for listing and getting information about resources.
-              "mediaDownload": { # Use this only for Scotty Requests. Do not use this for media support using # Use this only for Scotty Requests. Do not use this for bytestream methods.
-                  # For media support, add instead [][google.bytestream.RestByteStream] as an
-                  # API to your configuration.
-                  # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
-                  # your configuration for Bytestream methods.
-                "enabled": True or False, # Whether download is enabled.
-                "downloadService": "A String", # DO NOT USE THIS FIELD UNTIL THIS WARNING IS REMOVED.
-                    #
-                    # Specify name of the download service if one is used for download.
-              },
+              "restCollection": "A String", # Optional. The REST collection name is by default derived from the URL
+                  # pattern. If specified, this field overrides the default collection name.
+                  # Example:
+                  #
+                  #     rpc AddressesAggregatedList(AddressesAggregatedListRequest)
+                  #         returns (AddressesAggregatedListResponse) {
+                  #       option (google.api.http) = {
+                  #         get: "/v1/projects/{project_id}/aggregated/addresses"
+                  #         rest_collection: "projects.addresses"
+                  #       };
+                  #     }
+                  #
+                  # This method has the automatically derived collection name
+                  # "projects.aggregated". Because, semantically, this rpc is actually an
+                  # operation on the "projects.addresses" collection, the `rest_collection`
+                  # field is configured to override the derived collection name.
               "additionalBindings": [ # Additional HTTP bindings for the selector. Nested bindings must
                   # not contain an `additional_bindings` field themselves (that is,
                   # the nesting may only be one level deep).
                 # Object with schema name: HttpRule
               ],
-              "mediaUpload": { # Use this only for Scotty Requests. Do not use this for media support using # Use this only for Scotty Requests. Do not use this for media support using
+              "mediaUpload": { # Defines the Media configuration for a service in case of an upload. # Use this only for Scotty Requests. Do not use this for media support using
                   # Bytestream, add instead
                   # [][google.bytestream.RestByteStream] as an API to your
                   # configuration for Bytestream methods.
+                  # Use this only for Scotty Requests. Do not use this for media support using
                   # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
                   # your configuration for Bytestream methods.
+                "progressNotification": True or False, # Whether to receive a notification for progress changes of media upload.
+                "startNotification": True or False, # Whether to receive a notification on the start of media upload.
+                "mimeTypes": [ # An array of mimetype patterns. Esf will only accept uploads that match one
+                    # of the given patterns.
+                  "A String",
+                ],
+                "completeNotification": True or False, # A boolean that determines whether a notification for the completion of an
+                    # upload should be sent to the backend. These notifications will not be seen
+                    # by the client and will not consume quota.
                 "enabled": True or False, # Whether upload is enabled.
-                "uploadService": "A String", # DO NOT USE THIS FIELD UNTIL THIS WARNING IS REMOVED.
+                "uploadService": "A String", # DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.
                     #
                     # Specify name of the upload service if one is used for upload.
+                "maxSize": "A String", # Optional maximum acceptable size for an upload.
+                    # The size is specified in bytes.
+                "dropzone": "A String", # Name of the Scotty dropzone to use for the current API.
               },
               "selector": "A String", # Selects methods to which this rule applies.
                   #
@@ -5268,6 +5992,39 @@
                   # not set, the response message will be used as HTTP body of response.
                   # NOTE: the referred field must be not a repeated field and must be present
                   # at the top-level of response message type.
+              "restMethodName": "A String", # Optional. The rest method name is by default derived from the URL
+                  # pattern. If specified, this field overrides the default method name.
+                  # Example:
+                  #
+                  #     rpc CreateResource(CreateResourceRequest)
+                  #         returns (CreateResourceResponse) {
+                  #       option (google.api.http) = {
+                  #         post: "/v1/resources",
+                  #         body: "resource",
+                  #         rest_method_name: "insert"
+                  #       };
+                  #     }
+                  #
+                  # This method has the automatically derived rest method name "create", but
+                  #  for backwards compatability with apiary, it is specified as insert.
+              "mediaDownload": { # Defines the Media configuration for a service in case of a download. # Use this only for Scotty Requests. Do not use this for bytestream methods.
+                  # For media support, add instead [][google.bytestream.RestByteStream] as an
+                  # API to your configuration.
+                  # Use this only for Scotty Requests. Do not use this for media support using
+                  # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
+                  # your configuration for Bytestream methods.
+                "useDirectDownload": True or False, # A boolean that determines if direct download from ESF should be used for
+                    # download of this media.
+                "enabled": True or False, # Whether download is enabled.
+                "completeNotification": True or False, # A boolean that determines whether a notification for the completion of a
+                    # download should be sent to the backend.
+                "maxDirectDownloadSize": "A String", # Optional maximum acceptable size for direct download.
+                    # The size is specified in bytes.
+                "dropzone": "A String", # Name of the Scotty dropzone to use for the current API.
+                "downloadService": "A String", # DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.
+                    #
+                    # Specify name of the download service if one is used for download.
+              },
               "put": "A String", # Used for updating a resource.
               "patch": "A String", # Used for updating a resource.
               "post": "A String", # Used for creating a resource.
@@ -5278,6 +6035,12 @@
               "delete": "A String", # Used for deleting a resource.
             },
           ],
+          "fullyDecodeReservedExpansion": True or False, # When set to true, URL path parmeters will be fully URI-decoded except in
+              # cases of single segment matches in reserved expansion, where "%2F" will be
+              # left encoded.
+              #
+              # The default behavior is to not decode RFC 6570 reserved characters in multi
+              # segment matches.
         },
         "apis": [ # A list of API interfaces exported by this service. Only the `name` field
             # of the google.protobuf.Api needs to be provided by the configuration
@@ -5285,31 +6048,8 @@
             # normalization process. It is an error to specify an API interface here
             # which cannot be resolved against the associated IDL files.
           { # Api is a light-weight descriptor for a protocol buffer service.
-            "methods": [ # The methods of this api, in unspecified order.
-              { # Method represents a method of an api.
-                "name": "A String", # The simple name of this method.
-                "requestStreaming": True or False, # If true, the request is streamed.
-                "responseTypeUrl": "A String", # The URL of the output message type.
-                "requestTypeUrl": "A String", # A URL of the input message type.
-                "responseStreaming": True or False, # If true, the response is streamed.
-                "syntax": "A String", # The source syntax of this method.
-                "options": [ # Any metadata attached to the method.
-                  { # A protocol buffer option, which can be attached to a message, field,
-                      # enumeration, etc.
-                    "name": "A String", # The option's name. For protobuf built-in options (options defined in
-                        # descriptor.proto), this is the short name. For example, `"map_entry"`.
-                        # For custom options, it should be the fully-qualified name. For example,
-                        # `"google.api.http"`.
-                    "value": { # The option's value packed in an Any message. If the value is a primitive,
-                        # the corresponding wrapper type defined in google/protobuf/wrappers.proto
-                        # should be used. If the value is an enum, it should be stored as an int32
-                        # value using the google.protobuf.Int32Value type.
-                      "a_key": "", # Properties of the object. Contains field @type with type URL.
-                    },
-                  },
-                ],
-              },
-            ],
+            "name": "A String", # The fully qualified name of this api, including package name
+                # followed by the api's simple name.
             "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this
                 # message.
                 # protobuf element, like the file in which it is defined.
@@ -5435,8 +6175,31 @@
                 },
               },
             ],
-            "name": "A String", # The fully qualified name of this api, including package name
-                # followed by the api's simple name.
+            "methods": [ # The methods of this api, in unspecified order.
+              { # Method represents a method of an api.
+                "name": "A String", # The simple name of this method.
+                "requestStreaming": True or False, # If true, the request is streamed.
+                "responseTypeUrl": "A String", # The URL of the output message type.
+                "requestTypeUrl": "A String", # A URL of the input message type.
+                "responseStreaming": True or False, # If true, the response is streamed.
+                "syntax": "A String", # The source syntax of this method.
+                "options": [ # Any metadata attached to the method.
+                  { # A protocol buffer option, which can be attached to a message, field,
+                      # enumeration, etc.
+                    "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                        # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                        # For custom options, it should be the fully-qualified name. For example,
+                        # `"google.api.http"`.
+                    "value": { # The option's value packed in an Any message. If the value is a primitive,
+                        # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                        # should be used. If the value is an enum, it should be stored as an int32
+                        # value using the google.protobuf.Int32Value type.
+                      "a_key": "", # Properties of the object. Contains field @type with type URL.
+                    },
+                  },
+                ],
+              },
+            ],
           },
         ],
         "customError": { # Customize service error responses.  For example, list any service # Custom error configuration.
@@ -5464,6 +6227,160 @@
             "A String",
           ],
         },
+        "quota": { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration.
+            # usage.
+            #
+            # The quota configuration works this way:
+            # - The service configuration defines a set of metrics.
+            # - For API calls, the quota.metric_rules maps methods to metrics with
+            #   corresponding costs.
+            # - The quota.limits defines limits on the metrics, which will be used for
+            #   quota checks at runtime.
+            #
+            # An example quota configuration in yaml format:
+            #
+            #    quota:
+            #
+            #      - name: apiWriteQpsPerProject
+            #        metric: library.googleapis.com/write_calls
+            #        unit: "1/min/{project}"  # rate limit for consumer projects
+            #        values:
+            #          STANDARD: 10000
+            #
+            #
+            #      # The metric rules bind all methods to the read_calls metric,
+            #      # except for the UpdateBook and DeleteBook methods. These two methods
+            #      # are mapped to the write_calls metric, with the UpdateBook method
+            #      # consuming at twice rate as the DeleteBook method.
+            #      metric_rules:
+            #      - selector: "*"
+            #        metric_costs:
+            #          library.googleapis.com/read_calls: 1
+            #      - selector: google.example.library.v1.LibraryService.UpdateBook
+            #        metric_costs:
+            #          library.googleapis.com/write_calls: 2
+            #      - selector: google.example.library.v1.LibraryService.DeleteBook
+            #        metric_costs:
+            #          library.googleapis.com/write_calls: 1
+            #
+            #  Corresponding Metric definition:
+            #
+            #      metrics:
+            #      - name: library.googleapis.com/read_calls
+            #        display_name: Read requests
+            #        metric_kind: DELTA
+            #        value_type: INT64
+            #
+            #      - name: library.googleapis.com/write_calls
+            #        display_name: Write requests
+            #        metric_kind: DELTA
+            #        value_type: INT64
+          "metricRules": [ # List of `MetricRule` definitions, each one mapping a selected method to one
+              # or more metrics.
+            { # Bind API methods to metrics. Binding a method to a metric causes that
+                # metric's configured quota behaviors to apply to the method call.
+              "metricCosts": { # Metrics to update when the selected methods are called, and the associated
+                  # cost applied to each metric.
+                  #
+                  # The key of the map is the metric name, and the values are the amount
+                  # increased for the metric against which the quota limits are defined.
+                  # The value must not be negative.
+                "a_key": "A String",
+              },
+              "selector": "A String", # Selects the methods to which this rule applies.
+                  #
+                  # Refer to selector for syntax details.
+            },
+          ],
+          "limits": [ # List of `QuotaLimit` definitions for the service.
+            { # `QuotaLimit` defines a specific limit that applies over a specified duration
+                # for a limit type. There can be at most one limit for a duration and limit
+                # type combination defined within a `QuotaGroup`.
+              "displayName": "A String", # User-visible display name for this limit.
+                  # Optional. If not set, the UI will provide a default display name based on
+                  # the quota configuration. This field can be used to override the default
+                  # display name generated from the configuration.
+              "description": "A String", # Optional. User-visible, extended description for this quota limit.
+                  # Should be used only when more context is needed to understand this limit
+                  # than provided by the limit's display name (see: `display_name`).
+              "defaultLimit": "A String", # Default number of tokens that can be consumed during the specified
+                  # duration. This is the number of tokens assigned when a client
+                  # application developer activates the service for his/her project.
+                  #
+                  # Specifying a value of 0 will block all requests. This can be used if you
+                  # are provisioning quota to selected consumers and blocking others.
+                  # Similarly, a value of -1 will indicate an unlimited quota. No other
+                  # negative values are allowed.
+                  #
+                  # Used by group-based quotas only.
+              "metric": "A String", # The name of the metric this quota limit applies to. The quota limits with
+                  # the same metric will be checked together during runtime. The metric must be
+                  # defined within the service config.
+                  #
+                  # Used by metric-based quotas only.
+              "values": { # Tiered limit values, currently only STANDARD is supported.
+                "a_key": "A String",
+              },
+              "maxLimit": "A String", # Maximum number of tokens that can be consumed during the specified
+                  # duration. Client application developers can override the default limit up
+                  # to this maximum. If specified, this value cannot be set to a value less
+                  # than the default limit. If not specified, it is set to the default limit.
+                  #
+                  # To allow clients to apply overrides with no upper bound, set this to -1,
+                  # indicating unlimited maximum quota.
+                  #
+                  # Used by group-based quotas only.
+              "duration": "A String", # Duration of this limit in textual notation. Example: "100s", "24h", "1d".
+                  # For duration longer than a day, only multiple of days is supported. We
+                  # support only "100s" and "1d" for now. Additional support will be added in
+                  # the future. "0" indicates indefinite duration.
+                  #
+                  # Used by group-based quotas only.
+              "freeTier": "A String", # Free tier value displayed in the Developers Console for this limit.
+                  # The free tier is the number of tokens that will be subtracted from the
+                  # billed amount when billing is enabled.
+                  # This field can only be set on a limit with duration "1d", in a billable
+                  # group; it is invalid on any other limit. If this field is not set, it
+                  # defaults to 0, indicating that there is no free tier for this service.
+                  #
+                  # Used by group-based quotas only.
+              "unit": "A String", # Specify the unit of the quota limit. It uses the same syntax as
+                  # Metric.unit. The supported unit kinds are determined by the quota
+                  # backend system.
+                  #
+                  # The [Google Service Control](https://cloud.google.com/service-control)
+                  # supports the following unit components:
+                  # * One of the time intevals:
+                  #   * "/min"  for quota every minute.
+                  #   * "/d"  for quota every 24 hours, starting 00:00 US Pacific Time.
+                  #   * Otherwise the quota won't be reset by time, such as storage limit.
+                  # * One and only one of the granted containers:
+                  #   * "/{project}" quota for a project
+                  #
+                  # Here are some examples:
+                  # * "1/min/{project}" for quota per minute per project.
+                  #
+                  # Note: the order of unit components is insignificant.
+                  # The "1" at the beginning is required to follow the metric unit syntax.
+                  #
+                  # Used by metric-based quotas only.
+              "name": "A String", # Name of the quota limit. The name is used to refer to the limit when
+                  # overriding the default limit on per-consumer basis.
+                  #
+                  # For metric-based quota limits, the name must be provided, and it must be
+                  # unique within the service. The name can only include alphanumeric
+                  # characters as well as '-'.
+                  #
+                  # The maximum length of the limit name is 64 characters.
+                  #
+                  # The name of a limit is used as a unique identifier for this limit.
+                  # Therefore, once a limit has been put into use, its name should be
+                  # immutable. You can use the display_name field to provide a user-friendly
+                  # name for the limit. The display name can be evolved over time without
+                  # affecting the identity of the limit.
+            },
+          ],
+        },
         "visibility": { # `Visibility` defines restrictions for the visibility of service # API visibility configuration.
             # elements.  Restrictions are specified using visibility labels
             # (e.g., TRUSTED_TESTER) that are elsewhere linked to users and projects.
@@ -5624,12 +6541,32 @@
             #     enums:
             #     - name: google.someapi.v1.SomeEnum
           { # Enum type definition.
-            "syntax": "A String", # The source syntax.
             "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
                 # protobuf element, like the file in which it is defined.
               "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
                   # protobuf element.  For example: `"google/protobuf/source_context.proto"`.
             },
+            "enumvalue": [ # Enum value definitions.
+              { # Enum value definition.
+                "options": [ # Protocol buffer options.
+                  { # A protocol buffer option, which can be attached to a message, field,
+                      # enumeration, etc.
+                    "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                        # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                        # For custom options, it should be the fully-qualified name. For example,
+                        # `"google.api.http"`.
+                    "value": { # The option's value packed in an Any message. If the value is a primitive,
+                        # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                        # should be used. If the value is an enum, it should be stored as an int32
+                        # value using the google.protobuf.Int32Value type.
+                      "a_key": "", # Properties of the object. Contains field @type with type URL.
+                    },
+                  },
+                ],
+                "name": "A String", # Enum value name.
+                "number": 42, # Enum value number.
+              },
+            ],
             "options": [ # Protocol buffer options.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
@@ -5646,27 +6583,7 @@
               },
             ],
             "name": "A String", # Enum type name.
-            "enumvalue": [ # Enum value definitions.
-              { # Enum value definition.
-                "number": 42, # Enum value number.
-                "name": "A String", # Enum value name.
-                "options": [ # Protocol buffer options.
-                  { # A protocol buffer option, which can be attached to a message, field,
-                      # enumeration, etc.
-                    "name": "A String", # The option's name. For protobuf built-in options (options defined in
-                        # descriptor.proto), this is the short name. For example, `"map_entry"`.
-                        # For custom options, it should be the fully-qualified name. For example,
-                        # `"google.api.http"`.
-                    "value": { # The option's value packed in an Any message. If the value is a primitive,
-                        # the corresponding wrapper type defined in google/protobuf/wrappers.proto
-                        # should be used. If the value is an enum, it should be stored as an int32
-                        # value using the google.protobuf.Int32Value type.
-                      "a_key": "", # Properties of the object. Contains field @type with type URL.
-                    },
-                  },
-                ],
-              },
-            ],
+            "syntax": "A String", # The source syntax.
           },
         ],
         "types": [ # A list of all proto message types included in this API service.
@@ -6008,12 +6925,12 @@
               "provided": [ # A list of full type names of provided contexts.
                 "A String",
               ],
-              "requested": [ # A list of full type names of requested contexts.
-                "A String",
-              ],
               "selector": "A String", # Selects the methods to which this rule applies.
                   #
                   # Refer to selector for syntax details.
+              "requested": [ # A list of full type names of requested contexts.
+                "A String",
+              ],
             },
           ],
         },
@@ -6036,19 +6953,26 @@
               #       # allowed to proceed.
               #     - name: library-example.googleapis.com
               #       allow_cors: true
+            "target": "A String", # The specification of an Internet routable address of API frontend that will
+                # handle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary).
+                # It should be either a valid IPv4 address or a fully-qualified domain name.
+                # For example, "8.8.8.8" or "myservice.appspot.com".
+            "apis": [ # The list of APIs served by this endpoint.
+                #
+                # If no APIs are specified this translates to "all APIs" exported by the
+                # service, as defined in the top-level service configuration.
+              "A String",
+            ],
             "allowCors": True or False, # Allowing
                 # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
                 # cross-domain traffic, would allow the backends served from this endpoint to
                 # receive and respond to HTTP OPTIONS requests. The response will be used by
                 # the browser to determine whether the subsequent cross-origin request is
                 # allowed to proceed.
-            "apis": [ # The list of APIs served by this endpoint.
-              "A String",
-            ],
+            "name": "A String", # The canonical name of this endpoint.
             "features": [ # The list of features enabled on this endpoint.
               "A String",
             ],
-            "name": "A String", # The canonical name of this endpoint.
             "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases,
                 # please specify multiple google.api.Endpoint for each of the intented
                 # alias.
@@ -6141,12 +7065,6 @@
 
     { # This resource represents a long-running operation that is the result of a
       # network API call.
-    "metadata": { # Service-specific metadata associated with the operation.  It typically
-        # contains progress information and common metadata such as create time.
-        # Some services might not provide such metadata.  Any method that returns a
-        # long-running operation should document the metadata type, if any.
-      "a_key": "", # Properties of the object. Contains field @type with type URL.
-    },
     "error": { # The `Status` type defines a logical error model that is suitable for different # The error result of the operation in case of failure or cancellation.
         # programming environments, including REST APIs and RPC APIs. It is used by
         # [gRPC](https://github.com/grpc). The error model is designed to be:
@@ -6164,7 +7082,7 @@
         # error message is needed, put the localized message in the error details or
         # localize it in the client. The optional error details may contain arbitrary
         # information about the error. There is a predefined set of error detail types
-        # in the package `google.rpc` which can be used for common error conditions.
+        # in the package `google.rpc` that can be used for common error conditions.
         #
         # # Language mapping
         #
@@ -6187,7 +7105,7 @@
         #     errors.
         #
         # - Workflow errors. A typical workflow has multiple steps. Each step may
-        #     have a `Status` message for error reporting purpose.
+        #     have a `Status` message for error reporting.
         #
         # - Batch operations. If a client uses batch request and batch response, the
         #     `Status` message should be used directly inside batch response, one for
@@ -6226,6 +7144,12 @@
     "name": "A String", # The server-assigned name, which is only unique within the same service that
         # originally returns it. If you use the default HTTP mapping, the
         # `name` should have the format of `operations/some/unique/name`.
+    "metadata": { # Service-specific metadata associated with the operation.  It typically
+        # contains progress information and common metadata such as create time.
+        # Some services might not provide such metadata.  Any method that returns a
+        # long-running operation should document the metadata type, if any.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
+    },
   }</pre>
 </div>