// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/cloud/scheduler/v1/target.proto

package com.google.cloud.scheduler.v1;

public interface HttpTargetOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.cloud.scheduler.v1.HttpTarget)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>string uri = 1;</code>
   */
  java.lang.String getUri();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>string uri = 1;</code>
   */
  com.google.protobuf.ByteString getUriBytes();

  /**
   *
   *
   * <pre>
   * Which HTTP method to use for the request.
   * </pre>
   *
   * <code>.google.cloud.scheduler.v1.HttpMethod http_method = 2;</code>
   */
  int getHttpMethodValue();
  /**
   *
   *
   * <pre>
   * Which HTTP method to use for the request.
   * </pre>
   *
   * <code>.google.cloud.scheduler.v1.HttpMethod http_method = 2;</code>
   */
  com.google.cloud.scheduler.v1.HttpMethod getHttpMethod();

  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>map&lt;string, string&gt; headers = 3;</code>
   */
  int getHeadersCount();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>map&lt;string, string&gt; headers = 3;</code>
   */
  boolean containsHeaders(java.lang.String key);
  /** Use {@link #getHeadersMap()} instead. */
  @java.lang.Deprecated
  java.util.Map<java.lang.String, java.lang.String> getHeaders();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>map&lt;string, string&gt; headers = 3;</code>
   */
  java.util.Map<java.lang.String, java.lang.String> getHeadersMap();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>map&lt;string, string&gt; headers = 3;</code>
   */
  java.lang.String getHeadersOrDefault(java.lang.String key, java.lang.String defaultValue);
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>map&lt;string, string&gt; headers = 3;</code>
   */
  java.lang.String getHeadersOrThrow(java.lang.String key);

  /**
   *
   *
   * <pre>
   * 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].
   * </pre>
   *
   * <code>bytes body = 4;</code>
   */
  com.google.protobuf.ByteString getBody();

  /**
   *
   *
   * <pre>
   * 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 be used when sending requests to a GCP
   * endpoint.
   * </pre>
   *
   * <code>.google.cloud.scheduler.v1.OAuthToken oauth_token = 5;</code>
   */
  boolean hasOauthToken();
  /**
   *
   *
   * <pre>
   * 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 be used when sending requests to a GCP
   * endpoint.
   * </pre>
   *
   * <code>.google.cloud.scheduler.v1.OAuthToken oauth_token = 5;</code>
   */
  com.google.cloud.scheduler.v1.OAuthToken getOauthToken();
  /**
   *
   *
   * <pre>
   * 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 be used when sending requests to a GCP
   * endpoint.
   * </pre>
   *
   * <code>.google.cloud.scheduler.v1.OAuthToken oauth_token = 5;</code>
   */
  com.google.cloud.scheduler.v1.OAuthTokenOrBuilder getOauthTokenOrBuilder();

  /**
   *
   *
   * <pre>
   * 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 should be used when sending requests to third
   * party endpoints or Cloud Run.
   * </pre>
   *
   * <code>.google.cloud.scheduler.v1.OidcToken oidc_token = 6;</code>
   */
  boolean hasOidcToken();
  /**
   *
   *
   * <pre>
   * 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 should be used when sending requests to third
   * party endpoints or Cloud Run.
   * </pre>
   *
   * <code>.google.cloud.scheduler.v1.OidcToken oidc_token = 6;</code>
   */
  com.google.cloud.scheduler.v1.OidcToken getOidcToken();
  /**
   *
   *
   * <pre>
   * 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 should be used when sending requests to third
   * party endpoints or Cloud Run.
   * </pre>
   *
   * <code>.google.cloud.scheduler.v1.OidcToken oidc_token = 6;</code>
   */
  com.google.cloud.scheduler.v1.OidcTokenOrBuilder getOidcTokenOrBuilder();

  public com.google.cloud.scheduler.v1.HttpTarget.AuthorizationHeaderCase
      getAuthorizationHeaderCase();
}
