| GET,OPTIONS | /v1/dashboards/executive |
|---|
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 ExecKpi:
key: Optional[str] = None
label: Optional[str] = None
value: Optional[str] = None
sub_: Optional[str] = field(metadata=config(field_name='sub'), default=None)
delta: Optional[str] = None
delta_up: bool = False
has_delta: bool = False
good: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ExecCostCategory:
name: Optional[str] = None
cost_u_s_d: float = 0.0
billed_u_s_d: float = 0.0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ExecMonthPoint:
month: Optional[str] = None
revenue_u_s_d: float = 0.0
cost_u_s_d: float = 0.0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ExecBacklogYear:
year: Optional[str] = None
value_u_s_d: float = 0.0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ExecBacklog:
total_u_s_d: float = 0.0
months_ahead: float = 0.0
awards_ytd_u_s_d: float = 0.0
burn_ytd_u_s_d: float = 0.0
by_year: List[ExecBacklogYear] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ExecWipRow:
contract_id: int = 0
name: Optional[str] = None
owner: Optional[str] = None
value_u_s_d: float = 0.0
pct_complete: float = 0.0
billed_u_s_d: float = 0.0
over_under_u_s_d: float = 0.0
margin_pct: float = 0.0
fade_pts: float = 0.0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ExecPipelineStage:
stage: Optional[str] = None
value_u_s_d: float = 0.0
count: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ExecAgingBucket:
bucket: Optional[str] = None
amount_u_s_d: float = 0.0
is_retainage: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ExecSafetyMetric:
label: Optional[str] = None
value: Optional[str] = None
sub_: Optional[str] = field(metadata=config(field_name='sub'), default=None)
good: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ExecutiveDashboard:
period: Optional[str] = None
from_date: datetime.datetime = datetime.datetime(1, 1, 1)
to_date: datetime.datetime = datetime.datetime(1, 1, 1)
fy: int = 0
kpis: List[ExecKpi] = field(default_factory=list)
cost_vs_billing: List[ExecCostCategory] = field(default_factory=list)
monthly: List[ExecMonthPoint] = field(default_factory=list)
backlog: Optional[ExecBacklog] = None
wip: List[ExecWipRow] = field(default_factory=list)
pipeline: List[ExecPipelineStage] = field(default_factory=list)
win_rate_pct: float = 0.0
receivables: List[ExecAgingBucket] = field(default_factory=list)
retainage_u_s_d: float = 0.0
dso_days: int = 0
safety: List[ExecSafetyMetric] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ExecutiveDashboardResponse:
response_status: Optional[ResponseStatus] = None
dashboard: Optional[ExecutiveDashboard] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ExecutiveDashboardRequest:
period: Optional[str] = None
region: Optional[str] = None
fy: Optional[int] = None
Python ExecutiveDashboardRequest 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.
GET /v1/dashboards/executive HTTP/1.1 Host: api.dev.dynamics.trendsic.com Accept: application/xml
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length
<ExecutiveDashboardResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/CRM.AgencyPlatform.API.Internal">
<Dashboard>
<Backlog>
<AwardsYtdUSD>0</AwardsYtdUSD>
<BurnYtdUSD>0</BurnYtdUSD>
<ByYear>
<ExecBacklogYear>
<ValueUSD>0</ValueUSD>
<Year>String</Year>
</ExecBacklogYear>
</ByYear>
<MonthsAhead>0</MonthsAhead>
<TotalUSD>0</TotalUSD>
</Backlog>
<CostVsBilling>
<ExecCostCategory>
<BilledUSD>0</BilledUSD>
<CostUSD>0</CostUSD>
<Name>String</Name>
</ExecCostCategory>
</CostVsBilling>
<DsoDays>0</DsoDays>
<FromDate>0001-01-01T00:00:00</FromDate>
<Fy>0</Fy>
<Kpis>
<ExecKpi>
<Delta>String</Delta>
<DeltaUp>false</DeltaUp>
<Good>false</Good>
<HasDelta>false</HasDelta>
<Key>String</Key>
<Label>String</Label>
<Sub_>String</Sub_>
<Value>String</Value>
</ExecKpi>
</Kpis>
<Monthly>
<ExecMonthPoint>
<CostUSD>0</CostUSD>
<Month>String</Month>
<RevenueUSD>0</RevenueUSD>
</ExecMonthPoint>
</Monthly>
<Period>String</Period>
<Pipeline>
<ExecPipelineStage>
<Count>0</Count>
<Stage>String</Stage>
<ValueUSD>0</ValueUSD>
</ExecPipelineStage>
</Pipeline>
<Receivables>
<ExecAgingBucket>
<AmountUSD>0</AmountUSD>
<Bucket>String</Bucket>
<IsRetainage>false</IsRetainage>
</ExecAgingBucket>
</Receivables>
<RetainageUSD>0</RetainageUSD>
<Safety>
<ExecSafetyMetric>
<Good>false</Good>
<Label>String</Label>
<Sub_>String</Sub_>
<Value>String</Value>
</ExecSafetyMetric>
</Safety>
<ToDate>0001-01-01T00:00:00</ToDate>
<WinRatePct>0</WinRatePct>
<Wip>
<ExecWipRow>
<BilledUSD>0</BilledUSD>
<ContractId>0</ContractId>
<FadePts>0</FadePts>
<MarginPct>0</MarginPct>
<Name>String</Name>
<OverUnderUSD>0</OverUnderUSD>
<Owner>String</Owner>
<PctComplete>0</PctComplete>
<ValueUSD>0</ValueUSD>
</ExecWipRow>
</Wip>
</Dashboard>
<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>
</ExecutiveDashboardResponse>