BokaMera.API.Host

<back to all web services

AddResourceTypeToService

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
POST/services/{Id}/addresourcetypeAdd ResourceType(s) to serviceAdd ResourceType(s) to service for the currently logged in user. Note: you will need to add all ResourceType(s) you want to have connected, only administrators are allowed to add ResourceType(s) to services.

export enum ScheduleType
{
    NotDefined = 'NotDefined',
    RecurringSchedule = 'RecurringSchedule',
    DateSchedule = 'DateSchedule',
}

export class GroupBookingSettings
{
    public Active: boolean;
    public Min: number;
    public Max: number;

    public constructor(init?: Partial<GroupBookingSettings>) { (Object as any).assign(this, init); }
}

export class MultipleResourceSettings
{
    public Active: boolean;
    public Min: number;
    public Max: number;

    public constructor(init?: Partial<MultipleResourceSettings>) { (Object as any).assign(this, init); }
}

export class CustomFieldValueResponse
{
    public Value: string;

    public constructor(init?: Partial<CustomFieldValueResponse>) { (Object as any).assign(this, init); }
}

export class CustomFieldConfigData
{
    /** @description Custom field id */
    // @ApiMember(Description="Custom field id")
    public Id: number;

    /** @description Configuration name. Example: 'Number of persons'. */
    // @ApiMember(Description="Configuration name. Example: 'Number of persons'.")
    public Name: string;

    /** @description Custom field description. Example: 'For how many persons is this booking?' */
    // @ApiMember(Description="Custom field description. Example: 'For how many persons is this booking?'")
    public Description: string;

    /** @description Field width. Example: 20 for 20px */
    // @ApiMember(Description="Field width. Example: 20 for 20px")
    public Width?: number;

    /** @description Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox' */
    // @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")
    public DataType: string;

    /** @description Default value of the field. Example: '3' */
    // @ApiMember(Description="Default value of the field. Example: '3'")
    public DefaultValue: string;

    /** @description Determines if the field is required to have a value or not */
    // @ApiMember(Description="Determines if the field is required to have a value or not")
    public IsMandatory: boolean;

    /** @description Error message shown to the user if the field data is required but not entered */
    // @ApiMember(Description="Error message shown to the user if the field data is required but not entered")
    public MandatoryErrorMessage: string;

    /** @description Max lenght of the field */
    // @ApiMember(Description="Max lenght of the field")
    public MaxLength: number;

    /** @description If the field should have multiple lines */
    // @ApiMember(Description="If the field should have multiple lines")
    public MultipleLineText: boolean;

    /** @description Regular expression used for validation of the field */
    // @ApiMember(Description="Regular expression used for validation of the field")
    public RegEx: string;

    /** @description Error message shown if the regular expression validation failed */
    // @ApiMember(Description="Error message shown if the regular expression validation failed")
    public RegExErrorMessage: string;

    /** @description The values to select from if Datatype is DropDown for this custom field */
    // @ApiMember(Description="The values to select from if Datatype is DropDown for this custom field")
    public Values: CustomFieldValueResponse[];

    public constructor(init?: Partial<CustomFieldConfigData>) { (Object as any).assign(this, init); }
}

export class CustomFieldDataResponse
{
    public Id: number;
    public Column: string;
    public Name: string;
    public Description: string;
    public Value: string;
    /** @description Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox' */
    // @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")
    public DataType: string;

    public constructor(init?: Partial<CustomFieldDataResponse>) { (Object as any).assign(this, init); }
}

export class BookingStatusOptionsResponse
{
    public Id: number;
    public Name: string;
    public Description: string;

    public constructor(init?: Partial<BookingStatusOptionsResponse>) { (Object as any).assign(this, init); }
}

export class DayOfWeekDto
{
    public DayOfWeekId: number;
    public DotNetDayOfWeekId: number;
    public DayOfWeek: string;

    public constructor(init?: Partial<DayOfWeekDto>) { (Object as any).assign(this, init); }
}

export class ServiceInfoResponse
{
    public Id: number;
    public Name: string;
    public Description: string;
    public ImageUrl: string;
    public LengthInMinutes?: number;
    public MaxNumberOfSpotsPerBooking: number;
    public MinNumberOfSpotsPerBooking: number;
    public GroupBooking: GroupBookingSettings;
    public MultipleResource: MultipleResourceSettings;
    public IsGroupBooking: boolean;
    public IsPaymentEnabled: boolean;

    public constructor(init?: Partial<ServiceInfoResponse>) { (Object as any).assign(this, init); }
}

export class ServicePriceResponse
{
    /** @description The company id */
    // @ApiMember(Description="The company id")
    public CompanyId: string;

    /** @description The price id */
    // @ApiMember(Description="The price id")
    public Id: number;

    /** @description The service id */
    // @ApiMember(Description="The service id")
    public ServiceId: number;

    /** @description The price */
    // @ApiMember(Description="The price")
    public Price: number;

    /** @description The price calculation type id, 1 = Normal, price is for the service total duration, 2 = Price is per minute, 3 = Price is per hour, 4= Price is per day */
    // @ApiMember(Description="The price calculation type id, 1 = Normal, price is for the service total duration, 2 = Price is per minute, 3 = Price is per hour, 4= Price is per day")
    public CalculationTypeId: number;

    /** @description The price currency */
    // @ApiMember(Description="The price currency")
    public CurrencyId: string;

    /** @description The price sign */
    // @ApiMember(Description="The price sign")
    public PriceSign: string;

    /** @description The price VAT in percent */
    // @ApiMember(Description="The price VAT in percent")
    public VAT: number;

    /** @description The price category if price has a category */
    // @ApiMember(Description="The price category if price has a category")
    public Category: string;

    /** @description The price text to display */
    // @ApiMember(Description="The price text to display")
    public PriceText: string;

    /** @description The valid from date for the price. */
    // @ApiMember(Description="The valid from date for the price.")
    public From: string;

    /** @description The valid to date for the price. */
    // @ApiMember(Description="The valid to date for the price.")
    public To: string;

    /** @description If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update. */
    // @ApiMember(Description="If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.")
    public DaysOfWeek: DayOfWeekDto[];

    /** @description If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update. */
    // @ApiMember(Description="If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.")
    public FromTime?: string;

    /** @description If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters. */
    // @ApiMember(Description="If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters.")
    public ToTime?: string;

    public Service: ServiceInfoResponse;
    /** @description If the price is only valid for a specific time span */
    // @ApiMember(Description="If the price is only valid for a specific time span")
    public IsTimeSpecific: boolean;

    /** @description If the price is only valid for specific days of week */
    // @ApiMember(Description="If the price is only valid for specific days of week")
    public IsDaysOfWeekSpecific: boolean;

    public constructor(init?: Partial<ServicePriceResponse>) { (Object as any).assign(this, init); }
}

export class BaseModel
{

    public constructor(init?: Partial<BaseModel>) { (Object as any).assign(this, init); }
}

export interface ITimeException extends IInterval
{
    Id: number;
    ReasonText: string;
    IsBlock: boolean;
    ReasonTextPublic: string;
    IsRecurring: boolean;
    ResourceIds: number[];
}

export enum BookingStatusEnum
{
    Booked = 1,
    Unbooked = 2,
    Reserved = 3,
    Canceled = 4,
    AwaitingPayment = 5,
    AwaitingPaymentNoTimeLimit = 6,
    Payed = 7,
    AwaitingPaymentRequestFromAdmin = 8,
    AwaitingPaymentFromProvider = 9,
    Invoiced = 10,
}

export class BookedCustomer
{
    public Id: string;
    public Firstname: string;
    public Lastname: string;
    public Email: string;
    public Phone: string;
    public FacebookUserName: string;
    public ImageUrl: string;
    public CorporateIdentityNumber: string;
    public InvoiceAddress1: string;
    public InvoiceAddress2: string;
    public InvoiceCity: string;
    public InvoicePostalCode: string;
    public InvoiceCountryCode: string;

    public constructor(init?: Partial<BookedCustomer>) { (Object as any).assign(this, init); }
}

export interface IBookedTime extends IInterval
{
    Id: number;
    ServiceId: number;
    BookedSpots: number;
    TotalSpots: number;
    PauseAfterInMinutes: number;
    Status: BookingStatusEnum;
    StatusId: number;
    Customer: BookedCustomer;
}

export class CustomFieldValue extends BaseModel
{
    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public Value: string;

    // @Required()
    public Active: boolean;

    public SortOrder?: number;
    public ModifiedDate?: string;

    public constructor(init?: Partial<CustomFieldValue>) { super(init); (Object as any).assign(this, init); }
}

export class CustomField extends BaseModel
{
    // @Required()
    public Table: string;

    // @Required()
    public Column: string;

    // @Required()
    public DataType: string;

    // @Required()
    public Description: string;

    // @Required()
    public Active: boolean;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<CustomField>) { super(init); (Object as any).assign(this, init); }
}

export class RegEx extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public RegExCode: string;

    public ErrorMessage: string;
    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<RegEx>) { super(init); (Object as any).assign(this, init); }
}

export class ResourceType extends BaseModel implements IBaseModelCreated, IBaseModelUpdated
{
    // @Ignore()
    public SelectableByUser: boolean;

    // @Ignore()
    public Resources: Resource[];

    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public Name: string;

    public Description: string;
    // @Required()
    public Active: boolean;

    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<ResourceType>) { super(init); (Object as any).assign(this, init); }
}

export class RebateCodeType extends BaseModel
{
    // @Required()
    public Name: string;

    public Description: string;
    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<RebateCodeType>) { super(init); (Object as any).assign(this, init); }
}

export class AppliedRebateCodes
{
    public RebateCodeId: number;
    public RebateCodeSign: string;
    public RebateCodeValue: number;
    public RebateAmount: number;
    public RebateCodeType: RebateCodeType;

    public constructor(init?: Partial<AppliedRebateCodes>) { (Object as any).assign(this, init); }
}

export class TotalPriceInformation
{
    public TotalPrice: number;
    public TotalVATAmount: number;
    public TotalRebate: number;
    public TotalPriceBeforeRebate: number;
    public AppliedCodes: AppliedRebateCodes[];
    public PriceSign: string;
    public CurrencyId: string;
    public VAT: number;

    public constructor(init?: Partial<TotalPriceInformation>) { (Object as any).assign(this, init); }
}

export enum Currency
{
    SEK = 1,
    EUR = 2,
}

export class PriceMapping extends BaseModel
{
    // @Required()
    public CompanyId: string;

    // @Required()
    public Id: string;

    // @Required()
    public ServicePriceId: number;

    public ReferenceType: string;
    public ExternalReference: string;
    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<PriceMapping>) { super(init); (Object as any).assign(this, init); }
}

