package org.wfc.omada.api.client.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * ClientInfo
 */
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T10:16:05.926+08:00[Asia/Shanghai]")

public class ClientInfo   {
  @JsonProperty("id")
  private String id;

  @JsonProperty("mac")
  private String mac;

  @JsonProperty("name")
  private String name;

  @JsonProperty("hostName")
  private String hostName;

  @JsonProperty("vendor")
  private String vendor;

  @JsonProperty("deviceType")
  private String deviceType;

  @JsonProperty("deviceCategory")
  private String deviceCategory;

  @JsonProperty("osName")
  private String osName;

  @JsonProperty("ip")
  private String ip;

  @JsonProperty("ipv6List")
  @Valid
  private List<String> ipv6List = null;

  @JsonProperty("connectType")
  private Integer connectType;

  @JsonProperty("connectDevType")
  private String connectDevType;

  @JsonProperty("connectedToWirelessRouter")
  private Boolean connectedToWirelessRouter;

  @JsonProperty("wireless")
  private Boolean wireless;

  @JsonProperty("ssid")
  private String ssid;

  @JsonProperty("signalLevel")
  private Integer signalLevel;

  @JsonProperty("healthScore")
  private Integer healthScore;

  @JsonProperty("signalRank")
  private Integer signalRank;

  @JsonProperty("wifiMode")
  private Integer wifiMode;

  @JsonProperty("apName")
  private String apName;

  @JsonProperty("apMac")
  private String apMac;

  @JsonProperty("radioId")
  private Integer radioId;

  @JsonProperty("channel")
  private Integer channel;

  @JsonProperty("rxRate")
  private Long rxRate;

  @JsonProperty("txRate")
  private Long txRate;

  @JsonProperty("powerSave")
  private Boolean powerSave;

  @JsonProperty("rssi")
  private Integer rssi;

  @JsonProperty("snr")
  private Integer snr;

  @JsonProperty("switchMac")
  private String switchMac;

  @JsonProperty("switchName")
  private String switchName;

  @JsonProperty("gatewayMac")
  private String gatewayMac;

  @JsonProperty("gatewayName")
  private String gatewayName;

  @JsonProperty("vid")
  private Integer vid;

  @JsonProperty("networkName")
  private String networkName;

  @JsonProperty("dot1xIdentity")
  private String dot1xIdentity;

  @JsonProperty("dot1xVlan")
  private Integer dot1xVlan;

  @JsonProperty("port")
  private Integer port;

  @JsonProperty("lagId")
  private Integer lagId;

  @JsonProperty("activity")
  private Long activity;

  @JsonProperty("trafficDown")
  private Long trafficDown;

  @JsonProperty("trafficUp")
  private Long trafficUp;

  @JsonProperty("uptime")
  private Long uptime;

  @JsonProperty("lastSeen")
  private Long lastSeen;

  @JsonProperty("authStatus")
  private Integer authStatus;

  @JsonProperty("blocked")
  private Boolean blocked;

  @JsonProperty("guest")
  private Boolean guest;

  @JsonProperty("active")
  private Boolean active;

  @JsonProperty("manager")
  private Boolean manager;

  @JsonProperty("ipSetting")
  private ClientIpSetting ipSetting;

  @JsonProperty("downPacket")
  private Long downPacket;

  @JsonProperty("upPacket")
  private Long upPacket;

  @JsonProperty("rateLimit")
  private ClientRateLimitSetting rateLimit;

  @JsonProperty("clientLockToApSetting")
  private ClientLockToApSetting clientLockToApSetting;

  @JsonProperty("multiLink")
  @Valid
  private List<ClientMultifrequencyInfo> multiLink = null;

  @JsonProperty("unit")
  private Integer unit;

  @JsonProperty("standardPort")
  private String standardPort;

  @JsonProperty("systemName")
  private String systemName;

  @JsonProperty("description")
  private String description;

  @JsonProperty("capabilities")
  @Valid
  private List<String> capabilities = null;

  @JsonProperty("blockDisable")
  private Boolean blockDisable;

  @JsonProperty("dhcpLeaseTime")
  private Long dhcpLeaseTime;

  public ClientInfo id(String id) {
    this.id = id;
    return this;
  }

  /**
   * Client ID.
   * @return id
  */
  @ApiModelProperty(value = "Client ID.")


  public String getId() {
    return id;
  }

  public void setId(String id) {
    this.id = id;
  }

  public ClientInfo mac(String mac) {
    this.mac = mac;
    return this;
  }

  /**
   * Client MAC Address.
   * @return mac
  */
  @ApiModelProperty(value = "Client MAC Address.")


  public String getMac() {
    return mac;
  }

  public void setMac(String mac) {
    this.mac = mac;
  }

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

  /**
   * Client Name, alias.
   * @return name
  */
  @ApiModelProperty(value = "Client Name, alias.")


  public String getName() {
    return name;
  }

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

  public ClientInfo hostName(String hostName) {
    this.hostName = hostName;
    return this;
  }

  /**
   * Host name, device name.
   * @return hostName
  */
  @ApiModelProperty(value = "Host name, device name.")


  public String getHostName() {
    return hostName;
  }

  public void setHostName(String hostName) {
    this.hostName = hostName;
  }

