BokaMera.API.Host

<back to all web services

CreateBooking

The following routes are available for this service:
POST/bookingsCreate a new bookingCreate a new booking if you are authorized to do so.
Imports System
Imports System.Collections
Imports System.Collections.Generic
Imports System.Runtime.Serialization
Imports ServiceStack
Imports ServiceStack.DataAnnotations
Imports BokaMera.API.ServiceModel.Dtos
Imports BokaMera.API.ServiceModel.Enums

Namespace Global

    Namespace BokaMera.API.ServiceModel.Dtos

        Public Partial Class AddCustomField
            Public Overridable Property Id As Integer
            Public Overridable Property Value As String
        End Class

        Public Partial Class BookedCompany
            Public Overridable Property Id As Guid
            Public Overridable Property Name As String
            Public Overridable Property LogoType As Uri
            Public Overridable Property Category As String
            Public Overridable Property Street1 As String
            Public Overridable Property Street2 As String
            Public Overridable Property ZipCode As String
            Public Overridable Property City As String
            Public Overridable Property CountryId As String
            Public Overridable Property Longitude As String
            Public Overridable Property Latitude As String
            Public Overridable Property Phone As String
            Public Overridable Property Email As String
            Public Overridable Property HomePage As String
            Public Overridable Property SitePath As String
            Public Overridable Property IsFavorite As Boolean
            Public Overridable Property PaymentProviderId As Nullable(Of Integer)
        End Class

        Public Partial Class BookedCustomer
            Public Overridable Property Id As Guid
            Public Overridable Property Firstname As String
            Public Overridable Property Lastname As String
            Public Overridable Property Email As String
            Public Overridable Property Phone As String
            Public Overridable Property FacebookUserName As String
            Public Overridable Property ImageUrl As String
            Public Overridable Property CorporateIdentityNumber As String
            Public Overridable Property InvoiceAddress1 As String
            Public Overridable Property InvoiceAddress2 As String
            Public Overridable Property InvoiceCity As String
            Public Overridable Property InvoicePostalCode As String
            Public Overridable Property InvoiceCountryCode As String
        End Class

        Public Partial Class BookedQuantity
            '''<Summary>
            '''The quantity Id
            '''</Summary>
            <ApiMember(Description:="The quantity Id")>
            Public Overridable Property Id As Integer

            '''<Summary>
            '''The quantity for booked on this price category
            '''</Summary>
            <ApiMember(Description:="The quantity for booked on this price category")>
            Public Overridable Property Quantity As Integer

            '''<Summary>
            '''The price
            '''</Summary>
            <ApiMember(Description:="The price")>
            Public Overridable Property Price As Nullable(Of Double)

            '''<Summary>
            '''The price bofore rebate codes
            '''</Summary>
            <ApiMember(Description:="The price bofore rebate codes")>
            Public Overridable Property PriceBeforeRebate As Nullable(Of Double)

            '''<Summary>
            '''The price currency
            '''</Summary>
            <ApiMember(Description:="The price currency")>
            Public Overridable Property CurrencyId As String

            '''<Summary>
            '''The price sign
            '''</Summary>
            <ApiMember(Description:="The price sign")>
            Public Overridable Property PriceSign As String

            '''<Summary>
            '''The price category
            '''</Summary>
            <ApiMember(Description:="The price category")>
            Public Overridable Property Category As String

            '''<Summary>
            '''The price VAT in percent
            '''</Summary>
            <ApiMember(Description:="The price VAT in percent")>
            Public Overridable Property VAT As Nullable(Of Decimal)

            '''<Summary>
            '''The price text to display
            '''</Summary>
            <ApiMember(Description:="The price text to display")>
            Public Overridable Property PriceText As String

            '''<Summary>
            '''If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.
            '''</Summary>
            <ApiMember(Description:="If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.")>
            Public Overridable Property OccupiesSpot As Boolean
        End Class

        Public Partial Class BookedResource
            Public Overridable Property Id As Integer
            Public Overridable Property Name As String
            Public Overridable Property Color As String
            Public Overridable Property ImageUrl As Uri
            Public Overridable Property Email As String
            Public Overridable Property MobilePhone As String
            Public Overridable Property AccessGroup As String
            Public Overridable Property EmailNotification As Boolean
            Public Overridable Property SMSNotification As Boolean
            Public Overridable Property EmailReminder As Boolean
            Public Overridable Property SMSReminder As Boolean
        End Class

        Public Partial Class BookedResourceType
            Public Sub New()
                Resources = New List(Of BookedResource)
            End Sub

            '''<Summary>
            '''The resource type id
            '''</Summary>
            <ApiMember(Description:="The resource type id")>
            Public Overridable Property Id As Integer

            '''<Summary>
            '''The resource type name
            '''</Summary>
            <ApiMember(Description:="The resource type name")>
            Public Overridable Property Name As String

            '''<Summary>
            '''The resources inside resource type
            '''</Summary>
            <ApiMember(Description:="The resources inside resource type")>
            Public Overridable Property Resources As List(Of BookedResource)
        End Class

        Public Partial Class BookingCalendarExportStatus
            Public Overridable Property CalendarId As String
            Public Overridable Property BookingId As Integer
            Public Overridable Property Synced As Nullable(Of Boolean)
        End Class

        Public Partial Class BookingCheckoutQueryResponse
            '''<Summary>
            '''The checkout id
            '''</Summary>
            <ApiMember(Description:="The checkout id")>
            Public Overridable Property Id As Guid

            '''<Summary>
            '''The booking id
            '''</Summary>
            <ApiMember(Description:="The booking id")>
            Public Overridable Property BookingId As Integer

            '''<Summary>
            '''The purchase id
            '''</Summary>
            <ApiMember(Description:="The purchase id")>
            Public Overridable Property PurchaseId As Nullable(Of Integer)

            '''<Summary>
            '''The payment checkout expiration datetime
            '''</Summary>
            <ApiMember(Description:="The payment checkout expiration datetime")>
            Public Overridable Property ExpirationTime As Nullable(Of Date)

            '''<Summary>
            '''The payment snippet code
            '''</Summary>
            <ApiMember(Description:="The payment snippet code")>
            Public Overridable Property Snippet As String

            '''<Summary>
            '''The payment status
            '''</Summary>
            <ApiMember(Description:="The payment status")>
            Public Overridable Property Status As String

            '''<Summary>
            '''Log message
            '''</Summary>
            <ApiMember(Description:="Log message")>
            Public Overridable Property Message As String

            '''<Summary>
            '''When the checkout log item was created
            '''</Summary>
            <ApiMember(Description:="When the checkout log item was created")>
            Public Overridable Property Created As Date

            '''<Summary>
            '''When the checkout log item was updated
            '''</Summary>
            <ApiMember(Description:="When the checkout log item was updated")>
            Public Overridable Property Updated As Date
        End Class

        Public Partial Class BookingLogEventTypeResponse
            '''<Summary>
            '''The event type id
            '''</Summary>
            <ApiMember(Description:="The event type id")>
            Public Overridable Property Id As Integer

            '''<Summary>
            '''The event type name
            '''</Summary>
            <ApiMember(Description:="The event type name")>
            Public Overridable Property Name As String

            '''<Summary>
            '''The event type description
            '''</Summary>
            <ApiMember(Description:="The event type description")>
            Public Overridable Property Description As String
        End Class

        Public Partial Class BookingLogQueryResponse
            '''<Summary>
            '''The booking log id
            '''</Summary>
            <ApiMember(Description:="The booking log id")>
            Public Overridable Property Id As Integer

            '''<Summary>
            '''The booking id
            '''</Summary>
            <ApiMember(Description:="The booking id")>
            Public Overridable Property BookingId As Integer

            '''<Summary>
            '''The type of event
            '''</Summary>
            <ApiMember(Description:="The type of event")>
            Public Overridable Property EventTypeId As Integer

            '''<Summary>
            '''The type of event
            '''</Summary>
            <ApiMember(Description:="The type of event")>
            Public Overridable Property EventType As BookingLogEventTypeResponse

            '''<Summary>
            '''Comments that could be added to the event log item
            '''</Summary>
            <ApiMember(Description:="Comments that could be added to the event log item")>
            Public Overridable Property Comments As String

            '''<Summary>
            '''The user created the event
            '''</Summary>
            <ApiMember(Description:="The user created the event")>
            Public Overridable Property UserName As String

            '''<Summary>
            '''Then date when the event occured
            '''</Summary>
            <ApiMember(Description:="Then date when the event occured")>
            Public Overridable Property Created As Date
        End Class

        Public Partial Class BookingPaymentLogQueryResponse
            '''<Summary>
            '''The booking payment log id
            '''</Summary>
            <ApiMember(Description:="The booking payment log id")>
            Public Overridable Property Id As Integer

            '''<Summary>
            '''The booking id
            '''</Summary>
            <ApiMember(Description:="The booking id")>
            Public Overridable Property BookingId As Integer

            '''<Summary>
            '''The payment reference id
            '''</Summary>
            <ApiMember(Description:="The payment reference id")>
            Public Overridable Property PaymentReferenceId As String

            '''<Summary>
            '''The payment order item reference id
            '''</Summary>
            <ApiMember(Description:="The payment order item reference id")>
            Public Overridable Property OrderItemReferenceId As String

            '''<Summary>
            '''The payment reference id
            '''</Summary>
            <ApiMember(Description:="The payment reference id")>
            Public Overridable Property PaymentProviderId As Nullable(Of Integer)

            '''<Summary>
            '''The payment amount
            '''</Summary>
            <ApiMember(Description:="The payment amount")>
            Public Overridable Property Amount As Double

            '''<Summary>
            '''The payment VAT in percent
            '''</Summary>
            <ApiMember(Description:="The payment VAT in percent")>
            Public Overridable Property VAT As Decimal

            '''<Summary>
            '''The payment amount that is credited
            '''</Summary>
            <ApiMember(Description:="The payment amount that is credited")>
            Public Overridable Property AmountCredited As Double

            '''<Summary>
            '''The payment currency id
            '''</Summary>
            <ApiMember(Description:="The payment currency id")>
            Public Overridable Property CurrencyId As String

            '''<Summary>
            '''The payment currency info
            '''</Summary>
            <ApiMember(Description:="The payment currency info")>
            Public Overridable Property CurrencyInfo As CurrencyInfoResponse

            '''<Summary>
            '''Comments that could be added to the event log item
            '''</Summary>
            <ApiMember(Description:="Comments that could be added to the event log item")>
            Public Overridable Property Comments As String

            '''<Summary>
            '''The date when the payment items was created
            '''</Summary>
            <ApiMember(Description:="The date when the payment items was created")>
            Public Overridable Property Created As Date

            '''<Summary>
            '''The date when the payment items was update
            '''</Summary>
            <ApiMember(Description:="The date when the payment items was update")>
            Public Overridable Property Updated As Date
        End Class

        Public Partial Class BookingQueryResponse
            Public Sub New()
                CustomFields = New List(Of CustomFieldConfigData)
                CustomFieldValues = New List(Of CustomFieldDataResponse)
                BookedResourceTypes = New List(Of BookedResourceType)
                Quantities = New List(Of BookedQuantity)
                Log = New List(Of BookingLogQueryResponse)
                PaymentLog = New List(Of BookingPaymentLogQueryResponse)
                CheckoutLog = New List(Of BookingCheckoutQueryResponse)
                ExternalReference = New List(Of ExternalReferenceResponse)
            End Sub

            Public Overridable Property Id As Integer
            Public Overridable Property CompanyId As Guid
            Public Overridable Property From As Date
            Public Overridable Property To As Date
            Public Overridable Property Status As BookingStatusEnum
            Public Overridable Property StatusId As Integer
            Public Overridable Property StatusName As String
            Public Overridable Property StatusInfo As BookingStatusQueryResponse
            Public Overridable Property SendEmailReminder As Boolean
            Public Overridable Property SendSmsReminder As Boolean
            Public Overridable Property SendSmsConfirmation As Boolean
            Public Overridable Property SendEmailConfirmation As Boolean
            Public Overridable Property LastTimeToUnBook As Nullable(Of Date)
            Public Overridable Property CustomFields As List(Of CustomFieldConfigData)
            Public Overridable Property CustomFieldValues As List(Of CustomFieldDataResponse)
            Public Overridable Property BookedResourceTypes As List(Of BookedResourceType)
            Public Overridable Property Company As BookedCompany
            Public Overridable Property Customer As BookedCustomer
            Public Overridable Property Quantities As List(Of BookedQuantity)
            Public Overridable Property Service As ServiceInfoResponse
            Public Overridable Property PaymentExpiration As Nullable(Of Date)
            Public Overridable Property Log As List(Of BookingLogQueryResponse)
            Public Overridable Property PaymentLog As List(Of BookingPaymentLogQueryResponse)
            Public Overridable Property CheckoutLog As List(Of BookingCheckoutQueryResponse)
            Public Overridable Property ExternalReference As List(Of ExternalReferenceResponse)
            Public Overridable Property ResponseStatus As ResponseStatus
            Public Overridable Property CalendarExportStatus As BookingCalendarExportStatus
            Public Overridable Property LengthInMinutes As Nullable(Of Integer)
            Public Overridable Property BookedBy As String
            Public Overridable Property BookedComments As String
            Public Overridable Property UnbookedComments As String
            Public Overridable Property CommentsToCustomer As String
            Public Overridable Property CreatedDate As Date
            Public Overridable Property UpdatedDate As Date
            Public Overridable Property UnbookedOn As Nullable(Of Date)
            Public Overridable Property CancellationCode As String
            Public Overridable Property RatingCode As String
        End Class

        Public Partial Class BookingStatusQueryResponse
            Public Overridable Property Id As Integer
            Public Overridable Property Name As String
            Public Overridable Property Description As String
            Public Overridable Property Icon As String
            Public Overridable Property Color As String
        End Class

        <ApiResponse(Description:="You were unauthorized to call this service", StatusCode:=401)>
        Public Partial Class CreateBooking
            Inherits CreateBookingBase
            Implements IInterval
            Public Sub New()
                Quantities = New QuantityToBook(){}
            End Sub

            '''<Summary>
            '''The datetime you want to start the booking.
            '''</Summary>
            <ApiMember(Description:="The datetime you want to start the booking.", IsRequired:=true)>
            Public Overridable Property From As Date

            '''<Summary>
            '''The datetime you want to end the booking.
            '''</Summary>
            <ApiMember(Description:="The datetime you want to end the booking.", IsRequired:=true)>
            Public Overridable Property To As Date

            '''<Summary>
            '''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.
            '''</Summary>
            <ApiMember(Description:="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.")>
            Public Overridable Property Quantities As QuantityToBook()
        End Class

        Public Partial Class CreateBookingBase
            Public Sub New()
                Resources = New List(Of ResourceToBook)
                RebateCodeIds = New List(Of Integer)
                CustomFields = New List(Of AddCustomField)
                CustomerCustomFields = New List(Of AddCustomField)
            End Sub

            '''<Summary>
            '''The company id, if empty will use the company id for the user you are logged in with.
            '''</Summary>
            <ApiMember(Description:="The company id, if empty will use the company id for the user you are logged in with.")>
            Public Overridable Property CompanyId As Nullable(Of Guid)

            '''<Summary>
            '''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.
            '''</Summary>
            <ApiMember(Description:="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.")>
            Public Overridable Property CustomerId As Nullable(Of Guid)

            '''<Summary>
            '''If company requires to be authenticated or a pin code entered to book on a specific customer, enter it here.
            '''</Summary>
            <ApiMember(Description:="If company requires to be authenticated or a pin code entered to book on a specific customer, enter it here.")>
            Public Overridable Property PinCode As String

            '''<Summary>
            '''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. 
            '''</Summary>
            <ApiMember(Description:="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. ")>
            Public Overridable Property Customer As CustomerToHandle

            '''<Summary>
            '''The service to be booked
            '''</Summary>
            <ApiMember(Description:="The service to be booked", IsRequired:=true)>
            Public Overridable Property ServiceId As Integer

            '''<Summary>
            '''If you want to add comments to a booking you can add them here, this comments are never shared with the customer
            '''</Summary>
            <ApiMember(Description:="If you want to add comments to a booking you can add them here, this comments are never shared with the customer")>
            Public Overridable Property BookedComments As String

            '''<Summary>
            '''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
            '''</Summary>
            <ApiMember(Description:="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")>
            Public Overridable Property CommentsToCustomer As String

            Public Overridable Property Resources As List(Of ResourceToBook)
            '''<Summary>
            '''Rebate codes applied to booking
            '''</Summary>
            <ApiMember(Description:="Rebate codes applied to booking")>
            Public Overridable Property RebateCodeIds As List(Of Integer)

            '''<Summary>
            '''If you want to send Email reminder
            '''</Summary>
            <ApiMember(Description:="If you want to send Email reminder")>
            Public Overridable Property SendEmailReminder As Nullable(Of Boolean)

            '''<Summary>
            '''If you want to send SMS reminder
            '''</Summary>
            <ApiMember(Description:="If you want to send SMS reminder")>
            Public Overridable Property SendSmsReminder As Nullable(Of Boolean)

            '''<Summary>
            '''If you want to send SMS confirmation
            '''</Summary>
            <ApiMember(Description:="If you want to send SMS confirmation")>
            Public Overridable Property SendSmsConfirmation As Nullable(Of Boolean)

            '''<Summary>
            '''Only admins are allowed to not send an email confirmation. Default is true
            '''</Summary>
            <ApiMember(Description:="Only admins are allowed to not send an email confirmation. Default is true")>
            Public Overridable Property SendEmailConfirmation As Nullable(Of Boolean)

            '''<Summary>
            '''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).
            '''</Summary>
            <ApiMember(Description:="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).")>
            Public Overridable Property PaymentOption As PaymentOptions

            '''<Summary>
            '''If Custom Fields are added to the booking, here you will send the id and the value for each custom field to be saved
            '''</Summary>
            <ApiMember(Description:="If Custom Fields are added to the booking, here you will send the id and the value for each custom field to be saved")>
            Public Overridable Property CustomFields As List(Of AddCustomField)

            '''<Summary>
            '''If Custom Fields are added to the customer, here you will send the id and the value for each custom field to be updated
            '''</Summary>
            <ApiMember(Description:="If Custom Fields are added to the customer, here you will send the id and the value for each custom field to be updated")>
            Public Overridable Property CustomerCustomFields As List(Of AddCustomField)

            '''<Summary>
            '''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
            '''</Summary>
            <ApiMember(Description:="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")>
            Public Overridable Property AllowBookingOutsideSchedules As Boolean
        End Class

        Public Partial Class CurrencyInfoResponse
            '''<Summary>
            '''The currency id
            '''</Summary>
            <ApiMember(Description:="The currency id")>
            Public Overridable Property Id As String

            '''<Summary>
            '''The currency id
            '''</Summary>
            <ApiMember(Description:="The currency id")>
            Public Overridable Property Name As String

            '''<Summary>
            '''The currency id
            '''</Summary>
            <ApiMember(Description:="The currency id")>
            Public Overridable Property CurrencySign As String
        End Class

        Public Partial Class CustomerToHandle
            Public Overridable Property CustomerId As Nullable(Of Guid)
            Public Overridable Property Firstname As String
            Public Overridable Property Lastname As String
            Public Overridable Property Email As String
            Public Overridable Property Phone As String
            Public Overridable Property SubscribedToNewsletter As Boolean
        End Class

        Public Partial Class CustomFieldConfigData
            Public Sub New()
                Values = New List(Of CustomFieldValueResponse)
            End Sub

            '''<Summary>
            '''Custom field id
            '''</Summary>
            <ApiMember(Description:="Custom field id")>
            Public Overridable Property Id As Integer

            '''<Summary>
            '''Configuration name. Example: 'Number of persons'.
            '''</Summary>
            <ApiMember(Description:="Configuration name. Example: 'Number of persons'.")>
            Public Overridable Property Name As String

            '''<Summary>
            '''Custom field description. Example: 'For how many persons is this booking?'
            '''</Summary>
            <ApiMember(Description:="Custom field description. Example: 'For how many persons is this booking?'")>
            Public Overridable Property Description As String

            '''<Summary>
            '''Field width. Example: 20 for 20px
            '''</Summary>
            <ApiMember(Description:="Field width. Example: 20 for 20px")>
            Public Overridable Property Width As Nullable(Of Integer)

            '''<Summary>
            '''Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
            '''</Summary>
            <ApiMember(Description:="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")>
            Public Overridable Property DataType As String

            '''<Summary>
            '''Default value of the field. Example: '3'
            '''</Summary>
            <ApiMember(Description:="Default value of the field. Example: '3'")>
            Public Overridable Property DefaultValue As String

            '''<Summary>
            '''Determines if the field is required to have a value or not
            '''</Summary>
            <ApiMember(Description:="Determines if the field is required to have a value or not")>
            Public Overridable Property IsMandatory As Boolean

            '''<Summary>
            '''Error message shown to the user if the field data is required but not entered
            '''</Summary>
            <ApiMember(Description:="Error message shown to the user if the field data is required but not entered")>
            Public Overridable Property MandatoryErrorMessage As String

            '''<Summary>
            '''Max lenght of the field
            '''</Summary>
            <ApiMember(Description:="Max lenght of the field")>
            Public Overridable Property MaxLength As Integer

            '''<Summary>
            '''If the field should have multiple lines
            '''</Summary>
            <ApiMember(Description:="If the field should have multiple lines")>
            Public Overridable Property MultipleLineText As Boolean

            '''<Summary>
            '''Regular expression used for validation of the field
            '''</Summary>
            <ApiMember(Description:="Regular expression used for validation of the field")>
            Public Overridable Property RegEx As String

            '''<Summary>
            '''Error message shown if the regular expression validation failed
            '''</Summary>
            <ApiMember(Description:="Error message shown if the regular expression validation failed")>
            Public Overridable Property RegExErrorMessage As String

            '''<Summary>
            '''The values to select from if Datatype is DropDown for this custom field
            '''</Summary>
            <ApiMember(Description:="The values to select from if Datatype is DropDown for this custom field")>
            Public Overridable Property Values As List(Of CustomFieldValueResponse)
        End Class

        Public Partial Class CustomFieldDataResponse
            Public Overridable Property Id As Integer
            Public Overridable Property Column As String
            Public Overridable Property Name As String
            Public Overridable Property Description As String
            Public Overridable Property Value As String
            '''<Summary>
            '''Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
            '''</Summary>
            <ApiMember(Description:="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")>
            Public Overridable Property DataType As String
        End Class

        Public Partial Class CustomFieldValueResponse
            Public Overridable Property Value As String
        End Class

        Public Partial Class ExternalReferenceResponse
            Public Overridable Property CompanyId As Guid
            Public Overridable Property Id As Guid
            Public Overridable Property OwnerId As Guid
            Public Overridable Property ReferenceType As String
            Public Overridable Property ExternalData As String
            Public Overridable Property CreatedBy As String
            Public Overridable Property Updated As Date
            Public Overridable Property Created As Date
        End Class

        Public Partial Class GroupBookingSettings
            Public Overridable Property Active As Boolean
            Public Overridable Property Min As Integer
            Public Overridable Property Max As Integer
        End Class

        Public Partial Class MultipleResourceSettings
            Public Overridable Property Active As Boolean
            Public Overridable Property Min As Integer
            Public Overridable Property Max As Integer
        End Class

        Public Partial Class QuantityToBook
            '''<Summary>
            '''If service has a price, enter the price id for that price. If no price exists for the service set 0 as PriceId. If you put 0 and a price exists, it will use that price (only works if just one price exists for the current selected date to book)
            '''</Summary>
            <ApiMember(Description:="If service has a price, enter the price id for that price. If no price exists for the service set 0 as PriceId. If you put 0 and a price exists, it will use that price (only works if just one price exists for the current selected date to book)", IsRequired:=true)>
            Public Overridable Property PriceId As Integer

            '''<Summary>
            '''Set the number of spots or resources you want to book on the specific price category
            '''</Summary>
            <ApiMember(Description:="Set the number of spots or resources you want to book on the specific price category", IsRequired:=true)>
            Public Overridable Property Quantity As Integer

            '''<Summary>
            '''If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.
            '''</Summary>
            <ApiMember(Description:="If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.")>
            Public Overridable Property OccupiesSpot As Boolean
        End Class

        Public Partial Class ResourceToBook
            Public Overridable Property ResourceTypeId As Integer
            Public Overridable Property ResourceId As Integer
        End Class

        Public Partial Class ServiceInfoResponse
            Public Overridable Property Id As Integer
            Public Overridable Property Name As String
            Public Overridable Property Description As String
            Public Overridable Property ImageUrl As Uri
            Public Overridable Property LengthInMinutes As Nullable(Of Integer)
            Public Overridable Property MaxNumberOfSpotsPerBooking As Integer
            Public Overridable Property MinNumberOfSpotsPerBooking As Integer
            Public Overridable Property GroupBooking As GroupBookingSettings
            Public Overridable Property MultipleResource As MultipleResourceSettings
            Public Overridable Property IsGroupBooking As Boolean
            Public Overridable Property IsPaymentEnabled As Boolean
        End Class
    End Namespace

    Namespace BokaMera.API.ServiceModel.Enums

        Public Enum BookingStatusEnum
            Booked = 1
            Unbooked = 2
            Reserved = 3
            Canceled = 4
            AwaitingPayment = 5
            AwaitingPaymentNoTimeLimit = 6
            Payed = 7
            AwaitingPaymentRequestFromAdmin = 8
            AwaitingPaymentFromProvider = 9
            Invoiced = 10
        End Enum

        Public Enum PaymentOptions
            DefaultSetting
            BookWithoutPayment
            BookWithPaymentMessageToCustomer
            BookWithManualPayment
        End Enum
    End Namespace