export enum BokaMeraDayOfWeek
{
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6,
    Sunday = 7,
}

export class ServicePriceDayOfWeekRelation extends BaseModel
{
    // @Ignore()
    public DayOfWeek: BokaMeraDayOfWeek;

    // @Required()
    public CompanyId: string;

    // @Required()
    public ServicePriceId: number;

    // @Required()
    public DayOfWeekId: number;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<ServicePriceDayOfWeekRelation>) { super(init); (Object as any).assign(this, init); }
}

export interface IDbConnectionFactory
{
}

export class ServerData
{
    public HTTP_HOST: string;
    public HTTP_CONNECTION: string;
    public HTTP_CACHE_CONTROL: string;
    public HTTP_ACCEPT: string;
    public HTTP_USER_AGENT: string;
    public HTTP_ACCEPT_ENCODING: string;
    public HTTP_ACCEPT_LANGUAGE: string;
    public PATH: string;
    public SERVER_SOFTWARE: string;
    public SERVER_NAME: string;
    public SERVER_ADDR: string;
    public SERVER_PORT: string;
    public REMOTE_ADDR: string;
    public REMOTE_PORT: string;
    public GATEWAY_INTERFACE: string;
    public SERVER_PROTOCOL: string;
    public REQUEST_METHOD: string;
    public QUERY_STRING: string;
    public REQUEST_TIME: string;

    public constructor(init?: Partial<ServerData>) { (Object as any).assign(this, init); }
}

export class Credentials
{
    public hash: string;
    public id: string;
    public version: string;
    public client: string;
    public serverdata: ServerData;
    public time: string;
    public test: string;
    public language: string;

    public constructor(init?: Partial<Credentials>) { (Object as any).assign(this, init); }
}

export class CheckoutData
{
    public terms: string;
    public privacyPolicy: string;
    public redirectOnSuccess: string;

    public constructor(init?: Partial<CheckoutData>) { (Object as any).assign(this, init); }
}

export class CheckoutPaymentData
{
    public currency: string;
    public language: string;
    public country: string;
    public autoactivate: string;
    public orderid: string;
    public returnmethod: string;
    public accepturl: string;
    public cancelurl: string;
    public callbackurl: string;

    public constructor(init?: Partial<CheckoutPaymentData>) { (Object as any).assign(this, init); }
}

export class PaymentInfo
{
    public paymentdate: string;
    public paymentterms: string;
    public yourreference: string;
    public ourreference: string;
    public projectname: string;
    public deliverymethod: string;
    public deliveryterms: string;

    public constructor(init?: Partial<PaymentInfo>) { (Object as any).assign(this, init); }
}

export class CartHandling
{
    public withouttax: string;
    public taxrate: string;

    public constructor(init?: Partial<CartHandling>) { (Object as any).assign(this, init); }
}

export class CartTotal
{
    public rounding: string;
    public withouttax: string;
    public tax: string;
    public withtax: string;

    public constructor(init?: Partial<CartTotal>) { (Object as any).assign(this, init); }
}

export class Shipping
{
    public firstname: string;
    public lastname: string;
    public company: string;
    public street: string;
    public street2: string;
    public zip: string;
    public city: string;
    public country: string;
    public phone: string;
    public withouttax: string;
    public taxrate: string;

    public constructor(init?: Partial<Shipping>) { (Object as any).assign(this, init); }
}

export class Cart
{
    public Handling: CartHandling;
    public Total: CartTotal;
    public Shipping: Shipping;

    public constructor(init?: Partial<Cart>) { (Object as any).assign(this, init); }
}

export class CustomerBilling
{
    public firstname: string;
    public lastname: string;
    public company: string;
    public street: string;
    public street2: string;
    public zip: string;
    public city: string;
    public country: string;
    public phone: string;
    public email: string;

    public constructor(init?: Partial<CustomerBilling>) { (Object as any).assign(this, init); }
}

export class QvicklyCustomer
{
    public nr: string;
    public pno: string;
    public Billing: CustomerBilling;

    public constructor(init?: Partial<QvicklyCustomer>) { (Object as any).assign(this, init); }
}

export class InitCheckoutData
{
    public CheckoutData: CheckoutData;
    public PaymentData: CheckoutPaymentData;
    public PaymentInfo: PaymentInfo;
    public Articles: QvicklyArticle[];
    public Cart: Cart;
    public QvicklyCustomer: QvicklyCustomer;

    public constructor(init?: Partial<InitCheckoutData>) { (Object as any).assign(this, init); }
}

export class InitCheckoutRequestBody
{
    public credentials: Credentials;
    public data: InitCheckoutData;
    public function: string;

    public constructor(init?: Partial<InitCheckoutRequestBody>) { (Object as any).assign(this, init); }
}

export class QvicklyCheckoutResponse
{
    public Number: number;
    public Status: string;
    public OrderId: string;
    public Url: string;

    public constructor(init?: Partial<QvicklyCheckoutResponse>) { (Object as any).assign(this, init); }
}

export class QvikclyPaymentData
{
    public method: string;
    public paymentplanid: string;
    public currency: string;
    public country: string;
    public language: string;
    public autoactivate: string;
    public orderid: string;
    public status: string;
    public paymentid_related: string;
    public url: string;

    public constructor(init?: Partial<QvikclyPaymentData>) { (Object as any).assign(this, init); }
}

export class Card
{
    public promptname: string;
    public recurring: string;
    public recurringnr: string;
    public accepturl: string;
    public cancelurl: string;
    public callbackurl: string;
    public returnmethod: string;

    public constructor(init?: Partial<Card>) { (Object as any).assign(this, init); }
}

export class Settlement
{
    public number: string;
    public date: string;

    public constructor(init?: Partial<Settlement>) { (Object as any).assign(this, init); }
}

export class QvicklyPaymentResponse
{
    public PaymentData: QvikclyPaymentData;
    public PaymentInfo: PaymentInfo;
    public Card: Card;
    public Settlement: Settlement;
    public QvicklyCustomer: QvicklyCustomer;
    public Articles: QvicklyArticle[];
    public Cart: Cart;

    public constructor(init?: Partial<QvicklyPaymentResponse>) { (Object as any).assign(this, init); }
}

export enum Payson2CheckoutStatus
{
    None = 'None',
    Created = 'Created',
    FormsFilled = 'FormsFilled',
    ReadyToPay = 'ReadyToPay',
    ProcessingPayment = 'ProcessingPayment',
    ReadyToShip = 'ReadyToShip',
    Shipped = 'Shipped',
    PaidToAccount = 'PaidToAccount',
    Canceled = 'Canceled',
    Credited = 'Credited',
    Expired = 'Expired',
    Denied = 'Denied',
}

export enum CustomerType
{
    Person = 'Person',
    Business = 'Business',
}

export class UserAccessKeys extends BaseModel
{
    // @Required()
    public CompanyId: string;

    // @Required()
    public AccessKeyTypeId: number;

    // @Required()
    public Value: string;

    // @Required()
    public CustomerId: string;

    public Description: string;
    // @Required()
    public Id: string;

    public constructor(init?: Partial<UserAccessKeys>) { super(init); (Object as any).assign(this, init); }
}

export class ExternalReference extends BaseModel
{
    // @Required()
    public CompanyId: string;

    // @Required()
    public Id: string;

    // @Required()
    public OwnerId: string;

    // @Required()
    public ReferenceType: string;

    public ExternalData: string;
    public CreatedBy: string;
    // @Required()
    public Updated: string;

    // @Required()
    public Created: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<ExternalReference>) { super(init); (Object as any).assign(this, init); }
}

export enum CompanyStatus
{
    Registered = 1,
    AwaitingApproval = 2,
    Approved = 3,
    Inactive = 4,
    ClosedDown = 5,
    NotApproved = 6,
}

export class ScheduleView extends BaseModel
{
    // @Required()
    public Name: string;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<ScheduleView>) { super(init); (Object as any).assign(this, init); }
}

export class WeekNumberSetting extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<WeekNumberSetting>) { super(init); (Object as any).assign(this, init); }
}

export class BookingTemplate extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public UsedByApplication: string;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<BookingTemplate>) { super(init); (Object as any).assign(this, init); }
}

export class CalendarType extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public Active: boolean;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<CalendarType>) { super(init); (Object as any).assign(this, init); }
}

export class FreeSpotTexts extends BaseModel
{
    // @Required()
    public TextSingular: string;

    // @Required()
    public TextPlural: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<FreeSpotTexts>) { super(init); (Object as any).assign(this, init); }
}

export class BookingStatusOptions
{
    public Id: number;
    public Name: string;
    public Description: string;

    public constructor(init?: Partial<BookingStatusOptions>) { (Object as any).assign(this, init); }
}

export class BookingSettings extends BaseModel
{
    // @References("typeof(BokaMera.API.ServiceModel.Db.FreeSpotTexts)")
    public FreeSpotTextsId: number;

    // @Ignore()
    public SendEmailConfirmation: boolean;

    // @Ignore()
    public ScheduleViewOptions: ScheduleView[];

    // @Ignore()
    public WeekNumberSettingOptions: WeekNumberSetting[];

    // @Ignore()
    public BookingTemplateOptions: BookingTemplate[];

    // @Ignore()
    public CalendarTypeOptions: CalendarType[];

    // @Ignore()
    public FreeSpotTextOptions: FreeSpotTexts[];

    // @Ignore()
    public BookingStatusOptions: BookingStatusOptions[];

    public FreeSpotTextsInfo: FreeSpotTexts;
    // @Ignore()
    public FreeSpotsTextSingular: string;

    // @Ignore()
    public FreeSpotsTextPlural: string;

    // @Required()
    public BookingStatusId: number;

    // @Required()
    public ScheduleViewId: number;

    // @Required()
    public BookingTemplateId: number;

    // @Required()
    public CalendarTypeId: number;

    // @Required()
    public AllowBookingOnUnbookedTimes: boolean;

    // @Required()
    public SendEmailReminder: boolean;

    // @Required()
    public SendSmsReminder: boolean;

    // @Required()
    public SendSmsConfirmation: boolean;

    // @Required()
    public EmailReminderTime: number;

    // @Required()
    public SmsReminderTime: number;

    // @Required()
    public MaxActiveBookings: number;

    // @Required()
    public SendNotifications: boolean;

    public SendNotificationsEmail: string;
    // @Required()
    public EnableMobileApp: boolean;

    public ScheduleStartTime?: string;
    public ScheduleEndTime?: string;
    public ReceiptTemplate: string;
    // @Required()
    public ScheduleTimeSlotMinutes: number;

    // @Required()
    public ShowFreeTimesLeft: boolean;

    // @Required()
    public EnableICalGroupBookings: boolean;

    public AgreementTemplate: string;
    // @Required()
    public ScheduleShowTimeExeptions: boolean;

