BokaMera.API.Host

<back to all web services

CreateResourceTimeException

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
POST/timeexceptionsInserts a time exception for a given resource belonging to the current userInserts a time exception for a given resource belonging to the current user if no colliding bookings are found. If a colliding booking is found. A time exception must be either recurring (DaysOfWeek is set and From and To is the valid range for the recurrency) or non recurring (From and To are set)

export class CreateResourceTimeExceptionBase
{
    /** @description If this equals true it will it add the time exception with the option you have selected in CollidingBookingOption. Default is to cancel all colliding bookings. */
    // @ApiMember(Description="If this equals true it will it add the time exception with the option you have selected in CollidingBookingOption. Default is to cancel all colliding bookings.")
    public Force: boolean;

    /** @description When Force=true and colliding bookings exsists, this message is the message that are sent to the users when canceling their bookings. */
    // @ApiMember(Description="When Force=true and colliding bookings exsists, this message is the message that are sent to the users when canceling their bookings.")
    public CancelMessage: string;

    /** @description When Force=true and colliding bookings exsists, send cancelmessage as SMS Confirmation */
    // @ApiMember(Description="When Force=true and colliding bookings exsists, send cancelmessage as SMS Confirmation")
    public SendSmsConfirmation?: boolean;

    /** @description When Force=true and colliding bookings exsists, send cancelmessage as Email Confirmation */
    // @ApiMember(Description="When Force=true and colliding bookings exsists, send cancelmessage as Email Confirmation")
    public SendEmailConfirmation?: boolean;

    public constructor(init?: Partial<CreateResourceTimeExceptionBase>) { (Object as any).assign(this, init); }
}

export class TimeExceptionReosurceDetails
{
    /** @description Ids of the resources that owns this exception */
    // @ApiMember(Description="Ids of the resources that owns this exception")
    public Id: number;

    /** @description Name of the resource */
    // @ApiMember(Description="Name of the resource")
    public Name: string;

    /** @description Description of the resource */
    // @ApiMember(Description="Description of the resource")
    public Description: string;

    /** @description Color of the resource */
    // @ApiMember(Description="Color of the resource")
    public Color: string;

    /** @description Image of the resource */
    // @ApiMember(Description="Image of the resource")
    public ImageUrl: string;

    public ResponseStatus: ResponseStatus;

    public constructor(init?: Partial<TimeExceptionReosurceDetails>) { (Object as any).assign(this, init); }
}

export class ExceptionCalendarExportStatus
{
    public CalendarId: string;
    public ExceptionId: number;
    public Synced?: boolean;

    public constructor(init?: Partial<ExceptionCalendarExportStatus>) { (Object as any).assign(this, init); }
}

export class DayOfWeekDto
{
    public DayOfWeekId: number;
    public DotNetDayOfWeekId: number;
    public DayOfWeek: string;

    public constructor(init?: Partial<DayOfWeekDto>) { (Object as any).assign(this, init); }
}

export class ResourceTimeExceptionQueryResponse
{
    /** @description Time exception id */
    // @ApiMember(Description="Time exception id")
    public Id: number;

    /** @description Time company id */
    // @ApiMember(Description="Time company id")
    public CompanyId: string;

    /** @description If it's locked for editing for the logged in administrator */
    // @ApiMember(Description="If it's locked for editing for the logged in administrator")
    public Locked: boolean;

    /** @description Resources that owns this exception */
    // @ApiMember(Description="Resources that owns this exception")
    public ResourceIds: number[];

    /** @description Resources that owns this exception */
    // @ApiMember(Description="Resources that owns this exception")
    public Resources: TimeExceptionReosurceDetails[];

    /** @description Indicates wheter or not the time exception is recurring */
    // @ApiMember(Description="Indicates wheter or not the time exception is recurring")
    public IsRecurring: boolean;

    /** @description Time exception starting timestamp */
    // @ApiMember(Description="Time exception starting timestamp")
    public From: string;

    /** @description Time exception ending timestamp */
    // @ApiMember(Description="Time exception ending timestamp")
    public To: string;

    /** @description If recurring then this value indicates the time of day when the time exception begins */
    // @ApiMember(Description="If recurring then this value indicates the time of day when the time exception begins")
    public FromTime: string;

    /** @description If recurring then this value indicates the time of day when the time exception ends */
    // @ApiMember(Description="If recurring then this value indicates the time of day when the time exception ends")
    public ToTime: string;

    /** @description The reason of the time exception, example: Vacation, doctors appointment, ... */
    // @ApiMember(Description="The reason of the time exception, example: Vacation, doctors appointment, ...")
    public ReasonText: string;

    /** @description The reason of the time exception that could be public to customers, example: Vacation, Closed, Sick leave, ... */
    // @ApiMember(Description="The reason of the time exception that could be public to customers, example: Vacation, Closed, Sick leave, ...")
    public ReasonTextPublic: string;

    /** @description What hexadecimal color code the exception should have in the scheduler */
    // @ApiMember(Description="What hexadecimal color code the exception should have in the scheduler")
    public Color: string;

    /** @description If the time exception should block the time in the scheduler so it's not avaialable to book */
    // @ApiMember(Description="If the time exception should block the time in the scheduler so it's not avaialable to book")
    public BlockTime: boolean;

    /** @description If the ReasonText should only be visible to conncted resources. If false, all resources will be able to see it */
    // @ApiMember(Description="If the ReasonText should only be visible to conncted resources. If false, all resources will be able to see it")
    public Private: boolean;

