Requires any of the roles: | bookingsupplier-administrator-write, bookingsupplier-administrator-read, superadmin |
GET | /schedules/recurring | Find recurring schedules for a company |
---|
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
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class QueryBase:
skip: Optional[int] = None
"""
Skip over a given number of elements in a sequence and then return the remainder. Use this when you need paging.<br/><br/><strong>Example:</strong><br/><code>?skip=10&orderBy=Id</code>
"""
take: Optional[int] = None
"""
Return a given number of elements in a sequence and then skip over the remainder. Use this when you need paging.<br/><br/><strong>Example:</strong><br/><code>?take=20</code>
"""
order_by: Optional[str] = None
"""
Comma separated list of fields to order by. Prefix the field name with a minus if you wan't to invert the sort for that field.<br/><br/><strong>Example:</strong><br/><code>?orderBy=Id,-Age,FirstName</code>
"""
order_by_desc: Optional[str] = None
"""
Comma separated list of fields to order by in descending order. Prefix the field name with a minus if you wan't to invert the sort for that field.<br/><br/><strong>Example:</strong><br/><code>?orderByDesc=Id,-Age,FirstName</code>
"""
include: Optional[str] = None
"""
Include any of the aggregates <code>AVG, COUNT, FIRST, LAST, MAX, MIN, SUM</code> in your result set. The results will be returned in the meta field.<br/><br/><strong>Example:</strong><br/><code>?include=COUNT(*) as Total</code><br/><br/>or multiple fields with<br/><code>?include=Count(*) Total, Min(Age), AVG(Age) AverageAge</code><br/></br>or unique with<br/><code>?include=COUNT(DISTINCT LivingStatus) as UniqueStatus</code>
"""
fields: Optional[str] = None
meta: Optional[Dict[str, str]] = None
From = TypeVar('From')
Into = TypeVar('Into')
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class QueryDb2(Generic[From, Into], QueryBase, IReturn[QueryResponse[Into]]):
@staticmethod
def response_type(): return QueryResponse[Into]
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DayOfWeekDto:
day_of_week_id: int = 0
dot_net_day_of_week_id: int = 0
day_of_week: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ScheduleResources:
id: int = 0
# @ApiMember(Description="Name of the resource")
name: Optional[str] = None
"""
Name of the resource
"""
# @ApiMember(Description="The image url of the resource")
image_url: Optional[str] = None
"""
The image url of the resource
"""
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ScheduleServices:
id: int = 0
# @ApiMember(Description="Name of the service")
name: Optional[str] = None
"""
Name of the service
"""
# @ApiMember(Description="The image url of the service")
image_url: Optional[str] = None
"""
The image url of the service
"""
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RecurringScheduleExceptionResponse:
# @ApiMember(Description="Start time of the schedule exception.")
start_time: datetime.timedelta = datetime.timedelta()
"""
Start time of the schedule exception.
"""
# @ApiMember(Description="End time of the schedule exception.")
end_time: datetime.timedelta = datetime.timedelta()
"""
End time of the schedule exception.
"""
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RecurringScheduleDateResponse:
id: int = 0
date: datetime.datetime = datetime.datetime(1, 1, 1)
start_time: datetime.timedelta = datetime.timedelta()
end_time: datetime.timedelta = datetime.timedelta()
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RecurringScheduleQueryResponse:
# @ApiMember(Description="The schedule id")
id: int = 0
"""
The schedule id
"""
# @ApiMember(Description="Name of the schedule")
name: Optional[str] = None
"""
Name of the schedule
"""
# @ApiMember(Description="Description of the schedule")
description: Optional[str] = None
"""
Description of the schedule
"""
# @ApiMember(Description="If the schedule is active or not")
active: bool = False
"""
If the schedule is active or not
"""
# @ApiMember(Description="Time interval for available times Here you set the interval at which times should appear. For example, if you select the range 15minutes, and your service has an duration of 1 hour and opening hours are 9AM to 6PM you will see the following suggested times: 09AM-10PM 09:15AM-10:15PM, 09:30AM-10:30PM , ..... 04:45PM-05:45, 05:00PM-06:00PM", IsRequired=true)
time_interval: int = 0
"""
Time interval for available times Here you set the interval at which times should appear. For example, if you select the range 15minutes, and your service has an duration of 1 hour and opening hours are 9AM to 6PM you will see the following suggested times: 09AM-10PM 09:15AM-10:15PM, 09:30AM-10:30PM , ..... 04:45PM-05:45, 05:00PM-06:00PM
"""
# @ApiMember(Description="The timestamp to which the schedule is valid from", IsRequired=true)
valid_from: datetime.datetime = datetime.datetime(1, 1, 1)
"""
The timestamp to which the schedule is valid from
"""
# @ApiMember(Description="The timestamp to which the schedule is valid to", IsRequired=true)
valid_to: datetime.datetime = datetime.datetime(1, 1, 1)
"""
The timestamp to which the schedule is valid to
"""
# @ApiMember(Description="The time for the schedule opening hours (starttime)", IsRequired=true)
start_time: datetime.timedelta = datetime.timedelta()
"""
The time for the schedule opening hours (starttime)
"""
# @ApiMember(Description="The time for the schedule opening hours (endtime)", IsRequired=true)
end_time: datetime.timedelta = datetime.timedelta()
"""
The time for the schedule opening hours (endtime)
"""
# @ApiMember(Description="The number of days the schedule is valid from todays date", IsRequired=true)
number_of_schedule_days: int = 0
"""
The number of days the schedule is valid from todays date
"""
# @ApiMember(Description="If the schedule is only connected to some specific resources. Note: You must have IncludeResources property to see this.", IsRequired=true)
is_resource_specific: Optional[bool] = None
"""
If the schedule is only connected to some specific resources. Note: You must have IncludeResources property to see this.
"""
# @ApiMember(Description="The timestamp when the schedule was updated", IsRequired=true)
updated_date: datetime.datetime = datetime.datetime(1, 1, 1)
"""
The timestamp when the schedule was updated
"""
# @ApiMember(Description="The timestamp when the schedule was created", IsRequired=true)
created_date: datetime.datetime = datetime.datetime(1, 1, 1)
"""
The timestamp when the schedule was created
"""
# @ApiMember(Description="Allow bookings end time exceeds the opening hours Here you can choose whether it should be possible to make a reservation exceeding the opening hours. This should be ticked when a service duration is longer than 24 hours (possible to book over midnight).", IsRequired=true)
enable_booking_until_closing_time: bool = False
"""
Allow bookings end time exceeds the opening hours Here you can choose whether it should be possible to make a reservation exceeding the opening hours. This should be ticked when a service duration is longer than 24 hours (possible to book over midnight).
"""
# @ApiMember(Description="If recurring, an array indicating which days of the week the exception recures on where 1 = Monday .. 7 = Sunday. When recurring then the time portion of the Fields From and To indicates the time of day the recurrence occurs")
days_of_week: Optional[List[DayOfWeekDto]] = None
"""
If recurring, an array indicating which days of the week the exception recures on where 1 = Monday .. 7 = Sunday. When recurring then the time portion of the Fields From and To indicates the time of day the recurrence occurs
"""
# @ApiMember(Description="The resources that is connected to the schedule")
resources: Optional[List[ScheduleResources]] = None
"""
The resources that is connected to the schedule
"""
# @ApiMember(Description="The services that is connected to the schedule")
services: Optional[List[ScheduleServices]] = None
"""
The services that is connected to the schedule
"""
# @ApiMember(Description="The exceptions that is added to the schedule")
exceptions: Optional[List[RecurringScheduleExceptionResponse]] = None
"""
The exceptions that is added to the schedule
"""
# @ApiMember(Description="Schedule dates, used when the schedule is not a rolling schedule using days of week")
schedule_dates: Optional[List[RecurringScheduleDateResponse]] = None
"""
Schedule dates, used when the schedule is not a rolling schedule using days of week
"""
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BaseModel:
pass
class ScheduleType(str, Enum):
NOT_DEFINED = 'NotDefined'
RECURRING_SCHEDULE = 'RecurringSchedule'
DATE_SCHEDULE = 'DateSchedule'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RecurringScheduleDate(BaseModel, IInterval):
# @Ignore()
from_: datetime.datetime = field(metadata=config(field_name='from'), default=datetime.datetime(1, 1, 1))
# @Ignore()
to: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
company_id: Optional[str] = None
id: int = 0
# @Required()
recurring_schedule_id: int = 0
# @Required()
date: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
start_time: datetime.timedelta = datetime.timedelta()
# @Required()
end_time: datetime.timedelta = datetime.timedelta()
modified_date: Optional[datetime.datetime] = None
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
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 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 ResourceType(BaseModel, IBaseModelCreated, IBaseModelUpdated):
# @Ignore()
selectable_by_user: bool = False
# @Ignore()
resources: Optional[List[Resource]] = None
# @Required()
company_id: Optional[str] = None
id: int = 0
# @Required()
name: Optional[str] = None
description: Optional[str] = None
# @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
@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 TotalPriceInformation:
total_price: float = 0.0
total_v_a_t_amount: float = 0.0
total_rebate: float = 0.0
total_price_before_rebate: float = 0.0
applied_codes: Optional[List[AppliedRebateCodes]] = None
price_sign: Optional[str] = None
currency_id: Optional[str] = None
vat: Decimal = decimal.Decimal(0)
class Currency(IntEnum):
SEK = 1
EUR = 2
@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
class BokaMeraDayOfWeek(IntEnum):
MONDAY = 1
TUESDAY = 2
WEDNESDAY = 3
THURSDAY = 4
FRIDAY = 5
SATURDAY = 6
SUNDAY = 7
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ServicePriceDayOfWeekRelation(BaseModel):
# @Ignore()
day_of_week: Optional[BokaMeraDayOfWeek] = None
# @Required()
company_id: Optional[str] = None
# @Required()
service_price_id: int = 0
# @Required()
day_of_week_id: int = 0
modified_date: Optional[datetime.datetime] = None
id: int = 0
class IDbConnectionFactory:
pass
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ServerData:
htt_p__h_o_s_t: Optional[str] = None
htt_p__c_o_n_n_e_c_t_i_o_n: Optional[str] = None
htt_p__c_a_c_h_e__c_o_n_t_r_o_l: Optional[str] = None
htt_p__a_c_c_e_p_t: Optional[str] = None
htt_p__u_s_e_r__a_g_e_n_t: Optional[str] = None
htt_p__a_c_c_e_p_t__e_n_c_o_d_i_n_g: Optional[str] = None
htt_p__a_c_c_e_p_t__l_a_n_g_u_a_g_e: Optional[str] = None
path: Optional[str] = None
serve_r__s_o_f_t_w_a_r_e: Optional[str] = None
serve_r__n_a_m_e: Optional[str] = None
serve_r__a_d_d_r: Optional[str] = None
serve_r__p_o_r_t: Optional[str] = None
remot_e__a_d_d_r: Optional[str] = None
remot_e__p_o_r_t: Optional[str] = None
gatewa_y__i_n_t_e_r_f_a_c_e: Optional[str] = None
serve_r__p_r_o_t_o_c_o_l: Optional[str] = None
reques_t__m_e_t_h_o_d: Optional[str] = None
quer_y__s_t_r_i_n_g: Optional[str] = None
reques_t__t_i_m_e: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Credentials:
hash: Optional[str] = None
id: Optional[str] = None
version: Optional[str] = None
client: Optional[str] = None
serverdata: Optional[ServerData] = None
time: Optional[str] = None
test: Optional[str] = None
language: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CheckoutData:
terms: Optional[str] = None
privacy_policy: Optional[str] = None
redirect_on_success: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CheckoutPaymentData:
currency: Optional[str] = None
language: Optional[str] = None
country: Optional[str] = None
autoactivate: Optional[str] = None
orderid: Optional[str] = None
returnmethod: Optional[str] = None
accepturl: Optional[str] = None
cancelurl: Optional[str] = None
callbackurl: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PaymentInfo:
paymentdate: Optional[str] = None
paymentterms: Optional[str] = None
yourreference: Optional[str] = None
ourreference: Optional[str] = None
projectname: Optional[str] = None
deliverymethod: Optional[str] = None
deliveryterms: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CartHandling:
withouttax: Optional[str] = None
taxrate: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CartTotal:
rounding: Optional[str] = None
withouttax: Optional[str] = None
tax: Optional[str] = None
withtax: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Shipping:
firstname: Optional[str] = None
lastname: Optional[str] = None
company: Optional[str] = None
street: Optional[str] = None
street2: Optional[str] = None
zip: Optional[str] = None
city: Optional[str] = None
country: Optional[str] = None
phone: Optional[str] = None
withouttax: Optional[str] = None
taxrate: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Cart:
handling: Optional[CartHandling] = None
total: Optional[CartTotal] = None
shipping: Optional[Shipping] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CustomerBilling:
firstname: Optional[str] = None
lastname: Optional[str] = None
company: Optional[str] = None
street: Optional[str] = None
street2: Optional[str] = None
zip: Optional[str] = None
city: Optional[str] = None
country: Optional[str] = None
phone: Optional[str] = None
email: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class QvicklyCustomer:
nr: Optional[str] = None
pno: Optional[str] = None
billing: Optional[CustomerBilling] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InitCheckoutData:
checkout_data: Optional[CheckoutData] = None
payment_data: Optional[CheckoutPaymentData] = None
payment_info: Optional[PaymentInfo] = None
articles: Optional[List[QvicklyArticle]] = None
cart: Optional[Cart] = None
qvickly_customer: Optional[QvicklyCustomer] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InitCheckoutRequestBody:
credentials: Optional[Credentials] = None
data: Optional[InitCheckoutData] = None
function: Optional[str] = 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
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class QvikclyPaymentData:
method: Optional[str] = None
paymentplanid: Optional[str] = None
currency: Optional[str] = None
country: Optional[str] = None
language: Optional[str] = None
autoactivate: Optional[str] = None
orderid: Optional[str] = None
status: Optional[str] = None
paymentid_related: Optional[str] = None
url: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Card:
promptname: Optional[str] = None
recurring: Optional[str] = None
recurringnr: Optional[str] = None
accepturl: Optional[str] = None
cancelurl: Optional[str] = None
callbackurl: Optional[str] = None
returnmethod: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Settlement:
number: Optional[str] = None
date: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class QvicklyPaymentResponse:
payment_data: Optional[QvikclyPaymentData] = None
payment_info: Optional[PaymentInfo] = None
card: Optional[Card] = None
settlement: Optional[Settlement] = None
qvickly_customer: Optional[QvicklyCustomer] = None
articles: Optional[List[QvicklyArticle]] = None
cart: Optional[Cart] = 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 CustomerType(str, Enum):
PERSON = 'Person'
BUSINESS = 'Business'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class UserAccessKeys(BaseModel):
# @Required()
company_id: Optional[str] = None
# @Required()
access_key_type_id: int = 0
# @Required()
value: Optional[str] = None
# @Required()
customer_id: Optional[str] = None
description: Optional[str] = None
# @Required()
id: 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
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
send_customer_information_to_external_providers: bool = False
# @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()
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 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
@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
active: bool = False
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
@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 CustomerComment(BaseModel):
# @Required()
company_id: Optional[str] = None
id: int = 0
# @Required()
customer_id: Optional[str] = None
# @Required()
comments: Optional[str] = None
# @Required()
updated: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
created: datetime.datetime = datetime.datetime(1, 1, 1)
image_url: Optional[str] = None
modified_date: Optional[datetime.datetime] = 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()
company: Optional[Company] = None
# @Ignore()
custom_fields_config: Optional[IList[CustomFieldConfig]] = None
# @Ignore()
custom_fields_data: Optional[IList[CustomFieldDataResponse]] = None
# @Ignore()
comments: Optional[IList[CustomerComment]] = None
# @Ignore()
rebate_codes: Optional[IList[RebateCode]] = 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
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
class IPaysonPaymentCheckout1:
pass
@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()
internal_reference_id: Optional[str] = None
# @Required()
article_type_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 PayableEntity(BaseModel, IPayableEntity):
# @Ignore()
db_factory: Optional[IDbConnectionFactory] = None
# @Ignore()
qvickly_payment_manager: Optional[IBokameraPaymentManager[InitCheckoutRequestBody, QvicklyCheckoutResponse, QvicklyPaymentResponse]] = None
# @Ignore()
payson2_payment_manager: Optional[IBokameraPaymentManager[Payson2CheckoutResponse, Payson2CheckoutResponse, Payson2CheckoutResponse]] = None
# @Ignore()
payson_payment_checkout1: Optional[IPaysonPaymentCheckout1] = None
# @Ignore()
logger: Optional[ILogger[PayableEntity]] = None
# @Ignore()
internal_reference_id: Optional[str] = None
# @Ignore()
payment_log: Optional[List[PaymentLog]] = None
company_id: Optional[str] = None
price_vat: Optional[Decimal] = None
# @References(typeof(Currency))
currency_id: Optional[str] = None
# @Ignore()
customer: Optional[Customer] = None
# @Ignore()
customers: Optional[List[Customer]] = None
# @Ignore()
company: Optional[Company] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RebateCodeStatus(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 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()
article_type: Optional[ArticleTypeEnum] = None
# @Ignore()
article_type_name: Optional[str] = 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
# @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
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RebateCodeDayOfWeekRelation(BaseModel):
# @Ignore()
day_of_week: Optional[BokaMeraDayOfWeek] = None
# @Required()
day_of_week_id: int = 0
# @Required()
rebate_code_id: int = 0
# @Required()
company_id: Optional[str] = None
id: int = 0
modified_date: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RebateCodeServiceRelation(BaseModel):
# @Required()
company_id: Optional[str] = None
# @Required()
service_id: int = 0
# @Required()
rebate_code_id: int = 0
id: int = 0
modified_date: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RebateCodeBookingPriceRelation(BaseModel):
# @Required()
company_id: Optional[str] = None
# @Required()
price_id: int = 0
# @Required()
rebate_code_id: int = 0
id: int = 0
modified_date: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RebateCodeCustomerRelation(BaseModel):
# @Required()
company_id: Optional[str] = None
# @Required()
customer_id: Optional[str] = None
# @Required()
rebate_code_id: int = 0
id: int = 0
modified_date: Optional[datetime.datetime] = None
rebate_code_email_sent_to_customer: bool = False
message_to_receiver: Optional[str] = None
buyer: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DaysOfWeek(BaseModel):
# @Required()
day_of_week: Optional[str] = None
# @Required()
day_of_week_translation: Optional[str] = None
day_of_week_active: Optional[bool] = None
day_of_week_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 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
@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 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()
internal_reference_id: Optional[str] = None
# @Required()
article_type_id: int = 0
# @Required()
external_response_data: Optional[str] = None
# @Required()
external_response_reference: Optional[str] = None
# @Required()
payment_provider_id: int = 0
# @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 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
@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 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 Booking(PayableEntity, IInterval, ICustomFieldTable, IBaseModelUpdated, IBaseModelCreated):
# @Ignore()
service: Optional[Service] = None
# @Ignore()
calendar_export: Optional[CalendarExport] = None
# @Ignore()
log: Optional[List[BookingLog]] = 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
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()
deterministic_id: Optional[str] = None
# @Ignore()
active: bool = False
# @Ignore()
last_time_to_un_book: Optional[datetime.datetime] = None
# @Ignore()
price_mappings: Optional[List[PriceMapping]] = None
# @Ignore()
internal_reference_id: Optional[str] = None
# @Required()
updated_date: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
created_date: datetime.datetime = datetime.datetime(1, 1, 1)
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
# @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)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RebateCodeTransaction(BaseModel, IBaseModelCreated, IBaseModelUpdated):
# @Ignore()
booking: Optional[Booking] = None
# @Ignore()
rebate_code: Optional[RebateCode] = None
# @Ignore()
customer: Optional[Customer] = None
id: int = 0
company_id: Optional[str] = None
note: Optional[str] = None
# @Required()
rebate_code_id: int = 0
# @Required()
amount: float = 0.0
# @Required()
usage: int = 0
booking_id: Optional[int] = None
# @Required()
updated_date: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
created_date: datetime.datetime = datetime.datetime(1, 1, 1)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RebateCode(PayableEntity):
# @References(typeof(RebateCodeType))
rebate_code_type_id: int = 0
rebate_code_type_info: Optional[RebateCodeType] = None
# @References(typeof(RebateCodeStatus))
rebate_code_status_id: int = 0
rebate_code_status_info: Optional[RebateCodeStatus] = None
# @Ignore()
article: Optional[Article] = None
# @Ignore()
services: Optional[List[Service]] = None
rebate_code_day_of_week_relation: Optional[List[RebateCodeDayOfWeekRelation]] = None
rebate_code_service_relation: Optional[List[RebateCodeServiceRelation]] = None
rebate_code_booking_price_relation: Optional[List[RebateCodeBookingPriceRelation]] = None
rebate_code_customer_relation: Optional[List[RebateCodeCustomerRelation]] = None
# @Ignore()
services_names: Optional[str] = None
# @Ignore()
days_of_week: Optional[List[DaysOfWeek]] = None
# @Ignore()
rebate_code_status: Optional[RebateCodeStatus] = None
# @Ignore()
rebate_code_type: Optional[RebateCodeType] = None
# @Ignore()
transactions: Optional[List[RebateCodeTransaction]] = None
# @Ignore()
remaining_amount: Optional[float] = None
# @Ignore()
remaining_usage: Optional[int] = None
# @Ignore()
current_number_of_uses_per_customer: int = 0
# @Ignore()
is_specific_by_day_of_week: bool = False
# @Ignore()
active: bool = False
# @Ignore()
active_by_status: bool = False
# @Ignore()
rebate_code_currency_sign: Optional[str] = None
currency_info: Optional[Currency] = None
# @Ignore()
payment_received: bool = False
# @Ignore()
internal_reference_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()
rebate_code_sign: Optional[str] = None
# @Required()
rebate_code_value: int = 0
# @Required()
max_number_of_uses: int = 0
# @Required()
max_number_of_uses_per_customer: int = 0
# @Required()
number_of_uses_used: int = 0
personal_note: Optional[str] = None
# @Required()
created_by: Optional[str] = None
# @Required()
created: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
updated_by: Optional[str] = None
# @Required()
updated_date: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
from_time: datetime.timedelta = datetime.timedelta()
# @Required()
to_time: datetime.timedelta = datetime.timedelta()
modified_date: Optional[datetime.datetime] = None
id: int = 0
article_id: Optional[int] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ServicePrice(BaseModel, IInterval):
# @References(typeof(Currency))
currency_id: Optional[str] = None
currency_info: Optional[Currency] = None
# @Ignore()
service: Optional[Service] = None
# @Ignore()
price_mappings: Optional[List[PriceMapping]] = None
# @Ignore()
is_time_specific: bool = False
# @Ignore()
is_days_of_week_specific: bool = False
day_of_weeks: Optional[List[ServicePriceDayOfWeekRelation]] = None
# @Ignore()
price_before_rebate: Optional[float] = None
# @Ignore()
rebate_codes_applied: Optional[List[RebateCode]] = None
# @Ignore()
price_text: Optional[str] = None
# @Ignore()
overlapping_prices: Optional[List[ServicePrice]] = None
# @Required()
company_id: Optional[str] = None
id: int = 0
# @Required()
service_id: int = 0
price: Optional[float] = None
# @Required()
updated: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
created: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
from_time: datetime.timedelta = datetime.timedelta()
# @Required()
to_time: datetime.timedelta = datetime.timedelta()
# @Required()
vat: Decimal = decimal.Decimal(0)
category: Optional[str] = None
modified_date: Optional[datetime.datetime] = 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)
# @Required()
calculation_type_id: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Service(BaseModel, ICustomFieldTable, IBaseModelCreated, IBaseModelUpdated):
# @Ignore()
resource_types: Optional[List[ResourceType]] = None
# @Ignore()
resources: Optional[List[Resource]] = None
# @Ignore()
total_price: Optional[TotalPriceInformation] = None
# @Ignore()
prices: Optional[List[ServicePrice]] = None
# @Ignore()
booking_status_options: Optional[List[BookingStatusOptions]] = None
# @Ignore()
is_group_booking: bool = False
# @Ignore()
is_multiple_resource: bool = False
# @Ignore()
settings: Optional[BookingSettings] = None
# @Ignore()
payment_setting: Optional[PaymentSetting] = None
# @Ignore()
booking_custom_fields_config: Optional[IList[CustomFieldConfig]] = None
# @Ignore()
customer_custom_fields_config: Optional[IList[CustomFieldConfig]] = None
# @Ignore()
custom_fields_config: Optional[IList[CustomFieldConfig]] = None
# @Ignore()
custom_fields_data: Optional[IList[CustomFieldDataResponse]] = None
# @Ignore()
schedules: Optional[IList[ISchedule]] = None
# @Ignore()
customer_active_bookings: Optional[IList[Booking]] = None
# @Ignore()
schedule_type: Optional[ScheduleType] = None
# @Ignore()
last_time_to_unbook_threshold: datetime.timedelta = datetime.timedelta()
# @Ignore()
last_time_to_book_threshold: datetime.timedelta = datetime.timedelta()
# @Ignore()
rating_score: Optional[AverageRatingScore] = None
# @Ignore()
ratings: Optional[List[Rating]] = None
# @Required()
company_id: Optional[str] = None
id: int = 0
# @Required()
name: Optional[str] = None
# @Required()
description: Optional[str] = None
group: Optional[str] = None
# @Required()
active: bool = False
# @Required()
sort_order: int = 0
# @Required()
pause_after_booking: int = 0
# @Required()
unbook_before_days: int = 0
# @Required()
unbook_before_hours: int = 0
# @Required()
unbook_before_minutes: int = 0
# @Required()
book_before_days: int = 0
# @Required()
book_before_hours: int = 0
# @Required()
book_before_minutes: int = 0
duration: Optional[int] = None
duration_type_id: int = 0
min_duration: Optional[int] = None
max_duration: Optional[int] = None
duration_interval: Optional[int] = None
total_spots: Optional[int] = None
image_url: Optional[str] = None
# @Required()
schedule_type_id: int = 0
# @Required()
updated_date: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
created_date: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
only_visible_by_admin: bool = False
# @Required()
min_number_of_spots_per_booking: int = 0
# @Required()
max_number_of_spots_per_booking: int = 0
# @Required()
min_number_of_resources_to_book: int = 0
# @Required()
max_number_of_resources_to_book: int = 0
# @Required()
is_payment_enabled: bool = False
# @Required()
max_payment_time: int = 0
# @Required()
lock_spots_to_booking: bool = False
# @Required()
enable_booking_queue: bool = False
modified_date: Optional[datetime.datetime] = None
# @Required()
booking_status_id: int = 0
# @Required()
enable_code_lock_sync: bool = False
# @Required()
enable_customer_manual_payment: bool = False
price_view_type_id: Optional[int] = 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 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 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 RecurringScheduleResourceRelation(BaseModel):
# @Required()
company_id: Optional[str] = None
# @Required()
recurring_schedule_id: int = 0
# @Required()
resource_id: int = 0
id: int = 0
modified_date: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RecurringScheduleDayOfWeekRelation(BaseModel):
# @Ignore()
day_of_week: Optional[BokaMeraDayOfWeek] = None
# @Required()
day_of_week_id: int = 0
# @Required()
company_id: Optional[str] = None
# @Required()
recurring_schedule_id: int = 0
id: int = 0
modified_date: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ServiceRecurringScheduleRelation(BaseModel):
# @Required()
company_id: Optional[str] = None
# @Required()
service_id: int = 0
# @Required()
recurring_schedule_id: int = 0
id: int = 0
modified_date: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RecurringScheduleException(BaseModel, IScheduleException):
# @Required()
company_id: Optional[str] = None
# @Required()
recurring_schedule_id: int = 0
id: int = 0
modified_date: Optional[datetime.datetime] = None
# @Required()
start_time: datetime.timedelta = datetime.timedelta()
# @Required()
end_time: datetime.timedelta = datetime.timedelta()
class IScheduleException:
start_time: datetime.timedelta = datetime.timedelta()
end_time: datetime.timedelta = datetime.timedelta()
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RecurringSchedule(BaseModel, ISchedule, IBaseModelCreated, IBaseModelUpdated):
# @Ignore()
type: Optional[ScheduleType] = None
# @Ignore()
dates: Optional[IList[RecurringScheduleDate]] = None
# @Ignore()
resources: Optional[IList[Resource]] = None
# @Ignore()
services: Optional[IList[Service]] = None
recurring_schedule_resource_relation: Optional[List[RecurringScheduleResourceRelation]] = None
recurring_schedule_dates: Optional[List[RecurringScheduleDate]] = None
recurring_schedule_day_of_week_relation: Optional[List[RecurringScheduleDayOfWeekRelation]] = None
service_recurring_schedule_relation: Optional[List[ServiceRecurringScheduleRelation]] = None
recurring_schedule_exceptions: Optional[List[RecurringScheduleException]] = None
# @Ignore()
exceptions: Optional[IList[IScheduleException]] = None
# @Ignore()
is_recurring_by_day_of_week: bool = False
# @Ignore()
is_recurring_by_dates: bool = False
# @Ignore()
is_resource_specific: bool = False
# @Required()
company_id: Optional[str] = None
id: int = 0
# @Required()
name: Optional[str] = None
# @Required()
description: Optional[str] = None
# @Required()
time_interval: int = 0
# @Required()
start_time: datetime.timedelta = datetime.timedelta()
# @Required()
end_time: datetime.timedelta = datetime.timedelta()
# @Required()
number_of_schedule_days: int = 0
# @Required()
updated_date: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
created_date: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
enable_booking_until_closing_time: bool = False
# @Required()
valid_from: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
valid_to: datetime.datetime = datetime.datetime(1, 1, 1)
modified_date: Optional[datetime.datetime] = None
# @Required()
active: bool = False
# @ValidateRequest(Validator="IsAuthenticated")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RecuringScheduleQuery(QueryDb2[RecurringSchedule, RecurringScheduleQueryResponse]):
# @ApiMember(Description="Enter the company you want to see news for, if blank and you are an admin, your company id will be used", ParameterType="path")
company_id: Optional[str] = None
"""
Enter the company you want to see news for, if blank and you are an admin, your company id will be used
"""
# @ApiMember(DataType="dateTime", Description="Enter the From Date you want to see news from, only allowed if admin", ParameterType="query")
valid_from: Optional[datetime.datetime] = None
"""
Enter the From Date you want to see news from, only allowed if admin
"""
# @ApiMember(DataType="dateTime", Description="Enter the To Date you want to see news to, only allowed if admin", ParameterType="query")
valid_to: Optional[datetime.datetime] = None
"""
Enter the To Date you want to see news to, only allowed if admin
"""
# @ApiMember(DataType="bool", Description="If you want to include the connected days for the schedule", ParameterType="query")
include_recurring_days: bool = False
"""
If you want to include the connected days for the schedule
"""
# @ApiMember(DataType="bool", Description="If you want to include the connected resources for the schedule", ParameterType="query")
include_connected_resources: bool = False
"""
If you want to include the connected resources for the schedule
"""
# @ApiMember(DataType="bool", Description="If you want to include the connected services for the schedule", ParameterType="query")
include_connected_services: bool = False
"""
If you want to include the connected services for the schedule
"""
# @ApiMember(DataType="bool", Description="If you want to include the exceptions for the schedule", ParameterType="query")
include_exceptions: bool = False
"""
If you want to include the exceptions for the schedule
"""
# @ApiMember(DataType="boolean", Description="Use this parameter if you want to only show active news")
active: Optional[bool] = None
"""
Use this parameter if you want to only show active news
"""
# @ApiMember(DataType="bool", Description="If you want to include the connected dates for the schedule. This is used when the schedule having setting, different opening hours per week (not rolling schedule using days of week).", ParameterType="query")
include_schedule_dates: bool = False
"""
If you want to include the connected dates for the schedule. This is used when the schedule having setting, different opening hours per week (not rolling schedule using days of week).
"""
@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
TCreatedCheckoutResponse = TypeVar('TCreatedCheckoutResponse')
TCheckoutResponse = TypeVar('TCheckoutResponse')
TPaymentResponse = TypeVar('TPaymentResponse')
class IBokameraPaymentManager(Generic[TCreatedCheckoutResponse, TCheckoutResponse, TPaymentResponse]):
pass
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class QvicklyArticle:
artnr: Optional[str] = None
title: Optional[str] = None
quantity: int = 0
aprice: int = 0
tax: int = 0
discount: int = 0
withouttax: int = 0
taxrate: int = 0
@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
TCategoryName = TypeVar('TCategoryName')
class ILogger(Generic[TCategoryName], ILogger):
pass
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AccessKeyTypeResponse:
id: int = 0
key_type: Optional[str] = None
description: Optional[str] = None
AccessKeyTypeResponse = TypeVar('AccessKeyTypeResponse')
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class QueryResponse(Generic[AccessKeyTypeResponse]):
offset: int = 0
total: int = 0
results: Optional[List[AccessKeyTypeResponse]] = None
meta: Optional[Dict[str, str]] = None
response_status: Optional[ResponseStatus] = None
Python RecuringScheduleQuery DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json
To embed the response in a jsonp callback, append ?callback=myCallback
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /schedules/recurring HTTP/1.1 Host: api.bokamera.se Accept: application/json
HTTP/1.1 200 OK Content-Type: application/json Content-Length: length {"Offset":0,"Total":0,"Results":[{"Id":0,"Name":"String","Description":"String","Active":false,"TimeInterval":0,"StartTime":"00:00:00","EndTime":"00:00:00","NumberOfScheduleDays":0,"IsResourceSpecific":false,"EnableBookingUntilClosingTime":false,"DaysOfWeek":[{"DayOfWeekId":0,"DotNetDayOfWeekId":0,"DayOfWeek":"String"}],"Resources":[{"Id":0,"Name":"String"}],"Services":[{"Id":0,"Name":"String"}],"Exceptions":[{"StartTime":"00:00:00","EndTime":"00:00:00"}],"ScheduleDates":[{"Id":0,"StartTime":"00:00:00","EndTime":"00:00:00","ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}],"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}],"Meta":{"String":"String"},"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}