    // @Required()
    public EnableBookingsOnSameTime: boolean;

    // @Required()
    public ShowWeekNumberSettingId: number;

    // @Required()
    public EnableShowBookedTimes: boolean;

    // @Required()
    public EnableSendFollowUpMessage: boolean;

    // @Required()
    public FollowUpMessageTime: number;

    public MessageText: string;
    // @Required()
    public ScheduleGroupResources: boolean;

    // @Required()
    public BookSpotUserResponseMinutes: number;

    // @Required()
    public IsBookSpotDirectly: boolean;

    // @Required()
    public BookSpotDirectlyTimeLeftMinutes: number;

    // @Required()
    public SendEmailNotificationQueue: boolean;

    // @Required()
    public SendSMSNotificationQueue: boolean;

    // @Required()
    public SchedulerDisableHorizontalScrolling: boolean;

    // @Required()
    public BookOnlyOnExistingCustomers: boolean;

    // @Required()
    public AutoGenerateUniquePinCode: boolean;

    // @Required()
    public WeightedPrices: boolean;

    public ModifiedDate?: string;
    // @Required()
    public AutoCreateUserProfile: boolean;

    public ShowMultipleResourcesAsOne: boolean;
    public ShowMultiDayAsTime: boolean;
    // @Required()
    public Id: string;

    public constructor(init?: Partial<BookingSettings>) { super(init); (Object as any).assign(this, init); }
}

export class CompanyType extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<CompanyType>) { super(init); (Object as any).assign(this, init); }
}

export class CodeLockSystem extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Supplier: string;

    public LogoType: string;
    // @Required()
    public Description: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<CodeLockSystem>) { super(init); (Object as any).assign(this, init); }
}

export class CodeLockSetting extends BaseModel
{
    // @Ignore()
    public CodeLockSystemOptions: CodeLockSystem[];

    // @Required()
    public Active: boolean;

    // @Required()
    public CodeLockSystemsId: number;

    // @Required()
    public ValidBeforeMinutes: number;

    // @Required()
    public ValidAfterMinutes: number;

    // @Required()
    public DeleteOldBySchedule: boolean;

    // @Required()
    public Created: string;

    // @Required()
    public Updated: string;

    public ModifiedDate?: string;
    // @Required()
    public SendEmailNotification: boolean;

    // @Required()
    public SendSMSNotification: boolean;

    // @Required()
    public EmailNotificationTime: number;

    // @Required()
    public SMSNotificationTime: number;

    // @Required()
    public Id: string;

    public constructor(init?: Partial<CodeLockSetting>) { super(init); (Object as any).assign(this, init); }
}

export class AdminPaymentOptions extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<AdminPaymentOptions>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentProviders extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public Category: string;

    public Url: string;
    // @Required()
    public Active: boolean;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<PaymentProviders>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentSetting extends BaseModel
{
    public AdminPaymentOption: AdminPaymentOptions;
    // @Ignore()
    public AdminPaymentOptions: AdminPaymentOptions[];

    // @Ignore()
    public PaymentProviderOptions: PaymentProviders[];

    // @Required()
    public Enabled: boolean;

    // @Required()
    public InvoiceFee: number;

    // @Required()
    public AllowCreditCardPayment: boolean;

    // @Required()
    public AllowInvoicePayment: boolean;

    // @Required()
    public AllowBankPayment: boolean;

    // @Required()
    public GuaranteeOffered: boolean;

    // @Required()
    public RefundOnCancelBooking: boolean;

    public DefaultPaymentOptionId?: number;
    // @Required()
    public PaymentProviderId: number;

    // @Required()
    public SendPaymentRequestDirectly: boolean;

    public ModifiedDate?: string;
    // @Required()
    public Id: string;

    public constructor(init?: Partial<PaymentSetting>) { super(init); (Object as any).assign(this, init); }
}

export class LanguageResponse
{
    public Id: string;
    public Name: string;

    public constructor(init?: Partial<LanguageResponse>) { (Object as any).assign(this, init); }
}

export class CompanySetting extends BaseModel
{
    // @Ignore()
    public Languages: LanguageResponse[];

    // @Required()
    public Active: boolean;

    public InactiveMessage: string;
    // @Required()
    public Searchable: boolean;

    public GATrackingId: string;
    public FacebookPixelId: string;
    // @Required()
    public MultiLanguage: boolean;

    // @Required()
    public EnableAPITranslation: boolean;

    // @Required()
    public DefaultLanguage: string;

    public ModifiedDate?: string;
    public GTMTrackingId: string;
    // @Required()
    public ShowOnMarketPlace: boolean;

    public GoogleAdsConversionId: string;
    public LinkedinTagId: string;
    public GoogleAdsConversionLabel: string;
    public SendCustomerInformationToExternalProviders: boolean;
    // @Required()
    public Id: string;

    public constructor(init?: Partial<CompanySetting>) { super(init); (Object as any).assign(this, init); }
}

export class WidgetServiceLayouts extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public Code: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<WidgetServiceLayouts>) { super(init); (Object as any).assign(this, init); }
}

export class WidgetTimeLayouts extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public Code: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<WidgetTimeLayouts>) { super(init); (Object as any).assign(this, init); }
}

export class WidgetBookingLayouts extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public Code: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<WidgetBookingLayouts>) { super(init); (Object as any).assign(this, init); }
}

export class WidgetBookingMethods extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public Code: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<WidgetBookingMethods>) { super(init); (Object as any).assign(this, init); }
}

export class HomepageWidgetSetting extends BaseModel
{
    // @Ignore()
    public WidgetServiceLayoutOptions: WidgetServiceLayouts[];

    // @Ignore()
    public WidgetTimeLayoutOptions: WidgetTimeLayouts[];

    // @Ignore()
    public WidgetBookingLayoutOptions: WidgetBookingLayouts[];

    // @Ignore()
    public WidgetBookingMethodOptions: WidgetBookingMethods[];

    // @Required()
    public ServiceLayoutId: number;

    // @Required()
    public TimeLayoutId: number;

    // @Required()
    public BookingLayoutId: number;

    // @Required()
    public PrimaryColor: string;

    // @Required()
    public ShowServiceImage: boolean;

    // @Required()
    public ShowNextAvailableTime: boolean;

    // @Required()
    public ShowEndTime: boolean;

    public BookedTimeSlotText: string;
    // @Required()
    public DarkTheme: boolean;

    // @Required()
    public ShowRebateCodeField: boolean;

    public ModifiedDate?: string;
    // @Required()
    public EnableCreateAccount: boolean;

    // @Required()
    public EnableLogin: boolean;

    // @Required()
    public EnableDirectBooking: boolean;

    // @Required()
    public EnableFacebookLogin: boolean;

    // @Required()
    public ShowSubscribeToNewsletter: boolean;

    // @Required()
    public Id: string;

    public constructor(init?: Partial<HomepageWidgetSetting>) { super(init); (Object as any).assign(this, init); }
}

export class HomepageTemplate extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    public ImageUrl: string;
    // @Required()
    public Premium: boolean;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<HomepageTemplate>) { super(init); (Object as any).assign(this, init); }
}

export class HeroSectionStyle extends BaseModel
{
    // @Required()
    public Name: string;

    public Description: string;
    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<HeroSectionStyle>) { super(init); (Object as any).assign(this, init); }
}

export class HomepageSetting extends BaseModel implements ICompany
{
    // @Ignore()
    public HomepageTemplateOptions: HomepageTemplate[];

    // @Ignore()
    public HomepageHeroSectionStyleOptions: HeroSectionStyle[];

    // @Ignore()
    public CompanyId?: string;

    public WelcomePageHeading: string;
    public WelcomePageBody: string;
    public AboutUsPageHeading: string;
    public AboutUsPageBody: string;
    // @Required()
    public HomePageTemplateId: number;

    public ImageUrl: string;
    // @Required()
    public Updated: string;

    // @Required()
    public Created: string;

    public HomepageHeading: string;
    // @Required()
    public HeroSectionStyleId: number;

    public ModifiedDate?: string;
    // @Required()
    public ShowRating: boolean;

    // @Required()
    public EnableHomepage: boolean;

    // @Required()
    public Id: string;

    public constructor(init?: Partial<HomepageSetting>) { super(init); (Object as any).assign(this, init); }
}

export class AverageRatingScore
{
    public AverageScore: number;
    public Score1Count: number;
    public Score2Count: number;
    public Score3Count: number;
    public Score4Count: number;
    public Score5Count: number;
    public Count: number;

    public constructor(init?: Partial<AverageRatingScore>) { (Object as any).assign(this, init); }
}

export class Review extends BaseModel
{
    public ReviewId: string;
    // @Required()
    public CompanyId: string;

    // @Required()
    public Title: string;

    // @Required()
    public Description: string;

    // @Required()
    public Author: string;

    // @Required()
    public Status: number;

    // @Required()
    public Created: string;

    // @Required()
    public Updated: string;

    public ModifiedDate?: string;
    public ReviewAnswer: string;

    public constructor(init?: Partial<Review>) { super(init); (Object as any).assign(this, init); }
}

export class Rating extends BaseModel
{
    public ReviewId?: string;
    public Review: Review;
    // @Required()
    public CompanyId: string;

    // @Required()
    public BookingId: number;

    // @Required()
    public RatingScore: number;

    // @Required()
    public Status: number;

    // @Required()
    public Created: string;

    // @Required()
    public Updated: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<Rating>) { super(init); (Object as any).assign(this, init); }
}

export class LicenseTypeItem extends BaseModel
{
    // @Ignore()
    public Name: string;

    // @Ignore()
    public LicenseType: LicenseType;

    // @Required()
    public LicenseTypesId: number;

    // @Required()
    public LicenseItemsId: number;

    // @Required()
    public NumberOfItems: number;

    public Id: number;
    public ModifiedDate?: string;

    public constructor(init?: Partial<LicenseTypeItem>) { super(init); (Object as any).assign(this, init); }
}

export class Country extends BaseModel
{
    // @References("typeof(BokaMera.API.ServiceModel.Db.Currency)")
    public CurrencyId: string;

    public CurrencyInfo: Currency;
    // @Required()
    public Name: string;

    public Culture: string;
    public TimeZone: string;
    public ModifiedDate?: string;
    // @Required()
    public Id: string;

    public constructor(init?: Partial<Country>) { super(init); (Object as any).assign(this, init); }
}

export class LicensePrice extends BaseModel
{
    // @Ignore()
    public Country: Country;

    // @Ignore()
    public MonthlyPayment: boolean;

    // @Required()
    public LicenseTypeId: number;

    // @Required()
    public CountryId: string;

    // @Required()
    public Price: number;

    public ModifiedDate?: string;

