Requires any of the roles: | SystemAdministrator, Manager, Customer |
POST | /customers/{customerId}/test-schedule | ||
---|---|---|---|
POST | /endpoints/{endpointId}/test-schedule |
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum
class SimpleSchedulingRuleTypes(str, Enum):
ALWAYS = 'Always'
CUSTOMER_STATE = 'CustomerState'
TIME = 'Time'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Value:
bool_value: Optional[bool] = None
string_value: Optional[str] = None
number_value: Optional[float] = None
list_value: Optional[List[Struct]] = None
struct_value: Optional[Struct] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Struct(Dict[str,Value]):
pass
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ScheduleDay:
offset: int = 0
day_of_week: Optional[DayOfWeek] = None
class SchedulingRuleFrequency(str, Enum):
NONE = 'None'
SECONDLY = 'Secondly'
MINUTELY = 'Minutely'
HOURLY = 'Hourly'
DAILY = 'Daily'
WEEKLY = 'Weekly'
MONTHLY = 'Monthly'
YEARLY = 'Yearly'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SchedulingRule:
id: Optional[str] = None
name: Optional[str] = None
priority: int = 0
state: Optional[str] = None
source: Optional[str] = None
condition: Optional[str] = None
simple_rule_type: Optional[SimpleSchedulingRuleTypes] = None
customer_state: Optional[str] = None
flow_id: Optional[str] = None
flow_params: Optional[Struct] = None
is_all_day: bool = False
start_date: Optional[str] = None
start_time: Optional[str] = None
end_time: Optional[str] = None
by_set_position: Optional[List[int]] = None
by_month: Optional[List[int]] = None
by_week_no: Optional[List[int]] = None
by_year_day: Optional[List[int]] = None
by_month_day: Optional[List[int]] = None
by_day: Optional[List[ScheduleDay]] = None
by_hour: Optional[List[int]] = None
by_minute: Optional[List[int]] = None
interval: int = 0
count: int = 0
until_date: Optional[str] = None
frequency: Optional[SchedulingRuleFrequency] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Schedule:
time_zone_id: Optional[str] = None
inherit: bool = False
force_closed: bool = False
rules: Optional[List[SchedulingRule]] = None
default_state: Optional[str] = None
# @Api(Description="Test the customer's schedule")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TestSchedule:
"""
Test the customer's schedule
"""
# @ApiMember(Description="The ID of the customer whose schedule you want to test")
customer_id: Optional[str] = None
"""
The ID of the customer whose schedule you want to test
"""
# @ApiMember(Description="The ID of the endpoint whose schedule you want to test.")
endpoint_id: Optional[str] = None
"""
The ID of the endpoint whose schedule you want to test.
"""
# @ApiMember(Description="The schedule to use (leave null to use the current saved schedule)")
schedule: Optional[Schedule] = None
"""
The schedule to use (leave null to use the current saved schedule)
"""
# @ApiMember(Description="The ISO string of the date and time you want to test")
date_time: Optional[str] = None
"""
The ISO string of the date and time you want to test
"""
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TestScheduleResponse:
state_name: Optional[str] = None
time_zone_id: Optional[str] = None
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /customers/{customerId}/test-schedule HTTP/1.1
Host: team.evovoice.io
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<TestSchedule xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Customers">
<CustomerId>String</CustomerId>
<DateTime>String</DateTime>
<EndpointId>String</EndpointId>
<Schedule xmlns:d2p1="http://schemas.datacontract.org/2004/07/Voice.Api.Scheduling">
<d2p1:DefaultState>String</d2p1:DefaultState>
<d2p1:ForceClosed>false</d2p1:ForceClosed>
<d2p1:Inherit>false</d2p1:Inherit>
<d2p1:Rules>
<d2p1:SchedulingRule>
<d2p1:ByDay>
<d2p1:ScheduleDay>
<d2p1:DayOfWeek>Sunday</d2p1:DayOfWeek>
<d2p1:Offset>0</d2p1:Offset>
</d2p1:ScheduleDay>
</d2p1:ByDay>
<d2p1:ByHour xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d5p1:int>0</d5p1:int>
</d2p1:ByHour>
<d2p1:ByMinute xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d5p1:int>0</d5p1:int>
</d2p1:ByMinute>
<d2p1:ByMonth xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d5p1:int>0</d5p1:int>
</d2p1:ByMonth>
<d2p1:ByMonthDay xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d5p1:int>0</d5p1:int>
</d2p1:ByMonthDay>
<d2p1:BySetPosition xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d5p1:int>0</d5p1:int>
</d2p1:BySetPosition>
<d2p1:ByWeekNo xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d5p1:int>0</d5p1:int>
</d2p1:ByWeekNo>
<d2p1:ByYearDay xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d5p1:int>0</d5p1:int>
</d2p1:ByYearDay>
<d2p1:Condition>String</d2p1:Condition>
<d2p1:Count>0</d2p1:Count>
<d2p1:CustomerState>String</d2p1:CustomerState>
<d2p1:EndTime>String</d2p1:EndTime>
<d2p1:FlowId>String</d2p1:FlowId>
<d2p1:FlowParams xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" i:nil="true" />
<d2p1:Frequency>None</d2p1:Frequency>
<d2p1:Id>String</d2p1:Id>
<d2p1:Interval>0</d2p1:Interval>
<d2p1:IsAllDay>false</d2p1:IsAllDay>
<d2p1:Name>String</d2p1:Name>
<d2p1:Priority>0</d2p1:Priority>
<d2p1:SimpleRuleType>Always</d2p1:SimpleRuleType>
<d2p1:Source>String</d2p1:Source>
<d2p1:StartDate>String</d2p1:StartDate>
<d2p1:StartTime>String</d2p1:StartTime>
<d2p1:State>String</d2p1:State>
<d2p1:UntilDate>String</d2p1:UntilDate>
</d2p1:SchedulingRule>
</d2p1:Rules>
<d2p1:TimeZoneId>String</d2p1:TimeZoneId>
</Schedule>
</TestSchedule>
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: length <TestScheduleResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Customers"> <StateName>String</StateName> <TimeZoneId>String</TimeZoneId> </TestScheduleResponse>