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). |
---|
export enum BookingStatusEnum
{
Booked = 1,
Unbooked = 2,
Reserved = 3,
Canceled = 4,
AwaitingPayment = 5,
AwaitingPaymentNoTimeLimit = 6,
Payed = 7,
AwaitingPaymentRequestFromAdmin = 8,
AwaitingPaymentFromProvider = 9,
Invoiced = 10,
}
export class BookedCustomer
{
public Id: string;
public Firstname: string;
public Lastname: string;
public Email: string;
public Phone: string;
public FacebookUserName: string;
public ImageUrl: string;
public CorporateIdentityNumber: string;
public InvoiceAddress1: string;
public InvoiceAddress2: string;
public InvoiceCity: string;
public InvoicePostalCode: string;
public InvoiceCountryCode: string;
public constructor(init?: Partial<BookedCustomer>) { (Object as any).assign(this, init); }
}
export class GroupBookingSettings
{
public Active: boolean;
public Min: number;
public Max: number;
public constructor(init?: Partial<GroupBookingSettings>) { (Object as any).assign(this, init); }
}
export class MultipleResourceSettings
{
public Active: boolean;
public Min: number;
public Max: number;
public constructor(init?: Partial<MultipleResourceSettings>) { (Object as any).assign(this, init); }
}
export class ServiceInfoResponse
{
public Id: number;
public Name: string;
public Description: string;
public ImageUrl: string;
public LengthInMinutes?: number;
public MaxNumberOfSpotsPerBooking: number;
public MinNumberOfSpotsPerBooking: number;
public GroupBooking: GroupBookingSettings;
public MultipleResource: MultipleResourceSettings;
public IsGroupBooking: boolean;
public IsPaymentEnabled: boolean;
public constructor(init?: Partial<ServiceInfoResponse>) { (Object as any).assign(this, init); }
}
export class BookingIntervalResponse
{
public Id: number;
public CompanyId: string;
public From: string;
public To: string;
public Status: BookingStatusEnum;
public StatusId: number;
public StatusName: string;
public Customer: BookedCustomer;
public Service: ServiceInfoResponse;
public CreatedDate: string;
public constructor(init?: Partial<BookingIntervalResponse>) { (Object as any).assign(this, init); }
}
export class CollidingBookingQueryResponse
{
/** @description Resource id of the resource that owns this exception */
// @ApiMember(Description="Resource id of the resource that owns this exception")
public ResourceIds: number[];
/** @description A list of bookings that would collide with the time exception */
// @ApiMember(Description="A list of bookings that would collide with the time exception")
public Bookings: BookingIntervalResponse[];
public ResponseStatus: ResponseStatus;
public constructor(init?: Partial<CollidingBookingQueryResponse>) { (Object as any).assign(this, init); }
}
// @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")
export class CollidingBookingQuery
{
/** @description The company id, if empty will use the company id for the user you are logged in with. */
// @ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.")
public CompanyId?: string;
/** @description Resource ids of the resource that should be matched against booked events */
// @ApiMember(Description="Resource ids of the resource that should be matched against booked events")
public ResourceIds: number[];
/** @description Time exception starting date */
// @ApiMember(Description="Time exception starting date")
public From: string;
/** @description Time exception ending date */
// @ApiMember(Description="Time exception ending date")
public To: string;
/** @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. */
// @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.")
public FromTime: string;
/** @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. */
// @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.")
public ToTime: string;
/** @description A comma separated list of which days this day exception belongs to, 1 = Monday .. 7 = Sunday */
// @ApiMember(Description="A comma separated list of which days this day exception belongs to, 1 = Monday .. 7 = Sunday")
public DaysOfWeek: number[];
/** @description If you want to include the service information for the booking */
// @ApiMember(DataType="boolean", Description="If you want to include the service information for the booking", ParameterType="query")
public IncludeServiceInformation: boolean;
/** @description If you want to include the customer information for the booking */
// @ApiMember(DataType="boolean", Description="If you want to include the customer information for the booking", ParameterType="query")
public IncludeCustomerInformation: boolean;
public constructor(init?: Partial<CollidingBookingQuery>) { (Object as any).assign(this, init); }
}
TypeScript CollidingBookingQuery DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
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: text/jsv
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { ResourceIds: [ 0 ], Bookings: [ { Id: 0, Status: Booked, StatusId: 0, StatusName: String, 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 }, 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 } } ], ResponseStatus: { ErrorCode: String, Message: String, StackTrace: String, Errors: [ { ErrorCode: String, FieldName: String, Message: String, Meta: { String: String } } ], Meta: { String: String } } }