| GET | /v1/CustomersInLine | ||
|---|---|---|---|
| GET | /v1/CustomersInLine/{LocationId} |
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
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PaperworkAsks:
questionnaire: bool = False
upload: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CustomerInLineObject:
checkin_id: Optional[str] = None
visit_key: Optional[str] = None
name: Optional[str] = None
say_name_as: Optional[str] = None
line: Optional[str] = None
description: Optional[str] = None
service_id: Optional[str] = None
status: int = 0
sign_in_time: datetime.datetime = datetime.datetime(1, 1, 1)
adjusted_sign_in_time: datetime.datetime = datetime.datetime(1, 1, 1)
arrived_time: Optional[datetime.datetime] = None
send_reminders: bool = False
called_time: Optional[datetime.datetime] = None
ticket_label: Optional[str] = None
station_id: Optional[str] = None
station_name: Optional[str] = None
id: Optional[str] = None
full_name: Optional[str] = None
task_time: Optional[int] = None
completed: Optional[bool] = None
completed_time: Optional[datetime.datetime] = None
employee_id: Optional[str] = None
employee: Optional[str] = None
questionnaire_submitted: Optional[bool] = None
hold_reason: Optional[str] = None
hold_expected_utc: Optional[datetime.datetime] = None
returned_time: Optional[datetime.datetime] = None
contact_id: Optional[int] = None
mobile_phone: Optional[str] = None
source: Optional[str] = None
last_moved_from: Optional[str] = None
last_moved_utc: Optional[datetime.datetime] = None
priority_time: Optional[datetime.datetime] = None
hold_by_name: Optional[str] = None
hold_by_station_name: Optional[str] = None
hold_since_utc: Optional[datetime.datetime] = None
ticket_no: Optional[int] = None
note_count: Optional[int] = None
has_carry_note: Optional[bool] = None
carry_note_by: Optional[str] = None
carry_note_at_utc: Optional[datetime.datetime] = None
paperwork_asks: Optional[PaperworkAsks] = None
document_count: Optional[int] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class LobbySettings:
location_id: Optional[str] = None
wait_source: Optional[str] = None
monitor_chime: Optional[str] = None
has_uploaded_chime: bool = False
chime_url: Optional[str] = None
monitor_volume: int = 0
monitor_announce: bool = False
monitor_announce_template: Optional[str] = None
monitor_voice: Optional[str] = None
monitor_voice_lang: Optional[str] = None
monitor_voice_rate: Decimal = decimal.Decimal(0)
monitor_repeat_after_sec: Optional[int] = None
monitor_ticket_only: bool = False
lobby_zone_mode: Optional[str] = None
lobby_takeover_every_min: Optional[int] = None
lobby_takeover_sec: Optional[int] = None
lobby_idle_screen: bool = False
time_zone: Optional[str] = None
monitor_show_services: Optional[bool] = None
lobby_tv_count: Optional[int] = None
ticket_prefix: Optional[str] = None
lobby_density: Optional[str] = None
lobby_idle_mode: Optional[str] = None
lobby_idle_content_id: Optional[int] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class StationSessionView:
session_id: Optional[str] = None
location_id: Optional[str] = None
station_id: Optional[str] = None
station_name: Optional[str] = None
employee_id: Optional[str] = None
employee_name: Optional[str] = None
signed_in_utc: datetime.datetime = datetime.datetime(1, 1, 1)
last_seen_utc: datetime.datetime = datetime.datetime(1, 1, 1)
paused_since_utc: Optional[datetime.datetime] = None
pause_reason: Optional[str] = None
home_branch_id: Optional[str] = None
home_branch_name: Optional[str] = None
is_mine: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CustomersInLineResponse:
response_status: Optional[ResponseStatus] = None
customers: List[CustomerInLineObject] = field(default_factory=list)
location_name: Optional[str] = None
monitor_show_services: Optional[bool] = None
lobby: Optional[LobbySettings] = None
workspace_name: Optional[str] = None
station_term: Optional[str] = None
sessions: List[StationSessionView] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CustomersInLine:
api_key: Optional[str] = None
location_id: Optional[str] = None
client_is_loading: bool = False
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /v1/CustomersInLine HTTP/1.1 Host: api.dev.dynamics.trendsic.com Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
ResponseStatus:
{
ErrorCode: String,
Message: String,
StackTrace: String,
Errors:
[
{
ErrorCode: String,
FieldName: String,
Message: String,
Meta:
{
String: String
}
}
],
Meta:
{
String: String
}
},
Customers:
[
{
CheckinId: 00000000000000000000000000000000,
VisitKey: 00000000000000000000000000000000,
Name: String,
SayNameAs: String,
Line: String,
Description: String,
ServiceId: 00000000000000000000000000000000,
Status: 0,
SignInTime: 0001-01-01,
AdjustedSignInTime: 0001-01-01,
ArrivedTime: 0001-01-01,
SendReminders: False,
CalledTime: 0001-01-01,
TicketLabel: String,
StationId: 00000000000000000000000000000000,
StationName: String,
Id: 00000000000000000000000000000000,
FullName: String,
TaskTime: 0,
Completed: False,
CompletedTime: 0001-01-01,
EmployeeId: 00000000000000000000000000000000,
Employee: String,
QuestionnaireSubmitted: False,
HoldReason: String,
HoldExpectedUtc: 0001-01-01,
ReturnedTime: 0001-01-01,
ContactId: 0,
MobilePhone: String,
Source: String,
LastMovedFrom: String,
LastMovedUtc: 0001-01-01,
PriorityTime: 0001-01-01,
HoldByName: String,
HoldByStationName: String,
HoldSinceUtc: 0001-01-01,
TicketNo: 0,
NoteCount: 0,
HasCarryNote: False,
CarryNoteBy: String,
CarryNoteAtUtc: 0001-01-01,
PaperworkAsks:
{
Questionnaire: False,
Upload: False
},
DocumentCount: 0
}
],
LocationName: String,
MonitorShowServices: False,
Lobby:
{
LocationId: 00000000000000000000000000000000,
WaitSource: String,
MonitorChime: String,
HasUploadedChime: False,
ChimeUrl: String,
MonitorVolume: 0,
MonitorAnnounce: False,
MonitorAnnounceTemplate: String,
MonitorVoice: String,
MonitorVoiceLang: String,
MonitorVoiceRate: 0,
MonitorRepeatAfterSec: 0,
MonitorTicketOnly: False,
LobbyZoneMode: String,
LobbyTakeoverEveryMin: 0,
LobbyTakeoverSec: 0,
LobbyIdleScreen: False,
TimeZone: String,
MonitorShowServices: False,
LobbyTvCount: 0,
TicketPrefix: String,
LobbyDensity: String,
LobbyIdleMode: String,
LobbyIdleContentId: 0
},
WorkspaceName: String,
StationTerm: String,
Sessions:
[
{
SessionId: 00000000000000000000000000000000,
LocationId: 00000000000000000000000000000000,
StationId: 00000000000000000000000000000000,
StationName: String,
EmployeeId: 00000000000000000000000000000000,
EmployeeName: String,
SignedInUtc: 0001-01-01,
LastSeenUtc: 0001-01-01,
PausedSinceUtc: 0001-01-01,
PauseReason: String,
HomeBranchId: 00000000000000000000000000000000,
HomeBranchName: String,
IsMine: False
}
]
}