""" Options: Date: 2024-07-03 13:06:59 Version: 8.23 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://api.bokamera.se #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: BookingQuery.* #ExcludeTypes: #DefaultImports: datetime,decimal,marshmallow.fields:*,servicestack:*,typing:*,dataclasses:dataclass/field,dataclasses_json:dataclass_json/LetterCase/Undefined/config,enum:Enum/IntEnum #DataClass: #DataClassJson: """ import datetime import decimal from marshmallow.fields import * from servicestack import * from typing import * from dataclasses import dataclass, field from dataclasses_json import dataclass_json, LetterCase, Undefined, config from enum import Enum, IntEnum class ICompany: company_id: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BaseModel: pass @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookingLogEventType(BaseModel): # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None modified_date: Optional[datetime.datetime] = None # @Required() id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookingLog(BaseModel): # @References(typeof(BookingLogEventType)) event_type_id: int = 0 event_type: Optional[BookingLogEventType] = None # @Required() company_id: Optional[str] = None # @Required() booking_id: int = 0 id: int = 0 comments: Optional[str] = None user_id: Optional[str] = None # @Required() created: datetime.datetime = datetime.datetime(1, 1, 1) modified_date: Optional[datetime.datetime] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookingStatus(BaseModel): # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None # @Required() color: Optional[str] = None # @Required() icon: Optional[str] = None modified_date: Optional[datetime.datetime] = None id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookingStatusQueryResponse: id: int = 0 name: Optional[str] = None description: Optional[str] = None icon: Optional[str] = None color: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ExternalReference(BaseModel): # @Required() company_id: Optional[str] = None # @Required() id: Optional[str] = None # @Required() owner_id: Optional[str] = None # @Required() reference_type: Optional[str] = None external_data: Optional[str] = None created_by: Optional[str] = None # @Required() updated: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() created: datetime.datetime = datetime.datetime(1, 1, 1) modified_date: Optional[datetime.datetime] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CustomFieldValue(BaseModel): # @Required() company_id: Optional[str] = None id: int = 0 # @Required() value: Optional[str] = None # @Required() active: bool = False sort_order: Optional[int] = None modified_date: Optional[datetime.datetime] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CustomField(BaseModel): # @Required() table: Optional[str] = None # @Required() column: Optional[str] = None # @Required() data_type: Optional[str] = None # @Required() description: Optional[str] = None # @Required() active: bool = False modified_date: Optional[datetime.datetime] = None id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class RegEx(BaseModel): # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None # @Required() reg_ex_code: Optional[str] = None error_message: Optional[str] = None modified_date: Optional[datetime.datetime] = None id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CustomFieldServiceRelation(BaseModel): # @Required() company_id: Optional[str] = None id: int = 0 # @Required() custom_field_config_id: int = 0 # @Required() service_id: int = 0 modified_date: Optional[datetime.datetime] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CustomFieldConfig(BaseModel): # @Ignore() values: Optional[List[CustomFieldValue]] = None custom_field: Optional[CustomField] = None # @Ignore() reg_ex: Optional[RegEx] = None # @Ignore() services: Optional[List[Service]] = None custom_field_service_relation: Optional[List[CustomFieldServiceRelation]] = None # @Required() company_id: Optional[str] = None id: int = 0 group_id: Optional[int] = None # @Required() field_id: int = 0 # @Required() icon_id: int = 0 reg_ex_id: Optional[int] = None # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None # @Required() datatype: Optional[str] = None # @Required() max_length: int = 0 # @Required() is_public: bool = False # @Required() is_hidden: bool = False # @Required() is_mandatory: bool = False default_value: Optional[str] = None reg_ex_error_message: Optional[str] = None mandatory_error_message: Optional[str] = None width: Optional[int] = None # @Required() multiple_line_text: bool = False modified_date: Optional[datetime.datetime] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CustomFieldDataResponse: id: int = 0 column: Optional[str] = None name: Optional[str] = None description: Optional[str] = None value: Optional[str] = None # @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'") data_type: Optional[str] = None """ Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox' """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Customer: city: Optional[str] = None country_code: Optional[str] = None identity_number: Optional[str] = None email: Optional[str] = None first_name: Optional[str] = None last_name: Optional[str] = None phone: Optional[str] = None postal_code: Optional[str] = None street: Optional[str] = None reference: Optional[str] = None type: Optional[CustomerType] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CalendarExport(BaseModel): # @Required() company_id: Optional[str] = None # @Required() booking_id: int = 0 # @Required() exception_id: int = 0 calendar_sync: Optional[bool] = None calendar_id: Optional[str] = None is_exception_deleted: Optional[bool] = None modified_date: Optional[datetime.datetime] = None id: int = 0 class Currency(IntEnum): SEK = 1 EUR = 2 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class PaymentLog(BaseModel): # @References(typeof(Currency)) currency_id: Optional[str] = None currency_info: Optional[Currency] = None # @Required() company_id: Optional[str] = None id: int = 0 # @Required() booking_id: int = 0 payment_reference_id: Optional[str] = None payment_provider_id: Optional[int] = None order_item_reference_id: Optional[str] = None amount: Optional[float] = None vat: Optional[Decimal] = None amount_credited: Optional[float] = None comments: Optional[str] = None # @Required() created: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() updated: datetime.datetime = datetime.datetime(1, 1, 1) modified_date: Optional[datetime.datetime] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class QvicklyCheckoutResponse: number: int = 0 status: Optional[str] = None order_id: Optional[str] = None url: Optional[str] = None class Payson2CheckoutStatus(str, Enum): NONE = 'None' CREATED = 'Created' FORMS_FILLED = 'FormsFilled' READY_TO_PAY = 'ReadyToPay' PROCESSING_PAYMENT = 'ProcessingPayment' READY_TO_SHIP = 'ReadyToShip' SHIPPED = 'Shipped' PAID_TO_ACCOUNT = 'PaidToAccount' CANCELED = 'Canceled' CREDITED = 'Credited' EXPIRED = 'Expired' DENIED = 'Denied' class ItemType(str, Enum): PHYSICAL = 'Physical' SERVICE = 'Service' FEE = 'Fee' DISCOUNT = 'Discount' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Item: item_id: Optional[str] = None discount_rate: Decimal = decimal.Decimal(0) ean: Optional[str] = None image_uri: Optional[str] = None name: Optional[str] = None quantity: Decimal = decimal.Decimal(0) reference: Optional[str] = None tax_rate: Decimal = decimal.Decimal(0) total_price_excluding_tax: Decimal = decimal.Decimal(0) total_price_including_tax: Decimal = decimal.Decimal(0) total_tax_amount: Decimal = decimal.Decimal(0) credited_amount: Decimal = decimal.Decimal(0) type: Optional[ItemType] = None unit_price: Decimal = decimal.Decimal(0) uri: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Order: currency: Optional[Currency] = None total_fee_excluding_tax: Decimal = decimal.Decimal(0) total_fee_including_tax: Decimal = decimal.Decimal(0) total_price_excluding_tax: Decimal = decimal.Decimal(0) total_price_including_tax: Decimal = decimal.Decimal(0) total_tax_amount: Decimal = decimal.Decimal(0) total_credited_amount: Decimal = decimal.Decimal(0) items: Optional[IList[Item]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Merchant: checkout_uri: Optional[str] = None confirmation_uri: Optional[str] = None notification_uri: Optional[str] = None validation_uri: Optional[str] = None terms_uri: Optional[str] = None reference: Optional[str] = None partner_id: Optional[str] = None class ColorScheme(str, Enum): WHITE = 'White' BLUE = 'Blue' GRAY = 'Gray' GRAY_TEXT_LOGOS = 'GrayTextLogos' BLUE_TEXT_LOGOS = 'BlueTextLogos' WHITE_TEXT_LOGOS = 'WhiteTextLogos' WHITE_NO_FOOTER = 'WhiteNoFooter' GRAY_NO_FOOTER = 'GrayNoFooter' BLUE_NO_FOOTER = 'BlueNoFooter' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Gui: color_scheme: Optional[ColorScheme] = None locale: Optional[str] = None request_phone: bool = False phone_optional: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class History: created: Optional[datetime.datetime] = None ready_to_pay: Optional[datetime.datetime] = None ready_to_ship: Optional[datetime.datetime] = None shipped: Optional[datetime.datetime] = None paid_to_account: Optional[datetime.datetime] = None canceled: Optional[datetime.datetime] = None expired: Optional[datetime.datetime] = None denied: Optional[datetime.datetime] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Payson2CheckoutResponse: id: Optional[str] = None expiration_time: Optional[datetime.datetime] = None snippet: Optional[str] = None status: Optional[Payson2CheckoutStatus] = None customer: Optional[Customer] = None order: Optional[Order] = None merchant: Optional[Merchant] = None gui: Optional[Gui] = None history: Optional[History] = None purchase_id: Optional[int] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class PaymentDetails(BaseModel, IBaseModelCreated, IBaseModelUpdated): # @Ignore() qvickly_checkout_serialized: Optional[QvicklyCheckoutResponse] = None # @Ignore() payson2_checkout_serialized: Optional[Payson2CheckoutResponse] = None # @Required() company_id: Optional[str] = None # @Required() booking_id: int = 0 # @Required() external_response_data: Optional[str] = None # @Required() external_response_reference: Optional[str] = None # @Required() payment_provider_id: int = 0 # @Required() is_payment: bool = False # @Required() created_date: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() updated_date: datetime.datetime = datetime.datetime(1, 1, 1) modified_date: Optional[datetime.datetime] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class RebateCodeType(BaseModel): # @Required() name: Optional[str] = None description: Optional[str] = None modified_date: Optional[datetime.datetime] = None id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AppliedRebateCodes: rebate_code_id: int = 0 rebate_code_sign: Optional[str] = None rebate_code_value: int = 0 rebate_amount: float = 0.0 rebate_code_type: Optional[RebateCodeType] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookingPrice(BaseModel): # @References(typeof(Currency)) currency_id: Optional[str] = None price_id: Optional[int] = None currency_info: Optional[Currency] = None # @Ignore() price_text: Optional[str] = None # @Ignore() applied_codes: Optional[List[AppliedRebateCodes]] = None # @Ignore() is_rebate: bool = False # @Required() company_id: Optional[str] = None # @Required() booking_id: int = 0 # @Required() quantity: int = 0 price: Optional[float] = None vat: Optional[Decimal] = None category: Optional[str] = None # @Required() updated: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() created: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() invoiced: bool = False # @Required() occupies_spot: bool = False modified_date: Optional[datetime.datetime] = None id: int = 0 class BookingStatusEnum(IntEnum): BOOKED = 1 UNBOOKED = 2 RESERVED = 3 CANCELED = 4 AWAITING_PAYMENT = 5 AWAITING_PAYMENT_NO_TIME_LIMIT = 6 PAYED = 7 AWAITING_PAYMENT_REQUEST_FROM_ADMIN = 8 AWAITING_PAYMENT_FROM_PROVIDER = 9 INVOICED = 10 class CompanyStatus(IntEnum): REGISTERED = 1 AWAITING_APPROVAL = 2 APPROVED = 3 INACTIVE = 4 CLOSED_DOWN = 5 NOT_APPROVED = 6 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ScheduleView(BaseModel): # @Required() name: Optional[str] = None modified_date: Optional[datetime.datetime] = None id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class WeekNumberSetting(BaseModel): # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None modified_date: Optional[datetime.datetime] = None # @Required() id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookingTemplate(BaseModel): # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None # @Required() used_by_application: Optional[str] = None modified_date: Optional[datetime.datetime] = None id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CalendarType(BaseModel): # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None # @Required() active: bool = False modified_date: Optional[datetime.datetime] = None id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class FreeSpotTexts(BaseModel): # @Required() text_singular: Optional[str] = None # @Required() text_plural: Optional[str] = None modified_date: Optional[datetime.datetime] = None # @Required() id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookingStatusOptions: id: int = 0 name: Optional[str] = None description: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookingSettings(BaseModel): # @References(typeof(FreeSpotTexts)) free_spot_texts_id: int = 0 # @Ignore() send_email_confirmation: bool = False # @Ignore() schedule_view_options: Optional[List[ScheduleView]] = None # @Ignore() week_number_setting_options: Optional[List[WeekNumberSetting]] = None # @Ignore() booking_template_options: Optional[List[BookingTemplate]] = None # @Ignore() calendar_type_options: Optional[List[CalendarType]] = None # @Ignore() free_spot_text_options: Optional[List[FreeSpotTexts]] = None # @Ignore() booking_status_options: Optional[List[BookingStatusOptions]] = None free_spot_texts_info: Optional[FreeSpotTexts] = None # @Ignore() free_spots_text_singular: Optional[str] = None # @Ignore() free_spots_text_plural: Optional[str] = None # @Required() booking_status_id: int = 0 # @Required() schedule_view_id: int = 0 # @Required() booking_template_id: int = 0 # @Required() calendar_type_id: int = 0 # @Required() allow_booking_on_unbooked_times: bool = False # @Required() send_email_reminder: bool = False # @Required() send_sms_reminder: bool = False # @Required() send_sms_confirmation: bool = False # @Required() email_reminder_time: int = 0 # @Required() sms_reminder_time: int = 0 # @Required() max_active_bookings: int = 0 # @Required() send_notifications: bool = False send_notifications_email: Optional[str] = None # @Required() enable_mobile_app: bool = False schedule_start_time: Optional[datetime.timedelta] = None schedule_end_time: Optional[datetime.timedelta] = None receipt_template: Optional[str] = None # @Required() schedule_time_slot_minutes: int = 0 # @Required() show_free_times_left: bool = False # @Required() enable_i_cal_group_bookings: bool = False agreement_template: Optional[str] = None # @Required() schedule_show_time_exeptions: bool = False # @Required() enable_bookings_on_same_time: bool = False # @Required() show_week_number_setting_id: int = 0 # @Required() enable_show_booked_times: bool = False # @Required() enable_send_follow_up_message: bool = False # @Required() follow_up_message_time: int = 0 message_text: Optional[str] = None # @Required() schedule_group_resources: bool = False # @Required() book_spot_user_response_minutes: int = 0 # @Required() is_book_spot_directly: bool = False # @Required() book_spot_directly_time_left_minutes: int = 0 # @Required() send_email_notification_queue: bool = False # @Required() send_s_m_s_notification_queue: bool = False # @Required() scheduler_disable_horizontal_scrolling: bool = False # @Required() book_only_on_existing_customers: bool = False # @Required() auto_generate_unique_pin_code: bool = False # @Required() weighted_prices: bool = False modified_date: Optional[datetime.datetime] = None # @Required() auto_create_user_profile: bool = False show_multiple_resources_as_one: bool = False show_multi_day_as_time: bool = False # @Required() id: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyType(BaseModel): # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None modified_date: Optional[datetime.datetime] = None # @Required() id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CodeLockSystem(BaseModel): # @Required() name: Optional[str] = None # @Required() supplier: Optional[str] = None logo_type: Optional[str] = None # @Required() description: Optional[str] = None modified_date: Optional[datetime.datetime] = None # @Required() id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CodeLockSetting(BaseModel): # @Ignore() code_lock_system_options: Optional[List[CodeLockSystem]] = None # @Required() active: bool = False # @Required() code_lock_systems_id: int = 0 # @Required() valid_before_minutes: int = 0 # @Required() valid_after_minutes: int = 0 # @Required() delete_old_by_schedule: bool = False # @Required() created: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() updated: datetime.datetime = datetime.datetime(1, 1, 1) modified_date: Optional[datetime.datetime] = None # @Required() send_email_notification: bool = False # @Required() send_s_m_s_notification: bool = False # @Required() email_notification_time: int = 0 # @Required() sms_notification_time: int = 0 # @Required() id: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AdminPaymentOptions(BaseModel): # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None modified_date: Optional[datetime.datetime] = None # @Required() id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class PaymentProviders(BaseModel): # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None # @Required() category: Optional[str] = None url: Optional[str] = None # @Required() active: bool = False modified_date: Optional[datetime.datetime] = None # @Required() id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class PaymentSetting(BaseModel): admin_payment_option: Optional[AdminPaymentOptions] = None # @Ignore() admin_payment_options: Optional[List[AdminPaymentOptions]] = None # @Ignore() payment_provider_options: Optional[List[PaymentProviders]] = None # @Required() enabled: bool = False # @Required() invoice_fee: int = 0 # @Required() allow_credit_card_payment: bool = False # @Required() allow_invoice_payment: bool = False # @Required() allow_bank_payment: bool = False # @Required() guarantee_offered: bool = False # @Required() refund_on_cancel_booking: bool = False default_payment_option_id: Optional[int] = None # @Required() payment_provider_id: int = 0 # @Required() send_payment_request_directly: bool = False modified_date: Optional[datetime.datetime] = None # @Required() id: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class LanguageResponse: id: Optional[str] = None name: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanySetting(BaseModel): # @Ignore() languages: Optional[List[LanguageResponse]] = None # @Required() active: bool = False inactive_message: Optional[str] = None # @Required() searchable: bool = False ga_tracking_id: Optional[str] = None facebook_pixel_id: Optional[str] = None # @Required() multi_language: bool = False # @Required() enable_a_p_i_translation: bool = False # @Required() default_language: Optional[str] = None modified_date: Optional[datetime.datetime] = None gtm_tracking_id: Optional[str] = None # @Required() show_on_market_place: bool = False google_ads_conversion_id: Optional[str] = None linkedin_tag_id: Optional[str] = None google_ads_conversion_label: Optional[str] = None # @Required() id: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class WidgetServiceLayouts(BaseModel): # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None # @Required() code: Optional[str] = None modified_date: Optional[datetime.datetime] = None # @Required() id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class WidgetTimeLayouts(BaseModel): # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None # @Required() code: Optional[str] = None modified_date: Optional[datetime.datetime] = None # @Required() id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class WidgetBookingLayouts(BaseModel): # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None # @Required() code: Optional[str] = None modified_date: Optional[datetime.datetime] = None # @Required() id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class WidgetBookingMethods(BaseModel): # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None # @Required() code: Optional[str] = None modified_date: Optional[datetime.datetime] = None # @Required() id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class HomepageWidgetSetting(BaseModel): # @Ignore() widget_service_layout_options: Optional[List[WidgetServiceLayouts]] = None # @Ignore() widget_time_layout_options: Optional[List[WidgetTimeLayouts]] = None # @Ignore() widget_booking_layout_options: Optional[List[WidgetBookingLayouts]] = None # @Ignore() widget_booking_method_options: Optional[List[WidgetBookingMethods]] = None # @Required() service_layout_id: int = 0 # @Required() time_layout_id: int = 0 # @Required() booking_layout_id: int = 0 # @Required() primary_color: Optional[str] = None # @Required() show_service_image: bool = False # @Required() show_next_available_time: bool = False # @Required() show_end_time: bool = False booked_time_slot_text: Optional[str] = None # @Required() dark_theme: bool = False # @Required() show_rebate_code_field: bool = False modified_date: Optional[datetime.datetime] = None # @Required() enable_create_account: bool = False # @Required() enable_login: bool = False # @Required() enable_direct_booking: bool = False # @Required() enable_facebook_login: bool = False # @Required() id: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class HomepageTemplate(BaseModel): # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None image_url: Optional[str] = None # @Required() premium: bool = False modified_date: Optional[datetime.datetime] = None id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class HeroSectionStyle(BaseModel): # @Required() name: Optional[str] = None description: Optional[str] = None modified_date: Optional[datetime.datetime] = None # @Required() id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class HomepageSetting(BaseModel, ICompany): # @Ignore() homepage_template_options: Optional[List[HomepageTemplate]] = None # @Ignore() homepage_hero_section_style_options: Optional[List[HeroSectionStyle]] = None # @Ignore() company_id: Optional[str] = None welcome_page_heading: Optional[str] = None welcome_page_body: Optional[str] = None about_us_page_heading: Optional[str] = None about_us_page_body: Optional[str] = None # @Required() home_page_template_id: int = 0 image_url: Optional[str] = None # @Required() updated: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() created: datetime.datetime = datetime.datetime(1, 1, 1) homepage_heading: Optional[str] = None # @Required() hero_section_style_id: int = 0 modified_date: Optional[datetime.datetime] = None # @Required() show_rating: bool = False # @Required() enable_homepage: bool = False # @Required() id: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AverageRatingScore: average_score: float = 0.0 score1_count: int = 0 score2_count: int = 0 score3_count: int = 0 score4_count: int = 0 score5_count: int = 0 count: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Review(BaseModel): review_id: Optional[str] = None # @Required() company_id: Optional[str] = None # @Required() title: Optional[str] = None # @Required() description: Optional[str] = None # @Required() author: Optional[str] = None # @Required() status: int = 0 # @Required() created: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() updated: datetime.datetime = datetime.datetime(1, 1, 1) modified_date: Optional[datetime.datetime] = None review_answer: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Rating(BaseModel): review_id: Optional[str] = None review: Optional[Review] = None # @Required() company_id: Optional[str] = None # @Required() booking_id: int = 0 # @Required() rating_score: int = 0 # @Required() status: int = 0 # @Required() created: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() updated: datetime.datetime = datetime.datetime(1, 1, 1) modified_date: Optional[datetime.datetime] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class LicenseTypeItem(BaseModel): # @Ignore() name: Optional[str] = None # @Required() license_types_id: int = 0 # @Required() license_items_id: int = 0 # @Required() number_of_items: int = 0 id: int = 0 modified_date: Optional[datetime.datetime] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Country(BaseModel): # @References(typeof(Currency)) currency_id: Optional[str] = None currency_info: Optional[Currency] = None # @Required() name: Optional[str] = None culture: Optional[str] = None time_zone: Optional[str] = None modified_date: Optional[datetime.datetime] = None # @Required() id: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class LicensePrice(BaseModel): # @Ignore() country: Optional[Country] = None # @Ignore() monthly_payment: bool = False # @Required() license_type_id: int = 0 # @Required() country_id: Optional[str] = None # @Required() price: int = 0 modified_date: Optional[datetime.datetime] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class LicenseType(BaseModel): # @Ignore() license_items: Optional[IList[LicenseTypeItem]] = None # @Ignore() prices: Optional[IList[LicensePrice]] = None # @Ignore() period_of_notice_days: int = 0 # @Ignore() next_license_option: Optional[LicenseType] = None # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None # @Required() extra_license_option: bool = False modified_date: Optional[datetime.datetime] = None id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class License(BaseModel): type: Optional[LicenseType] = None # @Required() company_id: Optional[str] = None id: int = 0 # @Required() type_id: int = 0 # @Required() valid_from: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() valid_to: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() active: bool = False # @Required() updated: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() created: datetime.datetime = datetime.datetime(1, 1, 1) modified_date: Optional[datetime.datetime] = None meta_data: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyCategory(BaseModel): # @Required() name: Optional[str] = None # @Required() header: Optional[str] = None # @Required() description: Optional[str] = None image_url: Optional[str] = None # @Required() active: bool = False sort_order: Optional[int] = None modified_date: Optional[datetime.datetime] = None id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Company(BaseModel): # @Ignore() status: Optional[CompanyStatus] = None # @Ignore() active: bool = False # @Ignore() customer_custom_fields_config: Optional[IList[CustomFieldConfig]] = None # @Ignore() booking_agreements: Optional[str] = None # @Ignore() booking_settings: Optional[BookingSettings] = None # @Ignore() company_type: Optional[CompanyType] = None # @Ignore() code_lock_settings: Optional[CodeLockSetting] = None # @Ignore() payment_settings: Optional[PaymentSetting] = None # @Ignore() settings: Optional[CompanySetting] = None # @Ignore() widget_settings: Optional[HomepageWidgetSetting] = None # @Ignore() homepage_settings: Optional[HomepageSetting] = None # @Ignore() rating_score: Optional[AverageRatingScore] = None # @Ignore() ratings: Optional[List[Rating]] = None # @Ignore() distance: Optional[float] = None # @Ignore() licenses: Optional[List[License]] = None # @Ignore() active_licenses: Optional[List[License]] = None # @Ignore() current_license: Optional[License] = None # @Ignore() is_free_account: bool = False # @Ignore() default_language: Optional[CultureInfo] = None category: Optional[CompanyCategory] = None # @Ignore() lat: float = 0.0 # @Ignore() lon: float = 0.0 # @Ignore() is_favorite: bool = False # @Ignore() external_references: Optional[IList[ExternalReference]] = None # @Required() organisation_number: Optional[str] = None # @Required() status_id: int = 0 # @Required() category_id: int = 0 # @Required() site_path: Optional[str] = None # @Required() name: Optional[str] = None street1: Optional[str] = None street2: Optional[str] = None zip_code: Optional[str] = None city: Optional[str] = None opening_hours: Optional[str] = None fax_number: Optional[str] = None # @Required() email: Optional[str] = None phone: Optional[str] = None details: Optional[str] = None logo_type: Optional[str] = None # @Required() approved_by_admin: bool = False # @Required() updated: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() created: datetime.datetime = datetime.datetime(1, 1, 1) ip_address: Optional[str] = None homepage: Optional[str] = None domain_name: Optional[str] = None # @Required() country_id: Optional[str] = None # @Required() company_owner_id: int = 0 type_id: Optional[int] = None modified_date: Optional[datetime.datetime] = None # @Required() id: Optional[str] = None class ScheduleType(str, Enum): NOT_DEFINED = 'NotDefined' RECURRING_SCHEDULE = 'RecurringSchedule' DATE_SCHEDULE = 'DateSchedule' class ISchedule: resources: Optional[IList[Resource]] = None type: Optional[ScheduleType] = None active: bool = False is_resource_specific: bool = False class ITimeException(IInterval): id: int = 0 reason_text: Optional[str] = None is_block: bool = False reason_text_public: Optional[str] = None is_recurring: bool = False resource_ids: Optional[List[int]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookedCustomer: id: Optional[str] = None firstname: Optional[str] = None lastname: Optional[str] = None email: Optional[str] = None phone: Optional[str] = None facebook_user_name: Optional[str] = None image_url: Optional[str] = None corporate_identity_number: Optional[str] = None invoice_address1: Optional[str] = None invoice_address2: Optional[str] = None invoice_city: Optional[str] = None invoice_postal_code: Optional[str] = None invoice_country_code: Optional[str] = None class IBookedTime(IInterval): id: int = 0 service_id: int = 0 booked_spots: int = 0 total_spots: int = 0 pause_after_in_minutes: int = 0 status: Optional[BookingStatusEnum] = None status_id: int = 0 customer: Optional[BookedCustomer] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Resource(BaseModel, ICustomFieldTable, IBaseModelCreated, IBaseModelUpdated): # @Ignore() priority: int = 0 # @Ignore() schedules: Optional[IList[ISchedule]] = None # @Ignore() exceptions: Optional[IList[ITimeException]] = None # @Ignore() bookings: Optional[IList[IBookedTime]] = None # @Ignore() custom_fields_config: Optional[IList[CustomFieldConfig]] = None # @Ignore() custom_fields_data: Optional[IList[CustomFieldDataResponse]] = None # @Required() company_id: Optional[str] = None id: int = 0 # @Required() name: Optional[str] = None # @Required() active: bool = False description: Optional[str] = None image_url: Optional[str] = None # @Required() updated_date: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() created_date: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() color: Optional[str] = None email: Optional[str] = None mobile_phone: Optional[str] = None email_notification: Optional[bool] = None sms_notification: Optional[bool] = None # @Required() send_s_m_s_reminder: bool = False # @Required() send_email_reminder: bool = False modified_date: Optional[datetime.datetime] = None access_group: Optional[str] = None text_field1: Optional[str] = None text_field2: Optional[str] = None text_field3: Optional[str] = None text_field4: Optional[str] = None text_field5: Optional[str] = None text_field6: Optional[str] = None text_field7: Optional[str] = None text_field8: Optional[str] = None text_field9: Optional[str] = None text_field10: Optional[str] = None text_field11: Optional[str] = None text_field12: Optional[str] = None text_field13: Optional[str] = None text_field14: Optional[str] = None text_field15: Optional[str] = None text_field16: Optional[str] = None text_field17: Optional[str] = None text_field18: Optional[str] = None text_field19: Optional[str] = None text_field20: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookedResource: id: int = 0 name: Optional[str] = None color: Optional[str] = None image_url: Optional[str] = None email: Optional[str] = None mobile_phone: Optional[str] = None access_group: Optional[str] = None email_notification: bool = False sms_notification: bool = False email_reminder: bool = False sms_reminder: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookedResourceType: # @ApiMember(Description="The resource type id") id: int = 0 """ The resource type id """ # @ApiMember(Description="The resource type name") name: Optional[str] = None """ The resource type name """ # @ApiMember(Description="The resources inside resource type") resources: Optional[List[BookedResource]] = None """ The resources inside resource type """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class PriceMapping(BaseModel): # @Required() company_id: Optional[str] = None # @Required() id: Optional[str] = None # @Required() price_id: int = 0 reference_type: Optional[str] = None external_reference: Optional[str] = None # @Required() updated_date: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() created_date: datetime.datetime = datetime.datetime(1, 1, 1) modified_date: Optional[datetime.datetime] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Booking(BaseModel, IInterval, ICustomFieldTable, IBaseModelUpdated, IBaseModelCreated): # @Ignore() customer: Optional[Customer] = None # @Ignore() service: Optional[Service] = None # @Ignore() calendar_export: Optional[CalendarExport] = None # @Ignore() log: Optional[List[BookingLog]] = None # @Ignore() payment_log: Optional[List[PaymentLog]] = None # @Ignore() checkout_logs: Optional[List[PaymentDetails]] = None # @Ignore() prices: Optional[List[BookingPrice]] = None # @Ignore() status: Optional[BookingStatusEnum] = None # @Ignore() is_reserved: bool = False # @Ignore() status_name: Optional[str] = None # @Ignore() company: Optional[Company] = None # @References(typeof(Currency)) currency_id: Optional[str] = None currency_info: Optional[Currency] = None booking_status: Optional[BookingStatus] = None # @Ignore() total_price: Optional[float] = None # @Ignore() total_spots: Optional[int] = None # @Ignore() resources: Optional[IList[Resource]] = None # @Ignore() external_references: Optional[IList[ExternalReference]] = None # @Ignore() booked_resources: Optional[IList[BookedResourceType]] = None # @Ignore() custom_fields_config: Optional[IList[CustomFieldConfig]] = None # @Ignore() custom_fields_data: Optional[IList[CustomFieldDataResponse]] = None # @Ignore() active: bool = False # @Ignore() last_time_to_un_book: Optional[datetime.datetime] = None # @Ignore() price_mappings: Optional[List[PriceMapping]] = None # @Required() updated_date: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() created_date: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() company_id: Optional[str] = None id: int = 0 # @Required() customer_id: Optional[str] = None # @Required() service_id: int = 0 # @Required() status_id: int = 0 unbooked_on: Optional[datetime.datetime] = None unbooked_comments: Optional[str] = None booked_comments: Optional[str] = None # @Required() booked_by: Optional[str] = None un_booked_by: Optional[str] = None # @Required() send_sms_reminder: bool = False # @Required() send_email_reminder: bool = False # @Required() send_sms_confirmation: bool = False rebate_code: Optional[str] = None comments: Optional[str] = None ip_address: Optional[str] = None # @Required() number_of_booked_spots: int = 0 comments_to_customer: Optional[str] = None payment_expiration: Optional[datetime.datetime] = None price_vat: Optional[Decimal] = None # @Required() send_email_confirmation: bool = False cancellation_code: Optional[str] = None modified_date: Optional[datetime.datetime] = None rating_code: Optional[str] = None text_field1: Optional[str] = None text_field2: Optional[str] = None text_field3: Optional[str] = None text_field4: Optional[str] = None text_field5: Optional[str] = None text_field6: Optional[str] = None text_field7: Optional[str] = None text_field8: Optional[str] = None text_field9: Optional[str] = None text_field10: Optional[str] = None text_field11: Optional[str] = None text_field12: Optional[str] = None text_field13: Optional[str] = None text_field14: Optional[str] = None text_field15: Optional[str] = None text_field16: Optional[str] = None text_field17: Optional[str] = None text_field18: Optional[str] = None text_field19: Optional[str] = None text_field20: Optional[str] = None # @Required() from_: datetime.datetime = field(metadata=config(field_name='from'), default=datetime.datetime(1, 1, 1)) # @Required() to: datetime.datetime = datetime.datetime(1, 1, 1) class IInterval: from_: datetime.datetime = field(metadata=config(field_name='from'), default=datetime.datetime(1, 1, 1)) to: datetime.datetime = datetime.datetime(1, 1, 1) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Currency(BaseModel): # @Required() name: Optional[str] = None # @Required() currency_sign: Optional[str] = None # @Required() active: bool = False modified_date: Optional[datetime.datetime] = None # @Required() id: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Customer(BaseModel, IUser, ICustomFieldTable): identity_id: int = 0 id: Optional[str] = None # @Ignore() customer_id: Optional[str] = None # @Ignore() access_keys: Optional[IList[UserAccessKeys]] = None email: Optional[str] = None # @Ignore() external_references: Optional[IList[ExternalReference]] = None # @Ignore() custom_fields_config: Optional[IList[CustomFieldConfig]] = None # @Ignore() custom_fields_data: Optional[IList[CustomFieldDataResponse]] = None # @Ignore() comments: Optional[IList[CustomerComment]] = None firstname: Optional[str] = None # @Ignore() image_url: Optional[str] = None # @Required() active: bool = False facebook_username: Optional[str] = None # @Required() updated: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() created: datetime.datetime = datetime.datetime(1, 1, 1) ip_address: Optional[str] = None modified_date: Optional[datetime.datetime] = None text_field1: Optional[str] = None text_field2: Optional[str] = None text_field3: Optional[str] = None text_field4: Optional[str] = None text_field5: Optional[str] = None text_field6: Optional[str] = None text_field7: Optional[str] = None text_field8: Optional[str] = None text_field9: Optional[str] = None text_field10: Optional[str] = None text_field11: Optional[str] = None text_field12: Optional[str] = None text_field13: Optional[str] = None text_field14: Optional[str] = None text_field15: Optional[str] = None text_field16: Optional[str] = None text_field17: Optional[str] = None text_field18: Optional[str] = None text_field19: Optional[str] = None text_field20: Optional[str] = None user_id: Optional[str] = None lastname: Optional[str] = None phone: Optional[str] = None corporate_identity_number: Optional[str] = None invoice_address1: Optional[str] = None invoice_address2: Optional[str] = None invoice_city: Optional[str] = None invoice_postal_code: Optional[str] = None invoice_country_code: Optional[str] = None # @Required() company_id: Optional[str] = None subscribed_to_newsletter: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class GroupBookingSettings: active: bool = False min: int = 0 max: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class MultipleResourceSettings: active: bool = False min: int = 0 max: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ServiceInfoResponse: id: int = 0 name: Optional[str] = None description: Optional[str] = None image_url: Optional[str] = None length_in_minutes: Optional[int] = None max_number_of_spots_per_booking: int = 0 group_booking: Optional[GroupBookingSettings] = None multiple_resource: Optional[MultipleResourceSettings] = None is_group_booking: bool = False is_payment_enabled: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CustomFieldValueResponse: value: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CustomFieldConfigData: # @ApiMember(Description="Custom field id") id: int = 0 """ Custom field id """ # @ApiMember(Description="Configuration name. Example: 'Number of persons'.") name: Optional[str] = None """ Configuration name. Example: 'Number of persons'. """ # @ApiMember(Description="Custom field description. Example: 'For how many persons is this booking?'") description: Optional[str] = None """ Custom field description. Example: 'For how many persons is this booking?' """ # @ApiMember(Description="Field width. Example: 20 for 20px") width: Optional[int] = None """ Field width. Example: 20 for 20px """ # @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'") data_type: Optional[str] = None """ Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox' """ # @ApiMember(Description="Default value of the field. Example: '3'") default_value: Optional[str] = None """ Default value of the field. Example: '3' """ # @ApiMember(Description="Determines if the field is required to have a value or not") is_mandatory: bool = False """ Determines if the field is required to have a value or not """ # @ApiMember(Description="Error message shown to the user if the field data is required but not entered") mandatory_error_message: Optional[str] = None """ Error message shown to the user if the field data is required but not entered """ # @ApiMember(Description="Max lenght of the field") max_length: int = 0 """ Max lenght of the field """ # @ApiMember(Description="If the field should have multiple lines") multiple_line_text: bool = False """ If the field should have multiple lines """ # @ApiMember(Description="Regular expression used for validation of the field") reg_ex: Optional[str] = None """ Regular expression used for validation of the field """ # @ApiMember(Description="Error message shown if the regular expression validation failed") reg_ex_error_message: Optional[str] = None """ Error message shown if the regular expression validation failed """ # @ApiMember(Description="The values to select from if Datatype is DropDown for this custom field") values: Optional[List[CustomFieldValueResponse]] = None """ The values to select from if Datatype is DropDown for this custom field """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookedCompany: id: Optional[str] = None name: Optional[str] = None logo_type: Optional[str] = None category: Optional[str] = None street1: Optional[str] = None street2: Optional[str] = None zip_code: Optional[str] = None city: Optional[str] = None country_id: Optional[str] = None longitude: Optional[str] = None latitude: Optional[str] = None phone: Optional[str] = None email: Optional[str] = None home_page: Optional[str] = None site_path: Optional[str] = None is_favorite: bool = False payment_provider_id: Optional[int] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CurrencyInfoResponse: # @ApiMember(Description="The currency id") id: Optional[str] = None """ The currency id """ # @ApiMember(Description="The currency id") name: Optional[str] = None """ The currency id """ # @ApiMember(Description="The currency id") currency_sign: Optional[str] = None """ The currency id """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookingPaymentLogQueryResponse: # @ApiMember(Description="The booking payment log id") id: int = 0 """ The booking payment log id """ # @ApiMember(Description="The booking id") booking_id: int = 0 """ The booking id """ # @ApiMember(Description="The payment reference id") payment_reference_id: Optional[str] = None """ The payment reference id """ # @ApiMember(Description="The payment order item reference id") order_item_reference_id: Optional[str] = None """ The payment order item reference id """ # @ApiMember(Description="The payment reference id") payment_provider_id: Optional[int] = None """ The payment reference id """ # @ApiMember(Description="The payment amount") amount: float = 0.0 """ The payment amount """ # @ApiMember(Description="The payment VAT in percent") vat: Decimal = decimal.Decimal(0) """ The payment VAT in percent """ # @ApiMember(Description="The payment amount that is credited") amount_credited: float = 0.0 """ The payment amount that is credited """ # @ApiMember(Description="The payment currency id") currency_id: Optional[str] = None """ The payment currency id """ # @ApiMember(Description="The payment currency info") currency_info: Optional[CurrencyInfoResponse] = None """ The payment currency info """ # @ApiMember(Description="Comments that could be added to the event log item") comments: Optional[str] = None """ Comments that could be added to the event log item """ # @ApiMember(Description="The date when the payment items was created") created: datetime.datetime = datetime.datetime(1, 1, 1) """ The date when the payment items was created """ # @ApiMember(Description="The date when the payment items was update") updated: datetime.datetime = datetime.datetime(1, 1, 1) """ The date when the payment items was update """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookingCheckoutQueryResponse: # @ApiMember(Description="The checkout id") id: Optional[str] = None """ The checkout id """ # @ApiMember(Description="The booking id") booking_id: int = 0 """ The booking id """ # @ApiMember(Description="The purchase id") purchase_id: Optional[int] = None """ The purchase id """ # @ApiMember(Description="The payment checkout expiration datetime") expiration_time: Optional[datetime.datetime] = None """ The payment checkout expiration datetime """ # @ApiMember(Description="The payment snippet code") snippet: Optional[str] = None """ The payment snippet code """ # @ApiMember(Description="The payment status") status: Optional[str] = None """ The payment status """ # @ApiMember(Description="Log message") message: Optional[str] = None """ Log message """ # @ApiMember(Description="When the checkout log item was created") created: datetime.datetime = datetime.datetime(1, 1, 1) """ When the checkout log item was created """ # @ApiMember(Description="When the checkout log item was updated") updated: datetime.datetime = datetime.datetime(1, 1, 1) """ When the checkout log item was updated """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ExternalReferenceResponse: company_id: Optional[str] = None id: Optional[str] = None owner_id: Optional[str] = None reference_type: Optional[str] = None external_data: Optional[str] = None created_by: Optional[str] = None updated: datetime.datetime = datetime.datetime(1, 1, 1) created: datetime.datetime = datetime.datetime(1, 1, 1) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookingCalendarExportStatus: calendar_id: Optional[str] = None booking_id: int = 0 synced: Optional[bool] = None class ICustomFieldTable: custom_fields_config: Optional[IList[CustomFieldConfig]] = None custom_fields_data: Optional[IList[CustomFieldDataResponse]] = None text_field1: Optional[str] = None text_field2: Optional[str] = None text_field3: Optional[str] = None text_field4: Optional[str] = None text_field5: Optional[str] = None text_field6: Optional[str] = None text_field7: Optional[str] = None text_field8: Optional[str] = None text_field9: Optional[str] = None text_field10: Optional[str] = None text_field11: Optional[str] = None text_field12: Optional[str] = None text_field13: Optional[str] = None text_field14: Optional[str] = None text_field15: Optional[str] = None text_field16: Optional[str] = None text_field17: Optional[str] = None text_field18: Optional[str] = None text_field19: Optional[str] = None text_field20: Optional[str] = None class IBaseModelUpdated: updated_date: datetime.datetime = datetime.datetime(1, 1, 1) class IBaseModelCreated: created_date: datetime.datetime = datetime.datetime(1, 1, 1) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookingLogQueryResponse: # @ApiMember(Description="The booking log id") id: int = 0 """ The booking log id """ # @ApiMember(Description="The booking id") booking_id: int = 0 """ The booking id """ # @ApiMember(Description="The type of event") event_type_id: int = 0 """ The type of event """ # @ApiMember(Description="The type of event") event_type: Optional[BookingLogEventTypeResponse] = None """ The type of event """ # @ApiMember(Description="Comments that could be added to the event log item") comments: Optional[str] = None """ Comments that could be added to the event log item """ # @ApiMember(Description="The user created the event") user_name: Optional[str] = None """ The user created the event """ # @ApiMember(Description="Then date when the event occured") created: datetime.datetime = datetime.datetime(1, 1, 1) """ Then date when the event occured """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookedQuantity: # @ApiMember(Description="The quantity Id") id: int = 0 """ The quantity Id """ # @ApiMember(Description="The quantity for booked on this price category") quantity: int = 0 """ The quantity for booked on this price category """ # @ApiMember(Description="The price") price: Optional[float] = None """ The price """ # @ApiMember(Description="The price bofore rebate codes") price_before_rebate: Optional[float] = None """ The price bofore rebate codes """ # @ApiMember(Description="The price currency") currency_id: Optional[str] = None """ The price currency """ # @ApiMember(Description="The price sign") price_sign: Optional[str] = None """ The price sign """ # @ApiMember(Description="The price category") category: Optional[str] = None """ The price category """ # @ApiMember(Description="The price VAT in percent") vat: Optional[Decimal] = None """ The price VAT in percent """ # @ApiMember(Description="The price text to display") price_text: Optional[str] = None """ The price text to display """ # @ApiMember(Description="If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.") occupies_spot: bool = False """ If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information. """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookingQueryResponse: id: int = 0 company_id: Optional[str] = None from_: datetime.datetime = field(metadata=config(field_name='from'), default=datetime.datetime(1, 1, 1)) to: datetime.datetime = datetime.datetime(1, 1, 1) status: Optional[BookingStatusEnum] = None status_id: int = 0 status_name: Optional[str] = None status_info: Optional[BookingStatusQueryResponse] = None send_email_reminder: bool = False send_sms_reminder: bool = False send_sms_confirmation: bool = False send_email_confirmation: bool = False last_time_to_un_book: Optional[datetime.datetime] = None custom_fields: Optional[List[CustomFieldConfigData]] = None custom_field_values: Optional[List[CustomFieldDataResponse]] = None booked_resource_types: Optional[List[BookedResourceType]] = None company: Optional[BookedCompany] = None customer: Optional[BookedCustomer] = None quantities: Optional[List[BookedQuantity]] = None service: Optional[ServiceInfoResponse] = None payment_expiration: Optional[datetime.datetime] = None log: Optional[List[BookingLogQueryResponse]] = None payment_log: Optional[List[BookingPaymentLogQueryResponse]] = None checkout_log: Optional[List[BookingCheckoutQueryResponse]] = None external_reference: Optional[List[ExternalReferenceResponse]] = None response_status: Optional[ResponseStatus] = None calendar_export_status: Optional[BookingCalendarExportStatus] = None length_in_minutes: Optional[int] = None booked_by: Optional[str] = None booked_comments: Optional[str] = None unbooked_comments: Optional[str] = None comments_to_customer: Optional[str] = None created_date: datetime.datetime = datetime.datetime(1, 1, 1) updated_date: datetime.datetime = datetime.datetime(1, 1, 1) unbooked_on: Optional[datetime.datetime] = None cancellation_code: Optional[str] = None rating_code: Optional[str] = None # @Route("/bookings", "GET") # @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BookingQuery(QueryDb2[Booking, BookingQueryResponse], IReturn[QueryResponse[BookingQueryResponse]]): # @ApiMember(Description="Query for specific Booked Resources, default is all resources", ParameterType="query") booking_resource_relation_resource_ids: Optional[List[int]] = None """ Query for specific Booked Resources, default is all resources """ # @ApiMember(Description="Query for specific Booked Resource types, default is all resource types", ParameterType="query") booking_resource_relation_resource_type_ids: Optional[List[int]] = None """ Query for specific Booked Resource types, default is all resource types """ # @ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.") company_id: Optional[str] = None """ The company id, if empty will use the company id for the user you are logged in with. """ # @ApiMember(Description="Id of the booking", ParameterType="path") id: Optional[int] = None """ Id of the booking """ # @ApiMember(DataType="string", Description="The cancellation code of the booking, can be used if you want to get a booking without being authenticated", ParameterType="query") cancellation_code: Optional[str] = None """ The cancellation code of the booking, can be used if you want to get a booking without being authenticated """ # @ApiMember(DataType="dateTime", Description="Start of interval to query for bookings. UTC+0 and parameter as defined by date-time - RFC3339", ParameterType="query") booking_start: Optional[datetime.datetime] = None """ Start of interval to query for bookings. UTC+0 and parameter as defined by date-time - RFC3339 """ # @ApiMember(DataType="dateTime", Description="End of interval to query for bookings. UTC+0 and parameter as defined by date-time - RFC3339", ParameterType="query") booking_end: Optional[datetime.datetime] = None """ End of interval to query for bookings. UTC+0 and parameter as defined by date-time - RFC3339 """ # @ApiMember(DataType="dateTime", Description="Start of interval to query for bookings when they where created. UTC+0 and parameter as defined by date-time - RFC3339", ParameterType="query") created_from: Optional[datetime.datetime] = None """ Start of interval to query for bookings when they where created. UTC+0 and parameter as defined by date-time - RFC3339 """ # @ApiMember(DataType="dateTime", Description="End of interval to query for bookings when they where created. UTC+0 and parameter as defined by date-time - RFC3339", ParameterType="query") created_to: Optional[datetime.datetime] = None """ End of interval to query for bookings when they where created. UTC+0 and parameter as defined by date-time - RFC3339 """ # @ApiMember(DataType="boolean", Description="Set to true if you want to include the bookings for the company you are logged in as administrator on, if false only bookings for the logged in user will be retrieved. Only administrators are allowed to do this.", ParameterType="query") company_bookings: bool = False """ Set to true if you want to include the bookings for the company you are logged in as administrator on, if false only bookings for the logged in user will be retrieved. Only administrators are allowed to do this. """ # @ApiMember(Description="Query for specific services.", ParameterType="query") service_ids: Optional[List[int]] = None """ Query for specific services. """ # @ApiMember(Description="Query for specific booking statuses. Valid statuses are TimeBooked = 1, TimeUnbooked = 2, TimeReserved = 3, TimeCanceled = 4, AwaitingPayment = 5, AwaitingPaymentNoTimeLimit = 6, BookedAndPayed = 7, 8 = AwaitingPaymentRequestFromAdmin, 9 = AwaitingPaymentFromProvider. Default is all.", ParameterType="query") status_ids: Optional[List[int]] = None """ Query for specific booking statuses. Valid statuses are TimeBooked = 1, TimeUnbooked = 2, TimeReserved = 3, TimeCanceled = 4, AwaitingPayment = 5, AwaitingPaymentNoTimeLimit = 6, BookedAndPayed = 7, 8 = AwaitingPaymentRequestFromAdmin, 9 = AwaitingPaymentFromProvider. Default is all. """ # @ApiMember(Description="Query for specific customer", ParameterType="query") customer_id: Optional[str] = None """ Query for specific customer """ # @ApiMember(DataType="boolean", Description="If you want to include the external references for the booking", ParameterType="query") include_external_references: bool = False """ If you want to include the external references for the booking """ # @ApiMember(DataType="boolean", Description="If you want to include the connected resource types and resources", ParameterType="query") include_custom_fields: bool = False """ If you want to include the connected resource types and resources """ # @ApiMember(DataType="boolean", Description="If you want to include the connected custom fields", ParameterType="query") include_custom_field_values: bool = False """ If you want to include the connected custom fields """ # @ApiMember(DataType="boolean", Description="If you want to include the booked resources", ParameterType="query") include_booked_resource_types: bool = False """ If you want to include the booked resources """ # @ApiMember(DataType="boolean", Description="If you want to include the company information for the booking", ParameterType="query") include_company_information: bool = False """ If you want to include the company information for the booking """ # @ApiMember(DataType="boolean", Description="If you want to include the service information for the booking", ParameterType="query") include_service_information: bool = False """ If you want to include the service information for the booking """ # @ApiMember(DataType="boolean", Description="If you want to include the customer information for the booking", ParameterType="query") include_customer_information: bool = False """ If you want to include the customer information for the booking """ # @ApiMember(DataType="boolean", Description="If you want to include the log of all events on the booking", ParameterType="query") include_log: bool = False """ If you want to include the log of all events on the booking """ # @ApiMember(DataType="boolean", Description="If you want to include the payment log on the booking", ParameterType="query") include_payment_log: bool = False """ If you want to include the payment log on the booking """ # @ApiMember(DataType="boolean", Description="If you want to include the checkouts for payson", ParameterType="query") include_checkout_log: bool = False """ If you want to include the checkouts for payson """ # @ApiMember(DataType="boolean", Description="If you want to include the quantity and price information on the booking", ParameterType="query") include_quantity_information: bool = False """ If you want to include the quantity and price information on the booking """ # @ApiMember(DataType="boolean", Description="If you want to include google calendar sync status", ParameterType="query") include_calendar_export_status: bool = False """ If you want to include google calendar sync status """ # @ApiMember(DataType="boolean", Description="If you want to include booking status information", ParameterType="query") include_status_information: bool = False """ If you want to include booking status information """ # @ApiMember(DataType="int", Description="The max limit of records you want to retrieve, default is 100", ParameterType="query") max_limit: Optional[int] = None """ The max limit of records you want to retrieve, default is 100 """ response_status: Optional[ResponseStatus] = None