/* Options: Date: 2024-07-03 12:54:41 SwiftVersion: 5.0 Version: 8.23 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.bokamera.se //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: CreateCompany.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/companies/", "POST") // @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401) public class CreateCompany : IReturn, Codable { public typealias Return = CompanyQueryResponse /** * */ // @ApiMember(DataType="string", Description="", IsRequired=true) public var name:String /** * */ // @ApiMember(DataType="string", Description="", IsRequired=true) public var organisationNumber:String /** * What type of company. If it's used for personal use or as a company. 1 = Company use, 2 = Personal use */ // @ApiMember(DataType="int", Description="What type of company. If it's used for personal use or as a company. 1 = Company use, 2 = Personal use", IsRequired=true) public var typeId:Int /** * What company owner. 1 = BokaMera (default) */ // @ApiMember(DataType="int", Description="What company owner. 1 = BokaMera (default)", IsRequired=true) public var companyOwnerId:Int /** * */ // @ApiMember(DataType="string", Description="", IsRequired=true) public var openingHours:String /** * */ // @ApiMember(DataType="string", Description="") public var details:String /** * */ // @ApiMember(DataType="string", Description="", IsRequired=true) public var categoryId:Int /** * */ // @ApiMember(DataType="uri", Description="", IsRequired=true) public var logoType:Uri /** * */ // @ApiMember(DataType="string", Description="") public var street1:String /** * */ // @ApiMember(DataType="string", Description="") public var street2:String /** * */ // @ApiMember(DataType="string", Description="") public var zipCode:String /** * */ // @ApiMember(DataType="string", Description="") public var city:String /** * */ // @ApiMember(DataType="string", Description="") public var countryId:String /** * */ // @ApiMember(DataType="string", Description="", IsRequired=true) public var longitude:String /** * */ // @ApiMember(DataType="string", Description="") public var latitude:String /** * */ // @ApiMember(DataType="string", Description="") public var phone:String /** * */ // @ApiMember(DataType="string", Description="", IsRequired=true) public var email:String /** * */ // @ApiMember(DataType="string", Description="") public var fax:String /** * */ // @ApiMember(DataType="string", Description="") public var homepage:String /** * */ // @ApiMember(DataType="string", Description="", IsRequired=true) public var sitePath:String /** * */ // @ApiMember(Description="", IsRequired=true) public var companyUser:CreateCompanyCompanyUser public var billingInformation:CreateCompanyBillingInformation /** * Id of the license type. If none is set it's free license */ // @ApiMember(Description="Id of the license type. If none is set it's free license", IsRequired=true) public var licenseTypeId:Int /** * */ // @ApiMember(DataType="string", Description="") public var domainName:String required public init(){} } public class CompanyQueryResponse : Codable { public var id:String public var name:String /** * The organisation number will only be visible if your owner to the company */ // @ApiMember(DataType="string", Description="The organisation number will only be visible if your owner to the company") public var organisationNumber:String /** * What type of company. If it's used for personal use or as a company. */ // @ApiMember(DataType="int", Description="What type of company. If it's used for personal use or as a company.") public var typeId:Int? public var details:String public var categoryId:Int public var category:String public var logoType:Uri public var coverImage:Uri public var street1:String public var street2:String public var zipCode:String public var city:String public var countryId:String public var longitude:String public var latitude:String public var distance:Double? public var phone:String public var email:String public var homepage:String public var sitePath:String public var active:Bool public var codeLockSystem:CodeLockSystemType? public var isFreeAccount:Bool /** * Will show when the company was updated, note it will only be shown if your logged in as admin for the company. */ // @ApiMember(DataType="datetime", Description="Will show when the company was updated, note it will only be shown if your logged in as admin for the company.") public var updated:Date? /** * Will show when the company was created, note it will only be shown if your logged in as admin for the company. */ // @ApiMember(DataType="datetime", Description="Will show when the company was created, note it will only be shown if your logged in as admin for the company.") public var created:Date? public var statusId:Int /** * If the company is marked as favourite for the logged in user */ // @ApiMember(DataType="boolean", Description="If the company is marked as favourite for the logged in user") public var isFavorite:Bool public var bookingAgreements:String public var bookingSettings:CompanyBookingSettings public var systemSettings:CompanySystemSettings public var widgetSettings:CompanyWidgetSettings public var homepageSettings:HomepageSettingsResponse public var ratingSummary:CompanyRatingSummary public var reviews:[RatingReviewResponse] = [] public var customerCustomFields:[CustomFieldConfigData] = [] public var responseStatus:ResponseStatus required public init(){} } public class CreateCompanyCompanyUser : Codable { // @ApiMember(IsRequired=true) public var firstname:String // @ApiMember(IsRequired=true) public var lastname:String // @ApiMember(IsRequired=true) public var phone:String // @ApiMember(IsRequired=true) public var email:String // @ApiMember() public var workerId:Int? required public init(){} } public class CreateCompanyBillingInformation : Codable { /** * The prefered billing method. */ // @ApiMember(Description="The prefered billing method.", IsRequired=true) public var billingMethodId:Int /** * The name that should be printed on the billing information, normally this would be your company name. */ // @ApiMember(Description="The name that should be printed on the billing information, normally this would be your company name.") public var name:String /** * If you want to add the attention to the billing address. */ // @ApiMember(Description="If you want to add the attention to the billing address.") public var attention:String /** * The street for the billing adress. This is required when having postal invoice as billing method. */ // @ApiMember(Description="The street for the billing adress. This is required when having postal invoice as billing method.") public var street1:String /** * The street for the billing adress. */ // @ApiMember(Description="The street for the billing adress.") public var street2:String /** * The zip code (postal code) for the billing adress. This is required when having postal invoice as billing method. */ // @ApiMember(Description="The zip code (postal code) for the billing adress. This is required when having postal invoice as billing method.") public var zipCode:String /** * The city for the billing adress. This is required when having postal invoice as billing method. */ // @ApiMember(Description="The city for the billing adress. This is required when having postal invoice as billing method.") public var city:String /** * The country for the billing adress. This is required when having postal invoice as billing method. */ // @ApiMember(Description="The country for the billing adress. This is required when having postal invoice as billing method.") public var countryId:String /** * The billing email. This is required when having email invoice as billing method. */ // @ApiMember(Description="The billing email. This is required when having email invoice as billing method.") public var email:String /** * The billing payment terms in days. This is default 15 days. */ // @ApiMember(Description="The billing payment terms in days. This is default 15 days.") public var paymentTermsDays:Int? /** * The company vat registration number. */ // @ApiMember(Description="The company vat registration number.") public var vatRegistrationNumber:String required public init(){} } public class RatingReviewResponse : Codable { /** * The title for the review */ // @ApiMember(Description="The title for the review") public var title:String /** * The description for the review */ // @ApiMember(Description="The description for the review") public var Description:String /** * The rating score */ // @ApiMember(Description="The rating score") public var ratingScore:Int /** * The review author */ // @ApiMember(Description="The review author") public var author:String /** * The created date */ // @ApiMember(Description="The created date") public var created:Date /** * The review answer from the company */ // @ApiMember(Description="The review answer from the company") public var reviewAnswer:String required public init(){} } public class CustomFieldConfigData : Codable { /** * Custom field id */ // @ApiMember(Description="Custom field id") public var id:Int /** * Configuration name. Example: 'Number of persons'. */ // @ApiMember(Description="Configuration name. Example: 'Number of persons'.") public var name:String /** * Custom field description. Example: 'For how many persons is this booking?' */ // @ApiMember(Description="Custom field description. Example: 'For how many persons is this booking?'") public var Description:String /** * Field width. Example: 20 for 20px */ // @ApiMember(Description="Field width. Example: 20 for 20px") public var width:Int? /** * Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox' */ // @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'") public var dataType:String /** * Default value of the field. Example: '3' */ // @ApiMember(Description="Default value of the field. Example: '3'") public var defaultValue:String /** * Determines if the field is required to have a value or not */ // @ApiMember(Description="Determines if the field is required to have a value or not") public var isMandatory:Bool /** * Error message shown to the user if the field data is required but not entered */ // @ApiMember(Description="Error message shown to the user if the field data is required but not entered") public var mandatoryErrorMessage:String /** * Max lenght of the field */ // @ApiMember(Description="Max lenght of the field") public var maxLength:Int /** * If the field should have multiple lines */ // @ApiMember(Description="If the field should have multiple lines") public var multipleLineText:Bool /** * Regular expression used for validation of the field */ // @ApiMember(Description="Regular expression used for validation of the field") public var regEx:String /** * Error message shown if the regular expression validation failed */ // @ApiMember(Description="Error message shown if the regular expression validation failed") public var regExErrorMessage:String /** * The values to select from if Datatype is DropDown for this custom field */ // @ApiMember(Description="The values to select from if Datatype is DropDown for this custom field") public var values:[CustomFieldValueResponse] = [] required public init(){} } public enum CodeLockSystemType : String, Codable { case Sample case RcoM5 case AxemaVaka case VanderbiltOmnis case ParakeyParakey case AmidoDax case TelkeyTelkey case TechSolutionsSiedle case Accessy case Zesec case Enabla } public class CompanyBookingSettings : Codable { public var enableMobileApp:Bool public var bookingReceiptMessage:String public var showFreeTimesLeft:Bool public var enableShowBookedTimes:Bool public var bookingAgreement:String /** * The settings for how to display week number. 1 = ShowWeekNumberFromDate, 2 = ShowWeekNumberToDate, 3 = ShowWeekNumberFromToDate, 4 = DontShowWeekNumber */ // @ApiMember(DataType="int", Description="The settings for how to display week number. 1 = ShowWeekNumberFromDate, 2 = ShowWeekNumberToDate, 3 = ShowWeekNumberFromToDate, 4 = DontShowWeekNumber ") public var weekNumberSetting:Int public var showBookedTimes:Bool /** * The payment provider id. 1 = Payson Checkout 1.0, 2= Payson Checkout 2.0 ... To get the full payment provider for the company call GET /payment/settings */ // @ApiMember(Description="The payment provider id. 1 = Payson Checkout 1.0, 2= Payson Checkout 2.0 ... To get the full payment provider for the company call GET /payment/settings") public var paymentProviderId:Int /** * If it's only allowed for existing customers to book */ // @ApiMember(DataType="boolean", Description="If it's only allowed for existing customers to book") public var bookOnlyOnExistingCustomers:Bool /** * If payment is enabled */ // @ApiMember(DataType="boolean", Description="If payment is enabled") public var paymentEnabled:Bool required public init(){} } public class CompanySystemSettings : Codable { /** * If the booking is active or not */ // @ApiMember(DataType="bool", Description="If the booking is active or not") public var active:Bool /** * 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 var inactiveMessage:String /** * 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 var searchable:Bool /** * 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 var gaTrackingId:String /** * 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 var googleAdsConversionId:String /** * 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 var linkedinTagId:String /** * 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 var googleAdsConversionLabel:String /** * 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 var gtmTrackingId:String /** * 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 var facebookPixelId:String /** * 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 var multiLanguage:Bool /** * If the company should be visible on the marketplace */ // @ApiMember(DataType="bool", Description="If the company should be visible on the marketplace") public var showOnMarketplace:Bool /** * 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 var enableAPITranslation:Bool /** * 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 var defaultLanguage:String required public init(){} } public class CompanyWidgetSettings : Codable { /** * The service layouts id. */ // @ApiMember(Description="The service layouts id.") public var serviceLayoutId:Int /** * The time layouts id. */ // @ApiMember(Description="The time layouts id.") public var timeLayoutId:Int /** * The booking layouts id. */ // @ApiMember(Description="The booking layouts id.") public var bookingLayoutId:Int /** * The primary color of the booking widget. */ // @ApiMember(Description="The primary color of the booking widget.") public var primaryColor:String /** * If you should show the service image in the booking widget. */ // @ApiMember(Description="If you should show the service image in the booking widget.") public var showServiceImage:Bool /** * If you should show the rebate code field in the booking widget. */ // @ApiMember(Description="If you should show the rebate code field in the booking widget.") public var showRebateCodeField:Bool /** * If you should show the next available time in the booking widget. */ // @ApiMember(Description="If you should show the next available time in the booking widget.") public var showNextAvailableTime:Bool /** * If you should show the end time in the booking widget. */ // @ApiMember(Description="If you should show the end time in the booking widget.") public var showEndTime:Bool /** * What text to show on booked time slots. Default text is Booked */ // @ApiMember(Description="What text to show on booked time slots. Default text is Booked") public var bookedTimeSlotText:String /** * If the widget should be displayed in dark theme */ // @ApiMember(Description="If the widget should be displayed in dark theme") public var darkTheme:Bool required public init(){} } public class HomepageSettingsResponse : Codable { /** * The text for homepage heading */ // @ApiMember(Description="The text for homepage heading") public var homepageHeading:String /** * The text for homepage startpage heading */ // @ApiMember(Description="The text for homepage startpage heading") public var welcomePageHeading:String /** * The text for homepage startpage body */ // @ApiMember(Description="The text for homepage startpage body") public var welcomePageBody:String /** * The text for homepage about us page heading */ // @ApiMember(Description="The text for homepage about us page heading") public var aboutUsPageHeading:String /** * The text for homepage about us page body */ // @ApiMember(Description="The text for homepage about us page body") public var aboutUsPageBody:String /** * The startpage image url */ // @ApiMember(Description="The startpage image url") public var imageUrl:Uri /** * The cover image url */ // @ApiMember(Description="The cover image url") public var coverImage:Uri /** * Show rating on the page */ // @ApiMember(Description="Show rating on the page") public var showRating:Bool /** * The template for the homepage */ // @ApiMember(Description="The template for the homepage") public var homePageTemplateId:Int /** * The hero section style for the homepage */ // @ApiMember(Description="The hero section style for the homepage") public var heroSectionStyleId:Int /** * Enable the BokaMera Homepage */ // @ApiMember(Description="Enable the BokaMera Homepage") public var enableHomepage:Bool required public init(){} } public class CompanyRatingSummary : Codable { /** * The average rating score */ // @ApiMember(Description="The average rating score") public var averageScore:Double /** * The number of ratings of score 1 */ // @ApiMember(Description="The number of ratings of score 1") public var ratingScore1Count:Int /** * The number of ratings of score 2 */ // @ApiMember(Description="The number of ratings of score 2") public var ratingScore2Count:Int /** * The number of ratings of score 3 */ // @ApiMember(Description="The number of ratings of score 3") public var ratingScore3Count:Int /** * The number of ratings of score 4 */ // @ApiMember(Description="The number of ratings of score 4") public var raingScore4Count:Int /** * The number of ratings of score 5 */ // @ApiMember(Description="The number of ratings of score 5") public var ratingScore5Count:Int /** * The number of ratings */ // @ApiMember(Description="The number of ratings") public var count:Int required public init(){} } public class CustomFieldValueResponse : Codable { public var value:String required public init(){} }