/*
 * Internal Utility API
 * This API allows you to access internal data.
 *
 * OpenAPI spec version: 1.0.0
 * 
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */


package org.wso2.am.integration.clients.internal.api.dto;

import java.util.Objects;
import java.util.Arrays;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.IOException;

/**
 * WebhooksSubscriptionDTO
 */

public class WebhooksSubscriptionDTO {
  @SerializedName("apiUUID")
  private String apiUUID = null;

  @SerializedName("apiContext")
  private String apiContext = null;

  @SerializedName("apiVersion")
  private String apiVersion = null;

  @SerializedName("tenantDomain")
  private String tenantDomain = null;

  @SerializedName("tenantId")
  private Integer tenantId = null;

  @SerializedName("appID")
  private String appID = null;

  @SerializedName("callbackURL")
  private String callbackURL = null;

  @SerializedName("topicName")
  private String topicName = null;

  @SerializedName("secret")
  private String secret = null;

  @SerializedName("expiryTime")
  private Long expiryTime = null;

  @SerializedName("tier")
  private String tier = null;

  @SerializedName("applicationTier")
  private String applicationTier = null;

  @SerializedName("apiTier")
  private String apiTier = null;

  @SerializedName("subscriberName")
  private String subscriberName = null;

  public WebhooksSubscriptionDTO apiUUID(String apiUUID) {
    this.apiUUID = apiUUID;
    return this;
  }

   /**
   * The API UUID
   * @return apiUUID
  **/
  @ApiModelProperty(value = "The API UUID")
  public String getApiUUID() {
    return apiUUID;
  }

  public void setApiUUID(String apiUUID) {
    this.apiUUID = apiUUID;
  }

  public WebhooksSubscriptionDTO apiContext(String apiContext) {
    this.apiContext = apiContext;
    return this;
  }

   /**
   * The API context.
   * @return apiContext
  **/
  @ApiModelProperty(value = "The API context.")
  public String getApiContext() {
    return apiContext;
  }

  public void setApiContext(String apiContext) {
    this.apiContext = apiContext;
  }

  public WebhooksSubscriptionDTO apiVersion(String apiVersion) {
    this.apiVersion = apiVersion;
    return this;
  }

   /**
   * The API version.
   * @return apiVersion
  **/
  @ApiModelProperty(value = "The API version.")
  public String getApiVersion() {
    return apiVersion;
  }

  public void setApiVersion(String apiVersion) {
    this.apiVersion = apiVersion;
  }

  public WebhooksSubscriptionDTO tenantDomain(String tenantDomain) {
    this.tenantDomain = tenantDomain;
    return this;
  }

   /**
   * The tenant domain.
   * @return tenantDomain
  **/
  @ApiModelProperty(value = "The tenant domain.")
  public String getTenantDomain() {
    return tenantDomain;
  }

  public void setTenantDomain(String tenantDomain) {
    this.tenantDomain = tenantDomain;
  }

  public WebhooksSubscriptionDTO tenantId(Integer tenantId) {
    this.tenantId = tenantId;
    return this;
  }

   /**
   * The tenant id.
   * @return tenantId
  **/
  @ApiModelProperty(example = "-1234", value = "The tenant id.")
  public Integer getTenantId() {
    return tenantId;
  }

  public void setTenantId(Integer tenantId) {
    this.tenantId = tenantId;
  }

  public WebhooksSubscriptionDTO appID(String appID) {
    this.appID = appID;
    return this;
  }

   /**
   * The application ID of the subscription.
   * @return appID
  **/
  @ApiModelProperty(example = "1", value = "The application ID of the subscription.")
  public String getAppID() {
    return appID;
  }

  public void setAppID(String appID) {
    this.appID = appID;
  }

  public WebhooksSubscriptionDTO callbackURL(String callbackURL) {
    this.callbackURL = callbackURL;
    return this;
  }

   /**
   * The callback URL
   * @return callbackURL
  **/
  @ApiModelProperty(value = "The callback URL")
  public String getCallbackURL() {
    return callbackURL;
  }

  public void setCallbackURL(String callbackURL) {
    this.callbackURL = callbackURL;
  }

  public WebhooksSubscriptionDTO topicName(String topicName) {
    this.topicName = topicName;
    return this;
  }

   /**
   * The topic name.
   * @return topicName
  **/
  @ApiModelProperty(value = "The topic name.")
  public String getTopicName() {
    return topicName;
  }

  public void setTopicName(String topicName) {
    this.topicName = topicName;
  }

  public WebhooksSubscriptionDTO secret(String secret) {
    this.secret = secret;
    return this;
  }

   /**
   * Secret value of the subscription.
   * @return secret
  **/
  @ApiModelProperty(value = "Secret value of the subscription.")
  public String getSecret() {
    return secret;
  }

  public void setSecret(String secret) {
    this.secret = secret;
  }