  public ClientInfo vendor(String vendor) {
    this.vendor = vendor;
    return this;
  }

  /**
   * Vendor.
   * @return vendor
  */
  @ApiModelProperty(value = "Vendor.")


  public String getVendor() {
    return vendor;
  }

  public void setVendor(String vendor) {
    this.vendor = vendor;
  }

  public ClientInfo deviceType(String deviceType) {
    this.deviceType = deviceType;
    return this;
  }

  /**
   * Device Type: iphone, ipod, android, pc, printer, tv...
   * @return deviceType
  */
  @ApiModelProperty(value = "Device Type: iphone, ipod, android, pc, printer, tv...")


  public String getDeviceType() {
    return deviceType;
  }

  public void setDeviceType(String deviceType) {
    this.deviceType = deviceType;
  }

  public ClientInfo deviceCategory(String deviceCategory) {
    this.deviceCategory = deviceCategory;
    return this;
  }

  /**
   * Device Category: loT, TV, computer, phone...
   * @return deviceCategory
  */
  @ApiModelProperty(value = "Device Category: loT, TV, computer, phone...")


  public String getDeviceCategory() {
    return deviceCategory;
  }

  public void setDeviceCategory(String deviceCategory) {
    this.deviceCategory = deviceCategory;
  }

  public ClientInfo osName(String osName) {
    this.osName = osName;
    return this;
  }

  /**
   * Device system version.
   * @return osName
  */
  @ApiModelProperty(value = "Device system version.")


  public String getOsName() {
    return osName;
  }

  public void setOsName(String osName) {
    this.osName = osName;
  }

  public ClientInfo ip(String ip) {
    this.ip = ip;
    return this;
  }

  /**
   * IP Address.
   * @return ip
  */
  @ApiModelProperty(value = "IP Address.")


  public String getIp() {
    return ip;
  }

  public void setIp(String ip) {
    this.ip = ip;
  }

  public ClientInfo ipv6List(List<String> ipv6List) {
    this.ipv6List = ipv6List;
    return this;
  }

  public ClientInfo addIpv6ListItem(String ipv6ListItem) {
    if (this.ipv6List == null) {
      this.ipv6List = new ArrayList<>();
    }
    this.ipv6List.add(ipv6ListItem);
    return this;
  }

  /**
   * IPv6 Address.
   * @return ipv6List
  */
  @ApiModelProperty(value = "IPv6 Address.")


  public List<String> getIpv6List() {
    return ipv6List;
  }

  public void setIpv6List(List<String> ipv6List) {
    this.ipv6List = ipv6List;
  }

  public ClientInfo connectType(Integer connectType) {
    this.connectType = connectType;
    return this;
  }

  /**
   * Connect type should be a value as follows: 0: wireless guest; 1: wireless user; 2: wired user.
   * @return connectType
  */
  @ApiModelProperty(value = "Connect type should be a value as follows: 0: wireless guest; 1: wireless user; 2: wired user.")


  public Integer getConnectType() {
    return connectType;
  }

  public void setConnectType(Integer connectType) {
    this.connectType = connectType;
  }

  public ClientInfo connectDevType(String connectDevType) {
    this.connectDevType = connectDevType;
    return this;
  }

  /**
   * connect device type should be a value as follows: ap, switch, gateway.
   * @return connectDevType
  */
  @ApiModelProperty(value = "connect device type should be a value as follows: ap, switch, gateway.")


  public String getConnectDevType() {
    return connectDevType;
  }

  public void setConnectDevType(String connectDevType) {
    this.connectDevType = connectDevType;
  }

  public ClientInfo connectedToWirelessRouter(Boolean connectedToWirelessRouter) {
    this.connectedToWirelessRouter = connectedToWirelessRouter;
    return this;
  }

  /**
   * true: Client is connecting to a wireless router.
   * @return connectedToWirelessRouter
  */
  @ApiModelProperty(value = "true: Client is connecting to a wireless router.")


  public Boolean getConnectedToWirelessRouter() {
    return connectedToWirelessRouter;
  }

  public void setConnectedToWirelessRouter(Boolean connectedToWirelessRouter) {
    this.connectedToWirelessRouter = connectedToWirelessRouter;
  }

  public ClientInfo wireless(Boolean wireless) {
    this.wireless = wireless;
    return this;
  }

  /**
   * true: Wireless device (connectDevType=ap);  false: Not wireless device(connectDevType=switch or gateway).
   * @return wireless
  */
  @ApiModelProperty(value = "true: Wireless device (connectDevType=ap);  false: Not wireless device(connectDevType=switch or gateway).")


  public Boolean getWireless() {
    return wireless;
  }

  public void setWireless(Boolean wireless) {
    this.wireless = wireless;
  }

  public ClientInfo ssid(String ssid) {
    this.ssid = ssid;
    return this;
  }

  /**
   * (Wireless)  SSID name.
   * @return ssid
  */
  @ApiModelProperty(value = "(Wireless)  SSID name.")


  public String getSsid() {
    return ssid;
  }

  public void setSsid(String ssid) {
    this.ssid = ssid;
  }

  public ClientInfo signalLevel(Integer signalLevel) {
    this.signalLevel = signalLevel;
    return this;
  }