    public constructor(init?: Partial<LicensePrice>) { super(init); (Object as any).assign(this, init); }
}

export class LicenseType extends BaseModel
{
    // @Ignore()
    public LicenseItems: IList<LicenseTypeItem>;

    // @Ignore()
    public Prices: IList<LicensePrice>;

    // @Ignore()
    public PeriodOfNoticeDays: number;

    // @Ignore()
    public NextLicenseOption: LicenseType;

    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public ExtraLicenseOption: boolean;

    public ModifiedDate?: string;
    public Active: boolean;
    public Id: number;

    public constructor(init?: Partial<LicenseType>) { super(init); (Object as any).assign(this, init); }
}

export class License extends BaseModel
{
    public Type: LicenseType;
    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public TypeId: number;

    // @Required()
    public ValidFrom: string;

    // @Required()
    public ValidTo: string;

    // @Required()
    public Active: boolean;

    // @Required()
    public Updated: string;

    // @Required()
    public Created: string;

    public ModifiedDate?: string;
    public MetaData: string;

    public constructor(init?: Partial<License>) { super(init); (Object as any).assign(this, init); }
}

export class CompanyCategory extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Header: string;

    // @Required()
    public Description: string;

    public ImageUrl: string;
    // @Required()
    public Active: boolean;

    public SortOrder?: number;
    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<CompanyCategory>) { super(init); (Object as any).assign(this, init); }
}

export class Company extends BaseModel
{
    // @Ignore()
    public Status: CompanyStatus;

    // @Ignore()
    public Active: boolean;

    // @Ignore()
    public CustomerCustomFieldsConfig: IList<CustomFieldConfig>;

    // @Ignore()
    public BookingAgreements: string;

    // @Ignore()
    public BookingSettings: BookingSettings;

    // @Ignore()
    public CompanyType: CompanyType;

    // @Ignore()
    public CodeLockSettings: CodeLockSetting;

    // @Ignore()
    public PaymentSettings: PaymentSetting;

    // @Ignore()
    public Settings: CompanySetting;

    // @Ignore()
    public WidgetSettings: HomepageWidgetSetting;

    // @Ignore()
    public HomepageSettings: HomepageSetting;

    // @Ignore()
    public RatingScore: AverageRatingScore;

    // @Ignore()
    public Ratings: Rating[];

    // @Ignore()
    public Distance?: number;

    // @Ignore()
    public Licenses: License[];

    // @Ignore()
    public ActiveLicenses: License[];

    // @Ignore()
    public CurrentLicense: License;

    // @Ignore()
    public IsFreeAccount: boolean;

    // @Ignore()
    public DefaultLanguage: CultureInfo;

    public Category: CompanyCategory;
    // @Ignore()
    public Lat: number;

    // @Ignore()
    public Lon: number;

    // @Ignore()
    public IsFavorite: boolean;

    // @Ignore()
    public ExternalReferences: IList<ExternalReference>;

    // @Required()
    public OrganisationNumber: string;

    // @Required()
    public StatusId: number;

    // @Required()
    public CategoryId: number;

    // @Required()
    public SitePath: string;

    // @Required()
    public Name: string;

    public Street1: string;
    public Street2: string;
    public ZipCode: string;
    public City: string;
    public OpeningHours: string;
    public FaxNumber: string;
    // @Required()
    public Email: string;

    public Phone: string;
    public Details: string;
    public LogoType: string;
    // @Required()
    public ApprovedByAdmin: boolean;

    // @Required()
    public Updated: string;

    // @Required()
    public Created: string;

    public IpAddress: string;
    public Homepage: string;
    public DomainName: string;
    // @Required()
    public CountryId: string;

    // @Required()
    public CompanyOwnerId: number;

    public TypeId?: number;
    public ModifiedDate?: string;
    // @Required()
    public Id: string;

    public constructor(init?: Partial<Company>) { super(init); (Object as any).assign(this, init); }
}

export class CustomerComment extends BaseModel
{
    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public CustomerId: string;

    // @Required()
    public Comments: string;

    // @Required()
    public Updated: string;

    // @Required()
    public Created: string;

    public ImageUrl: string;
    public ModifiedDate?: string;

    public constructor(init?: Partial<CustomerComment>) { super(init); (Object as any).assign(this, init); }
}

export class Customer extends BaseModel implements IUser, ICustomFieldTable
{
    public IdentityId: number;
    public Id: string;
    // @Ignore()
    public CustomerId: string;

    // @Ignore()
    public AccessKeys: IList<UserAccessKeys>;

    public Email: string;
    // @Ignore()
    public ExternalReferences: IList<ExternalReference>;

    // @Ignore()
    public Company: Company;

    // @Ignore()
    public CustomFieldsConfig: IList<CustomFieldConfig>;

    // @Ignore()
    public CustomFieldsData: IList<CustomFieldDataResponse>;

    // @Ignore()
    public Comments: IList<CustomerComment>;

    // @Ignore()
    public RebateCodes: IList<RebateCode>;

    public Firstname: string;
    // @Ignore()
    public ImageUrl: string;

    // @Required()
    public Active: boolean;

    public FacebookUsername: string;
    // @Required()
    public Updated: string;

    // @Required()
    public Created: string;

    public IpAddress: string;
    public ModifiedDate?: string;
    public TextField1: string;
    public TextField2: string;
    public TextField3: string;
    public TextField4: string;
    public TextField5: string;
    public TextField6: string;
    public TextField7: string;
    public TextField8: string;
    public TextField9: string;
    public TextField10: string;
    public TextField11: string;
    public TextField12: string;
    public TextField13: string;
    public TextField14: string;
    public TextField15: string;
    public TextField16: string;
    public TextField17: string;
    public TextField18: string;
    public TextField19: string;
    public TextField20: string;
    public UserId: string;
    public Lastname: string;
    public Phone: string;
    public CorporateIdentityNumber: string;
    public InvoiceAddress1: string;
    public InvoiceAddress2: string;
    public InvoiceCity: string;
    public InvoicePostalCode: string;
    public InvoiceCountryCode: string;
    // @Required()
    public CompanyId: string;

    public SubscribedToNewsletter: boolean;

    public constructor(init?: Partial<Customer>) { super(init); (Object as any).assign(this, init); }
}

export enum ItemType
{
    Physical = 'Physical',
    Service = 'Service',
    Fee = 'Fee',
    Discount = 'Discount',
}

export class Item
{
    public ItemId: string;
    public DiscountRate: number;
    public Ean: string;
    public ImageUri: string;
    public Name: string;
    public Quantity: number;
    public Reference: string;
    public TaxRate: number;
    public TotalPriceExcludingTax: number;
    public TotalPriceIncludingTax: number;
    public TotalTaxAmount: number;
    public CreditedAmount: number;
    public Type: ItemType;
    public UnitPrice: number;
    public Uri: string;

    public constructor(init?: Partial<Item>) { (Object as any).assign(this, init); }
}

export class Order
{
    public Currency: Currency;
    public TotalFeeExcludingTax: number;
    public TotalFeeIncludingTax: number;
    public TotalPriceExcludingTax: number;
    public TotalPriceIncludingTax: number;
    public TotalTaxAmount: number;
    public TotalCreditedAmount: number;
    public Items: IList<Item>;

    public constructor(init?: Partial<Order>) { (Object as any).assign(this, init); }
}

export class Merchant
{
    public CheckoutUri: string;
    public ConfirmationUri: string;
    public NotificationUri: string;
    public ValidationUri: string;
    public TermsUri: string;
    public Reference: string;
    public PartnerId: string;

    public constructor(init?: Partial<Merchant>) { (Object as any).assign(this, init); }
}

export enum ColorScheme
{
    White = 'White',
    Blue = 'Blue',
    Gray = 'Gray',
    GrayTextLogos = 'GrayTextLogos',
    BlueTextLogos = 'BlueTextLogos',
    WhiteTextLogos = 'WhiteTextLogos',
    WhiteNoFooter = 'WhiteNoFooter',
    GrayNoFooter = 'GrayNoFooter',
    BlueNoFooter = 'BlueNoFooter',
}

export class Gui
{
    public ColorScheme: ColorScheme;
    public Locale: string;
    public RequestPhone: boolean;
    public PhoneOptional: boolean;

    public constructor(init?: Partial<Gui>) { (Object as any).assign(this, init); }
}

export class History
{
    public Created?: string;
    public ReadyToPay?: string;
    public ReadyToShip?: string;
    public Shipped?: string;
    public PaidToAccount?: string;
    public Canceled?: string;
    public Expired?: string;
    public Denied?: string;

    public constructor(init?: Partial<History>) { (Object as any).assign(this, init); }
}

export class Payson2CheckoutResponse
{
    public Id: string;
    public ExpirationTime?: string;
    public Snippet: string;
    public Status: Payson2CheckoutStatus;
    public Customer: Customer;
    public Order: Order;
    public Merchant: Merchant;
    public Gui: Gui;
    public History: History;
    public PurchaseId?: number;

    public constructor(init?: Partial<Payson2CheckoutResponse>) { (Object as any).assign(this, init); }
}

export interface IPaysonPaymentCheckout1
{
}

export class PaymentLog extends BaseModel
{
    // @References("typeof(BokaMera.API.ServiceModel.Db.Currency)")
    public CurrencyId: string;

    public CurrencyInfo: Currency;
    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public InternalReferenceId: string;

    // @Required()
    public ArticleTypeId: number;

    public PaymentReferenceId: string;
    public PaymentProviderId?: number;
    public OrderItemReferenceId: string;
    public Amount?: number;
    public VAT?: number;
    public AmountCredited?: number;
    public Comments: string;
    // @Required()
    public Created: string;

    // @Required()
    public Updated: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<PaymentLog>) { super(init); (Object as any).assign(this, init); }
}

export class PayableEntity extends BaseModel implements IPayableEntity
{
    // @Ignore()
    public DbFactory: IDbConnectionFactory;

    // @Ignore()
    public QvicklyPaymentManager: IBokameraPaymentManager<InitCheckoutRequestBody, QvicklyCheckoutResponse, QvicklyPaymentResponse>;

    // @Ignore()
    public Payson2PaymentManager: IBokameraPaymentManager<Payson2CheckoutResponse, Payson2CheckoutResponse, Payson2CheckoutResponse>;

    // @Ignore()
    public PaysonPaymentCheckout1: IPaysonPaymentCheckout1;

    // @Ignore()
    public Logger: ILogger<PayableEntity>;

    // @Ignore()
    public InternalReferenceId: string;

    // @Ignore()
    public PaymentLog: PaymentLog[];

    public CompanyId: string;
    public PriceVat?: number;
    // @References("typeof(BokaMera.API.ServiceModel.Db.Currency)")
    public CurrencyId: string;

