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

package com.google.pubsub.v1;

public interface PushConfigOrBuilder extends
    // @@protoc_insertion_point(interface_extends:google.pubsub.v1.PushConfig)
    com.google.protobuf.MessageOrBuilder {

  /**
   * <pre>
   * A URL locating the endpoint to which messages should be pushed.
   * For example, a Webhook endpoint might use "https://example.com/push".
   * </pre>
   *
   * <code>string push_endpoint = 1;</code>
   */
  java.lang.String getPushEndpoint();
  /**
   * <pre>
   * A URL locating the endpoint to which messages should be pushed.
   * For example, a Webhook endpoint might use "https://example.com/push".
   * </pre>
   *
   * <code>string push_endpoint = 1;</code>
   */
  com.google.protobuf.ByteString
      getPushEndpointBytes();

  /**
   * <pre>
   * Endpoint configuration attributes.
   * Every endpoint has a set of API supported attributes that can be used to
   * control different aspects of the message delivery.
   * The currently supported attribute is `x-goog-version`, which you can
   * use to change the format of the pushed message. This attribute
   * indicates the version of the data expected by the endpoint. This
   * controls the shape of the pushed message (i.e., its fields and metadata).
   * The endpoint version is based on the version of the Pub/Sub API.
   * If not present during the `CreateSubscription` call, it will default to
   * the version of the API used to make such call. If not present during a
   * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
   * calls will always return a valid version, even if the subscription was
   * created without this attribute.
   * The possible values for this attribute are:
   * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
   * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
   * </pre>
   *
   * <code>map&lt;string, string&gt; attributes = 2;</code>
   */
  int getAttributesCount();
  /**
   * <pre>
   * Endpoint configuration attributes.
   * Every endpoint has a set of API supported attributes that can be used to
   * control different aspects of the message delivery.
   * The currently supported attribute is `x-goog-version`, which you can
   * use to change the format of the pushed message. This attribute
   * indicates the version of the data expected by the endpoint. This
   * controls the shape of the pushed message (i.e., its fields and metadata).
   * The endpoint version is based on the version of the Pub/Sub API.
   * If not present during the `CreateSubscription` call, it will default to
   * the version of the API used to make such call. If not present during a
   * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
   * calls will always return a valid version, even if the subscription was
   * created without this attribute.
   * The possible values for this attribute are:
   * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
   * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
   * </pre>
   *
   * <code>map&lt;string, string&gt; attributes = 2;</code>
   */
  boolean containsAttributes(
      java.lang.String key);
  /**
   * Use {@link #getAttributesMap()} instead.
   */
  @java.lang.Deprecated
  java.util.Map<java.lang.String, java.lang.String>
  getAttributes();
  /**
   * <pre>
   * Endpoint configuration attributes.
   * Every endpoint has a set of API supported attributes that can be used to
   * control different aspects of the message delivery.
   * The currently supported attribute is `x-goog-version`, which you can
   * use to change the format of the pushed message. This attribute
   * indicates the version of the data expected by the endpoint. This
   * controls the shape of the pushed message (i.e., its fields and metadata).
   * The endpoint version is based on the version of the Pub/Sub API.
   * If not present during the `CreateSubscription` call, it will default to
   * the version of the API used to make such call. If not present during a
   * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
   * calls will always return a valid version, even if the subscription was
   * created without this attribute.
   * The possible values for this attribute are:
   * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
   * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
   * </pre>
   *
   * <code>map&lt;string, string&gt; attributes = 2;</code>
   */
  java.util.Map<java.lang.String, java.lang.String>
  getAttributesMap();
  /**
   * <pre>
   * Endpoint configuration attributes.
   * Every endpoint has a set of API supported attributes that can be used to
   * control different aspects of the message delivery.
   * The currently supported attribute is `x-goog-version`, which you can
   * use to change the format of the pushed message. This attribute
   * indicates the version of the data expected by the endpoint. This
   * controls the shape of the pushed message (i.e., its fields and metadata).
   * The endpoint version is based on the version of the Pub/Sub API.
   * If not present during the `CreateSubscription` call, it will default to
   * the version of the API used to make such call. If not present during a
   * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
   * calls will always return a valid version, even if the subscription was
   * created without this attribute.
   * The possible values for this attribute are:
   * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
   * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
   * </pre>
   *
   * <code>map&lt;string, string&gt; attributes = 2;</code>
   */

  java.lang.String getAttributesOrDefault(
      java.lang.String key,
      java.lang.String defaultValue);
  /**
   * <pre>
   * Endpoint configuration attributes.
   * Every endpoint has a set of API supported attributes that can be used to
   * control different aspects of the message delivery.
   * The currently supported attribute is `x-goog-version`, which you can
   * use to change the format of the pushed message. This attribute
   * indicates the version of the data expected by the endpoint. This
   * controls the shape of the pushed message (i.e., its fields and metadata).
   * The endpoint version is based on the version of the Pub/Sub API.
   * If not present during the `CreateSubscription` call, it will default to
   * the version of the API used to make such call. If not present during a
   * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
   * calls will always return a valid version, even if the subscription was
   * created without this attribute.
   * The possible values for this attribute are:
   * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
   * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
   * </pre>
   *
   * <code>map&lt;string, string&gt; attributes = 2;</code>
   */

  java.lang.String getAttributesOrThrow(
      java.lang.String key);
}
