| POST | /v1/coverage/approvals/{CoverageApprovalId}/approve |
|---|
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 CoverageExplanationSource:
policy_name: Optional[str] = None
cascade_level: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageExplanationOverride:
who: Optional[str] = None
consequence: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageExplanation:
plain_sentence: Optional[str] = None
rule_id: Optional[str] = None
rule_name: Optional[str] = None
demand: Optional[str] = None
source: Optional[CoverageExplanationSource] = None
kind: Optional[str] = None
why_it_exists: Optional[str] = None
what_would_change_it: Optional[str] = None
override: Optional[CoverageExplanationOverride] = None
drill: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageCandidateCheck:
check_id: Optional[str] = None
result: Optional[str] = None
expl: Optional[CoverageExplanation] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageEffect:
icon: Optional[str] = None
text: Optional[str] = None
rule_id: Optional[str] = None
expl: Optional[CoverageExplanation] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageCandidate:
contact_id: int = 0
name: Optional[str] = None
first_name: Optional[str] = None
initials: Optional[str] = None
rank: int = 0
diff_line: Optional[str] = None
cost_line: Optional[str] = None
cost_tone: Optional[str] = None
rank_expl: Optional[CoverageExplanation] = None
margin_pct: Optional[Decimal] = None
margin_tone: Optional[str] = None
loaded: Optional[Decimal] = None
billed: Optional[Decimal] = None
ot_hours: Optional[Decimal] = None
ot_premium: Optional[Decimal] = None
checks: List[CoverageCandidateCheck] = field(default_factory=list)
preview: List[CoverageEffect] = field(default_factory=list)
confirm: List[CoverageEffect] = field(default_factory=list)
has_warn: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageBlockedCandidate:
contact_id: int = 0
name: Optional[str] = None
initials: Optional[str] = None
reason: Optional[str] = None
change_chip: Optional[str] = None
expl: Optional[CoverageExplanation] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageOfferInfo:
coverage_offer_id: int = 0
contact_id: int = 0
name: Optional[str] = None
ring: int = 0
channel: Optional[str] = None
status: Optional[str] = None
sent_at_utc: datetime.datetime = datetime.datetime(1, 1, 1)
responded_at_utc: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageApprovalInfo:
coverage_approval_id: int = 0
coverage_gap_id: int = 0
type: Optional[str] = None
status: Optional[str] = None
requested_at_utc: datetime.datetime = datetime.datetime(1, 1, 1)
effects: List[CoverageEffect] = field(default_factory=list)
contact_id: Optional[int] = None
contact_name: Optional[str] = None
decided_at_utc: Optional[datetime.datetime] = None
decision_note: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageGapEventInfo:
event_type: Optional[str] = None
channel: Optional[str] = None
detail: Optional[str] = None
contact_name: Optional[str] = None
at_utc: datetime.datetime = datetime.datetime(1, 1, 1)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageMoveOption:
key: Optional[str] = None
label: Optional[str] = None
detail: Optional[str] = None
expl: Optional[CoverageExplanation] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageNoShowAttempt:
at_utc: datetime.datetime = datetime.datetime(1, 1, 1)
channel: Optional[str] = None
note: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageNoShowState:
grace_until_utc: datetime.datetime = datetime.datetime(1, 1, 1)
attempts: List[CoverageNoShowAttempt] = field(default_factory=list)
declared_at_utc: Optional[datetime.datetime] = None
attendance_note: bool = False
false_alarm: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageLeaveCheckpoint:
at_utc: datetime.datetime = datetime.datetime(1, 1, 1)
note: Optional[str] = None
by_name: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageLeaveState:
fmla: bool = False
began: datetime.datetime = datetime.datetime(1, 1, 1)
est_return: Optional[datetime.datetime] = None
checkpoint_days: int = 0
next_checkpoint_utc: Optional[datetime.datetime] = None
checkpoints: List[CoverageLeaveCheckpoint] = field(default_factory=list)
interim_contact_id: Optional[int] = None
interim_name: Optional[str] = None
interim_start: Optional[datetime.datetime] = None
interim_end: Optional[datetime.datetime] = None
requisition_opened: bool = False
staff_posting_id: Optional[int] = None
chained_gap_ids: List[int] = field(default_factory=list)
parent_leave_gap_id: Optional[int] = None
restored_at_utc: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageGap:
coverage_gap_id: int = 0
coverage_gap_u_i_d: Optional[str] = None
branch_id: Optional[str] = None
status: Optional[str] = None
track: Optional[str] = None
out_contact_i_d: Optional[int] = None
out_name: Optional[str] = None
out_initials: Optional[str] = None
job_i_d: Optional[int] = None
job_name: Optional[str] = None
project_i_d: Optional[int] = None
worker_schedule_item_i_d: Optional[int] = None
window_start: datetime.datetime = datetime.datetime(1, 1, 1)
window_end: datetime.datetime = datetime.datetime(1, 1, 1)
reason: Optional[str] = None
must_fill: bool = False
must_fill_expl: Optional[CoverageExplanation] = None
filled_by_contact_i_d: Optional[int] = None
filled_by_name: Optional[str] = None
record_no: Optional[str] = None
decided_policy_version_id: Optional[int] = None
created_at: datetime.datetime = datetime.datetime(1, 1, 1)
updated_at: Optional[datetime.datetime] = None
qualified_line: Optional[str] = None
candidates: List[CoverageCandidate] = field(default_factory=list)
blocked: List[CoverageBlockedCandidate] = field(default_factory=list)
offers: List[CoverageOfferInfo] = field(default_factory=list)
approvals: List[CoverageApprovalInfo] = field(default_factory=list)
timeline: List[CoverageGapEventInfo] = field(default_factory=list)
move_options: List[CoverageMoveOption] = field(default_factory=list)
order_expl: Optional[CoverageExplanation] = None
assignment_mode: Optional[str] = None
no_show: Optional[CoverageNoShowState] = None
leave: Optional[CoverageLeaveState] = None
customer_name: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageGapResponse:
gap: Optional[CoverageGap] = None
chained_preview: Optional[int] = None
can_see_pay: bool = False
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoverageApprovalDecideRequest:
coverage_approval_id: int = 0
approve: bool = False
note: Optional[str] = None
Python CoverageApprovalDecideRequest DTOs
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 /v1/coverage/approvals/{CoverageApprovalId}/approve HTTP/1.1
Host: api.dev.dynamics.trendsic.com
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<CoverageApprovalDecideRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/CRM.AgencyPlatform.API.Internal">
<Approve>false</Approve>
<CoverageApprovalId>0</CoverageApprovalId>
<Note>String</Note>
</CoverageApprovalDecideRequest>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length
<CoverageGapResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/CRM.AgencyPlatform.API.Internal">
<CanSeePay>false</CanSeePay>
<ChainedPreview>0</ChainedPreview>
<Gap>
<Approvals>
<CoverageApprovalInfo>
<ContactId>0</ContactId>
<ContactName>String</ContactName>
<CoverageApprovalId>0</CoverageApprovalId>
<CoverageGapId>0</CoverageGapId>
<DecidedAtUtc>0001-01-01T00:00:00</DecidedAtUtc>
<DecisionNote>String</DecisionNote>
<Effects>
<CoverageEffect>
<Expl>
<Demand>String</Demand>
<Drill>String</Drill>
<Kind>String</Kind>
<Override>
<Consequence>String</Consequence>
<Who>String</Who>
</Override>
<PlainSentence>String</PlainSentence>
<RuleId>String</RuleId>
<RuleName>String</RuleName>
<Source>
<CascadeLevel>String</CascadeLevel>
<PolicyName>String</PolicyName>
</Source>
<WhatWouldChangeIt>String</WhatWouldChangeIt>
<WhyItExists>String</WhyItExists>
</Expl>
<Icon>String</Icon>
<RuleId>String</RuleId>
<Text>String</Text>
</CoverageEffect>
</Effects>
<RequestedAtUtc>0001-01-01T00:00:00</RequestedAtUtc>
<Status>String</Status>
<Type>String</Type>
</CoverageApprovalInfo>
</Approvals>
<AssignmentMode>String</AssignmentMode>
<Blocked>
<CoverageBlockedCandidate>
<ChangeChip>String</ChangeChip>
<ContactId>0</ContactId>
<Expl>
<Demand>String</Demand>
<Drill>String</Drill>
<Kind>String</Kind>
<Override>
<Consequence>String</Consequence>
<Who>String</Who>
</Override>
<PlainSentence>String</PlainSentence>
<RuleId>String</RuleId>
<RuleName>String</RuleName>
<Source>
<CascadeLevel>String</CascadeLevel>
<PolicyName>String</PolicyName>
</Source>
<WhatWouldChangeIt>String</WhatWouldChangeIt>
<WhyItExists>String</WhyItExists>
</Expl>
<Initials>String</Initials>
<Name>String</Name>
<Reason>String</Reason>
</CoverageBlockedCandidate>
</Blocked>
<BranchId>00000000-0000-0000-0000-000000000000</BranchId>
<Candidates>
<CoverageCandidate>
<Billed>0</Billed>
<Checks>
<CoverageCandidateCheck>
<CheckId>String</CheckId>
<Expl>
<Demand>String</Demand>
<Drill>String</Drill>
<Kind>String</Kind>
<Override>
<Consequence>String</Consequence>
<Who>String</Who>
</Override>
<PlainSentence>String</PlainSentence>
<RuleId>String</RuleId>
<RuleName>String</RuleName>
<Source>
<CascadeLevel>String</CascadeLevel>
<PolicyName>String</PolicyName>
</Source>
<WhatWouldChangeIt>String</WhatWouldChangeIt>
<WhyItExists>String</WhyItExists>
</Expl>
<Result>String</Result>
</CoverageCandidateCheck>
</Checks>
<Confirm>
<CoverageEffect>
<Expl>
<Demand>String</Demand>
<Drill>String</Drill>
<Kind>String</Kind>
<Override>
<Consequence>String</Consequence>
<Who>String</Who>
</Override>
<PlainSentence>String</PlainSentence>
<RuleId>String</RuleId>
<RuleName>String</RuleName>
<Source>
<CascadeLevel>String</CascadeLevel>
<PolicyName>String</PolicyName>
</Source>
<WhatWouldChangeIt>String</WhatWouldChangeIt>
<WhyItExists>String</WhyItExists>
</Expl>
<Icon>String</Icon>
<RuleId>String</RuleId>
<Text>String</Text>
</CoverageEffect>
</Confirm>
<ContactId>0</ContactId>
<CostLine>String</CostLine>
<CostTone>String</CostTone>
<DiffLine>String</DiffLine>
<FirstName>String</FirstName>
<HasWarn>false</HasWarn>
<Initials>String</Initials>
<Loaded>0</Loaded>
<MarginPct>0</MarginPct>
<MarginTone>String</MarginTone>
<Name>String</Name>
<OtHours>0</OtHours>
<OtPremium>0</OtPremium>
<Preview>
<CoverageEffect>
<Expl>
<Demand>String</Demand>
<Drill>String</Drill>
<Kind>String</Kind>
<Override>
<Consequence>String</Consequence>
<Who>String</Who>
</Override>
<PlainSentence>String</PlainSentence>
<RuleId>String</RuleId>
<RuleName>String</RuleName>
<Source>
<CascadeLevel>String</CascadeLevel>
<PolicyName>String</PolicyName>
</Source>
<WhatWouldChangeIt>String</WhatWouldChangeIt>
<WhyItExists>String</WhyItExists>
</Expl>
<Icon>String</Icon>
<RuleId>String</RuleId>
<Text>String</Text>
</CoverageEffect>
</Preview>
<Rank>0</Rank>
<RankExpl>
<Demand>String</Demand>
<Drill>String</Drill>
<Kind>String</Kind>
<Override>
<Consequence>String</Consequence>
<Who>String</Who>
</Override>
<PlainSentence>String</PlainSentence>
<RuleId>String</RuleId>
<RuleName>String</RuleName>
<Source>
<CascadeLevel>String</CascadeLevel>
<PolicyName>String</PolicyName>
</Source>
<WhatWouldChangeIt>String</WhatWouldChangeIt>
<WhyItExists>String</WhyItExists>
</RankExpl>
</CoverageCandidate>
</Candidates>
<CoverageGapId>0</CoverageGapId>
<CoverageGapUID>00000000-0000-0000-0000-000000000000</CoverageGapUID>
<CreatedAt>0001-01-01T00:00:00</CreatedAt>
<CustomerName>String</CustomerName>
<DecidedPolicyVersionId>0</DecidedPolicyVersionId>
<FilledByContactID>0</FilledByContactID>
<FilledByName>String</FilledByName>
<JobID>0</JobID>
<JobName>String</JobName>
<Leave>
<Began>0001-01-01T00:00:00</Began>
<ChainedGapIds xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:int>0</d4p1:int>
</ChainedGapIds>
<CheckpointDays>0</CheckpointDays>
<Checkpoints>
<CoverageLeaveCheckpoint>
<AtUtc>0001-01-01T00:00:00</AtUtc>
<ByName>String</ByName>
<Note>String</Note>
</CoverageLeaveCheckpoint>
</Checkpoints>
<EstReturn>0001-01-01T00:00:00</EstReturn>
<Fmla>false</Fmla>
<InterimContactId>0</InterimContactId>
<InterimEnd>0001-01-01T00:00:00</InterimEnd>
<InterimName>String</InterimName>
<InterimStart>0001-01-01T00:00:00</InterimStart>
<NextCheckpointUtc>0001-01-01T00:00:00</NextCheckpointUtc>
<ParentLeaveGapId>0</ParentLeaveGapId>
<RequisitionOpened>false</RequisitionOpened>
<RestoredAtUtc>0001-01-01T00:00:00</RestoredAtUtc>
<StaffPostingId>0</StaffPostingId>
</Leave>
<MoveOptions>
<CoverageMoveOption>
<Detail>String</Detail>
<Expl>
<Demand>String</Demand>
<Drill>String</Drill>
<Kind>String</Kind>
<Override>
<Consequence>String</Consequence>
<Who>String</Who>
</Override>
<PlainSentence>String</PlainSentence>
<RuleId>String</RuleId>
<RuleName>String</RuleName>
<Source>
<CascadeLevel>String</CascadeLevel>
<PolicyName>String</PolicyName>
</Source>
<WhatWouldChangeIt>String</WhatWouldChangeIt>
<WhyItExists>String</WhyItExists>
</Expl>
<Key>String</Key>
<Label>String</Label>
</CoverageMoveOption>
</MoveOptions>
<MustFill>false</MustFill>
<MustFillExpl>
<Demand>String</Demand>
<Drill>String</Drill>
<Kind>String</Kind>
<Override>
<Consequence>String</Consequence>
<Who>String</Who>
</Override>
<PlainSentence>String</PlainSentence>
<RuleId>String</RuleId>
<RuleName>String</RuleName>
<Source>
<CascadeLevel>String</CascadeLevel>
<PolicyName>String</PolicyName>
</Source>
<WhatWouldChangeIt>String</WhatWouldChangeIt>
<WhyItExists>String</WhyItExists>
</MustFillExpl>
<NoShow>
<Attempts>
<CoverageNoShowAttempt>
<AtUtc>0001-01-01T00:00:00</AtUtc>
<Channel>String</Channel>
<Note>String</Note>
</CoverageNoShowAttempt>
</Attempts>
<AttendanceNote>false</AttendanceNote>
<DeclaredAtUtc>0001-01-01T00:00:00</DeclaredAtUtc>
<FalseAlarm>false</FalseAlarm>
<GraceUntilUtc>0001-01-01T00:00:00</GraceUntilUtc>
</NoShow>
<Offers>
<CoverageOfferInfo>
<Channel>String</Channel>
<ContactId>0</ContactId>
<CoverageOfferId>0</CoverageOfferId>
<Name>String</Name>
<RespondedAtUtc>0001-01-01T00:00:00</RespondedAtUtc>
<Ring>0</Ring>
<SentAtUtc>0001-01-01T00:00:00</SentAtUtc>
<Status>String</Status>
</CoverageOfferInfo>
</Offers>
<OrderExpl>
<Demand>String</Demand>
<Drill>String</Drill>
<Kind>String</Kind>
<Override>
<Consequence>String</Consequence>
<Who>String</Who>
</Override>
<PlainSentence>String</PlainSentence>
<RuleId>String</RuleId>
<RuleName>String</RuleName>
<Source>
<CascadeLevel>String</CascadeLevel>
<PolicyName>String</PolicyName>
</Source>
<WhatWouldChangeIt>String</WhatWouldChangeIt>
<WhyItExists>String</WhyItExists>
</OrderExpl>
<OutContactID>0</OutContactID>
<OutInitials>String</OutInitials>
<OutName>String</OutName>
<ProjectID>0</ProjectID>
<QualifiedLine>String</QualifiedLine>
<Reason>String</Reason>
<RecordNo>String</RecordNo>
<Status>String</Status>
<Timeline>
<CoverageGapEventInfo>
<AtUtc>0001-01-01T00:00:00</AtUtc>
<Channel>String</Channel>
<ContactName>String</ContactName>
<Detail>String</Detail>
<EventType>String</EventType>
</CoverageGapEventInfo>
</Timeline>
<Track>String</Track>
<UpdatedAt>0001-01-01T00:00:00</UpdatedAt>
<WindowEnd>0001-01-01T00:00:00</WindowEnd>
<WindowStart>0001-01-01T00:00:00</WindowStart>
<WorkerScheduleItemID>0</WorkerScheduleItemID>
</Gap>
<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>
</CoverageGapResponse>