  /**
   * (Wireless) Signal strength percentage should be within the range of 0-100.
   * @return signalLevel
  */
  @ApiModelProperty(value = "(Wireless) Signal strength percentage should be within the range of 0-100.")


  public Integer getSignalLevel() {
    return signalLevel;
  }

  public void setSignalLevel(Integer signalLevel) {
    this.signalLevel = signalLevel;
  }

  public ClientInfo healthScore(Integer healthScore) {
    this.healthScore = healthScore;
    return this;
  }

  /**
   * 1~3: poor; 4~7: fair; 0: no data; 8~10 good.
   * @return healthScore
  */
  @ApiModelProperty(value = "1~3: poor; 4~7: fair; 0: no data; 8~10 good.")


  public Integer getHealthScore() {
    return healthScore;
  }

  public void setHealthScore(Integer healthScore) {
    this.healthScore = healthScore;
  }

  public ClientInfo signalRank(Integer signalRank) {
    this.signalRank = signalRank;
    return this;
  }

  /**
   * (Wireless) Signal strength level should be within the range of 0-5.
   * @return signalRank
  */
  @ApiModelProperty(value = "(Wireless) Signal strength level should be within the range of 0-5.")


  public Integer getSignalRank() {
    return signalRank;
  }

  public void setSignalRank(Integer signalRank) {
    this.signalRank = signalRank;
  }

  public ClientInfo wifiMode(Integer wifiMode) {
    this.wifiMode = wifiMode;
    return this;
  }

  /**
   * (Wireless) Wifi mode should be a value as follows: 0: 11a; 1: 11b; 2: 11g; 3: 11na; 4: 11ng; 5: 11ac; 6: 11axa; 7: 11axg; 8: 11beg; 9: 11bea.
   * @return wifiMode
  */
  @ApiModelProperty(value = "(Wireless) Wifi mode should be a value as follows: 0: 11a; 1: 11b; 2: 11g; 3: 11na; 4: 11ng; 5: 11ac; 6: 11axa; 7: 11axg; 8: 11beg; 9: 11bea.")


  public Integer getWifiMode() {
    return wifiMode;
  }

  public void setWifiMode(Integer wifiMode) {
    this.wifiMode = wifiMode;
  }

  public ClientInfo apName(String apName) {
    this.apName = apName;
    return this;
  }

  /**
   * (Wireless)  AP Name.
   * @return apName
  */
  @ApiModelProperty(value = "(Wireless)  AP Name.")


  public String getApName() {
    return apName;
  }

  public void setApName(String apName) {
    this.apName = apName;
  }

  public ClientInfo apMac(String apMac) {
    this.apMac = apMac;
    return this;
  }

  /**
   * (Wireless)  AP MAC Address.
   * @return apMac
  */
  @ApiModelProperty(value = "(Wireless)  AP MAC Address.")


  public String getApMac() {
    return apMac;
  }

  public void setApMac(String apMac) {
    this.apMac = apMac;
  }

  public ClientInfo radioId(Integer radioId) {
    this.radioId = radioId;
    return this;
  }

  /**
   * (Wireless) Radio ID should be a value as follows: 0: 2.4GHz; 1: 5GHz-1; 2:5GHz-2; 3: 6GHz.
   * @return radioId
  */
  @ApiModelProperty(value = "(Wireless) Radio ID should be a value as follows: 0: 2.4GHz; 1: 5GHz-1; 2:5GHz-2; 3: 6GHz.")


  public Integer getRadioId() {
    return radioId;
  }

  public void setRadioId(Integer radioId) {
    this.radioId = radioId;
  }

  public ClientInfo channel(Integer channel) {
    this.channel = channel;
    return this;
  }

  /**
   * (Wireless)  Actual channel.
   * @return channel
  */
  @ApiModelProperty(value = "(Wireless)  Actual channel.")


  public Integer getChannel() {
    return channel;
  }

  public void setChannel(Integer channel) {
    this.channel = channel;
  }

  public ClientInfo rxRate(Long rxRate) {
    this.rxRate = rxRate;
    return this;
  }

  /**
   * (Wireless) Uplink negotiation rate (Kbit/s).
   * @return rxRate
  */
  @ApiModelProperty(value = "(Wireless) Uplink negotiation rate (Kbit/s).")


  public Long getRxRate() {
    return rxRate;
  }

  public void setRxRate(Long rxRate) {
    this.rxRate = rxRate;
  }

  public ClientInfo txRate(Long txRate) {
    this.txRate = txRate;
    return this;
  }

  /**
   * (Wireless) Downlink negotiation rate (Kbit/s).
   * @return txRate
  */
  @ApiModelProperty(value = "(Wireless) Downlink negotiation rate (Kbit/s).")


  public Long getTxRate() {
    return txRate;
  }

  public void setTxRate(Long txRate) {
    this.txRate = txRate;
  }

  public ClientInfo powerSave(Boolean powerSave) {
    this.powerSave = powerSave;
    return this;
  }

  /**
   * (Wireless)  true: Power save mode enabled.
   * @return powerSave
  */
  @ApiModelProperty(value = "(Wireless)  true: Power save mode enabled.")


  public Boolean getPowerSave() {
    return powerSave;
  }

  public void setPowerSave(Boolean powerSave) {
    this.powerSave = powerSave;
  }

