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 .csv suffix or ?format=csv

HTTP + CSV

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/csv
HTTP/1.1 200 OK
Content-Type: text/csv
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"}}}