BokaMera.API.Host

<back to all web services

TestRecurringSchedule

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
POST/schedules/recurring/testTest recurring scheduleTest recurring schedule, only administrators are allowed to test schedules.

export class ExceptionText
{
    public Reason: string;
    public ReasonPublic: string;

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

export class AvailableTimesSum implements IAvailableTime
{
    public From: string;
    public To: string;
    public Free: number;
    public FreeSpots: number;
    public ExceptionTexts: ExceptionText[];

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

export class AvailableTimesResponse
{
    public CompanyId: string;
    public ServiceId: number;
    public TimesFreeTextSingle: string;
    public TimesFreeTextMultiple: string;
    public Times: AvailableTimesSum[];

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

export class AddRecurringScheduleDate
{
    /** @description The date for the schedule opening (only date part is used here */
    // @ApiMember(Description="The date for the schedule opening (only date part is used here", IsRequired=true)
    public Date: string;

    /** @description The time for the schedule opening hours (starttime) */
    // @ApiMember(Description="The time for the schedule opening hours (starttime)", IsRequired=true)
    public StartTime: string;

    /** @description The time for the schedule opening hours (endtime) */
    // @ApiMember(Description="The time for the schedule opening hours (endtime)", IsRequired=true)
    public EndTime: string;

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

export class ScheduleException
{
    public StartTime: string;
    public EndTime: string;

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

export class AddScheduleService
{
    /** @description The service id */
    // @ApiMember(Description="The service id", IsRequired=true)
    public Id: number;

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

export class BaseModel
{

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

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

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

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 PriceId: 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 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 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 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 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 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 enum CustomerType
{
    Person = 'Person',
    Business = 'Business',
}

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 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 RebateCode extends BaseModel
{
    // @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: RebateCodeType;
    // @Ignore()
    public Services: Service[];

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

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

    // @Ignore()
    public RebateCodeStatus: RebateCodeStatus;

    // @Ignore()
    public RebateCodeType: RebateCodeType;

    // @Ignore()
    public CurrentNumberOfUsesPerCustomer: number;

    // @Ignore()
    public IsSpecificByDayOfWeek: boolean;

    // @Ignore()
    public Active: boolean;

    public CompanyId: 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 Updated: string;

    // @Required()
    public FromTime: string;

    // @Required()
    public ToTime: string;

    public ModifiedDate?: string;
    public Id: 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 IsWeighted: boolean;

    // @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 BookingStatusOptions
{
    public Id: number;
    public Name: string;
    public Description: string;

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

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 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 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 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 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 BookingId: 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 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 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 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 class PaymentDetails extends BaseModel implements IBaseModelCreated, IBaseModelUpdated
{
    // @Ignore()
    public QvicklyCheckoutSerialized: QvicklyCheckoutResponse;

    // @Ignore()
    public Payson2CheckoutSerialized: Payson2CheckoutResponse;

    // @Required()
    public CompanyId: string;

    // @Required()
    public BookingId: number;

    // @Required()
    public ExternalResponseData: string;

    // @Required()
    public ExternalResponseReference: string;

    // @Required()
    public PaymentProviderId: number;

    // @Required()
    public IsPayment: boolean;

    // @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 PriceId?: 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 enum CompanyStatus
{
    Registered = 1,
    AwaitingApproval = 2,
    Approved = 3,
    Inactive = 4,
    ClosedDown = 5,
    NotApproved = 6,
}

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 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;
    // @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 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;

    // @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 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 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 BaseModel implements IInterval, ICustomFieldTable, IBaseModelUpdated, IBaseModelCreated
{
    // @Ignore()
    public Customer: Customer;

    // @Ignore()
    public Service: Service;

    // @Ignore()
    public CalendarExport: CalendarExport;

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

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

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

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

    // @Ignore()
    public Status: BookingStatusEnum;

    // @Ignore()
    public isReserved: boolean;

    // @Ignore()
    public StatusName: string;

    // @Ignore()
    public Company: Company;

    // @References("typeof(BokaMera.API.ServiceModel.Db.Currency)")
    public CurrencyId: 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 Active: boolean;

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

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

    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    // @Required()
    public CompanyId: 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;
    public PriceVat?: number;
    // @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 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 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); }
}

// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ValidateRequest(Validator="IsAuthenticated")
export class TestRecurringSchedule implements ICompany, IInterval
{
    /** @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 From what datetime to show available times */
    // @ApiMember(DataType="dateTime", Description="From what datetime to show available times", IsRequired=true, ParameterType="query")
    public From: string;

    /** @description To what datetime to show available times */
    // @ApiMember(DataType="dateTime", Description="To what datetime to show available times", IsRequired=true, ParameterType="query")
    public To: string;

    /** @description The Service Duration to be faked if there is no Service selected */
    // @ApiMember(Description="The Service Duration to be faked if there is no Service selected")
    public Duration?: number;

    /** @description Time interval for available times. Here you set the interval at which times should appear. For example, if you select the range 15minutes, and your service has an duration of 1 hour and opening hours are 9AM to 6PM you will see the following suggested times: 09AM-10PM 09:15AM-10:15PM, 09:30AM-10:30PM ,  ..... 04:45PM-05:45, 05:00PM-06:00PM */
    // @ApiMember(Description="Time interval for available times. Here you set the interval at which times should appear. For example, if you select the range 15minutes, and your service has an duration of 1 hour and opening hours are 9AM to 6PM you will see the following suggested times: 09AM-10PM 09:15AM-10:15PM, 09:30AM-10:30PM ,  ..... 04:45PM-05:45, 05:00PM-06:00PM", IsRequired=true)
    public TimeInterval: number;

    /** @description Allow bookings end time exceeds the opening hours Here you can choose whether it should be possible to make a reservation exceeding the opening hours. This should be ticked when a service duration is longer than 24 hours (possible to book over midnight). */
    // @ApiMember(Description="Allow bookings end time exceeds the opening hours Here you can choose whether it should be possible to make a reservation exceeding the opening hours. This should be ticked when a service duration is longer than 24 hours (possible to book over midnight).", IsRequired=true)
    public EnableBookingUntilClosingTime: boolean;

    /** @description The timestamp to which the schedule is valid from */
    // @ApiMember(Description="The timestamp to which the schedule is valid from", IsRequired=true)
    public ValidFrom: string;

    /** @description The timestamp to which the schedule is valid to */
    // @ApiMember(Description="The timestamp to which the schedule is valid to", IsRequired=true)
    public ValidTo: string;

    /** @description The time for the schedule opening hours (starttime) */
    // @ApiMember(Description="The time for the schedule opening hours (starttime)", IsRequired=true)
    public StartTime: string;

    /** @description The time for the schedule opening hours (endtime) */
    // @ApiMember(Description="The time for the schedule opening hours (endtime)", IsRequired=true)
    public EndTime: string;

    /** @description The number of days the schedule is valid from todays date */
    // @ApiMember(Description="The number of days the schedule is valid from todays date", IsRequired=true)
    public NumberOfScheduleDays: number;

    /** @description If recurring, an array indicating which days of the week the schedule recures on where 1 = Monday .. 7 = Sunday. When recurring then the time portion of the Fields From and To indicates the time of day the recurrence occurs */
    // @ApiMember(Description="If recurring, an array indicating which days of the week the schedule recures on where 1 = Monday .. 7 = Sunday. When recurring then the time portion of the Fields From and To indicates the time of day the recurrence occurs")
    public DaysOfWeek: number[];

    /** @description If not recuring, an array indicating which dates that are open for the schedule. */
    // @ApiMember(Description="If not recuring, an array indicating which dates that are open for the schedule.")
    public ScheduleDates: AddRecurringScheduleDate[];

    /** @description Schedule exceptions. For example closed on lunch time between 12AM and 1PM. These times will be removed from the recurring schedule. */
    // @ApiMember(Description="Schedule exceptions. For example closed on lunch time between 12AM and 1PM. These times will be removed from the recurring schedule.")
    public Exceptions: ScheduleException[];

    // @ApiMember()
    public Services: AddScheduleService[];

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

    public constructor(init?: Partial<TestRecurringSchedule>) { (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 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 CustomFieldsConfig: IList<CustomFieldConfig>;

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

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

    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); }
}

TypeScript TestRecurringSchedule DTOs

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

HTTP + OTHER

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

POST /schedules/recurring/test HTTP/1.1 
Host: testapi.bokamera.se 
Accept: text/jsonl
Content-Type: text/jsonl
Content-Length: length

{"CompanyId":"00000000-0000-0000-0000-000000000000","Duration":0,"TimeInterval":0,"EnableBookingUntilClosingTime":false,"StartTime":"00:00:00","EndTime":"00:00:00","NumberOfScheduleDays":0,"DaysOfWeek":[0],"ScheduleDates":[{"StartTime":"00:00:00","EndTime":"00:00:00"}],"Exceptions":[{"StartTime":"00:00:00","EndTime":"00:00:00"}],"Services":[{"Id":0}],"Resources":[{"Priority":0,"Schedules":[],"Id":0,"Name":"String","Active":false,"Description":"String","ImageUrl":"String","Color":"String","Email":"String","MobilePhone":"String","EmailNotification":false,"SMSNotification":false,"SendSMSReminder":false,"SendEmailReminder":false,"ModifiedDate":"0001-01-01T00:00:00.0000000+00:00","AccessGroup":"String","TextField1":"String","TextField2":"String","TextField3":"String","TextField4":"String","TextField5":"String","TextField6":"String","TextField7":"String","TextField8":"String","TextField9":"String","TextField10":"String","TextField11":"String","TextField12":"String","TextField13":"String","TextField14":"String","TextField15":"String","TextField16":"String","TextField17":"String","TextField18":"String","TextField19":"String","TextField20":"String"}]}
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length

{"ServiceId":0,"TimesFreeTextSingle":"String","TimesFreeTextMultiple":"String","Times":[{"Free":0,"FreeSpots":0}]}