v1beta1/doc/google/cloud/scheduler/v1beta1/doc_job.js

// Copyright 2019 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.

// Note: this file is purely for documentation. Any contents are not expected
// to be loaded as the JS file.

/**
 * Configuration for a job.
 * The maximum allowed size for a job is 100KB.
 *
 * @property {string} name
 *   Optionally caller-specified in CreateJob, after
 *   which it becomes output only.
 *
 *   The job name. For example:
 *   `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_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 job's location.
 *      The list of available locations can be obtained by calling
 *      ListLocations.
 *      For more information, see https://cloud.google.com/about/locations/.
 *   * `JOB_ID` can contain only letters ([A-Za-z]), numbers ([0-9]),
 *      hyphens (-), or underscores (_). The maximum length is 500 characters.
 *
 * @property {string} description
 *   Optionally caller-specified in CreateJob or
 *   UpdateJob.
 *
 *   A human-readable description for the job. This string must not contain
 *   more than 500 characters.
 *
 * @property {Object} pubsubTarget
 *   Pub/Sub target.
 *
 *   This object should have the same structure as [PubsubTarget]{@link google.cloud.scheduler.v1beta1.PubsubTarget}
 *
 * @property {Object} appEngineHttpTarget
 *   App Engine HTTP target.
 *
 *   This object should have the same structure as [AppEngineHttpTarget]{@link google.cloud.scheduler.v1beta1.AppEngineHttpTarget}
 *
 * @property {Object} httpTarget
 *   HTTP target.
 *
 *   This object should have the same structure as [HttpTarget]{@link google.cloud.scheduler.v1beta1.HttpTarget}
 *
 * @property {string} schedule
 *   Required, except when used with UpdateJob.
 *
 *   Describes the schedule on which the job will be executed.
 *
 *   The schedule can be either of the following types:
 *
 *   * [Crontab](http://en.wikipedia.org/wiki/Cron#Overview)
 *   * English-like
 *   [schedule](https://cloud.google.com/scheduler/docs/configuring/cron-job-schedules)
 *
 *   As a general rule, execution `n + 1` of a job will not begin
 *   until execution `n` has finished. Cloud Scheduler will never
 *   allow two simultaneously outstanding executions. For example,
 *   this implies that if the `n+1`th execution is scheduled to run at
 *   16:00 but the `n`th execution takes until 16:15, the `n+1`th
 *   execution will not start until `16:15`.
 *   A scheduled start time will be delayed if the previous
 *   execution has not ended when its scheduled time occurs.
 *
 *   If retry_count > 0 and a job attempt fails,
 *   the job will be tried a total of retry_count
 *   times, with exponential backoff, until the next scheduled start
 *   time.
 *
 * @property {string} timeZone
 *   Specifies the time zone to be used in interpreting
 *   schedule. The value of this field must be a time
 *   zone name from the [tz database](http://en.wikipedia.org/wiki/Tz_database).
 *
 *   Note that some time zones include a provision for
 *   daylight savings time. The rules for daylight saving time are
 *   determined by the chosen tz. For UTC use the string "utc". If a
 *   time zone is not specified, the default will be in UTC (also known
 *   as GMT).
 *
 * @property {Object} userUpdateTime
 *   Output only. The creation time of the job.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {number} state
 *   Output only. State of the job.
 *
 *   The number should be among the values of [State]{@link google.cloud.scheduler.v1beta1.State}
 *
 * @property {Object} status
 *   Output only. The response from the target for the last attempted execution.
 *
 *   This object should have the same structure as [Status]{@link google.rpc.Status}
 *
 * @property {Object} scheduleTime
 *   Output only. The next time the job is scheduled. Note that this may be a
 *   retry of a previously failed attempt or the next execution time
 *   according to the schedule.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {Object} lastAttemptTime
 *   Output only. The time the last job attempt started.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {Object} retryConfig
 *   Settings that determine the retry behavior.
 *
 *   This object should have the same structure as [RetryConfig]{@link google.cloud.scheduler.v1beta1.RetryConfig}
 *
 * @property {Object} attemptDeadline
 *   The deadline for job attempts. If the request handler does not respond by
 *   this deadline then the request is cancelled and the attempt is marked as a
 *   `DEADLINE_EXCEEDED` failure. The failed attempt can be viewed in
 *   execution logs. Cloud Scheduler will retry the job according
 *   to the RetryConfig.
 *
 *   The allowed duration for this deadline is:
 *
 *   * For HTTP targets, between 15 seconds and 30 minutes.
 *   * For App Engine HTTP targets, between 15
 *     seconds and 24 hours.
 *   * For PubSub targets, this field is ignored.
 *
 *   This object should have the same structure as [Duration]{@link google.protobuf.Duration}
 *
 * @typedef Job
 * @memberof google.cloud.scheduler.v1beta1
 * @see [google.cloud.scheduler.v1beta1.Job definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/scheduler/v1beta1/job.proto}
 */