    // @Ignore()
    public Customer: Customer;

    // @Ignore()
    public Customers: Customer[];

    // @Ignore()
    public Company: Company;

    public constructor(init?: Partial<PayableEntity>) { super(init); (Object as any).assign(this, init); }
}

export class RebateCodeStatus extends BaseModel
{
    // @Required()
    public Name: string;

    public Description: string;
    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<RebateCodeStatus>) { super(init); (Object as any).assign(this, init); }
}

export class ArticleServiceRelation extends BaseModel
{
    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public ServiceId: number;

    // @Required()
    public ArticleId: number;

    public constructor(init?: Partial<ArticleServiceRelation>) { super(init); (Object as any).assign(this, init); }
}

export enum ArticleTypeEnum
{
    ServiceArticle = 1,
    StandAloneArticle = 2,
    RebateCodePunchTicketArticle = 3,
    RebateCodeGiftCardArticle = 4,
    RebateCodeValueCardArticle = 5,
}

export class Article extends BaseModel implements IBaseModelCreated, IBaseModelUpdated
{
    public Company: Company;
    public CurrencyInfo: Currency;
    public ArticleServiceRelations: ArticleServiceRelation[];
    // @Ignore()
    public ServiceIds: number[];

    // @Ignore()
    public ArticleType: ArticleTypeEnum;

    // @Ignore()
    public ArticleTypeName: string;

    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public Name: string;

    // @Required()
    public ArticleTypeId: number;

    public Description: string;
    public ImageUrl: string;
    // @Required()
    public Active: boolean;

    // @Required()
    public Amount: number;

    // @Required()
    public Price: number;

    // @Required()
    // @StringLength(50)
    public CurrencyId: string;

    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<Article>) { super(init); (Object as any).assign(this, init); }
}

export class RebateCodeDayOfWeekRelation extends BaseModel
{
    // @Ignore()
    public DayOfWeek: BokaMeraDayOfWeek;

    // @Required()
    public DayOfWeekId: number;

    // @Required()
    public RebateCodeId: number;

    // @Required()
    public CompanyId: string;

    public Id: number;
    public ModifiedDate?: string;

    public constructor(init?: Partial<RebateCodeDayOfWeekRelation>) { super(init); (Object as any).assign(this, init); }
}

export class RebateCodeServiceRelation extends BaseModel
{
    // @Required()
    public CompanyId: string;

    // @Required()
    public ServiceId: number;

    // @Required()
    public RebateCodeId: number;

    public Id: number;
    public ModifiedDate?: string;

    public constructor(init?: Partial<RebateCodeServiceRelation>) { super(init); (Object as any).assign(this, init); }
}

export class RebateCodeBookingPriceRelation extends BaseModel
{
    // @Required()
    public CompanyId: string;

    // @Required()
    public PriceId: number;

    // @Required()
    public RebateCodeId: number;

    public Id: number;
    public ModifiedDate?: string;

    public constructor(init?: Partial<RebateCodeBookingPriceRelation>) { super(init); (Object as any).assign(this, init); }
}

export class RebateCodeCustomerRelation extends BaseModel
{
    // @Required()
    public CompanyId: string;

    // @Required()
    public CustomerId: string;

    // @Required()
    public RebateCodeId: number;

    public Id: number;
    public ModifiedDate?: string;
    public RebateCodeEmailSentToCustomer: boolean;
    public MessageToReceiver: string;
    public Buyer: boolean;

    public constructor(init?: Partial<RebateCodeCustomerRelation>) { super(init); (Object as any).assign(this, init); }
}

export class DaysOfWeek extends BaseModel
{
    // @Required()
    public DayOfWeek: string;

    // @Required()
    public DayOfWeekTranslation: string;

    public DayOfWeekActive?: boolean;
    public DayOfWeekSortOrder?: number;
    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<DaysOfWeek>) { super(init); (Object as any).assign(this, init); }
}

export class CalendarExport extends BaseModel
{
    // @Required()
    public CompanyId: string;

    // @Required()
    public BookingId: number;

    // @Required()
    public ExceptionId: number;

    public CalendarSync?: boolean;
    public CalendarId: string;
    public IsExceptionDeleted?: boolean;
    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<CalendarExport>) { super(init); (Object as any).assign(this, init); }
}

export class BookingLogEventType extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<BookingLogEventType>) { super(init); (Object as any).assign(this, init); }
}

export class BookingLog extends BaseModel
{
    // @References("typeof(BokaMera.API.ServiceModel.Db.BookingLogEventType)")
    public EventTypeId: number;

    public EventType: BookingLogEventType;
    // @Required()
    public CompanyId: string;

    // @Required()
    public BookingId: number;

    public Id: number;
    public Comments: string;
    public UserId: string;
    // @Required()
    public Created: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<BookingLog>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentDetails extends BaseModel implements IBaseModelCreated, IBaseModelUpdated
{
    // @Ignore()
    public QvicklyCheckoutSerialized: QvicklyCheckoutResponse;

    // @Ignore()
    public Payson2CheckoutSerialized: Payson2CheckoutResponse;

    // @Required()
    public CompanyId: string;

    // @Required()
    public InternalReferenceId: string;

    // @Required()
    public ArticleTypeId: number;

    // @Required()
    public ExternalResponseData: string;

    // @Required()
    public ExternalResponseReference: string;

    // @Required()
    public PaymentProviderId: number;

    // @Required()
    public CreatedDate: string;

    // @Required()
    public UpdatedDate: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<PaymentDetails>) { super(init); (Object as any).assign(this, init); }
}

export class BookingPrice extends BaseModel
{
    // @References("typeof(BokaMera.API.ServiceModel.Db.Currency)")
    public CurrencyId: string;

    public ServicePriceId?: number;
    public CurrencyInfo: Currency;
    // @Ignore()
    public PriceText: string;

    // @Ignore()
    public AppliedCodes: AppliedRebateCodes[];

    // @Ignore()
    public IsRebate: boolean;

    // @Required()
    public CompanyId: string;

    // @Required()
    public BookingId: number;

    // @Required()
    public Quantity: number;

    public Price?: number;
    public VAT?: number;
    public Category: string;
    // @Required()
    public Updated: string;

    // @Required()
    public Created: string;

    // @Required()
    public Invoiced: boolean;

    // @Required()
    public OccupiesSpot: boolean;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<BookingPrice>) { super(init); (Object as any).assign(this, init); }
}

export class BookingStatus extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public Color: string;

    // @Required()
    public Icon: string;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<BookingStatus>) { super(init); (Object as any).assign(this, init); }
}

export class BookedResource
{
    public Id: number;
    public Name: string;
    public Color: string;
    public ImageUrl: string;
    public Email: string;
    public MobilePhone: string;
    public AccessGroup: string;
    public EmailNotification: boolean;
    public SMSNotification: boolean;
    public EmailReminder: boolean;
    public SMSReminder: boolean;

    public constructor(init?: Partial<BookedResource>) { (Object as any).assign(this, init); }
}

export class BookedResourceType
{
    /** @description The resource type id */
    // @ApiMember(Description="The resource type id")
    public Id: number;

    /** @description The resource type name */
    // @ApiMember(Description="The resource type name")
    public Name: string;

    /** @description The resources inside resource type */
    // @ApiMember(Description="The resources inside resource type")
    public Resources: BookedResource[];

    public constructor(init?: Partial<BookedResourceType>) { (Object as any).assign(this, init); }
}

export class Booking extends PayableEntity implements IInterval, ICustomFieldTable, IBaseModelUpdated, IBaseModelCreated
{
    // @Ignore()
    public Service: Service;

    // @Ignore()
    public CalendarExport: CalendarExport;

    // @Ignore()
    public Log: BookingLog[];

    // @Ignore()
    public CheckoutLogs: PaymentDetails[];

    // @Ignore()
    public Prices: BookingPrice[];

    // @Ignore()
    public Status: BookingStatusEnum;

    // @Ignore()
    public IsReserved: boolean;

    // @Ignore()
    public StatusName: string;

    public CurrencyInfo: Currency;
    public BookingStatus: BookingStatus;
    // @Ignore()
    public TotalPrice?: number;

    // @Ignore()
    public TotalSpots?: number;

    // @Ignore()
    public Resources: IList<Resource>;

    // @Ignore()
    public ExternalReferences: IList<ExternalReference>;

    // @Ignore()
    public BookedResources: IList<BookedResourceType>;

    // @Ignore()
    public CustomFieldsConfig: IList<CustomFieldConfig>;

    // @Ignore()
    public CustomFieldsData: IList<CustomFieldDataResponse>;

    // @Ignore()
    public DeterministicId: string;

    // @Ignore()
    public Active: boolean;

    // @Ignore()
    public LastTimeToUnBook?: string;

    // @Ignore()
    public PriceMappings: PriceMapping[];

    // @Ignore()
    public InternalReferenceId: string;

    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    public Id: number;
    // @Required()
    public CustomerId: string;

    // @Required()
    public ServiceId: number;

    // @Required()
    public StatusId: number;

    public UnbookedOn?: string;
    public UnbookedComments: string;
    public BookedComments: string;
    // @Required()
    public BookedBy: string;

    public UnBookedBy: string;
    // @Required()
    public SendSmsReminder: boolean;

    // @Required()
    public SendEmailReminder: boolean;

    // @Required()
    public SendSmsConfirmation: boolean;

    public RebateCode: string;
    public Comments: string;
    public IpAddress: string;
    // @Required()
    public NumberOfBookedSpots: number;

    public CommentsToCustomer: string;
    public PaymentExpiration?: string;
    // @Required()
    public SendEmailConfirmation: boolean;

    public CancellationCode: string;
    public ModifiedDate?: string;
    public RatingCode: string;
    public TextField1: string;
    public TextField2: string;
    public TextField3: string;
    public TextField4: string;
    public TextField5: string;
    public TextField6: string;
    public TextField7: string;
    public TextField8: string;
    public TextField9: string;
    public TextField10: string;
    public TextField11: string;
    public TextField12: string;
    public TextField13: string;
    public TextField14: string;
    public TextField15: string;
    public TextField16: string;
    public TextField17: string;
    public TextField18: string;
    public TextField19: string;
    public TextField20: string;
    // @Required()
    public From: string;

    // @Required()
    public To: string;

    public constructor(init?: Partial<Booking>) { super(init); (Object as any).assign(this, init); }
}

export class RebateCodeTransaction extends BaseModel implements IBaseModelCreated, IBaseModelUpdated
{
    // @Ignore()
    public Booking: Booking;

    // @Ignore()
    public RebateCode: RebateCode;

    // @Ignore()
    public Customer: Customer;

    public Id: number;
    public CompanyId: string;
    public Note: string;
    // @Required()
    public RebateCodeId: number;

