""" Options: Date: 2025-08-21 17:56:05 Version: 8.23 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://testapi.bokamera.se #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: GetArticles.* #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 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 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 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() send_push_notification: bool = False # @Required() send_push_notification_reminder: bool = False # @Required() push_notification_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 booking_pin_code_restriction: Optional[str] = None customer_invoice_adress_required: 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 send_customer_information_to_external_providers: bool = False # @Required() id: Optional[str] = None is_webhook_feature_enabled: bool = False sms_message_send_limit: Optional[int] = None email_message_send_limit: Optional[int] = 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() show_subscribe_to_newsletter: 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 ProductGroupResponse: id: Optional[str] = None name: Optional[str] = None tier_id: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class TierResponse: id: Optional[str] = None name: Optional[str] = None product_groups: Optional[List[ProductGroupResponse]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class VossSubscriptionResponse: subscription_billing_period_start_date: datetime.datetime = datetime.datetime(1, 1, 1) subscription_billing_period_end_date: datetime.datetime = datetime.datetime(1, 1, 1) tier: Optional[TierResponse] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class LicenseTypeItem(BaseModel): # @Ignore() name: Optional[str] = None # @Ignore() license_type: Optional[LicenseType] = 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 class Currency(IntEnum): SEK = 1 EUR = 2 @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 # @Required() license_type_id: int = 0 # @Required() country_id: Optional[str] = None # @Required() price: int = 0 modified_date: Optional[datetime.datetime] = None license_plan_id: int = 0 @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() is_free: bool = False # @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 active: bool = False voss_tier_id: Optional[str] = None id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class License(BaseModel): # @Ignore() voss_subscription: Optional[VossSubscriptionResponse] = None # @Ignore() company: Optional[Company] = None type: Optional[LicenseType] = None # @Required() company_id: Optional[str] = None id: int = 0 # @Required() type_id: int = 0 voss_subscription_id: Optional[str] = None # @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_date: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() created_date: datetime.datetime = datetime.datetime(1, 1, 1) modified_date: Optional[datetime.datetime] = None meta_data: Optional[str] = None class CountryCodeEnum(str, Enum): AD = 'AD' AE = 'AE' AF = 'AF' AG = 'AG' AI = 'AI' AL = 'AL' AM = 'AM' AO = 'AO' AQ = 'AQ' AR = 'AR' AS_ = 'AS' AT = 'AT' AU = 'AU' AW = 'AW' AX = 'AX' AZ = 'AZ' BA = 'BA' BB = 'BB' BD = 'BD' BE = 'BE' BF = 'BF' BG = 'BG' BH = 'BH' BI = 'BI' BJ = 'BJ' BL = 'BL' BM = 'BM' BN = 'BN' BO = 'BO' BQ = 'BQ' BR = 'BR' BS = 'BS' BT = 'BT' BV = 'BV' BW = 'BW' BY = 'BY' BZ = 'BZ' CA = 'CA' CC = 'CC' CD = 'CD' CF = 'CF' CG = 'CG' CH = 'CH' CI = 'CI' CK = 'CK' CL = 'CL' CM = 'CM' CN = 'CN' CO = 'CO' CR = 'CR' CU = 'CU' CV = 'CV' CW = 'CW' CX = 'CX' CY = 'CY' CZ = 'CZ' DE = 'DE' DJ = 'DJ' DK = 'DK' DM = 'DM' DO = 'DO' DZ = 'DZ' EC = 'EC' EE = 'EE' EG = 'EG' EH = 'EH' ER = 'ER' ES = 'ES' ET = 'ET' FI = 'FI' FJ = 'FJ' FK = 'FK' FM = 'FM' FO = 'FO' FR = 'FR' GA = 'GA' GB = 'GB' GD = 'GD' GE = 'GE' GF = 'GF' GG = 'GG' GH = 'GH' GI = 'GI' GL = 'GL' GM = 'GM' GN = 'GN' GP = 'GP' GQ = 'GQ' GR = 'GR' GS = 'GS' GT = 'GT' GU = 'GU' GW = 'GW' GY = 'GY' HK = 'HK' HM = 'HM' HN = 'HN' HR = 'HR' HT = 'HT' HU = 'HU' ID = 'ID' IE = 'IE' IL = 'IL' IM = 'IM' IN_ = 'IN' IO = 'IO' IQ = 'IQ' IR = 'IR' IS_ = 'IS' IT = 'IT' JE = 'JE' JM = 'JM' JO = 'JO' JP = 'JP' KE = 'KE' KG = 'KG' KH = 'KH' KI = 'KI' KM = 'KM' KN = 'KN' KP = 'KP' KR = 'KR' KW = 'KW' KY = 'KY' KZ = 'KZ' LA = 'LA' LB = 'LB' LC = 'LC' LI = 'LI' LK = 'LK' LR = 'LR' LS = 'LS' LT = 'LT' LU = 'LU' LV = 'LV' LY = 'LY' MA = 'MA' MC = 'MC' MD = 'MD' ME = 'ME' MF = 'MF' MG = 'MG' MH = 'MH' MK = 'MK' ML = 'ML' MM = 'MM' MN = 'MN' MO = 'MO' MP = 'MP' MQ = 'MQ' MR = 'MR' MS = 'MS' MT = 'MT' MU = 'MU' MV = 'MV' MW = 'MW' MX = 'MX' MY = 'MY' MZ = 'MZ' NA = 'NA' NC = 'NC' NE = 'NE' NF = 'NF' NG = 'NG' NI = 'NI' NL = 'NL' NO = 'NO' NP = 'NP' NR = 'NR' NU = 'NU' NZ = 'NZ' OM = 'OM' PA = 'PA' PE = 'PE' PF = 'PF' PG = 'PG' PH = 'PH' PK = 'PK' PL = 'PL' PM = 'PM' PN = 'PN' PR = 'PR' PS = 'PS' PT = 'PT' PW = 'PW' PY = 'PY' QA = 'QA' RE = 'RE' RO = 'RO' RS = 'RS' RU = 'RU' RW = 'RW' SA = 'SA' SB = 'SB' SC = 'SC' SD = 'SD' SE = 'SE' SG = 'SG' SH = 'SH' SI = 'SI' SJ = 'SJ' SK = 'SK' SL = 'SL' SM = 'SM' SN = 'SN' SO = 'SO' SR = 'SR' SS = 'SS' ST = 'ST' SV = 'SV' SX = 'SX' SY = 'SY' SZ = 'SZ' TC = 'TC' TD = 'TD' TF = 'TF' TG = 'TG' TH = 'TH' TJ = 'TJ' TK = 'TK' TL = 'TL' TM = 'TM' TN = 'TN' TO = 'TO' TR = 'TR' TT = 'TT' TV = 'TV' TW = 'TW' TZ = 'TZ' UA = 'UA' UG = 'UG' UM = 'UM' US = 'US' UY = 'UY' UZ = 'UZ' VA = 'VA' VC = 'VC' VE = 'VE' VG = 'VG' VI = 'VI' VN = 'VN' VU = 'VU' WF = 'WF' WS = 'WS' YE = 'YE' YT = 'YT' ZA = 'ZA' ZM = 'ZM' ZW = 'ZW' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CustomerContactPersonDto: email: Optional[str] = None first_name: Optional[str] = None last_name: Optional[str] = None phone_number: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CustomerTargetGroupDto: id: Optional[str] = None name: Optional[str] = None is_default: bool = False external_id: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CustomerResult: country_code: Optional[CountryCodeEnum] = None id: Optional[str] = None name: Optional[str] = None customer_number: Optional[int] = None organization_number: Optional[str] = None email: Optional[str] = None care_of: Optional[str] = None address: Optional[str] = None postal_code: Optional[str] = None city: Optional[str] = None electronic_invoice_operator_code: Optional[str] = None electronic_invoice_address: Optional[str] = None customer_group: Optional[int] = None contact_person: Optional[CustomerContactPersonDto] = None target_groups: Optional[List[CustomerTargetGroupDto]] = None expiry_date: Optional[datetime.datetime] = None created: datetime.datetime = datetime.datetime(1, 1, 1) external_id: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BillingMethodCountriesRelation(BaseModel): # @Required() billing_method_id: int = 0 # @Required() country_id: Optional[str] = None modified_date: Optional[datetime.datetime] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BillingMethod(BaseModel): billing_method_countries_relation: Optional[List[BillingMethodCountriesRelation]] = None # @Required() name: Optional[str] = None # @Required() description: Optional[str] = None modified_date: Optional[datetime.datetime] = None id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BillingInformation(BaseModel, IBaseModelCreated, IBaseModelUpdated): billing_method: Optional[BillingMethod] = None # @Required() billing_method_id: int = 0 # @Required() name: Optional[str] = None attention: Optional[str] = None street1: Optional[str] = None street2: Optional[str] = None zip_code: Optional[str] = None city: Optional[str] = None email: Optional[str] = None credit_card: Optional[str] = None credit_card_holder: Optional[str] = None credit_card_number: Optional[str] = None valid_to_year: Optional[int] = None valid_to_month: Optional[int] = None csv: Optional[str] = None # @Required() updated_date: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() created_date: datetime.datetime = datetime.datetime(1, 1, 1) # @Required() country_id: Optional[str] = None # @Required() payment_terms_days: int = 0 vat_registration_number: Optional[str] = None license_plan_id: int = 0 gln: Optional[str] = None reference_line1: Optional[str] = None reference_line2: Optional[str] = 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: company_id: Optional[str] = None 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 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 @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 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 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 KeyCloakRole: id: Optional[str] = None name: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyUser(BaseModel, IUser, IBaseModelCreated, IBaseModelUpdated): resource: Optional[Resource] = None # @Ignore() roles: Optional[List[KeyCloakRole]] = None # @Ignore() company: Optional[Company] = None email: Optional[str] = None # @Ignore() full_name: Optional[str] = None resource_id: Optional[int] = None worker_id: Optional[str] = None # @Required() active: bool = False # @Required() is_super_admin: 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 # @Required() company_id: Optional[str] = None # @Required() id: Optional[str] = None user_id: Optional[str] = None firstname: Optional[str] = None lastname: Optional[str] = None # @Required() send_push_notification: bool = False # @Required() send_push_notification_reminder: bool = False phone: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyOwner(BaseModel): id: int = 0 # @Required() name: Optional[str] = None description: Optional[str] = None logo_type_url: Optional[str] = None # @Required() billing_company_id: Optional[str] = None modified_date: Optional[datetime.datetime] = 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 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 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() voss_customer: Optional[CustomApiResult[CustomerResult]] = None # @Ignore() billing_information: Optional[BillingInformation] = None # @Ignore() company_users: Optional[List[CompanyUser]] = None # @Ignore() company_owner: Optional[CompanyOwner] = 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 type_id: Optional[int] = None modified_date: Optional[datetime.datetime] = None # @Required() id: Optional[str] = None company_owner_id: int = 0 customer_number: int = 0 deletion_notification_date: Optional[datetime.datetime] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ArticleServiceRelation(BaseModel): # @Required() company_id: Optional[str] = None id: int = 0 # @Required() service_id: int = 0 # @Required() article_id: int = 0 class ArticleTypeEnum(IntEnum): SERVICE_ARTICLE = 1 STAND_ALONE_ARTICLE = 2 REBATE_CODE_PUNCH_TICKET_ARTICLE = 3 REBATE_CODE_GIFT_CARD_ARTICLE = 4 REBATE_CODE_VALUE_CARD_ARTICLE = 5 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Article(BaseModel, IBaseModelCreated, IBaseModelUpdated): company: Optional[Company] = None currency_info: Optional[Currency] = None article_service_relations: Optional[List[ArticleServiceRelation]] = None # @Ignore() service_ids: Optional[List[int]] = None # @Ignore() services: Optional[List[Service]] = None # @Ignore() article_type: Optional[ArticleTypeEnum] = None # @Required() company_id: Optional[str] = None id: int = 0 # @Required() name: Optional[str] = None # @Required() article_type_id: int = 0 description: Optional[str] = None image_url: Optional[str] = None # @Required() active: bool = False # @Required() amount: int = 0 # @Required() price: float = 0.0 vat: Optional[Decimal] = None # @Required() # @StringLength(50) currency_id: 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 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 class IBaseModelCreated: created_date: datetime.datetime = datetime.datetime(1, 1, 1) class IBaseModelUpdated: updated_date: datetime.datetime = datetime.datetime(1, 1, 1) 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 TResult = TypeVar('TResult') @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CustomApiResult(Generic[TResult]): data: Optional[TResult] = None success: bool = False error_message: Optional[str] = None status_code: Optional[HttpStatusCode] = None raw_response: Optional[str] = None class IUser: id: Optional[str] = None user_id: Optional[str] = None email: Optional[str] = None firstname: Optional[str] = None lastname: Optional[str] = None phone: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ArticleResponse: company_id: Optional[str] = None id: int = 0 name: Optional[str] = None article_type_id: int = 0 description: Optional[str] = None image_url: Optional[str] = None active: bool = False amount: int = 0 price: float = 0.0 currency_id: Optional[str] = None updated_date: datetime.datetime = datetime.datetime(1, 1, 1) created_date: datetime.datetime = datetime.datetime(1, 1, 1) services: Optional[List[ArticleServiceRelation]] = None service_ids: Optional[List[int]] = None price_sign: Optional[str] = None vat: Optional[Decimal] = None # @Route("/articles", "GET") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class GetArticles(QueryDb2[Article, ArticleResponse], IReturn[QueryResponse[ArticleResponse]], ICompany): # @ApiMember(Description="", IsRequired=true, ParameterType="query") id: Optional[int] = None """ """ # @ApiMember(Description="", IsRequired=true, ParameterType="query") active: Optional[bool] = None """ """ # @ApiMember(Description="") include_service_information: bool = False """ """ # @ApiMember(Description="") company_id: Optional[str] = None """ """