  public ClientInfo rssi(Integer rssi) {
    this.rssi = rssi;
    return this;
  }

  /**
   * (Wireless) Signal strength, unit: dBm.
   * @return rssi
  */
  @ApiModelProperty(value = "(Wireless) Signal strength, unit: dBm.")


  public Integer getRssi() {
    return rssi;
  }

  public void setRssi(Integer rssi) {
    this.rssi = rssi;
  }

  public ClientInfo snr(Integer snr) {
    this.snr = snr;
    return this;
  }

  /**
   * (Wireless) Signal Noise Ratio.
   * @return snr
  */
  @ApiModelProperty(value = "(Wireless) Signal Noise Ratio.")


  public Integer getSnr() {
    return snr;
  }

  public void setSnr(Integer snr) {
    this.snr = snr;
  }

  public ClientInfo switchMac(String switchMac) {
    this.switchMac = switchMac;
    return this;
  }

  /**
   * (Wired, connectDevType=switch)  Switch MAC address.
   * @return switchMac
  */
  @ApiModelProperty(value = "(Wired, connectDevType=switch)  Switch MAC address.")


  public String getSwitchMac() {
    return switchMac;
  }

  public void setSwitchMac(String switchMac) {
    this.switchMac = switchMac;
  }

  public ClientInfo switchName(String switchName) {
    this.switchName = switchName;
    return this;
  }

  /**
   * (Wired, connectDevType=switch)  Switch name.
   * @return switchName
  */
  @ApiModelProperty(value = "(Wired, connectDevType=switch)  Switch name.")


  public String getSwitchName() {
    return switchName;
  }

  public void setSwitchName(String switchName) {
    this.switchName = switchName;
  }

  public ClientInfo gatewayMac(String gatewayMac) {
    this.gatewayMac = gatewayMac;
    return this;
  }

  /**
   * (Wired, connectDevType=gateway)  Gateway MAC Address.
   * @return gatewayMac
  */
  @ApiModelProperty(value = "(Wired, connectDevType=gateway)  Gateway MAC Address.")


  public String getGatewayMac() {
    return gatewayMac;
  }

  public void setGatewayMac(String gatewayMac) {
    this.gatewayMac = gatewayMac;
  }

  public ClientInfo gatewayName(String gatewayName) {
    this.gatewayName = gatewayName;
    return this;
  }

  /**
   * (Wired, connectDevType=gateway)  Gateway name.
   * @return gatewayName
  */
  @ApiModelProperty(value = "(Wired, connectDevType=gateway)  Gateway name.")


  public String getGatewayName() {
    return gatewayName;
  }

  public void setGatewayName(String gatewayName) {
    this.gatewayName = gatewayName;
  }

  public ClientInfo vid(Integer vid) {
    this.vid = vid;
    return this;
  }

  /**
   * (Wired) vlan.
   * @return vid
  */
  @ApiModelProperty(value = "(Wired) vlan.")


  public Integer getVid() {
    return vid;
  }

  public void setVid(Integer vid) {
    this.vid = vid;
  }

  public ClientInfo networkName(String networkName) {
    this.networkName = networkName;
    return this;
  }

  /**
   * (Wired) Network name.
   * @return networkName
  */
  @ApiModelProperty(value = "(Wired) Network name.")


  public String getNetworkName() {
    return networkName;
  }

  public void setNetworkName(String networkName) {
    this.networkName = networkName;
  }

  public ClientInfo dot1xIdentity(String dot1xIdentity) {
    this.dot1xIdentity = dot1xIdentity;
    return this;
  }

  /**
   * (Wired) 802.1x authentication identity.
   * @return dot1xIdentity
  */
  @ApiModelProperty(value = "(Wired) 802.1x authentication identity.")


  public String getDot1xIdentity() {
    return dot1xIdentity;
  }

  public void setDot1xIdentity(String dot1xIdentity) {
    this.dot1xIdentity = dot1xIdentity;
  }

  public ClientInfo dot1xVlan(Integer dot1xVlan) {
    this.dot1xVlan = dot1xVlan;
    return this;
  }

  /**
   * (Wired) Network name corresponding to the VLAN obtained by 802.1x D-VLAN.
   * @return dot1xVlan
  */
  @ApiModelProperty(value = "(Wired) Network name corresponding to the VLAN obtained by 802.1x D-VLAN.")


  public Integer getDot1xVlan() {
    return dot1xVlan;
  }

  public void setDot1xVlan(Integer dot1xVlan) {
    this.dot1xVlan = dot1xVlan;
  }

  public ClientInfo port(Integer port) {
    this.port = port;
    return this;
  }

  /**
   * (Wired) Port ID.
   * @return port
  */
  @ApiModelProperty(value = "(Wired) Port ID.")


  public Integer getPort() {
    return port;
  }

  public void setPort(Integer port) {
    this.port = port;
  }

  public ClientInfo lagId(Integer lagId) {
    this.lagId = lagId;
    return this;
  }

  /**
   * (Wired) LAG ID. Exists only when the client is connected to the LAG.
   * @return lagId
  */
  @ApiModelProperty(value = "(Wired) LAG ID. Exists only when the client is connected to the LAG.")


  public Integer getLagId() {
    return lagId;
  }

  public void setLagId(Integer lagId) {
    this.lagId = lagId;
  }

