All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.squareup.square.legacy.models.Location Maven / Gradle / Ivy

There is a newer version: 44.2.0.20250521
Show newest version
package com.squareup.square.legacy.models;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.apimatic.core.types.OptionalNullable;
import java.util.List;
import java.util.Objects;

/**
 * This is a model class for Location type.
 */
public class Location {
    private final String id;
    private final OptionalNullable name;
    private final Address address;
    private final OptionalNullable timezone;
    private final List capabilities;
    private final String status;
    private final String createdAt;
    private final String merchantId;
    private final String country;
    private final OptionalNullable languageCode;
    private final String currency;
    private final OptionalNullable phoneNumber;
    private final OptionalNullable businessName;
    private final String type;
    private final OptionalNullable websiteUrl;
    private final BusinessHours businessHours;
    private final OptionalNullable businessEmail;
    private final OptionalNullable description;
    private final OptionalNullable twitterUsername;
    private final OptionalNullable instagramUsername;
    private final OptionalNullable facebookUrl;
    private final Coordinates coordinates;
    private final String logoUrl;
    private final String posBackgroundUrl;
    private final OptionalNullable mcc;
    private final String fullFormatLogoUrl;
    private final TaxIds taxIds;

    /**
     * Initialization constructor.
     * @param  id  String value for id.
     * @param  name  String value for name.
     * @param  address  Address value for address.
     * @param  timezone  String value for timezone.
     * @param  capabilities  List of String value for capabilities.
     * @param  status  String value for status.
     * @param  createdAt  String value for createdAt.
     * @param  merchantId  String value for merchantId.
     * @param  country  String value for country.
     * @param  languageCode  String value for languageCode.
     * @param  currency  String value for currency.
     * @param  phoneNumber  String value for phoneNumber.
     * @param  businessName  String value for businessName.
     * @param  type  String value for type.
     * @param  websiteUrl  String value for websiteUrl.
     * @param  businessHours  BusinessHours value for businessHours.
     * @param  businessEmail  String value for businessEmail.
     * @param  description  String value for description.
     * @param  twitterUsername  String value for twitterUsername.
     * @param  instagramUsername  String value for instagramUsername.
     * @param  facebookUrl  String value for facebookUrl.
     * @param  coordinates  Coordinates value for coordinates.
     * @param  logoUrl  String value for logoUrl.
     * @param  posBackgroundUrl  String value for posBackgroundUrl.
     * @param  mcc  String value for mcc.
     * @param  fullFormatLogoUrl  String value for fullFormatLogoUrl.
     * @param  taxIds  TaxIds value for taxIds.
     */
    @JsonCreator
    public Location(
            @JsonProperty("id") String id,
            @JsonProperty("name") String name,
            @JsonProperty("address") Address address,
            @JsonProperty("timezone") String timezone,
            @JsonProperty("capabilities") List capabilities,
            @JsonProperty("status") String status,
            @JsonProperty("created_at") String createdAt,
            @JsonProperty("merchant_id") String merchantId,
            @JsonProperty("country") String country,
            @JsonProperty("language_code") String languageCode,
            @JsonProperty("currency") String currency,
            @JsonProperty("phone_number") String phoneNumber,
            @JsonProperty("business_name") String businessName,
            @JsonProperty("type") String type,
            @JsonProperty("website_url") String websiteUrl,
            @JsonProperty("business_hours") BusinessHours businessHours,
            @JsonProperty("business_email") String businessEmail,
            @JsonProperty("description") String description,
            @JsonProperty("twitter_username") String twitterUsername,
            @JsonProperty("instagram_username") String instagramUsername,
            @JsonProperty("facebook_url") String facebookUrl,
            @JsonProperty("coordinates") Coordinates coordinates,
            @JsonProperty("logo_url") String logoUrl,
            @JsonProperty("pos_background_url") String posBackgroundUrl,
            @JsonProperty("mcc") String mcc,
            @JsonProperty("full_format_logo_url") String fullFormatLogoUrl,
            @JsonProperty("tax_ids") TaxIds taxIds) {
        this.id = id;
        this.name = OptionalNullable.of(name);
        this.address = address;
        this.timezone = OptionalNullable.of(timezone);
        this.capabilities = capabilities;
        this.status = status;
        this.createdAt = createdAt;
        this.merchantId = merchantId;
        this.country = country;
        this.languageCode = OptionalNullable.of(languageCode);
        this.currency = currency;
        this.phoneNumber = OptionalNullable.of(phoneNumber);
        this.businessName = OptionalNullable.of(businessName);
        this.type = type;
        this.websiteUrl = OptionalNullable.of(websiteUrl);
        this.businessHours = businessHours;
        this.businessEmail = OptionalNullable.of(businessEmail);
        this.description = OptionalNullable.of(description);
        this.twitterUsername = OptionalNullable.of(twitterUsername);
        this.instagramUsername = OptionalNullable.of(instagramUsername);
        this.facebookUrl = OptionalNullable.of(facebookUrl);
        this.coordinates = coordinates;
        this.logoUrl = logoUrl;
        this.posBackgroundUrl = posBackgroundUrl;
        this.mcc = OptionalNullable.of(mcc);
        this.fullFormatLogoUrl = fullFormatLogoUrl;
        this.taxIds = taxIds;
    }