    // @Required()
    public Amount: number;

    // @Required()
    public Usage: number;

    public BookingId?: number;
    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    public constructor(init?: Partial<RebateCodeTransaction>) { super(init); (Object as any).assign(this, init); }
}

export class RebateCode extends PayableEntity
{
    // @References("typeof(BokaMera.API.ServiceModel.Db.RebateCodeType)")
    public RebateCodeTypeId: number;

    public RebateCodeTypeInfo: RebateCodeType;
    // @References("typeof(BokaMera.API.ServiceModel.Db.RebateCodeStatus)")
    public RebateCodeStatusId: number;

    public RebateCodeStatusInfo: RebateCodeStatus;
    // @Ignore()
    public Article: Article;

    // @Ignore()
    public Services: Service[];

    public RebateCodeDayOfWeekRelation: RebateCodeDayOfWeekRelation[];
    public RebateCodeServiceRelation: RebateCodeServiceRelation[];
    public RebateCodeBookingPriceRelation: RebateCodeBookingPriceRelation[];
    public RebateCodeCustomerRelation: RebateCodeCustomerRelation[];
    // @Ignore()
    public ServicesNames: string;

    // @Ignore()
    public DaysOfWeek: DaysOfWeek[];

    // @Ignore()
    public RebateCodeStatus: RebateCodeStatus;

    // @Ignore()
    public RebateCodeType: RebateCodeType;

    // @Ignore()
    public Transactions: RebateCodeTransaction[];

    // @Ignore()
    public RemainingAmount?: number;

    // @Ignore()
    public RemainingUsage?: number;

    // @Ignore()
    public CurrentNumberOfUsesPerCustomer: number;

    // @Ignore()
    public IsSpecificByDayOfWeek: boolean;

    // @Ignore()
    public Active: boolean;

    // @Ignore()
    public ActiveByStatus: boolean;

    // @Ignore()
    public RebateCodeCurrencySign: string;

    public CurrencyInfo: Currency;
    // @Ignore()
    public PaymentReceived: boolean;

    // @Ignore()
    public InternalReferenceId: string;

    // @Required()
    public ValidFrom: string;

    // @Required()
    public ValidTo: string;

    // @Required()
    public RebateCodeSign: string;

    // @Required()
    public RebateCodeValue: number;

    // @Required()
    public MaxNumberOfUses: number;

    // @Required()
    public MaxNumberOfUsesPerCustomer: number;

    // @Required()
    public NumberOfUsesUsed: number;

    public PersonalNote: string;
    // @Required()
    public CreatedBy: string;

    // @Required()
    public Created: string;

    // @Required()
    public UpdatedBy: string;

    // @Required()
    public UpdatedDate: string;

    // @Required()
    public FromTime: string;

    // @Required()
    public ToTime: string;

    public ModifiedDate?: string;
    public Id: number;
    public ArticleId?: number;

    public constructor(init?: Partial<RebateCode>) { super(init); (Object as any).assign(this, init); }
}

export class ServicePrice extends BaseModel implements IInterval
{
    // @References("typeof(BokaMera.API.ServiceModel.Db.Currency)")
    public CurrencyId: string;

    public CurrencyInfo: Currency;
    // @Ignore()
    public Service: Service;

    // @Ignore()
    public PriceMappings: PriceMapping[];

    // @Ignore()
    public isTimeSpecific: boolean;

    // @Ignore()
    public isDaysOfWeekSpecific: boolean;

    public DayOfWeeks: ServicePriceDayOfWeekRelation[];
    // @Ignore()
    public PriceBeforeRebate?: number;

    // @Ignore()
    public RebateCodesApplied: RebateCode[];

    // @Ignore()
    public PriceText: string;

    // @Ignore()
    public OverlappingPrices: ServicePrice[];

    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public ServiceId: number;

    public Price?: number;
    // @Required()
    public Updated: string;

    // @Required()
    public Created: string;

    // @Required()
    public FromTime: string;

    // @Required()
    public ToTime: string;

    // @Required()
    public VAT: number;

    public Category: string;
    public ModifiedDate?: string;
    // @Required()
    public From: string;

    // @Required()
    public To: string;

    // @Required()
    public CalculationTypeId: number;

    public constructor(init?: Partial<ServicePrice>) { super(init); (Object as any).assign(this, init); }
}

export class Service extends BaseModel implements ICustomFieldTable, IBaseModelCreated, IBaseModelUpdated
{
    // @Ignore()
    public ResourceTypes: ResourceType[];

    // @Ignore()
    public Resources: Resource[];

    // @Ignore()
    public TotalPrice: TotalPriceInformation;

    // @Ignore()
    public Prices: ServicePrice[];

    // @Ignore()
    public BookingStatusOptions: BookingStatusOptions[];

    // @Ignore()
    public IsGroupBooking: boolean;

    // @Ignore()
    public IsMultipleResource: boolean;

    // @Ignore()
    public Settings: BookingSettings;

    // @Ignore()
    public PaymentSetting: PaymentSetting;

    // @Ignore()
    public BookingCustomFieldsConfig: IList<CustomFieldConfig>;

    // @Ignore()
    public CustomerCustomFieldsConfig: IList<CustomFieldConfig>;

    // @Ignore()
    public CustomFieldsConfig: IList<CustomFieldConfig>;

    // @Ignore()
    public CustomFieldsData: IList<CustomFieldDataResponse>;

    // @Ignore()
    public Schedules: IList<ISchedule>;

    // @Ignore()
    public CustomerActiveBookings: IList<Booking>;

    // @Ignore()
    public ScheduleType: ScheduleType;

    // @Ignore()
    public LastTimeToUnbookThreshold: string;

    // @Ignore()
    public LastTimeToBookThreshold: string;

    // @Ignore()
    public RatingScore: AverageRatingScore;

    // @Ignore()
    public Ratings: Rating[];

    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    public Group: string;
    // @Required()
    public Active: boolean;

    // @Required()
    public SortOrder: number;

    // @Required()
    public PauseAfterBooking: number;

    // @Required()
    public UnbookBeforeDays: number;

    // @Required()
    public UnbookBeforeHours: number;

    // @Required()
    public UnbookBeforeMinutes: number;

    // @Required()
    public BookBeforeDays: number;

    // @Required()
    public BookBeforeHours: number;

    // @Required()
    public BookBeforeMinutes: number;

    public Duration?: number;
    public DurationTypeId: number;
    public MinDuration?: number;
    public MaxDuration?: number;
    public DurationInterval?: number;
    public TotalSpots?: number;
    public ImageUrl: string;
    // @Required()
    public ScheduleTypeId: number;

    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    // @Required()
    public OnlyVisibleByAdmin: boolean;

    // @Required()
    public MinNumberOfSpotsPerBooking: number;

    // @Required()
    public MaxNumberOfSpotsPerBooking: number;

    // @Required()
    public MinNumberOfResourcesToBook: number;

    // @Required()
    public MaxNumberOfResourcesToBook: number;

    // @Required()
    public IsPaymentEnabled: boolean;

    // @Required()
    public MaxPaymentTime: number;

    // @Required()
    public LockSpotsToBooking: boolean;

    // @Required()
    public EnableBookingQueue: boolean;

    public ModifiedDate?: string;
    // @Required()
    public BookingStatusId: number;

    // @Required()
    public EnableCodeLockSync: boolean;

    // @Required()
    public EnableCustomerManualPayment: boolean;

    public PriceViewTypeId?: number;
    public TextField1: string;
    public TextField2: string;
    public TextField3: string;
    public TextField4: string;
    public TextField5: string;
    public TextField6: string;
    public TextField7: string;
    public TextField8: string;
    public TextField9: string;
    public TextField10: string;
    public TextField11: string;
    public TextField12: string;
    public TextField13: string;
    public TextField14: string;
    public TextField15: string;
    public TextField16: string;
    public TextField17: string;
    public TextField18: string;
    public TextField19: string;
    public TextField20: string;

    public constructor(init?: Partial<Service>) { super(init); (Object as any).assign(this, init); }
}

export class CustomFieldServiceRelation extends BaseModel
{
    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public CustomFieldConfigId: number;

    // @Required()
    public ServiceId: number;

    public ModifiedDate?: string;

    public constructor(init?: Partial<CustomFieldServiceRelation>) { super(init); (Object as any).assign(this, init); }
}

export class CustomFieldConfig extends BaseModel
{
    // @Ignore()
    public Values: CustomFieldValue[];

    public CustomField: CustomField;
    // @Ignore()
    public RegEx: RegEx;

    // @Ignore()
    public Services: Service[];

    public CustomFieldServiceRelation: CustomFieldServiceRelation[];
    // @Required()
    public CompanyId: string;

    public Id: number;
    public GroupId?: number;
    // @Required()
    public FieldId: number;

    // @Required()
    public IconId: number;

    public RegExId?: number;
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public Datatype: string;

    // @Required()
    public MaxLength: number;

    // @Required()
    public IsPublic: boolean;

    // @Required()
    public IsHidden: boolean;

    // @Required()
    public IsMandatory: boolean;

    public DefaultValue: string;
    public RegExErrorMessage: string;
    public MandatoryErrorMessage: string;
    public Width?: number;
    // @Required()
    public MultipleLineText: boolean;

    public ModifiedDate?: string;

    public constructor(init?: Partial<CustomFieldConfig>) { super(init); (Object as any).assign(this, init); }
}

export class Resource extends BaseModel implements ICustomFieldTable, IBaseModelCreated, IBaseModelUpdated
{
    // @Ignore()
    public Priority: number;

    // @Ignore()
    public Schedules: IList<ISchedule>;

    // @Ignore()
    public Exceptions: IList<ITimeException>;

    // @Ignore()
    public Bookings: IList<IBookedTime>;

    // @Ignore()
    public CustomFieldsConfig: IList<CustomFieldConfig>;

    // @Ignore()
    public CustomFieldsData: IList<CustomFieldDataResponse>;

    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public Name: string;

    // @Required()
    public Active: boolean;

    public Description: string;
    public ImageUrl: string;
    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    // @Required()
    public Color: string;

    public Email: string;
    public MobilePhone: string;
    public EmailNotification?: boolean;
    public SMSNotification?: boolean;
    // @Required()
    public SendSMSReminder: boolean;

    // @Required()
    public SendEmailReminder: boolean;

    public ModifiedDate?: string;
    public AccessGroup: string;
    public TextField1: string;
    public TextField2: string;
    public TextField3: string;
    public TextField4: string;
    public TextField5: string;
    public TextField6: string;
    public TextField7: string;
    public TextField8: string;
    public TextField9: string;
    public TextField10: string;
    public TextField11: string;
    public TextField12: string;
    public TextField13: string;
    public TextField14: string;
    public TextField15: string;
    public TextField16: string;
    public TextField17: string;
    public TextField18: string;
    public TextField19: string;
    public TextField20: string;

