content: /*
   * Copyright (c) 2020-2025 Airbyte, Inc., all rights reserved.
   */
  
  package io.airbyte.config;
  
  import com.fasterxml.jackson.annotation.JsonAnyGetter;
  import com.fasterxml.jackson.annotation.JsonAnySetter;
  import com.fasterxml.jackson.annotation.JsonIgnore;
  import com.fasterxml.jackson.annotation.JsonInclude;
  import com.fasterxml.jackson.annotation.JsonProperty;
  import com.fasterxml.jackson.annotation.JsonPropertyDescription;
  import com.fasterxml.jackson.annotation.JsonPropertyOrder;
  import jakarta.annotation.Generated;
  import java.io.Serializable;
  import java.util.HashMap;
  import java.util.Map;
  
  /**
   * Notification
   * <p>
   * Notification Settings
   *
   */
  @JsonInclude(JsonInclude.Include.NON_NULL)
  @JsonPropertyOrder({
    "sendOnSuccess",
    "sendOnFailure",
    "sendOnSyncDisabled",
    "sendOnSyncDisabledWarning",
    "sendOnConnectionUpdate",
    "sendOnConnectionUpdateActionRequired",
    "sendOnBreakingChangeWarning",
    "sendOnBreakingChangeSyncsDisabled"
  })
  @Generated(value = "Generated by jsonSchema2Pojo")
  public class NotificationSettings implements Serializable {
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnSuccess")
    @JsonPropertyDescription("Notification Settings for a type of event")
    private NotificationItem sendOnSuccess;
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnFailure")
    @JsonPropertyDescription("Notification Settings for a type of event")
    private NotificationItem sendOnFailure;
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnSyncDisabled")
    @JsonPropertyDescription("Notification Settings for a type of event")
    private NotificationItem sendOnSyncDisabled;
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnSyncDisabledWarning")
    @JsonPropertyDescription("Notification Settings for a type of event")
    private NotificationItem sendOnSyncDisabledWarning;
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnConnectionUpdate")
    @JsonPropertyDescription("Notification Settings for a type of event")
    private NotificationItem sendOnConnectionUpdate;
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnConnectionUpdateActionRequired")
    @JsonPropertyDescription("Notification Settings for a type of event")
    private NotificationItem sendOnConnectionUpdateActionRequired;
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnBreakingChangeWarning")
    @JsonPropertyDescription("Notification Settings for a type of event")
    private NotificationItem sendOnBreakingChangeWarning;
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnBreakingChangeSyncsDisabled")
    @JsonPropertyDescription("Notification Settings for a type of event")
    private NotificationItem sendOnBreakingChangeSyncsDisabled;
    @JsonIgnore
    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
    private final static long serialVersionUID = 2808214609162297913L;
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnSuccess")
    public NotificationItem getSendOnSuccess() {
      return sendOnSuccess;
    }
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnSuccess")
    public void setSendOnSuccess(NotificationItem sendOnSuccess) {
      this.sendOnSuccess = sendOnSuccess;
    }
  
    public NotificationSettings withSendOnSuccess(NotificationItem sendOnSuccess) {
      this.sendOnSuccess = sendOnSuccess;
      return this;
    }
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnFailure")
    public NotificationItem getSendOnFailure() {
      return sendOnFailure;
    }
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnFailure")
    public void setSendOnFailure(NotificationItem sendOnFailure) {
      this.sendOnFailure = sendOnFailure;
    }
  
    public NotificationSettings withSendOnFailure(NotificationItem sendOnFailure) {
      this.sendOnFailure = sendOnFailure;
      return this;
    }
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnSyncDisabled")
    public NotificationItem getSendOnSyncDisabled() {
      return sendOnSyncDisabled;
    }
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnSyncDisabled")
    public void setSendOnSyncDisabled(NotificationItem sendOnSyncDisabled) {
      this.sendOnSyncDisabled = sendOnSyncDisabled;
    }
  
    public NotificationSettings withSendOnSyncDisabled(NotificationItem sendOnSyncDisabled) {
      this.sendOnSyncDisabled = sendOnSyncDisabled;
      return this;
    }
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnSyncDisabledWarning")
    public NotificationItem getSendOnSyncDisabledWarning() {
      return sendOnSyncDisabledWarning;
    }
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnSyncDisabledWarning")
    public void setSendOnSyncDisabledWarning(NotificationItem sendOnSyncDisabledWarning) {
      this.sendOnSyncDisabledWarning = sendOnSyncDisabledWarning;
    }
  
    public NotificationSettings withSendOnSyncDisabledWarning(NotificationItem sendOnSyncDisabledWarning) {
      this.sendOnSyncDisabledWarning = sendOnSyncDisabledWarning;
      return this;
    }
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnConnectionUpdate")
    public NotificationItem getSendOnConnectionUpdate() {
      return sendOnConnectionUpdate;
    }
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnConnectionUpdate")
    public void setSendOnConnectionUpdate(NotificationItem sendOnConnectionUpdate) {
      this.sendOnConnectionUpdate = sendOnConnectionUpdate;
    }
  
    public NotificationSettings withSendOnConnectionUpdate(NotificationItem sendOnConnectionUpdate) {
      this.sendOnConnectionUpdate = sendOnConnectionUpdate;
      return this;
    }
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnConnectionUpdateActionRequired")
    public NotificationItem getSendOnConnectionUpdateActionRequired() {
      return sendOnConnectionUpdateActionRequired;
    }
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnConnectionUpdateActionRequired")
    public void setSendOnConnectionUpdateActionRequired(NotificationItem sendOnConnectionUpdateActionRequired) {
      this.sendOnConnectionUpdateActionRequired = sendOnConnectionUpdateActionRequired;
    }
  
    public NotificationSettings withSendOnConnectionUpdateActionRequired(NotificationItem sendOnConnectionUpdateActionRequired) {
      this.sendOnConnectionUpdateActionRequired = sendOnConnectionUpdateActionRequired;
      return this;
    }
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnBreakingChangeWarning")
    public NotificationItem getSendOnBreakingChangeWarning() {
      return sendOnBreakingChangeWarning;
    }
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnBreakingChangeWarning")
    public void setSendOnBreakingChangeWarning(NotificationItem sendOnBreakingChangeWarning) {
      this.sendOnBreakingChangeWarning = sendOnBreakingChangeWarning;
    }
  
    public NotificationSettings withSendOnBreakingChangeWarning(NotificationItem sendOnBreakingChangeWarning) {
      this.sendOnBreakingChangeWarning = sendOnBreakingChangeWarning;
      return this;
    }
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnBreakingChangeSyncsDisabled")
    public NotificationItem getSendOnBreakingChangeSyncsDisabled() {
      return sendOnBreakingChangeSyncsDisabled;
    }
  
    /**
     * NotificationItem
     * <p>
     * Notification Settings for a type of event
     *
     */
    @JsonProperty("sendOnBreakingChangeSyncsDisabled")
    public void setSendOnBreakingChangeSyncsDisabled(NotificationItem sendOnBreakingChangeSyncsDisabled) {
      this.sendOnBreakingChangeSyncsDisabled = sendOnBreakingChangeSyncsDisabled;
    }
  
    public NotificationSettings withSendOnBreakingChangeSyncsDisabled(NotificationItem sendOnBreakingChangeSyncsDisabled) {
      this.sendOnBreakingChangeSyncsDisabled = sendOnBreakingChangeSyncsDisabled;
      return this;
    }
  
    @JsonAnyGetter
    public Map<String, Object> getAdditionalProperties() {
      return this.additionalProperties;
    }
  
    @JsonAnySetter
    public void setAdditionalProperty(String name, Object value) {
      this.additionalProperties.put(name, value);
    }
  
    public NotificationSettings withAdditionalProperty(String name, Object value) {
      this.additionalProperties.put(name, value);
      return this;
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append(NotificationSettings.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
      sb.append("sendOnSuccess");
      sb.append('=');
      sb.append(((this.sendOnSuccess == null) ? "<null>" : this.sendOnSuccess));
      sb.append(',');
      sb.append("sendOnFailure");
      sb.append('=');
      sb.append(((this.sendOnFailure == null) ? "<null>" : this.sendOnFailure));
      sb.append(',');
      sb.append("sendOnSyncDisabled");
      sb.append('=');
      sb.append(((this.sendOnSyncDisabled == null) ? "<null>" : this.sendOnSyncDisabled));
      sb.append(',');
      sb.append("sendOnSyncDisabledWarning");
      sb.append('=');
      sb.append(((this.sendOnSyncDisabledWarning == null) ? "<null>" : this.sendOnSyncDisabledWarning));
      sb.append(',');
      sb.append("sendOnConnectionUpdate");
      sb.append('=');
      sb.append(((this.sendOnConnectionUpdate == null) ? "<null>" : this.sendOnConnectionUpdate));
      sb.append(',');
      sb.append("sendOnConnectionUpdateActionRequired");
      sb.append('=');
      sb.append(((this.sendOnConnectionUpdateActionRequired == null) ? "<null>" : this.sendOnConnectionUpdateActionRequired));
      sb.append(',');
      sb.append("sendOnBreakingChangeWarning");
      sb.append('=');
      sb.append(((this.sendOnBreakingChangeWarning == null) ? "<null>" : this.sendOnBreakingChangeWarning));
      sb.append(',');
      sb.append("sendOnBreakingChangeSyncsDisabled");
      sb.append('=');
      sb.append(((this.sendOnBreakingChangeSyncsDisabled == null) ? "<null>" : this.sendOnBreakingChangeSyncsDisabled));
      sb.append(',');
      sb.append("additionalProperties");
      sb.append('=');
      sb.append(((this.additionalProperties == null) ? "<null>" : this.additionalProperties));
      sb.append(',');
      if (sb.charAt((sb.length() - 1)) == ',') {
        sb.setCharAt((sb.length() - 1), ']');
      } else {
        sb.append(']');
      }
      return sb.toString();
    }
  
    @Override
    public int hashCode() {
      int result = 1;
      result = ((result * 31) + ((this.sendOnConnectionUpdateActionRequired == null) ? 0 : this.sendOnConnectionUpdateActionRequired.hashCode()));
      result = ((result * 31) + ((this.sendOnSyncDisabledWarning == null) ? 0 : this.sendOnSyncDisabledWarning.hashCode()));
      result = ((result * 31) + ((this.sendOnBreakingChangeSyncsDisabled == null) ? 0 : this.sendOnBreakingChangeSyncsDisabled.hashCode()));
      result = ((result * 31) + ((this.sendOnSuccess == null) ? 0 : this.sendOnSuccess.hashCode()));
      result = ((result * 31) + ((this.sendOnFailure == null) ? 0 : this.sendOnFailure.hashCode()));
      result = ((result * 31) + ((this.sendOnBreakingChangeWarning == null) ? 0 : this.sendOnBreakingChangeWarning.hashCode()));
      result = ((result * 31) + ((this.sendOnConnectionUpdate == null) ? 0 : this.sendOnConnectionUpdate.hashCode()));
      result = ((result * 31) + ((this.sendOnSyncDisabled == null) ? 0 : this.sendOnSyncDisabled.hashCode()));
      result = ((result * 31) + ((this.additionalProperties == null) ? 0 : this.additionalProperties.hashCode()));
      return result;
    }
  
    @Override
    public boolean equals(Object other) {
      if (other == this) {
        return true;
      }
      if ((other instanceof NotificationSettings) == false) {
        return false;
      }
      NotificationSettings rhs = ((NotificationSettings) other);
      return ((((((((((this.sendOnConnectionUpdateActionRequired == rhs.sendOnConnectionUpdateActionRequired)
          || ((this.sendOnConnectionUpdateActionRequired != null)
              && this.sendOnConnectionUpdateActionRequired.equals(rhs.sendOnConnectionUpdateActionRequired)))
          && ((this.sendOnSyncDisabledWarning == rhs.sendOnSyncDisabledWarning)
              || ((this.sendOnSyncDisabledWarning != null) && this.sendOnSyncDisabledWarning.equals(rhs.sendOnSyncDisabledWarning))))
          && ((this.sendOnBreakingChangeSyncsDisabled == rhs.sendOnBreakingChangeSyncsDisabled) || ((this.sendOnBreakingChangeSyncsDisabled != null)
              && this.sendOnBreakingChangeSyncsDisabled.equals(rhs.sendOnBreakingChangeSyncsDisabled))))
          && ((this.sendOnSuccess == rhs.sendOnSuccess) || ((this.sendOnSuccess != null) && this.sendOnSuccess.equals(rhs.sendOnSuccess))))
          && ((this.sendOnFailure == rhs.sendOnFailure) || ((this.sendOnFailure != null) && this.sendOnFailure.equals(rhs.sendOnFailure))))
          && ((this.sendOnBreakingChangeWarning == rhs.sendOnBreakingChangeWarning)
              || ((this.sendOnBreakingChangeWarning != null) && this.sendOnBreakingChangeWarning.equals(rhs.sendOnBreakingChangeWarning))))
          && ((this.sendOnConnectionUpdate == rhs.sendOnConnectionUpdate)
              || ((this.sendOnConnectionUpdate != null) && this.sendOnConnectionUpdate.equals(rhs.sendOnConnectionUpdate))))
          && ((this.sendOnSyncDisabled == rhs.sendOnSyncDisabled)
              || ((this.sendOnSyncDisabled != null) && this.sendOnSyncDisabled.equals(rhs.sendOnSyncDisabled))))
          && ((this.additionalProperties == rhs.additionalProperties)
              || ((this.additionalProperties != null) && this.additionalProperties.equals(rhs.additionalProperties))));
    }
  
  }
  