  public ClientInfo activity(Long activity) {
    this.activity = activity;
    return this;
  }

  /**
   * Real-time downlink rate (Byte/s).
   * @return activity
  */
  @ApiModelProperty(value = "Real-time downlink rate (Byte/s).")


  public Long getActivity() {
    return activity;
  }

  public void setActivity(Long activity) {
    this.activity = activity;
  }

  public ClientInfo trafficDown(Long trafficDown) {
    this.trafficDown = trafficDown;
    return this;
  }

  /**
   * Downstream traffic (Byte).
   * @return trafficDown
  */
  @ApiModelProperty(value = "Downstream traffic (Byte).")


  public Long getTrafficDown() {
    return trafficDown;
  }

  public void setTrafficDown(Long trafficDown) {
    this.trafficDown = trafficDown;
  }

  public ClientInfo trafficUp(Long trafficUp) {
    this.trafficUp = trafficUp;
    return this;
  }

  /**
   * Upstream traffic (Byte).
   * @return trafficUp
  */
  @ApiModelProperty(value = "Upstream traffic (Byte).")


  public Long getTrafficUp() {
    return trafficUp;
  }

  public void setTrafficUp(Long trafficUp) {
    this.trafficUp = trafficUp;
  }

  public ClientInfo uptime(Long uptime) {
    this.uptime = uptime;
    return this;
  }

  /**
   * Up time (unit: s).
   * @return uptime
  */
  @ApiModelProperty(value = "Up time (unit: s).")


  public Long getUptime() {
    return uptime;
  }

  public void setUptime(Long uptime) {
    this.uptime = uptime;
  }

  public ClientInfo lastSeen(Long lastSeen) {
    this.lastSeen = lastSeen;
    return this;
  }

  /**
   * Last found time, timestamp (ms).
   * @return lastSeen
  */
  @ApiModelProperty(value = "Last found time, timestamp (ms).")


  public Long getLastSeen() {
    return lastSeen;
  }

  public void setLastSeen(Long lastSeen) {
    this.lastSeen = lastSeen;
  }

  public ClientInfo authStatus(Integer authStatus) {
    this.authStatus = authStatus;
    return this;
  }

  /**
   * Authentication status should be a value as follows: 0: CONNECTED // Access without any authentication method; 1: PENDING // Access to Portal, but authentication failed; 2: AUTHORIZED // Pass through portal, pass other authentication without portal; 3: AUTH-FREE // No portal authentication required.
   * @return authStatus
  */
  @ApiModelProperty(value = "Authentication status should be a value as follows: 0: CONNECTED // Access without any authentication method; 1: PENDING // Access to Portal, but authentication failed; 2: AUTHORIZED // Pass through portal, pass other authentication without portal; 3: AUTH-FREE // No portal authentication required.")


  public Integer getAuthStatus() {
    return authStatus;
  }

  public void setAuthStatus(Integer authStatus) {
    this.authStatus = authStatus;
  }

  public ClientInfo blocked(Boolean blocked) {
    this.blocked = blocked;
    return this;
  }

  /**
   * Whether the client is blocked.
   * @return blocked
  */
  @ApiModelProperty(value = "Whether the client is blocked.")


  public Boolean getBlocked() {
    return blocked;
  }

  public void setBlocked(Boolean blocked) {
    this.blocked = blocked;
  }

  public ClientInfo guest(Boolean guest) {
    this.guest = guest;
    return this;
  }

  /**
   * (Wireless) Whether it is Guest (used to display the wireless Guest client icon).
   * @return guest
  */
  @ApiModelProperty(value = "(Wireless) Whether it is Guest (used to display the wireless Guest client icon).")


  public Boolean getGuest() {
    return guest;
  }

  public void setGuest(Boolean guest) {
    this.guest = guest;
  }

  public ClientInfo active(Boolean active) {
    this.active = active;
    return this;
  }

  /**
   * Whether the client is online.
   * @return active
  */
  @ApiModelProperty(value = "Whether the client is online.")


  public Boolean getActive() {
    return active;
  }

  public void setActive(Boolean active) {
    this.active = active;
  }

  public ClientInfo manager(Boolean manager) {
    this.manager = manager;
    return this;
  }

  /**
   * Whether it is the client currently being managed.
   * @return manager
  */
  @ApiModelProperty(value = "Whether it is the client currently being managed.")


  public Boolean getManager() {
    return manager;
  }

  public void setManager(Boolean manager) {
    this.manager = manager;
  }

  public ClientInfo ipSetting(ClientIpSetting ipSetting) {
    this.ipSetting = ipSetting;
    return this;
  }

  /**
   * Get ipSetting
   * @return ipSetting
  */
  @ApiModelProperty(value = "")

  @Valid

  public ClientIpSetting getIpSetting() {
    return ipSetting;
  }

  public void setIpSetting(ClientIpSetting ipSetting) {
    this.ipSetting = ipSetting;
  }

  public ClientInfo downPacket(Long downPacket) {
    this.downPacket = downPacket;
    return this;
  }

  /**
   * Number of downstream packets.
   * @return downPacket
  */
  @ApiModelProperty(value = "Number of downstream packets.")


  public Long getDownPacket() {
    return downPacket;
  }

  public void setDownPacket(Long downPacket) {
    this.downPacket = downPacket;
  }