  public WebhooksSubscriptionDTO expiryTime(Long expiryTime) {
    this.expiryTime = expiryTime;
    return this;
  }

   /**
   * the expiry time in millis
   * @return expiryTime
  **/
  @ApiModelProperty(value = "the expiry time in millis")
  public Long getExpiryTime() {
    return expiryTime;
  }

  public void setExpiryTime(Long expiryTime) {
    this.expiryTime = expiryTime;
  }

  public WebhooksSubscriptionDTO tier(String tier) {
    this.tier = tier;
    return this;
  }

   /**
   * the subscription tier.
   * @return tier
  **/
  @ApiModelProperty(example = "Bronze", value = "the subscription tier.")
  public String getTier() {
    return tier;
  }

  public void setTier(String tier) {
    this.tier = tier;
  }

  public WebhooksSubscriptionDTO applicationTier(String applicationTier) {
    this.applicationTier = applicationTier;
    return this;
  }

   /**
   * the application tier.
   * @return applicationTier
  **/
  @ApiModelProperty(example = "Unlimited", value = "the application tier.")
  public String getApplicationTier() {
    return applicationTier;
  }

  public void setApplicationTier(String applicationTier) {
    this.applicationTier = applicationTier;
  }

  public WebhooksSubscriptionDTO apiTier(String apiTier) {
    this.apiTier = apiTier;
    return this;
  }

   /**
   * the API tier.
   * @return apiTier
  **/
  @ApiModelProperty(example = "Bronze", value = "the API tier.")
  public String getApiTier() {
    return apiTier;
  }

  public void setApiTier(String apiTier) {
    this.apiTier = apiTier;
  }

  public WebhooksSubscriptionDTO subscriberName(String subscriberName) {
    this.subscriberName = subscriberName;
    return this;
  }

   /**
   * the subscriber name.
   * @return subscriberName
  **/
  @ApiModelProperty(example = "admin", value = "the subscriber name.")
  public String getSubscriberName() {
    return subscriberName;
  }

  public void setSubscriberName(String subscriberName) {
    this.subscriberName = subscriberName;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    WebhooksSubscriptionDTO webhooksSubscription = (WebhooksSubscriptionDTO) o;
    return Objects.equals(this.apiUUID, webhooksSubscription.apiUUID) &&
        Objects.equals(this.apiContext, webhooksSubscription.apiContext) &&
        Objects.equals(this.apiVersion, webhooksSubscription.apiVersion) &&
        Objects.equals(this.tenantDomain, webhooksSubscription.tenantDomain) &&
        Objects.equals(this.tenantId, webhooksSubscription.tenantId) &&
        Objects.equals(this.appID, webhooksSubscription.appID) &&
        Objects.equals(this.callbackURL, webhooksSubscription.callbackURL) &&
        Objects.equals(this.topicName, webhooksSubscription.topicName) &&
        Objects.equals(this.secret, webhooksSubscription.secret) &&
        Objects.equals(this.expiryTime, webhooksSubscription.expiryTime) &&
        Objects.equals(this.tier, webhooksSubscription.tier) &&
        Objects.equals(this.applicationTier, webhooksSubscription.applicationTier) &&
        Objects.equals(this.apiTier, webhooksSubscription.apiTier) &&
        Objects.equals(this.subscriberName, webhooksSubscription.subscriberName);
  }

  @Override
  public int hashCode() {
    return Objects.hash(apiUUID, apiContext, apiVersion, tenantDomain, tenantId, appID, callbackURL, topicName, secret, expiryTime, tier, applicationTier, apiTier, subscriberName);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class WebhooksSubscriptionDTO {\n");
    
    sb.append("    apiUUID: ").append(toIndentedString(apiUUID)).append("\n");
    sb.append("    apiContext: ").append(toIndentedString(apiContext)).append("\n");
    sb.append("    apiVersion: ").append(toIndentedString(apiVersion)).append("\n");
    sb.append("    tenantDomain: ").append(toIndentedString(tenantDomain)).append("\n");
    sb.append("    tenantId: ").append(toIndentedString(tenantId)).append("\n");
    sb.append("    appID: ").append(toIndentedString(appID)).append("\n");
    sb.append("    callbackURL: ").append(toIndentedString(callbackURL)).append("\n");
    sb.append("    topicName: ").append(toIndentedString(topicName)).append("\n");
    sb.append("    secret: ").append(toIndentedString(secret)).append("\n");
    sb.append("    expiryTime: ").append(toIndentedString(expiryTime)).append("\n");
    sb.append("    tier: ").append(toIndentedString(tier)).append("\n");
    sb.append("    applicationTier: ").append(toIndentedString(applicationTier)).append("\n");
    sb.append("    apiTier: ").append(toIndentedString(apiTier)).append("\n");
    sb.append("    subscriberName: ").append(toIndentedString(subscriberName)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(java.lang.Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

}