const Job = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * State of the job.
   *
   * @enum {number}
   * @memberof google.cloud.scheduler.v1beta1
   */
  State: {

    /**
     * Unspecified state.
     */
    STATE_UNSPECIFIED: 0,

    /**
     * The job is executing normally.
     */
    ENABLED: 1,

    /**
     * The job is paused by the user. It will not execute. A user can
     * intentionally pause the job using
     * PauseJobRequest.
     */
    PAUSED: 2,

    /**
     * The job is disabled by the system due to error. The user
     * cannot directly set a job to be disabled.
     */
    DISABLED: 3,

    /**
     * The job state resulting from a failed CloudScheduler.UpdateJob
     * operation. To recover a job from this state, retry
     * CloudScheduler.UpdateJob until a successful response is received.
     */
    UPDATE_FAILED: 4
  }
};

/**
 * Settings that determine the retry behavior.
 *
 * By default, if a job does not complete successfully (meaning that
 * an acknowledgement is not received from the handler, then it will be retried
 * with exponential backoff according to the settings in RetryConfig.
 *
 * @property {number} retryCount
 *   The number of attempts that the system will make to run a job using the
 *   exponential backoff procedure described by
 *   max_doublings.
 *
 *   The default value of retry_count is zero.
 *
 *   If retry_count is zero, a job attempt will *not* be retried if
 *   it fails. Instead the Cloud Scheduler system will wait for the
 *   next scheduled execution time.
 *
 *   If retry_count is set to a non-zero number then Cloud Scheduler
 *   will retry failed attempts, using exponential backoff,
 *   retry_count times, or until the next scheduled execution time,
 *   whichever comes first.
 *
 *   Values greater than 5 and negative values are not allowed.
 *
 * @property {Object} maxRetryDuration
 *   The time limit for retrying a failed job, measured from time when an
 *   execution was first attempted. If specified with
 *   retry_count, the job will be retried until both
 *   limits are reached.
 *
 *   The default value for max_retry_duration is zero, which means retry
 *   duration is unlimited.
 *
 *   This object should have the same structure as [Duration]{@link google.protobuf.Duration}
 *
 * @property {Object} minBackoffDuration
 *   The minimum amount of time to wait before retrying a job after
 *   it fails.
 *
 *   The default value of this field is 5 seconds.
 *
 *   This object should have the same structure as [Duration]{@link google.protobuf.Duration}
 *
 * @property {Object} maxBackoffDuration
 *   The maximum amount of time to wait before retrying a job after
 *   it fails.
 *
 *   The default value of this field is 1 hour.
 *
 *   This object should have the same structure as [Duration]{@link google.protobuf.Duration}
 *
 * @property {number} maxDoublings
 *   The time between retries will double `max_doublings` times.
 *
 *   A job's retry interval starts at
 *   min_backoff_duration, then doubles
 *   `max_doublings` times, then increases linearly, and finally
 *   retries retries at intervals of
 *   max_backoff_duration up to
 *   retry_count times.
 *
 *   For example, if min_backoff_duration is
 *   10s, max_backoff_duration is 300s, and
 *   `max_doublings` is 3, then the a job will first be retried in 10s. The
 *   retry interval will double three times, and then increase linearly by
 *   2^3 * 10s.  Finally, the job will retry at intervals of
 *   max_backoff_duration until the job has
 *   been attempted retry_count times. Thus, the
 *   requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, ....
 *
 *   The default value of this field is 5.
 *
 * @typedef RetryConfig
 * @memberof google.cloud.scheduler.v1beta1
 * @see [google.cloud.scheduler.v1beta1.RetryConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/scheduler/v1beta1/job.proto}
 */
const RetryConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};