  public ClientInfo upPacket(Long upPacket) {
    this.upPacket = upPacket;
    return this;
  }

  /**
   * Number of upstream packets.
   * @return upPacket
  */
  @ApiModelProperty(value = "Number of upstream packets.")


  public Long getUpPacket() {
    return upPacket;
  }

  public void setUpPacket(Long upPacket) {
    this.upPacket = upPacket;
  }

  public ClientInfo rateLimit(ClientRateLimitSetting rateLimit) {
    this.rateLimit = rateLimit;
    return this;
  }

  /**
   * Get rateLimit
   * @return rateLimit
  */
  @ApiModelProperty(value = "")

  @Valid

  public ClientRateLimitSetting getRateLimit() {
    return rateLimit;
  }

  public void setRateLimit(ClientRateLimitSetting rateLimit) {
    this.rateLimit = rateLimit;
  }

  public ClientInfo clientLockToApSetting(ClientLockToApSetting clientLockToApSetting) {
    this.clientLockToApSetting = clientLockToApSetting;
    return this;
  }

  /**
   * Get clientLockToApSetting
   * @return clientLockToApSetting
  */
  @ApiModelProperty(value = "")

  @Valid

  public ClientLockToApSetting getClientLockToApSetting() {
    return clientLockToApSetting;
  }

  public void setClientLockToApSetting(ClientLockToApSetting clientLockToApSetting) {
    this.clientLockToApSetting = clientLockToApSetting;
  }

  public ClientInfo multiLink(List<ClientMultifrequencyInfo> multiLink) {
    this.multiLink = multiLink;
    return this;
  }

  public ClientInfo addMultiLinkItem(ClientMultifrequencyInfo multiLinkItem) {
    if (this.multiLink == null) {
      this.multiLink = new ArrayList<>();
    }
    this.multiLink.add(multiLinkItem);
    return this;
  }

  /**
   * (Wireless) Client multifrequency info list.
   * @return multiLink
  */
  @ApiModelProperty(value = "(Wireless) Client multifrequency info list.")

  @Valid

  public List<ClientMultifrequencyInfo> getMultiLink() {
    return multiLink;
  }

  public void setMultiLink(List<ClientMultifrequencyInfo> multiLink) {
    this.multiLink = multiLink;
  }

  public ClientInfo unit(Integer unit) {
    this.unit = unit;
    return this;
  }

  /**
   * Unit ID.
   * @return unit
  */
  @ApiModelProperty(value = "Unit ID.")


  public Integer getUnit() {
    return unit;
  }

  public void setUnit(Integer unit) {
    this.unit = unit;
  }

  public ClientInfo standardPort(String standardPort) {
    this.standardPort = standardPort;
    return this;
  }

  /**
   * Standard port.
   * @return standardPort
  */
  @ApiModelProperty(value = "Standard port.")


  public String getStandardPort() {
    return standardPort;
  }

  public void setStandardPort(String standardPort) {
    this.standardPort = standardPort;
  }

  public ClientInfo systemName(String systemName) {
    this.systemName = systemName;
    return this;
  }

  /**
   * Device system name.
   * @return systemName
  */
  @ApiModelProperty(value = "Device system name.")


  public String getSystemName() {
    return systemName;
  }

  public void setSystemName(String systemName) {
    this.systemName = systemName;
  }

  public ClientInfo description(String description) {
    this.description = description;
    return this;
  }

  /**
   * Device description.
   * @return description
  */
  @ApiModelProperty(value = "Device description.")


  public String getDescription() {
    return description;
  }

  public void setDescription(String description) {
    this.description = description;
  }

  public ClientInfo capabilities(List<String> capabilities) {
    this.capabilities = capabilities;
    return this;
  }

  public ClientInfo addCapabilitiesItem(String capabilitiesItem) {
    if (this.capabilities == null) {
      this.capabilities = new ArrayList<>();
    }
    this.capabilities.add(capabilitiesItem);
    return this;
  }

  /**
   * One or more of the following values: Station、DOCSIS cable device、Telephone、Router、WLAN access point、Bridge、Repeater、other.
   * @return capabilities
  */
  @ApiModelProperty(value = "One or more of the following values: Station、DOCSIS cable device、Telephone、Router、WLAN access point、Bridge、Repeater、other.")


  public List<String> getCapabilities() {
    return capabilities;
  }

  public void setCapabilities(List<String> capabilities) {
    this.capabilities = capabilities;
  }

  public ClientInfo blockDisable(Boolean blockDisable) {
    this.blockDisable = blockDisable;
    return this;
  }

  /**
   * Block client disabled, default value: false.
   * @return blockDisable
  */
  @ApiModelProperty(value = "Block client disabled, default value: false.")


  public Boolean getBlockDisable() {
    return blockDisable;
  }

  public void setBlockDisable(Boolean blockDisable) {
    this.blockDisable = blockDisable;
  }

  public ClientInfo dhcpLeaseTime(Long dhcpLeaseTime) {
    this.dhcpLeaseTime = dhcpLeaseTime;
    return this;
  }

  /**
   * DHCP lease time, unit seconds
   * @return dhcpLeaseTime
  */
  @ApiModelProperty(value = "DHCP lease time, unit seconds")