    /**
     * Initialization constructor.
     * @param  id  String value for id.
     * @param  name  String value for name.
     * @param  address  Address value for address.
     * @param  timezone  String value for timezone.
     * @param  capabilities  List of String value for capabilities.
     * @param  status  String value for status.
     * @param  createdAt  String value for createdAt.
     * @param  merchantId  String value for merchantId.
     * @param  country  String value for country.
     * @param  languageCode  String value for languageCode.
     * @param  currency  String value for currency.
     * @param  phoneNumber  String value for phoneNumber.
     * @param  businessName  String value for businessName.
     * @param  type  String value for type.
     * @param  websiteUrl  String value for websiteUrl.
     * @param  businessHours  BusinessHours value for businessHours.
     * @param  businessEmail  String value for businessEmail.
     * @param  description  String value for description.
     * @param  twitterUsername  String value for twitterUsername.
     * @param  instagramUsername  String value for instagramUsername.
     * @param  facebookUrl  String value for facebookUrl.
     * @param  coordinates  Coordinates value for coordinates.
     * @param  logoUrl  String value for logoUrl.
     * @param  posBackgroundUrl  String value for posBackgroundUrl.
     * @param  mcc  String value for mcc.
     * @param  fullFormatLogoUrl  String value for fullFormatLogoUrl.
     * @param  taxIds  TaxIds value for taxIds.
     */
    protected Location(
            String id,
            OptionalNullable name,
            Address address,
            OptionalNullable timezone,
            List capabilities,
            String status,
            String createdAt,
            String merchantId,
            String country,
            OptionalNullable languageCode,
            String currency,
            OptionalNullable phoneNumber,
            OptionalNullable businessName,
            String type,
            OptionalNullable websiteUrl,
            BusinessHours businessHours,
            OptionalNullable businessEmail,
            OptionalNullable description,
            OptionalNullable twitterUsername,
            OptionalNullable instagramUsername,
            OptionalNullable facebookUrl,
            Coordinates coordinates,
            String logoUrl,
            String posBackgroundUrl,
            OptionalNullable mcc,
            String fullFormatLogoUrl,
            TaxIds taxIds) {
        this.id = id;
        this.name = name;
        this.address = address;
        this.timezone = timezone;
        this.capabilities = capabilities;
        this.status = status;
        this.createdAt = createdAt;
        this.merchantId = merchantId;
        this.country = country;
        this.languageCode = languageCode;
        this.currency = currency;
        this.phoneNumber = phoneNumber;
        this.businessName = businessName;
        this.type = type;
        this.websiteUrl = websiteUrl;
        this.businessHours = businessHours;
        this.businessEmail = businessEmail;
        this.description = description;
        this.twitterUsername = twitterUsername;
        this.instagramUsername = instagramUsername;
        this.facebookUrl = facebookUrl;
        this.coordinates = coordinates;
        this.logoUrl = logoUrl;
        this.posBackgroundUrl = posBackgroundUrl;
        this.mcc = mcc;
        this.fullFormatLogoUrl = fullFormatLogoUrl;
        this.taxIds = taxIds;
    }

    /**
     * Getter for Id.
     * A short generated string of letters and numbers that uniquely identifies this location
     * instance.
     * @return Returns the String
     */
    @JsonGetter("id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getId() {
        return id;
    }

