content: /*
   * POS Terminal Management API
   *
   * The version of the OpenAPI document: 1
   *
   *
   * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
   * https://openapi-generator.tech
   * Do not edit the class manually.
   */
  
  package com.adyen.model.posterminalmanagement;
  
  import com.fasterxml.jackson.annotation.JsonInclude;
  import com.fasterxml.jackson.annotation.JsonProperty;
  import com.fasterxml.jackson.annotation.JsonPropertyOrder;
  import com.fasterxml.jackson.core.JsonProcessingException;
  import io.swagger.annotations.ApiModelProperty;
  import java.util.Objects;
  
  /** FindTerminalResponse */
  @JsonPropertyOrder({
    FindTerminalResponse.JSON_PROPERTY_COMPANY_ACCOUNT,
    FindTerminalResponse.JSON_PROPERTY_MERCHANT_ACCOUNT,
    FindTerminalResponse.JSON_PROPERTY_MERCHANT_INVENTORY,
    FindTerminalResponse.JSON_PROPERTY_STORE,
    FindTerminalResponse.JSON_PROPERTY_TERMINAL
  })
  public class FindTerminalResponse {
    public static final String JSON_PROPERTY_COMPANY_ACCOUNT = "companyAccount";
    private String companyAccount;
  
    public static final String JSON_PROPERTY_MERCHANT_ACCOUNT = "merchantAccount";
    private String merchantAccount;
  
    public static final String JSON_PROPERTY_MERCHANT_INVENTORY = "merchantInventory";
    private Boolean merchantInventory;
  
    public static final String JSON_PROPERTY_STORE = "store";
    private String store;
  
    public static final String JSON_PROPERTY_TERMINAL = "terminal";
    private String terminal;
  
    public FindTerminalResponse() {}
  
    /**
     * The company account that the terminal is associated with. If this is the only account level
     * shown in the response, the terminal is assigned to the inventory of the company account.
     *
     * @param companyAccount
     * @return the current {@code FindTerminalResponse} instance, allowing for method chaining
     */
    public FindTerminalResponse companyAccount(String companyAccount) {
      this.companyAccount = companyAccount;
      return this;
    }
  
    /**
     * The company account that the terminal is associated with. If this is the only account level
     * shown in the response, the terminal is assigned to the inventory of the company account.
     *
     * @return companyAccount
     */
    @ApiModelProperty(
        required = true,
        value =
            "The company account that the terminal is associated with. If this is the only account level shown in the response, the terminal is assigned to the inventory of the company account.")
    @JsonProperty(JSON_PROPERTY_COMPANY_ACCOUNT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getCompanyAccount() {
      return companyAccount;
    }
  
    /**
     * The company account that the terminal is associated with. If this is the only account level
     * shown in the response, the terminal is assigned to the inventory of the company account.
     *
     * @param companyAccount
     */
    @JsonProperty(JSON_PROPERTY_COMPANY_ACCOUNT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setCompanyAccount(String companyAccount) {
      this.companyAccount = companyAccount;
    }
  
    /**
     * The merchant account that the terminal is associated with. If the response doesn&#39;t contain
     * a &#x60;store&#x60; the terminal is assigned to this merchant account.
     *
     * @param merchantAccount
     * @return the current {@code FindTerminalResponse} instance, allowing for method chaining
     */
    public FindTerminalResponse merchantAccount(String merchantAccount) {
      this.merchantAccount = merchantAccount;
      return this;
    }
  
    /**
     * The merchant account that the terminal is associated with. If the response doesn&#39;t contain
     * a &#x60;store&#x60; the terminal is assigned to this merchant account.
     *
     * @return merchantAccount
     */
    @ApiModelProperty(
        value =
            "The merchant account that the terminal is associated with. If the response doesn't contain a `store` the terminal is assigned to this merchant account.")
    @JsonProperty(JSON_PROPERTY_MERCHANT_ACCOUNT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getMerchantAccount() {
      return merchantAccount;
    }
  
    /**
     * The merchant account that the terminal is associated with. If the response doesn&#39;t contain
     * a &#x60;store&#x60; the terminal is assigned to this merchant account.
     *
     * @param merchantAccount
     */
    @JsonProperty(JSON_PROPERTY_MERCHANT_ACCOUNT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setMerchantAccount(String merchantAccount) {
      this.merchantAccount = merchantAccount;
    }
  
    /**
     * Boolean that indicates if the terminal is assigned to the merchant inventory. This is returned
     * when the terminal is assigned to a merchant account. - If **true**, this indicates that the
     * terminal is in the merchant inventory. This also means that the terminal cannot be boarded. -
     * If **false**, this indicates that the terminal is assigned to the merchant account as an
     * in-store terminal. This means that the terminal is ready to be boarded, or is already boarded.
     *
     * @param merchantInventory
     * @return the current {@code FindTerminalResponse} instance, allowing for method chaining
     */
    public FindTerminalResponse merchantInventory(Boolean merchantInventory) {
      this.merchantInventory = merchantInventory;
      return this;
    }
  
    /**
     * Boolean that indicates if the terminal is assigned to the merchant inventory. This is returned
     * when the terminal is assigned to a merchant account. - If **true**, this indicates that the
     * terminal is in the merchant inventory. This also means that the terminal cannot be boarded. -
     * If **false**, this indicates that the terminal is assigned to the merchant account as an
     * in-store terminal. This means that the terminal is ready to be boarded, or is already boarded.
     *
     * @return merchantInventory
     */
    @ApiModelProperty(
        value =
            "Boolean that indicates if the terminal is assigned to the merchant inventory. This is returned when the terminal is assigned to a merchant account.  - If **true**, this indicates that the terminal is in the merchant inventory. This also means that the terminal cannot be boarded.  - If **false**, this indicates that the terminal is assigned to the merchant account as an in-store terminal. This means that the terminal is ready to be boarded, or is already boarded.")
    @JsonProperty(JSON_PROPERTY_MERCHANT_INVENTORY)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public Boolean getMerchantInventory() {
      return merchantInventory;
    }
  
    /**
     * Boolean that indicates if the terminal is assigned to the merchant inventory. This is returned
     * when the terminal is assigned to a merchant account. - If **true**, this indicates that the
     * terminal is in the merchant inventory. This also means that the terminal cannot be boarded. -
     * If **false**, this indicates that the terminal is assigned to the merchant account as an
     * in-store terminal. This means that the terminal is ready to be boarded, or is already boarded.
     *
     * @param merchantInventory
     */
    @JsonProperty(JSON_PROPERTY_MERCHANT_INVENTORY)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setMerchantInventory(Boolean merchantInventory) {
      this.merchantInventory = merchantInventory;
    }
  
    /**
     * The store code of the store that the terminal is assigned to.
     *
     * @param store
     * @return the current {@code FindTerminalResponse} instance, allowing for method chaining
     */
    public FindTerminalResponse store(String store) {
      this.store = store;
      return this;
    }
  
    /**
     * The store code of the store that the terminal is assigned to.
     *
     * @return store
     */
    @ApiModelProperty(value = "The store code of the store that the terminal is assigned to.")
    @JsonProperty(JSON_PROPERTY_STORE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getStore() {
      return store;
    }
  
    /**
     * The store code of the store that the terminal is assigned to.
     *
     * @param store
     */
    @JsonProperty(JSON_PROPERTY_STORE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setStore(String store) {
      this.store = store;
    }
  
    /**
     * The unique terminal ID.
     *
     * @param terminal
     * @return the current {@code FindTerminalResponse} instance, allowing for method chaining
     */
    public FindTerminalResponse terminal(String terminal) {
      this.terminal = terminal;
      return this;
    }
  
    /**
     * The unique terminal ID.
     *
     * @return terminal
     */
    @ApiModelProperty(required = true, value = "The unique terminal ID.")
    @JsonProperty(JSON_PROPERTY_TERMINAL)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getTerminal() {
      return terminal;
    }
  
    /**
     * The unique terminal ID.
     *
     * @param terminal
     */
    @JsonProperty(JSON_PROPERTY_TERMINAL)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setTerminal(String terminal) {
      this.terminal = terminal;
    }
  
    /** Return true if this FindTerminalResponse object is equal to o. */
    @Override
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }
      FindTerminalResponse findTerminalResponse = (FindTerminalResponse) o;
      return Objects.equals(this.companyAccount, findTerminalResponse.companyAccount)
          && Objects.equals(this.merchantAccount, findTerminalResponse.merchantAccount)
          && Objects.equals(this.merchantInventory, findTerminalResponse.merchantInventory)
          && Objects.equals(this.store, findTerminalResponse.store)
          && Objects.equals(this.terminal, findTerminalResponse.terminal);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(companyAccount, merchantAccount, merchantInventory, store, terminal);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class FindTerminalResponse {\n");
      sb.append("    companyAccount: ").append(toIndentedString(companyAccount)).append("\n");
      sb.append("    merchantAccount: ").append(toIndentedString(merchantAccount)).append("\n");
      sb.append("    merchantInventory: ").append(toIndentedString(merchantInventory)).append("\n");
      sb.append("    store: ").append(toIndentedString(store)).append("\n");
      sb.append("    terminal: ").append(toIndentedString(terminal)).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    ");
    }
  
    /**
     * Create an instance of FindTerminalResponse given an JSON string
     *
     * @param jsonString JSON string
     * @return An instance of FindTerminalResponse
     * @throws JsonProcessingException if the JSON string is invalid with respect to
     *     FindTerminalResponse
     */
    public static FindTerminalResponse fromJson(String jsonString) throws JsonProcessingException {
      return JSON.getMapper().readValue(jsonString, FindTerminalResponse.class);
    }
  
    /**
     * Convert an instance of FindTerminalResponse to an JSON string
     *
     * @return JSON string
     */
    public String toJson() throws JsonProcessingException {
      return JSON.getMapper().writeValueAsString(this);
    }
  }
  