    public constructor(init?: Partial<Resource>) { super(init); (Object as any).assign(this, init); }
}

export interface ISchedule
{
    Resources: IList<Resource>;
    Type: ScheduleType;
    Active: boolean;
    IsResourceSpecific: boolean;
}

export class ServiceSchedules
{
    public ScheduleType: ScheduleType;
    public RecurringSchedules: ISchedule[];
    public DateSchedules: ISchedule[];

    public constructor(init?: Partial<ServiceSchedules>) { (Object as any).assign(this, init); }
}

export class CompanyRatingSummary
{
    /** @description The average rating score */
    // @ApiMember(Description="The average rating score")
    public AverageScore: number;

    /** @description The number of ratings of score 1 */
    // @ApiMember(Description="The number of ratings of score 1")
    public RatingScore1Count: number;

    /** @description The number of ratings of score 2 */
    // @ApiMember(Description="The number of ratings of score 2")
    public RatingScore2Count: number;

    /** @description The number of ratings of score 3 */
    // @ApiMember(Description="The number of ratings of score 3")
    public RatingScore3Count: number;

    /** @description The number of ratings of score 4 */
    // @ApiMember(Description="The number of ratings of score 4")
    public RaingScore4Count: number;

    /** @description The number of ratings of score 5 */
    // @ApiMember(Description="The number of ratings of score 5")
    public RatingScore5Count: number;

    /** @description The number of ratings */
    // @ApiMember(Description="The number of ratings")
    public Count: number;

    public constructor(init?: Partial<CompanyRatingSummary>) { (Object as any).assign(this, init); }
}

export class RatingReviewResponse
{
    /** @description The title for the review */
    // @ApiMember(Description="The title for the review")
    public Title: string;

    /** @description The description for the review */
    // @ApiMember(Description="The description for the review")
    public Description: string;

    /** @description The rating score */
    // @ApiMember(Description="The rating score")
    public RatingScore: number;

    /** @description The review author */
    // @ApiMember(Description="The review author")
    public Author: string;

    /** @description The created date */
    // @ApiMember(Description="The created date")
    public Created: string;

    /** @description The review answer from the company */
    // @ApiMember(Description="The review answer from the company")
    public ReviewAnswer: string;

    public constructor(init?: Partial<RatingReviewResponse>) { (Object as any).assign(this, init); }
}

export class ServiceResourceTypeResource
{
    /** @description The resource id */
    // @ApiMember(Description="The resource id")
    public Id: number;

    /** @description The resource name */
    // @ApiMember(Description="The resource name")
    public Name: string;

    /** @description The resource description */
    // @ApiMember(Description="The resource description")
    public Description: string;

    /** @description The resource email */
    // @ApiMember(Description="The resource email")
    public Email: string;

    /** @description The resource phone */
    // @ApiMember(Description="The resource phone")
    public Phone: string;

    /** @description The resource color */
    // @ApiMember(Description="The resource color")
    public Color: string;

    /** @description The resource image */
    // @ApiMember(Description="The resource image")
    public ImageUrl: string;

    /** @description The priority of the resource */
    // @ApiMember(Description="The priority of the resource")
    public Priority: number;

    /** @description If the resource want to receive email notifications */
    // @ApiMember(Description="If the resource want to receive email notifications")
    public EmailNotification: boolean;

    /** @description If the resource want to receive sms notifications */
    // @ApiMember(Description="If the resource want to receive sms notifications")
    public SMSNotification: boolean;

    /** @description If the resource want to receive email reminders */
    // @ApiMember(Description="If the resource want to receive email reminders")
    public EmailReminder: boolean;

    /** @description If the resource want to receive sms reminders */
    // @ApiMember(Description="If the resource want to receive sms reminders")
    public SMSReminder: boolean;

    public constructor(init?: Partial<ServiceResourceTypeResource>) { (Object as any).assign(this, init); }
}

export class ServiceResourceTypeResponse
{
    /** @description The resourcetype id */
    // @ApiMember(Description="The resourcetype id")
    public Id: number;

    /** @description The resourcetype is selectable by customer */
    // @ApiMember(Description="The resourcetype is selectable by customer")
    public SelectableByUser: boolean;

    /** @description The resourcetype name */
    // @ApiMember(Description="The resourcetype name")
    public Name: string;

    /** @description The resourcetype description */
    // @ApiMember(Description="The resourcetype description")
    public Description: string;

    /** @description The resources in the resourcetype. Only shows active resources if not admin. */
    // @ApiMember(Description="The resources in the resourcetype. Only shows active resources if not admin.")
    public Resources: ServiceResourceTypeResource[];

    public constructor(init?: Partial<ServiceResourceTypeResponse>) { (Object as any).assign(this, init); }
}

export class ServiceQueryResponse
{
    public Id: number;
    public Name: string;
    public Description: string;
    public ImageUrl: string;
    public TotalSpots: number;
    /** @description If this setting is turned on the remaining spots (if Totalspots > 1) is locked from be booked by another customer. */
    // @ApiMember(Description="If this setting is turned on the remaining spots (if Totalspots > 1) is locked from be booked by another customer.")
    public LockSpotsToBooking?: boolean;

    public MinNumberOfSpotsPerBooking: number;
    public MaxNumberOfSpotsPerBooking: number;
    public MinNumberOfResourcesToBook: number;
    public MaxNumberOfResourcesToBook: number;
    public UnbookBeforeDays: number;
    public UnbookBeforeHours: number;
    public UnbookBeforeMinutes: number;
    /** @description What type of schedule is connected to the service.  RecurringSchedule = 1, DateSchedule = 2 */
    // @ApiMember(Description="What type of schedule is connected to the service.  RecurringSchedule = 1, DateSchedule = 2")
    public ScheduleType: ScheduleType;

    /** @description What type of schedule is connected to the service.  RecurringSchedule = 1, DateSchedule = 2 */
    // @ApiMember(Description="What type of schedule is connected to the service.  RecurringSchedule = 1, DateSchedule = 2")
    public ScheduleTypeId: number;

    public BookBeforeDays: number;
    public BookBeforeHours: number;
    public BookBeforeMinutes: number;
    public Group: string;
    public EnableBookingQueue: boolean;
    public EnableCodeLockSync: boolean;
    public EnableCustomerManualPayment: boolean;
    public SortOrder: number;
    public Active: boolean;
    public IsGroupBooking: boolean;
    public GroupBooking: GroupBookingSettings;
    public MultipleResource: MultipleResourceSettings;
    public IsPaymentEnabled: boolean;
    /** @description Maximum numbers of minutes the booking payment must be completed before automatically unbooked */
    // @ApiMember(Description="Maximum numbers of minutes the booking payment must be completed before automatically unbooked")
    public MaxPaymentTime: number;

    /** @description If the booking should be either 1 = Booked) or 3 = Reserved. Default is 1 = Booked. */
    // @ApiMember(Description="If the booking should be either 1 = Booked) or 3 = Reserved. Default is 1 = Booked.")
    public BookingStatusId: number;

    public OnlyVisibleByAdmin: boolean;
    public LengthInMinutes?: number;
    public DurationTypeId: number;
    public Duration?: number;
    public MinDuration?: number;
    public MaxDuration?: number;
    public DurationInterval?: number;
    public PauseAfterBooking: number;
    public CustomFields: CustomFieldConfigData[];
    public CustomFieldValues: CustomFieldDataResponse[];
    public BookingCustomFields: CustomFieldConfigData[];
    public CustomerCustomFields: CustomFieldConfigData[];
    /** @description The booking status options to choose from */
    // @ApiMember(Description="The booking status options to choose from")
    public BookingStatusOptions: BookingStatusOptionsResponse[];

    public Prices: ServicePriceResponse[];
    public Schedules: ServiceSchedules;
    public RatingSummary: CompanyRatingSummary;
    public Reviews: RatingReviewResponse[];
    public ResourceTypes: ServiceResourceTypeResponse[];
    public ResponseStatus: ResponseStatus;
    public PriceViewTypeId?: number;

    public constructor(init?: Partial<ServiceQueryResponse>) { (Object as any).assign(this, init); }
}

export class AddResourceTypeService implements ICompany
{
    /** @description The company id, if empty will use the company id for the user you are logged in with. */
    // @ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.")
    public CompanyId?: string;

    /** @description The resourcetype id */
    // @ApiMember(Description="The resourcetype id")
    public Id: number;

    /** @description If the resources within the resourcetype should be selectable by customer when creating a booking */
    // @ApiMember(Description="If the resources within the resourcetype should be selectable by customer when creating a booking")
    public SelectableByUser: boolean;

    public constructor(init?: Partial<AddResourceTypeService>) { (Object as any).assign(this, init); }
}

// @ValidateRequest(Validator="IsAuthenticated")
export class AddResourceTypeToService
{
    /** @description The company id */
    // @ApiMember(Description="The company id", IsRequired=true)
    public CompanyId: string;

    /** @description The service id */
    // @ApiMember(Description="The service id", IsRequired=true, ParameterType="path")
    public Id: number;

    /** @description The ResourceType(s) to be added */
    // @ApiMember(Description="The ResourceType(s) to be added")
    public ResourceTypes: AddResourceTypeService[];

    public constructor(init?: Partial<AddResourceTypeToService>) { (Object as any).assign(this, init); }
}

export class Currency extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public CurrencySign: string;

    // @Required()
    public Active: boolean;

    public ModifiedDate?: string;
    // @Required()
    public Id: string;

    public constructor(init?: Partial<Currency>) { super(init); (Object as any).assign(this, init); }
}

export interface IBokameraPaymentManager<TCreatedCheckoutResponse, TCheckoutResponse, TPaymentResponse>
{
}

export class QvicklyArticle
{
    public artnr: string;
    public title: string;
    public quantity: number;
    public aprice: number;
    public tax: number;
    public discount: number;
    public withouttax: number;
    public taxrate: number;

    public constructor(init?: Partial<QvicklyArticle>) { (Object as any).assign(this, init); }
}

export class Customer
{
    public City: string;
    public CountryCode: string;
    public IdentityNumber: string;
    public Email: string;
    public FirstName: string;
    public LastName: string;
    public Phone: string;
    public PostalCode: string;
    public Street: string;
    public Reference: string;
    public Type: CustomerType;

    public constructor(init?: Partial<Customer>) { (Object as any).assign(this, init); }
}

export interface ILogger<TCategoryName> extends ILogger
{
}

TypeScript AddResourceTypeToService DTOs

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

HTTP + XML

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

POST /services/{Id}/addresourcetype HTTP/1.1 
Host: api.bokamera.se 
Accept: application/xml
Content-Type: application/xml
Content-Length: length