    /** @description The status for export to calendars like Gcal */
    // @ApiMember(Description="The status for export to calendars like Gcal")
    public CalendarExportStatus: ExceptionCalendarExportStatus;

    /** @description If recurring, an array indicating which days of the week the exception recures on where 1 = Monday .. 7 = Sunday. When recurring then the time portion of the Fields From and To indicates the time of day the recurrence occurs */
    // @ApiMember(Description="If recurring, an array indicating which days of the week the exception recures on where 1 = Monday .. 7 = Sunday. When recurring then the time portion of the Fields From and To indicates the time of day the recurrence occurs")
    public DaysOfWeek: DayOfWeekDto[];

    /** @description The datetime the exception was created */
    // @ApiMember(Description="The datetime the exception was created")
    public Created: string;

    public ResponseStatus: ResponseStatus;

    public constructor(init?: Partial<ResourceTimeExceptionQueryResponse>) { (Object as any).assign(this, init); }
}

export enum CollidingBookingOptions
{
    AddWithoutCancelingCollidingBookings = 1,
    AddAndCancelCollidingBookings = 2,
}

// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ApiResponse(Description="You have too low privilegies to call this service", StatusCode=403)
// @ApiResponse(Description="Bookings exists that needs to be unbooked before creating this time exceptions, use the /timeexceptions/collidingevents to find which bookings and use the booking service to unbook them", StatusCode=409)
// @ValidateRequest(Validator="IsAuthenticated")
export class CreateResourceTimeException extends CreateResourceTimeExceptionBase implements ICompany
{
    /** @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 Time exception starting datestamp, only the date of day part is used of this value */
    // @ApiMember(Description="Time exception starting datestamp, only the date of day part is used of this value", IsRequired=true)
    public From: string;

    /** @description Time exception ending datestamp, only the date of day part is used of this value */
    // @ApiMember(Description="Time exception ending datestamp, only the date of day part is used of this value", IsRequired=true)
    public To: string;

    /** @description Resource id of the resource that owns this exception */
    // @ApiMember(Description="Resource id of the resource that owns this exception", IsRequired=true)
    public ResourceIds: number[];

    /** @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 The reason of the time exception, example: Vacation, doctors appointment, ... */
    // @ApiMember(Description="The reason of the time exception, example: Vacation, doctors appointment, ...", IsRequired=true)
    public ReasonText: string;

    /** @description The reason of the time exception that could be public to customers, example: Vacation, Closed, Sick leave, ... */
    // @ApiMember(Description="The reason of the time exception that could be public to customers, example: Vacation, Closed, Sick leave, ...")
    public ReasonTextPublic: string;

    /** @description What hexadecimal color code the exception should have in the scheduler */
    // @ApiMember(Description="What hexadecimal color code the exception should have in the scheduler")
    public Color: string;

    /** @description If the time exception should block the time in the scheduler so it's not avaialable to book */
    // @ApiMember(Description="If the time exception should block the time in the scheduler so it's not avaialable to book")
    public BlockTime: boolean;

    /** @description If the ReasonText should only be visible to conncted resources. If false, all resources will be able to see it */
    // @ApiMember(Description="If the ReasonText should only be visible to conncted resources. If false, all resources will be able to see it")
    public Private: boolean;

    /** @description By default sets to 1, which is to add time exception without canceling colliding bookings */
    // @ApiMember(Description="By default sets to 1, which is to add time exception without canceling colliding bookings")
    public CollidingBookingOptions: CollidingBookingOptions;

    public constructor(init?: Partial<CreateResourceTimeException>) { super(init); (Object as any).assign(this, init); }
}

TypeScript CreateResourceTimeException 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 /timeexceptions HTTP/1.1 
Host: api.bokamera.se 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	CompanyId: 00000000-0000-0000-0000-000000000000,
	ResourceIds: 
	[
		0
	],
	FromTime: PT0S,
	ToTime: PT0S,
	DaysOfWeek: 
	[
		0
	],
	ReasonText: String,
	ReasonTextPublic: String,
	Color: String,
	BlockTime: False,
	Private: False,
	CollidingBookingOptions: AddWithoutCancelingCollidingBookings,
	Force: False,
	CancelMessage: String,
	SendSmsConfirmation: False,
	SendEmailConfirmation: False
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	Id: 0,
	Locked: False,
	ResourceIds: 
	[
		0
	],
	Resources: 
	[
		{
			Id: 0,
			Name: String,
			Description: String,
			Color: String,
			ResponseStatus: 
			{
				ErrorCode: String,
				Message: String,
				StackTrace: String,
				Errors: 
				[
					{
						ErrorCode: String,
						FieldName: String,
						Message: String,
						Meta: 
						{
							String: String
						}
					}
				],
				Meta: 
				{
					String: String
				}
			}
		}
	],
	IsRecurring: False,
	FromTime: PT0S,
	ToTime: PT0S,
	ReasonText: String,
	ReasonTextPublic: String,
	Color: String,
	BlockTime: False,
	Private: False,
	CalendarExportStatus: 
	{
		CalendarId: String,
		ExceptionId: 0,
		Synced: False
	},
	DaysOfWeek: 
	[
		{
			DayOfWeekId: 0,
			DotNetDayOfWeekId: 0,
			DayOfWeek: String
		}
	],
	ResponseStatus: 
	{
		ErrorCode: String,
		Message: String,
		StackTrace: String,
		Errors: 
		[
			{
				ErrorCode: String,
				FieldName: String,
				Message: String,
				Meta: 
				{
					String: String
				}
			}
		],
		Meta: 
		{
			String: String
		}
	}
}