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;
  import java.util.Objects;
  import java.util.UUID;
  
  /**
   * ScopedConfiguration
   * <p>
   * scoped configuration entry
   *
   */
  @JsonInclude(JsonInclude.Include.NON_NULL)
  @JsonPropertyOrder({
    "id",
    "key",
    "value",
    "resourceId",
    "resourceType",
    "scopeId",
    "scopeType",
    "originType",
    "origin",
    "description",
    "referenceUrl",
    "expiresAt",
    "updatedAt",
    "createdAt"
  })
  @Generated(value = "Generated by jsonSchema2Pojo")
  public class ScopedConfiguration implements Serializable {
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("id")
    private UUID id;
    /**
     * Which configuration is being set (Required)
     *
     */
    @JsonProperty("key")
    @JsonPropertyDescription("Which configuration is being set")
    private String key;
    /**
     * Value of the configuration (Required)
     *
     */
    @JsonProperty("value")
    @JsonPropertyDescription("Value of the configuration")
    private String value;
    /**
     * ID of resource referenced by the configuration (of type resourceType)
     *
     */
    @JsonProperty("resourceId")
    @JsonPropertyDescription("ID of resource referenced by the configuration (of type resourceType)")
    private UUID resourceId;
    /**
     * ConfigResourceType
     * <p>
     * ScopedConfiguration resource types
     *
     */
    @JsonProperty("resourceType")
    @JsonPropertyDescription("ScopedConfiguration resource types")
    private ConfigResourceType resourceType;
    /**
     * ID of scope targeted by the configuration (of type scopeType) (Required)
     *
     */
    @JsonProperty("scopeId")
    @JsonPropertyDescription("ID of scope targeted by the configuration (of type scopeType)")
    private UUID scopeId;
    /**
     * ConfigScopeType
     * <p>
     * ScopedConfiguration scope types (Required)
     *
     */
    @JsonProperty("scopeType")
    @JsonPropertyDescription("ScopedConfiguration scope types")
    private ConfigScopeType scopeType;
    /**
     * ConfigOriginType
     * <p>
     * ScopedConfiguration origin types (Required)
     *
     */
    @JsonProperty("originType")
    @JsonPropertyDescription("ScopedConfiguration origin types")
    private ConfigOriginType originType;
    /**
     * Reference to where this configuration came from (Required)
     *
     */
    @JsonProperty("origin")
    @JsonPropertyDescription("Reference to where this configuration came from")
    private String origin;
    /**
     * More information about why the configuration was set
     *
     */
    @JsonProperty("description")
    @JsonPropertyDescription("More information about why the configuration was set")
    private String description;
    /**
     * URL with more information about why the configuration was set (e.g. OC issue, slack link, etc)
     *
     */
    @JsonProperty("referenceUrl")
    @JsonPropertyDescription("URL with more information about why the configuration was set (e.g. OC issue, slack link, etc)")
    private String referenceUrl;
    /**
     * Date at which the configuration entry is no longer valid
     *
     */
    @JsonProperty("expiresAt")
    @JsonPropertyDescription("Date at which the configuration entry is no longer valid")
    private String expiresAt;
    @JsonProperty("updatedAt")
    private Long updatedAt;
    @JsonProperty("createdAt")
    private Long createdAt;
    @JsonIgnore
    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
    private final static long serialVersionUID = 7800385658843018496L;
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("id")
    public UUID getId() {
      return id;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("id")
    public void setId(UUID id) {
      this.id = id;
    }
  
    public ScopedConfiguration withId(UUID id) {
      this.id = id;
      return this;
    }
  
    /**
     * Which configuration is being set (Required)
     *
     */
    @JsonProperty("key")
    public String getKey() {
      return key;
    }
  
    /**
     * Which configuration is being set (Required)
     *
     */
    @JsonProperty("key")
    public void setKey(String key) {
      this.key = key;
    }
  
    public ScopedConfiguration withKey(String key) {
      this.key = key;
      return this;
    }
  
    /**
     * Value of the configuration (Required)
     *
     */
    @JsonProperty("value")
    public String getValue() {
      return value;
    }
  
    /**
     * Value of the configuration (Required)
     *
     */
    @JsonProperty("value")
    public void setValue(String value) {
      this.value = value;
    }
  
    public ScopedConfiguration withValue(String value) {
      this.value = value;
      return this;
    }
  
    /**
     * ID of resource referenced by the configuration (of type resourceType)
     *
     */
    @JsonProperty("resourceId")
    public UUID getResourceId() {
      return resourceId;
    }
  
    /**
     * ID of resource referenced by the configuration (of type resourceType)
     *
     */
    @JsonProperty("resourceId")
    public void setResourceId(UUID resourceId) {
      this.resourceId = resourceId;
    }
  
    public ScopedConfiguration withResourceId(UUID resourceId) {
      this.resourceId = resourceId;
      return this;
    }
  
    /**
     * ConfigResourceType
     * <p>
     * ScopedConfiguration resource types
     *
     */
    @JsonProperty("resourceType")
    public ConfigResourceType getResourceType() {
      return resourceType;
    }
  
    /**
     * ConfigResourceType
     * <p>
     * ScopedConfiguration resource types
     *
     */
    @JsonProperty("resourceType")
    public void setResourceType(ConfigResourceType resourceType) {
      this.resourceType = resourceType;
    }
  
    public ScopedConfiguration withResourceType(ConfigResourceType resourceType) {
      this.resourceType = resourceType;
      return this;
    }
  
    /**
     * ID of scope targeted by the configuration (of type scopeType) (Required)
     *
     */
    @JsonProperty("scopeId")
    public UUID getScopeId() {
      return scopeId;
    }
  
    /**
     * ID of scope targeted by the configuration (of type scopeType) (Required)
     *
     */
    @JsonProperty("scopeId")
    public void setScopeId(UUID scopeId) {
      this.scopeId = scopeId;
    }
  
    public ScopedConfiguration withScopeId(UUID scopeId) {
      this.scopeId = scopeId;
      return this;
    }
  
    /**
     * ConfigScopeType
     * <p>
     * ScopedConfiguration scope types (Required)
     *
     */
    @JsonProperty("scopeType")
    public ConfigScopeType getScopeType() {
      return scopeType;
    }
  
    /**
     * ConfigScopeType
     * <p>
     * ScopedConfiguration scope types (Required)
     *
     */
    @JsonProperty("scopeType")
    public void setScopeType(ConfigScopeType scopeType) {
      this.scopeType = scopeType;
    }
  
    public ScopedConfiguration withScopeType(ConfigScopeType scopeType) {
      this.scopeType = scopeType;
      return this;
    }
  
    /**
     * ConfigOriginType
     * <p>
     * ScopedConfiguration origin types (Required)
     *
     */
    @JsonProperty("originType")
    public ConfigOriginType getOriginType() {
      return originType;
    }
  
    /**
     * ConfigOriginType
     * <p>
     * ScopedConfiguration origin types (Required)
     *
     */
    @JsonProperty("originType")
    public void setOriginType(ConfigOriginType originType) {
      this.originType = originType;
    }
  
    public ScopedConfiguration withOriginType(ConfigOriginType originType) {
      this.originType = originType;
      return this;
    }
  
    /**
     * Reference to where this configuration came from (Required)
     *
     */
    @JsonProperty("origin")
    public String getOrigin() {
      return origin;
    }
  
    /**
     * Reference to where this configuration came from (Required)
     *
     */
    @JsonProperty("origin")
    public void setOrigin(String origin) {
      this.origin = origin;
    }
  
    public ScopedConfiguration withOrigin(String origin) {
      this.origin = origin;
      return this;
    }
  
    /**
     * More information about why the configuration was set
     *
     */
    @JsonProperty("description")
    public String getDescription() {
      return description;
    }
  
    /**
     * More information about why the configuration was set
     *
     */
    @JsonProperty("description")
    public void setDescription(String description) {
      this.description = description;
    }
  
    public ScopedConfiguration withDescription(String description) {
      this.description = description;
      return this;
    }
  
    /**
     * URL with more information about why the configuration was set (e.g. OC issue, slack link, etc)
     *
     */
    @JsonProperty("referenceUrl")
    public String getReferenceUrl() {
      return referenceUrl;
    }
  
    /**
     * URL with more information about why the configuration was set (e.g. OC issue, slack link, etc)
     *
     */
    @JsonProperty("referenceUrl")
    public void setReferenceUrl(String referenceUrl) {
      this.referenceUrl = referenceUrl;
    }
  
    public ScopedConfiguration withReferenceUrl(String referenceUrl) {
      this.referenceUrl = referenceUrl;
      return this;
    }
  
    /**
     * Date at which the configuration entry is no longer valid
     *
     */
    @JsonProperty("expiresAt")
    public String getExpiresAt() {
      return expiresAt;
    }
  
    /**
     * Date at which the configuration entry is no longer valid
     *
     */
    @JsonProperty("expiresAt")
    public void setExpiresAt(String expiresAt) {
      this.expiresAt = expiresAt;
    }
  
    public ScopedConfiguration withExpiresAt(String expiresAt) {
      this.expiresAt = expiresAt;
      return this;
    }
  
    @JsonProperty("updatedAt")
    public Long getUpdatedAt() {
      return updatedAt;
    }
  
    @JsonProperty("updatedAt")
    public void setUpdatedAt(Long updatedAt) {
      this.updatedAt = updatedAt;
    }
  
    public ScopedConfiguration withUpdatedAt(Long updatedAt) {
      this.updatedAt = updatedAt;
      return this;
    }
  
    @JsonProperty("createdAt")
    public Long getCreatedAt() {
      return createdAt;
    }
  
    @JsonProperty("createdAt")
    public void setCreatedAt(Long createdAt) {
      this.createdAt = createdAt;
    }
  
    public ScopedConfiguration withCreatedAt(Long createdAt) {
      this.createdAt = createdAt;
      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 ScopedConfiguration withAdditionalProperty(String name, Object value) {
      this.additionalProperties.put(name, value);
      return this;
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append(ScopedConfiguration.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
      sb.append("id");
      sb.append('=');
      sb.append(((this.id == null) ? "<null>" : this.id));
      sb.append(',');
      sb.append("key");
      sb.append('=');
      sb.append(((this.key == null) ? "<null>" : this.key));
      sb.append(',');
      sb.append("value");
      sb.append('=');
      sb.append(((this.value == null) ? "<null>" : this.value));
      sb.append(',');
      sb.append("resourceId");
      sb.append('=');
      sb.append(((this.resourceId == null) ? "<null>" : this.resourceId));
      sb.append(',');
      sb.append("resourceType");
      sb.append('=');
      sb.append(((this.resourceType == null) ? "<null>" : this.resourceType));
      sb.append(',');
      sb.append("scopeId");
      sb.append('=');
      sb.append(((this.scopeId == null) ? "<null>" : this.scopeId));
      sb.append(',');
      sb.append("scopeType");
      sb.append('=');
      sb.append(((this.scopeType == null) ? "<null>" : this.scopeType));
      sb.append(',');
      sb.append("originType");
      sb.append('=');
      sb.append(((this.originType == null) ? "<null>" : this.originType));
      sb.append(',');
      sb.append("origin");
      sb.append('=');
      sb.append(((this.origin == null) ? "<null>" : this.origin));
      sb.append(',');
      sb.append("description");
      sb.append('=');
      sb.append(((this.description == null) ? "<null>" : this.description));
      sb.append(',');
      sb.append("referenceUrl");
      sb.append('=');
      sb.append(((this.referenceUrl == null) ? "<null>" : this.referenceUrl));
      sb.append(',');
      sb.append("expiresAt");
      sb.append('=');
      sb.append(((this.expiresAt == null) ? "<null>" : this.expiresAt));
      sb.append(',');
      sb.append("updatedAt");
      sb.append('=');
      sb.append(((this.updatedAt == null) ? "<null>" : this.updatedAt));
      sb.append(',');
      sb.append("createdAt");
      sb.append('=');
      sb.append(((this.createdAt == null) ? "<null>" : this.createdAt));
      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.resourceId == null) ? 0 : this.resourceId.hashCode()));
      result = ((result * 31) + ((this.scopeId == null) ? 0 : this.scopeId.hashCode()));
      result = ((result * 31) + ((this.origin == null) ? 0 : this.origin.hashCode()));
      result = ((result * 31) + ((this.description == null) ? 0 : this.description.hashCode()));
      result = ((result * 31) + ((this.expiresAt == null) ? 0 : this.expiresAt.hashCode()));
      result = ((result * 31) + ((this.referenceUrl == null) ? 0 : this.referenceUrl.hashCode()));
      result = ((result * 31) + ((this.originType == null) ? 0 : this.originType.hashCode()));
      result = ((result * 31) + ((this.createdAt == null) ? 0 : this.createdAt.hashCode()));
      result = ((result * 31) + ((this.scopeType == null) ? 0 : this.scopeType.hashCode()));
      result = ((result * 31) + ((this.id == null) ? 0 : this.id.hashCode()));
      result = ((result * 31) + ((this.additionalProperties == null) ? 0 : this.additionalProperties.hashCode()));
      result = ((result * 31) + ((this.value == null) ? 0 : this.value.hashCode()));
      result = ((result * 31) + ((this.key == null) ? 0 : this.key.hashCode()));
      result = ((result * 31) + ((this.resourceType == null) ? 0 : this.resourceType.hashCode()));
      result = ((result * 31) + ((this.updatedAt == null) ? 0 : this.updatedAt.hashCode()));
      return result;
    }
  
    @Override
    public boolean equals(Object other) {
      if (other == this) {
        return true;
      }
      if ((other instanceof ScopedConfiguration) == false) {
        return false;
      }
      ScopedConfiguration rhs = ((ScopedConfiguration) other);
      return (((((((((((((((Objects.equals(this.resourceId, rhs.resourceId))
          && (Objects.equals(this.scopeId, rhs.scopeId)))
          && (Objects.equals(this.origin, rhs.origin)))
          && (Objects.equals(this.description, rhs.description)))
          && ((Objects.equals(this.expiresAt, rhs.expiresAt)) || ((this.expiresAt != null) && this.expiresAt.equals(rhs.expiresAt))))
          && ((Objects.equals(this.referenceUrl, rhs.referenceUrl)) || ((this.referenceUrl != null) && this.referenceUrl.equals(rhs.referenceUrl))))
          && (Objects.equals(this.originType, rhs.originType)))
          && ((Objects.equals(this.createdAt, rhs.createdAt)) || ((this.createdAt != null) && this.createdAt.equals(rhs.createdAt))))
          && (Objects.equals(this.scopeType, rhs.scopeType)))
          && (Objects.equals(this.id, rhs.id)))
          && (Objects.equals(this.additionalProperties, rhs.additionalProperties)))
          && (Objects.equals(this.value, rhs.value)))
          && ((Objects.equals(this.key, rhs.key)) || ((this.key != null) && this.key.equals(rhs.key))))
          && (Objects.equals(this.resourceType, rhs.resourceType)))
          && ((Objects.equals(this.updatedAt, rhs.updatedAt)) || ((this.updatedAt != null) && this.updatedAt.equals(rhs.updatedAt))));
    }
  
  }
  