<AddResourceTypeToService xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.API.ServiceModel.Dtos">
  <CompanyId>00000000-0000-0000-0000-000000000000</CompanyId>
  <Id>0</Id>
  <ResourceTypes>
    <AddResourceTypeService>
      <CompanyId>00000000-0000-0000-0000-000000000000</CompanyId>
      <Id>0</Id>
      <SelectableByUser>false</SelectableByUser>
    </AddResourceTypeService>
  </ResourceTypes>
</AddResourceTypeToService>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<ServiceQueryResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.API.ServiceModel.Dtos">
  <Active>false</Active>
  <BookBeforeDays>0</BookBeforeDays>
  <BookBeforeHours>0</BookBeforeHours>
  <BookBeforeMinutes>0</BookBeforeMinutes>
  <BookingCustomFields>
    <CustomFieldConfigData>
      <DataType>String</DataType>
      <DefaultValue>String</DefaultValue>
      <Description>String</Description>
      <Id>0</Id>
      <IsMandatory>false</IsMandatory>
      <MandatoryErrorMessage>String</MandatoryErrorMessage>
      <MaxLength>0</MaxLength>
      <MultipleLineText>false</MultipleLineText>
      <Name>String</Name>
      <RegEx>String</RegEx>
      <RegExErrorMessage>String</RegExErrorMessage>
      <Values>
        <CustomFieldValueResponse>
          <Value>String</Value>
        </CustomFieldValueResponse>
      </Values>
      <Width>0</Width>
    </CustomFieldConfigData>
  </BookingCustomFields>
  <BookingStatusId>0</BookingStatusId>
  <BookingStatusOptions>
    <BookingStatusOptionsResponse>
      <Description>String</Description>
      <Id>0</Id>
      <Name>String</Name>
    </BookingStatusOptionsResponse>
  </BookingStatusOptions>
  <CustomFieldValues>
    <CustomFieldDataResponse>
      <Column>String</Column>
      <DataType>String</DataType>
      <Description>String</Description>
      <Id>0</Id>
      <Name>String</Name>
      <Value>String</Value>
    </CustomFieldDataResponse>
  </CustomFieldValues>
  <CustomFields>
    <CustomFieldConfigData>
      <DataType>String</DataType>
      <DefaultValue>String</DefaultValue>
      <Description>String</Description>
      <Id>0</Id>
      <IsMandatory>false</IsMandatory>
      <MandatoryErrorMessage>String</MandatoryErrorMessage>
      <MaxLength>0</MaxLength>
      <MultipleLineText>false</MultipleLineText>
      <Name>String</Name>
      <RegEx>String</RegEx>
      <RegExErrorMessage>String</RegExErrorMessage>
      <Values>
        <CustomFieldValueResponse>
          <Value>String</Value>
        </CustomFieldValueResponse>
      </Values>
      <Width>0</Width>
    </CustomFieldConfigData>
  </CustomFields>
  <CustomerCustomFields>
    <CustomFieldConfigData>
      <DataType>String</DataType>
      <DefaultValue>String</DefaultValue>
      <Description>String</Description>
      <Id>0</Id>
      <IsMandatory>false</IsMandatory>
      <MandatoryErrorMessage>String</MandatoryErrorMessage>
      <MaxLength>0</MaxLength>
      <MultipleLineText>false</MultipleLineText>
      <Name>String</Name>
      <RegEx>String</RegEx>
      <RegExErrorMessage>String</RegExErrorMessage>
      <Values>
        <CustomFieldValueResponse>
          <Value>String</Value>
        </CustomFieldValueResponse>
      </Values>
      <Width>0</Width>
    </CustomFieldConfigData>
  </CustomerCustomFields>
  <Description>String</Description>
  <Duration>0</Duration>
  <DurationInterval>0</DurationInterval>
  <DurationTypeId>0</DurationTypeId>
  <EnableBookingQueue>false</EnableBookingQueue>
  <EnableCodeLockSync>false</EnableCodeLockSync>
  <EnableCustomerManualPayment>false</EnableCustomerManualPayment>
  <Group>String</Group>
  <GroupBooking>
    <Active>false</Active>
    <Max>0</Max>
    <Min>0</Min>
  </GroupBooking>
  <Id>0</Id>
  <ImageUrl i:nil="true" />
  <IsGroupBooking>false</IsGroupBooking>
  <IsPaymentEnabled>false</IsPaymentEnabled>
  <LengthInMinutes>0</LengthInMinutes>
  <LockSpotsToBooking>false</LockSpotsToBooking>
  <MaxDuration>0</MaxDuration>
  <MaxNumberOfResourcesToBook>0</MaxNumberOfResourcesToBook>
  <MaxNumberOfSpotsPerBooking>0</MaxNumberOfSpotsPerBooking>
  <MaxPaymentTime>0</MaxPaymentTime>
  <MinDuration>0</MinDuration>
  <MinNumberOfResourcesToBook>0</MinNumberOfResourcesToBook>
  <MinNumberOfSpotsPerBooking>0</MinNumberOfSpotsPerBooking>
  <MultipleResource>
    <Active>false</Active>
    <Max>0</Max>
    <Min>0</Min>
  </MultipleResource>
  <Name>String</Name>
  <OnlyVisibleByAdmin>false</OnlyVisibleByAdmin>
  <PauseAfterBooking>0</PauseAfterBooking>
  <PriceViewTypeId>0</PriceViewTypeId>
  <Prices>
    <ServicePriceResponse>
      <CalculationTypeId>0</CalculationTypeId>
      <Category>String</Category>
      <CompanyId>00000000-0000-0000-0000-000000000000</CompanyId>
      <CurrencyId>String</CurrencyId>
      <DaysOfWeek>
        <DayOfWeekDto>
          <DayOfWeek>String</DayOfWeek>
          <DayOfWeekId>0</DayOfWeekId>
          <DotNetDayOfWeekId>0</DotNetDayOfWeekId>
        </DayOfWeekDto>
      </DaysOfWeek>
      <From>0001-01-01T00:00:00</From>
      <FromTime>PT0S</FromTime>
      <Id>0</Id>
      <IsDaysOfWeekSpecific>false</IsDaysOfWeekSpecific>
      <IsTimeSpecific>false</IsTimeSpecific>
      <Price>0</Price>
      <PriceSign>String</PriceSign>
      <PriceText>String</PriceText>
      <Service>
        <Description>String</Description>
        <GroupBooking>
          <Active>false</Active>
          <Max>0</Max>
          <Min>0</Min>
        </GroupBooking>
        <Id>0</Id>
        <ImageUrl i:nil="true" />
        <IsGroupBooking>false</IsGroupBooking>
        <IsPaymentEnabled>false</IsPaymentEnabled>
        <LengthInMinutes>0</LengthInMinutes>
        <MaxNumberOfSpotsPerBooking>0</MaxNumberOfSpotsPerBooking>
        <MinNumberOfSpotsPerBooking>0</MinNumberOfSpotsPerBooking>
        <MultipleResource>
          <Active>false</Active>
          <Max>0</Max>
          <Min>0</Min>
        </MultipleResource>
        <Name>String</Name>
      </Service>
      <ServiceId>0</ServiceId>
      <To>0001-01-01T00:00:00</To>
      <ToTime>PT0S</ToTime>
      <VAT>0</VAT>
    </ServicePriceResponse>
  </Prices>
  <RatingSummary>
    <AverageScore>0</AverageScore>
    <Count>0</Count>
    <RaingScore4Count>0</RaingScore4Count>
    <RatingScore1Count>0</RatingScore1Count>
    <RatingScore2Count>0</RatingScore2Count>
    <RatingScore3Count>0</RatingScore3Count>
    <RatingScore5Count>0</RatingScore5Count>
  </RatingSummary>
  <ResourceTypes>
    <ServiceResourceTypeResponse>
      <Description>String</Description>
      <Id>0</Id>
      <Name>String</Name>
      <Resources>
        <ServiceResourceTypeResource>
          <Color>String</Color>
          <Description>String</Description>
          <Email>String</Email>
          <EmailNotification>false</EmailNotification>
          <EmailReminder>false</EmailReminder>
          <Id>0</Id>
          <ImageUrl i:nil="true" />
          <Name>String</Name>
          <Phone>String</Phone>
          <Priority>0</Priority>
          <SMSNotification>false</SMSNotification>
          <SMSReminder>false</SMSReminder>
        </ServiceResourceTypeResource>
      </Resources>
      <SelectableByUser>false</SelectableByUser>
    </ServiceResourceTypeResponse>
  </ResourceTypes>
  <ResponseStatus xmlns:d2p1="http://schemas.servicestack.net/types">
    <d2p1:ErrorCode>String</d2p1:ErrorCode>
    <d2p1:Message>String</d2p1:Message>
    <d2p1:StackTrace>String</d2p1:StackTrace>
    <d2p1:Errors>
      <d2p1:ResponseError>
        <d2p1:ErrorCode>String</d2p1:ErrorCode>
        <d2p1:FieldName>String</d2p1:FieldName>
        <d2p1:Message>String</d2p1:Message>
        <d2p1:Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
          <d5p1:KeyValueOfstringstring>
            <d5p1:Key>String</d5p1:Key>
            <d5p1:Value>String</d5p1:Value>
          </d5p1:KeyValueOfstringstring>
        </d2p1:Meta>
      </d2p1:ResponseError>
    </d2p1:Errors>
    <d2p1:Meta xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:KeyValueOfstringstring>
        <d3p1:Key>String</d3p1:Key>
        <d3p1:Value>String</d3p1:Value>
      </d3p1:KeyValueOfstringstring>
    </d2p1:Meta>
  </ResponseStatus>
  <Reviews>
    <RatingReviewResponse>
      <Author>String</Author>
      <Created>0001-01-01T00:00:00</Created>
      <Description>String</Description>
      <RatingScore>0</RatingScore>
      <ReviewAnswer>String</ReviewAnswer>
      <Title>String</Title>
    </RatingReviewResponse>
  </Reviews>
  <ScheduleType>NotDefined</ScheduleType>
  <ScheduleTypeId>0</ScheduleTypeId>
  <Schedules>
    <DateSchedules xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:anyType i:nil="true" />
    </DateSchedules>
    <RecurringSchedules xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:anyType i:nil="true" />
    </RecurringSchedules>
    <ScheduleType>NotDefined</ScheduleType>
  </Schedules>
  <SortOrder>0</SortOrder>
  <TotalSpots>0</TotalSpots>
  <UnbookBeforeDays>0</UnbookBeforeDays>
  <UnbookBeforeHours>0</UnbookBeforeHours>
  <UnbookBeforeMinutes>0</UnbookBeforeMinutes>
</ServiceQueryResponse>