    /**
     * Internal Getter for Name.
     * The name of the location. This information appears in the Seller Dashboard as the nickname. A
     * location name must be unique within a seller account.
     * @return Returns the Internal String
     */
    @JsonGetter("name")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetName() {
        return this.name;
    }

    /**
     * Getter for Name.
     * The name of the location. This information appears in the Seller Dashboard as the nickname. A
     * location name must be unique within a seller account.
     * @return Returns the String
     */
    @JsonIgnore
    public String getName() {
        return OptionalNullable.getFrom(name);
    }

    /**
     * Getter for Address.
     * Represents a postal address in a country. For more information, see [Working with
     * Addresses](https://developer.squareup.com/docs/build-basics/working-with-addresses).
     * @return Returns the Address
     */
    @JsonGetter("address")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public Address getAddress() {
        return address;
    }

    /**
     * Internal Getter for Timezone.
     * The [IANA time zone](https://www.iana.org/time-zones) identifier for the time zone of the
     * location. For example, `America/Los_Angeles`.
     * @return Returns the Internal String
     */
    @JsonGetter("timezone")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetTimezone() {
        return this.timezone;
    }

    /**
     * Getter for Timezone.
     * The [IANA time zone](https://www.iana.org/time-zones) identifier for the time zone of the
     * location. For example, `America/Los_Angeles`.
     * @return Returns the String
     */
    @JsonIgnore
    public String getTimezone() {
        return OptionalNullable.getFrom(timezone);
    }

    /**
     * Getter for Capabilities.
     * The Square features that are enabled for the location. See
     * [LocationCapability](entity:LocationCapability) for possible values. See
     * [LocationCapability](#type-locationcapability) for possible values
     * @return Returns the List of String
     */
    @JsonGetter("capabilities")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public List getCapabilities() {
        return capabilities;
    }

    /**
     * Getter for Status.
     * A location's status.
     * @return Returns the String
     */
    @JsonGetter("status")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getStatus() {
        return status;
    }

    /**
     * Getter for CreatedAt.
     * The time when the location was created, in RFC 3339 format. For more information, see
     * [Working with Dates](https://developer.squareup.com/docs/build-basics/working-with-dates).
     * @return Returns the String
     */
    @JsonGetter("created_at")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getCreatedAt() {
        return createdAt;
    }

    /**
     * Getter for MerchantId.
     * The ID of the merchant that owns the location.
     * @return Returns the String
     */
    @JsonGetter("merchant_id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getMerchantId() {
        return merchantId;
    }

    /**
     * Getter for Country.
     * Indicates the country associated with another entity, such as a business. Values are in [ISO
     * 3166-1-alpha-2 format](http://www.iso.org/iso/home/standards/country_codes.htm).
     * @return Returns the String
     */
    @JsonGetter("country")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getCountry() {
        return country;
    }

    /**
     * Internal Getter for LanguageCode.
     * The language associated with the location, in [BCP 47
     * format](https://tools.ietf.org/html/bcp47#appendix-A). For more information, see [Language
     * Preferences](https://developer.squareup.com/docs/build-basics/general-considerations/language-preferences).
     * @return Returns the Internal String
     */
    @JsonGetter("language_code")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetLanguageCode() {
        return this.languageCode;
    }

    /**
     * Getter for LanguageCode.
     * The language associated with the location, in [BCP 47
     * format](https://tools.ietf.org/html/bcp47#appendix-A). For more information, see [Language
     * Preferences](https://developer.squareup.com/docs/build-basics/general-considerations/language-preferences).
     * @return Returns the String
     */
    @JsonIgnore
    public String getLanguageCode() {
        return OptionalNullable.getFrom(languageCode);
    }

    /**
     * Getter for Currency.
     * Indicates the associated currency for an amount of money. Values correspond to [ISO
     * 4217](https://wikipedia.org/wiki/ISO_4217).
     * @return Returns the String
     */
    @JsonGetter("currency")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getCurrency() {
        return currency;
    }

    /**
     * Internal Getter for PhoneNumber.
     * The phone number of the location. For example, `+1 855-700-6000`.
     * @return Returns the Internal String
     */
    @JsonGetter("phone_number")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetPhoneNumber() {
        return this.phoneNumber;
    }

