/*
 * Cloudera Manager API
 * <h1>Cloudera Manager API v57</h1>       <p>Introduced in Cloudera Manager 7.13.1</p>       <p><a href=\"http://www.cloudera.com/documentation.html\">Cloudera Product Documentation</a></p>
 *
 * OpenAPI spec version: 7.13.1
 * 
 *
 * 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 com.cloudera.api.swagger.model;

import java.util.Objects;
import java.util.Arrays;
import com.cloudera.api.swagger.model.ApiConfigList;
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.v3.oas.annotations.media.Schema;
import java.io.IOException;
/**
 * Represents an instantiation of an external account type, referencing a supported external account type, via the typeName field, along with suitable configuration to access an external resource of the provided type.  The typeName field must match the name of an external account type.
 */
@Schema(description = "Represents an instantiation of an external account type, referencing a supported external account type, via the typeName field, along with suitable configuration to access an external resource of the provided type.  The typeName field must match the name of an external account type.")
@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.JavaClientCodegen", date = "2026-05-19T08:29:59.033Z[Etc/UTC]")

public class ApiExternalAccount {
  @SerializedName("name")
  private String name = null;

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

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

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

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

  @SerializedName("accountConfigs")
  private ApiConfigList accountConfigs = null;

  public ApiExternalAccount name(String name) {
    this.name = name;
    return this;
  }

   /**
   * Represents the intial name of the account; used to uniquely identify this account.
   * @return name
  **/
  @Schema(description = "Represents the intial name of the account; used to uniquely identify this account.")
  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public ApiExternalAccount displayName(String displayName) {
    this.displayName = displayName;
    return this;
  }

   /**
   * Represents a modifiable label to identify this account for user-visible purposes.
   * @return displayName
  **/
  @Schema(description = "Represents a modifiable label to identify this account for user-visible purposes.")
  public String getDisplayName() {
    return displayName;
  }

  public void setDisplayName(String displayName) {
    this.displayName = displayName;
  }

  public ApiExternalAccount createdTime(String createdTime) {
    this.createdTime = createdTime;
    return this;
  }

   /**
   * Represents the time of creation for this account.
   * @return createdTime
  **/
  @Schema(description = "Represents the time of creation for this account.")
  public String getCreatedTime() {
    return createdTime;
  }

  public void setCreatedTime(String createdTime) {
    this.createdTime = createdTime;
  }

  public ApiExternalAccount lastModifiedTime(String lastModifiedTime) {
    this.lastModifiedTime = lastModifiedTime;
    return this;
  }

   /**
   * Represents the last modification time for this account.
   * @return lastModifiedTime
  **/
  @Schema(description = "Represents the last modification time for this account.")
  public String getLastModifiedTime() {
    return lastModifiedTime;
  }

  public void setLastModifiedTime(String lastModifiedTime) {
    this.lastModifiedTime = lastModifiedTime;
  }

  public ApiExternalAccount typeName(String typeName) {
    this.typeName = typeName;
    return this;
  }

   /**
   * Represents the Type ID of a supported external account type. The type represented by this field dictates which configuration options must be defined for this account.
   * @return typeName
  **/
  @Schema(description = "Represents the Type ID of a supported external account type. The type represented by this field dictates which configuration options must be defined for this account.")
  public String getTypeName() {
    return typeName;
  }

  public void setTypeName(String typeName) {
    this.typeName = typeName;
  }

  public ApiExternalAccount accountConfigs(ApiConfigList accountConfigs) {
    this.accountConfigs = accountConfigs;
    return this;
  }

   /**
   * Get accountConfigs
   * @return accountConfigs
  **/
  @Schema(description = "")
  public ApiConfigList getAccountConfigs() {
    return accountConfigs;
  }

  public void setAccountConfigs(ApiConfigList accountConfigs) {
    this.accountConfigs = accountConfigs;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ApiExternalAccount apiExternalAccount = (ApiExternalAccount) o;
    return Objects.equals(this.name, apiExternalAccount.name) &&
        Objects.equals(this.displayName, apiExternalAccount.displayName) &&
        Objects.equals(this.createdTime, apiExternalAccount.createdTime) &&
        Objects.equals(this.lastModifiedTime, apiExternalAccount.lastModifiedTime) &&
        Objects.equals(this.typeName, apiExternalAccount.typeName) &&
        Objects.equals(this.accountConfigs, apiExternalAccount.accountConfigs);
  }

  @Override
  public int hashCode() {
    return Objects.hash(name, displayName, createdTime, lastModifiedTime, typeName, accountConfigs);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ApiExternalAccount {\n");
    
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    displayName: ").append(toIndentedString(displayName)).append("\n");
    sb.append("    createdTime: ").append(toIndentedString(createdTime)).append("\n");
    sb.append("    lastModifiedTime: ").append(toIndentedString(lastModifiedTime)).append("\n");
    sb.append("    typeName: ").append(toIndentedString(typeName)).append("\n");
    sb.append("    accountConfigs: ").append(toIndentedString(accountConfigs)).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    ");
  }

}
