BokaMera.API.Host

<back to all web services

CompanyQuery

The following routes are available for this service:
GET/companies
"use strict";
export class QueryBase {
    /** @param {{Skip?:number,Take?:number,OrderBy?:string,OrderByDesc?:string,Include?:string,Fields?:string,Meta?:{ [index: string]: string; }}} [init] */
    constructor(init) { Object.assign(this, init) }
    /**
     * @type {?number}
     * @description Skip over a given number of elements in a sequence and then return the remainder. Use this when you need paging.<br/><br/><strong>Example:</strong><br/><code>?skip=10&orderBy=Id</code> */
    Skip;
    /**
     * @type {?number}
     * @description Return a given number of elements in a sequence and then skip over the remainder. Use this when you need paging.<br/><br/><strong>Example:</strong><br/><code>?take=20</code> */
    Take;
    /**
     * @type {string}
     * @description Comma separated list of fields to order by. Prefix the field name with a minus if you wan't to invert the sort for that field.<br/><br/><strong>Example:</strong><br/><code>?orderBy=Id,-Age,FirstName</code> */
    OrderBy;
    /**
     * @type {string}
     * @description Comma separated list of fields to order by in descending order. Prefix the field name with a minus if you wan't to invert the sort for that field.<br/><br/><strong>Example:</strong><br/><code>?orderByDesc=Id,-Age,FirstName</code> */
    OrderByDesc;
    /**
     * @type {string}
     * @description Include any of the aggregates <code>AVG, COUNT, FIRST, LAST, MAX, MIN, SUM</code> in your result set. The results will be returned in the meta field.<br/><br/><strong>Example:</strong><br/><code>?include=COUNT(*) as Total</code><br/><br/>or multiple fields with<br/><code>?include=Count(*) Total, Min(Age), AVG(Age) AverageAge</code><br/></br>or unique with<br/><code>?include=COUNT(DISTINCT LivingStatus) as UniqueStatus</code> */
    Include;
    /** @type {string} */
    Fields;
    /** @type {{ [index: string]: string; }} */
    Meta;
}
/** @typedef From {any} */
/** @typedef  Into {any} */
export class QueryDb extends QueryBase {
    /** @param {{Skip?:number,Take?:number,OrderBy?:string,OrderByDesc?:string,Include?:string,Fields?:string,Meta?:{ [index: string]: string; }}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
}
/** @typedef {'Sample'|'RcoM5'|'AxemaVaka'|'VanderbiltOmnis'|'ParakeyParakey'|'AmidoDax'|'TelkeyTelkey'|'TechSolutionsSiedle'|'Accessy'|'Zesec'|'Enabla'} */
export var CodeLockSystemType;
(function (CodeLockSystemType) {
    CodeLockSystemType["Sample"] = "Sample"
    CodeLockSystemType["RcoM5"] = "RcoM5"
    CodeLockSystemType["AxemaVaka"] = "AxemaVaka"
    CodeLockSystemType["VanderbiltOmnis"] = "VanderbiltOmnis"
    CodeLockSystemType["ParakeyParakey"] = "ParakeyParakey"
    CodeLockSystemType["AmidoDax"] = "AmidoDax"
    CodeLockSystemType["TelkeyTelkey"] = "TelkeyTelkey"
    CodeLockSystemType["TechSolutionsSiedle"] = "TechSolutionsSiedle"
    CodeLockSystemType["Accessy"] = "Accessy"
    CodeLockSystemType["Zesec"] = "Zesec"
    CodeLockSystemType["Enabla"] = "Enabla"
})(CodeLockSystemType || (CodeLockSystemType = {}));
export class CompanyBookingSettings {
    /** @param {{EnableMobileApp?:boolean,BookingReceiptMessage?:string,ShowFreeTimesLeft?:boolean,EnableShowBookedTimes?:boolean,BookingAgreement?:string,WeekNumberSetting?:number,ShowBookedTimes?:boolean,PaymentProviderId?:number,BookOnlyOnExistingCustomers?:boolean,PaymentEnabled?:boolean}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {boolean} */
    EnableMobileApp;
    /** @type {string} */
    BookingReceiptMessage;
    /** @type {boolean} */
    ShowFreeTimesLeft;
    /** @type {boolean} */
    EnableShowBookedTimes;
    /** @type {string} */
    BookingAgreement;
    /**
     * @type {number}
     * @description The settings for how to display week number. 1 = ShowWeekNumberFromDate, 2 = ShowWeekNumberToDate, 3 = ShowWeekNumberFromToDate, 4 = DontShowWeekNumber   */
    WeekNumberSetting;
    /** @type {boolean} */
    ShowBookedTimes;
    /**
     * @type {number}
     * @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 */
    PaymentProviderId;
    /**
     * @type {boolean}
     * @description If it's only allowed for existing customers to book */
    BookOnlyOnExistingCustomers;
    /**
     * @type {boolean}
     * @description If payment is enabled */
    PaymentEnabled;
}
export class CompanySystemSettings {
    /** @param {{Active?:boolean,InactiveMessage?:string,Searchable?:boolean,GATrackingId?:string,GoogleAdsConversionId?:string,LinkedinTagId?:string,GoogleAdsConversionLabel?:string,GTMTrackingId?:string,FacebookPixelId?:string,MultiLanguage?:boolean,ShowOnMarketplace?:boolean,EnableAPITranslation?:boolean,DefaultLanguage?:string,SendCustomerInformationToExternalProviders?:boolean}} [init] */
    constructor(init) { Object.assign(this, init) }
    /**
     * @type {boolean}
     * @description If the booking is active or not */
    Active;
    /**
     * @type {string}
     * @description If the booking is not active, what message to show to the customers */
    InactiveMessage;
    /**
     * @type {boolean}
     * @description If the company should be visible in search results on hompage */
    Searchable;
    /**
     * @type {string}
     * @description If you have a google analytics account and want to track your customers behaviors. */
    GATrackingId;
    /**
     * @type {string}
     * @description If you have a google Ads Conversion Id account and want to track your customers behaviors. */
    GoogleAdsConversionId;
    /**
     * @type {string}
     * @description If you have a LinkedIn account and want to track your customers behaviors. */
    LinkedinTagId;
    /**
     * @type {string}
     * @description If you have a Google Ads Conversion Label and want to track your customers behaviors. */
    GoogleAdsConversionLabel;
    /**
     * @type {string}
     * @description If you have a google tag manager account and want to track your customers behaviors. */
    GTMTrackingId;
    /**
     * @type {string}
     * @description If you have a facebook account and want to track your customers behaviors. */
    FacebookPixelId;
    /**
     * @type {boolean}
     * @description If you want your customers to be albe to change language on your homepage */
    MultiLanguage;
    /**
     * @type {boolean}
     * @description If the company should be visible on the marketplace */
    ShowOnMarketplace;
    /**
     * @type {boolean}
     * @description If you want your own written text on your homepage to be translated using google analytics when a user changes language */
    EnableAPITranslation;
    /**
     * @type {string}
     * @description What is the standard language your homepage information is written in. Select from the different countries, ie. SE,NO,EN */
    DefaultLanguage;
    /**
     * @type {boolean}
     * @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.  */
    SendCustomerInformationToExternalProviders;
}
export class CompanyWidgetSettings {
    /** @param {{ServiceLayoutId?:number,TimeLayoutId?:number,BookingLayoutId?:number,PrimaryColor?:string,ShowServiceImage?:boolean,ShowRebateCodeField?:boolean,ShowNextAvailableTime?:boolean,ShowEndTime?:boolean,BookedTimeSlotText?:string,DarkTheme?:boolean,ShowSubscribeToNewsletter?:boolean}} [init] */
    constructor(init) { Object.assign(this, init) }
    /**
     * @type {number}
     * @description The service layouts id. */
    ServiceLayoutId;
    /**
     * @type {number}
     * @description The time layouts id. */
    TimeLayoutId;
    /**
     * @type {number}
     * @description The booking layouts id. */
    BookingLayoutId;
    /**
     * @type {string}
     * @description The primary color of the booking widget. */
    PrimaryColor;
    /**
     * @type {boolean}
     * @description If you should show the service image in the booking widget. */
    ShowServiceImage;
    /**
     * @type {boolean}
     * @description If you should show the rebate code field in the booking widget. */
    ShowRebateCodeField;
    /**
     * @type {boolean}
     * @description If you should show the next available time in the booking widget. */
    ShowNextAvailableTime;
    /**
     * @type {boolean}
     * @description If you should show the end time in the booking widget. */
    ShowEndTime;
    /**
     * @type {string}
     * @description What text to show on booked time slots. Default text is Booked */
    BookedTimeSlotText;
    /**
     * @type {boolean}
     * @description If the widget should be displayed in dark theme */
    DarkTheme;
    /**
     * @type {boolean}
     * @description If you should show the subscribe to newsletter checkbox in the booking widget. */
    ShowSubscribeToNewsletter;
}
export class HomepageSettingsResponse {
    /** @param {{HomepageHeading?:string,WelcomePageHeading?:string,WelcomePageBody?:string,AboutUsPageHeading?:string,AboutUsPageBody?:string,ImageUrl?:string,CoverImage?:string,ShowRating?:boolean,HomePageTemplateId?:number,HeroSectionStyleId?:number,EnableHomepage?:boolean}} [init] */
    constructor(init) { Object.assign(this, init) }
    /**
     * @type {string}
     * @description The text for homepage heading */
    HomepageHeading;
    /**
     * @type {string}
     * @description The text for homepage startpage heading */
    WelcomePageHeading;
    /**
     * @type {string}
     * @description The text for homepage startpage body */
    WelcomePageBody;
    /**
     * @type {string}
     * @description The text for homepage about us page heading */
    AboutUsPageHeading;
    /**
     * @type {string}
     * @description The text for homepage about us page body */
    AboutUsPageBody;
    /**
     * @type {string}
     * @description The startpage image url */
    ImageUrl;
    /**
     * @type {string}
     * @description The cover image url */
    CoverImage;
    /**
     * @type {boolean}
     * @description Show rating on the page */
    ShowRating;
    /**
     * @type {number}
     * @description The template for the homepage */
    HomePageTemplateId;
    /**
     * @type {number}
     * @description The hero section style for the homepage */
    HeroSectionStyleId;
    /**
     * @type {boolean}
     * @description Enable the BokaMera Homepage */
    EnableHomepage;
}
export class CompanyRatingSummary {
    /** @param {{AverageScore?:number,RatingScore1Count?:number,RatingScore2Count?:number,RatingScore3Count?:number,RaingScore4Count?:number,RatingScore5Count?:number,Count?:number}} [init] */
    constructor(init) { Object.assign(this, init) }
    /**
     * @type {number}
     * @description The average rating score */
    AverageScore;
    /**
     * @type {number}
     * @description The number of ratings of score 1 */
    RatingScore1Count;
    /**
     * @type {number}
     * @description The number of ratings of score 2 */
    RatingScore2Count;
    /**
     * @type {number}
     * @description The number of ratings of score 3 */
    RatingScore3Count;
    /**
     * @type {number}
     * @description The number of ratings of score 4 */
    RaingScore4Count;
    /**
     * @type {number}
     * @description The number of ratings of score 5 */
    RatingScore5Count;
    /**
     * @type {number}
     * @description The number of ratings */
    Count;
}
export class RatingReviewResponse {
    /** @param {{Title?:string,Description?:string,RatingScore?:number,Author?:string,Created?:string,ReviewAnswer?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /**
     * @type {string}
     * @description The title for the review */
    Title;
    /**
     * @type {string}
     * @description The description for the review */
    Description;
    /**
     * @type {number}
     * @description The rating score */
    RatingScore;
    /**
     * @type {string}
     * @description The review author */
    Author;
    /**
     * @type {string}
     * @description The created date */
    Created;
    /**
     * @type {string}
     * @description The review answer from the company */
    ReviewAnswer;
}
export class CustomFieldValueResponse {
    /** @param {{Value?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    Value;
}
export class CustomFieldConfigData {
    /** @param {{Id?:number,Name?:string,Description?:string,Width?:number,DataType?:string,DefaultValue?:string,IsMandatory?:boolean,MandatoryErrorMessage?:string,MaxLength?:number,MultipleLineText?:boolean,RegEx?:string,RegExErrorMessage?:string,Values?:CustomFieldValueResponse[]}} [init] */
    constructor(init) { Object.assign(this, init) }
    /**
     * @type {number}
     * @description Custom field id */
    Id;
    /**
     * @type {string}
     * @description Configuration name. Example: 'Number of persons'. */
    Name;
    /**
     * @type {string}
     * @description Custom field description. Example: 'For how many persons is this booking?' */
    Description;
    /**
     * @type {?number}
     * @description Field width. Example: 20 for 20px */
    Width;
    /**
     * @type {string}
     * @description Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox' */
    DataType;
    /**
     * @type {string}
     * @description Default value of the field. Example: '3' */
    DefaultValue;
    /**
     * @type {boolean}
     * @description Determines if the field is required to have a value or not */
    IsMandatory;
    /**
     * @type {string}
     * @description Error message shown to the user if the field data is required but not entered */
    MandatoryErrorMessage;
    /**
     * @type {number}
     * @description Max lenght of the field */
    MaxLength;
    /**
     * @type {boolean}
     * @description If the field should have multiple lines */
    MultipleLineText;
    /**
     * @type {string}
     * @description Regular expression used for validation of the field */
    RegEx;
    /**
     * @type {string}
     * @description Error message shown if the regular expression validation failed */
    RegExErrorMessage;
    /**
     * @type {CustomFieldValueResponse[]}
     * @description The values to select from if Datatype is DropDown for this custom field */
    Values;
}
export class CompanyQueryResponse {
    /** @param {{Id?:string,Name?:string,OrganisationNumber?:string,TypeId?:number,Details?:string,CategoryId?:number,Category?:string,LogoType?:string,CoverImage?:string,Street1?:string,Street2?:string,ZipCode?:string,City?:string,CountryId?:string,Longitude?:string,Latitude?:string,Distance?:number,Phone?:string,Email?:string,Homepage?:string,SitePath?:string,Active?:boolean,CodeLockSystem?:CodeLockSystemType,IsFreeAccount?:boolean,Updated?:string,Created?:string,StatusId?:number,IsFavorite?:boolean,BookingAgreements?:string,BookingSettings?:CompanyBookingSettings,SystemSettings?:CompanySystemSettings,WidgetSettings?:CompanyWidgetSettings,HomepageSettings?:HomepageSettingsResponse,RatingSummary?:CompanyRatingSummary,Reviews?:RatingReviewResponse[],CustomerCustomFields?:CustomFieldConfigData[],ResponseStatus?:ResponseStatus}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    Id;
    /** @type {string} */
    Name;
    /**
     * @type {string}
     * @description The organisation number will only be visible if your owner to the company */
    OrganisationNumber;
    /**
     * @type {?number}
     * @description What type of company. If it's used for personal use or as a company. */
    TypeId;
    /** @type {string} */
    Details;
    /** @type {number} */
    CategoryId;
    /** @type {string} */
    Category;
    /** @type {string} */
    LogoType;
    /** @type {string} */
    CoverImage;
    /** @type {string} */
    Street1;
    /** @type {string} */
    Street2;
    /** @type {string} */
    ZipCode;
    /** @type {string} */
    City;
    /** @type {string} */
    CountryId;
    /** @type {string} */
    Longitude;
    /** @type {string} */
    Latitude;
    /** @type {?number} */
    Distance;
    /** @type {string} */
    Phone;
    /** @type {string} */
    Email;
    /** @type {string} */
    Homepage;
    /** @type {string} */
    SitePath;
    /** @type {boolean} */
    Active;
    /** @type {?CodeLockSystemType} */
    CodeLockSystem;
    /** @type {boolean} */
    IsFreeAccount;
    /**
     * @type {?string}
     * @description Will show when the company was updated, note it will only be shown if your logged in as admin for the company. */
    Updated;
    /**
     * @type {?string}
     * @description Will show when the company was created, note it will only be shown if your logged in as admin for the company. */
    Created;
    /** @type {number} */
    StatusId;
    /**
     * @type {boolean}
     * @description If the company is marked as favourite for the logged in user */
    IsFavorite;
    /** @type {string} */
    BookingAgreements;
    /** @type {CompanyBookingSettings} */
    BookingSettings;
    /** @type {CompanySystemSettings} */
    SystemSettings;
    /** @type {CompanyWidgetSettings} */
    WidgetSettings;
    /** @type {HomepageSettingsResponse} */
    HomepageSettings;
    /** @type {CompanyRatingSummary} */
    RatingSummary;
    /** @type {RatingReviewResponse[]} */
    Reviews;
    /** @type {CustomFieldConfigData[]} */
    CustomerCustomFields;
    /** @type {ResponseStatus} */
    ResponseStatus;
}
export class BaseModel {
    constructor(init) { Object.assign(this, init) }
}
/** @typedef {number} */
export var CompanyStatus;
(function (CompanyStatus) {
    CompanyStatus[CompanyStatus["Registered"] = 1] = "Registered"
    CompanyStatus[CompanyStatus["AwaitingApproval"] = 2] = "AwaitingApproval"
    CompanyStatus[CompanyStatus["Approved"] = 3] = "Approved"
    CompanyStatus[CompanyStatus["Inactive"] = 4] = "Inactive"
    CompanyStatus[CompanyStatus["ClosedDown"] = 5] = "ClosedDown"
    CompanyStatus[CompanyStatus["NotApproved"] = 6] = "NotApproved"
})(CompanyStatus || (CompanyStatus = {}));
export class CustomFieldValue extends BaseModel {
    /** @param {{CompanyId?:string,Id?:number,Value?:string,Active?:boolean,SortOrder?:number,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    Id;
    /** @type {string} */
    Value;
    /** @type {boolean} */
    Active;
    /** @type {?number} */
    SortOrder;
    /** @type {?string} */
    ModifiedDate;
}
export class CustomField extends BaseModel {
    /** @param {{Table?:string,Column?:string,DataType?:string,Description?:string,Active?:boolean,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Table;
    /** @type {string} */
    Column;
    /** @type {string} */
    DataType;
    /** @type {string} */
    Description;
    /** @type {boolean} */
    Active;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class RegEx extends BaseModel {
    /** @param {{Name?:string,Description?:string,RegExCode?:string,ErrorMessage?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {string} */
    RegExCode;
    /** @type {string} */
    ErrorMessage;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
/** @typedef {'NotDefined'|'RecurringSchedule'|'DateSchedule'} */
export var ScheduleType;
(function (ScheduleType) {
    ScheduleType["NotDefined"] = "NotDefined"
    ScheduleType["RecurringSchedule"] = "RecurringSchedule"
    ScheduleType["DateSchedule"] = "DateSchedule"
})(ScheduleType || (ScheduleType = {}));
/** @typedef {number} */
export var BookingStatusEnum;
(function (BookingStatusEnum) {
    BookingStatusEnum[BookingStatusEnum["Booked"] = 1] = "Booked"
    BookingStatusEnum[BookingStatusEnum["Unbooked"] = 2] = "Unbooked"
    BookingStatusEnum[BookingStatusEnum["Reserved"] = 3] = "Reserved"
    BookingStatusEnum[BookingStatusEnum["Canceled"] = 4] = "Canceled"
    BookingStatusEnum[BookingStatusEnum["AwaitingPayment"] = 5] = "AwaitingPayment"
    BookingStatusEnum[BookingStatusEnum["AwaitingPaymentNoTimeLimit"] = 6] = "AwaitingPaymentNoTimeLimit"
    BookingStatusEnum[BookingStatusEnum["Payed"] = 7] = "Payed"
    BookingStatusEnum[BookingStatusEnum["AwaitingPaymentRequestFromAdmin"] = 8] = "AwaitingPaymentRequestFromAdmin"
    BookingStatusEnum[BookingStatusEnum["AwaitingPaymentFromProvider"] = 9] = "AwaitingPaymentFromProvider"
    BookingStatusEnum[BookingStatusEnum["Invoiced"] = 10] = "Invoiced"
})(BookingStatusEnum || (BookingStatusEnum = {}));
export class BookedCustomer {
    /** @param {{Id?:string,Firstname?:string,Lastname?:string,Email?:string,Phone?:string,FacebookUserName?:string,ImageUrl?:string,CorporateIdentityNumber?:string,InvoiceAddress1?:string,InvoiceAddress2?:string,InvoiceCity?:string,InvoicePostalCode?:string,InvoiceCountryCode?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    Id;
    /** @type {string} */
    Firstname;
    /** @type {string} */
    Lastname;
    /** @type {string} */
    Email;
    /** @type {string} */
    Phone;
    /** @type {string} */
    FacebookUserName;
    /** @type {string} */
    ImageUrl;
    /** @type {string} */
    CorporateIdentityNumber;
    /** @type {string} */
    InvoiceAddress1;
    /** @type {string} */
    InvoiceAddress2;
    /** @type {string} */
    InvoiceCity;
    /** @type {string} */
    InvoicePostalCode;
    /** @type {string} */
    InvoiceCountryCode;
}
export class CustomFieldDataResponse {
    /** @param {{Id?:number,Column?:string,Name?:string,Description?:string,Value?:string,DataType?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    Id;
    /** @type {string} */
    Column;
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {string} */
    Value;
    /**
     * @type {string}
     * @description Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox' */
    DataType;
}
export class Resource extends BaseModel {
    /** @param {{Priority?:number,Schedules?:IList<ISchedule>,Exceptions?:IList<ITimeException>,Bookings?:IList<IBookedTime>,CustomFieldsConfig?:IList<CustomFieldConfig>,CustomFieldsData?:IList<CustomFieldDataResponse>,CompanyId?:string,Id?:number,Name?:string,Active?:boolean,Description?:string,ImageUrl?:string,UpdatedDate?:string,CreatedDate?:string,Color?:string,Email?:string,MobilePhone?:string,EmailNotification?:boolean,SMSNotification?:boolean,SendSMSReminder?:boolean,SendEmailReminder?:boolean,ModifiedDate?:string,AccessGroup?:string,TextField1?:string,TextField2?:string,TextField3?:string,TextField4?:string,TextField5?:string,TextField6?:string,TextField7?:string,TextField8?:string,TextField9?:string,TextField10?:string,TextField11?:string,TextField12?:string,TextField13?:string,TextField14?:string,TextField15?:string,TextField16?:string,TextField17?:string,TextField18?:string,TextField19?:string,TextField20?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {number} */
    Priority;
    /** @type {IList<ISchedule>} */
    Schedules;
    /** @type {IList<ITimeException>} */
    Exceptions;
    /** @type {IList<IBookedTime>} */
    Bookings;
    /** @type {IList<CustomFieldConfig>} */
    CustomFieldsConfig;
    /** @type {IList<CustomFieldDataResponse>} */
    CustomFieldsData;
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    Id;
    /** @type {string} */
    Name;
    /** @type {boolean} */
    Active;
    /** @type {string} */
    Description;
    /** @type {string} */
    ImageUrl;
    /** @type {string} */
    UpdatedDate;
    /** @type {string} */
    CreatedDate;
    /** @type {string} */
    Color;
    /** @type {string} */
    Email;
    /** @type {string} */
    MobilePhone;
    /** @type {?boolean} */
    EmailNotification;
    /** @type {?boolean} */
    SMSNotification;
    /** @type {boolean} */
    SendSMSReminder;
    /** @type {boolean} */
    SendEmailReminder;
    /** @type {?string} */
    ModifiedDate;
    /** @type {string} */
    AccessGroup;
    /** @type {string} */
    TextField1;
    /** @type {string} */
    TextField2;
    /** @type {string} */
    TextField3;
    /** @type {string} */
    TextField4;
    /** @type {string} */
    TextField5;
    /** @type {string} */
    TextField6;
    /** @type {string} */
    TextField7;
    /** @type {string} */
    TextField8;
    /** @type {string} */
    TextField9;
    /** @type {string} */
    TextField10;
    /** @type {string} */
    TextField11;
    /** @type {string} */
    TextField12;
    /** @type {string} */
    TextField13;
    /** @type {string} */
    TextField14;
    /** @type {string} */
    TextField15;
    /** @type {string} */
    TextField16;
    /** @type {string} */
    TextField17;
    /** @type {string} */
    TextField18;
    /** @type {string} */
    TextField19;
    /** @type {string} */
    TextField20;
}
export class ResourceType extends BaseModel {
    /** @param {{SelectableByUser?:boolean,Resources?:Resource[],CompanyId?:string,Id?:number,Name?:string,Description?:string,Active?:boolean,UpdatedDate?:string,CreatedDate?:string,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {boolean} */
    SelectableByUser;
    /** @type {Resource[]} */
    Resources;
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    Id;
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {boolean} */
    Active;
    /** @type {string} */
    UpdatedDate;
    /** @type {string} */
    CreatedDate;
    /** @type {?string} */
    ModifiedDate;
}
export class RebateCodeType extends BaseModel {
    /** @param {{Name?:string,Description?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class AppliedRebateCodes {
    /** @param {{RebateCodeId?:number,RebateCodeSign?:string,RebateCodeValue?:number,RebateAmount?:number,RebateCodeType?:RebateCodeType}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    RebateCodeId;
    /** @type {string} */
    RebateCodeSign;
    /** @type {number} */
    RebateCodeValue;
    /** @type {number} */
    RebateAmount;
    /** @type {RebateCodeType} */
    RebateCodeType;
}
export class TotalPriceInformation {
    /** @param {{TotalPrice?:number,TotalVATAmount?:number,TotalRebate?:number,TotalPriceBeforeRebate?:number,AppliedCodes?:AppliedRebateCodes[],PriceSign?:string,CurrencyId?:string,VAT?:number}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    TotalPrice;
    /** @type {number} */
    TotalVATAmount;
    /** @type {number} */
    TotalRebate;
    /** @type {number} */
    TotalPriceBeforeRebate;
    /** @type {AppliedRebateCodes[]} */
    AppliedCodes;
    /** @type {string} */
    PriceSign;
    /** @type {string} */
    CurrencyId;
    /** @type {number} */
    VAT;
}
/** @typedef {number} */
export var Currency;
(function (Currency) {
    Currency[Currency["SEK"] = 1] = "SEK"
    Currency[Currency["EUR"] = 2] = "EUR"
})(Currency || (Currency = {}));
export class PriceMapping extends BaseModel {
    /** @param {{CompanyId?:string,Id?:string,PriceId?:number,ReferenceType?:string,ExternalReference?:string,UpdatedDate?:string,CreatedDate?:string,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    CompanyId;
    /** @type {string} */
    Id;
    /** @type {number} */
    PriceId;
    /** @type {string} */
    ReferenceType;
    /** @type {string} */
    ExternalReference;
    /** @type {string} */
    UpdatedDate;
    /** @type {string} */
    CreatedDate;
    /** @type {?string} */
    ModifiedDate;
}
/** @typedef {number} */
export var BokaMeraDayOfWeek;
(function (BokaMeraDayOfWeek) {
    BokaMeraDayOfWeek[BokaMeraDayOfWeek["Monday"] = 1] = "Monday"
    BokaMeraDayOfWeek[BokaMeraDayOfWeek["Tuesday"] = 2] = "Tuesday"
    BokaMeraDayOfWeek[BokaMeraDayOfWeek["Wednesday"] = 3] = "Wednesday"
    BokaMeraDayOfWeek[BokaMeraDayOfWeek["Thursday"] = 4] = "Thursday"
    BokaMeraDayOfWeek[BokaMeraDayOfWeek["Friday"] = 5] = "Friday"
    BokaMeraDayOfWeek[BokaMeraDayOfWeek["Saturday"] = 6] = "Saturday"
    BokaMeraDayOfWeek[BokaMeraDayOfWeek["Sunday"] = 7] = "Sunday"
})(BokaMeraDayOfWeek || (BokaMeraDayOfWeek = {}));
export class ServicePriceDayOfWeekRelation extends BaseModel {
    /** @param {{DayOfWeek?:BokaMeraDayOfWeek,CompanyId?:string,ServicePriceId?:number,DayOfWeekId?:number,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {BokaMeraDayOfWeek} */
    DayOfWeek;
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    ServicePriceId;
    /** @type {number} */
    DayOfWeekId;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class ServerData {
    /** @param {{HTTP_HOST?:string,HTTP_CONNECTION?:string,HTTP_CACHE_CONTROL?:string,HTTP_ACCEPT?:string,HTTP_USER_AGENT?:string,HTTP_ACCEPT_ENCODING?:string,HTTP_ACCEPT_LANGUAGE?:string,PATH?:string,SERVER_SOFTWARE?:string,SERVER_NAME?:string,SERVER_ADDR?:string,SERVER_PORT?:string,REMOTE_ADDR?:string,REMOTE_PORT?:string,GATEWAY_INTERFACE?:string,SERVER_PROTOCOL?:string,REQUEST_METHOD?:string,QUERY_STRING?:string,REQUEST_TIME?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    HTTP_HOST;
    /** @type {string} */
    HTTP_CONNECTION;
    /** @type {string} */
    HTTP_CACHE_CONTROL;
    /** @type {string} */
    HTTP_ACCEPT;
    /** @type {string} */
    HTTP_USER_AGENT;
    /** @type {string} */
    HTTP_ACCEPT_ENCODING;
    /** @type {string} */
    HTTP_ACCEPT_LANGUAGE;
    /** @type {string} */
    PATH;
    /** @type {string} */
    SERVER_SOFTWARE;
    /** @type {string} */
    SERVER_NAME;
    /** @type {string} */
    SERVER_ADDR;
    /** @type {string} */
    SERVER_PORT;
    /** @type {string} */
    REMOTE_ADDR;
    /** @type {string} */
    REMOTE_PORT;
    /** @type {string} */
    GATEWAY_INTERFACE;
    /** @type {string} */
    SERVER_PROTOCOL;
    /** @type {string} */
    REQUEST_METHOD;
    /** @type {string} */
    QUERY_STRING;
    /** @type {string} */
    REQUEST_TIME;
}
export class Credentials {
    /** @param {{hash?:string,id?:string,version?:string,client?:string,serverdata?:ServerData,time?:string,test?:string,language?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    hash;
    /** @type {string} */
    id;
    /** @type {string} */
    version;
    /** @type {string} */
    client;
    /** @type {ServerData} */
    serverdata;
    /** @type {string} */
    time;
    /** @type {string} */
    test;
    /** @type {string} */
    language;
}
export class CheckoutData {
    /** @param {{terms?:string,privacyPolicy?:string,redirectOnSuccess?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    terms;
    /** @type {string} */
    privacyPolicy;
    /** @type {string} */
    redirectOnSuccess;
}
export class CheckoutPaymentData {
    /** @param {{currency?:string,language?:string,country?:string,autoactivate?:string,orderid?:string,returnmethod?:string,accepturl?:string,cancelurl?:string,callbackurl?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    currency;
    /** @type {string} */
    language;
    /** @type {string} */
    country;
    /** @type {string} */
    autoactivate;
    /** @type {string} */
    orderid;
    /** @type {string} */
    returnmethod;
    /** @type {string} */
    accepturl;
    /** @type {string} */
    cancelurl;
    /** @type {string} */
    callbackurl;
}
export class PaymentInfo {
    /** @param {{paymentdate?:string,paymentterms?:string,yourreference?:string,ourreference?:string,projectname?:string,deliverymethod?:string,deliveryterms?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    paymentdate;
    /** @type {string} */
    paymentterms;
    /** @type {string} */
    yourreference;
    /** @type {string} */
    ourreference;
    /** @type {string} */
    projectname;
    /** @type {string} */
    deliverymethod;
    /** @type {string} */
    deliveryterms;
}
export class CartHandling {
    /** @param {{withouttax?:string,taxrate?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    withouttax;
    /** @type {string} */
    taxrate;
}
export class CartTotal {
    /** @param {{rounding?:string,withouttax?:string,tax?:string,withtax?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    rounding;
    /** @type {string} */
    withouttax;
    /** @type {string} */
    tax;
    /** @type {string} */
    withtax;
}
export class Shipping {
    /** @param {{firstname?:string,lastname?:string,company?:string,street?:string,street2?:string,zip?:string,city?:string,country?:string,phone?:string,withouttax?:string,taxrate?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    firstname;
    /** @type {string} */
    lastname;
    /** @type {string} */
    company;
    /** @type {string} */
    street;
    /** @type {string} */
    street2;
    /** @type {string} */
    zip;
    /** @type {string} */
    city;
    /** @type {string} */
    country;
    /** @type {string} */
    phone;
    /** @type {string} */
    withouttax;
    /** @type {string} */
    taxrate;
}
export class Cart {
    /** @param {{Handling?:CartHandling,Total?:CartTotal,Shipping?:Shipping}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {CartHandling} */
    Handling;
    /** @type {CartTotal} */
    Total;
    /** @type {Shipping} */
    Shipping;
}
export class CustomerBilling {
    /** @param {{firstname?:string,lastname?:string,company?:string,street?:string,street2?:string,zip?:string,city?:string,country?:string,phone?:string,email?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    firstname;
    /** @type {string} */
    lastname;
    /** @type {string} */
    company;
    /** @type {string} */
    street;
    /** @type {string} */
    street2;
    /** @type {string} */
    zip;
    /** @type {string} */
    city;
    /** @type {string} */
    country;
    /** @type {string} */
    phone;
    /** @type {string} */
    email;
}
export class QvicklyCustomer {
    /** @param {{nr?:string,pno?:string,Billing?:CustomerBilling}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    nr;
    /** @type {string} */
    pno;
    /** @type {CustomerBilling} */
    Billing;
}
export class InitCheckoutData {
    /** @param {{CheckoutData?:CheckoutData,PaymentData?:CheckoutPaymentData,PaymentInfo?:PaymentInfo,Articles?:QvicklyArticle[],Cart?:Cart,QvicklyCustomer?:QvicklyCustomer}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {CheckoutData} */
    CheckoutData;
    /** @type {CheckoutPaymentData} */
    PaymentData;
    /** @type {PaymentInfo} */
    PaymentInfo;
    /** @type {QvicklyArticle[]} */
    Articles;
    /** @type {Cart} */
    Cart;
    /** @type {QvicklyCustomer} */
    QvicklyCustomer;
}
export class InitCheckoutRequestBody {
    /** @param {{credentials?:Credentials,data?:InitCheckoutData,function?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {Credentials} */
    credentials;
    /** @type {InitCheckoutData} */
    data;
    /** @type {string} */
    function;
}
export class QvicklyCheckoutResponse {
    /** @param {{Number?:number,Status?:string,OrderId?:string,Url?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    Number;
    /** @type {string} */
    Status;
    /** @type {string} */
    OrderId;
    /** @type {string} */
    Url;
}
export class QvikclyPaymentData {
    /** @param {{method?:string,paymentplanid?:string,currency?:string,country?:string,language?:string,autoactivate?:string,orderid?:string,status?:string,paymentid_related?:string,url?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    method;
    /** @type {string} */
    paymentplanid;
    /** @type {string} */
    currency;
    /** @type {string} */
    country;
    /** @type {string} */
    language;
    /** @type {string} */
    autoactivate;
    /** @type {string} */
    orderid;
    /** @type {string} */
    status;
    /** @type {string} */
    paymentid_related;
    /** @type {string} */
    url;
}
export class Card {
    /** @param {{promptname?:string,recurring?:string,recurringnr?:string,accepturl?:string,cancelurl?:string,callbackurl?:string,returnmethod?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    promptname;
    /** @type {string} */
    recurring;
    /** @type {string} */
    recurringnr;
    /** @type {string} */
    accepturl;
    /** @type {string} */
    cancelurl;
    /** @type {string} */
    callbackurl;
    /** @type {string} */
    returnmethod;
}
export class Settlement {
    /** @param {{number?:string,date?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    number;
    /** @type {string} */
    date;
}
export class QvicklyPaymentResponse {
    /** @param {{PaymentData?:QvikclyPaymentData,PaymentInfo?:PaymentInfo,Card?:Card,Settlement?:Settlement,QvicklyCustomer?:QvicklyCustomer,Articles?:QvicklyArticle[],Cart?:Cart}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {QvikclyPaymentData} */
    PaymentData;
    /** @type {PaymentInfo} */
    PaymentInfo;
    /** @type {Card} */
    Card;
    /** @type {Settlement} */
    Settlement;
    /** @type {QvicklyCustomer} */
    QvicklyCustomer;
    /** @type {QvicklyArticle[]} */
    Articles;
    /** @type {Cart} */
    Cart;
}
/** @typedef {'None'|'Created'|'FormsFilled'|'ReadyToPay'|'ProcessingPayment'|'ReadyToShip'|'Shipped'|'PaidToAccount'|'Canceled'|'Credited'|'Expired'|'Denied'} */
export var Payson2CheckoutStatus;
(function (Payson2CheckoutStatus) {
    Payson2CheckoutStatus["None"] = "None"
    Payson2CheckoutStatus["Created"] = "Created"
    Payson2CheckoutStatus["FormsFilled"] = "FormsFilled"
    Payson2CheckoutStatus["ReadyToPay"] = "ReadyToPay"
    Payson2CheckoutStatus["ProcessingPayment"] = "ProcessingPayment"
    Payson2CheckoutStatus["ReadyToShip"] = "ReadyToShip"
    Payson2CheckoutStatus["Shipped"] = "Shipped"
    Payson2CheckoutStatus["PaidToAccount"] = "PaidToAccount"
    Payson2CheckoutStatus["Canceled"] = "Canceled"
    Payson2CheckoutStatus["Credited"] = "Credited"
    Payson2CheckoutStatus["Expired"] = "Expired"
    Payson2CheckoutStatus["Denied"] = "Denied"
})(Payson2CheckoutStatus || (Payson2CheckoutStatus = {}));
/** @typedef {'Person'|'Business'} */
export var CustomerType;
(function (CustomerType) {
    CustomerType["Person"] = "Person"
    CustomerType["Business"] = "Business"
})(CustomerType || (CustomerType = {}));
export class UserAccessKeys extends BaseModel {
    /** @param {{CompanyId?:string,AccessKeyTypeId?:number,Value?:string,CustomerId?:string,Description?:string,Id?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    AccessKeyTypeId;
    /** @type {string} */
    Value;
    /** @type {string} */
    CustomerId;
    /** @type {string} */
    Description;
    /** @type {string} */
    Id;
}
export class ExternalReference extends BaseModel {
    /** @param {{CompanyId?:string,Id?:string,OwnerId?:string,ReferenceType?:string,ExternalData?:string,CreatedBy?:string,Updated?:string,Created?:string,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    CompanyId;
    /** @type {string} */
    Id;
    /** @type {string} */
    OwnerId;
    /** @type {string} */
    ReferenceType;
    /** @type {string} */
    ExternalData;
    /** @type {string} */
    CreatedBy;
    /** @type {string} */
    Updated;
    /** @type {string} */
    Created;
    /** @type {?string} */
    ModifiedDate;
}
export class CustomerComment extends BaseModel {
    /** @param {{CompanyId?:string,Id?:number,CustomerId?:string,Comments?:string,Updated?:string,Created?:string,ImageUrl?:string,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    Id;
    /** @type {string} */
    CustomerId;
    /** @type {string} */
    Comments;
    /** @type {string} */
    Updated;
    /** @type {string} */
    Created;
    /** @type {string} */
    ImageUrl;
    /** @type {?string} */
    ModifiedDate;
}
export class Customer extends BaseModel {
    /** @param {{IdentityId?:number,Id?:string,CustomerId?:string,AccessKeys?:IList<UserAccessKeys>,Email?:string,ExternalReferences?:IList<ExternalReference>,Company?:Company,CustomFieldsConfig?:IList<CustomFieldConfig>,CustomFieldsData?:IList<CustomFieldDataResponse>,Comments?:IList<CustomerComment>,RebateCodes?:IList<RebateCode>,Firstname?:string,ImageUrl?:string,Active?:boolean,FacebookUsername?:string,Updated?:string,Created?:string,IpAddress?:string,ModifiedDate?:string,TextField1?:string,TextField2?:string,TextField3?:string,TextField4?:string,TextField5?:string,TextField6?:string,TextField7?:string,TextField8?:string,TextField9?:string,TextField10?:string,TextField11?:string,TextField12?:string,TextField13?:string,TextField14?:string,TextField15?:string,TextField16?:string,TextField17?:string,TextField18?:string,TextField19?:string,TextField20?:string,UserId?:string,Lastname?:string,Phone?:string,CorporateIdentityNumber?:string,InvoiceAddress1?:string,InvoiceAddress2?:string,InvoiceCity?:string,InvoicePostalCode?:string,InvoiceCountryCode?:string,CompanyId?:string,SubscribedToNewsletter?:boolean}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {number} */
    IdentityId;
    /** @type {string} */
    Id;
    /** @type {string} */
    CustomerId;
    /** @type {IList<UserAccessKeys>} */
    AccessKeys;
    /** @type {string} */
    Email;
    /** @type {IList<ExternalReference>} */
    ExternalReferences;
    /** @type {Company} */
    Company;
    /** @type {IList<CustomFieldConfig>} */
    CustomFieldsConfig;
    /** @type {IList<CustomFieldDataResponse>} */
    CustomFieldsData;
    /** @type {IList<CustomerComment>} */
    Comments;
    /** @type {IList<RebateCode>} */
    RebateCodes;
    /** @type {string} */
    Firstname;
    /** @type {string} */
    ImageUrl;
    /** @type {boolean} */
    Active;
    /** @type {string} */
    FacebookUsername;
    /** @type {string} */
    Updated;
    /** @type {string} */
    Created;
    /** @type {string} */
    IpAddress;
    /** @type {?string} */
    ModifiedDate;
    /** @type {string} */
    TextField1;
    /** @type {string} */
    TextField2;
    /** @type {string} */
    TextField3;
    /** @type {string} */
    TextField4;
    /** @type {string} */
    TextField5;
    /** @type {string} */
    TextField6;
    /** @type {string} */
    TextField7;
    /** @type {string} */
    TextField8;
    /** @type {string} */
    TextField9;
    /** @type {string} */
    TextField10;
    /** @type {string} */
    TextField11;
    /** @type {string} */
    TextField12;
    /** @type {string} */
    TextField13;
    /** @type {string} */
    TextField14;
    /** @type {string} */
    TextField15;
    /** @type {string} */
    TextField16;
    /** @type {string} */
    TextField17;
    /** @type {string} */
    TextField18;
    /** @type {string} */
    TextField19;
    /** @type {string} */
    TextField20;
    /** @type {string} */
    UserId;
    /** @type {string} */
    Lastname;
    /** @type {string} */
    Phone;
    /** @type {string} */
    CorporateIdentityNumber;
    /** @type {string} */
    InvoiceAddress1;
    /** @type {string} */
    InvoiceAddress2;
    /** @type {string} */
    InvoiceCity;
    /** @type {string} */
    InvoicePostalCode;
    /** @type {string} */
    InvoiceCountryCode;
    /** @type {string} */
    CompanyId;
    /** @type {boolean} */
    SubscribedToNewsletter;
}
/** @typedef {'Physical'|'Service'|'Fee'|'Discount'} */
export var ItemType;
(function (ItemType) {
    ItemType["Physical"] = "Physical"
    ItemType["Service"] = "Service"
    ItemType["Fee"] = "Fee"
    ItemType["Discount"] = "Discount"
})(ItemType || (ItemType = {}));
export class Item {
    /** @param {{ItemId?:string,DiscountRate?:number,Ean?:string,ImageUri?:string,Name?:string,Quantity?:number,Reference?:string,TaxRate?:number,TotalPriceExcludingTax?:number,TotalPriceIncludingTax?:number,TotalTaxAmount?:number,CreditedAmount?:number,Type?:ItemType,UnitPrice?:number,Uri?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    ItemId;
    /** @type {number} */
    DiscountRate;
    /** @type {string} */
    Ean;
    /** @type {string} */
    ImageUri;
    /** @type {string} */
    Name;
    /** @type {number} */
    Quantity;
    /** @type {string} */
    Reference;
    /** @type {number} */
    TaxRate;
    /** @type {number} */
    TotalPriceExcludingTax;
    /** @type {number} */
    TotalPriceIncludingTax;
    /** @type {number} */
    TotalTaxAmount;
    /** @type {number} */
    CreditedAmount;
    /** @type {ItemType} */
    Type;
    /** @type {number} */
    UnitPrice;
    /** @type {string} */
    Uri;
}
export class Order {
    /** @param {{Currency?:Currency,TotalFeeExcludingTax?:number,TotalFeeIncludingTax?:number,TotalPriceExcludingTax?:number,TotalPriceIncludingTax?:number,TotalTaxAmount?:number,TotalCreditedAmount?:number,Items?:IList<Item>}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {Currency} */
    Currency;
    /** @type {number} */
    TotalFeeExcludingTax;
    /** @type {number} */
    TotalFeeIncludingTax;
    /** @type {number} */
    TotalPriceExcludingTax;
    /** @type {number} */
    TotalPriceIncludingTax;
    /** @type {number} */
    TotalTaxAmount;
    /** @type {number} */
    TotalCreditedAmount;
    /** @type {IList<Item>} */
    Items;
}
export class Merchant {
    /** @param {{CheckoutUri?:string,ConfirmationUri?:string,NotificationUri?:string,ValidationUri?:string,TermsUri?:string,Reference?:string,PartnerId?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    CheckoutUri;
    /** @type {string} */
    ConfirmationUri;
    /** @type {string} */
    NotificationUri;
    /** @type {string} */
    ValidationUri;
    /** @type {string} */
    TermsUri;
    /** @type {string} */
    Reference;
    /** @type {string} */
    PartnerId;
}
/** @typedef {'White'|'Blue'|'Gray'|'GrayTextLogos'|'BlueTextLogos'|'WhiteTextLogos'|'WhiteNoFooter'|'GrayNoFooter'|'BlueNoFooter'} */
export var ColorScheme;
(function (ColorScheme) {
    ColorScheme["White"] = "White"
    ColorScheme["Blue"] = "Blue"
    ColorScheme["Gray"] = "Gray"
    ColorScheme["GrayTextLogos"] = "GrayTextLogos"
    ColorScheme["BlueTextLogos"] = "BlueTextLogos"
    ColorScheme["WhiteTextLogos"] = "WhiteTextLogos"
    ColorScheme["WhiteNoFooter"] = "WhiteNoFooter"
    ColorScheme["GrayNoFooter"] = "GrayNoFooter"
    ColorScheme["BlueNoFooter"] = "BlueNoFooter"
})(ColorScheme || (ColorScheme = {}));
export class Gui {
    /** @param {{ColorScheme?:ColorScheme,Locale?:string,RequestPhone?:boolean,PhoneOptional?:boolean}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {ColorScheme} */
    ColorScheme;
    /** @type {string} */
    Locale;
    /** @type {boolean} */
    RequestPhone;
    /** @type {boolean} */
    PhoneOptional;
}
export class History {
    /** @param {{Created?:string,ReadyToPay?:string,ReadyToShip?:string,Shipped?:string,PaidToAccount?:string,Canceled?:string,Expired?:string,Denied?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {?string} */
    Created;
    /** @type {?string} */
    ReadyToPay;
    /** @type {?string} */
    ReadyToShip;
    /** @type {?string} */
    Shipped;
    /** @type {?string} */
    PaidToAccount;
    /** @type {?string} */
    Canceled;
    /** @type {?string} */
    Expired;
    /** @type {?string} */
    Denied;
}
export class Payson2CheckoutResponse {
    /** @param {{Id?:string,ExpirationTime?:string,Snippet?:string,Status?:Payson2CheckoutStatus,Customer?:Customer,Order?:Order,Merchant?:Merchant,Gui?:Gui,History?:History,PurchaseId?:number}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    Id;
    /** @type {?string} */
    ExpirationTime;
    /** @type {string} */
    Snippet;
    /** @type {Payson2CheckoutStatus} */
    Status;
    /** @type {Customer} */
    Customer;
    /** @type {Order} */
    Order;
    /** @type {Merchant} */
    Merchant;
    /** @type {Gui} */
    Gui;
    /** @type {History} */
    History;
    /** @type {?number} */
    PurchaseId;
}
export class PaymentLog extends BaseModel {
    /** @param {{CurrencyId?:string,CurrencyInfo?:Currency,CompanyId?:string,Id?:number,InternalReferenceId?:string,ArticleTypeId?:number,PaymentReferenceId?:string,PaymentProviderId?:number,OrderItemReferenceId?:string,Amount?:number,VAT?:number,AmountCredited?:number,Comments?:string,Created?:string,Updated?:string,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    CurrencyId;
    /** @type {Currency} */
    CurrencyInfo;
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    Id;
    /** @type {string} */
    InternalReferenceId;
    /** @type {number} */
    ArticleTypeId;
    /** @type {string} */
    PaymentReferenceId;
    /** @type {?number} */
    PaymentProviderId;
    /** @type {string} */
    OrderItemReferenceId;
    /** @type {?number} */
    Amount;
    /** @type {?number} */
    VAT;
    /** @type {?number} */
    AmountCredited;
    /** @type {string} */
    Comments;
    /** @type {string} */
    Created;
    /** @type {string} */
    Updated;
    /** @type {?string} */
    ModifiedDate;
}
export class PayableEntity extends BaseModel {
    /** @param {{DbFactory?:IDbConnectionFactory,QvicklyPaymentManager?:IBokameraPaymentManager<InitCheckoutRequestBody, QvicklyCheckoutResponse, QvicklyPaymentResponse>,Payson2PaymentManager?:IBokameraPaymentManager<Payson2CheckoutResponse, Payson2CheckoutResponse, Payson2CheckoutResponse>,PaysonPaymentCheckout1?:IPaysonPaymentCheckout1,Logger?:ILogger<PayableEntity>,InternalReferenceId?:string,PaymentLog?:PaymentLog[],CompanyId?:string,PriceVat?:number,CurrencyId?:string,Customer?:Customer,Customers?:Customer[],Company?:Company}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {IDbConnectionFactory} */
    DbFactory;
    /** @type {IBokameraPaymentManager<InitCheckoutRequestBody, QvicklyCheckoutResponse, QvicklyPaymentResponse>} */
    QvicklyPaymentManager;
    /** @type {IBokameraPaymentManager<Payson2CheckoutResponse, Payson2CheckoutResponse, Payson2CheckoutResponse>} */
    Payson2PaymentManager;
    /** @type {IPaysonPaymentCheckout1} */
    PaysonPaymentCheckout1;
    /** @type {ILogger<PayableEntity>} */
    Logger;
    /** @type {string} */
    InternalReferenceId;
    /** @type {PaymentLog[]} */
    PaymentLog;
    /** @type {string} */
    CompanyId;
    /** @type {?number} */
    PriceVat;
    /** @type {string} */
    CurrencyId;
    /** @type {Customer} */
    Customer;
    /** @type {Customer[]} */
    Customers;
    /** @type {Company} */
    Company;
}
export class RebateCodeStatus extends BaseModel {
    /** @param {{Name?:string,Description?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class ArticleServiceRelation extends BaseModel {
    /** @param {{CompanyId?:string,Id?:number,ServiceId?:number,ArticleId?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    Id;
    /** @type {number} */
    ServiceId;
    /** @type {number} */
    ArticleId;
}
/** @typedef {number} */
export var ArticleTypeEnum;
(function (ArticleTypeEnum) {
    ArticleTypeEnum[ArticleTypeEnum["ServiceArticle"] = 1] = "ServiceArticle"
    ArticleTypeEnum[ArticleTypeEnum["StandAloneArticle"] = 2] = "StandAloneArticle"
    ArticleTypeEnum[ArticleTypeEnum["RebateCodePunchTicketArticle"] = 3] = "RebateCodePunchTicketArticle"
    ArticleTypeEnum[ArticleTypeEnum["RebateCodeGiftCardArticle"] = 4] = "RebateCodeGiftCardArticle"
    ArticleTypeEnum[ArticleTypeEnum["RebateCodeValueCardArticle"] = 5] = "RebateCodeValueCardArticle"
})(ArticleTypeEnum || (ArticleTypeEnum = {}));
export class Article extends BaseModel {
    /** @param {{Company?:Company,CurrencyInfo?:Currency,ArticleServiceRelations?:ArticleServiceRelation[],ServiceIds?:number[],ArticleType?:ArticleTypeEnum,ArticleTypeName?:string,CompanyId?:string,Id?:number,Name?:string,ArticleTypeId?:number,Description?:string,ImageUrl?:string,Active?:boolean,Amount?:number,Price?:number,CurrencyId?:string,UpdatedDate?:string,CreatedDate?:string,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {Company} */
    Company;
    /** @type {Currency} */
    CurrencyInfo;
    /** @type {ArticleServiceRelation[]} */
    ArticleServiceRelations;
    /** @type {number[]} */
    ServiceIds;
    /** @type {ArticleTypeEnum} */
    ArticleType;
    /** @type {string} */
    ArticleTypeName;
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    Id;
    /** @type {string} */
    Name;
    /** @type {number} */
    ArticleTypeId;
    /** @type {string} */
    Description;
    /** @type {string} */
    ImageUrl;
    /** @type {boolean} */
    Active;
    /** @type {number} */
    Amount;
    /** @type {number} */
    Price;
    /** @type {string} */
    CurrencyId;
    /** @type {string} */
    UpdatedDate;
    /** @type {string} */
    CreatedDate;
    /** @type {?string} */
    ModifiedDate;
}
export class RebateCodeDayOfWeekRelation extends BaseModel {
    /** @param {{DayOfWeek?:BokaMeraDayOfWeek,DayOfWeekId?:number,RebateCodeId?:number,CompanyId?:string,Id?:number,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {BokaMeraDayOfWeek} */
    DayOfWeek;
    /** @type {number} */
    DayOfWeekId;
    /** @type {number} */
    RebateCodeId;
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    Id;
    /** @type {?string} */
    ModifiedDate;
}
export class RebateCodeServiceRelation extends BaseModel {
    /** @param {{CompanyId?:string,ServiceId?:number,RebateCodeId?:number,Id?:number,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    ServiceId;
    /** @type {number} */
    RebateCodeId;
    /** @type {number} */
    Id;
    /** @type {?string} */
    ModifiedDate;
}
export class RebateCodeBookingPriceRelation extends BaseModel {
    /** @param {{CompanyId?:string,PriceId?:number,RebateCodeId?:number,Id?:number,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    PriceId;
    /** @type {number} */
    RebateCodeId;
    /** @type {number} */
    Id;
    /** @type {?string} */
    ModifiedDate;
}
export class RebateCodeCustomerRelation extends BaseModel {
    /** @param {{CompanyId?:string,CustomerId?:string,RebateCodeId?:number,Id?:number,ModifiedDate?:string,RebateCodeEmailSentToCustomer?:boolean,MessageToReceiver?:string,Buyer?:boolean}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    CompanyId;
    /** @type {string} */
    CustomerId;
    /** @type {number} */
    RebateCodeId;
    /** @type {number} */
    Id;
    /** @type {?string} */
    ModifiedDate;
    /** @type {boolean} */
    RebateCodeEmailSentToCustomer;
    /** @type {string} */
    MessageToReceiver;
    /** @type {boolean} */
    Buyer;
}
export class DaysOfWeek extends BaseModel {
    /** @param {{DayOfWeek?:string,DayOfWeekTranslation?:string,DayOfWeekActive?:boolean,DayOfWeekSortOrder?:number,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    DayOfWeek;
    /** @type {string} */
    DayOfWeekTranslation;
    /** @type {?boolean} */
    DayOfWeekActive;
    /** @type {?number} */
    DayOfWeekSortOrder;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class CalendarExport extends BaseModel {
    /** @param {{CompanyId?:string,BookingId?:number,ExceptionId?:number,CalendarSync?:boolean,CalendarId?:string,IsExceptionDeleted?:boolean,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    BookingId;
    /** @type {number} */
    ExceptionId;
    /** @type {?boolean} */
    CalendarSync;
    /** @type {string} */
    CalendarId;
    /** @type {?boolean} */
    IsExceptionDeleted;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class BookingLogEventType extends BaseModel {
    /** @param {{Name?:string,Description?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class BookingLog extends BaseModel {
    /** @param {{EventTypeId?:number,EventType?:BookingLogEventType,CompanyId?:string,BookingId?:number,Id?:number,Comments?:string,UserId?:string,Created?:string,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {number} */
    EventTypeId;
    /** @type {BookingLogEventType} */
    EventType;
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    BookingId;
    /** @type {number} */
    Id;
    /** @type {string} */
    Comments;
    /** @type {string} */
    UserId;
    /** @type {string} */
    Created;
    /** @type {?string} */
    ModifiedDate;
}
export class PaymentDetails extends BaseModel {
    /** @param {{QvicklyCheckoutSerialized?:QvicklyCheckoutResponse,Payson2CheckoutSerialized?:Payson2CheckoutResponse,CompanyId?:string,InternalReferenceId?:string,ArticleTypeId?:number,ExternalResponseData?:string,ExternalResponseReference?:string,PaymentProviderId?:number,CreatedDate?:string,UpdatedDate?:string,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {QvicklyCheckoutResponse} */
    QvicklyCheckoutSerialized;
    /** @type {Payson2CheckoutResponse} */
    Payson2CheckoutSerialized;
    /** @type {string} */
    CompanyId;
    /** @type {string} */
    InternalReferenceId;
    /** @type {number} */
    ArticleTypeId;
    /** @type {string} */
    ExternalResponseData;
    /** @type {string} */
    ExternalResponseReference;
    /** @type {number} */
    PaymentProviderId;
    /** @type {string} */
    CreatedDate;
    /** @type {string} */
    UpdatedDate;
    /** @type {?string} */
    ModifiedDate;
}
export class BookingPrice extends BaseModel {
    /** @param {{CurrencyId?:string,PriceId?:number,CurrencyInfo?:Currency,PriceText?:string,AppliedCodes?:AppliedRebateCodes[],IsRebate?:boolean,CompanyId?:string,BookingId?:number,Quantity?:number,Price?:number,VAT?:number,Category?:string,Updated?:string,Created?:string,Invoiced?:boolean,OccupiesSpot?:boolean,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    CurrencyId;
    /** @type {?number} */
    PriceId;
    /** @type {Currency} */
    CurrencyInfo;
    /** @type {string} */
    PriceText;
    /** @type {AppliedRebateCodes[]} */
    AppliedCodes;
    /** @type {boolean} */
    IsRebate;
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    BookingId;
    /** @type {number} */
    Quantity;
    /** @type {?number} */
    Price;
    /** @type {?number} */
    VAT;
    /** @type {string} */
    Category;
    /** @type {string} */
    Updated;
    /** @type {string} */
    Created;
    /** @type {boolean} */
    Invoiced;
    /** @type {boolean} */
    OccupiesSpot;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class BookingStatus extends BaseModel {
    /** @param {{Name?:string,Description?:string,Color?:string,Icon?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {string} */
    Color;
    /** @type {string} */
    Icon;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class BookedResource {
    /** @param {{Id?:number,Name?:string,Color?:string,ImageUrl?:string,Email?:string,MobilePhone?:string,AccessGroup?:string,EmailNotification?:boolean,SMSNotification?:boolean,EmailReminder?:boolean,SMSReminder?:boolean}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    Id;
    /** @type {string} */
    Name;
    /** @type {string} */
    Color;
    /** @type {string} */
    ImageUrl;
    /** @type {string} */
    Email;
    /** @type {string} */
    MobilePhone;
    /** @type {string} */
    AccessGroup;
    /** @type {boolean} */
    EmailNotification;
    /** @type {boolean} */
    SMSNotification;
    /** @type {boolean} */
    EmailReminder;
    /** @type {boolean} */
    SMSReminder;
}
export class BookedResourceType {
    /** @param {{Id?:number,Name?:string,Resources?:BookedResource[]}} [init] */
    constructor(init) { Object.assign(this, init) }
    /**
     * @type {number}
     * @description The resource type id */
    Id;
    /**
     * @type {string}
     * @description The resource type name */
    Name;
    /**
     * @type {BookedResource[]}
     * @description The resources inside resource type */
    Resources;
}
export class Booking extends PayableEntity {
    /** @param {{Service?:Service,CalendarExport?:CalendarExport,Log?:BookingLog[],CheckoutLogs?:PaymentDetails[],Prices?:BookingPrice[],Status?:BookingStatusEnum,IsReserved?:boolean,StatusName?:string,CurrencyInfo?:Currency,BookingStatus?:BookingStatus,TotalPrice?:number,TotalSpots?:number,Resources?:IList<Resource>,ExternalReferences?:IList<ExternalReference>,BookedResources?:IList<BookedResourceType>,CustomFieldsConfig?:IList<CustomFieldConfig>,CustomFieldsData?:IList<CustomFieldDataResponse>,DeterministicId?:string,Active?:boolean,LastTimeToUnBook?:string,PriceMappings?:PriceMapping[],InternalReferenceId?:string,UpdatedDate?:string,CreatedDate?:string,Id?:number,CustomerId?:string,ServiceId?:number,StatusId?:number,UnbookedOn?:string,UnbookedComments?:string,BookedComments?:string,BookedBy?:string,UnBookedBy?:string,SendSmsReminder?:boolean,SendEmailReminder?:boolean,SendSmsConfirmation?:boolean,RebateCode?:string,Comments?:string,IpAddress?:string,NumberOfBookedSpots?:number,CommentsToCustomer?:string,PaymentExpiration?:string,SendEmailConfirmation?:boolean,CancellationCode?:string,ModifiedDate?:string,RatingCode?:string,TextField1?:string,TextField2?:string,TextField3?:string,TextField4?:string,TextField5?:string,TextField6?:string,TextField7?:string,TextField8?:string,TextField9?:string,TextField10?:string,TextField11?:string,TextField12?:string,TextField13?:string,TextField14?:string,TextField15?:string,TextField16?:string,TextField17?:string,TextField18?:string,TextField19?:string,TextField20?:string,From?:string,To?:string,DbFactory?:IDbConnectionFactory,QvicklyPaymentManager?:IBokameraPaymentManager<InitCheckoutRequestBody, QvicklyCheckoutResponse, QvicklyPaymentResponse>,Payson2PaymentManager?:IBokameraPaymentManager<Payson2CheckoutResponse, Payson2CheckoutResponse, Payson2CheckoutResponse>,PaysonPaymentCheckout1?:IPaysonPaymentCheckout1,Logger?:ILogger<PayableEntity>,InternalReferenceId?:string,PaymentLog?:PaymentLog[],CompanyId?:string,PriceVat?:number,CurrencyId?:string,Customer?:Customer,Customers?:Customer[],Company?:Company}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {Service} */
    Service;
    /** @type {CalendarExport} */
    CalendarExport;
    /** @type {BookingLog[]} */
    Log;
    /** @type {PaymentDetails[]} */
    CheckoutLogs;
    /** @type {BookingPrice[]} */
    Prices;
    /** @type {BookingStatusEnum} */
    Status;
    /** @type {boolean} */
    IsReserved;
    /** @type {string} */
    StatusName;
    /** @type {Currency} */
    CurrencyInfo;
    /** @type {BookingStatus} */
    BookingStatus;
    /** @type {?number} */
    TotalPrice;
    /** @type {?number} */
    TotalSpots;
    /** @type {IList<Resource>} */
    Resources;
    /** @type {IList<ExternalReference>} */
    ExternalReferences;
    /** @type {IList<BookedResourceType>} */
    BookedResources;
    /** @type {IList<CustomFieldConfig>} */
    CustomFieldsConfig;
    /** @type {IList<CustomFieldDataResponse>} */
    CustomFieldsData;
    /** @type {string} */
    DeterministicId;
    /** @type {boolean} */
    Active;
    /** @type {?string} */
    LastTimeToUnBook;
    /** @type {PriceMapping[]} */
    PriceMappings;
    /** @type {string} */
    InternalReferenceId;
    /** @type {string} */
    UpdatedDate;
    /** @type {string} */
    CreatedDate;
    /** @type {number} */
    Id;
    /** @type {string} */
    CustomerId;
    /** @type {number} */
    ServiceId;
    /** @type {number} */
    StatusId;
    /** @type {?string} */
    UnbookedOn;
    /** @type {string} */
    UnbookedComments;
    /** @type {string} */
    BookedComments;
    /** @type {string} */
    BookedBy;
    /** @type {string} */
    UnBookedBy;
    /** @type {boolean} */
    SendSmsReminder;
    /** @type {boolean} */
    SendEmailReminder;
    /** @type {boolean} */
    SendSmsConfirmation;
    /** @type {string} */
    RebateCode;
    /** @type {string} */
    Comments;
    /** @type {string} */
    IpAddress;
    /** @type {number} */
    NumberOfBookedSpots;
    /** @type {string} */
    CommentsToCustomer;
    /** @type {?string} */
    PaymentExpiration;
    /** @type {boolean} */
    SendEmailConfirmation;
    /** @type {string} */
    CancellationCode;
    /** @type {?string} */
    ModifiedDate;
    /** @type {string} */
    RatingCode;
    /** @type {string} */
    TextField1;
    /** @type {string} */
    TextField2;
    /** @type {string} */
    TextField3;
    /** @type {string} */
    TextField4;
    /** @type {string} */
    TextField5;
    /** @type {string} */
    TextField6;
    /** @type {string} */
    TextField7;
    /** @type {string} */
    TextField8;
    /** @type {string} */
    TextField9;
    /** @type {string} */
    TextField10;
    /** @type {string} */
    TextField11;
    /** @type {string} */
    TextField12;
    /** @type {string} */
    TextField13;
    /** @type {string} */
    TextField14;
    /** @type {string} */
    TextField15;
    /** @type {string} */
    TextField16;
    /** @type {string} */
    TextField17;
    /** @type {string} */
    TextField18;
    /** @type {string} */
    TextField19;
    /** @type {string} */
    TextField20;
    /** @type {string} */
    From;
    /** @type {string} */
    To;
}
export class RebateCodeTransaction extends BaseModel {
    /** @param {{Booking?:Booking,RebateCode?:RebateCode,Customer?:Customer,Id?:number,CompanyId?:string,Note?:string,RebateCodeId?:number,Amount?:number,Usage?:number,BookingId?:number,UpdatedDate?:string,CreatedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {Booking} */
    Booking;
    /** @type {RebateCode} */
    RebateCode;
    /** @type {Customer} */
    Customer;
    /** @type {number} */
    Id;
    /** @type {string} */
    CompanyId;
    /** @type {string} */
    Note;
    /** @type {number} */
    RebateCodeId;
    /** @type {number} */
    Amount;
    /** @type {number} */
    Usage;
    /** @type {?number} */
    BookingId;
    /** @type {string} */
    UpdatedDate;
    /** @type {string} */
    CreatedDate;
}
export class RebateCode extends PayableEntity {
    /** @param {{RebateCodeTypeId?:number,RebateCodeTypeInfo?:RebateCodeType,RebateCodeStatusId?:number,RebateCodeStatusInfo?:RebateCodeStatus,Article?:Article,Services?:Service[],RebateCodeDayOfWeekRelation?:RebateCodeDayOfWeekRelation[],RebateCodeServiceRelation?:RebateCodeServiceRelation[],RebateCodeBookingPriceRelation?:RebateCodeBookingPriceRelation[],RebateCodeCustomerRelation?:RebateCodeCustomerRelation[],ServicesNames?:string,DaysOfWeek?:DaysOfWeek[],RebateCodeStatus?:RebateCodeStatus,RebateCodeType?:RebateCodeType,Transactions?:RebateCodeTransaction[],RemainingAmount?:number,RemainingUsage?:number,CurrentNumberOfUsesPerCustomer?:number,IsSpecificByDayOfWeek?:boolean,Active?:boolean,ActiveByStatus?:boolean,RebateCodeCurrencySign?:string,CurrencyInfo?:Currency,PaymentReceived?:boolean,InternalReferenceId?:string,ValidFrom?:string,ValidTo?:string,RebateCodeSign?:string,RebateCodeValue?:number,MaxNumberOfUses?:number,MaxNumberOfUsesPerCustomer?:number,NumberOfUsesUsed?:number,PersonalNote?:string,CreatedBy?:string,Created?:string,UpdatedBy?:string,UpdatedDate?:string,FromTime?:string,ToTime?:string,ModifiedDate?:string,Id?:number,ArticleId?:number,DbFactory?:IDbConnectionFactory,QvicklyPaymentManager?:IBokameraPaymentManager<InitCheckoutRequestBody, QvicklyCheckoutResponse, QvicklyPaymentResponse>,Payson2PaymentManager?:IBokameraPaymentManager<Payson2CheckoutResponse, Payson2CheckoutResponse, Payson2CheckoutResponse>,PaysonPaymentCheckout1?:IPaysonPaymentCheckout1,Logger?:ILogger<PayableEntity>,InternalReferenceId?:string,PaymentLog?:PaymentLog[],CompanyId?:string,PriceVat?:number,CurrencyId?:string,Customer?:Customer,Customers?:Customer[],Company?:Company}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {number} */
    RebateCodeTypeId;
    /** @type {RebateCodeType} */
    RebateCodeTypeInfo;
    /** @type {number} */
    RebateCodeStatusId;
    /** @type {RebateCodeStatus} */
    RebateCodeStatusInfo;
    /** @type {Article} */
    Article;
    /** @type {Service[]} */
    Services;
    /** @type {RebateCodeDayOfWeekRelation[]} */
    RebateCodeDayOfWeekRelation;
    /** @type {RebateCodeServiceRelation[]} */
    RebateCodeServiceRelation;
    /** @type {RebateCodeBookingPriceRelation[]} */
    RebateCodeBookingPriceRelation;
    /** @type {RebateCodeCustomerRelation[]} */
    RebateCodeCustomerRelation;
    /** @type {string} */
    ServicesNames;
    /** @type {DaysOfWeek[]} */
    DaysOfWeek;
    /** @type {RebateCodeStatus} */
    RebateCodeStatus;
    /** @type {RebateCodeType} */
    RebateCodeType;
    /** @type {RebateCodeTransaction[]} */
    Transactions;
    /** @type {?number} */
    RemainingAmount;
    /** @type {?number} */
    RemainingUsage;
    /** @type {number} */
    CurrentNumberOfUsesPerCustomer;
    /** @type {boolean} */
    IsSpecificByDayOfWeek;
    /** @type {boolean} */
    Active;
    /** @type {boolean} */
    ActiveByStatus;
    /** @type {string} */
    RebateCodeCurrencySign;
    /** @type {Currency} */
    CurrencyInfo;
    /** @type {boolean} */
    PaymentReceived;
    /** @type {string} */
    InternalReferenceId;
    /** @type {string} */
    ValidFrom;
    /** @type {string} */
    ValidTo;
    /** @type {string} */
    RebateCodeSign;
    /** @type {number} */
    RebateCodeValue;
    /** @type {number} */
    MaxNumberOfUses;
    /** @type {number} */
    MaxNumberOfUsesPerCustomer;
    /** @type {number} */
    NumberOfUsesUsed;
    /** @type {string} */
    PersonalNote;
    /** @type {string} */
    CreatedBy;
    /** @type {string} */
    Created;
    /** @type {string} */
    UpdatedBy;
    /** @type {string} */
    UpdatedDate;
    /** @type {string} */
    FromTime;
    /** @type {string} */
    ToTime;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
    /** @type {?number} */
    ArticleId;
}
export class ServicePrice extends BaseModel {
    /** @param {{CurrencyId?:string,CurrencyInfo?:Currency,Service?:Service,PriceMappings?:PriceMapping[],isTimeSpecific?:boolean,isDaysOfWeekSpecific?:boolean,DayOfWeeks?:ServicePriceDayOfWeekRelation[],PriceBeforeRebate?:number,RebateCodesApplied?:RebateCode[],PriceText?:string,OverlappingPrices?:ServicePrice[],CompanyId?:string,Id?:number,ServiceId?:number,Price?:number,Updated?:string,Created?:string,FromTime?:string,ToTime?:string,VAT?:number,Category?:string,ModifiedDate?:string,From?:string,To?:string,CalculationTypeId?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    CurrencyId;
    /** @type {Currency} */
    CurrencyInfo;
    /** @type {Service} */
    Service;
    /** @type {PriceMapping[]} */
    PriceMappings;
    /** @type {boolean} */
    isTimeSpecific;
    /** @type {boolean} */
    isDaysOfWeekSpecific;
    /** @type {ServicePriceDayOfWeekRelation[]} */
    DayOfWeeks;
    /** @type {?number} */
    PriceBeforeRebate;
    /** @type {RebateCode[]} */
    RebateCodesApplied;
    /** @type {string} */
    PriceText;
    /** @type {ServicePrice[]} */
    OverlappingPrices;
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    Id;
    /** @type {number} */
    ServiceId;
    /** @type {?number} */
    Price;
    /** @type {string} */
    Updated;
    /** @type {string} */
    Created;
    /** @type {string} */
    FromTime;
    /** @type {string} */
    ToTime;
    /** @type {number} */
    VAT;
    /** @type {string} */
    Category;
    /** @type {?string} */
    ModifiedDate;
    /** @type {string} */
    From;
    /** @type {string} */
    To;
    /** @type {number} */
    CalculationTypeId;
}
export class BookingStatusOptions {
    /** @param {{Id?:number,Name?:string,Description?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    Id;
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
}
export class ScheduleView extends BaseModel {
    /** @param {{Name?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class WeekNumberSetting extends BaseModel {
    /** @param {{Name?:string,Description?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class BookingTemplate extends BaseModel {
    /** @param {{Name?:string,Description?:string,UsedByApplication?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {string} */
    UsedByApplication;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class CalendarType extends BaseModel {
    /** @param {{Name?:string,Description?:string,Active?:boolean,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {boolean} */
    Active;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class FreeSpotTexts extends BaseModel {
    /** @param {{TextSingular?:string,TextPlural?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    TextSingular;
    /** @type {string} */
    TextPlural;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class BookingSettings extends BaseModel {
    /** @param {{FreeSpotTextsId?:number,SendEmailConfirmation?:boolean,ScheduleViewOptions?:ScheduleView[],WeekNumberSettingOptions?:WeekNumberSetting[],BookingTemplateOptions?:BookingTemplate[],CalendarTypeOptions?:CalendarType[],FreeSpotTextOptions?:FreeSpotTexts[],BookingStatusOptions?:BookingStatusOptions[],FreeSpotTextsInfo?:FreeSpotTexts,FreeSpotsTextSingular?:string,FreeSpotsTextPlural?:string,BookingStatusId?:number,ScheduleViewId?:number,BookingTemplateId?:number,CalendarTypeId?:number,AllowBookingOnUnbookedTimes?:boolean,SendEmailReminder?:boolean,SendSmsReminder?:boolean,SendSmsConfirmation?:boolean,EmailReminderTime?:number,SmsReminderTime?:number,MaxActiveBookings?:number,SendNotifications?:boolean,SendNotificationsEmail?:string,EnableMobileApp?:boolean,ScheduleStartTime?:string,ScheduleEndTime?:string,ReceiptTemplate?:string,ScheduleTimeSlotMinutes?:number,ShowFreeTimesLeft?:boolean,EnableICalGroupBookings?:boolean,AgreementTemplate?:string,ScheduleShowTimeExeptions?:boolean,EnableBookingsOnSameTime?:boolean,ShowWeekNumberSettingId?:number,EnableShowBookedTimes?:boolean,EnableSendFollowUpMessage?:boolean,FollowUpMessageTime?:number,MessageText?:string,ScheduleGroupResources?:boolean,BookSpotUserResponseMinutes?:number,IsBookSpotDirectly?:boolean,BookSpotDirectlyTimeLeftMinutes?:number,SendEmailNotificationQueue?:boolean,SendSMSNotificationQueue?:boolean,SchedulerDisableHorizontalScrolling?:boolean,BookOnlyOnExistingCustomers?:boolean,AutoGenerateUniquePinCode?:boolean,WeightedPrices?:boolean,ModifiedDate?:string,AutoCreateUserProfile?:boolean,ShowMultipleResourcesAsOne?:boolean,ShowMultiDayAsTime?:boolean,Id?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {number} */
    FreeSpotTextsId;
    /** @type {boolean} */
    SendEmailConfirmation;
    /** @type {ScheduleView[]} */
    ScheduleViewOptions;
    /** @type {WeekNumberSetting[]} */
    WeekNumberSettingOptions;
    /** @type {BookingTemplate[]} */
    BookingTemplateOptions;
    /** @type {CalendarType[]} */
    CalendarTypeOptions;
    /** @type {FreeSpotTexts[]} */
    FreeSpotTextOptions;
    /** @type {BookingStatusOptions[]} */
    BookingStatusOptions;
    /** @type {FreeSpotTexts} */
    FreeSpotTextsInfo;
    /** @type {string} */
    FreeSpotsTextSingular;
    /** @type {string} */
    FreeSpotsTextPlural;
    /** @type {number} */
    BookingStatusId;
    /** @type {number} */
    ScheduleViewId;
    /** @type {number} */
    BookingTemplateId;
    /** @type {number} */
    CalendarTypeId;
    /** @type {boolean} */
    AllowBookingOnUnbookedTimes;
    /** @type {boolean} */
    SendEmailReminder;
    /** @type {boolean} */
    SendSmsReminder;
    /** @type {boolean} */
    SendSmsConfirmation;
    /** @type {number} */
    EmailReminderTime;
    /** @type {number} */
    SmsReminderTime;
    /** @type {number} */
    MaxActiveBookings;
    /** @type {boolean} */
    SendNotifications;
    /** @type {string} */
    SendNotificationsEmail;
    /** @type {boolean} */
    EnableMobileApp;
    /** @type {?string} */
    ScheduleStartTime;
    /** @type {?string} */
    ScheduleEndTime;
    /** @type {string} */
    ReceiptTemplate;
    /** @type {number} */
    ScheduleTimeSlotMinutes;
    /** @type {boolean} */
    ShowFreeTimesLeft;
    /** @type {boolean} */
    EnableICalGroupBookings;
    /** @type {string} */
    AgreementTemplate;
    /** @type {boolean} */
    ScheduleShowTimeExeptions;
    /** @type {boolean} */
    EnableBookingsOnSameTime;
    /** @type {number} */
    ShowWeekNumberSettingId;
    /** @type {boolean} */
    EnableShowBookedTimes;
    /** @type {boolean} */
    EnableSendFollowUpMessage;
    /** @type {number} */
    FollowUpMessageTime;
    /** @type {string} */
    MessageText;
    /** @type {boolean} */
    ScheduleGroupResources;
    /** @type {number} */
    BookSpotUserResponseMinutes;
    /** @type {boolean} */
    IsBookSpotDirectly;
    /** @type {number} */
    BookSpotDirectlyTimeLeftMinutes;
    /** @type {boolean} */
    SendEmailNotificationQueue;
    /** @type {boolean} */
    SendSMSNotificationQueue;
    /** @type {boolean} */
    SchedulerDisableHorizontalScrolling;
    /** @type {boolean} */
    BookOnlyOnExistingCustomers;
    /** @type {boolean} */
    AutoGenerateUniquePinCode;
    /** @type {boolean} */
    WeightedPrices;
    /** @type {?string} */
    ModifiedDate;
    /** @type {boolean} */
    AutoCreateUserProfile;
    /** @type {boolean} */
    ShowMultipleResourcesAsOne;
    /** @type {boolean} */
    ShowMultiDayAsTime;
    /** @type {string} */
    Id;
}
export class AdminPaymentOptions extends BaseModel {
    /** @param {{Name?:string,Description?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class PaymentProviders extends BaseModel {
    /** @param {{Name?:string,Description?:string,Category?:string,Url?:string,Active?:boolean,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {string} */
    Category;
    /** @type {string} */
    Url;
    /** @type {boolean} */
    Active;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class PaymentSetting extends BaseModel {
    /** @param {{AdminPaymentOption?:AdminPaymentOptions,AdminPaymentOptions?:AdminPaymentOptions[],PaymentProviderOptions?:PaymentProviders[],Enabled?:boolean,InvoiceFee?:number,AllowCreditCardPayment?:boolean,AllowInvoicePayment?:boolean,AllowBankPayment?:boolean,GuaranteeOffered?:boolean,RefundOnCancelBooking?:boolean,DefaultPaymentOptionId?:number,PaymentProviderId?:number,SendPaymentRequestDirectly?:boolean,ModifiedDate?:string,Id?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {AdminPaymentOptions} */
    AdminPaymentOption;
    /** @type {AdminPaymentOptions[]} */
    AdminPaymentOptions;
    /** @type {PaymentProviders[]} */
    PaymentProviderOptions;
    /** @type {boolean} */
    Enabled;
    /** @type {number} */
    InvoiceFee;
    /** @type {boolean} */
    AllowCreditCardPayment;
    /** @type {boolean} */
    AllowInvoicePayment;
    /** @type {boolean} */
    AllowBankPayment;
    /** @type {boolean} */
    GuaranteeOffered;
    /** @type {boolean} */
    RefundOnCancelBooking;
    /** @type {?number} */
    DefaultPaymentOptionId;
    /** @type {number} */
    PaymentProviderId;
    /** @type {boolean} */
    SendPaymentRequestDirectly;
    /** @type {?string} */
    ModifiedDate;
    /** @type {string} */
    Id;
}
export class AverageRatingScore {
    /** @param {{AverageScore?:number,Score1Count?:number,Score2Count?:number,Score3Count?:number,Score4Count?:number,Score5Count?:number,Count?:number}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    AverageScore;
    /** @type {number} */
    Score1Count;
    /** @type {number} */
    Score2Count;
    /** @type {number} */
    Score3Count;
    /** @type {number} */
    Score4Count;
    /** @type {number} */
    Score5Count;
    /** @type {number} */
    Count;
}
export class Review extends BaseModel {
    /** @param {{ReviewId?:string,CompanyId?:string,Title?:string,Description?:string,Author?:string,Status?:number,Created?:string,Updated?:string,ModifiedDate?:string,ReviewAnswer?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    ReviewId;
    /** @type {string} */
    CompanyId;
    /** @type {string} */
    Title;
    /** @type {string} */
    Description;
    /** @type {string} */
    Author;
    /** @type {number} */
    Status;
    /** @type {string} */
    Created;
    /** @type {string} */
    Updated;
    /** @type {?string} */
    ModifiedDate;
    /** @type {string} */
    ReviewAnswer;
}
export class Rating extends BaseModel {
    /** @param {{ReviewId?:string,Review?:Review,CompanyId?:string,BookingId?:number,RatingScore?:number,Status?:number,Created?:string,Updated?:string,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {?string} */
    ReviewId;
    /** @type {Review} */
    Review;
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    BookingId;
    /** @type {number} */
    RatingScore;
    /** @type {number} */
    Status;
    /** @type {string} */
    Created;
    /** @type {string} */
    Updated;
    /** @type {?string} */
    ModifiedDate;
}
export class Service extends BaseModel {
    /** @param {{ResourceTypes?:ResourceType[],Resources?:Resource[],TotalPrice?:TotalPriceInformation,Prices?:ServicePrice[],BookingStatusOptions?:BookingStatusOptions[],IsGroupBooking?:boolean,IsMultipleResource?:boolean,Settings?:BookingSettings,PaymentSetting?:PaymentSetting,BookingCustomFieldsConfig?:IList<CustomFieldConfig>,CustomerCustomFieldsConfig?:IList<CustomFieldConfig>,CustomFieldsConfig?:IList<CustomFieldConfig>,CustomFieldsData?:IList<CustomFieldDataResponse>,Schedules?:IList<ISchedule>,CustomerActiveBookings?:IList<Booking>,ScheduleType?:ScheduleType,LastTimeToUnbookThreshold?:string,LastTimeToBookThreshold?:string,RatingScore?:AverageRatingScore,Ratings?:Rating[],CompanyId?:string,Id?:number,Name?:string,Description?:string,Group?:string,Active?:boolean,SortOrder?:number,PauseAfterBooking?:number,UnbookBeforeDays?:number,UnbookBeforeHours?:number,UnbookBeforeMinutes?:number,BookBeforeDays?:number,BookBeforeHours?:number,BookBeforeMinutes?:number,Duration?:number,DurationTypeId?:number,MinDuration?:number,MaxDuration?:number,DurationInterval?:number,TotalSpots?:number,ImageUrl?:string,ScheduleTypeId?:number,UpdatedDate?:string,CreatedDate?:string,OnlyVisibleByAdmin?:boolean,MinNumberOfSpotsPerBooking?:number,MaxNumberOfSpotsPerBooking?:number,MinNumberOfResourcesToBook?:number,MaxNumberOfResourcesToBook?:number,IsPaymentEnabled?:boolean,MaxPaymentTime?:number,LockSpotsToBooking?:boolean,EnableBookingQueue?:boolean,ModifiedDate?:string,BookingStatusId?:number,EnableCodeLockSync?:boolean,EnableCustomerManualPayment?:boolean,PriceViewTypeId?:number,TextField1?:string,TextField2?:string,TextField3?:string,TextField4?:string,TextField5?:string,TextField6?:string,TextField7?:string,TextField8?:string,TextField9?:string,TextField10?:string,TextField11?:string,TextField12?:string,TextField13?:string,TextField14?:string,TextField15?:string,TextField16?:string,TextField17?:string,TextField18?:string,TextField19?:string,TextField20?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {ResourceType[]} */
    ResourceTypes;
    /** @type {Resource[]} */
    Resources;
    /** @type {TotalPriceInformation} */
    TotalPrice;
    /** @type {ServicePrice[]} */
    Prices;
    /** @type {BookingStatusOptions[]} */
    BookingStatusOptions;
    /** @type {boolean} */
    IsGroupBooking;
    /** @type {boolean} */
    IsMultipleResource;
    /** @type {BookingSettings} */
    Settings;
    /** @type {PaymentSetting} */
    PaymentSetting;
    /** @type {IList<CustomFieldConfig>} */
    BookingCustomFieldsConfig;
    /** @type {IList<CustomFieldConfig>} */
    CustomerCustomFieldsConfig;
    /** @type {IList<CustomFieldConfig>} */
    CustomFieldsConfig;
    /** @type {IList<CustomFieldDataResponse>} */
    CustomFieldsData;
    /** @type {IList<ISchedule>} */
    Schedules;
    /** @type {IList<Booking>} */
    CustomerActiveBookings;
    /** @type {ScheduleType} */
    ScheduleType;
    /** @type {string} */
    LastTimeToUnbookThreshold;
    /** @type {string} */
    LastTimeToBookThreshold;
    /** @type {AverageRatingScore} */
    RatingScore;
    /** @type {Rating[]} */
    Ratings;
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    Id;
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {string} */
    Group;
    /** @type {boolean} */
    Active;
    /** @type {number} */
    SortOrder;
    /** @type {number} */
    PauseAfterBooking;
    /** @type {number} */
    UnbookBeforeDays;
    /** @type {number} */
    UnbookBeforeHours;
    /** @type {number} */
    UnbookBeforeMinutes;
    /** @type {number} */
    BookBeforeDays;
    /** @type {number} */
    BookBeforeHours;
    /** @type {number} */
    BookBeforeMinutes;
    /** @type {?number} */
    Duration;
    /** @type {number} */
    DurationTypeId;
    /** @type {?number} */
    MinDuration;
    /** @type {?number} */
    MaxDuration;
    /** @type {?number} */
    DurationInterval;
    /** @type {?number} */
    TotalSpots;
    /** @type {string} */
    ImageUrl;
    /** @type {number} */
    ScheduleTypeId;
    /** @type {string} */
    UpdatedDate;
    /** @type {string} */
    CreatedDate;
    /** @type {boolean} */
    OnlyVisibleByAdmin;
    /** @type {number} */
    MinNumberOfSpotsPerBooking;
    /** @type {number} */
    MaxNumberOfSpotsPerBooking;
    /** @type {number} */
    MinNumberOfResourcesToBook;
    /** @type {number} */
    MaxNumberOfResourcesToBook;
    /** @type {boolean} */
    IsPaymentEnabled;
    /** @type {number} */
    MaxPaymentTime;
    /** @type {boolean} */
    LockSpotsToBooking;
    /** @type {boolean} */
    EnableBookingQueue;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    BookingStatusId;
    /** @type {boolean} */
    EnableCodeLockSync;
    /** @type {boolean} */
    EnableCustomerManualPayment;
    /** @type {?number} */
    PriceViewTypeId;
    /** @type {string} */
    TextField1;
    /** @type {string} */
    TextField2;
    /** @type {string} */
    TextField3;
    /** @type {string} */
    TextField4;
    /** @type {string} */
    TextField5;
    /** @type {string} */
    TextField6;
    /** @type {string} */
    TextField7;
    /** @type {string} */
    TextField8;
    /** @type {string} */
    TextField9;
    /** @type {string} */
    TextField10;
    /** @type {string} */
    TextField11;
    /** @type {string} */
    TextField12;
    /** @type {string} */
    TextField13;
    /** @type {string} */
    TextField14;
    /** @type {string} */
    TextField15;
    /** @type {string} */
    TextField16;
    /** @type {string} */
    TextField17;
    /** @type {string} */
    TextField18;
    /** @type {string} */
    TextField19;
    /** @type {string} */
    TextField20;
}
export class CustomFieldServiceRelation extends BaseModel {
    /** @param {{CompanyId?:string,Id?:number,CustomFieldConfigId?:number,ServiceId?:number,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    Id;
    /** @type {number} */
    CustomFieldConfigId;
    /** @type {number} */
    ServiceId;
    /** @type {?string} */
    ModifiedDate;
}
export class CustomFieldConfig extends BaseModel {
    /** @param {{Values?:CustomFieldValue[],CustomField?:CustomField,RegEx?:RegEx,Services?:Service[],CustomFieldServiceRelation?:CustomFieldServiceRelation[],CompanyId?:string,Id?:number,GroupId?:number,FieldId?:number,IconId?:number,RegExId?:number,Name?:string,Description?:string,Datatype?:string,MaxLength?:number,IsPublic?:boolean,IsHidden?:boolean,IsMandatory?:boolean,DefaultValue?:string,RegExErrorMessage?:string,MandatoryErrorMessage?:string,Width?:number,MultipleLineText?:boolean,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {CustomFieldValue[]} */
    Values;
    /** @type {CustomField} */
    CustomField;
    /** @type {RegEx} */
    RegEx;
    /** @type {Service[]} */
    Services;
    /** @type {CustomFieldServiceRelation[]} */
    CustomFieldServiceRelation;
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    Id;
    /** @type {?number} */
    GroupId;
    /** @type {number} */
    FieldId;
    /** @type {number} */
    IconId;
    /** @type {?number} */
    RegExId;
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {string} */
    Datatype;
    /** @type {number} */
    MaxLength;
    /** @type {boolean} */
    IsPublic;
    /** @type {boolean} */
    IsHidden;
    /** @type {boolean} */
    IsMandatory;
    /** @type {string} */
    DefaultValue;
    /** @type {string} */
    RegExErrorMessage;
    /** @type {string} */
    MandatoryErrorMessage;
    /** @type {?number} */
    Width;
    /** @type {boolean} */
    MultipleLineText;
    /** @type {?string} */
    ModifiedDate;
}
export class CompanyType extends BaseModel {
    /** @param {{Name?:string,Description?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class CodeLockSystem extends BaseModel {
    /** @param {{Name?:string,Supplier?:string,LogoType?:string,Description?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Supplier;
    /** @type {string} */
    LogoType;
    /** @type {string} */
    Description;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class CodeLockSetting extends BaseModel {
    /** @param {{CodeLockSystemOptions?:CodeLockSystem[],Active?:boolean,CodeLockSystemsId?:number,ValidBeforeMinutes?:number,ValidAfterMinutes?:number,DeleteOldBySchedule?:boolean,Created?:string,Updated?:string,ModifiedDate?:string,SendEmailNotification?:boolean,SendSMSNotification?:boolean,EmailNotificationTime?:number,SMSNotificationTime?:number,Id?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {CodeLockSystem[]} */
    CodeLockSystemOptions;
    /** @type {boolean} */
    Active;
    /** @type {number} */
    CodeLockSystemsId;
    /** @type {number} */
    ValidBeforeMinutes;
    /** @type {number} */
    ValidAfterMinutes;
    /** @type {boolean} */
    DeleteOldBySchedule;
    /** @type {string} */
    Created;
    /** @type {string} */
    Updated;
    /** @type {?string} */
    ModifiedDate;
    /** @type {boolean} */
    SendEmailNotification;
    /** @type {boolean} */
    SendSMSNotification;
    /** @type {number} */
    EmailNotificationTime;
    /** @type {number} */
    SMSNotificationTime;
    /** @type {string} */
    Id;
}
export class LanguageResponse {
    /** @param {{Id?:string,Name?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    Id;
    /** @type {string} */
    Name;
}
export class CompanySetting extends BaseModel {
    /** @param {{Languages?:LanguageResponse[],Active?:boolean,InactiveMessage?:string,Searchable?:boolean,GATrackingId?:string,FacebookPixelId?:string,MultiLanguage?:boolean,EnableAPITranslation?:boolean,DefaultLanguage?:string,ModifiedDate?:string,GTMTrackingId?:string,ShowOnMarketPlace?:boolean,GoogleAdsConversionId?:string,LinkedinTagId?:string,GoogleAdsConversionLabel?:string,SendCustomerInformationToExternalProviders?:boolean,Id?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {LanguageResponse[]} */
    Languages;
    /** @type {boolean} */
    Active;
    /** @type {string} */
    InactiveMessage;
    /** @type {boolean} */
    Searchable;
    /** @type {string} */
    GATrackingId;
    /** @type {string} */
    FacebookPixelId;
    /** @type {boolean} */
    MultiLanguage;
    /** @type {boolean} */
    EnableAPITranslation;
    /** @type {string} */
    DefaultLanguage;
    /** @type {?string} */
    ModifiedDate;
    /** @type {string} */
    GTMTrackingId;
    /** @type {boolean} */
    ShowOnMarketPlace;
    /** @type {string} */
    GoogleAdsConversionId;
    /** @type {string} */
    LinkedinTagId;
    /** @type {string} */
    GoogleAdsConversionLabel;
    /** @type {boolean} */
    SendCustomerInformationToExternalProviders;
    /** @type {string} */
    Id;
}
export class WidgetServiceLayouts extends BaseModel {
    /** @param {{Name?:string,Description?:string,Code?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {string} */
    Code;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class WidgetTimeLayouts extends BaseModel {
    /** @param {{Name?:string,Description?:string,Code?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {string} */
    Code;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class WidgetBookingLayouts extends BaseModel {
    /** @param {{Name?:string,Description?:string,Code?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {string} */
    Code;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class WidgetBookingMethods extends BaseModel {
    /** @param {{Name?:string,Description?:string,Code?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {string} */
    Code;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class HomepageWidgetSetting extends BaseModel {
    /** @param {{WidgetServiceLayoutOptions?:WidgetServiceLayouts[],WidgetTimeLayoutOptions?:WidgetTimeLayouts[],WidgetBookingLayoutOptions?:WidgetBookingLayouts[],WidgetBookingMethodOptions?:WidgetBookingMethods[],ServiceLayoutId?:number,TimeLayoutId?:number,BookingLayoutId?:number,PrimaryColor?:string,ShowServiceImage?:boolean,ShowNextAvailableTime?:boolean,ShowEndTime?:boolean,BookedTimeSlotText?:string,DarkTheme?:boolean,ShowRebateCodeField?:boolean,ModifiedDate?:string,EnableCreateAccount?:boolean,EnableLogin?:boolean,EnableDirectBooking?:boolean,EnableFacebookLogin?:boolean,ShowSubscribeToNewsletter?:boolean,Id?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {WidgetServiceLayouts[]} */
    WidgetServiceLayoutOptions;
    /** @type {WidgetTimeLayouts[]} */
    WidgetTimeLayoutOptions;
    /** @type {WidgetBookingLayouts[]} */
    WidgetBookingLayoutOptions;
    /** @type {WidgetBookingMethods[]} */
    WidgetBookingMethodOptions;
    /** @type {number} */
    ServiceLayoutId;
    /** @type {number} */
    TimeLayoutId;
    /** @type {number} */
    BookingLayoutId;
    /** @type {string} */
    PrimaryColor;
    /** @type {boolean} */
    ShowServiceImage;
    /** @type {boolean} */
    ShowNextAvailableTime;
    /** @type {boolean} */
    ShowEndTime;
    /** @type {string} */
    BookedTimeSlotText;
    /** @type {boolean} */
    DarkTheme;
    /** @type {boolean} */
    ShowRebateCodeField;
    /** @type {?string} */
    ModifiedDate;
    /** @type {boolean} */
    EnableCreateAccount;
    /** @type {boolean} */
    EnableLogin;
    /** @type {boolean} */
    EnableDirectBooking;
    /** @type {boolean} */
    EnableFacebookLogin;
    /** @type {boolean} */
    ShowSubscribeToNewsletter;
    /** @type {string} */
    Id;
}
export class HomepageTemplate extends BaseModel {
    /** @param {{Name?:string,Description?:string,ImageUrl?:string,Premium?:boolean,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {string} */
    ImageUrl;
    /** @type {boolean} */
    Premium;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class HeroSectionStyle extends BaseModel {
    /** @param {{Name?:string,Description?:string,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class HomepageSetting extends BaseModel {
    /** @param {{HomepageTemplateOptions?:HomepageTemplate[],HomepageHeroSectionStyleOptions?:HeroSectionStyle[],CompanyId?:string,WelcomePageHeading?:string,WelcomePageBody?:string,AboutUsPageHeading?:string,AboutUsPageBody?:string,HomePageTemplateId?:number,ImageUrl?:string,Updated?:string,Created?:string,HomepageHeading?:string,HeroSectionStyleId?:number,ModifiedDate?:string,ShowRating?:boolean,EnableHomepage?:boolean,Id?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {HomepageTemplate[]} */
    HomepageTemplateOptions;
    /** @type {HeroSectionStyle[]} */
    HomepageHeroSectionStyleOptions;
    /** @type {?string} */
    CompanyId;
    /** @type {string} */
    WelcomePageHeading;
    /** @type {string} */
    WelcomePageBody;
    /** @type {string} */
    AboutUsPageHeading;
    /** @type {string} */
    AboutUsPageBody;
    /** @type {number} */
    HomePageTemplateId;
    /** @type {string} */
    ImageUrl;
    /** @type {string} */
    Updated;
    /** @type {string} */
    Created;
    /** @type {string} */
    HomepageHeading;
    /** @type {number} */
    HeroSectionStyleId;
    /** @type {?string} */
    ModifiedDate;
    /** @type {boolean} */
    ShowRating;
    /** @type {boolean} */
    EnableHomepage;
    /** @type {string} */
    Id;
}
export class LicenseTypeItem extends BaseModel {
    /** @param {{Name?:string,LicenseType?:LicenseType,LicenseTypesId?:number,LicenseItemsId?:number,NumberOfItems?:number,Id?:number,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {LicenseType} */
    LicenseType;
    /** @type {number} */
    LicenseTypesId;
    /** @type {number} */
    LicenseItemsId;
    /** @type {number} */
    NumberOfItems;
    /** @type {number} */
    Id;
    /** @type {?string} */
    ModifiedDate;
}
export class Country extends BaseModel {
    /** @param {{CurrencyId?:string,CurrencyInfo?:Currency,Name?:string,Culture?:string,TimeZone?:string,ModifiedDate?:string,Id?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    CurrencyId;
    /** @type {Currency} */
    CurrencyInfo;
    /** @type {string} */
    Name;
    /** @type {string} */
    Culture;
    /** @type {string} */
    TimeZone;
    /** @type {?string} */
    ModifiedDate;
    /** @type {string} */
    Id;
}
export class LicensePrice extends BaseModel {
    /** @param {{Country?:Country,MonthlyPayment?:boolean,LicenseTypeId?:number,CountryId?:string,Price?:number,ModifiedDate?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {Country} */
    Country;
    /** @type {boolean} */
    MonthlyPayment;
    /** @type {number} */
    LicenseTypeId;
    /** @type {string} */
    CountryId;
    /** @type {number} */
    Price;
    /** @type {?string} */
    ModifiedDate;
}
export class LicenseType extends BaseModel {
    /** @param {{LicenseItems?:IList<LicenseTypeItem>,Prices?:IList<LicensePrice>,PeriodOfNoticeDays?:number,NextLicenseOption?:LicenseType,Name?:string,Description?:string,ExtraLicenseOption?:boolean,ModifiedDate?:string,Active?:boolean,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {IList<LicenseTypeItem>} */
    LicenseItems;
    /** @type {IList<LicensePrice>} */
    Prices;
    /** @type {number} */
    PeriodOfNoticeDays;
    /** @type {LicenseType} */
    NextLicenseOption;
    /** @type {string} */
    Name;
    /** @type {string} */
    Description;
    /** @type {boolean} */
    ExtraLicenseOption;
    /** @type {?string} */
    ModifiedDate;
    /** @type {boolean} */
    Active;
    /** @type {number} */
    Id;
}
export class License extends BaseModel {
    /** @param {{Type?:LicenseType,CompanyId?:string,Id?:number,TypeId?:number,ValidFrom?:string,ValidTo?:string,Active?:boolean,Updated?:string,Created?:string,ModifiedDate?:string,MetaData?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {LicenseType} */
    Type;
    /** @type {string} */
    CompanyId;
    /** @type {number} */
    Id;
    /** @type {number} */
    TypeId;
    /** @type {string} */
    ValidFrom;
    /** @type {string} */
    ValidTo;
    /** @type {boolean} */
    Active;
    /** @type {string} */
    Updated;
    /** @type {string} */
    Created;
    /** @type {?string} */
    ModifiedDate;
    /** @type {string} */
    MetaData;
}
export class CompanyCategory extends BaseModel {
    /** @param {{Name?:string,Header?:string,Description?:string,ImageUrl?:string,Active?:boolean,SortOrder?:number,ModifiedDate?:string,Id?:number}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    Header;
    /** @type {string} */
    Description;
    /** @type {string} */
    ImageUrl;
    /** @type {boolean} */
    Active;
    /** @type {?number} */
    SortOrder;
    /** @type {?string} */
    ModifiedDate;
    /** @type {number} */
    Id;
}
export class Company extends BaseModel {
    /** @param {{Status?:CompanyStatus,Active?:boolean,CustomerCustomFieldsConfig?:IList<CustomFieldConfig>,BookingAgreements?:string,BookingSettings?:BookingSettings,CompanyType?:CompanyType,CodeLockSettings?:CodeLockSetting,PaymentSettings?:PaymentSetting,Settings?:CompanySetting,WidgetSettings?:HomepageWidgetSetting,HomepageSettings?:HomepageSetting,RatingScore?:AverageRatingScore,Ratings?:Rating[],Distance?:number,Licenses?:License[],ActiveLicenses?:License[],CurrentLicense?:License,IsFreeAccount?:boolean,DefaultLanguage?:CultureInfo,Category?:CompanyCategory,Lat?:number,Lon?:number,IsFavorite?:boolean,ExternalReferences?:IList<ExternalReference>,OrganisationNumber?:string,StatusId?:number,CategoryId?:number,SitePath?:string,Name?:string,Street1?:string,Street2?:string,ZipCode?:string,City?:string,OpeningHours?:string,FaxNumber?:string,Email?:string,Phone?:string,Details?:string,LogoType?:string,ApprovedByAdmin?:boolean,Updated?:string,Created?:string,IpAddress?:string,Homepage?:string,DomainName?:string,CountryId?:string,CompanyOwnerId?:number,TypeId?:number,ModifiedDate?:string,Id?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {CompanyStatus} */
    Status;
    /** @type {boolean} */
    Active;
    /** @type {IList<CustomFieldConfig>} */
    CustomerCustomFieldsConfig;
    /** @type {string} */
    BookingAgreements;
    /** @type {BookingSettings} */
    BookingSettings;
    /** @type {CompanyType} */
    CompanyType;
    /** @type {CodeLockSetting} */
    CodeLockSettings;
    /** @type {PaymentSetting} */
    PaymentSettings;
    /** @type {CompanySetting} */
    Settings;
    /** @type {HomepageWidgetSetting} */
    WidgetSettings;
    /** @type {HomepageSetting} */
    HomepageSettings;
    /** @type {AverageRatingScore} */
    RatingScore;
    /** @type {Rating[]} */
    Ratings;
    /** @type {?number} */
    Distance;
    /** @type {License[]} */
    Licenses;
    /** @type {License[]} */
    ActiveLicenses;
    /** @type {License} */
    CurrentLicense;
    /** @type {boolean} */
    IsFreeAccount;
    /** @type {CultureInfo} */
    DefaultLanguage;
    /** @type {CompanyCategory} */
    Category;
    /** @type {number} */
    Lat;
    /** @type {number} */
    Lon;
    /** @type {boolean} */
    IsFavorite;
    /** @type {IList<ExternalReference>} */
    ExternalReferences;
    /** @type {string} */
    OrganisationNumber;
    /** @type {number} */
    StatusId;
    /** @type {number} */
    CategoryId;
    /** @type {string} */
    SitePath;
    /** @type {string} */
    Name;
    /** @type {string} */
    Street1;
    /** @type {string} */
    Street2;
    /** @type {string} */
    ZipCode;
    /** @type {string} */
    City;
    /** @type {string} */
    OpeningHours;
    /** @type {string} */
    FaxNumber;
    /** @type {string} */
    Email;
    /** @type {string} */
    Phone;
    /** @type {string} */
    Details;
    /** @type {string} */
    LogoType;
    /** @type {boolean} */
    ApprovedByAdmin;
    /** @type {string} */
    Updated;
    /** @type {string} */
    Created;
    /** @type {string} */
    IpAddress;
    /** @type {string} */
    Homepage;
    /** @type {string} */
    DomainName;
    /** @type {string} */
    CountryId;
    /** @type {number} */
    CompanyOwnerId;
    /** @type {?number} */
    TypeId;
    /** @type {?string} */
    ModifiedDate;
    /** @type {string} */
    Id;
}
export class CompanyQuery extends QueryDb {
    /** @param {{Id?:string,Categories?:number[],Latitude?:number,Longitude?:number,SitePath?:string,Active?:boolean,OrganisationNumber?:string,Distance?:number,Search?:string,CompanyOwnerId?:number,IncludeBookingAgreements?:boolean,IncludeCodeLockSystem?:boolean,IncludeBookingSettings?:boolean,IncludeSystemSettings?:boolean,IncludeWidgetSettings?:boolean,IncludeHomepageSettings?:boolean,IncludeCustomerCustomFields?:boolean,IncludeCustomFields?:boolean,IncludeRatingReviews?:boolean,IncludeRatingSummary?:boolean,ResponseStatus?:ResponseStatus,Skip?:number,Take?:number,OrderBy?:string,OrderByDesc?:string,Include?:string,Fields?:string,Meta?:{ [index: string]: string; }}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /**
     * @type {?string}
     * @description Id for a specific company you want to retrieve. */
    Id;
    /**
     * @type {number[]}
     * @description Include companies in these categories. */
    Categories;
    /**
     * @type {?number}
     * @description Search nearby this latitude coordinate. */
    Latitude;
    /**
     * @type {?number}
     * @description Search nearby this longitude coordinate. */
    Longitude;
    /**
     * @type {string}
     * @description The site path url for the company homepage */
    SitePath;
    /**
     * @type {boolean}
     * @description Search active companies. You're only allowed to search active companies. */
    Active;
    /**
     * @type {string}
     * @description The organisation number for the company */
    OrganisationNumber;
    /**
     * @type {?number}
     * @description Maxium distance from the coordinates to be included in the result. */
    Distance;
    /**
     * @type {string}
     * @description Will search by any company name or city that contains the search string provided. */
    Search;
    /**
     * @type {?number}
     * @description Will search by any company owner id. Default is 1 = BokaMera. */
    CompanyOwnerId;
    /**
     * @type {boolean}
     * @description If you want to get the booking agreements loaded into the field BookingAgreements */
    IncludeBookingAgreements;
    /**
     * @type {boolean}
     * @description If you want to get the code lock system used by the company */
    IncludeCodeLockSystem;
    /**
     * @type {boolean}
     * @description If you want to get the booking settings loaded into the field BookingSettings */
    IncludeBookingSettings;
    /**
     * @type {boolean}
     * @description If you want to get the system settings loaded into the field SystemSettings */
    IncludeSystemSettings;
    /**
     * @type {boolean}
     * @description If you want to get the widget settings loaded into the field WidgetSettings */
    IncludeWidgetSettings;
    /**
     * @type {boolean}
     * @description If you want to get the homepage settings loaded into the field HomepageSettings */
    IncludeHomepageSettings;
    /**
     * @type {boolean}
     * @description If you want to include the connected custom fields for the customers */
    IncludeCustomerCustomFields;
    /**
     * @type {boolean}
     * @description If you want to include the connected custom fields */
    IncludeCustomFields;
    /**
     * @type {boolean}
     * @description If you want to include the rating reviews */
    IncludeRatingReviews;
    /**
     * @type {boolean}
     * @description If you want to include the rating summary */
    IncludeRatingSummary;
    /** @type {ResponseStatus} */
    ResponseStatus;
}
export class Currency extends BaseModel {
    /** @param {{Name?:string,CurrencySign?:string,Active?:boolean,ModifiedDate?:string,Id?:string}} [init] */
    constructor(init) { super(init); Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {string} */
    CurrencySign;
    /** @type {boolean} */
    Active;
    /** @type {?string} */
    ModifiedDate;
    /** @type {string} */
    Id;
}
export class QvicklyArticle {
    /** @param {{artnr?:string,title?:string,quantity?:number,aprice?:number,tax?:number,discount?:number,withouttax?:number,taxrate?:number}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    artnr;
    /** @type {string} */
    title;
    /** @type {number} */
    quantity;
    /** @type {number} */
    aprice;
    /** @type {number} */
    tax;
    /** @type {number} */
    discount;
    /** @type {number} */
    withouttax;
    /** @type {number} */
    taxrate;
}
export class Customer {
    /** @param {{City?:string,CountryCode?:string,IdentityNumber?:string,Email?:string,FirstName?:string,LastName?:string,Phone?:string,PostalCode?:string,Street?:string,Reference?:string,Type?:CustomerType}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    City;
    /** @type {string} */
    CountryCode;
    /** @type {string} */
    IdentityNumber;
    /** @type {string} */
    Email;
    /** @type {string} */
    FirstName;
    /** @type {string} */
    LastName;
    /** @type {string} */
    Phone;
    /** @type {string} */
    PostalCode;
    /** @type {string} */
    Street;
    /** @type {string} */
    Reference;
    /** @type {CustomerType} */
    Type;
}
export class AccessKeyTypeResponse {
    /** @param {{Id?:number,KeyType?:string,Description?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    Id;
    /** @type {string} */
    KeyType;
    /** @type {string} */
    Description;
}
/** @typedef T {any} */
export class QueryResponse {
    /** @param {{Offset?:number,Total?:number,Results?:T[],Meta?:{ [index: string]: string; },ResponseStatus?:ResponseStatus}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    Offset;
    /** @type {number} */
    Total;
    /** @type {T[]} */
    Results;
    /** @type {{ [index: string]: string; }} */
    Meta;
    /** @type {ResponseStatus} */
    ResponseStatus;
}

JavaScript CompanyQuery DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /companies HTTP/1.1 
Host: api.bokamera.se 
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	Offset: 0,
	Total: 0,
	Results: 
	[
		{
			Name: String,
			OrganisationNumber: String,
			TypeId: 0,
			Details: String,
			CategoryId: 0,
			Category: String,
			Street1: String,
			Street2: String,
			ZipCode: String,
			City: String,
			CountryId: String,
			Longitude: String,
			Latitude: String,
			Distance: 0,
			Phone: String,
			Email: String,
			Homepage: String,
			SitePath: String,
			Active: False,
			CodeLockSystem: Sample,
			IsFreeAccount: False,
			Updated: "0001-01-01T00:00:00",
			Created: "0001-01-01T00:00:00",
			StatusId: 0,
			IsFavorite: False,
			BookingAgreements: String,
			BookingSettings: 
			{
				EnableMobileApp: False,
				BookingReceiptMessage: String,
				ShowFreeTimesLeft: False,
				EnableShowBookedTimes: False,
				BookingAgreement: String,
				WeekNumberSetting: 0,
				ShowBookedTimes: False,
				PaymentProviderId: 0,
				BookOnlyOnExistingCustomers: False,
				PaymentEnabled: False
			},
			SystemSettings: 
			{
				Active: False,
				InactiveMessage: String,
				Searchable: False,
				GATrackingId: String,
				GoogleAdsConversionId: String,
				LinkedinTagId: String,
				GoogleAdsConversionLabel: String,
				GTMTrackingId: String,
				FacebookPixelId: String,
				MultiLanguage: False,
				ShowOnMarketplace: False,
				EnableAPITranslation: False,
				DefaultLanguage: String,
				SendCustomerInformationToExternalProviders: False
			},
			WidgetSettings: 
			{
				ServiceLayoutId: 0,
				TimeLayoutId: 0,
				BookingLayoutId: 0,
				PrimaryColor: String,
				ShowServiceImage: False,
				ShowRebateCodeField: False,
				ShowNextAvailableTime: False,
				ShowEndTime: False,
				BookedTimeSlotText: String,
				DarkTheme: False,
				ShowSubscribeToNewsletter: False
			},
			HomepageSettings: 
			{
				HomepageHeading: String,
				WelcomePageHeading: String,
				WelcomePageBody: String,
				AboutUsPageHeading: String,
				AboutUsPageBody: String,
				ShowRating: False,
				HomePageTemplateId: 0,
				HeroSectionStyleId: 0,
				EnableHomepage: False
			},
			RatingSummary: 
			{
				AverageScore: 0,
				RatingScore1Count: 0,
				RatingScore2Count: 0,
				RatingScore3Count: 0,
				RaingScore4Count: 0,
				RatingScore5Count: 0,
				Count: 0
			},
			Reviews: 
			[
				{
					Title: String,
					Description: String,
					RatingScore: 0,
					Author: String,
					ReviewAnswer: String
				}
			],
			CustomerCustomFields: 
			[
				{
					"Id": 0,
					"Name": "String",
					"Description": "String",
					"Width": 0,
					"DataType": "String",
					"DefaultValue": "String",
					"IsMandatory": false,
					"MandatoryErrorMessage": "String",
					"MaxLength": 0,
					"MultipleLineText": false,
					"RegEx": "String",
					"RegExErrorMessage": "String",
					"Values": 
					[
						{
							"Value": "String"
						}
					]
				}
			],
			ResponseStatus: 
			{
				ErrorCode: String,
				Message: String,
				StackTrace: String,
				Errors: 
				[
					{
						ErrorCode: String,
						FieldName: String,
						Message: String,
						Meta: 
						{
							String: String
						}
					}
				],
				Meta: 
				{
					String: String
				}
			}
		}
	],
	Meta: 
	{
		String: String
	},
	ResponseStatus: 
	{
		ErrorCode: String,
		Message: String,
		StackTrace: String,
		Errors: 
		[
			{
				ErrorCode: String,
				FieldName: String,
				Message: String,
				Meta: 
				{
					String: String
				}
			}
		],
		Meta: 
		{
			String: String
		}
	}
}