// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: google/cloud/scheduler/v1/target.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Google.Cloud.Scheduler.V1 {

  /// <summary>Holder for reflection information generated from google/cloud/scheduler/v1/target.proto</summary>
  public static partial class TargetReflection {

    #region Descriptor
    /// <summary>File descriptor for google/cloud/scheduler/v1/target.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static TargetReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CiZnb29nbGUvY2xvdWQvc2NoZWR1bGVyL3YxL3RhcmdldC5wcm90bxIZZ29v",
            "Z2xlLmNsb3VkLnNjaGVkdWxlci52MRoZZ29vZ2xlL2FwaS9yZXNvdXJjZS5w",
            "cm90bxocZ29vZ2xlL2FwaS9hbm5vdGF0aW9ucy5wcm90byLqAgoKSHR0cFRh",
            "cmdldBILCgN1cmkYASABKAkSOgoLaHR0cF9tZXRob2QYAiABKA4yJS5nb29n",
            "bGUuY2xvdWQuc2NoZWR1bGVyLnYxLkh0dHBNZXRob2QSQwoHaGVhZGVycxgD",
            "IAMoCzIyLmdvb2dsZS5jbG91ZC5zY2hlZHVsZXIudjEuSHR0cFRhcmdldC5I",
            "ZWFkZXJzRW50cnkSDAoEYm9keRgEIAEoDBI8CgtvYXV0aF90b2tlbhgFIAEo",
            "CzIlLmdvb2dsZS5jbG91ZC5zY2hlZHVsZXIudjEuT0F1dGhUb2tlbkgAEjoK",
            "Cm9pZGNfdG9rZW4YBiABKAsyJC5nb29nbGUuY2xvdWQuc2NoZWR1bGVyLnYx",
            "Lk9pZGNUb2tlbkgAGi4KDEhlYWRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoF",
            "dmFsdWUYAiABKAk6AjgBQhYKFGF1dGhvcml6YXRpb25faGVhZGVyIrwCChNB",
            "cHBFbmdpbmVIdHRwVGFyZ2V0EjoKC2h0dHBfbWV0aG9kGAEgASgOMiUuZ29v",
            "Z2xlLmNsb3VkLnNjaGVkdWxlci52MS5IdHRwTWV0aG9kEkcKEmFwcF9lbmdp",
            "bmVfcm91dGluZxgCIAEoCzIrLmdvb2dsZS5jbG91ZC5zY2hlZHVsZXIudjEu",
            "QXBwRW5naW5lUm91dGluZxIUCgxyZWxhdGl2ZV91cmkYAyABKAkSTAoHaGVh",
            "ZGVycxgEIAMoCzI7Lmdvb2dsZS5jbG91ZC5zY2hlZHVsZXIudjEuQXBwRW5n",
            "aW5lSHR0cFRhcmdldC5IZWFkZXJzRW50cnkSDAoEYm9keRgFIAEoDBouCgxI",
            "ZWFkZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLS",
            "AQoMUHVic3ViVGFyZ2V0EjQKCnRvcGljX25hbWUYASABKAlCIPpBHQobcHVi",
            "c3ViLmdvb2dsZWFwaXMuY29tL1RvcGljEgwKBGRhdGEYAyABKAwSSwoKYXR0",
            "cmlidXRlcxgEIAMoCzI3Lmdvb2dsZS5jbG91ZC5zY2hlZHVsZXIudjEuUHVi",
            "c3ViVGFyZ2V0LkF0dHJpYnV0ZXNFbnRyeRoxCg9BdHRyaWJ1dGVzRW50cnkS",
            "CwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJUChBBcHBFbmdpbmVS",
            "b3V0aW5nEg8KB3NlcnZpY2UYASABKAkSDwoHdmVyc2lvbhgCIAEoCRIQCghp",
            "bnN0YW5jZRgDIAEoCRIMCgRob3N0GAQgASgJIjoKCk9BdXRoVG9rZW4SHQoV",
            "c2VydmljZV9hY2NvdW50X2VtYWlsGAEgASgJEg0KBXNjb3BlGAIgASgJIjwK",
            "CU9pZGNUb2tlbhIdChVzZXJ2aWNlX2FjY291bnRfZW1haWwYASABKAkSEAoI",
            "YXVkaWVuY2UYAiABKAkqcwoKSHR0cE1ldGhvZBIbChdIVFRQX01FVEhPRF9V",
            "TlNQRUNJRklFRBAAEggKBFBPU1QQARIHCgNHRVQQAhIICgRIRUFEEAMSBwoD",
            "UFVUEAQSCgoGREVMRVRFEAUSCQoFUEFUQ0gQBhILCgdPUFRJT05TEAdCtQEK",
            "HWNvbS5nb29nbGUuY2xvdWQuc2NoZWR1bGVyLnYxQgtUYXJnZXRQcm90b1AB",
            "WkJnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2Nsb3Vk",
            "L3NjaGVkdWxlci92MTtzY2hlZHVsZXLqQUAKG3B1YnN1Yi5nb29nbGVhcGlz",
            "LmNvbS9Ub3BpYxIhcHJvamVjdHMve3Byb2plY3R9L3RvcGljcy97dG9waWN9",
            "YgZwcm90bzM="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Google.Api.ResourceReflection.Descriptor, global::Google.Api.AnnotationsReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Google.Cloud.Scheduler.V1.HttpMethod), }, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Scheduler.V1.HttpTarget), global::Google.Cloud.Scheduler.V1.HttpTarget.Parser, new[]{ "Uri", "HttpMethod", "Headers", "Body", "OauthToken", "OidcToken" }, new[]{ "AuthorizationHeader" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Scheduler.V1.AppEngineHttpTarget), global::Google.Cloud.Scheduler.V1.AppEngineHttpTarget.Parser, new[]{ "HttpMethod", "AppEngineRouting", "RelativeUri", "Headers", "Body" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Scheduler.V1.PubsubTarget), global::Google.Cloud.Scheduler.V1.PubsubTarget.Parser, new[]{ "TopicName", "Data", "Attributes" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Scheduler.V1.AppEngineRouting), global::Google.Cloud.Scheduler.V1.AppEngineRouting.Parser, new[]{ "Service", "Version", "Instance", "Host" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Scheduler.V1.OAuthToken), global::Google.Cloud.Scheduler.V1.OAuthToken.Parser, new[]{ "ServiceAccountEmail", "Scope" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Scheduler.V1.OidcToken), global::Google.Cloud.Scheduler.V1.OidcToken.Parser, new[]{ "ServiceAccountEmail", "Audience" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Enums
  /// <summary>
  /// The HTTP method used to execute the job.
  /// </summary>
  public enum HttpMethod {
    /// <summary>
    /// HTTP method unspecified. Defaults to POST.
    /// </summary>
    [pbr::OriginalName("HTTP_METHOD_UNSPECIFIED")] Unspecified = 0,
    /// <summary>
    /// HTTP POST
    /// </summary>
    [pbr::OriginalName("POST")] Post = 1,
    /// <summary>
    /// HTTP GET
    /// </summary>
    [pbr::OriginalName("GET")] Get = 2,
    /// <summary>
    /// HTTP HEAD
    /// </summary>
    [pbr::OriginalName("HEAD")] Head = 3,
    /// <summary>
    /// HTTP PUT
    /// </summary>
    [pbr::OriginalName("PUT")] Put = 4,
    /// <summary>
    /// HTTP DELETE
    /// </summary>
    [pbr::OriginalName("DELETE")] Delete = 5,
    /// <summary>
    /// HTTP PATCH
    /// </summary>
    [pbr::OriginalName("PATCH")] Patch = 6,
    /// <summary>
    /// HTTP OPTIONS
    /// </summary>
    [pbr::OriginalName("OPTIONS")] Options = 7,
  }

  #endregion

  #region Messages
  /// <summary>
  /// Http target. The job will be pushed to the job handler by means of
  /// an HTTP request via an [http_method][google.cloud.scheduler.v1.HttpTarget.http_method] such as HTTP
  /// POST, HTTP GET, etc. The job is acknowledged by means of an HTTP
  /// response code in the range [200 - 299]. A failure to receive a response
  /// constitutes a failed execution. For a redirected request, the response
  /// returned by the redirected request is considered.
  /// </summary>
  public sealed partial class HttpTarget : pb::IMessage<HttpTarget>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<HttpTarget> _parser = new pb::MessageParser<HttpTarget>(() => new HttpTarget());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<HttpTarget> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Cloud.Scheduler.V1.TargetReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public HttpTarget() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public HttpTarget(HttpTarget other) : this() {
      uri_ = other.uri_;
      httpMethod_ = other.httpMethod_;
      headers_ = other.headers_.Clone();
      body_ = other.body_;
      switch (other.AuthorizationHeaderCase) {
        case AuthorizationHeaderOneofCase.OauthToken:
          OauthToken = other.OauthToken.Clone();
          break;
        case AuthorizationHeaderOneofCase.OidcToken:
          OidcToken = other.OidcToken.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public HttpTarget Clone() {
      return new HttpTarget(this);
    }

    /// <summary>Field number for the "uri" field.</summary>
    public const int UriFieldNumber = 1;
    private string uri_ = "";
    /// <summary>
    /// Required. The full URI path that the request will be sent to. This string
    /// must begin with either "http://" or "https://". Some examples of
    /// valid values for [uri][google.cloud.scheduler.v1.HttpTarget.uri] are:
    /// `http://acme.com` and `https://acme.com/sales:8080`. Cloud Scheduler will
    /// encode some characters for safety and compatibility. The maximum allowed
    /// URL length is 2083 characters after encoding.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Uri {
      get { return uri_; }
      set {
        uri_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "http_method" field.</summary>
    public const int HttpMethodFieldNumber = 2;
    private global::Google.Cloud.Scheduler.V1.HttpMethod httpMethod_ = global::Google.Cloud.Scheduler.V1.HttpMethod.Unspecified;
    /// <summary>
    /// Which HTTP method to use for the request.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Cloud.Scheduler.V1.HttpMethod HttpMethod {
      get { return httpMethod_; }
      set {
        httpMethod_ = value;
      }
    }

    /// <summary>Field number for the "headers" field.</summary>
    public const int HeadersFieldNumber = 3;
    private static readonly pbc::MapField<string, string>.Codec _map_headers_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForString(18, ""), 26);
    private readonly pbc::MapField<string, string> headers_ = new pbc::MapField<string, string>();
    /// <summary>
    /// The user can specify HTTP request headers to send with the job's
    /// HTTP request. This map contains the header field names and
    /// values. Repeated headers are not supported, but a header value can
    /// contain commas. These headers represent a subset of the headers
    /// that will accompany the job's HTTP request. Some HTTP request
    /// headers will be ignored or replaced. A partial list of headers that
    /// will be ignored or replaced is below:
    /// - Host: This will be computed by Cloud Scheduler and derived from
    /// [uri][google.cloud.scheduler.v1.HttpTarget.uri].
    /// * `Content-Length`: This will be computed by Cloud Scheduler.
    /// * `User-Agent`: This will be set to `"Google-Cloud-Scheduler"`.
    /// * `X-Google-*`: Google internal use only.
    /// * `X-AppEngine-*`: Google internal use only.
    ///
    /// The total size of headers must be less than 80KB.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<string, string> Headers {
      get { return headers_; }
    }

    /// <summary>Field number for the "body" field.</summary>
    public const int BodyFieldNumber = 4;
    private pb::ByteString body_ = pb::ByteString.Empty;
    /// <summary>
    /// HTTP request body. A request body is allowed only if the HTTP
    /// method is POST, PUT, or PATCH. It is an error to set body on a job with an
    /// incompatible [HttpMethod][google.cloud.scheduler.v1.HttpMethod].
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString Body {
      get { return body_; }
      set {
        body_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "oauth_token" field.</summary>
    public const int OauthTokenFieldNumber = 5;
    /// <summary>
    /// If specified, an
    /// [OAuth token](https://developers.google.com/identity/protocols/OAuth2)
    /// will be generated and attached as an `Authorization` header in the HTTP
    /// request.
    ///
    /// This type of authorization should generally only be used when calling
    /// Google APIs hosted on *.googleapis.com.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Cloud.Scheduler.V1.OAuthToken OauthToken {
      get { return authorizationHeaderCase_ == AuthorizationHeaderOneofCase.OauthToken ? (global::Google.Cloud.Scheduler.V1.OAuthToken) authorizationHeader_ : null; }
      set {
        authorizationHeader_ = value;
        authorizationHeaderCase_ = value == null ? AuthorizationHeaderOneofCase.None : AuthorizationHeaderOneofCase.OauthToken;
      }
    }

    /// <summary>Field number for the "oidc_token" field.</summary>
    public const int OidcTokenFieldNumber = 6;
    /// <summary>
    /// If specified, an
    /// [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect)
    /// token will be generated and attached as an `Authorization` header in the
    /// HTTP request.
    ///
    /// This type of authorization can be used for many scenarios, including
    /// calling Cloud Run, or endpoints where you intend to validate the token
    /// yourself.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Cloud.Scheduler.V1.OidcToken OidcToken {
      get { return authorizationHeaderCase_ == AuthorizationHeaderOneofCase.OidcToken ? (global::Google.Cloud.Scheduler.V1.OidcToken) authorizationHeader_ : null; }
      set {
        authorizationHeader_ = value;
        authorizationHeaderCase_ = value == null ? AuthorizationHeaderOneofCase.None : AuthorizationHeaderOneofCase.OidcToken;
      }
    }

    private object authorizationHeader_;
    /// <summary>Enum of possible cases for the "authorization_header" oneof.</summary>
    public enum AuthorizationHeaderOneofCase {
      None = 0,
      OauthToken = 5,
      OidcToken = 6,
    }
    private AuthorizationHeaderOneofCase authorizationHeaderCase_ = AuthorizationHeaderOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AuthorizationHeaderOneofCase AuthorizationHeaderCase {
      get { return authorizationHeaderCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearAuthorizationHeader() {
      authorizationHeaderCase_ = AuthorizationHeaderOneofCase.None;
      authorizationHeader_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as HttpTarget);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(HttpTarget other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Uri != other.Uri) return false;
      if (HttpMethod != other.HttpMethod) return false;
      if (!Headers.Equals(other.Headers)) return false;
      if (Body != other.Body) return false;
      if (!object.Equals(OauthToken, other.OauthToken)) return false;
      if (!object.Equals(OidcToken, other.OidcToken)) return false;
      if (AuthorizationHeaderCase != other.AuthorizationHeaderCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Uri.Length != 0) hash ^= Uri.GetHashCode();
      if (HttpMethod != global::Google.Cloud.Scheduler.V1.HttpMethod.Unspecified) hash ^= HttpMethod.GetHashCode();
      hash ^= Headers.GetHashCode();
      if (Body.Length != 0) hash ^= Body.GetHashCode();
      if (authorizationHeaderCase_ == AuthorizationHeaderOneofCase.OauthToken) hash ^= OauthToken.GetHashCode();
      if (authorizationHeaderCase_ == AuthorizationHeaderOneofCase.OidcToken) hash ^= OidcToken.GetHashCode();
      hash ^= (int) authorizationHeaderCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Uri.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Uri);
      }
      if (HttpMethod != global::Google.Cloud.Scheduler.V1.HttpMethod.Unspecified) {
        output.WriteRawTag(16);
        output.WriteEnum((int) HttpMethod);
      }
      headers_.WriteTo(output, _map_headers_codec);
      if (Body.Length != 0) {
        output.WriteRawTag(34);
        output.WriteBytes(Body);
      }
      if (authorizationHeaderCase_ == AuthorizationHeaderOneofCase.OauthToken) {
        output.WriteRawTag(42);
        output.WriteMessage(OauthToken);
      }
      if (authorizationHeaderCase_ == AuthorizationHeaderOneofCase.OidcToken) {
        output.WriteRawTag(50);
        output.WriteMessage(OidcToken);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Uri.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Uri);
      }
      if (HttpMethod != global::Google.Cloud.Scheduler.V1.HttpMethod.Unspecified) {
        output.WriteRawTag(16);
        output.WriteEnum((int) HttpMethod);
      }
      headers_.WriteTo(ref output, _map_headers_codec);
      if (Body.Length != 0) {
        output.WriteRawTag(34);
        output.WriteBytes(Body);
      }
      if (authorizationHeaderCase_ == AuthorizationHeaderOneofCase.OauthToken) {
        output.WriteRawTag(42);
        output.WriteMessage(OauthToken);
      }
      if (authorizationHeaderCase_ == AuthorizationHeaderOneofCase.OidcToken) {
        output.WriteRawTag(50);
        output.WriteMessage(OidcToken);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Uri.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uri);
      }
      if (HttpMethod != global::Google.Cloud.Scheduler.V1.HttpMethod.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) HttpMethod);
      }
      size += headers_.CalculateSize(_map_headers_codec);
      if (Body.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Body);
      }
      if (authorizationHeaderCase_ == AuthorizationHeaderOneofCase.OauthToken) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(OauthToken);
      }
      if (authorizationHeaderCase_ == AuthorizationHeaderOneofCase.OidcToken) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(OidcToken);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(HttpTarget other) {
      if (other == null) {
        return;
      }
      if (other.Uri.Length != 0) {
        Uri = other.Uri;
      }
      if (other.HttpMethod != global::Google.Cloud.Scheduler.V1.HttpMethod.Unspecified) {
        HttpMethod = other.HttpMethod;
      }
      headers_.Add(other.headers_);
      if (other.Body.Length != 0) {
        Body = other.Body;
      }
      switch (other.AuthorizationHeaderCase) {
        case AuthorizationHeaderOneofCase.OauthToken:
          if (OauthToken == null) {
            OauthToken = new global::Google.Cloud.Scheduler.V1.OAuthToken();
          }
          OauthToken.MergeFrom(other.OauthToken);
          break;
        case AuthorizationHeaderOneofCase.OidcToken:
          if (OidcToken == null) {
            OidcToken = new global::Google.Cloud.Scheduler.V1.OidcToken();
          }
          OidcToken.MergeFrom(other.OidcToken);
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Uri = input.ReadString();
            break;
          }
          case 16: {
            HttpMethod = (global::Google.Cloud.Scheduler.V1.HttpMethod) input.ReadEnum();
            break;
          }
          case 26: {
            headers_.AddEntriesFrom(input, _map_headers_codec);
            break;
          }
          case 34: {
            Body = input.ReadBytes();
            break;
          }
          case 42: {
            global::Google.Cloud.Scheduler.V1.OAuthToken subBuilder = new global::Google.Cloud.Scheduler.V1.OAuthToken();
            if (authorizationHeaderCase_ == AuthorizationHeaderOneofCase.OauthToken) {
              subBuilder.MergeFrom(OauthToken);
            }
            input.ReadMessage(subBuilder);
            OauthToken = subBuilder;
            break;
          }
          case 50: {
            global::Google.Cloud.Scheduler.V1.OidcToken subBuilder = new global::Google.Cloud.Scheduler.V1.OidcToken();
            if (authorizationHeaderCase_ == AuthorizationHeaderOneofCase.OidcToken) {
              subBuilder.MergeFrom(OidcToken);
            }
            input.ReadMessage(subBuilder);
            OidcToken = subBuilder;
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Uri = input.ReadString();
            break;
          }
          case 16: {
            HttpMethod = (global::Google.Cloud.Scheduler.V1.HttpMethod) input.ReadEnum();
            break;
          }
          case 26: {
            headers_.AddEntriesFrom(ref input, _map_headers_codec);
            break;
          }
          case 34: {
            Body = input.ReadBytes();
            break;
          }
          case 42: {
            global::Google.Cloud.Scheduler.V1.OAuthToken subBuilder = new global::Google.Cloud.Scheduler.V1.OAuthToken();
            if (authorizationHeaderCase_ == AuthorizationHeaderOneofCase.OauthToken) {
              subBuilder.MergeFrom(OauthToken);
            }
            input.ReadMessage(subBuilder);
            OauthToken = subBuilder;
            break;
          }
          case 50: {
            global::Google.Cloud.Scheduler.V1.OidcToken subBuilder = new global::Google.Cloud.Scheduler.V1.OidcToken();
            if (authorizationHeaderCase_ == AuthorizationHeaderOneofCase.OidcToken) {
              subBuilder.MergeFrom(OidcToken);
            }
            input.ReadMessage(subBuilder);
            OidcToken = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// App Engine target. The job will be pushed to a job handler by means
  /// of an HTTP request via an [http_method][google.cloud.scheduler.v1.AppEngineHttpTarget.http_method] such
  /// as HTTP POST, HTTP GET, etc. The job is acknowledged by means of an
  /// HTTP response code in the range [200 - 299]. Error 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, constitutes a failed attempt.
  /// </summary>
  public sealed partial class AppEngineHttpTarget : pb::IMessage<AppEngineHttpTarget>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AppEngineHttpTarget> _parser = new pb::MessageParser<AppEngineHttpTarget>(() => new AppEngineHttpTarget());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AppEngineHttpTarget> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Cloud.Scheduler.V1.TargetReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppEngineHttpTarget() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppEngineHttpTarget(AppEngineHttpTarget other) : this() {
      httpMethod_ = other.httpMethod_;
      appEngineRouting_ = other.appEngineRouting_ != null ? other.appEngineRouting_.Clone() : null;
      relativeUri_ = other.relativeUri_;
      headers_ = other.headers_.Clone();
      body_ = other.body_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppEngineHttpTarget Clone() {
      return new AppEngineHttpTarget(this);
    }

    /// <summary>Field number for the "http_method" field.</summary>
    public const int HttpMethodFieldNumber = 1;
    private global::Google.Cloud.Scheduler.V1.HttpMethod httpMethod_ = global::Google.Cloud.Scheduler.V1.HttpMethod.Unspecified;
    /// <summary>
    /// The HTTP method to use for the request. PATCH and OPTIONS are not
    /// permitted.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Cloud.Scheduler.V1.HttpMethod HttpMethod {
      get { return httpMethod_; }
      set {
        httpMethod_ = value;
      }
    }

    /// <summary>Field number for the "app_engine_routing" field.</summary>
    public const int AppEngineRoutingFieldNumber = 2;
    private global::Google.Cloud.Scheduler.V1.AppEngineRouting appEngineRouting_;
    /// <summary>
    /// App Engine Routing setting for the job.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Cloud.Scheduler.V1.AppEngineRouting AppEngineRouting {
      get { return appEngineRouting_; }
      set {
        appEngineRouting_ = value;
      }
    }

    /// <summary>Field number for the "relative_uri" field.</summary>
    public const int RelativeUriFieldNumber = 3;
    private string relativeUri_ = "";
    /// <summary>
    /// The relative URI.
    ///
    /// The relative URL must begin with "/" and must be a valid HTTP relative URL.
    /// It can contain a path, query string arguments, and `#` fragments.
    /// If the relative URL is empty, then the root path "/" will be used.
    /// No spaces are allowed, and the maximum length allowed is 2083 characters.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string RelativeUri {
      get { return relativeUri_; }
      set {
        relativeUri_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "headers" field.</summary>
    public const int HeadersFieldNumber = 4;
    private static readonly pbc::MapField<string, string>.Codec _map_headers_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForString(18, ""), 34);
    private readonly pbc::MapField<string, string> headers_ = new pbc::MapField<string, string>();
    /// <summary>
    /// HTTP request headers.
    ///
    /// This map contains the header field names and values. Headers can be set
    /// when the job is created.
    ///
    /// Cloud Scheduler 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 Scheduler will append
    ///   `"AppEngine-Google; (+http://code.google.com/appengine)"` to the
    ///   modified `User-Agent`.
    /// * `X-CloudScheduler`: This header will be set to true.
    ///
    /// If the job has an [body][google.cloud.scheduler.v1.AppEngineHttpTarget.body], Cloud Scheduler sets
    /// the following headers:
    ///
    /// * `Content-Type`: By default, the `Content-Type` header is set to
    ///   `"application/octet-stream"`. The default can be overridden by explictly
    ///   setting `Content-Type` to a particular media type when the job is
    ///   created.
    ///   For example, `Content-Type` can be set to `"application/json"`.
    /// * `Content-Length`: This is computed by Cloud Scheduler. This value is
    ///   output only. It cannot be changed.
    ///
    /// The headers below are output only. They cannot be set or overridden:
    ///
    /// * `X-Google-*`: For Google internal use only.
    /// * `X-AppEngine-*`: For Google internal use only.
    ///
    /// In addition, some App Engine headers, which contain
    /// job-specific information, are also be sent to the job handler.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<string, string> Headers {
      get { return headers_; }
    }

    /// <summary>Field number for the "body" field.</summary>
    public const int BodyFieldNumber = 5;
    private pb::ByteString body_ = pb::ByteString.Empty;
    /// <summary>
    /// Body.
    ///
    /// HTTP request body. A request body is allowed only if the HTTP method is
    /// POST or PUT. It will result in invalid argument error to set a body on a
    /// job with an incompatible [HttpMethod][google.cloud.scheduler.v1.HttpMethod].
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString Body {
      get { return body_; }
      set {
        body_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AppEngineHttpTarget);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AppEngineHttpTarget other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (HttpMethod != other.HttpMethod) return false;
      if (!object.Equals(AppEngineRouting, other.AppEngineRouting)) return false;
      if (RelativeUri != other.RelativeUri) return false;
      if (!Headers.Equals(other.Headers)) return false;
      if (Body != other.Body) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (HttpMethod != global::Google.Cloud.Scheduler.V1.HttpMethod.Unspecified) hash ^= HttpMethod.GetHashCode();
      if (appEngineRouting_ != null) hash ^= AppEngineRouting.GetHashCode();
      if (RelativeUri.Length != 0) hash ^= RelativeUri.GetHashCode();
      hash ^= Headers.GetHashCode();
      if (Body.Length != 0) hash ^= Body.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (HttpMethod != global::Google.Cloud.Scheduler.V1.HttpMethod.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) HttpMethod);
      }
      if (appEngineRouting_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(AppEngineRouting);
      }
      if (RelativeUri.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(RelativeUri);
      }
      headers_.WriteTo(output, _map_headers_codec);
      if (Body.Length != 0) {
        output.WriteRawTag(42);
        output.WriteBytes(Body);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (HttpMethod != global::Google.Cloud.Scheduler.V1.HttpMethod.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) HttpMethod);
      }
      if (appEngineRouting_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(AppEngineRouting);
      }
      if (RelativeUri.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(RelativeUri);
      }
      headers_.WriteTo(ref output, _map_headers_codec);
      if (Body.Length != 0) {
        output.WriteRawTag(42);
        output.WriteBytes(Body);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (HttpMethod != global::Google.Cloud.Scheduler.V1.HttpMethod.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) HttpMethod);
      }
      if (appEngineRouting_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppEngineRouting);
      }
      if (RelativeUri.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(RelativeUri);
      }
      size += headers_.CalculateSize(_map_headers_codec);
      if (Body.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Body);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AppEngineHttpTarget other) {
      if (other == null) {
        return;
      }
      if (other.HttpMethod != global::Google.Cloud.Scheduler.V1.HttpMethod.Unspecified) {
        HttpMethod = other.HttpMethod;
      }
      if (other.appEngineRouting_ != null) {
        if (appEngineRouting_ == null) {
          AppEngineRouting = new global::Google.Cloud.Scheduler.V1.AppEngineRouting();
        }
        AppEngineRouting.MergeFrom(other.AppEngineRouting);
      }
      if (other.RelativeUri.Length != 0) {
        RelativeUri = other.RelativeUri;
      }
      headers_.Add(other.headers_);
      if (other.Body.Length != 0) {
        Body = other.Body;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            HttpMethod = (global::Google.Cloud.Scheduler.V1.HttpMethod) input.ReadEnum();
            break;
          }
          case 18: {
            if (appEngineRouting_ == null) {
              AppEngineRouting = new global::Google.Cloud.Scheduler.V1.AppEngineRouting();
            }
            input.ReadMessage(AppEngineRouting);
            break;
          }
          case 26: {
            RelativeUri = input.ReadString();
            break;
          }
          case 34: {
            headers_.AddEntriesFrom(input, _map_headers_codec);
            break;
          }
          case 42: {
            Body = input.ReadBytes();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            HttpMethod = (global::Google.Cloud.Scheduler.V1.HttpMethod) input.ReadEnum();
            break;
          }
          case 18: {
            if (appEngineRouting_ == null) {
              AppEngineRouting = new global::Google.Cloud.Scheduler.V1.AppEngineRouting();
            }
            input.ReadMessage(AppEngineRouting);
            break;
          }
          case 26: {
            RelativeUri = input.ReadString();
            break;
          }
          case 34: {
            headers_.AddEntriesFrom(ref input, _map_headers_codec);
            break;
          }
          case 42: {
            Body = input.ReadBytes();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Pub/Sub target. The job will be delivered by publishing a message to
  /// the given Pub/Sub topic.
  /// </summary>
  public sealed partial class PubsubTarget : pb::IMessage<PubsubTarget>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<PubsubTarget> _parser = new pb::MessageParser<PubsubTarget>(() => new PubsubTarget());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<PubsubTarget> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Cloud.Scheduler.V1.TargetReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public PubsubTarget() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public PubsubTarget(PubsubTarget other) : this() {
      topicName_ = other.topicName_;
      data_ = other.data_;
      attributes_ = other.attributes_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public PubsubTarget Clone() {
      return new PubsubTarget(this);
    }

    /// <summary>Field number for the "topic_name" field.</summary>
    public const int TopicNameFieldNumber = 1;
    private string topicName_ = "";
    /// <summary>
    /// Required. The name of the Cloud Pub/Sub topic to which messages will
    /// be published when a job is delivered. The topic name must be in the
    /// same format as required by PubSub's
    /// [PublishRequest.name](https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#publishrequest),
    /// for example `projects/PROJECT_ID/topics/TOPIC_ID`.
    ///
    /// The topic must be in the same project as the Cloud Scheduler job.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string TopicName {
      get { return topicName_; }
      set {
        topicName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "data" field.</summary>
    public const int DataFieldNumber = 3;
    private pb::ByteString data_ = pb::ByteString.Empty;
    /// <summary>
    /// The message payload for PubsubMessage.
    ///
    /// Pubsub message must contain either non-empty data, or at least one
    /// attribute.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString Data {
      get { return data_; }
      set {
        data_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "attributes" field.</summary>
    public const int AttributesFieldNumber = 4;
    private static readonly pbc::MapField<string, string>.Codec _map_attributes_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForString(18, ""), 34);
    private readonly pbc::MapField<string, string> attributes_ = new pbc::MapField<string, string>();
    /// <summary>
    /// Attributes for PubsubMessage.
    ///
    /// Pubsub message must contain either non-empty data, or at least one
    /// attribute.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<string, string> Attributes {
      get { return attributes_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as PubsubTarget);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(PubsubTarget other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (TopicName != other.TopicName) return false;
      if (Data != other.Data) return false;
      if (!Attributes.Equals(other.Attributes)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (TopicName.Length != 0) hash ^= TopicName.GetHashCode();
      if (Data.Length != 0) hash ^= Data.GetHashCode();
      hash ^= Attributes.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (TopicName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(TopicName);
      }
      if (Data.Length != 0) {
        output.WriteRawTag(26);
        output.WriteBytes(Data);
      }
      attributes_.WriteTo(output, _map_attributes_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (TopicName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(TopicName);
      }
      if (Data.Length != 0) {
        output.WriteRawTag(26);
        output.WriteBytes(Data);
      }
      attributes_.WriteTo(ref output, _map_attributes_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (TopicName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TopicName);
      }
      if (Data.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Data);
      }
      size += attributes_.CalculateSize(_map_attributes_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(PubsubTarget other) {
      if (other == null) {
        return;
      }
      if (other.TopicName.Length != 0) {
        TopicName = other.TopicName;
      }
      if (other.Data.Length != 0) {
        Data = other.Data;
      }
      attributes_.Add(other.attributes_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            TopicName = input.ReadString();
            break;
          }
          case 26: {
            Data = input.ReadBytes();
            break;
          }
          case 34: {
            attributes_.AddEntriesFrom(input, _map_attributes_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            TopicName = input.ReadString();
            break;
          }
          case 26: {
            Data = input.ReadBytes();
            break;
          }
          case 34: {
            attributes_.AddEntriesFrom(ref input, _map_attributes_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// App Engine Routing.
  ///
  /// 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).
  /// </summary>
  public sealed partial class AppEngineRouting : pb::IMessage<AppEngineRouting>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AppEngineRouting> _parser = new pb::MessageParser<AppEngineRouting>(() => new AppEngineRouting());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AppEngineRouting> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Cloud.Scheduler.V1.TargetReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppEngineRouting() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppEngineRouting(AppEngineRouting other) : this() {
      service_ = other.service_;
      version_ = other.version_;
      instance_ = other.instance_;
      host_ = other.host_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppEngineRouting Clone() {
      return new AppEngineRouting(this);
    }

    /// <summary>Field number for the "service" field.</summary>
    public const int ServiceFieldNumber = 1;
    private string service_ = "";
    /// <summary>
    /// App service.
    ///
    /// By default, the job is sent to the service which is the default
    /// service when the job is attempted.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Service {
      get { return service_; }
      set {
        service_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "version" field.</summary>
    public const int VersionFieldNumber = 2;
    private string version_ = "";
    /// <summary>
    /// App version.
    ///
    /// By default, the job is sent to the version which is the default
    /// version when the job is attempted.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Version {
      get { return version_; }
      set {
        version_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "instance" field.</summary>
    public const int InstanceFieldNumber = 3;
    private string instance_ = "";
    /// <summary>
    /// App instance.
    ///
    /// By default, the job is sent to an instance which is available when
    /// the job 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).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Instance {
      get { return instance_; }
      set {
        instance_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "host" field.</summary>
    public const int HostFieldNumber = 4;
    private string host_ = "";
    /// <summary>
    /// Output only. The host that the job is sent to.
    ///
    /// For more information about how App Engine requests are routed, see
    /// [here](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed).
    ///
    /// The host is constructed as:
    ///
    /// * `host = [application_domain_name]`&lt;/br>
    ///   `| [service] + '.' + [application_domain_name]`&lt;/br>
    ///   `| [version] + '.' + [application_domain_name]`&lt;/br>
    ///   `| [version_dot_service]+ '.' + [application_domain_name]`&lt;/br>
    ///   `| [instance] + '.' + [application_domain_name]`&lt;/br>
    ///   `| [instance_dot_service] + '.' + [application_domain_name]`&lt;/br>
    ///   `| [instance_dot_version] + '.' + [application_domain_name]`&lt;/br>
    ///   `| [instance_dot_version_dot_service] + '.' + [application_domain_name]`
    ///
    /// * `application_domain_name` = The domain name of the app, for
    ///   example &lt;app-id>.appspot.com, which is associated with the
    ///   job's project ID.
    ///
    /// * `service =` [service][google.cloud.scheduler.v1.AppEngineRouting.service]
    ///
    /// * `version =` [version][google.cloud.scheduler.v1.AppEngineRouting.version]
    ///
    /// * `version_dot_service =`
    ///   [version][google.cloud.scheduler.v1.AppEngineRouting.version] `+ '.' +`
    ///   [service][google.cloud.scheduler.v1.AppEngineRouting.service]
    ///
    /// * `instance =` [instance][google.cloud.scheduler.v1.AppEngineRouting.instance]
    ///
    /// * `instance_dot_service =`
    ///   [instance][google.cloud.scheduler.v1.AppEngineRouting.instance] `+ '.' +`
    ///   [service][google.cloud.scheduler.v1.AppEngineRouting.service]
    ///
    /// * `instance_dot_version =`
    ///   [instance][google.cloud.scheduler.v1.AppEngineRouting.instance] `+ '.' +`
    ///   [version][google.cloud.scheduler.v1.AppEngineRouting.version]
    ///
    /// * `instance_dot_version_dot_service =`
    ///   [instance][google.cloud.scheduler.v1.AppEngineRouting.instance] `+ '.' +`
    ///   [version][google.cloud.scheduler.v1.AppEngineRouting.version] `+ '.' +`
    ///   [service][google.cloud.scheduler.v1.AppEngineRouting.service]
    ///
    /// If [service][google.cloud.scheduler.v1.AppEngineRouting.service] is empty, then the job will be sent
    /// to the service which is the default service when the job is attempted.
    ///
    /// If [version][google.cloud.scheduler.v1.AppEngineRouting.version] is empty, then the job will be sent
    /// to the version which is the default version when the job is attempted.
    ///
    /// If [instance][google.cloud.scheduler.v1.AppEngineRouting.instance] is empty, then the job will be
    /// sent to an instance which is available when the job is attempted.
    ///
    /// If [service][google.cloud.scheduler.v1.AppEngineRouting.service],
    /// [version][google.cloud.scheduler.v1.AppEngineRouting.version], or
    /// [instance][google.cloud.scheduler.v1.AppEngineRouting.instance] is invalid, then the job will be sent
    /// to the default version of the default service when the job is attempted.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Host {
      get { return host_; }
      set {
        host_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AppEngineRouting);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AppEngineRouting other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Service != other.Service) return false;
      if (Version != other.Version) return false;
      if (Instance != other.Instance) return false;
      if (Host != other.Host) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Service.Length != 0) hash ^= Service.GetHashCode();
      if (Version.Length != 0) hash ^= Version.GetHashCode();
      if (Instance.Length != 0) hash ^= Instance.GetHashCode();
      if (Host.Length != 0) hash ^= Host.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Service.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Service);
      }
      if (Version.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Version);
      }
      if (Instance.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Instance);
      }
      if (Host.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Host);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Service.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Service);
      }
      if (Version.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Version);
      }
      if (Instance.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Instance);
      }
      if (Host.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Host);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Service.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Service);
      }
      if (Version.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Version);
      }
      if (Instance.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Instance);
      }
      if (Host.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Host);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AppEngineRouting other) {
      if (other == null) {
        return;
      }
      if (other.Service.Length != 0) {
        Service = other.Service;
      }
      if (other.Version.Length != 0) {
        Version = other.Version;
      }
      if (other.Instance.Length != 0) {
        Instance = other.Instance;
      }
      if (other.Host.Length != 0) {
        Host = other.Host;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Service = input.ReadString();
            break;
          }
          case 18: {
            Version = input.ReadString();
            break;
          }
          case 26: {
            Instance = input.ReadString();
            break;
          }
          case 34: {
            Host = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Service = input.ReadString();
            break;
          }
          case 18: {
            Version = input.ReadString();
            break;
          }
          case 26: {
            Instance = input.ReadString();
            break;
          }
          case 34: {
            Host = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Contains information needed for generating an
  /// [OAuth token](https://developers.google.com/identity/protocols/OAuth2).
  /// This type of authorization should generally only be used when calling Google
  /// APIs hosted on *.googleapis.com.
  /// </summary>
  public sealed partial class OAuthToken : pb::IMessage<OAuthToken>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<OAuthToken> _parser = new pb::MessageParser<OAuthToken>(() => new OAuthToken());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<OAuthToken> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Cloud.Scheduler.V1.TargetReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OAuthToken() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OAuthToken(OAuthToken other) : this() {
      serviceAccountEmail_ = other.serviceAccountEmail_;
      scope_ = other.scope_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OAuthToken Clone() {
      return new OAuthToken(this);
    }

    /// <summary>Field number for the "service_account_email" field.</summary>
    public const int ServiceAccountEmailFieldNumber = 1;
    private string serviceAccountEmail_ = "";
    /// <summary>
    /// [Service account email](https://cloud.google.com/iam/docs/service-accounts)
    /// to be used for generating OAuth token.
    /// The service account must be within the same project as the job. The caller
    /// must have iam.serviceAccounts.actAs permission for the service account.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ServiceAccountEmail {
      get { return serviceAccountEmail_; }
      set {
        serviceAccountEmail_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "scope" field.</summary>
    public const int ScopeFieldNumber = 2;
    private string scope_ = "";
    /// <summary>
    /// OAuth scope to be used for generating OAuth access token.
    /// If not specified, "https://www.googleapis.com/auth/cloud-platform"
    /// will be used.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Scope {
      get { return scope_; }
      set {
        scope_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as OAuthToken);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(OAuthToken other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServiceAccountEmail != other.ServiceAccountEmail) return false;
      if (Scope != other.Scope) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServiceAccountEmail.Length != 0) hash ^= ServiceAccountEmail.GetHashCode();
      if (Scope.Length != 0) hash ^= Scope.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServiceAccountEmail.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(ServiceAccountEmail);
      }
      if (Scope.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Scope);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServiceAccountEmail.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(ServiceAccountEmail);
      }
      if (Scope.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Scope);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServiceAccountEmail.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ServiceAccountEmail);
      }
      if (Scope.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Scope);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(OAuthToken other) {
      if (other == null) {
        return;
      }
      if (other.ServiceAccountEmail.Length != 0) {
        ServiceAccountEmail = other.ServiceAccountEmail;
      }
      if (other.Scope.Length != 0) {
        Scope = other.Scope;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            ServiceAccountEmail = input.ReadString();
            break;
          }
          case 18: {
            Scope = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            ServiceAccountEmail = input.ReadString();
            break;
          }
          case 18: {
            Scope = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Contains information needed for generating an
  /// [OpenID Connect
  /// token](https://developers.google.com/identity/protocols/OpenIDConnect).
  /// This type of authorization can be used for many scenarios, including
  /// calling Cloud Run, or endpoints where you intend to validate the token
  /// yourself.
  /// </summary>
  public sealed partial class OidcToken : pb::IMessage<OidcToken>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<OidcToken> _parser = new pb::MessageParser<OidcToken>(() => new OidcToken());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<OidcToken> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Cloud.Scheduler.V1.TargetReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OidcToken() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OidcToken(OidcToken other) : this() {
      serviceAccountEmail_ = other.serviceAccountEmail_;
      audience_ = other.audience_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OidcToken Clone() {
      return new OidcToken(this);
    }

    /// <summary>Field number for the "service_account_email" field.</summary>
    public const int ServiceAccountEmailFieldNumber = 1;
    private string serviceAccountEmail_ = "";
    /// <summary>
    /// [Service account email](https://cloud.google.com/iam/docs/service-accounts)
    /// to be used for generating OIDC token.
    /// The service account must be within the same project as the job. The caller
    /// must have iam.serviceAccounts.actAs permission for the service account.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ServiceAccountEmail {
      get { return serviceAccountEmail_; }
      set {
        serviceAccountEmail_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "audience" field.</summary>
    public const int AudienceFieldNumber = 2;
    private string audience_ = "";
    /// <summary>
    /// Audience to be used when generating OIDC token. If not specified, the URI
    /// specified in target will be used.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Audience {
      get { return audience_; }
      set {
        audience_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as OidcToken);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(OidcToken other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServiceAccountEmail != other.ServiceAccountEmail) return false;
      if (Audience != other.Audience) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServiceAccountEmail.Length != 0) hash ^= ServiceAccountEmail.GetHashCode();
      if (Audience.Length != 0) hash ^= Audience.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServiceAccountEmail.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(ServiceAccountEmail);
      }
      if (Audience.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Audience);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServiceAccountEmail.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(ServiceAccountEmail);
      }
      if (Audience.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Audience);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServiceAccountEmail.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ServiceAccountEmail);
      }
      if (Audience.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Audience);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(OidcToken other) {
      if (other == null) {
        return;
      }
      if (other.ServiceAccountEmail.Length != 0) {
        ServiceAccountEmail = other.ServiceAccountEmail;
      }
      if (other.Audience.Length != 0) {
        Audience = other.Audience;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            ServiceAccountEmail = input.ReadString();
            break;
          }
          case 18: {
            Audience = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            ServiceAccountEmail = input.ReadString();
            break;
          }
          case 18: {
            Audience = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