    /**
     * Getter for PhoneNumber.
     * The phone number of the location. For example, `+1 855-700-6000`.
     * @return Returns the String
     */
    @JsonIgnore
    public String getPhoneNumber() {
        return OptionalNullable.getFrom(phoneNumber);
    }

    /**
     * Internal Getter for BusinessName.
     * The name of the location's overall business. This name is present on receipts and other
     * customer-facing branding, and can be changed no more than three times in a twelve-month
     * period.
     * @return Returns the Internal String
     */
    @JsonGetter("business_name")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetBusinessName() {
        return this.businessName;
    }

    /**
     * Getter for BusinessName.
     * The name of the location's overall business. This name is present on receipts and other
     * customer-facing branding, and can be changed no more than three times in a twelve-month
     * period.
     * @return Returns the String
     */
    @JsonIgnore
    public String getBusinessName() {
        return OptionalNullable.getFrom(businessName);
    }

    /**
     * Getter for Type.
     * A location's type.
     * @return Returns the String
     */
    @JsonGetter("type")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getType() {
        return type;
    }

    /**
     * Internal Getter for WebsiteUrl.
     * The website URL of the location. For example, `https://squareup.com`.
     * @return Returns the Internal String
     */
    @JsonGetter("website_url")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetWebsiteUrl() {
        return this.websiteUrl;
    }

    /**
     * Getter for WebsiteUrl.
     * The website URL of the location. For example, `https://squareup.com`.
     * @return Returns the String
     */
    @JsonIgnore
    public String getWebsiteUrl() {
        return OptionalNullable.getFrom(websiteUrl);
    }

    /**
     * Getter for BusinessHours.
     * The hours of operation for a location.
     * @return Returns the BusinessHours
     */
    @JsonGetter("business_hours")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public BusinessHours getBusinessHours() {
        return businessHours;
    }

    /**
     * Internal Getter for BusinessEmail.
     * The email address of the location. This can be unique to the location and is not always the
     * email address for the business owner or administrator.
     * @return Returns the Internal String
     */
    @JsonGetter("business_email")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetBusinessEmail() {
        return this.businessEmail;
    }

    /**
     * Getter for BusinessEmail.
     * The email address of the location. This can be unique to the location and is not always the
     * email address for the business owner or administrator.
     * @return Returns the String
     */
    @JsonIgnore
    public String getBusinessEmail() {
        return OptionalNullable.getFrom(businessEmail);
    }

    /**
     * Internal Getter for Description.
     * The description of the location. For example, `Main Street location`.
     * @return Returns the Internal String
     */
    @JsonGetter("description")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetDescription() {
        return this.description;
    }

    /**
     * Getter for Description.
     * The description of the location. For example, `Main Street location`.
     * @return Returns the String
     */
    @JsonIgnore
    public String getDescription() {
        return OptionalNullable.getFrom(description);
    }

    /**
     * Internal Getter for TwitterUsername.
     * The Twitter username of the location without the '{@literal @}' symbol. For example, `Square`.
     * @return Returns the Internal String
     */
    @JsonGetter("twitter_username")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetTwitterUsername() {
        return this.twitterUsername;
    }

    /**
     * Getter for TwitterUsername.
     * The Twitter username of the location without the '{@literal @}' symbol. For example, `Square`.
     * @return Returns the String
     */
    @JsonIgnore
    public String getTwitterUsername() {
        return OptionalNullable.getFrom(twitterUsername);
    }

    /**
     * Internal Getter for InstagramUsername.
     * The Instagram username of the location without the '{@literal @}' symbol. For example, `square`.
     * @return Returns the Internal String
     */
    @JsonGetter("instagram_username")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetInstagramUsername() {
        return this.instagramUsername;
    }

    /**
     * Getter for InstagramUsername.
     * The Instagram username of the location without the '{@literal @}' symbol. For example, `square`.
     * @return Returns the String
     */
    @JsonIgnore
    public String getInstagramUsername() {
        return OptionalNullable.getFrom(instagramUsername);
    }

    /**
     * Internal Getter for FacebookUrl.
     * The Facebook profile URL of the location. The URL should begin with 'facebook.com/'. For
     * example, `https://www.facebook.com/square`.
     * @return Returns the Internal String
     */
    @JsonGetter("facebook_url")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetFacebookUrl() {
        return this.facebookUrl;
    }

