Requires any of the roles: | bookingsupplier-administrator-write, superadmin |
GET | /timeexceptions/collidingevents | Searches for collisions with existing bookings of the resource | Searches for existing bookings and investigates if a proposed time exception would collide with them, if so, the bookings should be unbooked to be able to create the time exception. A time exception must be either recurring (DaysOfWeek, ExceptionFromTime, ExceptionToTime is set) or non recurring (From and To are set). |
---|
namespace BokaMera.API.ServiceModel.Dtos
open System
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations
type BookingStatusEnum =
| Booked = 1
| Unbooked = 2
| Reserved = 3
| Canceled = 4
| AwaitingPayment = 5
| AwaitingPaymentNoTimeLimit = 6
| Payed = 7
| AwaitingPaymentRequestFromAdmin = 8
| AwaitingPaymentFromProvider = 9
| Invoiced = 10
[<AllowNullLiteral>]
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
[<AllowNullLiteral>]
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
[<AllowNullLiteral>]
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
[<AllowNullLiteral>]
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<Int32> = new Nullable<Int32>() with get,set
member val MaxNumberOfSpotsPerBooking:Int32 = new Int32() with get,set
member val MinNumberOfSpotsPerBooking: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
[<AllowNullLiteral>]
type BookingIntervalResponse() =
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 Customer:BookedCustomer = null with get,set
member val Service:ServiceInfoResponse = null with get,set
member val CreatedDate:DateTime = new DateTime() with get,set
[<AllowNullLiteral>]
type CollidingBookingQueryResponse() =
///<summary>
///Resource id of the resource that owns this exception
///</summary>
[<ApiMember(Description="Resource id of the resource that owns this exception")>]
member val ResourceIds:Int32[] = [||] with get,set
///<summary>
///A list of bookings that would collide with the time exception
///</summary>
[<ApiMember(Description="A list of bookings that would collide with the time exception")>]
member val Bookings:ResizeArray<BookingIntervalResponse> = new ResizeArray<BookingIntervalResponse>() with get,set
member val ResponseStatus:ResponseStatus = null with get,set
[<ApiResponse(Description="The request parameters was not valid", StatusCode=400)>]
[<ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)>]
[<ApiResponse(Description="You have too low privilegies to call this service", StatusCode=403)>]
[<ValidateRequest(Validator="IsAuthenticated")>]
[<AllowNullLiteral>]
type CollidingBookingQuery() =
///<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.")>]
member val CompanyId:Nullable<Guid> = new Nullable<Guid>() with get,set
///<summary>
///Resource ids of the resource that should be matched against booked events
///</summary>
[<ApiMember(Description="Resource ids of the resource that should be matched against booked events")>]
member val ResourceIds:Int32[] = [||] with get,set
///<summary>
///Time exception starting date
///</summary>
[<ApiMember(Description="Time exception starting date")>]
member val From:DateTime = new DateTime() with get,set
///<summary>
///Time exception ending date
///</summary>
[<ApiMember(Description="Time exception ending date")>]
member val To:DateTime = new DateTime() with get,set
///<summary>
///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.
///</summary>
[<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.")>]
member val FromTime:TimeSpan = new TimeSpan() with get,set
///<summary>
///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.
///</summary>
[<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.")>]
member val ToTime:TimeSpan = new TimeSpan() with get,set
///<summary>
///A comma separated list of which days this day exception belongs to, 1 = Monday .. 7 = Sunday
///</summary>
[<ApiMember(Description="A comma separated list of which days this day exception belongs to, 1 = Monday .. 7 = Sunday")>]
member val DaysOfWeek:Int32[] = [||] with get,set
///<summary>
///If you want to include the service information for the booking
///</summary>
[<ApiMember(DataType="boolean", Description="If you want to include the service information for the booking", ParameterType="query")>]
member val IncludeServiceInformation:Boolean = new Boolean() with get,set
///<summary>
///If you want to include the customer information for the booking
///</summary>
[<ApiMember(DataType="boolean", Description="If you want to include the customer information for the booking", ParameterType="query")>]
member val IncludeCustomerInformation:Boolean = new Boolean() with get,set
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /timeexceptions/collidingevents HTTP/1.1 Host: api.bokamera.se Accept: application/xml
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: length <CollidingBookingQueryResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.API.ServiceModel.Dtos"> <Bookings> <BookingIntervalResponse> <CompanyId>00000000-0000-0000-0000-000000000000</CompanyId> <CreatedDate>0001-01-01T00:00:00</CreatedDate> <Customer> <CorporateIdentityNumber>String</CorporateIdentityNumber> <Email>String</Email> <FacebookUserName>String</FacebookUserName> <Firstname>String</Firstname> <Id>00000000-0000-0000-0000-000000000000</Id> <ImageUrl>String</ImageUrl> <InvoiceAddress1>String</InvoiceAddress1> <InvoiceAddress2>String</InvoiceAddress2> <InvoiceCity>String</InvoiceCity> <InvoiceCountryCode>String</InvoiceCountryCode> <InvoicePostalCode>String</InvoicePostalCode> <Lastname>String</Lastname> <Phone>String</Phone> </Customer> <From>0001-01-01T00:00:00</From> <Id>0</Id> <Service> <Description>String</Description> <GroupBooking> <Active>false</Active> <Max>0</Max> <Min>0</Min> </GroupBooking> <Id>0</Id> <ImageUrl i:nil="true" /> <IsGroupBooking>false</IsGroupBooking> <IsPaymentEnabled>false</IsPaymentEnabled> <LengthInMinutes>0</LengthInMinutes> <MaxNumberOfSpotsPerBooking>0</MaxNumberOfSpotsPerBooking> <MinNumberOfSpotsPerBooking>0</MinNumberOfSpotsPerBooking> <MultipleResource> <Active>false</Active> <Max>0</Max> <Min>0</Min> </MultipleResource> <Name>String</Name> </Service> <Status>Booked</Status> <StatusId>0</StatusId> <StatusName>String</StatusName> <To>0001-01-01T00:00:00</To> </BookingIntervalResponse> </Bookings> <ResourceIds xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d2p1:int>0</d2p1:int> </ResourceIds> <ResponseStatus xmlns:d2p1="http://schemas.servicestack.net/types"> <d2p1:ErrorCode>String</d2p1:ErrorCode> <d2p1:Message>String</d2p1:Message> <d2p1:StackTrace>String</d2p1:StackTrace> <d2p1:Errors> <d2p1:ResponseError> <d2p1:ErrorCode>String</d2p1:ErrorCode> <d2p1:FieldName>String</d2p1:FieldName> <d2p1:Message>String</d2p1:Message> <d2p1:Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d5p1:KeyValueOfstringstring> <d5p1:Key>String</d5p1:Key> <d5p1:Value>String</d5p1:Value> </d5p1:KeyValueOfstringstring> </d2p1:Meta> </d2p1:ResponseError> </d2p1:Errors> <d2p1:Meta xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d3p1:KeyValueOfstringstring> <d3p1:Key>String</d3p1:Key> <d3p1:Value>String</d3p1:Value> </d3p1:KeyValueOfstringstring> </d2p1:Meta> </ResponseStatus> </CollidingBookingQueryResponse>