""" Options: Date: 2024-12-03 18:31:35 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: UpdateResourceTimeException.* #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 class CollidingBookingOptions(IntEnum): ADD_WITHOUT_CANCELING_COLLIDING_BOOKINGS = 1 ADD_AND_CANCEL_COLLIDING_BOOKINGS = 2 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CreateResourceTimeExceptionBase: # @ApiMember(Description="If this equals true it will it add the time exception with the option you have selected in CollidingBookingOption. Default is to cancel all colliding bookings.") force: bool = False """ If this equals true it will it add the time exception with the option you have selected in CollidingBookingOption. Default is to cancel all colliding bookings. """ # @ApiMember(Description="When Force=true and colliding bookings exsists, this message is the message that are sent to the users when canceling their bookings.") cancel_message: Optional[str] = None """ When Force=true and colliding bookings exsists, this message is the message that are sent to the users when canceling their bookings. """ # @ApiMember(Description="When Force=true and colliding bookings exsists, send cancelmessage as SMS Confirmation") send_sms_confirmation: Optional[bool] = None """ When Force=true and colliding bookings exsists, send cancelmessage as SMS Confirmation """ # @ApiMember(Description="When Force=true and colliding bookings exsists, send cancelmessage as Email Confirmation") send_email_confirmation: Optional[bool] = None """ When Force=true and colliding bookings exsists, send cancelmessage as Email Confirmation """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class TimeExceptionReosurceDetails: # @ApiMember(Description="Ids of the resources that owns this exception") id: int = 0 """ Ids of the resources that owns this exception """ # @ApiMember(Description="Name of the resource") name: Optional[str] = None """ Name of the resource """ # @ApiMember(Description="Description of the resource") description: Optional[str] = None """ Description of the resource """ # @ApiMember(Description="Color of the resource") color: Optional[str] = None """ Color of the resource """ # @ApiMember(Description="Image of the resource") image_url: Optional[str] = None """ Image of the resource """ response_status: Optional[ResponseStatus] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ExceptionCalendarExportStatus: calendar_id: Optional[str] = None exception_id: int = 0 synced: Optional[bool] = None @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 ResourceTimeExceptionQueryResponse: # @ApiMember(Description="Time exception id") id: int = 0 """ Time exception id """ # @ApiMember(Description="Time company id") company_id: Optional[str] = None """ Time company id """ # @ApiMember(Description="If it's locked for editing for the logged in administrator") locked: bool = False """ If it's locked for editing for the logged in administrator """ # @ApiMember(Description="Resources that owns this exception") resource_ids: Optional[List[int]] = None """ Resources that owns this exception """ # @ApiMember(Description="Resources that owns this exception") resources: Optional[List[TimeExceptionReosurceDetails]] = None """ Resources that owns this exception """ # @ApiMember(Description="Indicates wheter or not the time exception is recurring") is_recurring: bool = False """ Indicates wheter or not the time exception is recurring """ # @ApiMember(Description="Time exception starting timestamp") from_: datetime.datetime = field(metadata=config(field_name='from'), default=datetime.datetime(1, 1, 1)) """ Time exception starting timestamp """ # @ApiMember(Description="Time exception ending timestamp") to: datetime.datetime = datetime.datetime(1, 1, 1) """ Time exception ending timestamp """ # @ApiMember(Description="If recurring then this value indicates the time of day when the time exception begins") from_time: datetime.timedelta = datetime.timedelta() """ If recurring then this value indicates the time of day when the time exception begins """ # @ApiMember(Description="If recurring then this value indicates the time of day when the time exception ends") to_time: datetime.timedelta = datetime.timedelta() """ If recurring then this value indicates the time of day when the time exception ends """ # @ApiMember(Description="The reason of the time exception, example: Vacation, doctors appointment, ...") reason_text: Optional[str] = None """ The reason of the time exception, example: Vacation, doctors appointment, ... """ # @ApiMember(Description="The reason of the time exception that could be public to customers, example: Vacation, Closed, Sick leave, ...") reason_text_public: Optional[str] = None """ The reason of the time exception that could be public to customers, example: Vacation, Closed, Sick leave, ... """ # @ApiMember(Description="What hexadecimal color code the exception should have in the scheduler") color: Optional[str] = None """ What hexadecimal color code the exception should have in the scheduler """ # @ApiMember(Description="If the time exception should block the time in the scheduler so it's not avaialable to book") block_time: bool = False """ If the time exception should block the time in the scheduler so it's not avaialable to book """ # @ApiMember(Description="If the ReasonText should only be visible to conncted resources. If false, all resources will be able to see it") private: bool = False """ If the ReasonText should only be visible to conncted resources. If false, all resources will be able to see it """ # @ApiMember(Description="The status for export to calendars like Gcal") calendar_export_status: Optional[ExceptionCalendarExportStatus] = None """ The status for export to calendars like Gcal """ # @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 datetime the exception was created") created: datetime.datetime = datetime.datetime(1, 1, 1) """ The datetime the exception was created """ response_status: Optional[ResponseStatus] = None # @Route("/timeexceptions/{Id}", "PUT") # @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401) # @ApiResponse(Description="You have too low privilegies to call this service", StatusCode=403) # @ApiResponse(Description="Bookings exists that needs to be unbooked before creating this time exceptions, use the /timeexceptions/collidingevents to find which bookings and use the booking service to unbook them", StatusCode=409) # @ValidateRequest(Validator="IsAuthenticated") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class UpdateResourceTimeException(CreateResourceTimeExceptionBase, IReturn[ResourceTimeExceptionQueryResponse], ICompany): # @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="Tome exceptions id", ParameterType="path") id: int = 0 """ Tome exceptions id """ # @ApiMember(Description="Time exception starting datestamp, only the date of day part is used of this value") from_: Optional[datetime.datetime] = field(metadata=config(field_name='from'), default=None) """ Time exception starting datestamp, only the date of day part is used of this value """ # @ApiMember(Description="Time exception ending datestamp, only the date of day part is used of this value") to: Optional[datetime.datetime] = None """ Time exception ending datestamp, only the date of day part is used of this value """ # @ApiMember(Description="Resource id of the resource that owns this exception", IsRequired=true) resource_ids: Optional[List[int]] = None """ Resource id of the resource that owns this exception """ # @ApiMember(Description="This value indicates the time of day when the time exception begins. Example: 10:00. If Recurring this will be the startime for each recurring day.") from_time: Optional[datetime.timedelta] = None """ This value indicates the time of day when the time exception begins. Example: 10:00. If Recurring this will be the startime for each recurring day. """ # @ApiMember(Description="This value indicates the time of day when the time exception ends. Example: 12:00. If Recurring this will be the endtime for each recurring day.") to_time: Optional[datetime.timedelta] = None """ This value indicates the time of day when the time exception ends. Example: 12:00. If Recurring this will be the endtime for each recurring day. """ # @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="The reason of the time exception, example: Vacation, doctors appointment, ...", IsRequired=true) reason_text: Optional[str] = None """ The reason of the time exception, example: Vacation, doctors appointment, ... """ # @ApiMember(Description="The reason of the time exception that could be public to customers, example: Vacation, Closed, Sick leave, ...") reason_text_public: Optional[str] = None """ The reason of the time exception that could be public to customers, example: Vacation, Closed, Sick leave, ... """ # @ApiMember(Description="What hexadecimal color code the exception should have in the scheduler") color: Optional[str] = None """ What hexadecimal color code the exception should have in the scheduler """ # @ApiMember(Description="If the time exception should block the time in the scheduler so it's not avaialable to book") block_time: Optional[bool] = None """ If the time exception should block the time in the scheduler so it's not avaialable to book """ # @ApiMember(Description="If the ReasonText should only be visible to conncted resources. If false, all resources will be able to see it") private: Optional[bool] = None """ If the ReasonText should only be visible to conncted resources. If false, all resources will be able to see it """ # @ApiMember(Description="By default sets to 1, which is to add time exception without canceling colliding bookings") colliding_booking_options: Optional[CollidingBookingOptions] = None """ By default sets to 1, which is to add time exception without canceling colliding bookings """