End Namespace

VB.NET CreateBooking DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /bookings HTTP/1.1 
Host: api.bokamera.se 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	Quantities: 
	[
		{
			PriceId: 0,
			Quantity: 0,
			OccupiesSpot: False
		}
	],
	CompanyId: 00000000-0000-0000-0000-000000000000,
	CustomerId: 00000000-0000-0000-0000-000000000000,
	PinCode: String,
	Customer: 
	{
		CustomerId: 00000000-0000-0000-0000-000000000000,
		Firstname: String,
		Lastname: String,
		Email: String,
		Phone: String,
		SubscribedToNewsletter: False
	},
	ServiceId: 0,
	BookedComments: String,
	CommentsToCustomer: String,
	Resources: 
	[
		{
			ResourceTypeId: 0,
			ResourceId: 0
		}
	],
	RebateCodeIds: 
	[
		0
	],
	SendEmailReminder: False,
	SendSmsReminder: False,
	SendSmsConfirmation: False,
	SendEmailConfirmation: False,
	PaymentOption: DefaultSetting,
	CustomFields: 
	[
		{
			Id: 0,
			Value: String
		}
	],
	CustomerCustomFields: 
	[
		{
			Id: 0,
			Value: String
		}
	],
	AllowBookingOutsideSchedules: False
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	Id: 0,
	Status: Booked,
	StatusId: 0,
	StatusName: String,
	StatusInfo: 
	{
		Id: 0,
		Name: String,
		Description: String,
		Icon: String,
		Color: String
	},
	SendEmailReminder: False,
	SendSmsReminder: False,
	SendSmsConfirmation: False,
	SendEmailConfirmation: False,
	LastTimeToUnBook: "0001-01-01T00:00:00",
	CustomFields: 
	[
		{
			"Id": 0,
			"Name": "String",
			"Description": "String",
			"Width": 0,
			"DataType": "String",
			"DefaultValue": "String",
			"IsMandatory": false,
			"MandatoryErrorMessage": "String",
			"MaxLength": 0,
			"MultipleLineText": false,
			"RegEx": "String",
			"RegExErrorMessage": "String",
			"Values": 
			[
				{
					"Value": "String"
				}
			]
		}
	],
	CustomFieldValues: 
	[
		{
			Id: 0,
			Column: String,
			Name: String,
			Description: String,
			Value: String,
			DataType: String
		}
	],
	BookedResourceTypes: 
	[
		{
			Id: 0,
			Name: String,
			Resources: 
			[
				{
					Id: 0,
					Name: String,
					Color: String,
					Email: String,
					MobilePhone: String,
					AccessGroup: String,
					EmailNotification: False,
					SMSNotification: False,
					EmailReminder: False,
					SMSReminder: False
				}
			]
		}
	],
	Company: 
	{
		Name: String,
		Category: String,
		Street1: String,
		Street2: String,
		ZipCode: String,
		City: String,
		CountryId: String,
		Longitude: String,
		Latitude: String,
		Phone: String,
		Email: String,
		HomePage: String,
		SitePath: String,
		IsFavorite: False,
		PaymentProviderId: 0
	},
	Customer: 
	{
		Firstname: String,
		Lastname: String,
		Email: String,
		Phone: String,
		FacebookUserName: String,
		ImageUrl: String,
		CorporateIdentityNumber: String,
		InvoiceAddress1: String,
		InvoiceAddress2: String,
		InvoiceCity: String,
		InvoicePostalCode: String,
		InvoiceCountryCode: String
	},
	Quantities: 
	[
		{
			Id: 0,
			Quantity: 0,
			Price: 0,
			PriceBeforeRebate: 0,
			CurrencyId: String,
			PriceSign: String,
			Category: String,
			VAT: 0,
			PriceText: String,
			OccupiesSpot: False
		}
	],
	Service: 
	{
		Id: 0,
		Name: String,
		Description: String,
		LengthInMinutes: 0,
		MaxNumberOfSpotsPerBooking: 0,
		MinNumberOfSpotsPerBooking: 0,
		GroupBooking: 
		{
			Active: False,
			Min: 0,
			Max: 0
		},
		MultipleResource: 
		{
			Active: False,
			Min: 0,
			Max: 0
		},
		IsGroupBooking: False,
		IsPaymentEnabled: False
	},
	PaymentExpiration: "0001-01-01T00:00:00",
	Log: 
	[
		{
			Id: 0,
			BookingId: 0,
			EventTypeId: 0,
			EventType: 
			{
				Id: 0,
				Name: String,
				Description: String
			},
			Comments: String,
			UserName: String
		}
	],
	PaymentLog: 
	[
		{
			Id: 0,
			BookingId: 0,
			PaymentReferenceId: String,
			OrderItemReferenceId: String,
			PaymentProviderId: 0,
			Amount: 0,
			VAT: 0,
			AmountCredited: 0,
			CurrencyId: String,
			CurrencyInfo: 
			{
				Id: String,
				Name: String,
				CurrencySign: String
			},
			Comments: String
		}
	],
	CheckoutLog: 
	[
		{
			BookingId: 0,
			PurchaseId: 0,
			ExpirationTime: "0001-01-01T00:00:00",
			Snippet: String,
			Status: String,
			Message: String
		}
	],
	ExternalReference: 
	[
		{
			ReferenceType: String,
			ExternalData: String,
			CreatedBy: String
		}
	],
	ResponseStatus: 
	{
		ErrorCode: String,
		Message: String,
		StackTrace: String,
		Errors: 
		[
			{
				ErrorCode: String,
				FieldName: String,
				Message: String,
				Meta: 
				{
					String: String
				}
			}
		],
		Meta: 
		{
			String: String
		}
	},
	CalendarExportStatus: 
	{
		CalendarId: String,
		BookingId: 0,
		Synced: False
	},
	LengthInMinutes: 0,
	BookedBy: String,
	BookedComments: String,
	UnbookedComments: String,
	CommentsToCustomer: String,
	UnbookedOn: "0001-01-01T00:00:00",
	CancellationCode: String,
	RatingCode: String
}