BokaMera.API.Host

<back to all web services

CreateRecurringSchedule

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
POST/schedules/recurringAdd new recurring scheduleAdd new recurring schedule to the company for the currently logged in user, only administrators are allowed to add schedules.

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 ScheduleResources
{
    public Id: number;
    /** @description Name of the resource */
    // @ApiMember(Description="Name of the resource")
    public Name: string;

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

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

export class ScheduleServices
{
    public Id: number;
    /** @description Name of the service */
    // @ApiMember(Description="Name of the service")
    public Name: string;

    /** @description The image url of the service */
    // @ApiMember(Description="The image url of the service")
    public ImageUrl: string;

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

export class RecurringScheduleExceptionResponse
{
    /** @description Start time of the schedule exception. */
    // @ApiMember(Description="Start time of the schedule exception.")
    public StartTime: string;

    /** @description End time of the schedule exception. */
    // @ApiMember(Description="End time of the schedule exception.")
    public EndTime: string;

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

export class RecurringScheduleDateResponse
{
    public Id: number;
    public Date: string;
    public StartTime: string;
    public EndTime: string;
    public ResponseStatus: ResponseStatus;

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

export class RecurringScheduleQueryResponse
{
    /** @description The schedule id */
    // @ApiMember(Description="The schedule id")
    public Id: number;

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

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

    /** @description If the schedule is active or not */
    // @ApiMember(Description="If the schedule is active or not")
    public Active: boolean;

    /** @description Time interval for available times Here you set the interval at which times should appear. For example, if you select the range 15minutes, and your service has an duration of 1 hour and opening hours are 9AM to 6PM you will see the following suggested times: 09AM-10PM 09:15AM-10:15PM, 09:30AM-10:30PM ,  ..... 04:45PM-05:45, 05:00PM-06:00PM */
    // @ApiMember(Description="Time interval for available times Here you set the interval at which times should appear. For example, if you select the range 15minutes, and your service has an duration of 1 hour and opening hours are 9AM to 6PM you will see the following suggested times: 09AM-10PM 09:15AM-10:15PM, 09:30AM-10:30PM ,  ..... 04:45PM-05:45, 05:00PM-06:00PM", IsRequired=true)
    public TimeInterval: number;

    /** @description The timestamp to which the schedule is valid from */
    // @ApiMember(Description="The timestamp to which the schedule is valid from", IsRequired=true)
    public ValidFrom: string;

    /** @description The timestamp to which the schedule is valid to */
    // @ApiMember(Description="The timestamp to which the schedule is valid to", IsRequired=true)
    public ValidTo: string;

    /** @description The time for the schedule opening hours (starttime) */
    // @ApiMember(Description="The time for the schedule opening hours (starttime)", IsRequired=true)
    public StartTime: string;

    /** @description The time for the schedule opening hours (endtime) */
    // @ApiMember(Description="The time for the schedule opening hours (endtime)", IsRequired=true)
    public EndTime: string;

    /** @description The number of days the schedule is valid from todays date */
    // @ApiMember(Description="The number of days the schedule is valid from todays date", IsRequired=true)
    public NumberOfScheduleDays: number;

    /** @description If the schedule is only connected to some specific resources. Note: You must have IncludeResources property to see this. */
    // @ApiMember(Description="If the schedule is only connected to some specific resources. Note: You must have IncludeResources property to see this.", IsRequired=true)
    public IsResourceSpecific: boolean;

    /** @description The timestamp when the schedule was updated */
    // @ApiMember(Description="The timestamp when the schedule was updated", IsRequired=true)
    public UpdatedDate: string;

    /** @description The timestamp when the schedule was created */
    // @ApiMember(Description="The timestamp when the schedule was created", IsRequired=true)
    public CreatedDate: string;

    /** @description Allow bookings end time exceeds the opening hours Here you can choose whether it should be possible to make a reservation exceeding the opening hours. This should be ticked when a service duration is longer than 24 hours (possible to book over midnight). */
    // @ApiMember(Description="Allow bookings end time exceeds the opening hours Here you can choose whether it should be possible to make a reservation exceeding the opening hours. This should be ticked when a service duration is longer than 24 hours (possible to book over midnight).", IsRequired=true)
    public EnableBookingUntilClosingTime: boolean;

    /** @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 resources that is connected to the schedule */
    // @ApiMember(Description="The resources that is connected to the schedule")
    public Resources: ScheduleResources[];

    /** @description The services that is connected to the schedule */
    // @ApiMember(Description="The services that is connected to the schedule")
    public Services: ScheduleServices[];

    /** @description The exceptions that is added to the schedule */
    // @ApiMember(Description="The exceptions that is added to the schedule")
    public Exceptions: RecurringScheduleExceptionResponse[];

    /** @description Schedule dates, used when the schedule is not a rolling schedule using days of week */
    // @ApiMember(Description="Schedule dates, used when the schedule is not a rolling schedule using days of week")
    public ScheduleDates: RecurringScheduleDateResponse[];

    public ResponseStatus: ResponseStatus;

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

export class AddRecurringScheduleDate
{
    /** @description The date for the schedule opening (only date part is used here */
    // @ApiMember(Description="The date for the schedule opening (only date part is used here", IsRequired=true)
    public Date: string;

    /** @description The time for the schedule opening hours (starttime) */
    // @ApiMember(Description="The time for the schedule opening hours (starttime)", IsRequired=true)
    public StartTime: string;

    /** @description The time for the schedule opening hours (endtime) */
    // @ApiMember(Description="The time for the schedule opening hours (endtime)", IsRequired=true)
    public EndTime: string;

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

export class ScheduleException
{
    public StartTime: string;
    public EndTime: string;

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

export class AddScheduleResource
{
    /** @description The resource id */
    // @ApiMember(Description="The resource id", IsRequired=true)
    public Id: number;

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

export class AddScheduleService
{
    /** @description The service id */
    // @ApiMember(Description="The service id", IsRequired=true)
    public Id: number;

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

// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ValidateRequest(Validator="IsAuthenticated")
export class CreateRecurringSchedule 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 The schedule name */
    // @ApiMember(Description="The schedule name")
    public Name: string;

    /** @description The schedule description */
    // @ApiMember(Description="The schedule description")
    public Description: string;

    /** @description If schedule is active or not */
    // @ApiMember(Description="If schedule is active or not")
    public Active: boolean;

    /** @description Time interval for available times. Here you set the interval at which times should appear. For example, if you select the range 15minutes, and your service has an duration of 1 hour and opening hours are 9AM to 6PM you will see the following suggested times: 09AM-10PM 09:15AM-10:15PM, 09:30AM-10:30PM ,  ..... 04:45PM-05:45, 05:00PM-06:00PM */
    // @ApiMember(Description="Time interval for available times. Here you set the interval at which times should appear. For example, if you select the range 15minutes, and your service has an duration of 1 hour and opening hours are 9AM to 6PM you will see the following suggested times: 09AM-10PM 09:15AM-10:15PM, 09:30AM-10:30PM ,  ..... 04:45PM-05:45, 05:00PM-06:00PM", IsRequired=true)
    public TimeInterval: number;

    /** @description Allow bookings end time exceeds the opening hours Here you can choose whether it should be possible to make a reservation exceeding the opening hours. This should be ticked when a service duration is longer than 24 hours (possible to book over midnight). */
    // @ApiMember(Description="Allow bookings end time exceeds the opening hours Here you can choose whether it should be possible to make a reservation exceeding the opening hours. This should be ticked when a service duration is longer than 24 hours (possible to book over midnight).", IsRequired=true)
    public EnableBookingUntilClosingTime: boolean;

    /** @description The timestamp to which the schedule is valid from */
    // @ApiMember(Description="The timestamp to which the schedule is valid from", IsRequired=true)
    public ValidFrom: string;

    /** @description The timestamp to which the schedule is valid to */
    // @ApiMember(Description="The timestamp to which the schedule is valid to", IsRequired=true)
    public ValidTo: string;

    /** @description The time for the schedule opening hours (starttime) */
    // @ApiMember(Description="The time for the schedule opening hours (starttime)", IsRequired=true)
    public StartTime: string;

    /** @description The time for the schedule opening hours (endtime) */
    // @ApiMember(Description="The time for the schedule opening hours (endtime)", IsRequired=true)
    public EndTime: string;

    /** @description The number of days the schedule is valid from todays date */
    // @ApiMember(Description="The number of days the schedule is valid from todays date", IsRequired=true)
    public NumberOfScheduleDays: number;

    /** @description If recurring, an array indicating which days of the week the schedule 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 schedule 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: number[];

    /** @description If not recuring, an array indicating which dates that are open for the schedule. */
    // @ApiMember(Description="If not recuring, an array indicating which dates that are open for the schedule.")
    public ScheduleDates: AddRecurringScheduleDate[];

    /** @description Schedule exceptions. For example closed on lunch time between 12AM and 1PM. These times will be removed from the recurring schedule. */
    // @ApiMember(Description="Schedule exceptions. For example closed on lunch time between 12AM and 1PM. These times will be removed from the recurring schedule.")
    public Exceptions: ScheduleException[];

    /** @description If the schedule is only connected to some resources, add them here. If empty, it will be used by all resources. */
    // @ApiMember(Description="If the schedule is only connected to some resources, add them here. If empty, it will be used by all resources.")
    public Resources: AddScheduleResource[];

    /** @description Set what services the schedule should be connected to. */
    // @ApiMember(Description="Set what services the schedule should be connected to.")
    public Services: AddScheduleService[];

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

TypeScript CreateRecurringSchedule DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml

HTTP + XML

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /schedules/recurring HTTP/1.1 
Host: api.bokamera.se 
Accept: application/xml
Content-Type: application/xml
Content-Length: length

<CreateRecurringSchedule xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.API.ServiceModel.Dtos">
  <Active>false</Active>
  <CompanyId>00000000-0000-0000-0000-000000000000</CompanyId>
  <DaysOfWeek xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
    <d2p1:int>0</d2p1:int>
  </DaysOfWeek>
  <Description>String</Description>
  <EnableBookingUntilClosingTime>false</EnableBookingUntilClosingTime>
  <EndTime>PT0S</EndTime>
  <Exceptions>
    <ScheduleException>
      <EndTime>PT0S</EndTime>
      <StartTime>PT0S</StartTime>
    </ScheduleException>
  </Exceptions>
  <Name>String</Name>
  <NumberOfScheduleDays>0</NumberOfScheduleDays>
  <Resources>
    <AddScheduleResource>
      <Id>0</Id>
    </AddScheduleResource>
  </Resources>
  <ScheduleDates>
    <AddRecurringScheduleDate>
      <Date>0001-01-01T00:00:00</Date>
      <EndTime>PT0S</EndTime>
      <StartTime>PT0S</StartTime>
    </AddRecurringScheduleDate>
  </ScheduleDates>
  <Services>
    <AddScheduleService>
      <Id>0</Id>
    </AddScheduleService>
  </Services>
  <StartTime>PT0S</StartTime>
  <TimeInterval>0</TimeInterval>
  <ValidFrom>0001-01-01T00:00:00</ValidFrom>
  <ValidTo>0001-01-01T00:00:00</ValidTo>
</CreateRecurringSchedule>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<RecurringScheduleQueryResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.API.ServiceModel.Dtos">
  <Active>false</Active>
  <CreatedDate>0001-01-01T00:00:00</CreatedDate>
  <DaysOfWeek>
    <DayOfWeekDto>
      <DayOfWeek>String</DayOfWeek>
      <DayOfWeekId>0</DayOfWeekId>
      <DotNetDayOfWeekId>0</DotNetDayOfWeekId>
    </DayOfWeekDto>
  </DaysOfWeek>
  <Description>String</Description>
  <EnableBookingUntilClosingTime>false</EnableBookingUntilClosingTime>
  <EndTime>PT0S</EndTime>
  <Exceptions>
    <RecurringScheduleExceptionResponse>
      <EndTime>PT0S</EndTime>
      <StartTime>PT0S</StartTime>
    </RecurringScheduleExceptionResponse>
  </Exceptions>
  <Id>0</Id>
  <IsResourceSpecific>false</IsResourceSpecific>
  <Name>String</Name>
  <NumberOfScheduleDays>0</NumberOfScheduleDays>
  <Resources>
    <ScheduleResources>
      <Id>0</Id>
      <ImageUrl i:nil="true" />
      <Name>String</Name>
    </ScheduleResources>
  </Resources>
  <ResponseStatus xmlns:d2p1="http://schemas.servicestack.net/types">
    <d2p1:ErrorCode>String</d2p1:ErrorCode>
    <d2p1:Message>String</d2p1:Message>
    <d2p1:StackTrace>String</d2p1:StackTrace>
    <d2p1:Errors>
      <d2p1:ResponseError>
        <d2p1:ErrorCode>String</d2p1:ErrorCode>
        <d2p1:FieldName>String</d2p1:FieldName>
        <d2p1:Message>String</d2p1:Message>
        <d2p1:Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
          <d5p1:KeyValueOfstringstring>
            <d5p1:Key>String</d5p1:Key>
            <d5p1:Value>String</d5p1:Value>
          </d5p1:KeyValueOfstringstring>
        </d2p1:Meta>
      </d2p1:ResponseError>
    </d2p1:Errors>
    <d2p1:Meta xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:KeyValueOfstringstring>
        <d3p1:Key>String</d3p1:Key>
        <d3p1:Value>String</d3p1:Value>
      </d3p1:KeyValueOfstringstring>
    </d2p1:Meta>
  </ResponseStatus>
  <ScheduleDates>
    <RecurringScheduleDateResponse>
      <Date>0001-01-01T00:00:00</Date>
      <EndTime>PT0S</EndTime>
      <Id>0</Id>
      <ResponseStatus xmlns:d4p1="http://schemas.servicestack.net/types">
        <d4p1:ErrorCode>String</d4p1:ErrorCode>
        <d4p1:Message>String</d4p1:Message>
        <d4p1:StackTrace>String</d4p1:StackTrace>
        <d4p1:Errors>
          <d4p1:ResponseError>
            <d4p1:ErrorCode>String</d4p1:ErrorCode>
            <d4p1:FieldName>String</d4p1:FieldName>
            <d4p1:Message>String</d4p1:Message>
            <d4p1:Meta xmlns:d7p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
              <d7p1:KeyValueOfstringstring>
                <d7p1:Key>String</d7p1:Key>
                <d7p1:Value>String</d7p1:Value>
              </d7p1:KeyValueOfstringstring>
            </d4p1:Meta>
          </d4p1:ResponseError>
        </d4p1:Errors>
        <d4p1:Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
          <d5p1:KeyValueOfstringstring>
            <d5p1:Key>String</d5p1:Key>
            <d5p1:Value>String</d5p1:Value>
          </d5p1:KeyValueOfstringstring>
        </d4p1:Meta>
      </ResponseStatus>
      <StartTime>PT0S</StartTime>
    </RecurringScheduleDateResponse>
  </ScheduleDates>
  <Services>
    <ScheduleServices>
      <Id>0</Id>
      <ImageUrl i:nil="true" />
      <Name>String</Name>
    </ScheduleServices>
  </Services>
  <StartTime>PT0S</StartTime>
  <TimeInterval>0</TimeInterval>
  <UpdatedDate>0001-01-01T00:00:00</UpdatedDate>
  <ValidFrom>0001-01-01T00:00:00</ValidFrom>
  <ValidTo>0001-01-01T00:00:00</ValidTo>
</RecurringScheduleQueryResponse>