(* Options: Date: 2024-07-03 12:34:08 Version: 8.23 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.bokamera.se //GlobalNamespace: //MakeDataContractsExtensible: False //AddReturnMarker: True //AddDescriptionAsComments: True //AddDataContractAttributes: False //AddIndexesToDataMembers: False //AddGeneratedCodeAttributes: False //AddResponseStatus: False //AddImplicitVersion: //ExportValueTypes: False IncludeTypes: CreateBooking.* //ExcludeTypes: //InitializeCollections: True //AddNamespaces: *) namespace BokaMera.API.ServiceModel.Dtos open System open System.Collections open System.Collections.Generic open System.Runtime.Serialization open ServiceStack open ServiceStack.DataAnnotations open System.Globalization open System.IO [] type BookingStatusQueryResponse() = member val Id:Int32 = new Int32() with get,set member val Name:String = null with get,set member val Description:String = null with get,set member val Icon:String = null with get,set member val Color:String = null with get,set type BookingStatusEnum = | Booked = 1 | Unbooked = 2 | Reserved = 3 | Canceled = 4 | AwaitingPayment = 5 | AwaitingPaymentNoTimeLimit = 6 | Payed = 7 | AwaitingPaymentRequestFromAdmin = 8 | AwaitingPaymentFromProvider = 9 | Invoiced = 10 [] type AddCustomField() = member val Id:Int32 = new Int32() with get,set member val Value:String = null with get,set type PaymentOptions = | DefaultSetting = 0 | BookWithoutPayment = 1 | BookWithPaymentMessageToCustomer = 2 | BookWithManualPayment = 3 [] type CustomerToBook() = /// ///Customers firstname /// [] member val Firstname:String = null with get,set /// ///Customers lastname /// [] member val Lastname:String = null with get,set /// ///Customers email /// [] member val Email:String = null with get,set /// ///Customers phone number. Mobile phone number is required for SMS messages to be sent. /// [] member val Phone:String = null with get,set [] type ResourceToBook() = member val ResourceTypeId:Int32 = new Int32() with get,set member val ResourceId:Int32 = new Int32() with get,set [] type CreateBookingBase() = /// ///The company id, if empty will use the company id for the user you are logged in with. /// [] member val CompanyId:Nullable = new Nullable() with get,set /// ///If you want to book on an existing customer instead of CustomerToBook info set the CustomerId here. Set Empty Guid (00000000-0000-0000-0000-000000000000) if you want to book without any customer, this is only allowed by admin. The customer id is shown in the customer list named as id. When booking as customer (no admin) leave this field blank. /// [] member val CustomerId:Nullable = new Nullable() with get,set /// ///If company requires to be authenticated or a pin code entered to book on a specific customer, enter it here. /// [] member val PinCode:String = null with get,set /// ///If you want to book with customer information instead of the Customer Id send the customer information here. Note: If customer profile already exists with the same email the information will not be changed, instead the provided information will be added as BookingsComments if it differs from the ordinairy profile. /// [] member val Customer:CustomerToBook = null with get,set /// ///The service to be booked /// [] member val ServiceId:Int32 = new Int32() with get,set /// ///If you want to add comments to a booking you can add them here, this comments are never shared with the customer /// [] member val BookedComments:String = null with get,set /// ///If you want to add comments to the booking that is sent to the customer, you can add them here. Comments will be sent in the booking confirmation /// [] member val CommentsToCustomer:String = null with get,set member val Resources:ResizeArray = new ResizeArray() with get,set /// ///Rebate code ids as an array of integer /// [] member val RebateCodeIds:ResizeArray = new ResizeArray() with get,set /// ///If you want to send Email reminder /// [] member val SendEmailReminder:Nullable = new Nullable() with get,set /// ///If you want to send SMS reminder /// [] member val SendSmsReminder:Nullable = new Nullable() with get,set /// ///If you want to send SMS confirmation /// [] member val SendSmsConfirmation:Nullable = new Nullable() with get,set /// ///Only admins are allowed to not send an email confirmation. Default is true /// [] member val SendEmailConfirmation:Nullable = new Nullable() with get,set /// ///If payment is enabled and you're an administrator, optional to choose payment option, if empty then the default settings will be used. Following payment options exists. DefaultSetting = 0, BookWithoutPayment = 1 (will be direcyly booked without payment), BookWithPaymentMessageToCustomer = 2 (will set status AwaitingPayment and send payment instructions to customer), BookWithManualPayment = 3 (Will set status AwaitingPaymentNoTimeLimit and Admin will need to manually mark the booking as payed when recieved payment). /// [] member val PaymentOption:PaymentOptions = new PaymentOptions() with get,set /// ///If Custom Fields are added to the booking, here you will send the id and the value for each custom field to be saved /// [] member val CustomFields:ResizeArray = new ResizeArray() with get,set /// ///If Custom Fields are added to the customer, here you will send the id and the value for each custom field to be updated /// [] member val CustomerCustomFields:ResizeArray = new ResizeArray() with get,set /// ///If want to allow to book outside the service schedules. This means you can book a time after the schedule opening hours as long as the resource are available. This is only allowed by administrators /// [] member val AllowBookingOutsideSchedules:Boolean = new Boolean() with get,set [] type IInterval = abstract From:DateTime with get,set abstract To:DateTime with get,set [] type GroupBookingSettings() = member val Active:Boolean = new Boolean() with get,set member val Min:Int32 = new Int32() with get,set member val Max:Int32 = new Int32() with get,set [] type MultipleResourceSettings() = member val Active:Boolean = new Boolean() with get,set member val Min:Int32 = new Int32() with get,set member val Max:Int32 = new Int32() with get,set [] type ServiceInfoResponse() = member val Id:Int32 = new Int32() with get,set member val Name:String = null with get,set member val Description:String = null with get,set member val ImageUrl:Uri = null with get,set member val LengthInMinutes:Nullable = new Nullable() with get,set member val MaxNumberOfSpotsPerBooking:Int32 = new Int32() with get,set member val GroupBooking:GroupBookingSettings = null with get,set member val MultipleResource:MultipleResourceSettings = null with get,set member val IsGroupBooking:Boolean = new Boolean() with get,set member val IsPaymentEnabled:Boolean = new Boolean() with get,set [] type CustomFieldValueResponse() = member val Value:String = null with get,set [] type CustomFieldConfigData() = /// ///Custom field id /// [] member val Id:Int32 = new Int32() with get,set /// ///Configuration name. Example: 'Number of persons'. /// [] member val Name:String = null with get,set /// ///Custom field description. Example: 'For how many persons is this booking?' /// [] member val Description:String = null with get,set /// ///Field width. Example: 20 for 20px /// [] member val Width:Nullable = new Nullable() with get,set /// ///Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox' /// [] member val DataType:String = null with get,set /// ///Default value of the field. Example: '3' /// [] member val DefaultValue:String = null with get,set /// ///Determines if the field is required to have a value or not /// [] member val IsMandatory:Boolean = new Boolean() with get,set /// ///Error message shown to the user if the field data is required but not entered /// [] member val MandatoryErrorMessage:String = null with get,set /// ///Max lenght of the field /// [] member val MaxLength:Int32 = new Int32() with get,set /// ///If the field should have multiple lines /// [] member val MultipleLineText:Boolean = new Boolean() with get,set /// ///Regular expression used for validation of the field /// [] member val RegEx:String = null with get,set /// ///Error message shown if the regular expression validation failed /// [] member val RegExErrorMessage:String = null with get,set /// ///The values to select from if Datatype is DropDown for this custom field /// [] member val Values:ResizeArray = new ResizeArray() with get,set [] type CustomFieldDataResponse() = member val Id:Int32 = new Int32() with get,set member val Column:String = null with get,set member val Name:String = null with get,set member val Description:String = null with get,set member val Value:String = null with get,set /// ///Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox' /// [] member val DataType:String = null with get,set [] type BookedResource() = member val Id:Int32 = new Int32() with get,set member val Name:String = null with get,set member val Color:String = null with get,set member val ImageUrl:Uri = null with get,set member val Email:String = null with get,set member val MobilePhone:String = null with get,set member val AccessGroup:String = null with get,set member val EmailNotification:Boolean = new Boolean() with get,set member val SMSNotification:Boolean = new Boolean() with get,set member val EmailReminder:Boolean = new Boolean() with get,set member val SMSReminder:Boolean = new Boolean() with get,set [] type BookedResourceType() = /// ///The resource type id /// [] member val Id:Int32 = new Int32() with get,set /// ///The resource type name /// [] member val Name:String = null with get,set /// ///The resources inside resource type /// [] member val Resources:ResizeArray = new ResizeArray() with get,set [] type BookedCompany() = member val Id:Guid = new Guid() with get,set member val Name:String = null with get,set member val LogoType:Uri = null with get,set member val Category:String = null with get,set member val Street1:String = null with get,set member val Street2:String = null with get,set member val ZipCode:String = null with get,set member val City:String = null with get,set member val CountryId:String = null with get,set member val Longitude:String = null with get,set member val Latitude:String = null with get,set member val Phone:String = null with get,set member val Email:String = null with get,set member val HomePage:String = null with get,set member val SitePath:String = null with get,set member val IsFavorite:Boolean = new Boolean() with get,set member val PaymentProviderId:Nullable = new Nullable() with get,set [] type BookedCustomer() = member val Id:Guid = new Guid() with get,set member val Firstname:String = null with get,set member val Lastname:String = null with get,set member val Email:String = null with get,set member val Phone:String = null with get,set member val FacebookUserName:String = null with get,set member val ImageUrl:String = null with get,set member val CorporateIdentityNumber:String = null with get,set member val InvoiceAddress1:String = null with get,set member val InvoiceAddress2:String = null with get,set member val InvoiceCity:String = null with get,set member val InvoicePostalCode:String = null with get,set member val InvoiceCountryCode:String = null with get,set [] type CurrencyInfoResponse() = /// ///The currency id /// [] member val Id:String = null with get,set /// ///The currency id /// [] member val Name:String = null with get,set /// ///The currency id /// [] member val CurrencySign:String = null with get,set [] type BookingPaymentLogQueryResponse() = /// ///The booking payment log id /// [] member val Id:Int32 = new Int32() with get,set /// ///The booking id /// [] member val BookingId:Int32 = new Int32() with get,set /// ///The payment reference id /// [] member val PaymentReferenceId:String = null with get,set /// ///The payment order item reference id /// [] member val OrderItemReferenceId:String = null with get,set /// ///The payment reference id /// [] member val PaymentProviderId:Nullable = new Nullable() with get,set /// ///The payment amount /// [] member val Amount:Double = new Double() with get,set /// ///The payment VAT in percent /// [] member val VAT:Decimal = new Decimal() with get,set /// ///The payment amount that is credited /// [] member val AmountCredited:Double = new Double() with get,set /// ///The payment currency id /// [] member val CurrencyId:String = null with get,set /// ///The payment currency info /// [] member val CurrencyInfo:CurrencyInfoResponse = null with get,set /// ///Comments that could be added to the event log item /// [] member val Comments:String = null with get,set /// ///The date when the payment items was created /// [] member val Created:DateTime = new DateTime() with get,set /// ///The date when the payment items was update /// [] member val Updated:DateTime = new DateTime() with get,set [] type BookingCheckoutQueryResponse() = /// ///The checkout id /// [] member val Id:Guid = new Guid() with get,set /// ///The booking id /// [] member val BookingId:Int32 = new Int32() with get,set /// ///The purchase id /// [] member val PurchaseId:Nullable = new Nullable() with get,set /// ///The payment checkout expiration datetime /// [] member val ExpirationTime:Nullable = new Nullable() with get,set /// ///The payment snippet code /// [] member val Snippet:String = null with get,set /// ///The payment status /// [] member val Status:String = null with get,set /// ///Log message /// [] member val Message:String = null with get,set /// ///When the checkout log item was created /// [] member val Created:DateTime = new DateTime() with get,set /// ///When the checkout log item was updated /// [] member val Updated:DateTime = new DateTime() with get,set [] type ExternalReferenceResponse() = member val CompanyId:Guid = new Guid() with get,set member val Id:Guid = new Guid() with get,set member val OwnerId:Guid = new Guid() with get,set member val ReferenceType:String = null with get,set member val ExternalData:String = null with get,set member val CreatedBy:String = null with get,set member val Updated:DateTime = new DateTime() with get,set member val Created:DateTime = new DateTime() with get,set [] type BookingCalendarExportStatus() = member val CalendarId:String = null with get,set member val BookingId:Int32 = new Int32() with get,set member val Synced:Nullable = new Nullable() with get,set [] type BookingLogQueryResponse() = /// ///The booking log id /// [] member val Id:Int32 = new Int32() with get,set /// ///The booking id /// [] member val BookingId:Int32 = new Int32() with get,set /// ///The type of event /// [] member val EventTypeId:Int32 = new Int32() with get,set /// ///The type of event /// [] member val EventType:BookingLogEventTypeResponse = null with get,set /// ///Comments that could be added to the event log item /// [] member val Comments:String = null with get,set /// ///The user created the event /// [] member val UserName:String = null with get,set /// ///Then date when the event occured /// [] member val Created:DateTime = new DateTime() with get,set [] type BookedQuantity() = /// ///The quantity Id /// [] member val Id:Int32 = new Int32() with get,set /// ///The quantity for booked on this price category /// [] member val Quantity:Int32 = new Int32() with get,set /// ///The price /// [] member val Price:Nullable = new Nullable() with get,set /// ///The price bofore rebate codes /// [] member val PriceBeforeRebate:Nullable = new Nullable() with get,set /// ///The price currency /// [] member val CurrencyId:String = null with get,set /// ///The price sign /// [] member val PriceSign:String = null with get,set /// ///The price category /// [] member val Category:String = null with get,set /// ///The price VAT in percent /// [] member val VAT:Nullable = new Nullable() with get,set /// ///The price text to display /// [] member val PriceText:String = null with get,set /// ///If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information. /// [] member val OccupiesSpot:Boolean = new Boolean() with get,set [] type BookingQueryResponse() = member val Id:Int32 = new Int32() with get,set member val CompanyId:Guid = new Guid() with get,set member val From:DateTime = new DateTime() with get,set member val To:DateTime = new DateTime() with get,set member val Status:BookingStatusEnum = new BookingStatusEnum() with get,set member val StatusId:Int32 = new Int32() with get,set member val StatusName:String = null with get,set member val StatusInfo:BookingStatusQueryResponse = null with get,set member val SendEmailReminder:Boolean = new Boolean() with get,set member val SendSmsReminder:Boolean = new Boolean() with get,set member val SendSmsConfirmation:Boolean = new Boolean() with get,set member val SendEmailConfirmation:Boolean = new Boolean() with get,set member val LastTimeToUnBook:Nullable = new Nullable() with get,set member val CustomFields:ResizeArray = new ResizeArray() with get,set member val CustomFieldValues:ResizeArray = new ResizeArray() with get,set member val BookedResourceTypes:ResizeArray = new ResizeArray() with get,set member val Company:BookedCompany = null with get,set member val Customer:BookedCustomer = null with get,set member val Quantities:ResizeArray = new ResizeArray() with get,set member val Service:ServiceInfoResponse = null with get,set member val PaymentExpiration:Nullable = new Nullable() with get,set member val Log:ResizeArray = new ResizeArray() with get,set member val PaymentLog:ResizeArray = new ResizeArray() with get,set member val CheckoutLog:ResizeArray = new ResizeArray() with get,set member val ExternalReference:ResizeArray = new ResizeArray() with get,set member val ResponseStatus:ResponseStatus = null with get,set member val CalendarExportStatus:BookingCalendarExportStatus = null with get,set member val LengthInMinutes:Nullable = new Nullable() with get,set member val BookedBy:String = null with get,set member val BookedComments:String = null with get,set member val UnbookedComments:String = null with get,set member val CommentsToCustomer:String = null with get,set member val CreatedDate:DateTime = new DateTime() with get,set member val UpdatedDate:DateTime = new DateTime() with get,set member val UnbookedOn:Nullable = new Nullable() with get,set member val CancellationCode:String = null with get,set member val RatingCode:String = null with get,set [] [] [] type CreateBooking() = inherit CreateBookingBase() interface IReturn /// ///The datetime you want to start the booking. /// [] member val From:DateTime = new DateTime() with get,set /// ///The datetime you want to end the booking. /// [] member val To:DateTime = new DateTime() with get,set /// ///Set the number of spots you want to book. You add number of spots per price category. Multiple spots require that the service has GroupBooking enabled. Default is one spot. /// [] member val Quantities:QuantityToBook[] = [||] with get,set