  public Long getDhcpLeaseTime() {
    return dhcpLeaseTime;
  }

  public void setDhcpLeaseTime(Long dhcpLeaseTime) {
    this.dhcpLeaseTime = dhcpLeaseTime;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ClientInfo clientInfo = (ClientInfo) o;
    return Objects.equals(this.id, clientInfo.id) &&
        Objects.equals(this.mac, clientInfo.mac) &&
        Objects.equals(this.name, clientInfo.name) &&
        Objects.equals(this.hostName, clientInfo.hostName) &&
        Objects.equals(this.vendor, clientInfo.vendor) &&
        Objects.equals(this.deviceType, clientInfo.deviceType) &&
        Objects.equals(this.deviceCategory, clientInfo.deviceCategory) &&
        Objects.equals(this.osName, clientInfo.osName) &&
        Objects.equals(this.ip, clientInfo.ip) &&
        Objects.equals(this.ipv6List, clientInfo.ipv6List) &&
        Objects.equals(this.connectType, clientInfo.connectType) &&
        Objects.equals(this.connectDevType, clientInfo.connectDevType) &&
        Objects.equals(this.connectedToWirelessRouter, clientInfo.connectedToWirelessRouter) &&
        Objects.equals(this.wireless, clientInfo.wireless) &&
        Objects.equals(this.ssid, clientInfo.ssid) &&
        Objects.equals(this.signalLevel, clientInfo.signalLevel) &&
        Objects.equals(this.healthScore, clientInfo.healthScore) &&
        Objects.equals(this.signalRank, clientInfo.signalRank) &&
        Objects.equals(this.wifiMode, clientInfo.wifiMode) &&
        Objects.equals(this.apName, clientInfo.apName) &&
        Objects.equals(this.apMac, clientInfo.apMac) &&
        Objects.equals(this.radioId, clientInfo.radioId) &&
        Objects.equals(this.channel, clientInfo.channel) &&
        Objects.equals(this.rxRate, clientInfo.rxRate) &&
        Objects.equals(this.txRate, clientInfo.txRate) &&
        Objects.equals(this.powerSave, clientInfo.powerSave) &&
        Objects.equals(this.rssi, clientInfo.rssi) &&
        Objects.equals(this.snr, clientInfo.snr) &&
        Objects.equals(this.switchMac, clientInfo.switchMac) &&
        Objects.equals(this.switchName, clientInfo.switchName) &&
        Objects.equals(this.gatewayMac, clientInfo.gatewayMac) &&
        Objects.equals(this.gatewayName, clientInfo.gatewayName) &&
        Objects.equals(this.vid, clientInfo.vid) &&
        Objects.equals(this.networkName, clientInfo.networkName) &&
        Objects.equals(this.dot1xIdentity, clientInfo.dot1xIdentity) &&
        Objects.equals(this.dot1xVlan, clientInfo.dot1xVlan) &&
        Objects.equals(this.port, clientInfo.port) &&
        Objects.equals(this.lagId, clientInfo.lagId) &&
        Objects.equals(this.activity, clientInfo.activity) &&
        Objects.equals(this.trafficDown, clientInfo.trafficDown) &&
        Objects.equals(this.trafficUp, clientInfo.trafficUp) &&
        Objects.equals(this.uptime, clientInfo.uptime) &&
        Objects.equals(this.lastSeen, clientInfo.lastSeen) &&
        Objects.equals(this.authStatus, clientInfo.authStatus) &&
        Objects.equals(this.blocked, clientInfo.blocked) &&
        Objects.equals(this.guest, clientInfo.guest) &&
        Objects.equals(this.active, clientInfo.active) &&
        Objects.equals(this.manager, clientInfo.manager) &&
        Objects.equals(this.ipSetting, clientInfo.ipSetting) &&
        Objects.equals(this.downPacket, clientInfo.downPacket) &&
        Objects.equals(this.upPacket, clientInfo.upPacket) &&
        Objects.equals(this.rateLimit, clientInfo.rateLimit) &&
        Objects.equals(this.clientLockToApSetting, clientInfo.clientLockToApSetting) &&
        Objects.equals(this.multiLink, clientInfo.multiLink) &&
        Objects.equals(this.unit, clientInfo.unit) &&
        Objects.equals(this.standardPort, clientInfo.standardPort) &&
        Objects.equals(this.systemName, clientInfo.systemName) &&
        Objects.equals(this.description, clientInfo.description) &&
        Objects.equals(this.capabilities, clientInfo.capabilities) &&
        Objects.equals(this.blockDisable, clientInfo.blockDisable) &&
        Objects.equals(this.dhcpLeaseTime, clientInfo.dhcpLeaseTime);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, mac, name, hostName, vendor, deviceType, deviceCategory, osName, ip, ipv6List, connectType, connectDevType, connectedToWirelessRouter, wireless, ssid, signalLevel, healthScore, signalRank, wifiMode, apName, apMac, radioId, channel, rxRate, txRate, powerSave, rssi, snr, switchMac, switchName, gatewayMac, gatewayName, vid, networkName, dot1xIdentity, dot1xVlan, port, lagId, activity, trafficDown, trafficUp, uptime, lastSeen, authStatus, blocked, guest, active, manager, ipSetting, downPacket, upPacket, rateLimit, clientLockToApSetting, multiLink, unit, standardPort, systemName, description, capabilities, blockDisable, dhcpLeaseTime);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ClientInfo {\n");
    
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    mac: ").append(toIndentedString(mac)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    hostName: ").append(toIndentedString(hostName)).append("\n");
    sb.append("    vendor: ").append(toIndentedString(vendor)).append("\n");
    sb.append("    deviceType: ").append(toIndentedString(deviceType)).append("\n");
    sb.append("    deviceCategory: ").append(toIndentedString(deviceCategory)).append("\n");
    sb.append("    osName: ").append(toIndentedString(osName)).append("\n");
    sb.append("    ip: ").append(toIndentedString(ip)).append("\n");
    sb.append("    ipv6List: ").append(toIndentedString(ipv6List)).append("\n");
    sb.append("    connectType: ").append(toIndentedString(connectType)).append("\n");
    sb.append("    connectDevType: ").append(toIndentedString(connectDevType)).append("\n");
    sb.append("    connectedToWirelessRouter: ").append(toIndentedString(connectedToWirelessRouter)).append("\n");
    sb.append("    wireless: ").append(toIndentedString(wireless)).append("\n");
    sb.append("    ssid: ").append(toIndentedString(ssid)).append("\n");
    sb.append("    signalLevel: ").append(toIndentedString(signalLevel)).append("\n");
    sb.append("    healthScore: ").append(toIndentedString(healthScore)).append("\n");
    sb.append("    signalRank: ").append(toIndentedString(signalRank)).append("\n");
    sb.append("    wifiMode: ").append(toIndentedString(wifiMode)).append("\n");
    sb.append("    apName: ").append(toIndentedString(apName)).append("\n");
    sb.append("    apMac: ").append(toIndentedString(apMac)).append("\n");
    sb.append("    radioId: ").append(toIndentedString(radioId)).append("\n");
    sb.append("    channel: ").append(toIndentedString(channel)).append("\n");
    sb.append("    rxRate: ").append(toIndentedString(rxRate)).append("\n");
    sb.append("    txRate: ").append(toIndentedString(txRate)).append("\n");
    sb.append("    powerSave: ").append(toIndentedString(powerSave)).append("\n");
    sb.append("    rssi: ").append(toIndentedString(rssi)).append("\n");
    sb.append("    snr: ").append(toIndentedString(snr)).append("\n");
    sb.append("    switchMac: ").append(toIndentedString(switchMac)).append("\n");
    sb.append("    switchName: ").append(toIndentedString(switchName)).append("\n");
    sb.append("    gatewayMac: ").append(toIndentedString(gatewayMac)).append("\n");
    sb.append("    gatewayName: ").append(toIndentedString(gatewayName)).append("\n");
    sb.append("    vid: ").append(toIndentedString(vid)).append("\n");
    sb.append("    networkName: ").append(toIndentedString(networkName)).append("\n");
    sb.append("    dot1xIdentity: ").append(toIndentedString(dot1xIdentity)).append("\n");
    sb.append("    dot1xVlan: ").append(toIndentedString(dot1xVlan)).append("\n");
    sb.append("    port: ").append(toIndentedString(port)).append("\n");
    sb.append("    lagId: ").append(toIndentedString(lagId)).append("\n");
    sb.append("    activity: ").append(toIndentedString(activity)).append("\n");
    sb.append("    trafficDown: ").append(toIndentedString(trafficDown)).append("\n");
    sb.append("    trafficUp: ").append(toIndentedString(trafficUp)).append("\n");
    sb.append("    uptime: ").append(toIndentedString(uptime)).append("\n");
    sb.append("    lastSeen: ").append(toIndentedString(lastSeen)).append("\n");
    sb.append("    authStatus: ").append(toIndentedString(authStatus)).append("\n");
    sb.append("    blocked: ").append(toIndentedString(blocked)).append("\n");
    sb.append("    guest: ").append(toIndentedString(guest)).append("\n");
    sb.append("    active: ").append(toIndentedString(active)).append("\n");
    sb.append("    manager: ").append(toIndentedString(manager)).append("\n");
    sb.append("    ipSetting: ").append(toIndentedString(ipSetting)).append("\n");
    sb.append("    downPacket: ").append(toIndentedString(downPacket)).append("\n");
    sb.append("    upPacket: ").append(toIndentedString(upPacket)).append("\n");
    sb.append("    rateLimit: ").append(toIndentedString(rateLimit)).append("\n");
    sb.append("    clientLockToApSetting: ").append(toIndentedString(clientLockToApSetting)).append("\n");
    sb.append("    multiLink: ").append(toIndentedString(multiLink)).append("\n");
    sb.append("    unit: ").append(toIndentedString(unit)).append("\n");
    sb.append("    standardPort: ").append(toIndentedString(standardPort)).append("\n");
    sb.append("    systemName: ").append(toIndentedString(systemName)).append("\n");
    sb.append("    description: ").append(toIndentedString(description)).append("\n");
    sb.append("    capabilities: ").append(toIndentedString(capabilities)).append("\n");
    sb.append("    blockDisable: ").append(toIndentedString(blockDisable)).append("\n");
    sb.append("    dhcpLeaseTime: ").append(toIndentedString(dhcpLeaseTime)).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(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }
}

