BokaMera.API.Host

<back to all web services

UpdateResourceTimeException

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
PUT/timeexceptions/{Id}Updates a time exception for a given resource belonging to the current userUpdates 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)
namespace BokaMera.API.ServiceModel.Dtos

open System
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations

    [<AllowNullLiteral>]
    type TimeExceptionReosurceDetails() = 
        ///<summary>
        ///Ids of the resources that owns this exception
        ///</summary>
        [<ApiMember(Description="Ids of the resources that owns this exception")>]
        member val Id:Int32 = new Int32() with get,set

        ///<summary>
        ///Name of the resource
        ///</summary>
        [<ApiMember(Description="Name of the resource")>]
        member val Name:String = null with get,set

        ///<summary>
        ///Description of the resource
        ///</summary>
        [<ApiMember(Description="Description of the resource")>]
        member val Description:String = null with get,set

        ///<summary>
        ///Color of the resource
        ///</summary>
        [<ApiMember(Description="Color of the resource")>]
        member val Color:String = null with get,set

        ///<summary>
        ///Image of the resource
        ///</summary>
        [<ApiMember(Description="Image of the resource")>]
        member val ImageUrl:Uri = null with get,set

        member val ResponseStatus:ResponseStatus = null with get,set

    [<AllowNullLiteral>]
    type ExceptionCalendarExportStatus() = 
        member val CalendarId:String = null with get,set
        member val ExceptionId:Int32 = new Int32() with get,set
        member val Synced:Nullable<Boolean> = new Nullable<Boolean>() with get,set

    [<AllowNullLiteral>]
    type DayOfWeekDto() = 
        member val DayOfWeekId:Int32 = new Int32() with get,set
        member val DotNetDayOfWeekId:Int32 = new Int32() with get,set
        member val DayOfWeek:String = null with get,set

    [<AllowNullLiteral>]
    type ResourceTimeExceptionQueryResponse() = 
        ///<summary>
        ///Time exception id
        ///</summary>
        [<ApiMember(Description="Time exception id")>]
        member val Id:Int32 = new Int32() with get,set

        ///<summary>
        ///Time company id
        ///</summary>
        [<ApiMember(Description="Time company id")>]
        member val CompanyId:Guid = new Guid() with get,set

        ///<summary>
        ///If it's locked for editing for the logged in administrator
        ///</summary>
        [<ApiMember(Description="If it's locked for editing for the logged in administrator")>]
        member val Locked:Boolean = new Boolean() with get,set

        ///<summary>
        ///Resources that owns this exception
        ///</summary>
        [<ApiMember(Description="Resources that owns this exception")>]
        member val ResourceIds:Int32[] = [||] with get,set

        ///<summary>
        ///Resources that owns this exception
        ///</summary>
        [<ApiMember(Description="Resources that owns this exception")>]
        member val Resources:ResizeArray<TimeExceptionReosurceDetails> = new ResizeArray<TimeExceptionReosurceDetails>() with get,set

        ///<summary>
        ///Indicates wheter or not the time exception is recurring
        ///</summary>
        [<ApiMember(Description="Indicates wheter or not the time exception is recurring")>]
        member val IsRecurring:Boolean = new Boolean() with get,set

        ///<summary>
        ///Time exception starting timestamp
        ///</summary>
        [<ApiMember(Description="Time exception starting timestamp")>]
        member val From:DateTime = new DateTime() with get,set

        ///<summary>
        ///Time exception ending timestamp
        ///</summary>
        [<ApiMember(Description="Time exception ending timestamp")>]
        member val To:DateTime = new DateTime() with get,set

        ///<summary>
        ///If recurring then this value indicates the time of day when the time exception begins
        ///</summary>
        [<ApiMember(Description="If recurring then this value indicates the time of day when the time exception begins")>]
        member val FromTime:TimeSpan = new TimeSpan() with get,set

        ///<summary>
        ///If recurring then this value indicates the time of day when the time exception ends
        ///</summary>
        [<ApiMember(Description="If recurring then this value indicates the time of day when the time exception ends")>]
        member val ToTime:TimeSpan = new TimeSpan() with get,set

        ///<summary>
        ///The reason of the time exception, example: Vacation, doctors appointment, ...
        ///</summary>
        [<ApiMember(Description="The reason of the time exception, example: Vacation, doctors appointment, ...")>]
        member val ReasonText:String = null with get,set

        ///<summary>
        ///The reason of the time exception that could be public to customers, example: Vacation, Closed, Sick leave, ...
        ///</summary>
        [<ApiMember(Description="The reason of the time exception that could be public to customers, example: Vacation, Closed, Sick leave, ...")>]
        member val ReasonTextPublic:String = null with get,set

        ///<summary>
        ///What hexadecimal color code the exception should have in the scheduler
        ///</summary>
        [<ApiMember(Description="What hexadecimal color code the exception should have in the scheduler")>]
        member val Color:String = null with get,set

        ///<summary>
        ///If the time exception should block the time in the scheduler so it's not avaialable to book
        ///</summary>
        [<ApiMember(Description="If the time exception should block the time in the scheduler so it's not avaialable to book")>]
        member val BlockTime:Boolean = new Boolean() with get,set

        ///<summary>
        ///If the ReasonText should only be visible to conncted resources. If false, all resources will be able to see it
        ///</summary>
        [<ApiMember(Description="If the ReasonText should only be visible to conncted resources. If false, all resources will be able to see it")>]
        member val Private:Boolean = new Boolean() with get,set

        ///<summary>
        ///The status for export to calendars like Gcal
        ///</summary>
        [<ApiMember(Description="The status for export to calendars like Gcal")>]
        member val CalendarExportStatus:ExceptionCalendarExportStatus = null with get,set

        ///<summary>
        ///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
        ///</summary>
        [<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")>]
        member val DaysOfWeek:ResizeArray<DayOfWeekDto> = new ResizeArray<DayOfWeekDto>() with get,set

        ///<summary>
        ///The datetime the exception was created
        ///</summary>
        [<ApiMember(Description="The datetime the exception was created")>]
        member val Created:DateTime = new DateTime() with get,set

        member val ResponseStatus:ResponseStatus = null with get,set

    [<AllowNullLiteral>]
    type CreateResourceTimeExceptionBase() = 
        ///<summary>
        ///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.
        ///</summary>
        [<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.")>]
        member val Force:Boolean = new Boolean() with get,set

        ///<summary>
        ///When Force=true and colliding bookings exsists, this message is the message that are sent to the users when canceling their bookings.
        ///</summary>
        [<ApiMember(Description="When Force=true and colliding bookings exsists, this message is the message that are sent to the users when canceling their bookings.")>]
        member val CancelMessage:String = null with get,set

        ///<summary>
        ///When Force=true and colliding bookings exsists, send cancelmessage as SMS Confirmation
        ///</summary>
        [<ApiMember(Description="When Force=true and colliding bookings exsists, send cancelmessage as SMS Confirmation")>]
        member val SendSmsConfirmation:Nullable<Boolean> = new Nullable<Boolean>() with get,set

        ///<summary>
        ///When Force=true and colliding bookings exsists, send cancelmessage as Email Confirmation
        ///</summary>
        [<ApiMember(Description="When Force=true and colliding bookings exsists, send cancelmessage as Email Confirmation")>]
        member val SendEmailConfirmation:Nullable<Boolean> = new Nullable<Boolean>() with get,set

    type 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")>]
    [<AllowNullLiteral>]
    type UpdateResourceTimeException() = 
        inherit CreateResourceTimeExceptionBase()
        ///<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>
        ///Tome exceptions id
        ///</summary>
        [<ApiMember(Description="Tome exceptions id", ParameterType="path")>]
        member val Id:Int32 = new Int32() with get,set

        ///<summary>
        ///Time exception starting datestamp, only the date of day part is used of this value
        ///</summary>
        [<ApiMember(Description="Time exception starting datestamp, only the date of day part is used of this value")>]
        member val From:Nullable<DateTime> = new Nullable<DateTime>() with get,set

        ///<summary>
        ///Time exception ending datestamp, only the date of day part is used of this value
        ///</summary>
        [<ApiMember(Description="Time exception ending datestamp, only the date of day part is used of this value")>]
        member val To:Nullable<DateTime> = new Nullable<DateTime>() with get,set

        ///<summary>
        ///Resource id of the resource that owns this exception
        ///</summary>
        [<ApiMember(Description="Resource id of the resource that owns this exception", IsRequired=true)>]
        member val ResourceIds:Int32[] = [||] 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:Nullable<TimeSpan> = new Nullable<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:Nullable<TimeSpan> = new Nullable<TimeSpan>() with get,set

        ///<summary>
        ///A comma separated list of which days this day exception belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.
        ///</summary>
        [<ApiMember(Description="A comma separated list of which days this day exception belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.")>]
        member val DaysOfWeek:Int32[] = [||] with get,set

        ///<summary>
        ///The reason of the time exception, example: Vacation, doctors appointment, ...
        ///</summary>
        [<ApiMember(Description="The reason of the time exception, example: Vacation, doctors appointment, ...", IsRequired=true)>]
        member val ReasonText:String = null with get,set

        ///<summary>
        ///The reason of the time exception that could be public to customers, example: Vacation, Closed, Sick leave, ...
        ///</summary>
        [<ApiMember(Description="The reason of the time exception that could be public to customers, example: Vacation, Closed, Sick leave, ...")>]
        member val ReasonTextPublic:String = null with get,set

        ///<summary>
        ///What hexadecimal color code the exception should have in the scheduler
        ///</summary>
        [<ApiMember(Description="What hexadecimal color code the exception should have in the scheduler")>]
        member val Color:String = null with get,set

        ///<summary>
        ///If the time exception should block the time in the scheduler so it's not avaialable to book
        ///</summary>
        [<ApiMember(Description="If the time exception should block the time in the scheduler so it's not avaialable to book")>]
        member val BlockTime:Nullable<Boolean> = new Nullable<Boolean>() with get,set

        ///<summary>
        ///If the ReasonText should only be visible to conncted resources. If false, all resources will be able to see it
        ///</summary>
        [<ApiMember(Description="If the ReasonText should only be visible to conncted resources. If false, all resources will be able to see it")>]
        member val Private:Nullable<Boolean> = new Nullable<Boolean>() with get,set

        ///<summary>
        ///By default sets to 1, which is to add time exception without canceling colliding bookings
        ///</summary>
        [<ApiMember(Description="By default sets to 1, which is to add time exception without canceling colliding bookings")>]
        member val CollidingBookingOptions:CollidingBookingOptions = new CollidingBookingOptions() with get,set

F# UpdateResourceTimeException 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.

PUT /timeexceptions/{Id} HTTP/1.1 
Host: api.bokamera.se 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	CompanyId: 00000000-0000-0000-0000-000000000000,
	Id: 0,
	From: "0001-01-01T00:00:00",
	To: "0001-01-01T00:00:00",
	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
		}
	}
}