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.JsonCreator;
  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 com.fasterxml.jackson.annotation.JsonValue;
  import jakarta.annotation.Generated;
  import java.io.Serializable;
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
  import java.util.UUID;
  
  /**
   * StandardSync
   * <p>
   * configuration required for sync for ALL sources
   *
   */
  @JsonInclude(JsonInclude.Include.NON_NULL)
  @JsonPropertyOrder({
    "namespaceDefinition",
    "namespaceFormat",
    "prefix",
    "sourceId",
    "destinationId",
    "operationIds",
    "connectionId",
    "name",
    "catalog",
    "fieldSelectionData",
    "status",
    "schedule",
    "manual",
    "scheduleType",
    "scheduleData",
    "source_catalog_id",
    "destinationCatalogId",
    "resourceRequirements",
    "breakingChange",
    "notifySchemaChanges",
    "notifySchemaChangesByEmail",
    "nonBreakingChangesPreference",
    "backfillPreference",
    "createdAt",
    "tags"
  })
  @Generated(value = "Generated by jsonSchema2Pojo")
  public class StandardSync implements Serializable {
  
    /**
     * Namespace Definition
     * <p>
     * Method used for computing final namespace in destination (Required)
     *
     */
    @JsonProperty("namespaceDefinition")
    @JsonPropertyDescription("Method used for computing final namespace in destination")
    private JobSyncConfig.NamespaceDefinitionType namespaceDefinition = JobSyncConfig.NamespaceDefinitionType.fromValue("source");
    @JsonProperty("namespaceFormat")
    private String namespaceFormat = null;
    /**
     * Prefix that will be prepended to the name of each stream when it is written to the destination.
     *
     */
    @JsonProperty("prefix")
    @JsonPropertyDescription("Prefix that will be prepended to the name of each stream when it is written to the destination.")
    private String prefix;
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("sourceId")
    private UUID sourceId;
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("destinationId")
    private UUID destinationId;
    @JsonProperty("operationIds")
    private List<UUID> operationIds = new ArrayList<UUID>();
    @JsonProperty("connectionId")
    private UUID connectionId;
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("name")
    private String name;
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("catalog")
    private ConfiguredAirbyteCatalog catalog;
    /**
     * A map of StreamDescriptor to an indicator of whether field selection is enabled for that stream.
     *
     */
    @JsonProperty("fieldSelectionData")
    @JsonPropertyDescription("A map of StreamDescriptor to an indicator of whether field selection is enabled for that stream.")
    private FieldSelectionData fieldSelectionData;
    @JsonProperty("status")
    private Status status;
    @JsonProperty("schedule")
    private Schedule schedule;
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("manual")
    private Boolean manual;
    @JsonProperty("scheduleType")
    private ScheduleType scheduleType;
    @JsonProperty("scheduleData")
    private ScheduleData scheduleData;
    @JsonProperty("source_catalog_id")
    private UUID sourceCatalogId;
    @JsonProperty("destinationCatalogId")
    private UUID destinationCatalogId;
    /**
     * ResourceRequirements
     * <p>
     * generic configuration for pod source requirements
     *
     */
    @JsonProperty("resourceRequirements")
    @JsonPropertyDescription("generic configuration for pod source requirements")
    private ResourceRequirements resourceRequirements;
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("breakingChange")
    private Boolean breakingChange;
    @JsonProperty("notifySchemaChanges")
    private Boolean notifySchemaChanges;
    @JsonProperty("notifySchemaChangesByEmail")
    private Boolean notifySchemaChangesByEmail;
    @JsonProperty("nonBreakingChangesPreference")
    private NonBreakingChangesPreference nonBreakingChangesPreference;
    /**
     * Whether a backfill should be done for certain types of column changes
     *
     */
    @JsonProperty("backfillPreference")
    @JsonPropertyDescription("Whether a backfill should be done for certain types of column changes")
    private BackfillPreference backfillPreference;
    @JsonProperty("createdAt")
    private Long createdAt;
    @JsonProperty("tags")
    private List<Tag> tags = new ArrayList<Tag>();
    @JsonIgnore
    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
    private final static long serialVersionUID = 4515365460045726884L;
  
    /**
     * Namespace Definition
     * <p>
     * Method used for computing final namespace in destination (Required)
     *
     */
    @JsonProperty("namespaceDefinition")
    public JobSyncConfig.NamespaceDefinitionType getNamespaceDefinition() {
      return namespaceDefinition;
    }
  
    /**
     * Namespace Definition
     * <p>
     * Method used for computing final namespace in destination (Required)
     *
     */
    @JsonProperty("namespaceDefinition")
    public void setNamespaceDefinition(JobSyncConfig.NamespaceDefinitionType namespaceDefinition) {
      this.namespaceDefinition = namespaceDefinition;
    }
  
    public StandardSync withNamespaceDefinition(JobSyncConfig.NamespaceDefinitionType namespaceDefinition) {
      this.namespaceDefinition = namespaceDefinition;
      return this;
    }
  
    @JsonProperty("namespaceFormat")
    public String getNamespaceFormat() {
      return namespaceFormat;
    }
  
    @JsonProperty("namespaceFormat")
    public void setNamespaceFormat(String namespaceFormat) {
      this.namespaceFormat = namespaceFormat;
    }
  
    public StandardSync withNamespaceFormat(String namespaceFormat) {
      this.namespaceFormat = namespaceFormat;
      return this;
    }
  
    /**
     * Prefix that will be prepended to the name of each stream when it is written to the destination.
     *
     */
    @JsonProperty("prefix")
    public String getPrefix() {
      return prefix;
    }
  
    /**
     * Prefix that will be prepended to the name of each stream when it is written to the destination.
     *
     */
    @JsonProperty("prefix")
    public void setPrefix(String prefix) {
      this.prefix = prefix;
    }
  
    public StandardSync withPrefix(String prefix) {
      this.prefix = prefix;
      return this;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("sourceId")
    public UUID getSourceId() {
      return sourceId;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("sourceId")
    public void setSourceId(UUID sourceId) {
      this.sourceId = sourceId;
    }
  
    public StandardSync withSourceId(UUID sourceId) {
      this.sourceId = sourceId;
      return this;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("destinationId")
    public UUID getDestinationId() {
      return destinationId;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("destinationId")
    public void setDestinationId(UUID destinationId) {
      this.destinationId = destinationId;
    }
  
    public StandardSync withDestinationId(UUID destinationId) {
      this.destinationId = destinationId;
      return this;
    }
  
    @JsonProperty("operationIds")
    public List<UUID> getOperationIds() {
      return operationIds;
    }
  
    @JsonProperty("operationIds")
    public void setOperationIds(List<UUID> operationIds) {
      this.operationIds = operationIds;
    }
  
    public StandardSync withOperationIds(List<UUID> operationIds) {
      this.operationIds = operationIds;
      return this;
    }
  
    @JsonProperty("connectionId")
    public UUID getConnectionId() {
      return connectionId;
    }
  
    @JsonProperty("connectionId")
    public void setConnectionId(UUID connectionId) {
      this.connectionId = connectionId;
    }
  
    public StandardSync withConnectionId(UUID connectionId) {
      this.connectionId = connectionId;
      return this;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("name")
    public String getName() {
      return name;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("name")
    public void setName(String name) {
      this.name = name;
    }
  
    public StandardSync withName(String name) {
      this.name = name;
      return this;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("catalog")
    public ConfiguredAirbyteCatalog getCatalog() {
      return catalog;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("catalog")
    public void setCatalog(ConfiguredAirbyteCatalog catalog) {
      this.catalog = catalog;
    }
  
    public StandardSync withCatalog(ConfiguredAirbyteCatalog catalog) {
      this.catalog = catalog;
      return this;
    }
  
    /**
     * A map of StreamDescriptor to an indicator of whether field selection is enabled for that stream.
     *
     */
    @JsonProperty("fieldSelectionData")
    public FieldSelectionData getFieldSelectionData() {
      return fieldSelectionData;
    }
  
    /**
     * A map of StreamDescriptor to an indicator of whether field selection is enabled for that stream.
     *
     */
    @JsonProperty("fieldSelectionData")
    public void setFieldSelectionData(FieldSelectionData fieldSelectionData) {
      this.fieldSelectionData = fieldSelectionData;
    }
  
    public StandardSync withFieldSelectionData(FieldSelectionData fieldSelectionData) {
      this.fieldSelectionData = fieldSelectionData;
      return this;
    }
  
    @JsonProperty("status")
    public Status getStatus() {
      return status;
    }
  
    @JsonProperty("status")
    public void setStatus(Status status) {
      this.status = status;
    }
  
    public StandardSync withStatus(Status status) {
      this.status = status;
      return this;
    }
  
    @JsonProperty("schedule")
    public Schedule getSchedule() {
      return schedule;
    }
  
    @JsonProperty("schedule")
    public void setSchedule(Schedule schedule) {
      this.schedule = schedule;
    }
  
    public StandardSync withSchedule(Schedule schedule) {
      this.schedule = schedule;
      return this;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("manual")
    public Boolean getManual() {
      return manual;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("manual")
    public void setManual(Boolean manual) {
      this.manual = manual;
    }
  
    public StandardSync withManual(Boolean manual) {
      this.manual = manual;
      return this;
    }
  
    @JsonProperty("scheduleType")
    public ScheduleType getScheduleType() {
      return scheduleType;
    }
  
    @JsonProperty("scheduleType")
    public void setScheduleType(ScheduleType scheduleType) {
      this.scheduleType = scheduleType;
    }
  
    public StandardSync withScheduleType(ScheduleType scheduleType) {
      this.scheduleType = scheduleType;
      return this;
    }
  
    @JsonProperty("scheduleData")
    public ScheduleData getScheduleData() {
      return scheduleData;
    }
  
    @JsonProperty("scheduleData")
    public void setScheduleData(ScheduleData scheduleData) {
      this.scheduleData = scheduleData;
    }
  
    public StandardSync withScheduleData(ScheduleData scheduleData) {
      this.scheduleData = scheduleData;
      return this;
    }
  
    @JsonProperty("source_catalog_id")
    public UUID getSourceCatalogId() {
      return sourceCatalogId;
    }
  
    @JsonProperty("source_catalog_id")
    public void setSourceCatalogId(UUID sourceCatalogId) {
      this.sourceCatalogId = sourceCatalogId;
    }
  
    public StandardSync withSourceCatalogId(UUID sourceCatalogId) {
      this.sourceCatalogId = sourceCatalogId;
      return this;
    }
  
    @JsonProperty("destinationCatalogId")
    public UUID getDestinationCatalogId() {
      return destinationCatalogId;
    }
  
    @JsonProperty("destinationCatalogId")
    public void setDestinationCatalogId(UUID destinationCatalogId) {
      this.destinationCatalogId = destinationCatalogId;
    }
  
    public StandardSync withDestinationCatalogId(UUID destinationCatalogId) {
      this.destinationCatalogId = destinationCatalogId;
      return this;
    }
  
    /**
     * ResourceRequirements
     * <p>
     * generic configuration for pod source requirements
     *
     */
    @JsonProperty("resourceRequirements")
    public ResourceRequirements getResourceRequirements() {
      return resourceRequirements;
    }
  
    /**
     * ResourceRequirements
     * <p>
     * generic configuration for pod source requirements
     *
     */
    @JsonProperty("resourceRequirements")
    public void setResourceRequirements(ResourceRequirements resourceRequirements) {
      this.resourceRequirements = resourceRequirements;
    }
  
    public StandardSync withResourceRequirements(ResourceRequirements resourceRequirements) {
      this.resourceRequirements = resourceRequirements;
      return this;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("breakingChange")
    public Boolean getBreakingChange() {
      return breakingChange;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("breakingChange")
    public void setBreakingChange(Boolean breakingChange) {
      this.breakingChange = breakingChange;
    }
  
    public StandardSync withBreakingChange(Boolean breakingChange) {
      this.breakingChange = breakingChange;
      return this;
    }
  
    @JsonProperty("notifySchemaChanges")
    public Boolean getNotifySchemaChanges() {
      return notifySchemaChanges;
    }
  
    @JsonProperty("notifySchemaChanges")
    public void setNotifySchemaChanges(Boolean notifySchemaChanges) {
      this.notifySchemaChanges = notifySchemaChanges;
    }
  
    public StandardSync withNotifySchemaChanges(Boolean notifySchemaChanges) {
      this.notifySchemaChanges = notifySchemaChanges;
      return this;
    }
  
    @JsonProperty("notifySchemaChangesByEmail")
    public Boolean getNotifySchemaChangesByEmail() {
      return notifySchemaChangesByEmail;
    }
  
    @JsonProperty("notifySchemaChangesByEmail")
    public void setNotifySchemaChangesByEmail(Boolean notifySchemaChangesByEmail) {
      this.notifySchemaChangesByEmail = notifySchemaChangesByEmail;
    }
  
    public StandardSync withNotifySchemaChangesByEmail(Boolean notifySchemaChangesByEmail) {
      this.notifySchemaChangesByEmail = notifySchemaChangesByEmail;
      return this;
    }
  
    @JsonProperty("nonBreakingChangesPreference")
    public NonBreakingChangesPreference getNonBreakingChangesPreference() {
      return nonBreakingChangesPreference;
    }
  
    @JsonProperty("nonBreakingChangesPreference")
    public void setNonBreakingChangesPreference(NonBreakingChangesPreference nonBreakingChangesPreference) {
      this.nonBreakingChangesPreference = nonBreakingChangesPreference;
    }
  
    public StandardSync withNonBreakingChangesPreference(NonBreakingChangesPreference nonBreakingChangesPreference) {
      this.nonBreakingChangesPreference = nonBreakingChangesPreference;
      return this;
    }
  
    /**
     * Whether a backfill should be done for certain types of column changes
     *
     */
    @JsonProperty("backfillPreference")
    public BackfillPreference getBackfillPreference() {
      return backfillPreference;
    }
  
    /**
     * Whether a backfill should be done for certain types of column changes
     *
     */
    @JsonProperty("backfillPreference")
    public void setBackfillPreference(BackfillPreference backfillPreference) {
      this.backfillPreference = backfillPreference;
    }
  
    public StandardSync withBackfillPreference(BackfillPreference backfillPreference) {
      this.backfillPreference = backfillPreference;
      return this;
    }
  
    @JsonProperty("createdAt")
    public Long getCreatedAt() {
      return createdAt;
    }
  
    @JsonProperty("createdAt")
    public void setCreatedAt(Long createdAt) {
      this.createdAt = createdAt;
    }
  
    public StandardSync withCreatedAt(Long createdAt) {
      this.createdAt = createdAt;
      return this;
    }
  
    @JsonProperty("tags")
    public List<Tag> getTags() {
      return tags;
    }
  
    @JsonProperty("tags")
    public void setTags(List<Tag> tags) {
      this.tags = tags;
    }
  
    public StandardSync withTags(List<Tag> tags) {
      this.tags = tags;
      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 StandardSync withAdditionalProperty(String name, Object value) {
      this.additionalProperties.put(name, value);
      return this;
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append(StandardSync.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
      sb.append("namespaceDefinition");
      sb.append('=');
      sb.append(((this.namespaceDefinition == null) ? "<null>" : this.namespaceDefinition));
      sb.append(',');
      sb.append("namespaceFormat");
      sb.append('=');
      sb.append(((this.namespaceFormat == null) ? "<null>" : this.namespaceFormat));
      sb.append(',');
      sb.append("prefix");
      sb.append('=');
      sb.append(((this.prefix == null) ? "<null>" : this.prefix));
      sb.append(',');
      sb.append("sourceId");
      sb.append('=');
      sb.append(((this.sourceId == null) ? "<null>" : this.sourceId));
      sb.append(',');
      sb.append("destinationId");
      sb.append('=');
      sb.append(((this.destinationId == null) ? "<null>" : this.destinationId));
      sb.append(',');
      sb.append("operationIds");
      sb.append('=');
      sb.append(((this.operationIds == null) ? "<null>" : this.operationIds));
      sb.append(',');
      sb.append("connectionId");
      sb.append('=');
      sb.append(((this.connectionId == null) ? "<null>" : this.connectionId));
      sb.append(',');
      sb.append("name");
      sb.append('=');
      sb.append(((this.name == null) ? "<null>" : this.name));
      sb.append(',');
      sb.append("catalog");
      sb.append('=');
      sb.append(((this.catalog == null) ? "<null>" : this.catalog));
      sb.append(',');
      sb.append("fieldSelectionData");
      sb.append('=');
      sb.append(((this.fieldSelectionData == null) ? "<null>" : this.fieldSelectionData));
      sb.append(',');
      sb.append("status");
      sb.append('=');
      sb.append(((this.status == null) ? "<null>" : this.status));
      sb.append(',');
      sb.append("schedule");
      sb.append('=');
      sb.append(((this.schedule == null) ? "<null>" : this.schedule));
      sb.append(',');
      sb.append("manual");
      sb.append('=');
      sb.append(((this.manual == null) ? "<null>" : this.manual));
      sb.append(',');
      sb.append("scheduleType");
      sb.append('=');
      sb.append(((this.scheduleType == null) ? "<null>" : this.scheduleType));
      sb.append(',');
      sb.append("scheduleData");
      sb.append('=');
      sb.append(((this.scheduleData == null) ? "<null>" : this.scheduleData));
      sb.append(',');
      sb.append("sourceCatalogId");
      sb.append('=');
      sb.append(((this.sourceCatalogId == null) ? "<null>" : this.sourceCatalogId));
      sb.append(',');
      sb.append("destinationCatalogId");
      sb.append('=');
      sb.append(((this.destinationCatalogId == null) ? "<null>" : this.destinationCatalogId));
      sb.append(',');
      sb.append("resourceRequirements");
      sb.append('=');
      sb.append(((this.resourceRequirements == null) ? "<null>" : this.resourceRequirements));
      sb.append(',');
      sb.append("breakingChange");
      sb.append('=');
      sb.append(((this.breakingChange == null) ? "<null>" : this.breakingChange));
      sb.append(',');
      sb.append("notifySchemaChanges");
      sb.append('=');
      sb.append(((this.notifySchemaChanges == null) ? "<null>" : this.notifySchemaChanges));
      sb.append(',');
      sb.append("notifySchemaChangesByEmail");
      sb.append('=');
      sb.append(((this.notifySchemaChangesByEmail == null) ? "<null>" : this.notifySchemaChangesByEmail));
      sb.append(',');
      sb.append("nonBreakingChangesPreference");
      sb.append('=');
      sb.append(((this.nonBreakingChangesPreference == null) ? "<null>" : this.nonBreakingChangesPreference));
      sb.append(',');
      sb.append("backfillPreference");
      sb.append('=');
      sb.append(((this.backfillPreference == null) ? "<null>" : this.backfillPreference));
      sb.append(',');
      sb.append("createdAt");
      sb.append('=');
      sb.append(((this.createdAt == null) ? "<null>" : this.createdAt));
      sb.append(',');
      sb.append("tags");
      sb.append('=');
      sb.append(((this.tags == null) ? "<null>" : this.tags));
      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.sourceId == null) ? 0 : this.sourceId.hashCode()));
      result = ((result * 31) + ((this.prefix == null) ? 0 : this.prefix.hashCode()));
      result = ((result * 31) + ((this.catalog == null) ? 0 : this.catalog.hashCode()));
      result = ((result * 31) + ((this.destinationId == null) ? 0 : this.destinationId.hashCode()));
      result = ((result * 31) + ((this.manual == null) ? 0 : this.manual.hashCode()));
      result = ((result * 31) + ((this.backfillPreference == null) ? 0 : this.backfillPreference.hashCode()));
      result = ((result * 31) + ((this.createdAt == null) ? 0 : this.createdAt.hashCode()));
      result = ((result * 31) + ((this.notifySchemaChanges == null) ? 0 : this.notifySchemaChanges.hashCode()));
      result = ((result * 31) + ((this.notifySchemaChangesByEmail == null) ? 0 : this.notifySchemaChangesByEmail.hashCode()));
      result = ((result * 31) + ((this.namespaceFormat == null) ? 0 : this.namespaceFormat.hashCode()));
      result = ((result * 31) + ((this.scheduleData == null) ? 0 : this.scheduleData.hashCode()));
      result = ((result * 31) + ((this.nonBreakingChangesPreference == null) ? 0 : this.nonBreakingChangesPreference.hashCode()));
      result = ((result * 31) + ((this.destinationCatalogId == null) ? 0 : this.destinationCatalogId.hashCode()));
      result = ((result * 31) + ((this.fieldSelectionData == null) ? 0 : this.fieldSelectionData.hashCode()));
      result = ((result * 31) + ((this.sourceCatalogId == null) ? 0 : this.sourceCatalogId.hashCode()));
      result = ((result * 31) + ((this.namespaceDefinition == null) ? 0 : this.namespaceDefinition.hashCode()));
      result = ((result * 31) + ((this.tags == null) ? 0 : this.tags.hashCode()));
      result = ((result * 31) + ((this.resourceRequirements == null) ? 0 : this.resourceRequirements.hashCode()));
      result = ((result * 31) + ((this.schedule == null) ? 0 : this.schedule.hashCode()));
      result = ((result * 31) + ((this.breakingChange == null) ? 0 : this.breakingChange.hashCode()));
      result = ((result * 31) + ((this.scheduleType == null) ? 0 : this.scheduleType.hashCode()));
      result = ((result * 31) + ((this.name == null) ? 0 : this.name.hashCode()));
      result = ((result * 31) + ((this.operationIds == null) ? 0 : this.operationIds.hashCode()));
      result = ((result * 31) + ((this.connectionId == null) ? 0 : this.connectionId.hashCode()));
      result = ((result * 31) + ((this.additionalProperties == null) ? 0 : this.additionalProperties.hashCode()));
      result = ((result * 31) + ((this.status == null) ? 0 : this.status.hashCode()));
      return result;
    }
  
    @Override
    public boolean equals(Object other) {
      if (other == this) {
        return true;
      }
      if ((other instanceof StandardSync) == false) {
        return false;
      }
      StandardSync rhs = ((StandardSync) other);
      return (((((((((((((((((((((((((((this.sourceId == rhs.sourceId) || ((this.sourceId != null) && this.sourceId.equals(rhs.sourceId)))
          && ((this.prefix == rhs.prefix) || ((this.prefix != null) && this.prefix.equals(rhs.prefix))))
          && ((this.catalog == rhs.catalog) || ((this.catalog != null) && this.catalog.equals(rhs.catalog))))
          && ((this.destinationId == rhs.destinationId) || ((this.destinationId != null) && this.destinationId.equals(rhs.destinationId))))
          && ((this.manual == rhs.manual) || ((this.manual != null) && this.manual.equals(rhs.manual))))
          && ((this.backfillPreference == rhs.backfillPreference)
              || ((this.backfillPreference != null) && this.backfillPreference.equals(rhs.backfillPreference))))
          && ((this.createdAt == rhs.createdAt) || ((this.createdAt != null) && this.createdAt.equals(rhs.createdAt))))
          && ((this.notifySchemaChanges == rhs.notifySchemaChanges)
              || ((this.notifySchemaChanges != null) && this.notifySchemaChanges.equals(rhs.notifySchemaChanges))))
          && ((this.notifySchemaChangesByEmail == rhs.notifySchemaChangesByEmail)
              || ((this.notifySchemaChangesByEmail != null) && this.notifySchemaChangesByEmail.equals(rhs.notifySchemaChangesByEmail))))
          && ((this.namespaceFormat == rhs.namespaceFormat) || ((this.namespaceFormat != null) && this.namespaceFormat.equals(rhs.namespaceFormat))))
          && ((this.scheduleData == rhs.scheduleData) || ((this.scheduleData != null) && this.scheduleData.equals(rhs.scheduleData))))
          && ((this.nonBreakingChangesPreference == rhs.nonBreakingChangesPreference)
              || ((this.nonBreakingChangesPreference != null) && this.nonBreakingChangesPreference.equals(rhs.nonBreakingChangesPreference))))
          && ((this.destinationCatalogId == rhs.destinationCatalogId)
              || ((this.destinationCatalogId != null) && this.destinationCatalogId.equals(rhs.destinationCatalogId))))
          && ((this.fieldSelectionData == rhs.fieldSelectionData)
              || ((this.fieldSelectionData != null) && this.fieldSelectionData.equals(rhs.fieldSelectionData))))
          && ((this.sourceCatalogId == rhs.sourceCatalogId) || ((this.sourceCatalogId != null) && this.sourceCatalogId.equals(rhs.sourceCatalogId))))
          && ((this.namespaceDefinition == rhs.namespaceDefinition)
              || ((this.namespaceDefinition != null) && this.namespaceDefinition.equals(rhs.namespaceDefinition))))
          && ((this.tags == rhs.tags) || ((this.tags != null) && this.tags.equals(rhs.tags))))
          && ((this.resourceRequirements == rhs.resourceRequirements)
              || ((this.resourceRequirements != null) && this.resourceRequirements.equals(rhs.resourceRequirements))))
          && ((this.schedule == rhs.schedule) || ((this.schedule != null) && this.schedule.equals(rhs.schedule))))
          && ((this.breakingChange == rhs.breakingChange) || ((this.breakingChange != null) && this.breakingChange.equals(rhs.breakingChange))))
          && ((this.scheduleType == rhs.scheduleType) || ((this.scheduleType != null) && this.scheduleType.equals(rhs.scheduleType))))
          && ((this.name == rhs.name) || ((this.name != null) && this.name.equals(rhs.name))))
          && ((this.operationIds == rhs.operationIds) || ((this.operationIds != null) && this.operationIds.equals(rhs.operationIds))))
          && ((this.connectionId == rhs.connectionId) || ((this.connectionId != null) && this.connectionId.equals(rhs.connectionId))))
          && ((this.additionalProperties == rhs.additionalProperties)
              || ((this.additionalProperties != null) && this.additionalProperties.equals(rhs.additionalProperties))))
          && ((this.status == rhs.status) || ((this.status != null) && this.status.equals(rhs.status))));
    }
  
    /**
     * Whether a backfill should be done for certain types of column changes
     *
     */
    public enum BackfillPreference {
  
      ENABLED("enabled"),
      DISABLED("disabled");
  
      private final String value;
      private final static Map<String, BackfillPreference> CONSTANTS = new HashMap<String, BackfillPreference>();
  
      static {
        for (BackfillPreference c : values()) {
          CONSTANTS.put(c.value, c);
        }
      }
  
      private BackfillPreference(String value) {
        this.value = value;
      }
  
      @Override
      public String toString() {
        return this.value;
      }
  
      @JsonValue
      public String value() {
        return this.value;
      }
  
      @JsonCreator
      public static BackfillPreference fromValue(String value) {
        BackfillPreference constant = CONSTANTS.get(value);
        if (constant == null) {
          throw new IllegalArgumentException(value);
        } else {
          return constant;
        }
      }
  
    }
  
    public enum NonBreakingChangesPreference {
  
      IGNORE("ignore"),
      DISABLE("disable"),
      PROPAGATE_COLUMNS("propagate_columns"),
      PROPAGATE_FULLY("propagate_fully");
  
      private final String value;
      private final static Map<String, NonBreakingChangesPreference> CONSTANTS = new HashMap<String, NonBreakingChangesPreference>();
  
      static {
        for (NonBreakingChangesPreference c : values()) {
          CONSTANTS.put(c.value, c);
        }
      }
  
      private NonBreakingChangesPreference(String value) {
        this.value = value;
      }
  
      @Override
      public String toString() {
        return this.value;
      }
  
      @JsonValue
      public String value() {
        return this.value;
      }
  
      @JsonCreator
      public static NonBreakingChangesPreference fromValue(String value) {
        NonBreakingChangesPreference constant = CONSTANTS.get(value);
        if (constant == null) {
          throw new IllegalArgumentException(value);
        } else {
          return constant;
        }
      }
  
    }
  
    public enum ScheduleType {
  
      MANUAL("Manual"),
      BASIC_SCHEDULE("BasicSchedule"),
      CRON("Cron");
  
      private final String value;
      private final static Map<String, ScheduleType> CONSTANTS = new HashMap<String, ScheduleType>();
  
      static {
        for (ScheduleType c : values()) {
          CONSTANTS.put(c.value, c);
        }
      }
  
      private ScheduleType(String value) {
        this.value = value;
      }
  
      @Override
      public String toString() {
        return this.value;
      }
  
      @JsonValue
      public String value() {
        return this.value;
      }
  
      @JsonCreator
      public static ScheduleType fromValue(String value) {
        ScheduleType constant = CONSTANTS.get(value);
        if (constant == null) {
          throw new IllegalArgumentException(value);
        } else {
          return constant;
        }
      }
  
    }
  
    public enum Status {
  
      ACTIVE("active"),
      INACTIVE("inactive"),
      DEPRECATED("deprecated");
  
      private final String value;
      private final static Map<String, Status> CONSTANTS = new HashMap<String, Status>();
  
      static {
        for (Status c : values()) {
          CONSTANTS.put(c.value, c);
        }
      }
  
      private Status(String value) {
        this.value = value;
      }
  
      @Override
      public String toString() {
        return this.value;
      }
  
      @JsonValue
      public String value() {
        return this.value;
      }
  
      @JsonCreator
      public static Status fromValue(String value) {
        Status constant = CONSTANTS.get(value);
        if (constant == null) {
          throw new IllegalArgumentException(value);
        } else {
          return constant;
        }
      }
  
    }
  
  }
  