# Copyright 2018 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

module Google
  module Cloud
    module Tasks
      module V2beta2
        # Request message for {Google::Cloud::Tasks::V2beta2::CloudTasks::ListQueues ListQueues}.
        # @!attribute [rw] parent
        #   @return [String]
        #     Required.
        #
        #     The location name.
        #     For example: +projects/PROJECT_ID/locations/LOCATION_ID+
        # @!attribute [rw] filter
        #   @return [String]
        #     +filter+ can be used to specify a subset of queues. Any {Google::Cloud::Tasks::V2beta2::Queue 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 "app_engine_http_target: *".
        #
        #     Note that using filters might cause fewer queues than the
        #     requested_page size to be returned.
        # @!attribute [rw] page_size
        #   @return [Integer]
        #     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
        #     {Google::Cloud::Tasks::V2beta2::ListQueuesResponse#next_page_token next_page_token} in the
        #     response to determine if more queues exist.
        # @!attribute [rw] page_token
        #   @return [String]
        #     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
        #     {Google::Cloud::Tasks::V2beta2::ListQueuesResponse#next_page_token next_page_token} returned
        #     from the previous call to {Google::Cloud::Tasks::V2beta2::CloudTasks::ListQueues ListQueues}
        #     method. It is an error to switch the value of the
        #     {Google::Cloud::Tasks::V2beta2::ListQueuesRequest#filter filter} while iterating through pages.
        class ListQueuesRequest; end

        # Response message for {Google::Cloud::Tasks::V2beta2::CloudTasks::ListQueues ListQueues}.
        # @!attribute [rw] queues
        #   @return [Array<Google::Cloud::Tasks::V2beta2::Queue>]
        #     The list of queues.
        # @!attribute [rw] next_page_token
        #   @return [String]
        #     A token to retrieve next page of results.
        #
        #     To return the next page of results, call
        #     {Google::Cloud::Tasks::V2beta2::CloudTasks::ListQueues ListQueues} with this value as the
        #     {Google::Cloud::Tasks::V2beta2::ListQueuesRequest#page_token page_token}.
        #
        #     If the next_page_token is empty, there are no more results.
        #
        #     The page token is valid for only 2 hours.
        class ListQueuesResponse; end

        # Request message for {Google::Cloud::Tasks::V2beta2::CloudTasks::GetQueue GetQueue}.
        # @!attribute [rw] name
        #   @return [String]
        #     Required.
        #
        #     The resource name of the queue. For example:
        #     +projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID+
        class GetQueueRequest; end

        # Request message for {Google::Cloud::Tasks::V2beta2::CloudTasks::CreateQueue CreateQueue}.
        # @!attribute [rw] parent
        #   @return [String]
        #     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
        #     {Google::Cloud::Location::Locations::ListLocations ListLocations}.
        # @!attribute [rw] queue
        #   @return [Google::Cloud::Tasks::V2beta2::Queue]
        #     Required.
        #
        #     The queue to create.
        #
        #     {Google::Cloud::Tasks::V2beta2::Queue#name Queue's name} cannot be the same as an existing queue.
        class CreateQueueRequest; end

        # Request message for {Google::Cloud::Tasks::V2beta2::CloudTasks::UpdateQueue UpdateQueue}.
        # @!attribute [rw] queue
        #   @return [Google::Cloud::Tasks::V2beta2::Queue]
        #     Required.
        #
        #     The queue to create or update.
        #
        #     The queue's {Google::Cloud::Tasks::V2beta2::Queue#name name} must be specified.
        #
        #     Output only fields cannot be modified using UpdateQueue.
        #     Any value specified for an output only field will be ignored.
        #     The queue's {Google::Cloud::Tasks::V2beta2::Queue#name name} cannot be changed.
        # @!attribute [rw] update_mask
        #   @return [Google::Protobuf::FieldMask]
        #     A mask used to specify which fields of the queue are being updated.
        #
        #     If empty, then all fields will be updated.
        class UpdateQueueRequest; end

        # Request message for {Google::Cloud::Tasks::V2beta2::CloudTasks::DeleteQueue DeleteQueue}.
        # @!attribute [rw] name
        #   @return [String]
        #     Required.
        #
        #     The queue name. For example:
        #     +projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID+
        class DeleteQueueRequest; end

        # Request message for {Google::Cloud::Tasks::V2beta2::CloudTasks::PurgeQueue PurgeQueue}.
        # @!attribute [rw] name
        #   @return [String]
        #     Required.
        #
        #     The queue name. For example:
        #     +projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID+
        class PurgeQueueRequest; end

        # Request message for {Google::Cloud::Tasks::V2beta2::CloudTasks::PauseQueue PauseQueue}.
        # @!attribute [rw] name
        #   @return [String]
        #     Required.
        #
        #     The queue name. For example:
        #     +projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID+
        class PauseQueueRequest; end

        # Request message for {Google::Cloud::Tasks::V2beta2::CloudTasks::ResumeQueue ResumeQueue}.
        # @!attribute [rw] name
        #   @return [String]
        #     Required.
        #
        #     The queue name. For example:
        #     +projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID+
        class ResumeQueueRequest; end

        # Request message for listing tasks using {Google::Cloud::Tasks::V2beta2::CloudTasks::ListTasks ListTasks}.
        # @!attribute [rw] parent
        #   @return [String]
        #     Required.
        #
        #     The queue name. For example:
        #     +projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID+
        # @!attribute [rw] response_view
        #   @return [Google::Cloud::Tasks::V2beta2::Task::View]
        #     The response_view specifies which subset of the {Google::Cloud::Tasks::V2beta2::Task Task} will be
        #     returned.
        #
        #     By default response_view is {Google::Cloud::Tasks::V2beta2::Task::View::BASIC 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 {Google::Cloud::Tasks::V2beta2::Task::View::FULL FULL} requires
        #     +cloudtasks.tasks.fullView+ [Google IAM](https://cloud.google.com/iam/)
        #     permission on the {Google::Cloud::Tasks::V2beta2::Task Task} resource.
        # @!attribute [rw] page_size
        #   @return [Integer]
        #     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
        #     {Google::Cloud::Tasks::V2beta2::ListTasksResponse#next_page_token next_page_token} in the
        #     response to determine if more tasks exist.
        # @!attribute [rw] page_token
        #   @return [String]
        #     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
        #     {Google::Cloud::Tasks::V2beta2::ListTasksResponse#next_page_token next_page_token} returned
        #     from the previous call to {Google::Cloud::Tasks::V2beta2::CloudTasks::ListTasks ListTasks}
        #     method.
        #
        #     The page token is valid for only 2 hours.
        class ListTasksRequest; end

        # Response message for listing tasks using {Google::Cloud::Tasks::V2beta2::CloudTasks::ListTasks ListTasks}.
        # @!attribute [rw] tasks
        #   @return [Array<Google::Cloud::Tasks::V2beta2::Task>]
        #     The list of tasks.
        # @!attribute [rw] next_page_token
        #   @return [String]
        #     A token to retrieve next page of results.
        #
        #     To return the next page of results, call
        #     {Google::Cloud::Tasks::V2beta2::CloudTasks::ListTasks ListTasks} with this value as the
        #     {Google::Cloud::Tasks::V2beta2::ListTasksRequest#page_token page_token}.
        #
        #     If the next_page_token is empty, there are no more results.
        class ListTasksResponse; end

        # Request message for getting a task using {Google::Cloud::Tasks::V2beta2::CloudTasks::GetTask GetTask}.
        # @!attribute [rw] name
        #   @return [String]
        #     Required.
        #
        #     The task name. For example:
        #     +projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID+
        # @!attribute [rw] response_view
        #   @return [Google::Cloud::Tasks::V2beta2::Task::View]
        #     The response_view specifies which subset of the {Google::Cloud::Tasks::V2beta2::Task Task} will be
        #     returned.
        #
        #     By default response_view is {Google::Cloud::Tasks::V2beta2::Task::View::BASIC 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 {Google::Cloud::Tasks::V2beta2::Task::View::FULL FULL} requires
        #     +cloudtasks.tasks.fullView+ [Google IAM](https://cloud.google.com/iam/)
        #     permission on the {Google::Cloud::Tasks::V2beta2::Task Task} resource.
        class GetTaskRequest; end

        # Request message for {Google::Cloud::Tasks::V2beta2::CloudTasks::CreateTask CreateTask}.
        # @!attribute [rw] parent
        #   @return [String]
        #     Required.
        #
        #     The queue name. For example:
        #     +projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID+
        #
        #     The queue must already exist.
        # @!attribute [rw] task
        #   @return [Google::Cloud::Tasks::V2beta2::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 {Google::Cloud::Tasks::V2beta2::Task#name 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
        #     {Google::Cloud::Tasks::V2beta2::Task#name response}.
        #
        #     If {Google::Cloud::Tasks::V2beta2::Task#schedule_time 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 completed recently then the call will fail
        #     with {Google::Rpc::Code::ALREADY_EXISTS 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 completed. 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 completed.
        #
        #     Because there is an extra lookup cost to identify duplicate task
        #     names, these {Google::Cloud::Tasks::V2beta2::CloudTasks::CreateTask 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.
        # @!attribute [rw] response_view
        #   @return [Google::Cloud::Tasks::V2beta2::Task::View]
        #     The response_view specifies which subset of the {Google::Cloud::Tasks::V2beta2::Task Task} will be
        #     returned.
        #
        #     By default response_view is {Google::Cloud::Tasks::V2beta2::Task::View::BASIC 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 {Google::Cloud::Tasks::V2beta2::Task::View::FULL FULL} requires
        #     +cloudtasks.tasks.fullView+ [Google IAM](https://cloud.google.com/iam/)
        #     permission on the {Google::Cloud::Tasks::V2beta2::Task Task} resource.
        class CreateTaskRequest; end

        # Request message for deleting a task using
        # {Google::Cloud::Tasks::V2beta2::CloudTasks::DeleteTask DeleteTask}.
        # @!attribute [rw] name
        #   @return [String]
        #     Required.
        #
        #     The task name. For example:
        #     +projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID+
        class DeleteTaskRequest; end

        # Request message for leasing tasks using {Google::Cloud::Tasks::V2beta2::CloudTasks::LeaseTasks LeaseTasks}.
        # @!attribute [rw] parent
        #   @return [String]
        #     Required.
        #
        #     The queue name. For example:
        #     +projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID+
        # @!attribute [rw] max_tasks
        #   @return [Integer]
        #     The maximum number of tasks to lease.
        #
        #     The system will make a best effort to return as close to as
        #     +max_tasks+ as possible.
        #
        #     The largest that +max_tasks+ can be is 1000.
        # @!attribute [rw] lease_duration
        #   @return [Google::Protobuf::Duration]
        #     After the worker has successfully finished the work associated
        #     with the task, the worker must call via
        #     {Google::Cloud::Tasks::V2beta2::CloudTasks::AcknowledgeTask AcknowledgeTask} before the
        #     {Google::Cloud::Tasks::V2beta2::Task#schedule_time schedule_time}. Otherwise the task will be
        #     returned to a later {Google::Cloud::Tasks::V2beta2::CloudTasks::LeaseTasks LeaseTasks} call so
        #     that another worker can retry it.
        #
        #     The maximum lease duration is 1 week.
        #     +lease_duration+ will be truncated to the nearest second.
        # @!attribute [rw] response_view
        #   @return [Google::Cloud::Tasks::V2beta2::Task::View]
        #     The response_view specifies which subset of the {Google::Cloud::Tasks::V2beta2::Task Task} will be
        #     returned.
        #
        #     By default response_view is {Google::Cloud::Tasks::V2beta2::Task::View::BASIC 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 {Google::Cloud::Tasks::V2beta2::Task::View::FULL FULL} requires
        #     +cloudtasks.tasks.fullView+ [Google IAM](https://cloud.google.com/iam/)
        #     permission on the {Google::Cloud::Tasks::V2beta2::Task Task} resource.
        # @!attribute [rw] filter
        #   @return [String]
        #     +filter+ can be used to specify a subset of tasks to lease.
        #
        #     When +filter+ is set to +tag=<my-tag>+ then the
        #     {Google::Cloud::Tasks::V2beta2::LeaseTasksResponse response} will contain only tasks whose
        #     {Google::Cloud::Tasks::V2beta2::PullMessage#tag tag} is equal to +<my-tag>+. +<my-tag>+ must be
        #     less than 500 characters.
        #
        #     When +filter+ is set to +tag_function=oldest_tag()+, only tasks which have
        #     the same tag as the task with the oldest
        #     {Google::Cloud::Tasks::V2beta2::Task#schedule_time schedule_time} will be returned.
        #
        #     Grammar Syntax:
        #
        #     * +filter = "tag=" tag | "tag_function=" function+
        #
        #     * +tag = string+
        #
        #     * +function = "oldest_tag()"+
        #
        #     The +oldest_tag()+ function returns tasks which have the same tag as the
        #     oldest task (ordered by schedule time).
        #
        #     SDK compatibility: Although the SDK allows tags to be either
        #     string or
        #     [bytes](https://cloud.google.com/appengine/docs/standard/java/javadoc/com/google/appengine/api/taskqueue/TaskOptions.html#tag-byte:A-),
        #     only UTF-8 encoded tags can be used in Cloud Tasks. Tag which
        #     aren't UTF-8 encoded can't be used in the
        #     {Google::Cloud::Tasks::V2beta2::LeaseTasksRequest#filter filter} and the task's
        #     {Google::Cloud::Tasks::V2beta2::PullMessage#tag tag} will be displayed as empty in Cloud Tasks.
        class LeaseTasksRequest; end

        # Response message for leasing tasks using {Google::Cloud::Tasks::V2beta2::CloudTasks::LeaseTasks LeaseTasks}.
        # @!attribute [rw] tasks
        #   @return [Array<Google::Cloud::Tasks::V2beta2::Task>]
        #     The leased tasks.
        class LeaseTasksResponse; end

        # Request message for acknowledging a task using
        # {Google::Cloud::Tasks::V2beta2::CloudTasks::AcknowledgeTask AcknowledgeTask}.
        # @!attribute [rw] name
        #   @return [String]
        #     Required.
        #
        #     The task name. For example:
        #     +projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID+
        # @!attribute [rw] schedule_time
        #   @return [Google::Protobuf::Timestamp]
        #     Required.
        #
        #     The task's current schedule time, available in the
        #     {Google::Cloud::Tasks::V2beta2::Task#schedule_time schedule_time} returned by
        #     {Google::Cloud::Tasks::V2beta2::CloudTasks::LeaseTasks LeaseTasks} response or
        #     {Google::Cloud::Tasks::V2beta2::CloudTasks::RenewLease RenewLease} response. This restriction is
        #     to ensure that your worker currently holds the lease.
        class AcknowledgeTaskRequest; end

        # Request message for renewing a lease using
        # {Google::Cloud::Tasks::V2beta2::CloudTasks::RenewLease RenewLease}.
        # @!attribute [rw] name
        #   @return [String]
        #     Required.
        #
        #     The task name. For example:
        #     +projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID+
        # @!attribute [rw] schedule_time
        #   @return [Google::Protobuf::Timestamp]
        #     Required.
        #
        #     The task's current schedule time, available in the
        #     {Google::Cloud::Tasks::V2beta2::Task#schedule_time schedule_time} returned by
        #     {Google::Cloud::Tasks::V2beta2::CloudTasks::LeaseTasks LeaseTasks} response or
        #     {Google::Cloud::Tasks::V2beta2::CloudTasks::RenewLease RenewLease} response. This restriction is
        #     to ensure that your worker currently holds the lease.
        # @!attribute [rw] lease_duration
        #   @return [Google::Protobuf::Duration]
        #     Required.
        #
        #     The desired new lease duration, starting from now.
        #
        #
        #     The maximum lease duration is 1 week.
        #     +lease_duration+ will be truncated to the nearest second.
        # @!attribute [rw] response_view
        #   @return [Google::Cloud::Tasks::V2beta2::Task::View]
        #     The response_view specifies which subset of the {Google::Cloud::Tasks::V2beta2::Task Task} will be
        #     returned.
        #
        #     By default response_view is {Google::Cloud::Tasks::V2beta2::Task::View::BASIC 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 {Google::Cloud::Tasks::V2beta2::Task::View::FULL FULL} requires
        #     +cloudtasks.tasks.fullView+ [Google IAM](https://cloud.google.com/iam/)
        #     permission on the {Google::Cloud::Tasks::V2beta2::Task Task} resource.
        class RenewLeaseRequest; end

        # Request message for canceling a lease using
        # {Google::Cloud::Tasks::V2beta2::CloudTasks::CancelLease CancelLease}.
        # @!attribute [rw] name
        #   @return [String]
        #     Required.
        #
        #     The task name. For example:
        #     +projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID+
        # @!attribute [rw] schedule_time
        #   @return [Google::Protobuf::Timestamp]
        #     Required.
        #
        #     The task's current schedule time, available in the
        #     {Google::Cloud::Tasks::V2beta2::Task#schedule_time schedule_time} returned by
        #     {Google::Cloud::Tasks::V2beta2::CloudTasks::LeaseTasks LeaseTasks} response or
        #     {Google::Cloud::Tasks::V2beta2::CloudTasks::RenewLease RenewLease} response. This restriction is
        #     to ensure that your worker currently holds the lease.
        # @!attribute [rw] response_view
        #   @return [Google::Cloud::Tasks::V2beta2::Task::View]
        #     The response_view specifies which subset of the {Google::Cloud::Tasks::V2beta2::Task Task} will be
        #     returned.
        #
        #     By default response_view is {Google::Cloud::Tasks::V2beta2::Task::View::BASIC 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 {Google::Cloud::Tasks::V2beta2::Task::View::FULL FULL} requires
        #     +cloudtasks.tasks.fullView+ [Google IAM](https://cloud.google.com/iam/)
        #     permission on the {Google::Cloud::Tasks::V2beta2::Task Task} resource.
        class CancelLeaseRequest; end

        # Request message for forcing a task to run now using
        # {Google::Cloud::Tasks::V2beta2::CloudTasks::RunTask RunTask}.
        # @!attribute [rw] name
        #   @return [String]
        #     Required.
        #
        #     The task name. For example:
        #     +projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID+
        # @!attribute [rw] response_view
        #   @return [Google::Cloud::Tasks::V2beta2::Task::View]
        #     The response_view specifies which subset of the {Google::Cloud::Tasks::V2beta2::Task Task} will be
        #     returned.
        #
        #     By default response_view is {Google::Cloud::Tasks::V2beta2::Task::View::BASIC 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 {Google::Cloud::Tasks::V2beta2::Task::View::FULL FULL} requires
        #     +cloudtasks.tasks.fullView+ [Google IAM](https://cloud.google.com/iam/)
        #     permission on the {Google::Cloud::Tasks::V2beta2::Task Task} resource.
        class RunTaskRequest; end
      end
    end
  end
end