/* Options:
Date: 2025-04-15 21:26:44
Version: 8.23
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://api.bokamera.se

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

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

public class dtos
{

    @Route(Path="/settings/system", Verbs="PUT")
    @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
    // @ApiResponse(Description="You have too low privilegies to call this service", StatusCode=403)
    @ValidateRequest(Validator="IsAuthenticated")
    public static class UpdateSystemSetting implements IReturn<SystemSettingsResponse>, ICompany
    {
        /**
        * The company id, if empty will use the company id for the user you are logged in with.
        */
        @ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.")
        public UUID CompanyId = null;

        /**
        * If the booking is active or not
        */
        @ApiMember(DataType="bool", Description="If the booking is active or not")
        public Boolean Active = null;

        /**
        * If the booking is not active, what message to show to the customers
        */
        @ApiMember(DataType="string", Description="If the booking is not active, what message to show to the customers")
        public String InactiveMessage = null;

        /**
        * If the company should be visible in search results on hompage
        */
        @ApiMember(DataType="bool", Description="If the company should be visible in search results on hompage")
        public Boolean Searchable = null;

        /**
        * If you have a google analytics account and want to track your customers behaviors.
        */
        @ApiMember(DataType="string", Description="If you have a google analytics account and want to track your customers behaviors.")
        public String GATrackingId = null;

        /**
        * If you have a google Ads Conversion Id account and want to track your customers behaviors.
        */
        @ApiMember(DataType="string", Description="If you have a google Ads Conversion Id account and want to track your customers behaviors.")
        public String GoogleAdsConversionId = null;

        /**
        * If you have a LinkedIn account and want to track your customers behaviors.
        */
        @ApiMember(DataType="string", Description="If you have a LinkedIn account and want to track your customers behaviors.")
        public String LinkedinTagId = null;

        /**
        * If you have a Google Ads Conversion Label and want to track your customers behaviors.
        */
        @ApiMember(DataType="string", Description="If you have a Google Ads Conversion Label and want to track your customers behaviors.")
        public String GoogleAdsConversionLabel = null;

        /**
        * If you have a google tag manager account and want to track your customers behaviors.
        */
        @ApiMember(DataType="string", Description="If you have a google tag manager account and want to track your customers behaviors.")
        public String GTMTrackingId = null;

        /**
        * If you have a facebook account and want to track your customers behaviors.
        */
        @ApiMember(DataType="string", Description="If you have a facebook account and want to track your customers behaviors.")
        public String FacebookPixelId = null;

        /**
        * If the company should be visible on the marketplace
        */
        @ApiMember(DataType="bool", Description="If the company should be visible on the marketplace")
        public Boolean ShowOnMarketplace = null;

        /**
        * If you want your customers to be albe to change language on your homepage
        */
        @ApiMember(DataType="bool", Description="If you want your customers to be albe to change language on your homepage")
        public Boolean MultiLanguage = null;

        /**
        * If you want your own written text on your homepage to be translated using google analytics when a user changes language
        */
        @ApiMember(DataType="bool", Description="If you want your own written text on your homepage to be translated using google analytics when a user changes language")
        public Boolean EnableAPITranslation = null;

        /**
        * What is the standard language your homepage information is written in. Select from the different countries, ie. SE,NO,EN
        */
        @ApiMember(DataType="string", Description="What is the standard language your homepage information is written in. Select from the different countries, ie. SE,NO,EN")
        public String DefaultLanguage = null;

        /**
        * If you want to allow to send customer information in the tracking events to the external providers. Note you as a company are responsible for informing your customers and handling the data in terms of GDPR. 
        */
        @ApiMember(Description="If you want to allow to send customer information in the tracking events to the external providers. Note you as a company are responsible for informing your customers and handling the data in terms of GDPR. ")
        public Boolean SendCustomerInformationToExternalProviders = null;

        /**
        * The maximum number of SMS messages that can be sent per day.
        */
        @ApiMember(Description="The maximum number of SMS messages that can be sent per day.")
        public Integer SMSMessageDailySendLimit = null;

        /**
        * The maximum number of email messages that can be sent per day.
        */
        @ApiMember(Description="The maximum number of email messages that can be sent per day.")
        public Integer EmailMessageDailySendLimit = null;
        
        public UUID getCompanyId() { return CompanyId; }
        public UpdateSystemSetting setCompanyId(UUID value) { this.CompanyId = value; return this; }
        public Boolean isActive() { return Active; }
        public UpdateSystemSetting setActive(Boolean value) { this.Active = value; return this; }
        public String getInactiveMessage() { return InactiveMessage; }
        public UpdateSystemSetting setInactiveMessage(String value) { this.InactiveMessage = value; return this; }
        public Boolean isSearchable() { return Searchable; }
        public UpdateSystemSetting setSearchable(Boolean value) { this.Searchable = value; return this; }
        public String getGaTrackingId() { return GATrackingId; }
        public UpdateSystemSetting setGaTrackingId(String value) { this.GATrackingId = value; return this; }
        public String getGoogleAdsConversionId() { return GoogleAdsConversionId; }
        public UpdateSystemSetting setGoogleAdsConversionId(String value) { this.GoogleAdsConversionId = value; return this; }
        public String getLinkedinTagId() { return LinkedinTagId; }
        public UpdateSystemSetting setLinkedinTagId(String value) { this.LinkedinTagId = value; return this; }
        public String getGoogleAdsConversionLabel() { return GoogleAdsConversionLabel; }
        public UpdateSystemSetting setGoogleAdsConversionLabel(String value) { this.GoogleAdsConversionLabel = value; return this; }
        public String getGtmTrackingId() { return GTMTrackingId; }
        public UpdateSystemSetting setGtmTrackingId(String value) { this.GTMTrackingId = value; return this; }
        public String getFacebookPixelId() { return FacebookPixelId; }
        public UpdateSystemSetting setFacebookPixelId(String value) { this.FacebookPixelId = value; return this; }
        public Boolean isShowOnMarketplace() { return ShowOnMarketplace; }
        public UpdateSystemSetting setShowOnMarketplace(Boolean value) { this.ShowOnMarketplace = value; return this; }
        public Boolean isMultiLanguage() { return MultiLanguage; }
        public UpdateSystemSetting setMultiLanguage(Boolean value) { this.MultiLanguage = value; return this; }
        public Boolean isEnableAPITranslation() { return EnableAPITranslation; }
        public UpdateSystemSetting setEnableAPITranslation(Boolean value) { this.EnableAPITranslation = value; return this; }
        public String getDefaultLanguage() { return DefaultLanguage; }
        public UpdateSystemSetting setDefaultLanguage(String value) { this.DefaultLanguage = value; return this; }
        public Boolean isSendCustomerInformationToExternalProviders() { return SendCustomerInformationToExternalProviders; }
        public UpdateSystemSetting setSendCustomerInformationToExternalProviders(Boolean value) { this.SendCustomerInformationToExternalProviders = value; return this; }
        public Integer getSmsMessageDailySendLimit() { return SMSMessageDailySendLimit; }
        public UpdateSystemSetting setSmsMessageDailySendLimit(Integer value) { this.SMSMessageDailySendLimit = value; return this; }
        public Integer getEmailMessageDailySendLimit() { return EmailMessageDailySendLimit; }
        public UpdateSystemSetting setEmailMessageDailySendLimit(Integer value) { this.EmailMessageDailySendLimit = value; return this; }
        private static Object responseType = SystemSettingsResponse.class;
        public Object getResponseType() { return responseType; }
    }

    public static class SystemSettingsResponse
    {
        /**
        * The country options to choose from
        */
        @ApiMember(Description="The country options to choose from")
        public ArrayList<LanguageResponse> LanguageOptions = null;

        /**
        * If the booking is active or not
        */
        @ApiMember(DataType="bool", Description="If the booking is active or not")
        public Boolean Active = null;

        /**
        * If the booking is not active, what message to show to the customers
        */
        @ApiMember(DataType="string", Description="If the booking is not active, what message to show to the customers")
        public String InactiveMessage = null;

        /**
        * If the company should be visible in search results on hompage
        */
        @ApiMember(DataType="bool", Description="If the company should be visible in search results on hompage")
        public Boolean Searchable = null;

        /**
        * If you have a google analytics account and want to track your customers behaviors.
        */
        @ApiMember(DataType="string", Description="If you have a google analytics account and want to track your customers behaviors.")
        public String GATrackingId = null;

        /**
        * If you have a google Ads Conversion Id account and want to track your customers behaviors.
        */
        @ApiMember(DataType="string", Description="If you have a google Ads Conversion Id account and want to track your customers behaviors.")
        public String GoogleAdsConversionId = null;

        /**
        * If you have a LinkedIn account and want to track your customers behaviors.
        */
        @ApiMember(DataType="string", Description="If you have a LinkedIn account and want to track your customers behaviors.")
        public String LinkedinTagId = null;

        /**
        * If you have a Google Ads Conversion Label and want to track your customers behaviors.
        */
        @ApiMember(DataType="string", Description="If you have a Google Ads Conversion Label and want to track your customers behaviors.")
        public String GoogleAdsConversionLabel = null;

        /**
        * If you have a google tag manager account and want to track your customers behaviors.
        */
        @ApiMember(DataType="string", Description="If you have a google tag manager account and want to track your customers behaviors.")
        public String GTMTrackingId = null;

        /**
        * If you have a facebook account and want to track your customers behaviors.
        */
        @ApiMember(DataType="string", Description="If you have a facebook account and want to track your customers behaviors.")
        public String FacebookPixelId = null;

        /**
        * If the company should be visible on the marketplace
        */
        @ApiMember(DataType="bool", Description="If the company should be visible on the marketplace")
        public Boolean ShowOnMarketplace = null;

        /**
        * If you want your customers to be albe to change language on your homepage
        */
        @ApiMember(DataType="bool", Description="If you want your customers to be albe to change language on your homepage")
        public Boolean MultiLanguage = null;

        /**
        * If you want your own written text on your homepage to be translated using google analytics when a user changes language
        */
        @ApiMember(DataType="bool", Description="If you want your own written text on your homepage to be translated using google analytics when a user changes language")
        public Boolean EnableAPITranslation = null;

        /**
        * What is the standard language your homepage information is written in. Select from the different countries, ie. SE,NO,EN
        */
        @ApiMember(DataType="string", Description="What is the standard language your homepage information is written in. Select from the different countries, ie. SE,NO,EN")
        public String DefaultLanguage = null;

        /**
        * If you want to allow to send customer information in the tracking events to the external providers. Note you as a company are responsible for informing your customers and handling the data in terms of GDPR. 
        */
        @ApiMember(Description="If you want to allow to send customer information in the tracking events to the external providers. Note you as a company are responsible for informing your customers and handling the data in terms of GDPR. ")
        public Boolean SendCustomerInformationToExternalProviders = null;
        
        public ArrayList<LanguageResponse> getLanguageOptions() { return LanguageOptions; }
        public SystemSettingsResponse setLanguageOptions(ArrayList<LanguageResponse> value) { this.LanguageOptions = value; return this; }
        public Boolean isActive() { return Active; }
        public SystemSettingsResponse setActive(Boolean value) { this.Active = value; return this; }
        public String getInactiveMessage() { return InactiveMessage; }
        public SystemSettingsResponse setInactiveMessage(String value) { this.InactiveMessage = value; return this; }
        public Boolean isSearchable() { return Searchable; }
        public SystemSettingsResponse setSearchable(Boolean value) { this.Searchable = value; return this; }
        public String getGaTrackingId() { return GATrackingId; }
        public SystemSettingsResponse setGaTrackingId(String value) { this.GATrackingId = value; return this; }
        public String getGoogleAdsConversionId() { return GoogleAdsConversionId; }
        public SystemSettingsResponse setGoogleAdsConversionId(String value) { this.GoogleAdsConversionId = value; return this; }
        public String getLinkedinTagId() { return LinkedinTagId; }
        public SystemSettingsResponse setLinkedinTagId(String value) { this.LinkedinTagId = value; return this; }
        public String getGoogleAdsConversionLabel() { return GoogleAdsConversionLabel; }
        public SystemSettingsResponse setGoogleAdsConversionLabel(String value) { this.GoogleAdsConversionLabel = value; return this; }
        public String getGtmTrackingId() { return GTMTrackingId; }
        public SystemSettingsResponse setGtmTrackingId(String value) { this.GTMTrackingId = value; return this; }
        public String getFacebookPixelId() { return FacebookPixelId; }
        public SystemSettingsResponse setFacebookPixelId(String value) { this.FacebookPixelId = value; return this; }
        public Boolean isShowOnMarketplace() { return ShowOnMarketplace; }
        public SystemSettingsResponse setShowOnMarketplace(Boolean value) { this.ShowOnMarketplace = value; return this; }
        public Boolean isMultiLanguage() { return MultiLanguage; }
        public SystemSettingsResponse setMultiLanguage(Boolean value) { this.MultiLanguage = value; return this; }
        public Boolean isEnableAPITranslation() { return EnableAPITranslation; }
        public SystemSettingsResponse setEnableAPITranslation(Boolean value) { this.EnableAPITranslation = value; return this; }
        public String getDefaultLanguage() { return DefaultLanguage; }
        public SystemSettingsResponse setDefaultLanguage(String value) { this.DefaultLanguage = value; return this; }
        public Boolean isSendCustomerInformationToExternalProviders() { return SendCustomerInformationToExternalProviders; }
        public SystemSettingsResponse setSendCustomerInformationToExternalProviders(Boolean value) { this.SendCustomerInformationToExternalProviders = value; return this; }
    }

    public static interface ICompany
    {
        public UUID CompanyId = null;
    }

    public static class LanguageResponse
    {
        public String Id = null;
        public String Name = null;
        
        public String getId() { return Id; }
        public LanguageResponse setId(String value) { this.Id = value; return this; }
        public String getName() { return Name; }
        public LanguageResponse setName(String value) { this.Name = value; return this; }
    }

}