    /**
     * Getter for FacebookUrl.
     * The Facebook profile URL of the location. The URL should begin with 'facebook.com/'. For
     * example, `https://www.facebook.com/square`.
     * @return Returns the String
     */
    @JsonIgnore
    public String getFacebookUrl() {
        return OptionalNullable.getFrom(facebookUrl);
    }

    /**
     * Getter for Coordinates.
     * Latitude and longitude coordinates.
     * @return Returns the Coordinates
     */
    @JsonGetter("coordinates")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public Coordinates getCoordinates() {
        return coordinates;
    }

    /**
     * Getter for LogoUrl.
     * The URL of the logo image for the location. When configured in the Seller Dashboard (Receipts
     * section), the logo appears on transactions (such as receipts and invoices) that Square
     * generates on behalf of the seller. This image should have a roughly square (1:1) aspect ratio
     * and should be at least 200x200 pixels.
     * @return Returns the String
     */
    @JsonGetter("logo_url")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getLogoUrl() {
        return logoUrl;
    }

    /**
     * Getter for PosBackgroundUrl.
     * The URL of the Point of Sale background image for the location.
     * @return Returns the String
     */
    @JsonGetter("pos_background_url")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getPosBackgroundUrl() {
        return posBackgroundUrl;
    }

    /**
     * Internal Getter for Mcc.
     * A four-digit number that describes the kind of goods or services sold at the location. The
     * [merchant category code
     * (MCC)](https://developer.squareup.com/docs/locations-api#initialize-a-merchant-category-code)
     * of the location as standardized by ISO 18245. For example, `5045`, for a location that sells
     * computer goods and software.
     * @return Returns the Internal String
     */
    @JsonGetter("mcc")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetMcc() {
        return this.mcc;
    }

    /**
     * Getter for Mcc.
     * A four-digit number that describes the kind of goods or services sold at the location. The
     * [merchant category code
     * (MCC)](https://developer.squareup.com/docs/locations-api#initialize-a-merchant-category-code)
     * of the location as standardized by ISO 18245. For example, `5045`, for a location that sells
     * computer goods and software.
     * @return Returns the String
     */
    @JsonIgnore
    public String getMcc() {
        return OptionalNullable.getFrom(mcc);
    }

    /**
     * Getter for FullFormatLogoUrl.
     * The URL of a full-format logo image for the location. When configured in the Seller Dashboard
     * (Receipts section), the logo appears on transactions (such as receipts and invoices) that
     * Square generates on behalf of the seller. This image can be wider than it is tall and should
     * be at least 1280x648 pixels.
     * @return Returns the String
     */
    @JsonGetter("full_format_logo_url")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getFullFormatLogoUrl() {
        return fullFormatLogoUrl;
    }

    /**
     * Getter for TaxIds.
     * Identifiers for the location used by various governments for tax purposes.
     * @return Returns the TaxIds
     */
    @JsonGetter("tax_ids")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public TaxIds getTaxIds() {
        return taxIds;
    }

