"""Generated message classes for cloudtasks version v2beta3.

Manages the execution of large numbers of distributed requests.
"""
# NOTE: This file is autogenerated and should not be edited by hand.

from apitools.base.protorpclite import messages as _messages
from apitools.base.py import encoding
from apitools.base.py import extra_types


package = 'cloudtasks'


class AppEngineHttpQueue(_messages.Message):
  r"""App Engine HTTP queue.  The task will be delivered to the App Engine
  application hostname specified by its AppEngineHttpQueue and
  AppEngineHttpRequest. The documentation for AppEngineHttpRequest explains
  how the task's host URL is constructed.  Using AppEngineHttpQueue requires
  [`appengine.applications.get`](https://cloud.google.com/appengine/docs
  /admin-api/access-control) Google IAM permission for the project and the
  following scope:  `https://www.googleapis.com/auth/cloud-platform`

  Fields:
    appEngineRoutingOverride: Overrides for the task-level app_engine_routing.
      If set, `app_engine_routing_override` is used for all tasks in the
      queue, no matter what the setting is for the task-level
      app_engine_routing.
  """

  appEngineRoutingOverride = _messages.MessageField('AppEngineRouting', 1)


class AppEngineHttpRequest(_messages.Message):
  r"""App Engine HTTP request.  The message defines the HTTP request that is
  sent to an App Engine app when the task is dispatched.  This proto can only
  be used for tasks in a queue which has app_engine_http_queue set.  Using
  AppEngineHttpRequest requires
  [`appengine.applications.get`](https://cloud.google.com/appengine/docs
  /admin-api/access-control) Google IAM permission for the project and the
  following scope:  `https://www.googleapis.com/auth/cloud-platform`  The task
  will be delivered to the App Engine app which belongs to the same project as
  the queue. For more information, see [How Requests are
  Routed](https://cloud.google.com/appengine/docs/standard/python/how-
  requests-are-routed) and how routing is affected by [dispatch
  files](https://cloud.google.com/appengine/docs/python/config/dispatchref).
  Traffic is encrypted during transport and never leaves Google datacenters.
  Because this traffic is carried over a communication mechanism internal to
  Google, you cannot explicitly set the protocol (for example, HTTP or HTTPS).
  The request to the handler, however, will appear to have used the HTTP
  protocol.  The AppEngineRouting used to construct the URL that the task is
  delivered to can be set at the queue-level or task-level:  * If set,
  app_engine_routing_override    is used for all tasks in the queue, no matter
  what the setting    is for the    task-level app_engine_routing.   The `url`
  that the task will be sent to is:  * `url =` host `+`   relative_uri  Tasks
  can be dispatched to secure app handlers, unsecure app handlers, and URIs
  restricted with [`login: admin`](https://cloud.google.com/appengine/docs/sta
  ndard/python/config/appref). Because tasks are not run as any user, they
  cannot be dispatched to URIs restricted with [`login: required`](https://clo
  ud.google.com/appengine/docs/standard/python/config/appref) Task dispatches
  also do not follow redirects.  The task attempt has succeeded if the app's
  request handler returns an HTTP response code in the range [`200` - `299`].
  `503` is considered an App Engine system error instead of an application
  error. Requests returning error `503` will be retried regardless of retry
  configuration and not counted against retry counts. Any other response code
  or a failure to receive a response before the deadline is a failed attempt.

  Enums:
    HttpMethodValueValuesEnum: The HTTP method to use for the request. The
      default is POST.  The app's request handler for the task's target URL
      must be able to handle HTTP requests with this http_method, otherwise
      the task attempt will fail with error code 405 (Method Not Allowed). See
      [Writing a push task request
      handler](https://cloud.google.com/appengine/docs/java/taskqueue/push
      /creating-handlers#writing_a_push_task_request_handler) and the
      documentation for the request handlers in the language your app is
      written in e.g. [Python Request Handler](https://cloud.google.com/appeng
      ine/docs/python/tools/webapp/requesthandlerclass).

  Messages:
    HeadersValue: HTTP request headers.  This map contains the header field
      names and values. Headers can be set when the task is created. Repeated
      headers are not supported but a header value can contain commas.  Cloud
      Tasks sets some headers to default values:  * `User-Agent`: By default,
      this header is   `"AppEngine-Google;
      (+http://code.google.com/appengine)"`.   This header can be modified,
      but Cloud Tasks will append   `"AppEngine-Google;
      (+http://code.google.com/appengine)"` to the   modified `User-Agent`.
      If the task has a body, Cloud Tasks sets the following headers:  *
      `Content-Type`: By default, the `Content-Type` header is set to
      `"application/octet-stream"`. The default can be overridden by
      explicitly   setting `Content-Type` to a particular media type when the
      task is created.   For example, `Content-Type` can be set to
      `"application/json"`. * `Content-Length`: This is computed by Cloud
      Tasks. This value is   output only.   It cannot be changed.  The headers
      below cannot be set or overridden:  * `Host` * `X-Google-*` *
      `X-AppEngine-*`  In addition, Cloud Tasks sets some headers when the
      task is dispatched, such as headers containing information about the
      task; see [request
      headers](https://cloud.google.com/appengine/docs/python/taskqueue/push
      /creating-handlers#reading_request_headers). These headers are set only
      when the task is dispatched, so they are not visible when the task is
      returned in a Cloud Tasks response.  Although there is no specific limit
      for the maximum number of headers or the size, there is a limit on the
      maximum size of the Task. For more information, see the CreateTask
      documentation.

  Fields:
    appEngineRouting: Task-level setting for App Engine routing.  If set,
      app_engine_routing_override is used for all tasks in the queue, no
      matter what the setting is for the task-level app_engine_routing.
    body: HTTP request body.  A request body is allowed only if the HTTP
      method is POST or PUT. It is an error to set a body on a task with an
      incompatible HttpMethod.
    headers: HTTP request headers.  This map contains the header field names
      and values. Headers can be set when the task is created. Repeated
      headers are not supported but a header value can contain commas.  Cloud
      Tasks sets some headers to default values:  * `User-Agent`: By default,
      this header is   `"AppEngine-Google;
      (+http://code.google.com/appengine)"`.   This header can be modified,
      but Cloud Tasks will append   `"AppEngine-Google;
      (+http://code.google.com/appengine)"` to the   modified `User-Agent`.
      If the task has a body, Cloud Tasks sets the following headers:  *
      `Content-Type`: By default, the `Content-Type` header is set to
      `"application/octet-stream"`. The default can be overridden by
      explicitly   setting `Content-Type` to a particular media type when the
      task is created.   For example, `Content-Type` can be set to
      `"application/json"`. * `Content-Length`: This is computed by Cloud
      Tasks. This value is   output only.   It cannot be changed.  The headers
      below cannot be set or overridden:  * `Host` * `X-Google-*` *
      `X-AppEngine-*`  In addition, Cloud Tasks sets some headers when the
      task is dispatched, such as headers containing information about the
      task; see [request
      headers](https://cloud.google.com/appengine/docs/python/taskqueue/push
      /creating-handlers#reading_request_headers). These headers are set only
      when the task is dispatched, so they are not visible when the task is
      returned in a Cloud Tasks response.  Although there is no specific limit
      for the maximum number of headers or the size, there is a limit on the
      maximum size of the Task. For more information, see the CreateTask
      documentation.
    httpMethod: The HTTP method to use for the request. The default is POST.
      The app's request handler for the task's target URL must be able to
      handle HTTP requests with this http_method, otherwise the task attempt
      will fail with error code 405 (Method Not Allowed). See [Writing a push
      task request
      handler](https://cloud.google.com/appengine/docs/java/taskqueue/push
      /creating-handlers#writing_a_push_task_request_handler) and the
      documentation for the request handlers in the language your app is
      written in e.g. [Python Request Handler](https://cloud.google.com/appeng
      ine/docs/python/tools/webapp/requesthandlerclass).
    relativeUri: The relative URI.  The relative URI must begin with "/" and
      must be a valid HTTP relative URI. It can contain a path and query
      string arguments. If the relative URI is empty, then the root path "/"
      will be used. No spaces are allowed, and the maximum length allowed is
      2083 characters.
  """

  class HttpMethodValueValuesEnum(_messages.Enum):
    r"""The HTTP method to use for the request. The default is POST.  The
    app's request handler for the task's target URL must be able to handle
    HTTP requests with this http_method, otherwise the task attempt will fail
    with error code 405 (Method Not Allowed). See [Writing a push task request
    handler](https://cloud.google.com/appengine/docs/java/taskqueue/push
    /creating-handlers#writing_a_push_task_request_handler) and the
    documentation for the request handlers in the language your app is written
    in e.g. [Python Request Handler](https://cloud.google.com/appengine/docs/p
    ython/tools/webapp/requesthandlerclass).

    Values:
      HTTP_METHOD_UNSPECIFIED: HTTP method unspecified
      POST: HTTP POST
      GET: HTTP GET
      HEAD: HTTP HEAD
      PUT: HTTP PUT
      DELETE: HTTP DELETE
      PATCH: HTTP PATCH
      OPTIONS: HTTP OPTIONS
    """
    HTTP_METHOD_UNSPECIFIED = 0
    POST = 1
    GET = 2
    HEAD = 3
    PUT = 4
    DELETE = 5
    PATCH = 6
    OPTIONS = 7

  @encoding.MapUnrecognizedFields('additionalProperties')
  class HeadersValue(_messages.Message):
    r"""HTTP request headers.  This map contains the header field names and
    values. Headers can be set when the task is created. Repeated headers are
    not supported but a header value can contain commas.  Cloud Tasks sets
    some headers to default values:  * `User-Agent`: By default, this header
    is   `"AppEngine-Google; (+http://code.google.com/appengine)"`.   This
    header can be modified, but Cloud Tasks will append   `"AppEngine-Google;
    (+http://code.google.com/appengine)"` to the   modified `User-Agent`.  If
    the task has a body, Cloud Tasks sets the following headers:  * `Content-
    Type`: By default, the `Content-Type` header is set to   `"application
    /octet-stream"`. The default can be overridden by explicitly   setting
    `Content-Type` to a particular media type when the   task is created.
    For example, `Content-Type` can be set to `"application/json"`. *
    `Content-Length`: This is computed by Cloud Tasks. This value is   output
    only.   It cannot be changed.  The headers below cannot be set or
    overridden:  * `Host` * `X-Google-*` * `X-AppEngine-*`  In addition, Cloud
    Tasks sets some headers when the task is dispatched, such as headers
    containing information about the task; see [request
    headers](https://cloud.google.com/appengine/docs/python/taskqueue/push
    /creating-handlers#reading_request_headers). These headers are set only
    when the task is dispatched, so they are not visible when the task is
    returned in a Cloud Tasks response.  Although there is no specific limit
    for the maximum number of headers or the size, there is a limit on the
    maximum size of the Task. For more information, see the CreateTask
    documentation.

    Messages:
      AdditionalProperty: An additional property for a HeadersValue object.

    Fields:
      additionalProperties: Additional properties of type HeadersValue
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a HeadersValue object.

      Fields:
        key: Name of the additional property.
        value: A string attribute.
      """

      key = _messages.StringField(1)
      value = _messages.StringField(2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  appEngineRouting = _messages.MessageField('AppEngineRouting', 1)
  body = _messages.BytesField(2)
  headers = _messages.MessageField('HeadersValue', 3)
  httpMethod = _messages.EnumField('HttpMethodValueValuesEnum', 4)
  relativeUri = _messages.StringField(5)


class AppEngineRouting(_messages.Message):
  r"""App Engine Routing.  Defines routing characteristics specific to App
  Engine - service, version, and instance.  For more information about
  services, versions, and instances see [An Overview of App
  Engine](https://cloud.google.com/appengine/docs/python/an-overview-of-app-
  engine), [Microservices Architecture on Google App
  Engine](https://cloud.google.com/appengine/docs/python/microservices-on-app-
  engine), [App Engine Standard request
  routing](https://cloud.google.com/appengine/docs/standard/python/how-
  requests-are-routed), and [App Engine Flex request
  routing](https://cloud.google.com/appengine/docs/flexible/python/how-
  requests-are-routed).

  Fields:
    host: Output only. The host that the task is sent to.  The host is
      constructed from the domain name of the app associated with the queue's
      project ID (for example <app-id>.appspot.com), and the service, version,
      and instance. Tasks which were created using the App Engine SDK might
      have a custom domain name.  For more information, see [How Requests are
      Routed](https://cloud.google.com/appengine/docs/standard/python/how-
      requests-are-routed).
    instance: App instance.  By default, the task is sent to an instance which
      is available when the task is attempted.  Requests can only be sent to a
      specific instance if [manual scaling is used in App Engine
      Standard](https://cloud.google.com/appengine/docs/python/an-overview-of-
      app-engine?hl=en_US#scaling_types_and_instance_classes). App Engine Flex
      does not support instances. For more information, see [App Engine
      Standard request
      routing](https://cloud.google.com/appengine/docs/standard/python/how-
      requests-are-routed) and [App Engine Flex request
      routing](https://cloud.google.com/appengine/docs/flexible/python/how-
      requests-are-routed).
    service: App service.  By default, the task is sent to the service which
      is the default service when the task is attempted.  For some queues or
      tasks which were created using the App Engine Task Queue API, host is
      not parsable into service, version, and instance. For example, some
      tasks which were created using the App Engine SDK use a custom domain
      name; custom domains are not parsed by Cloud Tasks. If host is not
      parsable, then service, version, and instance are the empty string.
    version: App version.  By default, the task is sent to the version which
      is the default version when the task is attempted.  For some queues or
      tasks which were created using the App Engine Task Queue API, host is
      not parsable into service, version, and instance. For example, some
      tasks which were created using the App Engine SDK use a custom domain
      name; custom domains are not parsed by Cloud Tasks. If host is not
      parsable, then service, version, and instance are the empty string.
  """

  host = _messages.StringField(1)
  instance = _messages.StringField(2)
  service = _messages.StringField(3)
  version = _messages.StringField(4)


class Attempt(_messages.Message):
  r"""The status of a task attempt.

  Fields:
    dispatchTime: Output only. The time that this attempt was dispatched.
      `dispatch_time` will be truncated to the nearest microsecond.
    responseStatus: Output only. The response from the worker for this
      attempt.  If `response_time` is unset, then the task has not been
      attempted or is currently running and the `response_status` field is
      meaningless.
    responseTime: Output only. The time that this attempt response was
      received.  `response_time` will be truncated to the nearest microsecond.
    scheduleTime: Output only. The time that this attempt was scheduled.
      `schedule_time` will be truncated to the nearest microsecond.
  """

  dispatchTime = _messages.StringField(1)
  responseStatus = _messages.MessageField('Status', 2)
  responseTime = _messages.StringField(3)
  scheduleTime = _messages.StringField(4)


class Binding(_messages.Message):
  r"""Associates `members` with a `role`.

  Fields:
    condition: The condition that is associated with this binding. NOTE: an
      unsatisfied condition will not allow user access via current binding.
      Different bindings, including their conditions, are examined
      independently.
    members: Specifies the identities requesting access for a Cloud Platform
      resource. `members` can have the following values:  * `allUsers`: A
      special identifier that represents anyone who is    on the internet;
      with or without a Google account.  * `allAuthenticatedUsers`: A special
      identifier that represents anyone    who is authenticated with a Google
      account or a service account.  * `user:{emailid}`: An email address that
      represents a specific Google    account. For example, `alice@gmail.com`
      .   * `serviceAccount:{emailid}`: An email address that represents a
      service    account. For example, `my-other-
      app@appspot.gserviceaccount.com`.  * `group:{emailid}`: An email address
      that represents a Google group.    For example, `admins@example.com`.
      * `domain:{domain}`: The G Suite domain (primary) that represents all
      the    users of that domain. For example, `google.com` or `example.com`.
    role: Role that is assigned to `members`. For example, `roles/viewer`,
      `roles/editor`, or `roles/owner`.
  """

  condition = _messages.MessageField('Expr', 1)
  members = _messages.StringField(2, repeated=True)
  role = _messages.StringField(3)


class CloudtasksProjectsLocationsGetRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsGetRequest object.

  Fields:
    name: Resource name for the location.
  """

  name = _messages.StringField(1, required=True)


class CloudtasksProjectsLocationsListRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsListRequest object.

  Fields:
    filter: The standard list filter.
    name: The resource that owns the locations collection, if applicable.
    pageSize: The standard list page size.
    pageToken: The standard list page token.
  """

  filter = _messages.StringField(1)
  name = _messages.StringField(2, required=True)
  pageSize = _messages.IntegerField(3, variant=_messages.Variant.INT32)
  pageToken = _messages.StringField(4)


class CloudtasksProjectsLocationsQueuesCreateRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsQueuesCreateRequest object.

  Fields:
    parent: Required.  The location name in which the queue will be created.
      For example: `projects/PROJECT_ID/locations/LOCATION_ID`  The list of
      allowed locations can be obtained by calling Cloud Tasks' implementation
      of ListLocations.
    queue: A Queue resource to be passed as the request body.
  """

  parent = _messages.StringField(1, required=True)
  queue = _messages.MessageField('Queue', 2)


class CloudtasksProjectsLocationsQueuesDeleteRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsQueuesDeleteRequest object.

  Fields:
    name: Required.  The queue name. For example:
      `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`
  """

  name = _messages.StringField(1, required=True)


class CloudtasksProjectsLocationsQueuesGetIamPolicyRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsQueuesGetIamPolicyRequest object.

  Fields:
    getIamPolicyRequest: A GetIamPolicyRequest resource to be passed as the
      request body.
    resource: REQUIRED: The resource for which the policy is being requested.
      See the operation documentation for the appropriate value for this
      field.
  """

  getIamPolicyRequest = _messages.MessageField('GetIamPolicyRequest', 1)
  resource = _messages.StringField(2, required=True)


class CloudtasksProjectsLocationsQueuesGetRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsQueuesGetRequest object.

  Fields:
    name: Required.  The resource name of the queue. For example:
      `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`
  """

  name = _messages.StringField(1, required=True)


class CloudtasksProjectsLocationsQueuesListRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsQueuesListRequest object.

  Fields:
    filter: `filter` can be used to specify a subset of queues. Any Queue
      field can be used as a filter and several operators as supported. For
      example: `<=, <, >=, >, !=, =, :`. The filter syntax is the same as
      described in [Stackdriver's Advanced Logs
      Filters](https://cloud.google.com/logging/docs/view/advanced_filters).
      Sample filter "state: PAUSED".  Note that using filters might cause
      fewer queues than the requested page_size to be returned.
    pageSize: Requested page size.  The maximum page size is 9800. If
      unspecified, the page size will be the maximum. Fewer queues than
      requested might be returned, even if more queues exist; use the
      next_page_token in the response to determine if more queues exist.
    pageToken: A token identifying the page of results to return.  To request
      the first page results, page_token must be empty. To request the next
      page of results, page_token must be the value of next_page_token
      returned from the previous call to ListQueues method. It is an error to
      switch the value of the filter while iterating through pages.
    parent: Required.  The location name. For example:
      `projects/PROJECT_ID/locations/LOCATION_ID`
  """

  filter = _messages.StringField(1)
  pageSize = _messages.IntegerField(2, variant=_messages.Variant.INT32)
  pageToken = _messages.StringField(3)
  parent = _messages.StringField(4, required=True)


class CloudtasksProjectsLocationsQueuesPatchRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsQueuesPatchRequest object.

  Fields:
    name: Caller-specified and required in CreateQueue, after which it becomes
      output only.  The queue name.  The queue name must have the following
      format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`  *
      `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]),    hyphens
      (-), colons (:), or periods (.).    For more information, see
      [Identifying    projects](https://cloud.google.com/resource-manager/docs
      /creating-managing-projects#identifying_projects) * `LOCATION_ID` is the
      canonical ID for the queue's location.    The list of available
      locations can be obtained by calling    ListLocations.    For more
      information, see https://cloud.google.com/about/locations/. * `QUEUE_ID`
      can contain letters ([A-Za-z]), numbers ([0-9]), or   hyphens (-). The
      maximum length is 100 characters.
    queue: A Queue resource to be passed as the request body.
    updateMask: A mask used to specify which fields of the queue are being
      updated.  If empty, then all fields will be updated.
  """

  name = _messages.StringField(1, required=True)
  queue = _messages.MessageField('Queue', 2)
  updateMask = _messages.StringField(3)


class CloudtasksProjectsLocationsQueuesPauseRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsQueuesPauseRequest object.

  Fields:
    name: Required.  The queue name. For example:
      `projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`
    pauseQueueRequest: A PauseQueueRequest resource to be passed as the
      request body.
  """

  name = _messages.StringField(1, required=True)
  pauseQueueRequest = _messages.MessageField('PauseQueueRequest', 2)


class CloudtasksProjectsLocationsQueuesPurgeRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsQueuesPurgeRequest object.

  Fields:
    name: Required.  The queue name. For example:
      `projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`
    purgeQueueRequest: A PurgeQueueRequest resource to be passed as the
      request body.
  """

  name = _messages.StringField(1, required=True)
  purgeQueueRequest = _messages.MessageField('PurgeQueueRequest', 2)


class CloudtasksProjectsLocationsQueuesResumeRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsQueuesResumeRequest object.

  Fields:
    name: Required.  The queue name. For example:
      `projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`
    resumeQueueRequest: A ResumeQueueRequest resource to be passed as the
      request body.
  """

  name = _messages.StringField(1, required=True)
  resumeQueueRequest = _messages.MessageField('ResumeQueueRequest', 2)


class CloudtasksProjectsLocationsQueuesSetIamPolicyRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsQueuesSetIamPolicyRequest object.

  Fields:
    resource: REQUIRED: The resource for which the policy is being specified.
      See the operation documentation for the appropriate value for this
      field.
    setIamPolicyRequest: A SetIamPolicyRequest resource to be passed as the
      request body.
  """

  resource = _messages.StringField(1, required=True)
  setIamPolicyRequest = _messages.MessageField('SetIamPolicyRequest', 2)


class CloudtasksProjectsLocationsQueuesTasksCreateRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsQueuesTasksCreateRequest object.

  Fields:
    createTaskRequest: A CreateTaskRequest resource to be passed as the
      request body.
    parent: Required.  The queue name. For example:
      `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`  The queue
      must already exist.
  """

  createTaskRequest = _messages.MessageField('CreateTaskRequest', 1)
  parent = _messages.StringField(2, required=True)


class CloudtasksProjectsLocationsQueuesTasksDeleteRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsQueuesTasksDeleteRequest object.

  Fields:
    name: Required.  The task name. For example:
      `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID
      `
  """

  name = _messages.StringField(1, required=True)


class CloudtasksProjectsLocationsQueuesTasksGetRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsQueuesTasksGetRequest object.

  Enums:
    ResponseViewValueValuesEnum: The response_view specifies which subset of
      the Task will be returned.  By default response_view is BASIC; not all
      information is retrieved by default because some data, such as payloads,
      might be desirable to return only when needed because of its large size
      or because of the sensitivity of data that it contains.  Authorization
      for FULL requires `cloudtasks.tasks.fullView` [Google
      IAM](https://cloud.google.com/iam/) permission on the Task resource.

  Fields:
    name: Required.  The task name. For example:
      `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID
      `
    responseView: The response_view specifies which subset of the Task will be
      returned.  By default response_view is BASIC; not all information is
      retrieved by default because some data, such as payloads, might be
      desirable to return only when needed because of its large size or
      because of the sensitivity of data that it contains.  Authorization for
      FULL requires `cloudtasks.tasks.fullView` [Google
      IAM](https://cloud.google.com/iam/) permission on the Task resource.
  """

  class ResponseViewValueValuesEnum(_messages.Enum):
    r"""The response_view specifies which subset of the Task will be returned.
    By default response_view is BASIC; not all information is retrieved by
    default because some data, such as payloads, might be desirable to return
    only when needed because of its large size or because of the sensitivity
    of data that it contains.  Authorization for FULL requires
    `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)
    permission on the Task resource.

    Values:
      VIEW_UNSPECIFIED: <no description>
      BASIC: <no description>
      FULL: <no description>
    """
    VIEW_UNSPECIFIED = 0
    BASIC = 1
    FULL = 2

  name = _messages.StringField(1, required=True)
  responseView = _messages.EnumField('ResponseViewValueValuesEnum', 2)


class CloudtasksProjectsLocationsQueuesTasksListRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsQueuesTasksListRequest object.

  Enums:
    ResponseViewValueValuesEnum: The response_view specifies which subset of
      the Task will be returned.  By default response_view is BASIC; not all
      information is retrieved by default because some data, such as payloads,
      might be desirable to return only when needed because of its large size
      or because of the sensitivity of data that it contains.  Authorization
      for FULL requires `cloudtasks.tasks.fullView` [Google
      IAM](https://cloud.google.com/iam/) permission on the Task resource.

  Fields:
    pageSize: Requested page size. Fewer tasks than requested might be
      returned.  The maximum page size is 1000. If unspecified, the page size
      will be the maximum. Fewer tasks than requested might be returned, even
      if more tasks exist; use next_page_token in the response to determine if
      more tasks exist.
    pageToken: A token identifying the page of results to return.  To request
      the first page results, page_token must be empty. To request the next
      page of results, page_token must be the value of next_page_token
      returned from the previous call to ListTasks method.  The page token is
      valid for only 2 hours.
    parent: Required.  The queue name. For example:
      `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`
    responseView: The response_view specifies which subset of the Task will be
      returned.  By default response_view is BASIC; not all information is
      retrieved by default because some data, such as payloads, might be
      desirable to return only when needed because of its large size or
      because of the sensitivity of data that it contains.  Authorization for
      FULL requires `cloudtasks.tasks.fullView` [Google
      IAM](https://cloud.google.com/iam/) permission on the Task resource.
  """

  class ResponseViewValueValuesEnum(_messages.Enum):
    r"""The response_view specifies which subset of the Task will be returned.
    By default response_view is BASIC; not all information is retrieved by
    default because some data, such as payloads, might be desirable to return
    only when needed because of its large size or because of the sensitivity
    of data that it contains.  Authorization for FULL requires
    `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)
    permission on the Task resource.

    Values:
      VIEW_UNSPECIFIED: <no description>
      BASIC: <no description>
      FULL: <no description>
    """
    VIEW_UNSPECIFIED = 0
    BASIC = 1
    FULL = 2

  pageSize = _messages.IntegerField(1, variant=_messages.Variant.INT32)
  pageToken = _messages.StringField(2)
  parent = _messages.StringField(3, required=True)
  responseView = _messages.EnumField('ResponseViewValueValuesEnum', 4)


class CloudtasksProjectsLocationsQueuesTasksRunRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsQueuesTasksRunRequest object.

  Fields:
    name: Required.  The task name. For example:
      `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID
      `
    runTaskRequest: A RunTaskRequest resource to be passed as the request
      body.
  """

  name = _messages.StringField(1, required=True)
  runTaskRequest = _messages.MessageField('RunTaskRequest', 2)


class CloudtasksProjectsLocationsQueuesTestIamPermissionsRequest(_messages.Message):
  r"""A CloudtasksProjectsLocationsQueuesTestIamPermissionsRequest object.

  Fields:
    resource: REQUIRED: The resource for which the policy detail is being
      requested. See the operation documentation for the appropriate value for
      this field.
    testIamPermissionsRequest: A TestIamPermissionsRequest resource to be
      passed as the request body.
  """

  resource = _messages.StringField(1, required=True)
  testIamPermissionsRequest = _messages.MessageField('TestIamPermissionsRequest', 2)


class CreateTaskRequest(_messages.Message):
  r"""Request message for CreateTask.

  Enums:
    ResponseViewValueValuesEnum: The response_view specifies which subset of
      the Task will be returned.  By default response_view is BASIC; not all
      information is retrieved by default because some data, such as payloads,
      might be desirable to return only when needed because of its large size
      or because of the sensitivity of data that it contains.  Authorization
      for FULL requires `cloudtasks.tasks.fullView` [Google
      IAM](https://cloud.google.com/iam/) permission on the Task resource.

  Fields:
    responseView: The response_view specifies which subset of the Task will be
      returned.  By default response_view is BASIC; not all information is
      retrieved by default because some data, such as payloads, might be
      desirable to return only when needed because of its large size or
      because of the sensitivity of data that it contains.  Authorization for
      FULL requires `cloudtasks.tasks.fullView` [Google
      IAM](https://cloud.google.com/iam/) permission on the Task resource.
    task: Required.  The task to add.  Task names have the following format:
      `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID
      `. The user can optionally specify a task name. If a name is not
      specified then the system will generate a random unique task id, which
      will be set in the task returned in the response.  If schedule_time is
      not set or is in the past then Cloud Tasks will set it to the current
      time.  Task De-duplication:  Explicitly specifying a task ID enables
      task de-duplication.  If a task's ID is identical to that of an existing
      task or a task that was deleted or executed recently then the call will
      fail with ALREADY_EXISTS. If the task's queue was created using Cloud
      Tasks, then another task with the same name can't be created for ~1hour
      after the original task was deleted or executed. If the task's queue was
      created using queue.yaml or queue.xml, then another task with the same
      name can't be created for ~9days after the original task was deleted or
      executed.  Because there is an extra lookup cost to identify duplicate
      task names, these CreateTask calls have significantly increased latency.
      Using hashed strings for the task id or for the prefix of the task id is
      recommended. Choosing task ids that are sequential or have sequential
      prefixes, for example using a timestamp, causes an increase in latency
      and error rates in all task commands. The infrastructure relies on an
      approximately uniform distribution of task ids to store and serve tasks
      efficiently.
  """

  class ResponseViewValueValuesEnum(_messages.Enum):
    r"""The response_view specifies which subset of the Task will be returned.
    By default response_view is BASIC; not all information is retrieved by
    default because some data, such as payloads, might be desirable to return
    only when needed because of its large size or because of the sensitivity
    of data that it contains.  Authorization for FULL requires
    `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)
    permission on the Task resource.

    Values:
      VIEW_UNSPECIFIED: Unspecified. Defaults to BASIC.
      BASIC: The basic view omits fields which can be large or can contain
        sensitive data.  This view does not include the body in
        AppEngineHttpRequest. Bodies are desirable to return only when needed,
        because they can be large and because of the sensitivity of the data
        that you choose to store in it.
      FULL: All information is returned.  Authorization for FULL requires
        `cloudtasks.tasks.fullView` [Google
        IAM](https://cloud.google.com/iam/) permission on the Queue resource.
    """
    VIEW_UNSPECIFIED = 0
    BASIC = 1
    FULL = 2

  responseView = _messages.EnumField('ResponseViewValueValuesEnum', 1)
  task = _messages.MessageField('Task', 2)


class Empty(_messages.Message):
  r"""A generic empty message that you can re-use to avoid defining duplicated
  empty messages in your APIs. A typical example is to use it as the request
  or the response type of an API method. For instance:      service Foo {
  rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);     }  The
  JSON representation for `Empty` is empty JSON object `{}`.
  """



class Expr(_messages.Message):
  r"""Represents an expression text. Example:      title: "User account
  presence"     description: "Determines whether the request has a user
  account"     expression: "size(request.user) > 0"

  Fields:
    description: An optional description of the expression. This is a longer
      text which describes the expression, e.g. when hovered over it in a UI.
    expression: Textual representation of an expression in Common Expression
      Language syntax.  The application context of the containing message
      determines which well-known feature set of CEL is supported.
    location: An optional string indicating the location of the expression for
      error reporting, e.g. a file name and a position in the file.
    title: An optional title for the expression, i.e. a short string
      describing its purpose. This can be used e.g. in UIs which allow to
      enter the expression.
  """

  description = _messages.StringField(1)
  expression = _messages.StringField(2)
  location = _messages.StringField(3)
  title = _messages.StringField(4)


class GetIamPolicyRequest(_messages.Message):
  r"""Request message for `GetIamPolicy` method."""


class ListLocationsResponse(_messages.Message):
  r"""The response message for Locations.ListLocations.

  Fields:
    locations: A list of locations that matches the specified filter in the
      request.
    nextPageToken: The standard List next-page token.
  """

  locations = _messages.MessageField('Location', 1, repeated=True)
  nextPageToken = _messages.StringField(2)


class ListQueuesResponse(_messages.Message):
  r"""Response message for ListQueues.

  Fields:
    nextPageToken: A token to retrieve next page of results.  To return the
      next page of results, call ListQueues with this value as the page_token.
      If the next_page_token is empty, there are no more results.  The page
      token is valid for only 2 hours.
    queues: The list of queues.
  """

  nextPageToken = _messages.StringField(1)
  queues = _messages.MessageField('Queue', 2, repeated=True)


class ListTasksResponse(_messages.Message):
  r"""Response message for listing tasks using ListTasks.

  Fields:
    nextPageToken: A token to retrieve next page of results.  To return the
      next page of results, call ListTasks with this value as the page_token.
      If the next_page_token is empty, there are no more results.
    tasks: The list of tasks.
  """

  nextPageToken = _messages.StringField(1)
  tasks = _messages.MessageField('Task', 2, repeated=True)


class Location(_messages.Message):
  r"""A resource that represents Google Cloud Platform location.

  Messages:
    LabelsValue: Cross-service attributes for the location. For example
      {"cloud.googleapis.com/region": "us-east1"}
    MetadataValue: Service-specific metadata. For example the available
      capacity at the given location.

  Fields:
    displayName: The friendly name for this location, typically a nearby city
      name. For example, "Tokyo".
    labels: Cross-service attributes for the location. For example
      {"cloud.googleapis.com/region": "us-east1"}
    locationId: The canonical id for this location. For example: `"us-east1"`.
    metadata: Service-specific metadata. For example the available capacity at
      the given location.
    name: Resource name for the location, which may vary between
      implementations. For example: `"projects/example-project/locations/us-
      east1"`
  """

  @encoding.MapUnrecognizedFields('additionalProperties')
  class LabelsValue(_messages.Message):
    r"""Cross-service attributes for the location. For example
    {"cloud.googleapis.com/region": "us-east1"}

    Messages:
      AdditionalProperty: An additional property for a LabelsValue object.

    Fields:
      additionalProperties: Additional properties of type LabelsValue
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a LabelsValue object.

      Fields:
        key: Name of the additional property.
        value: A string attribute.
      """

      key = _messages.StringField(1)
      value = _messages.StringField(2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  @encoding.MapUnrecognizedFields('additionalProperties')
  class MetadataValue(_messages.Message):
    r"""Service-specific metadata. For example the available capacity at the
    given location.

    Messages:
      AdditionalProperty: An additional property for a MetadataValue object.

    Fields:
      additionalProperties: Properties of the object. Contains field @type
        with type URL.
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a MetadataValue object.

      Fields:
        key: Name of the additional property.
        value: A extra_types.JsonValue attribute.
      """

      key = _messages.StringField(1)
      value = _messages.MessageField('extra_types.JsonValue', 2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  displayName = _messages.StringField(1)
  labels = _messages.MessageField('LabelsValue', 2)
  locationId = _messages.StringField(3)
  metadata = _messages.MessageField('MetadataValue', 4)
  name = _messages.StringField(5)


class PauseQueueRequest(_messages.Message):
  r"""Request message for PauseQueue."""


class Policy(_messages.Message):
  r"""Defines an Identity and Access Management (IAM) policy. It is used to
  specify access control policies for Cloud Platform resources.   A `Policy`
  consists of a list of `bindings`. A `binding` binds a list of `members` to a
  `role`, where the members can be user accounts, Google groups, Google
  domains, and service accounts. A `role` is a named list of permissions
  defined by IAM.  **JSON Example**      {       "bindings": [         {
  "role": "roles/owner",           "members": [
  "user:mike@example.com",             "group:admins@example.com",
  "domain:google.com",             "serviceAccount:my-other-
  app@appspot.gserviceaccount.com"           ]         },         {
  "role": "roles/viewer",           "members": ["user:sean@example.com"]
  }       ]     }  **YAML Example**      bindings:     - members:       -
  user:mike@example.com       - group:admins@example.com       -
  domain:google.com       - serviceAccount:my-other-
  app@appspot.gserviceaccount.com       role: roles/owner     - members:
  - user:sean@example.com       role: roles/viewer   For a description of IAM
  and its features, see the [IAM developer's
  guide](https://cloud.google.com/iam/docs).

  Fields:
    bindings: Associates a list of `members` to a `role`. `bindings` with no
      members will result in an error.
    etag: `etag` is used for optimistic concurrency control as a way to help
      prevent simultaneous updates of a policy from overwriting each other. It
      is strongly suggested that systems make use of the `etag` in the read-
      modify-write cycle to perform policy updates in order to avoid race
      conditions: An `etag` is returned in the response to `getIamPolicy`, and
      systems are expected to put that etag in the request to `setIamPolicy`
      to ensure that their change will be applied to the same version of the
      policy.  If no `etag` is provided in the call to `setIamPolicy`, then
      the existing policy is overwritten blindly.
    version: Deprecated.
  """

  bindings = _messages.MessageField('Binding', 1, repeated=True)
  etag = _messages.BytesField(2)
  version = _messages.IntegerField(3, variant=_messages.Variant.INT32)


class PurgeQueueRequest(_messages.Message):
  r"""Request message for PurgeQueue."""


class Queue(_messages.Message):
  r"""A queue is a container of related tasks. Queues are configured to manage
  how those tasks are dispatched. Configurable properties include rate limits,
  retry options, queue types, and others.

  Enums:
    StateValueValuesEnum: Output only. The state of the queue.  `state` can
      only be changed by called PauseQueue, ResumeQueue, or uploading [queue.y
      aml/xml](https://cloud.google.com/appengine/docs/python/config/queueref)
      . UpdateQueue cannot be used to change `state`.

  Fields:
    appEngineHttpQueue: AppEngineHttpQueue settings apply only to App Engine
      tasks in this queue.
    name: Caller-specified and required in CreateQueue, after which it becomes
      output only.  The queue name.  The queue name must have the following
      format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`  *
      `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]),    hyphens
      (-), colons (:), or periods (.).    For more information, see
      [Identifying    projects](https://cloud.google.com/resource-manager/docs
      /creating-managing-projects#identifying_projects) * `LOCATION_ID` is the
      canonical ID for the queue's location.    The list of available
      locations can be obtained by calling    ListLocations.    For more
      information, see https://cloud.google.com/about/locations/. * `QUEUE_ID`
      can contain letters ([A-Za-z]), numbers ([0-9]), or   hyphens (-). The
      maximum length is 100 characters.
    purgeTime: Output only. The last time this queue was purged.  All tasks
      that were created before this time were purged.  A queue can be purged
      using PurgeQueue, the [App Engine Task Queue SDK, or the Cloud Console](
      https://cloud.google.com/appengine/docs/standard/python/taskqueue/push
      /deleting-tasks-and-queues#purging_all_tasks_from_a_queue).  Purge time
      will be truncated to the nearest microsecond. Purge time will be unset
      if the queue has never been purged.
    rateLimits: Rate limits for task dispatches.  rate_limits and retry_config
      are related because they both control task attempts. However they
      control task attempts in different ways:  * rate_limits controls the
      total rate of   dispatches from a queue (i.e. all traffic dispatched
      from the   queue, regardless of whether the dispatch is from a first
      attempt or a retry). * retry_config controls what happens to
      particular a task after its first attempt fails. That is,   retry_config
      controls task retries (the   second attempt, third attempt, etc).  The
      queue's actual dispatch rate is the result of:  * Number of tasks in the
      queue * User-specified throttling: rate_limits,   retry_config, and the
      queue's state. * System throttling due to `429` (Too Many Requests) or
      `503` (Service   Unavailable) responses from the worker, high error
      rates, or to smooth   sudden large traffic spikes.
    retryConfig: Settings that determine the retry behavior.  * For tasks
      created using Cloud Tasks: the queue-level retry settings   apply to all
      tasks in the queue that were created using Cloud Tasks.   Retry settings
      cannot be set on individual tasks. * For tasks created using the App
      Engine SDK: the queue-level retry   settings apply to all tasks in the
      queue which do not have retry settings   explicitly set on the task and
      were created by the App Engine SDK. See   [App Engine   documentation](h
      ttps://cloud.google.com/appengine/docs/standard/python/taskqueue/push
      /retrying-tasks).
    state: Output only. The state of the queue.  `state` can only be changed
      by called PauseQueue, ResumeQueue, or uploading [queue.yaml/xml](https:/
      /cloud.google.com/appengine/docs/python/config/queueref). UpdateQueue
      cannot be used to change `state`.
  """

  class StateValueValuesEnum(_messages.Enum):
    r"""Output only. The state of the queue.  `state` can only be changed by
    called PauseQueue, ResumeQueue, or uploading [queue.yaml/xml](https://clou
    d.google.com/appengine/docs/python/config/queueref). UpdateQueue cannot be
    used to change `state`.

    Values:
      STATE_UNSPECIFIED: Unspecified state.
      RUNNING: The queue is running. Tasks can be dispatched.  If the queue
        was created using Cloud Tasks and the queue has had no activity
        (method calls or task dispatches) for 30 days, the queue may take a
        few minutes to re-activate. Some method calls may return NOT_FOUND and
        tasks may not be dispatched for a few minutes until the queue has been
        re-activated.
      PAUSED: Tasks are paused by the user. If the queue is paused then Cloud
        Tasks will stop delivering tasks from it, but more tasks can still be
        added to it by the user.
      DISABLED: The queue is disabled.  A queue becomes `DISABLED` when [queue
        .yaml](https://cloud.google.com/appengine/docs/python/config/queueref)
        or [queue.xml](https://cloud.google.com/appengine/docs/standard/java/c
        onfig/queueref) is uploaded which does not contain the queue. You
        cannot directly disable a queue.  When a queue is disabled, tasks can
        still be added to a queue but the tasks are not dispatched.  To
        permanently delete this queue and all of its tasks, call DeleteQueue.
    """
    STATE_UNSPECIFIED = 0
    RUNNING = 1
    PAUSED = 2
    DISABLED = 3

  appEngineHttpQueue = _messages.MessageField('AppEngineHttpQueue', 1)
  name = _messages.StringField(2)
  purgeTime = _messages.StringField(3)
  rateLimits = _messages.MessageField('RateLimits', 4)
  retryConfig = _messages.MessageField('RetryConfig', 5)
  state = _messages.EnumField('StateValueValuesEnum', 6)


class RateLimits(_messages.Message):
  r"""Rate limits.  This message determines the maximum rate that tasks can be
  dispatched by a queue, regardless of whether the dispatch is a first task
  attempt or a retry.  Note: The debugging command, RunTask, will run a task
  even if the queue has reached its RateLimits.

  Fields:
    maxBurstSize: Output only. The max burst size.  Max burst size limits how
      fast tasks in queue are processed when many tasks are in the queue and
      the rate is high. This field allows the queue to have a high rate so
      processing starts shortly after a task is enqueued, but still limits
      resource usage when many tasks are enqueued in a short period of time.
      The [token bucket](https://wikipedia.org/wiki/Token_Bucket) algorithm is
      used to control the rate of task dispatches. Each queue has a token
      bucket that holds tokens, up to the maximum specified by
      `max_burst_size`. Each time a task is dispatched, a token is removed
      from the bucket. Tasks will be dispatched until the queue's bucket runs
      out of tokens. The bucket will be continuously refilled with new tokens
      based on max_dispatches_per_second.  Cloud Tasks will pick the value of
      `max_burst_size` based on the value of max_dispatches_per_second.  For
      App Engine queues that were created or updated using `queue.yaml/xml`,
      `max_burst_size` is equal to [bucket_size](https://cloud.google.com/appe
      ngine/docs/standard/python/config/queueref#bucket_size). Since
      `max_burst_size` is output only, if UpdateQueue is called on a queue
      created by `queue.yaml/xml`, `max_burst_size` will be reset based on the
      value of max_dispatches_per_second, regardless of whether
      max_dispatches_per_second is updated.
    maxConcurrentDispatches: The maximum number of concurrent tasks that Cloud
      Tasks allows to be dispatched for this queue. After this threshold has
      been reached, Cloud Tasks stops dispatching tasks until the number of
      concurrent requests decreases.  If unspecified when the queue is
      created, Cloud Tasks will pick the default.   The maximum allowed value
      is 5,000.   This field has the same meaning as [max_concurrent_requests
      in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/pyth
      on/config/queueref#max_concurrent_requests).
    maxDispatchesPerSecond: The maximum rate at which tasks are dispatched
      from this queue.  If unspecified when the queue is created, Cloud Tasks
      will pick the default.  * For App Engine queues, the maximum allowed
      value   is 500.   This field has the same meaning as [rate in queue.yaml
      /xml](https://cloud.google.com/appengine/docs/standard/python/config/que
      ueref#rate).
  """

  maxBurstSize = _messages.IntegerField(1, variant=_messages.Variant.INT32)
  maxConcurrentDispatches = _messages.IntegerField(2, variant=_messages.Variant.INT32)
  maxDispatchesPerSecond = _messages.FloatField(3)


class ResumeQueueRequest(_messages.Message):
  r"""Request message for ResumeQueue."""


class RetryConfig(_messages.Message):
  r"""Retry config.  These settings determine when a failed task attempt is
  retried.

  Fields:
    maxAttempts: Number of attempts per task.  Cloud Tasks will attempt the
      task `max_attempts` times (that is, if the first attempt fails, then
      there will be `max_attempts - 1` retries). Must be >= -1.  If
      unspecified when the queue is created, Cloud Tasks will pick the
      default.  -1 indicates unlimited attempts.  This field has the same
      meaning as [task_retry_limit in queue.yaml/xml](https://cloud.google.com
      /appengine/docs/standard/python/config/queueref#retry_parameters).
    maxBackoff: A task will be scheduled for retry between min_backoff and
      max_backoff duration after it fails, if the queue's RetryConfig
      specifies that the task should be retried.  If unspecified when the
      queue is created, Cloud Tasks will pick the default.   `max_backoff`
      will be truncated to the nearest second.  This field has the same
      meaning as [max_backoff_seconds in queue.yaml/xml](https://cloud.google.
      com/appengine/docs/standard/python/config/queueref#retry_parameters).
    maxDoublings: The time between retries will double `max_doublings` times.
      A task's retry interval starts at min_backoff, then doubles
      `max_doublings` times, then increases linearly, and finally retries
      retries at intervals of max_backoff up to max_attempts times.  For
      example, if min_backoff is 10s, max_backoff is 300s, and `max_doublings`
      is 3, then the a task will first be retried in 10s. The retry interval
      will double three times, and then increase linearly by 2^3 * 10s.
      Finally, the task will retry at intervals of max_backoff until the task
      has been attempted max_attempts times. Thus, the requests will retry at
      10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, ....  If unspecified when
      the queue is created, Cloud Tasks will pick the default.   This field
      has the same meaning as [max_doublings in queue.yaml/xml](https://cloud.
      google.com/appengine/docs/standard/python/config/queueref#retry_paramete
      rs).
    maxRetryDuration: If positive, `max_retry_duration` specifies the time
      limit for retrying a failed task, measured from when the task was first
      attempted. Once `max_retry_duration` time has passed *and* the task has
      been attempted max_attempts times, no further attempts will be made and
      the task will be deleted.  If zero, then the task age is unlimited.  If
      unspecified when the queue is created, Cloud Tasks will pick the
      default.   `max_retry_duration` will be truncated to the nearest second.
      This field has the same meaning as [task_age_limit in queue.yaml/xml](ht
      tps://cloud.google.com/appengine/docs/standard/python/config/queueref#re
      try_parameters).
    minBackoff: A task will be scheduled for retry between min_backoff and
      max_backoff duration after it fails, if the queue's RetryConfig
      specifies that the task should be retried.  If unspecified when the
      queue is created, Cloud Tasks will pick the default.   `min_backoff`
      will be truncated to the nearest second.  This field has the same
      meaning as [min_backoff_seconds in queue.yaml/xml](https://cloud.google.
      com/appengine/docs/standard/python/config/queueref#retry_parameters).
  """

  maxAttempts = _messages.IntegerField(1, variant=_messages.Variant.INT32)
  maxBackoff = _messages.StringField(2)
  maxDoublings = _messages.IntegerField(3, variant=_messages.Variant.INT32)
  maxRetryDuration = _messages.StringField(4)
  minBackoff = _messages.StringField(5)


class RunTaskRequest(_messages.Message):
  r"""Request message for forcing a task to run now using RunTask.

  Enums:
    ResponseViewValueValuesEnum: The response_view specifies which subset of
      the Task will be returned.  By default response_view is BASIC; not all
      information is retrieved by default because some data, such as payloads,
      might be desirable to return only when needed because of its large size
      or because of the sensitivity of data that it contains.  Authorization
      for FULL requires `cloudtasks.tasks.fullView` [Google
      IAM](https://cloud.google.com/iam/) permission on the Task resource.

  Fields:
    responseView: The response_view specifies which subset of the Task will be
      returned.  By default response_view is BASIC; not all information is
      retrieved by default because some data, such as payloads, might be
      desirable to return only when needed because of its large size or
      because of the sensitivity of data that it contains.  Authorization for
      FULL requires `cloudtasks.tasks.fullView` [Google
      IAM](https://cloud.google.com/iam/) permission on the Task resource.
  """

  class ResponseViewValueValuesEnum(_messages.Enum):
    r"""The response_view specifies which subset of the Task will be returned.
    By default response_view is BASIC; not all information is retrieved by
    default because some data, such as payloads, might be desirable to return
    only when needed because of its large size or because of the sensitivity
    of data that it contains.  Authorization for FULL requires
    `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)
    permission on the Task resource.

    Values:
      VIEW_UNSPECIFIED: Unspecified. Defaults to BASIC.
      BASIC: The basic view omits fields which can be large or can contain
        sensitive data.  This view does not include the body in
        AppEngineHttpRequest. Bodies are desirable to return only when needed,
        because they can be large and because of the sensitivity of the data
        that you choose to store in it.
      FULL: All information is returned.  Authorization for FULL requires
        `cloudtasks.tasks.fullView` [Google
        IAM](https://cloud.google.com/iam/) permission on the Queue resource.
    """
    VIEW_UNSPECIFIED = 0
    BASIC = 1
    FULL = 2

  responseView = _messages.EnumField('ResponseViewValueValuesEnum', 1)


class SetIamPolicyRequest(_messages.Message):
  r"""Request message for `SetIamPolicy` method.

  Fields:
    policy: REQUIRED: The complete policy to be applied to the `resource`. The
      size of the policy is limited to a few 10s of KB. An empty policy is a
      valid policy but certain Cloud Platform services (such as Projects)
      might reject them.
  """

  policy = _messages.MessageField('Policy', 1)


class StandardQueryParameters(_messages.Message):
  r"""Query parameters accepted by all methods.

  Enums:
    FXgafvValueValuesEnum: V1 error format.
    AltValueValuesEnum: Data format for response.

  Fields:
    f__xgafv: V1 error format.
    access_token: OAuth access token.
    alt: Data format for response.
    callback: JSONP
    fields: Selector specifying which fields to include in a partial response.
    key: API key. Your API key identifies your project and provides you with
      API access, quota, and reports. Required unless you provide an OAuth 2.0
      token.
    oauth_token: OAuth 2.0 token for the current user.
    prettyPrint: Returns response with indentations and line breaks.
    quotaUser: Available to use for quota purposes for server-side
      applications. Can be any arbitrary string assigned to a user, but should
      not exceed 40 characters.
    trace: A tracing token of the form "token:<tokenid>" to include in api
      requests.
    uploadType: Legacy upload protocol for media (e.g. "media", "multipart").
    upload_protocol: Upload protocol for media (e.g. "raw", "multipart").
  """

  class AltValueValuesEnum(_messages.Enum):
    r"""Data format for response.

    Values:
      json: Responses with Content-Type of application/json
      media: Media download with context-dependent Content-Type
      proto: Responses with Content-Type of application/x-protobuf
    """
    json = 0
    media = 1
    proto = 2

  class FXgafvValueValuesEnum(_messages.Enum):
    r"""V1 error format.

    Values:
      _1: v1 error format
      _2: v2 error format
    """
    _1 = 0
    _2 = 1

  f__xgafv = _messages.EnumField('FXgafvValueValuesEnum', 1)
  access_token = _messages.StringField(2)
  alt = _messages.EnumField('AltValueValuesEnum', 3, default=u'json')
  callback = _messages.StringField(4)
  fields = _messages.StringField(5)
  key = _messages.StringField(6)
  oauth_token = _messages.StringField(7)
  prettyPrint = _messages.BooleanField(8, default=True)
  quotaUser = _messages.StringField(9)
  trace = _messages.StringField(10)
  uploadType = _messages.StringField(11)
  upload_protocol = _messages.StringField(12)


class Status(_messages.Message):
  r"""The `Status` type defines a logical error model that is suitable for
  different programming environments, including REST APIs and RPC APIs. It is
  used by [gRPC](https://github.com/grpc). The error model is designed to be:
  - Simple to use and understand for most users - Flexible enough to meet
  unexpected needs  # Overview  The `Status` message contains three pieces of
  data: error code, error message, and error details. The error code should be
  an enum value of google.rpc.Code, but it may accept additional error codes
  if needed.  The error message should be a developer-facing English message
  that helps developers *understand* and *resolve* the error. If a localized
  user-facing 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` that can be used for common error
  conditions.  # Language mapping  The `Status` message is the logical
  representation of the error model, but it is not necessarily the actual wire
  format. When the `Status` message is exposed in different client libraries
  and different wire protocols, it can be mapped differently. For example, it
  will likely be mapped to some exceptions in Java, but more likely mapped to
  some error codes in C.  # Other uses  The error model and the `Status`
  message can be used in a variety of environments, either with or without
  APIs, to provide a consistent developer experience across different
  environments.  Example uses of this error model include:  - Partial errors.
  If a service needs to return partial errors to the client,     it may embed
  the `Status` in the normal response to indicate the partial     errors.  -
  Workflow errors. A typical workflow has multiple steps. Each step may
  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     each error sub-
  response.  - Asynchronous operations. If an API call embeds asynchronous
  operation     results in its response, the status of those operations should
  be     represented directly using the `Status` message.  - Logging. If some
  API errors are stored in logs, the message `Status` could     be used
  directly after any stripping needed for security/privacy reasons.

  Messages:
    DetailsValueListEntry: A DetailsValueListEntry object.

  Fields:
    code: The status code, which should be an enum value of google.rpc.Code.
    details: A list of messages that carry the error details.  There is a
      common set of message types for APIs to use.
    message: A developer-facing error message, which should be in English. Any
      user-facing error message should be localized and sent in the
      google.rpc.Status.details field, or localized by the client.
  """

  @encoding.MapUnrecognizedFields('additionalProperties')
  class DetailsValueListEntry(_messages.Message):
    r"""A DetailsValueListEntry object.

    Messages:
      AdditionalProperty: An additional property for a DetailsValueListEntry
        object.

    Fields:
      additionalProperties: Properties of the object. Contains field @type
        with type URL.
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a DetailsValueListEntry object.

      Fields:
        key: Name of the additional property.
        value: A extra_types.JsonValue attribute.
      """

      key = _messages.StringField(1)
      value = _messages.MessageField('extra_types.JsonValue', 2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  code = _messages.IntegerField(1, variant=_messages.Variant.INT32)
  details = _messages.MessageField('DetailsValueListEntry', 2, repeated=True)
  message = _messages.StringField(3)


class Task(_messages.Message):
  r"""A unit of scheduled work.

  Enums:
    ViewValueValuesEnum: Output only. The view specifies which subset of the
      Task has been returned.

  Fields:
    appEngineHttpRequest: HTTP request that is sent to the App Engine app
      handler.  An App Engine task is a task that has AppEngineHttpRequest
      set.
    createTime: Output only. The time that the task was created.
      `create_time` will be truncated to the nearest second.
    dispatchCount: Output only. The number of attempts dispatched.  This count
      includes attempts which have been dispatched but haven't received a
      response.
    dispatchDeadline: The deadline for requests sent to the worker. If the
      worker does not respond by this deadline then the request is cancelled
      and the attempt is marked as a `DEADLINE_EXCEEDED` failure. Cloud Tasks
      will retry the task according to the RetryConfig.  Note that when the
      request is cancelled, Cloud Tasks will stop listing for the response,
      but whether the worker stops processing depends on the worker. For
      example, if the worker is stuck, it may not react to cancelled requests.
      The default and maximum values depend on the type of request:   * For
      App Engine tasks, 0 indicates that the   request has the default
      deadline. The default deadline depends on the   [scaling
      type](https://cloud.google.com/appengine/docs/standard/go/how-instances-
      are-managed#instance_scaling)   of the service: 10 minutes for standard
      apps with automatic scaling, 24   hours for standard apps with manual
      and basic scaling, and 60 minutes for   flex apps. If the request
      deadline is set, it must be in the interval [15   seconds, 24 hours 15
      seconds]. Regardless of the task's   `dispatch_deadline`, the app
      handler will not run for longer than than   the service's timeout. We
      recommend setting the `dispatch_deadline` to   at most a few seconds
      more than the app handler's timeout. For more   information see
      [Timeouts](https://cloud.google.com/tasks/docs/creating-appengine-
      handlers#timeouts).  `dispatch_deadline` will be truncated to the
      nearest millisecond. The deadline is an approximate deadline.
    firstAttempt: Output only. The status of the task's first attempt.  Only
      dispatch_time will be set. The other Attempt information is not retained
      by Cloud Tasks.
    lastAttempt: Output only. The status of the task's last attempt.
    name: Optionally caller-specified in CreateTask.  The task name.  The task
      name must have the following format: `projects/PROJECT_ID/locations/LOCA
      TION_ID/queues/QUEUE_ID/tasks/TASK_ID`  * `PROJECT_ID` can contain
      letters ([A-Za-z]), numbers ([0-9]),    hyphens (-), colons (:), or
      periods (.).    For more information, see    [Identifying
      projects](https://cloud.google.com/resource-manager/docs/creating-
      managing-projects#identifying_projects) * `LOCATION_ID` is the canonical
      ID for the task's location.    The list of available locations can be
      obtained by calling    ListLocations.    For more information, see
      https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain
      letters ([A-Za-z]), numbers ([0-9]), or   hyphens (-). The maximum
      length is 100 characters. * `TASK_ID` can contain only letters
      ([A-Za-z]), numbers ([0-9]),   hyphens (-), or underscores (_). The
      maximum length is 500 characters.
    responseCount: Output only. The number of attempts which have received a
      response.
    scheduleTime: The time when the task is scheduled to be attempted.  For
      App Engine queues, this is when the task will be attempted or retried.
      `schedule_time` will be truncated to the nearest microsecond.
    view: Output only. The view specifies which subset of the Task has been
      returned.
  """

  class ViewValueValuesEnum(_messages.Enum):
    r"""Output only. The view specifies which subset of the Task has been
    returned.

    Values:
      VIEW_UNSPECIFIED: Unspecified. Defaults to BASIC.
      BASIC: The basic view omits fields which can be large or can contain
        sensitive data.  This view does not include the body in
        AppEngineHttpRequest. Bodies are desirable to return only when needed,
        because they can be large and because of the sensitivity of the data
        that you choose to store in it.
      FULL: All information is returned.  Authorization for FULL requires
        `cloudtasks.tasks.fullView` [Google
        IAM](https://cloud.google.com/iam/) permission on the Queue resource.
    """
    VIEW_UNSPECIFIED = 0
    BASIC = 1
    FULL = 2

  appEngineHttpRequest = _messages.MessageField('AppEngineHttpRequest', 1)
  createTime = _messages.StringField(2)
  dispatchCount = _messages.IntegerField(3, variant=_messages.Variant.INT32)
  dispatchDeadline = _messages.StringField(4)
  firstAttempt = _messages.MessageField('Attempt', 5)
  lastAttempt = _messages.MessageField('Attempt', 6)
  name = _messages.StringField(7)
  responseCount = _messages.IntegerField(8, variant=_messages.Variant.INT32)
  scheduleTime = _messages.StringField(9)
  view = _messages.EnumField('ViewValueValuesEnum', 10)


class TestIamPermissionsRequest(_messages.Message):
  r"""Request message for `TestIamPermissions` method.

  Fields:
    permissions: The set of permissions to check for the `resource`.
      Permissions with wildcards (such as '*' or 'storage.*') are not allowed.
      For more information see [IAM
      Overview](https://cloud.google.com/iam/docs/overview#permissions).
  """

  permissions = _messages.StringField(1, repeated=True)


class TestIamPermissionsResponse(_messages.Message):
  r"""Response message for `TestIamPermissions` method.

  Fields:
    permissions: A subset of `TestPermissionsRequest.permissions` that the
      caller is allowed.
  """

  permissions = _messages.StringField(1, repeated=True)


encoding.AddCustomJsonFieldMapping(
    StandardQueryParameters, 'f__xgafv', '$.xgafv')
encoding.AddCustomJsonEnumMapping(
    StandardQueryParameters.FXgafvValueValuesEnum, '_1', '1')
encoding.AddCustomJsonEnumMapping(
    StandardQueryParameters.FXgafvValueValuesEnum, '_2', '2')
