/* Options:
Date: 2025-04-16 06:59:41
Version: 8.0
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://consumer-api.brovs.com

//Package: 
//GlobalNamespace: ConsumerApi
//AddPropertyAccessors: True
//SettersReturnThis: True
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddDescriptionAsComments: True
//AddImplicitVersion: 
IncludeTypes: CompleteProfileRequest.*
//ExcludeTypes: 
//TreatTypesAsStrings: 
//DefaultImports: java.math.*,java.util.*,net.servicestack.client.*
*/

import java.math.*;
import java.util.*;
import net.servicestack.client.*;

public class ConsumerApi
{

    @Route(Path="/user/complete_profile", Verbs="PUT")
    public static class CompleteProfileRequest implements IReturn<CompleteProfileResponse>, IPut
    {
        @Validate(Validator="NotNull")
        public Sex sex = null;

        @Validate(Validator="NotEmpty")
        public Boolean acceptTermsOfService = null;
        
        public Sex getSex() { return sex; }
        public CompleteProfileRequest setSex(Sex value) { this.sex = value; return this; }
        public Boolean isAcceptTermsOfService() { return acceptTermsOfService; }
        public CompleteProfileRequest setAcceptTermsOfService(Boolean value) { this.acceptTermsOfService = value; return this; }
        private static Object responseType = CompleteProfileResponse.class;
        public Object getResponseType() { return responseType; }
    }

    public static class CompleteProfileResponse
    {
        public UserProfileDto userProfile = null;
        
        public UserProfileDto getUserProfile() { return userProfile; }
        public CompleteProfileResponse setUserProfile(UserProfileDto value) { this.userProfile = value; return this; }
    }

    public static class DateOfBirth
    {
        public Integer year = null;
        public Integer month = null;
        public Integer dayOfMonth = null;
        
        public Integer getYear() { return year; }
        public DateOfBirth setYear(Integer value) { this.year = value; return this; }
        public Integer getMonth() { return month; }
        public DateOfBirth setMonth(Integer value) { this.month = value; return this; }
        public Integer getDayOfMonth() { return dayOfMonth; }
        public DateOfBirth setDayOfMonth(Integer value) { this.dayOfMonth = value; return this; }
    }

    public static enum Sex
    {
        Male,
        Female;
    }

    public static enum DistanceUnit
    {
        Kilometer,
        Mile;
    }

    public static enum Locale
    {
        EnUs,
        NbNo;
    }

    public static class HomeLocation
    {
        public UserAddress address = null;
        public Float latitude = null;
        public Float longitude = null;
        
        public UserAddress getAddress() { return address; }
        public HomeLocation setAddress(UserAddress value) { this.address = value; return this; }
        public Float getLatitude() { return latitude; }
        public HomeLocation setLatitude(Float value) { this.latitude = value; return this; }
        public Float getLongitude() { return longitude; }
        public HomeLocation setLongitude(Float value) { this.longitude = value; return this; }
    }

    public static class UserProfileDto
    {
        public Locale locale = null;
        public UUID userGuid = null;
        public String firstName = null;
        public String lastName = null;
        public String profilePhotoUrl = null;
        public String mobilePhone = null;
        public Boolean mobilePhoneVerified = null;
        public String email = null;
        public Boolean emailVerified = null;
        public Boolean hasPassword = null;
        public DateOfBirth dateOfBirth = null;
        public Sex sex = null;
        public HomeLocation home = null;
        public DistanceUnit showDistancesIn = null;
        public Boolean managesPlacesInBusinessWeb = null;
        public Long pointsTotal = null;
        
        public Locale getLocale() { return locale; }
        public UserProfileDto setLocale(Locale value) { this.locale = value; return this; }
        public UUID getUserGuid() { return userGuid; }
        public UserProfileDto setUserGuid(UUID value) { this.userGuid = value; return this; }
        public String getFirstName() { return firstName; }
        public UserProfileDto setFirstName(String value) { this.firstName = value; return this; }
        public String getLastName() { return lastName; }
        public UserProfileDto setLastName(String value) { this.lastName = value; return this; }
        public String getProfilePhotoUrl() { return profilePhotoUrl; }
        public UserProfileDto setProfilePhotoUrl(String value) { this.profilePhotoUrl = value; return this; }
        public String getMobilePhone() { return mobilePhone; }
        public UserProfileDto setMobilePhone(String value) { this.mobilePhone = value; return this; }
        public Boolean isMobilePhoneVerified() { return mobilePhoneVerified; }
        public UserProfileDto setMobilePhoneVerified(Boolean value) { this.mobilePhoneVerified = value; return this; }
        public String getEmail() { return email; }
        public UserProfileDto setEmail(String value) { this.email = value; return this; }
        public Boolean isEmailVerified() { return emailVerified; }
        public UserProfileDto setEmailVerified(Boolean value) { this.emailVerified = value; return this; }
        public Boolean isHasPassword() { return hasPassword; }
        public UserProfileDto setHasPassword(Boolean value) { this.hasPassword = value; return this; }
        public DateOfBirth getDateOfBirth() { return dateOfBirth; }
        public UserProfileDto setDateOfBirth(DateOfBirth value) { this.dateOfBirth = value; return this; }
        public Sex getSex() { return sex; }
        public UserProfileDto setSex(Sex value) { this.sex = value; return this; }
        public HomeLocation getHome() { return home; }
        public UserProfileDto setHome(HomeLocation value) { this.home = value; return this; }
        public DistanceUnit getShowDistancesIn() { return showDistancesIn; }
        public UserProfileDto setShowDistancesIn(DistanceUnit value) { this.showDistancesIn = value; return this; }
        public Boolean isManagesPlacesInBusinessWeb() { return managesPlacesInBusinessWeb; }
        public UserProfileDto setManagesPlacesInBusinessWeb(Boolean value) { this.managesPlacesInBusinessWeb = value; return this; }
        public Long getPointsTotal() { return pointsTotal; }
        public UserProfileDto setPointsTotal(Long value) { this.pointsTotal = value; return this; }
    }

    public static class UserAddress
    {
        public String streetName = null;
        public String streetNumber = null;
        public String postalCode = null;
        public String region = null;
        public String countryCode = null;
        
        public String getStreetName() { return streetName; }
        public UserAddress setStreetName(String value) { this.streetName = value; return this; }
        public String getStreetNumber() { return streetNumber; }
        public UserAddress setStreetNumber(String value) { this.streetNumber = value; return this; }
        public String getPostalCode() { return postalCode; }
        public UserAddress setPostalCode(String value) { this.postalCode = value; return this; }
        public String getRegion() { return region; }
        public UserAddress setRegion(String value) { this.region = value; return this; }
        public String getCountryCode() { return countryCode; }
        public UserAddress setCountryCode(String value) { this.countryCode = value; return this; }
    }

}