    @Override
    public int hashCode() {
        return Objects.hash(
                id,
                name,
                address,
                timezone,
                capabilities,
                status,
                createdAt,
                merchantId,
                country,
                languageCode,
                currency,
                phoneNumber,
                businessName,
                type,
                websiteUrl,
                businessHours,
                businessEmail,
                description,
                twitterUsername,
                instagramUsername,
                facebookUrl,
                coordinates,
                logoUrl,
                posBackgroundUrl,
                mcc,
                fullFormatLogoUrl,
                taxIds);
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }
        if (!(obj instanceof Location)) {
            return false;
        }
        Location other = (Location) obj;
        return Objects.equals(id, other.id)
                && Objects.equals(name, other.name)
                && Objects.equals(address, other.address)
                && Objects.equals(timezone, other.timezone)
                && Objects.equals(capabilities, other.capabilities)
                && Objects.equals(status, other.status)
                && Objects.equals(createdAt, other.createdAt)
                && Objects.equals(merchantId, other.merchantId)
                && Objects.equals(country, other.country)
                && Objects.equals(languageCode, other.languageCode)
                && Objects.equals(currency, other.currency)
                && Objects.equals(phoneNumber, other.phoneNumber)
                && Objects.equals(businessName, other.businessName)
                && Objects.equals(type, other.type)
                && Objects.equals(websiteUrl, other.websiteUrl)
                && Objects.equals(businessHours, other.businessHours)
                && Objects.equals(businessEmail, other.businessEmail)
                && Objects.equals(description, other.description)
                && Objects.equals(twitterUsername, other.twitterUsername)
                && Objects.equals(instagramUsername, other.instagramUsername)
                && Objects.equals(facebookUrl, other.facebookUrl)
                && Objects.equals(coordinates, other.coordinates)
                && Objects.equals(logoUrl, other.logoUrl)
                && Objects.equals(posBackgroundUrl, other.posBackgroundUrl)
                && Objects.equals(mcc, other.mcc)
                && Objects.equals(fullFormatLogoUrl, other.fullFormatLogoUrl)
                && Objects.equals(taxIds, other.taxIds);
    }

    /**
     * Converts this Location into string format.
     * @return String representation of this class
     */
    @Override
    public String toString() {
        return "Location [" + "id=" + id + ", name=" + name + ", address=" + address + ", timezone="
                + timezone + ", capabilities=" + capabilities + ", status=" + status
                + ", createdAt=" + createdAt + ", merchantId=" + merchantId + ", country=" + country
                + ", languageCode=" + languageCode + ", currency=" + currency + ", phoneNumber="
                + phoneNumber + ", businessName=" + businessName + ", type=" + type
                + ", websiteUrl=" + websiteUrl + ", businessHours=" + businessHours
                + ", businessEmail=" + businessEmail + ", description=" + description
                + ", twitterUsername=" + twitterUsername + ", instagramUsername="
                + instagramUsername + ", facebookUrl=" + facebookUrl + ", coordinates="
                + coordinates + ", logoUrl=" + logoUrl + ", posBackgroundUrl=" + posBackgroundUrl
                + ", mcc=" + mcc + ", fullFormatLogoUrl=" + fullFormatLogoUrl + ", taxIds=" + taxIds
                + "]";
    }

    /**
     * Builds a new {@link Location.Builder} object.
     * Creates the instance with the state of the current model.
     * @return a new {@link Location.Builder} object
     */
    public Builder toBuilder() {
        Builder builder = new Builder()
                .id(getId())
                .address(getAddress())
                .capabilities(getCapabilities())
                .status(getStatus())
                .createdAt(getCreatedAt())
                .merchantId(getMerchantId())
                .country(getCountry())
                .currency(getCurrency())
                .type(getType())
                .businessHours(getBusinessHours())
                .coordinates(getCoordinates())
                .logoUrl(getLogoUrl())
                .posBackgroundUrl(getPosBackgroundUrl())
                .fullFormatLogoUrl(getFullFormatLogoUrl())
                .taxIds(getTaxIds());
        builder.name = internalGetName();
        builder.timezone = internalGetTimezone();
        builder.languageCode = internalGetLanguageCode();
        builder.phoneNumber = internalGetPhoneNumber();
        builder.businessName = internalGetBusinessName();
        builder.websiteUrl = internalGetWebsiteUrl();
        builder.businessEmail = internalGetBusinessEmail();
        builder.description = internalGetDescription();
        builder.twitterUsername = internalGetTwitterUsername();
        builder.instagramUsername = internalGetInstagramUsername();
        builder.facebookUrl = internalGetFacebookUrl();
        builder.mcc = internalGetMcc();
        return builder;
    }

    /**
     * Class to build instances of {@link Location}.
     */
    public static class Builder {
        private String id;
        private OptionalNullable name;
        private Address address;
        private OptionalNullable timezone;
        private List capabilities;
        private String status;
        private String createdAt;
        private String merchantId;
        private String country;
        private OptionalNullable languageCode;
        private String currency;
        private OptionalNullable phoneNumber;
        private OptionalNullable businessName;
        private String type;
        private OptionalNullable websiteUrl;
        private BusinessHours businessHours;
        private OptionalNullable businessEmail;
        private OptionalNullable description;
        private OptionalNullable twitterUsername;
        private OptionalNullable instagramUsername;
        private OptionalNullable facebookUrl;
        private Coordinates coordinates;
        private String logoUrl;
        private String posBackgroundUrl;
        private OptionalNullable mcc;
        private String fullFormatLogoUrl;
        private TaxIds taxIds;

        /**
         * Setter for id.
         * @param  id  String value for id.
         * @return Builder
         */
        public Builder id(String id) {
            this.id = id;
            return this;
        }

        /**
         * Setter for name.
         * @param  name  String value for name.
         * @return Builder
         */
        public Builder name(String name) {
            this.name = OptionalNullable.of(name);
            return this;
        }

        /**
         * UnSetter for name.
         * @return Builder
         */
        public Builder unsetName() {
            name = null;
            return this;
        }

        /**
         * Setter for address.
         * @param  address  Address value for address.
         * @return Builder
         */
        public Builder address(Address address) {
            this.address = address;
            return this;
        }

        /**
         * Setter for timezone.
         * @param  timezone  String value for timezone.
         * @return Builder
         */
        public Builder timezone(String timezone) {
            this.timezone = OptionalNullable.of(timezone);
            return this;
        }

        /**
         * UnSetter for timezone.
         * @return Builder
         */
        public Builder unsetTimezone() {
            timezone = null;
            return this;
        }

        /**
         * Setter for capabilities.
         * @param  capabilities  List of String value for capabilities.
         * @return Builder
         */
        public Builder capabilities(List capabilities) {
            this.capabilities = capabilities;
            return this;
        }

        /**
         * Setter for status.
         * @param  status  String value for status.
         * @return Builder
         */
        public Builder status(String status) {
            this.status = status;
            return this;
        }

        /**
         * Setter for createdAt.
         * @param  createdAt  String value for createdAt.
         * @return Builder
         */
        public Builder createdAt(String createdAt) {
            this.createdAt = createdAt;
            return this;
        }

        /**
         * Setter for merchantId.
         * @param  merchantId  String value for merchantId.
         * @return Builder
         */
        public Builder merchantId(String merchantId) {
            this.merchantId = merchantId;
            return this;
        }

        /**
         * Setter for country.
         * @param  country  String value for country.
         * @return Builder
         */
        public Builder country(String country) {
            this.country = country;
            return this;
        }

        /**
         * Setter for languageCode.
         * @param  languageCode  String value for languageCode.
         * @return Builder
         */
        public Builder languageCode(String languageCode) {
            this.languageCode = OptionalNullable.of(languageCode);
            return this;
        }

        /**
         * UnSetter for languageCode.
         * @return Builder
         */
        public Builder unsetLanguageCode() {
            languageCode = null;
            return this;
        }

        /**
         * Setter for currency.
         * @param  currency  String value for currency.
         * @return Builder
         */
        public Builder currency(String currency) {
            this.currency = currency;
            return this;
        }

        /**
         * Setter for phoneNumber.
         * @param  phoneNumber  String value for phoneNumber.
         * @return Builder
         */
        public Builder phoneNumber(String phoneNumber) {
            this.phoneNumber = OptionalNullable.of(phoneNumber);
            return this;
        }

        /**
         * UnSetter for phoneNumber.
         * @return Builder
         */
        public Builder unsetPhoneNumber() {
            phoneNumber = null;
            return this;
        }

        /**
         * Setter for businessName.
         * @param  businessName  String value for businessName.
         * @return Builder
         */
        public Builder businessName(String businessName) {
            this.businessName = OptionalNullable.of(businessName);
            return this;
        }

        /**
         * UnSetter for businessName.
         * @return Builder
         */
        public Builder unsetBusinessName() {
            businessName = null;
            return this;
        }

        /**
         * Setter for type.
         * @param  type  String value for type.
         * @return Builder
         */
        public Builder type(String type) {
            this.type = type;
            return this;
        }

        /**
         * Setter for websiteUrl.
         * @param  websiteUrl  String value for websiteUrl.
         * @return Builder
         */
        public Builder websiteUrl(String websiteUrl) {
            this.websiteUrl = OptionalNullable.of(websiteUrl);
            return this;
        }

        /**
         * UnSetter for websiteUrl.
         * @return Builder
         */
        public Builder unsetWebsiteUrl() {
            websiteUrl = null;
            return this;
        }

        /**
         * Setter for businessHours.
         * @param  businessHours  BusinessHours value for businessHours.
         * @return Builder
         */
        public Builder businessHours(BusinessHours businessHours) {
            this.businessHours = businessHours;
            return this;
        }

        /**
         * Setter for businessEmail.
         * @param  businessEmail  String value for businessEmail.
         * @return Builder
         */
        public Builder businessEmail(String businessEmail) {
            this.businessEmail = OptionalNullable.of(businessEmail);
            return this;
        }

        /**
         * UnSetter for businessEmail.
         * @return Builder
         */
        public Builder unsetBusinessEmail() {
            businessEmail = null;
            return this;
        }

        /**
         * Setter for description.
         * @param  description  String value for description.
         * @return Builder
         */
        public Builder description(String description) {
            this.description = OptionalNullable.of(description);
            return this;
        }

        /**
         * UnSetter for description.
         * @return Builder
         */
        public Builder unsetDescription() {
            description = null;
            return this;
        }

        /**
         * Setter for twitterUsername.
         * @param  twitterUsername  String value for twitterUsername.
         * @return Builder
         */
        public Builder twitterUsername(String twitterUsername) {
            this.twitterUsername = OptionalNullable.of(twitterUsername);
            return this;
        }

        /**
         * UnSetter for twitterUsername.
         * @return Builder
         */
        public Builder unsetTwitterUsername() {
            twitterUsername = null;
            return this;
        }

        /**
         * Setter for instagramUsername.
         * @param  instagramUsername  String value for instagramUsername.
         * @return Builder
         */
        public Builder instagramUsername(String instagramUsername) {
            this.instagramUsername = OptionalNullable.of(instagramUsername);
            return this;
        }

        /**
         * UnSetter for instagramUsername.
         * @return Builder
         */
        public Builder unsetInstagramUsername() {
            instagramUsername = null;
            return this;
        }

        /**
         * Setter for facebookUrl.
         * @param  facebookUrl  String value for facebookUrl.
         * @return Builder
         */
        public Builder facebookUrl(String facebookUrl) {
            this.facebookUrl = OptionalNullable.of(facebookUrl);
            return this;
        }

        /**
         * UnSetter for facebookUrl.
         * @return Builder
         */
        public Builder unsetFacebookUrl() {
            facebookUrl = null;
            return this;
        }

        /**
         * Setter for coordinates.
         * @param  coordinates  Coordinates value for coordinates.
         * @return Builder
         */
        public Builder coordinates(Coordinates coordinates) {
            this.coordinates = coordinates;
            return this;
        }

        /**
         * Setter for logoUrl.
         * @param  logoUrl  String value for logoUrl.
         * @return Builder
         */
        public Builder logoUrl(String logoUrl) {
            this.logoUrl = logoUrl;
            return this;
        }

        /**
         * Setter for posBackgroundUrl.
         * @param  posBackgroundUrl  String value for posBackgroundUrl.
         * @return Builder
         */
        public Builder posBackgroundUrl(String posBackgroundUrl) {
            this.posBackgroundUrl = posBackgroundUrl;
            return this;
        }

        /**
         * Setter for mcc.
         * @param  mcc  String value for mcc.
         * @return Builder
         */
        public Builder mcc(String mcc) {
            this.mcc = OptionalNullable.of(mcc);
            return this;
        }

        /**
         * UnSetter for mcc.
         * @return Builder
         */
        public Builder unsetMcc() {
            mcc = null;
            return this;
        }

        /**
         * Setter for fullFormatLogoUrl.
         * @param  fullFormatLogoUrl  String value for fullFormatLogoUrl.
         * @return Builder
         */
        public Builder fullFormatLogoUrl(String fullFormatLogoUrl) {
            this.fullFormatLogoUrl = fullFormatLogoUrl;
            return this;
        }

        /**
         * Setter for taxIds.
         * @param  taxIds  TaxIds value for taxIds.
         * @return Builder
         */
        public Builder taxIds(TaxIds taxIds) {
            this.taxIds = taxIds;
            return this;
        }

        /**
         * Builds a new {@link Location} object using the set fields.
         * @return {@link Location}
         */
        public Location build() {
            return new Location(
                    id,
                    name,
                    address,
                    timezone,
                    capabilities,
                    status,
                    createdAt,
                    merchantId,
                    country,
                    languageCode,
                    currency,
                    phoneNumber,
                    businessName,
                    type,
                    websiteUrl,
                    businessHours,
                    businessEmail,
                    description,
                    twitterUsername,
                    instagramUsername,
                    facebookUrl,
                    coordinates,
                    logoUrl,
                    posBackgroundUrl,
                    mcc,
                    fullFormatLogoUrl,
                    taxIds);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy