""" Options: Date: 2024-11-21 11:52:39 Version: 8.23 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://api.bokamera.se #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: UpdateRecurringSchedule.* #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 AddRecurringScheduleDate: # @ApiMember(Description="The date for the schedule opening (only date part is used here", IsRequired=true) date: datetime.datetime = datetime.datetime(1, 1, 1) """ The date for the schedule opening (only date part is used here """ # @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) """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ScheduleException: start_time: datetime.timedelta = datetime.timedelta() end_time: datetime.timedelta = datetime.timedelta() @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AddScheduleService: # @ApiMember(Description="The service id", IsRequired=true) id: int = 0 """ The service id """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AddScheduleResource: # @ApiMember(Description="The resource id", IsRequired=true) id: int = 0 """ The resource id """ @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 # @Route("/schedules/recurring/{Id}", "PUT") # @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401) # @ValidateRequest(Validator="IsAuthenticated") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class UpdateRecurringSchedule(IReturn[RecurringScheduleQueryResponse], ICompany): # @ApiMember(Description="Id of the schedule to update", IsRequired=true, ParameterType="path") id: int = 0 """ Id of the schedule to update """ # @ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.") company_id: Optional[str] = None """ The company id, if empty will use the company id for the user you are logged in with. """ # @ApiMember(Description="The schedule name") name: Optional[str] = None """ The schedule name """ # @ApiMember(Description="The schedule description") description: Optional[str] = None """ The schedule description """ # @ApiMember(Description="If schedule is active or not") active: Optional[bool] = None """ If 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: Optional[int] = None """ 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="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: Optional[bool] = None """ 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="The timestamp to which the schedule is valid from", IsRequired=true) valid_from: Optional[datetime.datetime] = None """ The timestamp to which the schedule is valid from """ # @ApiMember(Description="The timestamp to which the schedule is valid to", IsRequired=true) valid_to: Optional[datetime.datetime] = None """ The timestamp to which the schedule is valid to """ # @ApiMember(Description="The time for the schedule opening hours (starttime)", IsRequired=true) start_time: Optional[datetime.timedelta] = None """ The time for the schedule opening hours (starttime) """ # @ApiMember(Description="The time for the schedule opening hours (endtime)", IsRequired=true) end_time: Optional[datetime.timedelta] = None """ 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: Optional[int] = None """ The number of days the schedule is valid from todays date """ # @ApiMember(Description="A comma separated list of which days this day exception belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.") days_of_week: Optional[List[int]] = None """ A comma separated list of which days this day exception belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update. """ # @ApiMember(Description="If not recuring, an array indicating which dates that are open for the schedule.") schedule_dates: Optional[List[AddRecurringScheduleDate]] = None """ If not recuring, an array indicating which dates that are open for the schedule. """ # @ApiMember(Description="Schedule exceptions. For example closed on lunch time between 12AM and 1PM. These times will be removed from the recurring schedule.") exceptions: Optional[List[ScheduleException]] = None """ Schedule exceptions. For example closed on lunch time between 12AM and 1PM. These times will be removed from the recurring schedule. """ # @ApiMember(Description="If the schedule is only connected to some resources, add them here. If empty, it will be used by all resources.") resources: Optional[List[AddScheduleResource]] = None """ If the schedule is only connected to some resources, add them here. If empty, it will be used by all resources. """ # @ApiMember(Description="Set what services the schedule should be connected to.") services: Optional[List[AddScheduleService]] = None """ Set what services the schedule should be connected to. """