BokaMera.API.Host

<back to all web services

CollidingBookingQuery

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
GET/timeexceptions/collidingeventsSearches for collisions with existing bookings of the resourceSearches 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

HTTP + 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
		}
	}
}