vdc-20201214/alibabacloud_vdc20201214/models.py (6,783 lines of code) (raw):

# -*- coding: utf-8 -*- # This file is auto-generated, don't edit it. Thanks. from Tea.model import TeaModel from typing import Dict, List, Any class DescribeAppConfigRequest(TeaModel): def __init__( self, app_id: str = None, ): self.app_id = app_id def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') return self class DescribeAppConfigResponseBodyThresholdConfig(TeaModel): def __init__( self, join_slow_time: int = None, ): self.join_slow_time = join_slow_time def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.join_slow_time is not None: result['JoinSlowTime'] = self.join_slow_time return result def from_map(self, m: dict = None): m = m or dict() if m.get('JoinSlowTime') is not None: self.join_slow_time = m.get('JoinSlowTime') return self class DescribeAppConfigResponseBody(TeaModel): def __init__( self, request_id: str = None, threshold_config: DescribeAppConfigResponseBodyThresholdConfig = None, ): self.request_id = request_id self.threshold_config = threshold_config def validate(self): if self.threshold_config: self.threshold_config.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.request_id is not None: result['RequestId'] = self.request_id if self.threshold_config is not None: result['ThresholdConfig'] = self.threshold_config.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('RequestId') is not None: self.request_id = m.get('RequestId') if m.get('ThresholdConfig') is not None: temp_model = DescribeAppConfigResponseBodyThresholdConfig() self.threshold_config = temp_model.from_map(m['ThresholdConfig']) return self class DescribeAppConfigResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeAppConfigResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeAppConfigResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeCallRequest(TeaModel): def __init__( self, app_id: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, ext_data_type: str = None, query_exp_info: bool = None, ): self.app_id = app_id self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.ext_data_type = ext_data_type self.query_exp_info = query_exp_info def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.ext_data_type is not None: result['ExtDataType'] = self.ext_data_type if self.query_exp_info is not None: result['QueryExpInfo'] = self.query_exp_info return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('ExtDataType') is not None: self.ext_data_type = m.get('ExtDataType') if m.get('QueryExpInfo') is not None: self.query_exp_info = m.get('QueryExpInfo') return self class DescribeCallResponseBodyCallInfo(TeaModel): def __init__( self, app_id: str = None, call_status: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, duration: int = None, ): # App ID。 self.app_id = app_id self.call_status = call_status self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.duration = duration def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.call_status is not None: result['CallStatus'] = self.call_status if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.duration is not None: result['Duration'] = self.duration return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('CallStatus') is not None: self.call_status = m.get('CallStatus') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('Duration') is not None: self.duration = m.get('Duration') return self class DescribeCallResponseBodyUserDetailListDurMetricStatData(TeaModel): def __init__( self, pub_audio: int = None, pub_video_1080: int = None, pub_video_360: int = None, pub_video_720: int = None, pub_video_screen_share: int = None, sub_audio: int = None, sub_video_1080: int = None, sub_video_360: int = None, sub_video_720: int = None, sub_video_screen_share: int = None, ): self.pub_audio = pub_audio self.pub_video_1080 = pub_video_1080 self.pub_video_360 = pub_video_360 self.pub_video_720 = pub_video_720 self.pub_video_screen_share = pub_video_screen_share self.sub_audio = sub_audio self.sub_video_1080 = sub_video_1080 self.sub_video_360 = sub_video_360 self.sub_video_720 = sub_video_720 self.sub_video_screen_share = sub_video_screen_share def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.pub_audio is not None: result['PubAudio'] = self.pub_audio if self.pub_video_1080 is not None: result['PubVideo1080'] = self.pub_video_1080 if self.pub_video_360 is not None: result['PubVideo360'] = self.pub_video_360 if self.pub_video_720 is not None: result['PubVideo720'] = self.pub_video_720 if self.pub_video_screen_share is not None: result['PubVideoScreenShare'] = self.pub_video_screen_share if self.sub_audio is not None: result['SubAudio'] = self.sub_audio if self.sub_video_1080 is not None: result['SubVideo1080'] = self.sub_video_1080 if self.sub_video_360 is not None: result['SubVideo360'] = self.sub_video_360 if self.sub_video_720 is not None: result['SubVideo720'] = self.sub_video_720 if self.sub_video_screen_share is not None: result['SubVideoScreenShare'] = self.sub_video_screen_share return result def from_map(self, m: dict = None): m = m or dict() if m.get('PubAudio') is not None: self.pub_audio = m.get('PubAudio') if m.get('PubVideo1080') is not None: self.pub_video_1080 = m.get('PubVideo1080') if m.get('PubVideo360') is not None: self.pub_video_360 = m.get('PubVideo360') if m.get('PubVideo720') is not None: self.pub_video_720 = m.get('PubVideo720') if m.get('PubVideoScreenShare') is not None: self.pub_video_screen_share = m.get('PubVideoScreenShare') if m.get('SubAudio') is not None: self.sub_audio = m.get('SubAudio') if m.get('SubVideo1080') is not None: self.sub_video_1080 = m.get('SubVideo1080') if m.get('SubVideo360') is not None: self.sub_video_360 = m.get('SubVideo360') if m.get('SubVideo720') is not None: self.sub_video_720 = m.get('SubVideo720') if m.get('SubVideoScreenShare') is not None: self.sub_video_screen_share = m.get('SubVideoScreenShare') return self class DescribeCallResponseBodyUserDetailListOnlinePeriods(TeaModel): def __init__( self, join_ts: int = None, leave_ts: int = None, ): self.join_ts = join_ts self.leave_ts = leave_ts def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.join_ts is not None: result['JoinTs'] = self.join_ts if self.leave_ts is not None: result['LeaveTs'] = self.leave_ts return result def from_map(self, m: dict = None): m = m or dict() if m.get('JoinTs') is not None: self.join_ts = m.get('JoinTs') if m.get('LeaveTs') is not None: self.leave_ts = m.get('LeaveTs') return self class DescribeCallResponseBodyUserDetailList(TeaModel): def __init__( self, call_exp: str = None, created_ts: int = None, destroyed_ts: int = None, dur_metric_stat_data: DescribeCallResponseBodyUserDetailListDurMetricStatData = None, duration: int = None, location: str = None, network: str = None, network_list: List[str] = None, online_duration: int = None, online_periods: List[DescribeCallResponseBodyUserDetailListOnlinePeriods] = None, os: str = None, os_list: List[str] = None, roles: List[str] = None, sdk_version: str = None, sdk_version_list: List[str] = None, user_id: str = None, user_id_alias: str = None, ): self.call_exp = call_exp self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.dur_metric_stat_data = dur_metric_stat_data self.duration = duration self.location = location self.network = network self.network_list = network_list self.online_duration = online_duration self.online_periods = online_periods self.os = os self.os_list = os_list self.roles = roles self.sdk_version = sdk_version self.sdk_version_list = sdk_version_list self.user_id = user_id self.user_id_alias = user_id_alias def validate(self): if self.dur_metric_stat_data: self.dur_metric_stat_data.validate() if self.online_periods: for k in self.online_periods: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.call_exp is not None: result['CallExp'] = self.call_exp if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.dur_metric_stat_data is not None: result['DurMetricStatData'] = self.dur_metric_stat_data.to_map() if self.duration is not None: result['Duration'] = self.duration if self.location is not None: result['Location'] = self.location if self.network is not None: result['Network'] = self.network if self.network_list is not None: result['NetworkList'] = self.network_list if self.online_duration is not None: result['OnlineDuration'] = self.online_duration result['OnlinePeriods'] = [] if self.online_periods is not None: for k in self.online_periods: result['OnlinePeriods'].append(k.to_map() if k else None) if self.os is not None: result['Os'] = self.os if self.os_list is not None: result['OsList'] = self.os_list if self.roles is not None: result['Roles'] = self.roles if self.sdk_version is not None: result['SdkVersion'] = self.sdk_version if self.sdk_version_list is not None: result['SdkVersionList'] = self.sdk_version_list if self.user_id is not None: result['UserId'] = self.user_id if self.user_id_alias is not None: result['UserIdAlias'] = self.user_id_alias return result def from_map(self, m: dict = None): m = m or dict() if m.get('CallExp') is not None: self.call_exp = m.get('CallExp') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('DurMetricStatData') is not None: temp_model = DescribeCallResponseBodyUserDetailListDurMetricStatData() self.dur_metric_stat_data = temp_model.from_map(m['DurMetricStatData']) if m.get('Duration') is not None: self.duration = m.get('Duration') if m.get('Location') is not None: self.location = m.get('Location') if m.get('Network') is not None: self.network = m.get('Network') if m.get('NetworkList') is not None: self.network_list = m.get('NetworkList') if m.get('OnlineDuration') is not None: self.online_duration = m.get('OnlineDuration') self.online_periods = [] if m.get('OnlinePeriods') is not None: for k in m.get('OnlinePeriods'): temp_model = DescribeCallResponseBodyUserDetailListOnlinePeriods() self.online_periods.append(temp_model.from_map(k)) if m.get('Os') is not None: self.os = m.get('Os') if m.get('OsList') is not None: self.os_list = m.get('OsList') if m.get('Roles') is not None: self.roles = m.get('Roles') if m.get('SdkVersion') is not None: self.sdk_version = m.get('SdkVersion') if m.get('SdkVersionList') is not None: self.sdk_version_list = m.get('SdkVersionList') if m.get('UserId') is not None: self.user_id = m.get('UserId') if m.get('UserIdAlias') is not None: self.user_id_alias = m.get('UserIdAlias') return self class DescribeCallResponseBody(TeaModel): def __init__( self, call_info: DescribeCallResponseBodyCallInfo = None, request_id: str = None, user_detail_list: List[DescribeCallResponseBodyUserDetailList] = None, ): self.call_info = call_info self.request_id = request_id self.user_detail_list = user_detail_list def validate(self): if self.call_info: self.call_info.validate() if self.user_detail_list: for k in self.user_detail_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.call_info is not None: result['CallInfo'] = self.call_info.to_map() if self.request_id is not None: result['RequestId'] = self.request_id result['UserDetailList'] = [] if self.user_detail_list is not None: for k in self.user_detail_list: result['UserDetailList'].append(k.to_map() if k else None) return result def from_map(self, m: dict = None): m = m or dict() if m.get('CallInfo') is not None: temp_model = DescribeCallResponseBodyCallInfo() self.call_info = temp_model.from_map(m['CallInfo']) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') self.user_detail_list = [] if m.get('UserDetailList') is not None: for k in m.get('UserDetailList'): temp_model = DescribeCallResponseBodyUserDetailList() self.user_detail_list.append(temp_model.from_map(k)) return self class DescribeCallResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeCallResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeCallResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeCallInfoRequest(TeaModel): def __init__( self, app_id: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, ): self.app_id = app_id self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') return self class DescribeCallInfoResponseBodyCallInfo(TeaModel): def __init__( self, app_id: str = None, call_status: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, duration: int = None, ): self.app_id = app_id self.call_status = call_status self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.duration = duration def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.call_status is not None: result['CallStatus'] = self.call_status if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.duration is not None: result['Duration'] = self.duration return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('CallStatus') is not None: self.call_status = m.get('CallStatus') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('Duration') is not None: self.duration = m.get('Duration') return self class DescribeCallInfoResponseBody(TeaModel): def __init__( self, call_info: DescribeCallInfoResponseBodyCallInfo = None, request_id: str = None, ): self.call_info = call_info self.request_id = request_id def validate(self): if self.call_info: self.call_info.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.call_info is not None: result['CallInfo'] = self.call_info.to_map() if self.request_id is not None: result['RequestId'] = self.request_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('CallInfo') is not None: temp_model = DescribeCallInfoResponseBodyCallInfo() self.call_info = temp_model.from_map(m['CallInfo']) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') return self class DescribeCallInfoResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeCallInfoResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeCallInfoResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeCallListRequest(TeaModel): def __init__( self, app_id: str = None, call_status: str = None, channel_id: str = None, end_ts: int = None, order_by: str = None, page_no: int = None, page_size: int = None, query_mode: str = None, start_ts: int = None, user_id: str = None, ): self.app_id = app_id self.call_status = call_status self.channel_id = channel_id self.end_ts = end_ts self.order_by = order_by self.page_no = page_no self.page_size = page_size self.query_mode = query_mode self.start_ts = start_ts self.user_id = user_id def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.call_status is not None: result['CallStatus'] = self.call_status if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.end_ts is not None: result['EndTs'] = self.end_ts if self.order_by is not None: result['OrderBy'] = self.order_by if self.page_no is not None: result['PageNo'] = self.page_no if self.page_size is not None: result['PageSize'] = self.page_size if self.query_mode is not None: result['QueryMode'] = self.query_mode if self.start_ts is not None: result['StartTs'] = self.start_ts if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('CallStatus') is not None: self.call_status = m.get('CallStatus') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('EndTs') is not None: self.end_ts = m.get('EndTs') if m.get('OrderBy') is not None: self.order_by = m.get('OrderBy') if m.get('PageNo') is not None: self.page_no = m.get('PageNo') if m.get('PageSize') is not None: self.page_size = m.get('PageSize') if m.get('QueryMode') is not None: self.query_mode = m.get('QueryMode') if m.get('StartTs') is not None: self.start_ts = m.get('StartTs') if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeCallListResponseBodyCallList(TeaModel): def __init__( self, app_id: str = None, bad_exp_user_cnt: int = None, call_status: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, duration: int = None, user_cnt: int = None, ): # App ID。 self.app_id = app_id self.bad_exp_user_cnt = bad_exp_user_cnt self.call_status = call_status self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.duration = duration self.user_cnt = user_cnt def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.bad_exp_user_cnt is not None: result['BadExpUserCnt'] = self.bad_exp_user_cnt if self.call_status is not None: result['CallStatus'] = self.call_status if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.duration is not None: result['Duration'] = self.duration if self.user_cnt is not None: result['UserCnt'] = self.user_cnt return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('BadExpUserCnt') is not None: self.bad_exp_user_cnt = m.get('BadExpUserCnt') if m.get('CallStatus') is not None: self.call_status = m.get('CallStatus') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('Duration') is not None: self.duration = m.get('Duration') if m.get('UserCnt') is not None: self.user_cnt = m.get('UserCnt') return self class DescribeCallListResponseBody(TeaModel): def __init__( self, call_list: List[DescribeCallListResponseBodyCallList] = None, page_no: int = None, page_size: int = None, request_id: str = None, total_cnt: int = None, ): self.call_list = call_list self.page_no = page_no self.page_size = page_size self.request_id = request_id self.total_cnt = total_cnt def validate(self): if self.call_list: for k in self.call_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['CallList'] = [] if self.call_list is not None: for k in self.call_list: result['CallList'].append(k.to_map() if k else None) if self.page_no is not None: result['PageNo'] = self.page_no if self.page_size is not None: result['PageSize'] = self.page_size if self.request_id is not None: result['RequestId'] = self.request_id if self.total_cnt is not None: result['TotalCnt'] = self.total_cnt return result def from_map(self, m: dict = None): m = m or dict() self.call_list = [] if m.get('CallList') is not None: for k in m.get('CallList'): temp_model = DescribeCallListResponseBodyCallList() self.call_list.append(temp_model.from_map(k)) if m.get('PageNo') is not None: self.page_no = m.get('PageNo') if m.get('PageSize') is not None: self.page_size = m.get('PageSize') if m.get('RequestId') is not None: self.request_id = m.get('RequestId') if m.get('TotalCnt') is not None: self.total_cnt = m.get('TotalCnt') return self class DescribeCallListResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeCallListResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeCallListResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeCallUserExpRequest(TeaModel): def __init__( self, app_id: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, ): self.app_id = app_id self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') return self class DescribeCallUserExpResponseBodyExpInfoList(TeaModel): def __init__( self, call_exp: str = None, user_id: str = None, ): self.call_exp = call_exp self.user_id = user_id def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.call_exp is not None: result['CallExp'] = self.call_exp if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('CallExp') is not None: self.call_exp = m.get('CallExp') if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeCallUserExpResponseBody(TeaModel): def __init__( self, exp_info_list: List[DescribeCallUserExpResponseBodyExpInfoList] = None, request_id: str = None, ): self.exp_info_list = exp_info_list self.request_id = request_id def validate(self): if self.exp_info_list: for k in self.exp_info_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['ExpInfoList'] = [] if self.exp_info_list is not None: for k in self.exp_info_list: result['ExpInfoList'].append(k.to_map() if k else None) if self.request_id is not None: result['RequestId'] = self.request_id return result def from_map(self, m: dict = None): m = m or dict() self.exp_info_list = [] if m.get('ExpInfoList') is not None: for k in m.get('ExpInfoList'): temp_model = DescribeCallUserExpResponseBodyExpInfoList() self.exp_info_list.append(temp_model.from_map(k)) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') return self class DescribeCallUserExpResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeCallUserExpResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeCallUserExpResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeCallUserListRequest(TeaModel): def __init__( self, app_id: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, ext_data_type: str = None, page_no: int = None, page_size: int = None, query_exp_info: bool = None, role_type: str = None, user_id: str = None, ): self.app_id = app_id self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.ext_data_type = ext_data_type self.page_no = page_no self.page_size = page_size self.query_exp_info = query_exp_info self.role_type = role_type self.user_id = user_id def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.ext_data_type is not None: result['ExtDataType'] = self.ext_data_type if self.page_no is not None: result['PageNo'] = self.page_no if self.page_size is not None: result['PageSize'] = self.page_size if self.query_exp_info is not None: result['QueryExpInfo'] = self.query_exp_info if self.role_type is not None: result['RoleType'] = self.role_type if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('ExtDataType') is not None: self.ext_data_type = m.get('ExtDataType') if m.get('PageNo') is not None: self.page_no = m.get('PageNo') if m.get('PageSize') is not None: self.page_size = m.get('PageSize') if m.get('QueryExpInfo') is not None: self.query_exp_info = m.get('QueryExpInfo') if m.get('RoleType') is not None: self.role_type = m.get('RoleType') if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeCallUserListResponseBodyUserDetailListDurMetricStatData(TeaModel): def __init__( self, pub_audio: int = None, pub_video_360: int = None, pub_video_720: int = None, pub_video_screen_share: int = None, sub_audio: int = None, sub_video_1080: int = None, sub_video_360: int = None, sub_video_720: int = None, sub_video_screen_share: int = None, ): self.pub_audio = pub_audio self.pub_video_360 = pub_video_360 self.pub_video_720 = pub_video_720 self.pub_video_screen_share = pub_video_screen_share self.sub_audio = sub_audio self.sub_video_1080 = sub_video_1080 self.sub_video_360 = sub_video_360 self.sub_video_720 = sub_video_720 self.sub_video_screen_share = sub_video_screen_share def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.pub_audio is not None: result['PubAudio'] = self.pub_audio if self.pub_video_360 is not None: result['PubVideo360'] = self.pub_video_360 if self.pub_video_720 is not None: result['PubVideo720'] = self.pub_video_720 if self.pub_video_screen_share is not None: result['PubVideoScreenShare'] = self.pub_video_screen_share if self.sub_audio is not None: result['SubAudio'] = self.sub_audio if self.sub_video_1080 is not None: result['SubVideo1080'] = self.sub_video_1080 if self.sub_video_360 is not None: result['SubVideo360'] = self.sub_video_360 if self.sub_video_720 is not None: result['SubVideo720'] = self.sub_video_720 if self.sub_video_screen_share is not None: result['SubVideoScreenShare'] = self.sub_video_screen_share return result def from_map(self, m: dict = None): m = m or dict() if m.get('PubAudio') is not None: self.pub_audio = m.get('PubAudio') if m.get('PubVideo360') is not None: self.pub_video_360 = m.get('PubVideo360') if m.get('PubVideo720') is not None: self.pub_video_720 = m.get('PubVideo720') if m.get('PubVideoScreenShare') is not None: self.pub_video_screen_share = m.get('PubVideoScreenShare') if m.get('SubAudio') is not None: self.sub_audio = m.get('SubAudio') if m.get('SubVideo1080') is not None: self.sub_video_1080 = m.get('SubVideo1080') if m.get('SubVideo360') is not None: self.sub_video_360 = m.get('SubVideo360') if m.get('SubVideo720') is not None: self.sub_video_720 = m.get('SubVideo720') if m.get('SubVideoScreenShare') is not None: self.sub_video_screen_share = m.get('SubVideoScreenShare') return self class DescribeCallUserListResponseBodyUserDetailListOnlinePeriods(TeaModel): def __init__( self, join_ts: int = None, leave_ts: int = None, ): self.join_ts = join_ts self.leave_ts = leave_ts def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.join_ts is not None: result['JoinTs'] = self.join_ts if self.leave_ts is not None: result['LeaveTs'] = self.leave_ts return result def from_map(self, m: dict = None): m = m or dict() if m.get('JoinTs') is not None: self.join_ts = m.get('JoinTs') if m.get('LeaveTs') is not None: self.leave_ts = m.get('LeaveTs') return self class DescribeCallUserListResponseBodyUserDetailList(TeaModel): def __init__( self, call_exp: str = None, created_ts: int = None, destroyed_ts: int = None, dur_metric_stat_data: DescribeCallUserListResponseBodyUserDetailListDurMetricStatData = None, duration: int = None, location: str = None, location_cn: str = None, location_en: str = None, network: str = None, network_list: List[str] = None, online_duration: int = None, online_periods: List[DescribeCallUserListResponseBodyUserDetailListOnlinePeriods] = None, os: str = None, os_list: List[str] = None, roles: List[str] = None, sdk_version: str = None, sdk_version_list: List[str] = None, user_id: str = None, user_id_alias: str = None, ): self.call_exp = call_exp self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.dur_metric_stat_data = dur_metric_stat_data self.duration = duration self.location = location self.location_cn = location_cn self.location_en = location_en self.network = network self.network_list = network_list self.online_duration = online_duration self.online_periods = online_periods self.os = os self.os_list = os_list self.roles = roles self.sdk_version = sdk_version self.sdk_version_list = sdk_version_list self.user_id = user_id self.user_id_alias = user_id_alias def validate(self): if self.dur_metric_stat_data: self.dur_metric_stat_data.validate() if self.online_periods: for k in self.online_periods: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.call_exp is not None: result['CallExp'] = self.call_exp if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.dur_metric_stat_data is not None: result['DurMetricStatData'] = self.dur_metric_stat_data.to_map() if self.duration is not None: result['Duration'] = self.duration if self.location is not None: result['Location'] = self.location if self.location_cn is not None: result['LocationCn'] = self.location_cn if self.location_en is not None: result['LocationEn'] = self.location_en if self.network is not None: result['Network'] = self.network if self.network_list is not None: result['NetworkList'] = self.network_list if self.online_duration is not None: result['OnlineDuration'] = self.online_duration result['OnlinePeriods'] = [] if self.online_periods is not None: for k in self.online_periods: result['OnlinePeriods'].append(k.to_map() if k else None) if self.os is not None: result['Os'] = self.os if self.os_list is not None: result['OsList'] = self.os_list if self.roles is not None: result['Roles'] = self.roles if self.sdk_version is not None: result['SdkVersion'] = self.sdk_version if self.sdk_version_list is not None: result['SdkVersionList'] = self.sdk_version_list if self.user_id is not None: result['UserId'] = self.user_id if self.user_id_alias is not None: result['UserIdAlias'] = self.user_id_alias return result def from_map(self, m: dict = None): m = m or dict() if m.get('CallExp') is not None: self.call_exp = m.get('CallExp') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('DurMetricStatData') is not None: temp_model = DescribeCallUserListResponseBodyUserDetailListDurMetricStatData() self.dur_metric_stat_data = temp_model.from_map(m['DurMetricStatData']) if m.get('Duration') is not None: self.duration = m.get('Duration') if m.get('Location') is not None: self.location = m.get('Location') if m.get('LocationCn') is not None: self.location_cn = m.get('LocationCn') if m.get('LocationEn') is not None: self.location_en = m.get('LocationEn') if m.get('Network') is not None: self.network = m.get('Network') if m.get('NetworkList') is not None: self.network_list = m.get('NetworkList') if m.get('OnlineDuration') is not None: self.online_duration = m.get('OnlineDuration') self.online_periods = [] if m.get('OnlinePeriods') is not None: for k in m.get('OnlinePeriods'): temp_model = DescribeCallUserListResponseBodyUserDetailListOnlinePeriods() self.online_periods.append(temp_model.from_map(k)) if m.get('Os') is not None: self.os = m.get('Os') if m.get('OsList') is not None: self.os_list = m.get('OsList') if m.get('Roles') is not None: self.roles = m.get('Roles') if m.get('SdkVersion') is not None: self.sdk_version = m.get('SdkVersion') if m.get('SdkVersionList') is not None: self.sdk_version_list = m.get('SdkVersionList') if m.get('UserId') is not None: self.user_id = m.get('UserId') if m.get('UserIdAlias') is not None: self.user_id_alias = m.get('UserIdAlias') return self class DescribeCallUserListResponseBody(TeaModel): def __init__( self, page_no: int = None, page_size: int = None, request_id: str = None, total_cnt: int = None, user_detail_list: List[DescribeCallUserListResponseBodyUserDetailList] = None, ): self.page_no = page_no self.page_size = page_size self.request_id = request_id self.total_cnt = total_cnt self.user_detail_list = user_detail_list def validate(self): if self.user_detail_list: for k in self.user_detail_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.page_no is not None: result['PageNo'] = self.page_no if self.page_size is not None: result['PageSize'] = self.page_size if self.request_id is not None: result['RequestId'] = self.request_id if self.total_cnt is not None: result['TotalCnt'] = self.total_cnt result['UserDetailList'] = [] if self.user_detail_list is not None: for k in self.user_detail_list: result['UserDetailList'].append(k.to_map() if k else None) return result def from_map(self, m: dict = None): m = m or dict() if m.get('PageNo') is not None: self.page_no = m.get('PageNo') if m.get('PageSize') is not None: self.page_size = m.get('PageSize') if m.get('RequestId') is not None: self.request_id = m.get('RequestId') if m.get('TotalCnt') is not None: self.total_cnt = m.get('TotalCnt') self.user_detail_list = [] if m.get('UserDetailList') is not None: for k in m.get('UserDetailList'): temp_model = DescribeCallUserListResponseBodyUserDetailList() self.user_detail_list.append(temp_model.from_map(k)) return self class DescribeCallUserListResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeCallUserListResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeCallUserListResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeChannelAreaDistributionStatDataRequest(TeaModel): def __init__( self, app_id: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, parent_area: str = None, ): self.app_id = app_id self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.parent_area = parent_area def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.parent_area is not None: result['ParentArea'] = self.parent_area return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('ParentArea') is not None: self.parent_area = m.get('ParentArea') return self class DescribeChannelAreaDistributionStatDataResponseBodyAreaStatList(TeaModel): def __init__( self, area_name: str = None, call_user_count: int = None, high_quality_transmission_rate: str = None, pub_user_count: int = None, sub_user_count: int = None, ): self.area_name = area_name self.call_user_count = call_user_count self.high_quality_transmission_rate = high_quality_transmission_rate self.pub_user_count = pub_user_count self.sub_user_count = sub_user_count def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.area_name is not None: result['AreaName'] = self.area_name if self.call_user_count is not None: result['CallUserCount'] = self.call_user_count if self.high_quality_transmission_rate is not None: result['HighQualityTransmissionRate'] = self.high_quality_transmission_rate if self.pub_user_count is not None: result['PubUserCount'] = self.pub_user_count if self.sub_user_count is not None: result['SubUserCount'] = self.sub_user_count return result def from_map(self, m: dict = None): m = m or dict() if m.get('AreaName') is not None: self.area_name = m.get('AreaName') if m.get('CallUserCount') is not None: self.call_user_count = m.get('CallUserCount') if m.get('HighQualityTransmissionRate') is not None: self.high_quality_transmission_rate = m.get('HighQualityTransmissionRate') if m.get('PubUserCount') is not None: self.pub_user_count = m.get('PubUserCount') if m.get('SubUserCount') is not None: self.sub_user_count = m.get('SubUserCount') return self class DescribeChannelAreaDistributionStatDataResponseBody(TeaModel): def __init__( self, area_stat_list: List[DescribeChannelAreaDistributionStatDataResponseBodyAreaStatList] = None, request_id: str = None, ): self.area_stat_list = area_stat_list self.request_id = request_id def validate(self): if self.area_stat_list: for k in self.area_stat_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['AreaStatList'] = [] if self.area_stat_list is not None: for k in self.area_stat_list: result['AreaStatList'].append(k.to_map() if k else None) if self.request_id is not None: result['RequestId'] = self.request_id return result def from_map(self, m: dict = None): m = m or dict() self.area_stat_list = [] if m.get('AreaStatList') is not None: for k in m.get('AreaStatList'): temp_model = DescribeChannelAreaDistributionStatDataResponseBodyAreaStatList() self.area_stat_list.append(temp_model.from_map(k)) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') return self class DescribeChannelAreaDistributionStatDataResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeChannelAreaDistributionStatDataResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeChannelAreaDistributionStatDataResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeChannelDistributionStatDataRequest(TeaModel): def __init__( self, app_id: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, stat_dim: str = None, ): self.app_id = app_id self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.stat_dim = stat_dim def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.stat_dim is not None: result['StatDim'] = self.stat_dim return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('StatDim') is not None: self.stat_dim = m.get('StatDim') return self class DescribeChannelDistributionStatDataResponseBodyStatList(TeaModel): def __init__( self, call_user_count: int = None, call_user_ratio: str = None, name: str = None, ): self.call_user_count = call_user_count self.call_user_ratio = call_user_ratio self.name = name def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.call_user_count is not None: result['CallUserCount'] = self.call_user_count if self.call_user_ratio is not None: result['CallUserRatio'] = self.call_user_ratio if self.name is not None: result['Name'] = self.name return result def from_map(self, m: dict = None): m = m or dict() if m.get('CallUserCount') is not None: self.call_user_count = m.get('CallUserCount') if m.get('CallUserRatio') is not None: self.call_user_ratio = m.get('CallUserRatio') if m.get('Name') is not None: self.name = m.get('Name') return self class DescribeChannelDistributionStatDataResponseBody(TeaModel): def __init__( self, request_id: str = None, stat_list: List[DescribeChannelDistributionStatDataResponseBodyStatList] = None, ): self.request_id = request_id self.stat_list = stat_list def validate(self): if self.stat_list: for k in self.stat_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.request_id is not None: result['RequestId'] = self.request_id result['StatList'] = [] if self.stat_list is not None: for k in self.stat_list: result['StatList'].append(k.to_map() if k else None) return result def from_map(self, m: dict = None): m = m or dict() if m.get('RequestId') is not None: self.request_id = m.get('RequestId') self.stat_list = [] if m.get('StatList') is not None: for k in m.get('StatList'): temp_model = DescribeChannelDistributionStatDataResponseBodyStatList() self.stat_list.append(temp_model.from_map(k)) return self class DescribeChannelDistributionStatDataResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeChannelDistributionStatDataResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeChannelDistributionStatDataResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeChannelJoinInfoRequest(TeaModel): def __init__( self, app_id: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, ): self.app_id = app_id self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') return self class DescribeChannelJoinInfoResponseBody(TeaModel): def __init__( self, join_fast_success_rate: str = None, join_slow_threshold: int = None, request_id: str = None, ): self.join_fast_success_rate = join_fast_success_rate self.join_slow_threshold = join_slow_threshold self.request_id = request_id def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.join_fast_success_rate is not None: result['JoinFastSuccessRate'] = self.join_fast_success_rate if self.join_slow_threshold is not None: result['JoinSlowThreshold'] = self.join_slow_threshold if self.request_id is not None: result['RequestId'] = self.request_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('JoinFastSuccessRate') is not None: self.join_fast_success_rate = m.get('JoinFastSuccessRate') if m.get('JoinSlowThreshold') is not None: self.join_slow_threshold = m.get('JoinSlowThreshold') if m.get('RequestId') is not None: self.request_id = m.get('RequestId') return self class DescribeChannelJoinInfoResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeChannelJoinInfoResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeChannelJoinInfoResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeChannelOverallDataRequest(TeaModel): def __init__( self, app_id: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, ): self.app_id = app_id self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') return self class DescribeChannelOverallDataResponseBodyCallInfo(TeaModel): def __init__( self, app_id: str = None, call_status: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, duration: int = None, ): self.app_id = app_id self.call_status = call_status self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.duration = duration def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.call_status is not None: result['CallStatus'] = self.call_status if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.duration is not None: result['Duration'] = self.duration return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('CallStatus') is not None: self.call_status = m.get('CallStatus') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('Duration') is not None: self.duration = m.get('Duration') return self class DescribeChannelOverallDataResponseBodyMetricDatasNodes(TeaModel): def __init__( self, ext: Dict[str, Any] = None, x: str = None, y: str = None, ): self.ext = ext self.x = x self.y = y def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.ext is not None: result['Ext'] = self.ext if self.x is not None: result['X'] = self.x if self.y is not None: result['Y'] = self.y return result def from_map(self, m: dict = None): m = m or dict() if m.get('Ext') is not None: self.ext = m.get('Ext') if m.get('X') is not None: self.x = m.get('X') if m.get('Y') is not None: self.y = m.get('Y') return self class DescribeChannelOverallDataResponseBodyMetricDatas(TeaModel): def __init__( self, nodes: List[DescribeChannelOverallDataResponseBodyMetricDatasNodes] = None, type: str = None, ): self.nodes = nodes self.type = type def validate(self): if self.nodes: for k in self.nodes: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['Nodes'] = [] if self.nodes is not None: for k in self.nodes: result['Nodes'].append(k.to_map() if k else None) if self.type is not None: result['Type'] = self.type return result def from_map(self, m: dict = None): m = m or dict() self.nodes = [] if m.get('Nodes') is not None: for k in m.get('Nodes'): temp_model = DescribeChannelOverallDataResponseBodyMetricDatasNodes() self.nodes.append(temp_model.from_map(k)) if m.get('Type') is not None: self.type = m.get('Type') return self class DescribeChannelOverallDataResponseBodyOverallData(TeaModel): def __init__( self, conn_avg_time: float = None, five_sec_join_rate: float = None, total_audio_stuck_rate: float = None, total_video_stuck_rate: float = None, total_video_vague_rate: float = None, ): self.conn_avg_time = conn_avg_time self.five_sec_join_rate = five_sec_join_rate self.total_audio_stuck_rate = total_audio_stuck_rate self.total_video_stuck_rate = total_video_stuck_rate self.total_video_vague_rate = total_video_vague_rate def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.conn_avg_time is not None: result['ConnAvgTime'] = self.conn_avg_time if self.five_sec_join_rate is not None: result['FiveSecJoinRate'] = self.five_sec_join_rate if self.total_audio_stuck_rate is not None: result['TotalAudioStuckRate'] = self.total_audio_stuck_rate if self.total_video_stuck_rate is not None: result['TotalVideoStuckRate'] = self.total_video_stuck_rate if self.total_video_vague_rate is not None: result['TotalVideoVagueRate'] = self.total_video_vague_rate return result def from_map(self, m: dict = None): m = m or dict() if m.get('ConnAvgTime') is not None: self.conn_avg_time = m.get('ConnAvgTime') if m.get('FiveSecJoinRate') is not None: self.five_sec_join_rate = m.get('FiveSecJoinRate') if m.get('TotalAudioStuckRate') is not None: self.total_audio_stuck_rate = m.get('TotalAudioStuckRate') if m.get('TotalVideoStuckRate') is not None: self.total_video_stuck_rate = m.get('TotalVideoStuckRate') if m.get('TotalVideoVagueRate') is not None: self.total_video_vague_rate = m.get('TotalVideoVagueRate') return self class DescribeChannelOverallDataResponseBody(TeaModel): def __init__( self, call_info: DescribeChannelOverallDataResponseBodyCallInfo = None, metric_datas: List[DescribeChannelOverallDataResponseBodyMetricDatas] = None, overall_data: DescribeChannelOverallDataResponseBodyOverallData = None, request_id: str = None, ): self.call_info = call_info self.metric_datas = metric_datas self.overall_data = overall_data self.request_id = request_id def validate(self): if self.call_info: self.call_info.validate() if self.metric_datas: for k in self.metric_datas: if k: k.validate() if self.overall_data: self.overall_data.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.call_info is not None: result['CallInfo'] = self.call_info.to_map() result['MetricDatas'] = [] if self.metric_datas is not None: for k in self.metric_datas: result['MetricDatas'].append(k.to_map() if k else None) if self.overall_data is not None: result['OverallData'] = self.overall_data.to_map() if self.request_id is not None: result['RequestId'] = self.request_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('CallInfo') is not None: temp_model = DescribeChannelOverallDataResponseBodyCallInfo() self.call_info = temp_model.from_map(m['CallInfo']) self.metric_datas = [] if m.get('MetricDatas') is not None: for k in m.get('MetricDatas'): temp_model = DescribeChannelOverallDataResponseBodyMetricDatas() self.metric_datas.append(temp_model.from_map(k)) if m.get('OverallData') is not None: temp_model = DescribeChannelOverallDataResponseBodyOverallData() self.overall_data = temp_model.from_map(m['OverallData']) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') return self class DescribeChannelOverallDataResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeChannelOverallDataResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeChannelOverallDataResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeChannelTopPubUserListRequest(TeaModel): def __init__( self, app_id: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, ): self.app_id = app_id self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') return self class DescribeChannelTopPubUserListResponseBodyTopPubUserDetailListOnlinePeriods(TeaModel): def __init__( self, join_ts: int = None, leave_ts: int = None, ): self.join_ts = join_ts self.leave_ts = leave_ts def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.join_ts is not None: result['JoinTs'] = self.join_ts if self.leave_ts is not None: result['LeaveTs'] = self.leave_ts return result def from_map(self, m: dict = None): m = m or dict() if m.get('JoinTs') is not None: self.join_ts = m.get('JoinTs') if m.get('LeaveTs') is not None: self.leave_ts = m.get('LeaveTs') return self class DescribeChannelTopPubUserListResponseBodyTopPubUserDetailList(TeaModel): def __init__( self, created_ts: int = None, destroyed_ts: int = None, duration: int = None, location: str = None, online_duration: int = None, online_periods: List[DescribeChannelTopPubUserListResponseBodyTopPubUserDetailListOnlinePeriods] = None, user_id: str = None, ): self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.duration = duration self.location = location self.online_duration = online_duration self.online_periods = online_periods self.user_id = user_id def validate(self): if self.online_periods: for k in self.online_periods: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.duration is not None: result['Duration'] = self.duration if self.location is not None: result['Location'] = self.location if self.online_duration is not None: result['OnlineDuration'] = self.online_duration result['OnlinePeriods'] = [] if self.online_periods is not None: for k in self.online_periods: result['OnlinePeriods'].append(k.to_map() if k else None) if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('Duration') is not None: self.duration = m.get('Duration') if m.get('Location') is not None: self.location = m.get('Location') if m.get('OnlineDuration') is not None: self.online_duration = m.get('OnlineDuration') self.online_periods = [] if m.get('OnlinePeriods') is not None: for k in m.get('OnlinePeriods'): temp_model = DescribeChannelTopPubUserListResponseBodyTopPubUserDetailListOnlinePeriods() self.online_periods.append(temp_model.from_map(k)) if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeChannelTopPubUserListResponseBody(TeaModel): def __init__( self, request_id: str = None, top_pub_user_detail_list: List[DescribeChannelTopPubUserListResponseBodyTopPubUserDetailList] = None, ): self.request_id = request_id self.top_pub_user_detail_list = top_pub_user_detail_list def validate(self): if self.top_pub_user_detail_list: for k in self.top_pub_user_detail_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.request_id is not None: result['RequestId'] = self.request_id result['TopPubUserDetailList'] = [] if self.top_pub_user_detail_list is not None: for k in self.top_pub_user_detail_list: result['TopPubUserDetailList'].append(k.to_map() if k else None) return result def from_map(self, m: dict = None): m = m or dict() if m.get('RequestId') is not None: self.request_id = m.get('RequestId') self.top_pub_user_detail_list = [] if m.get('TopPubUserDetailList') is not None: for k in m.get('TopPubUserDetailList'): temp_model = DescribeChannelTopPubUserListResponseBodyTopPubUserDetailList() self.top_pub_user_detail_list.append(temp_model.from_map(k)) return self class DescribeChannelTopPubUserListResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeChannelTopPubUserListResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeChannelTopPubUserListResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeChannelUserMetricsRequest(TeaModel): def __init__( self, app_id: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, ): self.app_id = app_id self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') return self class DescribeChannelUserMetricsResponseBodyMetricDatasNodes(TeaModel): def __init__( self, ext: Dict[str, Any] = None, x: str = None, y: str = None, ): self.ext = ext self.x = x self.y = y def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.ext is not None: result['Ext'] = self.ext if self.x is not None: result['X'] = self.x if self.y is not None: result['Y'] = self.y return result def from_map(self, m: dict = None): m = m or dict() if m.get('Ext') is not None: self.ext = m.get('Ext') if m.get('X') is not None: self.x = m.get('X') if m.get('Y') is not None: self.y = m.get('Y') return self class DescribeChannelUserMetricsResponseBodyMetricDatas(TeaModel): def __init__( self, nodes: List[DescribeChannelUserMetricsResponseBodyMetricDatasNodes] = None, type: str = None, ): self.nodes = nodes self.type = type def validate(self): if self.nodes: for k in self.nodes: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['Nodes'] = [] if self.nodes is not None: for k in self.nodes: result['Nodes'].append(k.to_map() if k else None) if self.type is not None: result['Type'] = self.type return result def from_map(self, m: dict = None): m = m or dict() self.nodes = [] if m.get('Nodes') is not None: for k in m.get('Nodes'): temp_model = DescribeChannelUserMetricsResponseBodyMetricDatasNodes() self.nodes.append(temp_model.from_map(k)) if m.get('Type') is not None: self.type = m.get('Type') return self class DescribeChannelUserMetricsResponseBodyOverallData(TeaModel): def __init__( self, total_bad_exp_num: int = None, total_join_fail_num: int = None, total_pub_user_num: int = None, total_sub_user_num: int = None, total_user_num: int = None, ): self.total_bad_exp_num = total_bad_exp_num self.total_join_fail_num = total_join_fail_num self.total_pub_user_num = total_pub_user_num self.total_sub_user_num = total_sub_user_num self.total_user_num = total_user_num def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.total_bad_exp_num is not None: result['TotalBadExpNum'] = self.total_bad_exp_num if self.total_join_fail_num is not None: result['TotalJoinFailNum'] = self.total_join_fail_num if self.total_pub_user_num is not None: result['TotalPubUserNum'] = self.total_pub_user_num if self.total_sub_user_num is not None: result['TotalSubUserNum'] = self.total_sub_user_num if self.total_user_num is not None: result['TotalUserNum'] = self.total_user_num return result def from_map(self, m: dict = None): m = m or dict() if m.get('TotalBadExpNum') is not None: self.total_bad_exp_num = m.get('TotalBadExpNum') if m.get('TotalJoinFailNum') is not None: self.total_join_fail_num = m.get('TotalJoinFailNum') if m.get('TotalPubUserNum') is not None: self.total_pub_user_num = m.get('TotalPubUserNum') if m.get('TotalSubUserNum') is not None: self.total_sub_user_num = m.get('TotalSubUserNum') if m.get('TotalUserNum') is not None: self.total_user_num = m.get('TotalUserNum') return self class DescribeChannelUserMetricsResponseBody(TeaModel): def __init__( self, metric_datas: List[DescribeChannelUserMetricsResponseBodyMetricDatas] = None, overall_data: DescribeChannelUserMetricsResponseBodyOverallData = None, request_id: str = None, ): self.metric_datas = metric_datas self.overall_data = overall_data self.request_id = request_id def validate(self): if self.metric_datas: for k in self.metric_datas: if k: k.validate() if self.overall_data: self.overall_data.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['MetricDatas'] = [] if self.metric_datas is not None: for k in self.metric_datas: result['MetricDatas'].append(k.to_map() if k else None) if self.overall_data is not None: result['OverallData'] = self.overall_data.to_map() if self.request_id is not None: result['RequestId'] = self.request_id return result def from_map(self, m: dict = None): m = m or dict() self.metric_datas = [] if m.get('MetricDatas') is not None: for k in m.get('MetricDatas'): temp_model = DescribeChannelUserMetricsResponseBodyMetricDatas() self.metric_datas.append(temp_model.from_map(k)) if m.get('OverallData') is not None: temp_model = DescribeChannelUserMetricsResponseBodyOverallData() self.overall_data = temp_model.from_map(m['OverallData']) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') return self class DescribeChannelUserMetricsResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeChannelUserMetricsResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeChannelUserMetricsResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeEndPointEventListRequest(TeaModel): def __init__( self, app_id: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, user_id_list: str = None, ): self.app_id = app_id self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.user_id_list = user_id_list def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.user_id_list is not None: result['UserIdList'] = self.user_id_list return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('UserIdList') is not None: self.user_id_list = m.get('UserIdList') return self class DescribeEndPointEventListResponseBodyNodesEventDataItemsEventList(TeaModel): def __init__( self, acs: str = None, event_code: str = None, event_name: str = None, event_type: str = None, os: str = None, sdk: str = None, stream_name: str = None, stream_type: str = None, track_code: str = None, track_name: str = None, ts: int = None, ts_in_ms: str = None, user_id: str = None, ): self.acs = acs self.event_code = event_code self.event_name = event_name self.event_type = event_type self.os = os self.sdk = sdk self.stream_name = stream_name self.stream_type = stream_type self.track_code = track_code self.track_name = track_name self.ts = ts self.ts_in_ms = ts_in_ms self.user_id = user_id def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.acs is not None: result['Acs'] = self.acs if self.event_code is not None: result['EventCode'] = self.event_code if self.event_name is not None: result['EventName'] = self.event_name if self.event_type is not None: result['EventType'] = self.event_type if self.os is not None: result['Os'] = self.os if self.sdk is not None: result['Sdk'] = self.sdk if self.stream_name is not None: result['StreamName'] = self.stream_name if self.stream_type is not None: result['StreamType'] = self.stream_type if self.track_code is not None: result['TrackCode'] = self.track_code if self.track_name is not None: result['TrackName'] = self.track_name if self.ts is not None: result['Ts'] = self.ts if self.ts_in_ms is not None: result['TsInMs'] = self.ts_in_ms if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('Acs') is not None: self.acs = m.get('Acs') if m.get('EventCode') is not None: self.event_code = m.get('EventCode') if m.get('EventName') is not None: self.event_name = m.get('EventName') if m.get('EventType') is not None: self.event_type = m.get('EventType') if m.get('Os') is not None: self.os = m.get('Os') if m.get('Sdk') is not None: self.sdk = m.get('Sdk') if m.get('StreamName') is not None: self.stream_name = m.get('StreamName') if m.get('StreamType') is not None: self.stream_type = m.get('StreamType') if m.get('TrackCode') is not None: self.track_code = m.get('TrackCode') if m.get('TrackName') is not None: self.track_name = m.get('TrackName') if m.get('Ts') is not None: self.ts = m.get('Ts') if m.get('TsInMs') is not None: self.ts_in_ms = m.get('TsInMs') if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeEndPointEventListResponseBodyNodesEventDataItems(TeaModel): def __init__( self, event_list: List[DescribeEndPointEventListResponseBodyNodesEventDataItemsEventList] = None, ts: int = None, ): self.event_list = event_list self.ts = ts def validate(self): if self.event_list: for k in self.event_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['EventList'] = [] if self.event_list is not None: for k in self.event_list: result['EventList'].append(k.to_map() if k else None) if self.ts is not None: result['Ts'] = self.ts return result def from_map(self, m: dict = None): m = m or dict() self.event_list = [] if m.get('EventList') is not None: for k in m.get('EventList'): temp_model = DescribeEndPointEventListResponseBodyNodesEventDataItemsEventList() self.event_list.append(temp_model.from_map(k)) if m.get('Ts') is not None: self.ts = m.get('Ts') return self class DescribeEndPointEventListResponseBodyNodes(TeaModel): def __init__( self, event_data_items: List[DescribeEndPointEventListResponseBodyNodesEventDataItems] = None, user_id: str = None, ): self.event_data_items = event_data_items self.user_id = user_id def validate(self): if self.event_data_items: for k in self.event_data_items: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['EventDataItems'] = [] if self.event_data_items is not None: for k in self.event_data_items: result['EventDataItems'].append(k.to_map() if k else None) if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() self.event_data_items = [] if m.get('EventDataItems') is not None: for k in m.get('EventDataItems'): temp_model = DescribeEndPointEventListResponseBodyNodesEventDataItems() self.event_data_items.append(temp_model.from_map(k)) if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeEndPointEventListResponseBody(TeaModel): def __init__( self, nodes: List[DescribeEndPointEventListResponseBodyNodes] = None, request_id: str = None, ): self.nodes = nodes self.request_id = request_id def validate(self): if self.nodes: for k in self.nodes: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['Nodes'] = [] if self.nodes is not None: for k in self.nodes: result['Nodes'].append(k.to_map() if k else None) if self.request_id is not None: result['RequestId'] = self.request_id return result def from_map(self, m: dict = None): m = m or dict() self.nodes = [] if m.get('Nodes') is not None: for k in m.get('Nodes'): temp_model = DescribeEndPointEventListResponseBodyNodes() self.nodes.append(temp_model.from_map(k)) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') return self class DescribeEndPointEventListResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeEndPointEventListResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeEndPointEventListResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeEndPointMetricDataRequest(TeaModel): def __init__( self, app_id: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, metrics: str = None, pub_call_id_list: str = None, pub_user_id: str = None, sub_user_id: str = None, ): self.app_id = app_id self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.metrics = metrics self.pub_call_id_list = pub_call_id_list self.pub_user_id = pub_user_id self.sub_user_id = sub_user_id def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.metrics is not None: result['Metrics'] = self.metrics if self.pub_call_id_list is not None: result['PubCallIdList'] = self.pub_call_id_list if self.pub_user_id is not None: result['PubUserId'] = self.pub_user_id if self.sub_user_id is not None: result['SubUserId'] = self.sub_user_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('Metrics') is not None: self.metrics = m.get('Metrics') if m.get('PubCallIdList') is not None: self.pub_call_id_list = m.get('PubCallIdList') if m.get('PubUserId') is not None: self.pub_user_id = m.get('PubUserId') if m.get('SubUserId') is not None: self.sub_user_id = m.get('SubUserId') return self class DescribeEndPointMetricDataResponseBodyPubMetricsNodes(TeaModel): def __init__( self, ext: Dict[str, Any] = None, x: str = None, y: str = None, ): self.ext = ext self.x = x self.y = y def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.ext is not None: result['Ext'] = self.ext if self.x is not None: result['X'] = self.x if self.y is not None: result['Y'] = self.y return result def from_map(self, m: dict = None): m = m or dict() if m.get('Ext') is not None: self.ext = m.get('Ext') if m.get('X') is not None: self.x = m.get('X') if m.get('Y') is not None: self.y = m.get('Y') return self class DescribeEndPointMetricDataResponseBodyPubMetrics(TeaModel): def __init__( self, nodes: List[DescribeEndPointMetricDataResponseBodyPubMetricsNodes] = None, type: str = None, user_id: str = None, ): self.nodes = nodes self.type = type self.user_id = user_id def validate(self): if self.nodes: for k in self.nodes: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['Nodes'] = [] if self.nodes is not None: for k in self.nodes: result['Nodes'].append(k.to_map() if k else None) if self.type is not None: result['Type'] = self.type if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() self.nodes = [] if m.get('Nodes') is not None: for k in m.get('Nodes'): temp_model = DescribeEndPointMetricDataResponseBodyPubMetricsNodes() self.nodes.append(temp_model.from_map(k)) if m.get('Type') is not None: self.type = m.get('Type') if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeEndPointMetricDataResponseBodySubMetricsNodes(TeaModel): def __init__( self, ext: Dict[str, Any] = None, x: str = None, y: str = None, ): self.ext = ext self.x = x self.y = y def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.ext is not None: result['Ext'] = self.ext if self.x is not None: result['X'] = self.x if self.y is not None: result['Y'] = self.y return result def from_map(self, m: dict = None): m = m or dict() if m.get('Ext') is not None: self.ext = m.get('Ext') if m.get('X') is not None: self.x = m.get('X') if m.get('Y') is not None: self.y = m.get('Y') return self class DescribeEndPointMetricDataResponseBodySubMetrics(TeaModel): def __init__( self, nodes: List[DescribeEndPointMetricDataResponseBodySubMetricsNodes] = None, type: str = None, user_id: str = None, ): self.nodes = nodes self.type = type self.user_id = user_id def validate(self): if self.nodes: for k in self.nodes: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['Nodes'] = [] if self.nodes is not None: for k in self.nodes: result['Nodes'].append(k.to_map() if k else None) if self.type is not None: result['Type'] = self.type if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() self.nodes = [] if m.get('Nodes') is not None: for k in m.get('Nodes'): temp_model = DescribeEndPointMetricDataResponseBodySubMetricsNodes() self.nodes.append(temp_model.from_map(k)) if m.get('Type') is not None: self.type = m.get('Type') if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeEndPointMetricDataResponseBody(TeaModel): def __init__( self, pub_metrics: List[DescribeEndPointMetricDataResponseBodyPubMetrics] = None, request_id: str = None, sub_metrics: List[DescribeEndPointMetricDataResponseBodySubMetrics] = None, ): self.pub_metrics = pub_metrics self.request_id = request_id self.sub_metrics = sub_metrics def validate(self): if self.pub_metrics: for k in self.pub_metrics: if k: k.validate() if self.sub_metrics: for k in self.sub_metrics: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['PubMetrics'] = [] if self.pub_metrics is not None: for k in self.pub_metrics: result['PubMetrics'].append(k.to_map() if k else None) if self.request_id is not None: result['RequestId'] = self.request_id result['SubMetrics'] = [] if self.sub_metrics is not None: for k in self.sub_metrics: result['SubMetrics'].append(k.to_map() if k else None) return result def from_map(self, m: dict = None): m = m or dict() self.pub_metrics = [] if m.get('PubMetrics') is not None: for k in m.get('PubMetrics'): temp_model = DescribeEndPointMetricDataResponseBodyPubMetrics() self.pub_metrics.append(temp_model.from_map(k)) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') self.sub_metrics = [] if m.get('SubMetrics') is not None: for k in m.get('SubMetrics'): temp_model = DescribeEndPointMetricDataResponseBodySubMetrics() self.sub_metrics.append(temp_model.from_map(k)) return self class DescribeEndPointMetricDataResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeEndPointMetricDataResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeEndPointMetricDataResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeFaultDiagnosisFactorDistributionStatRequest(TeaModel): def __init__( self, app_id: str = None, end_ts: int = None, start_ts: int = None, ): self.app_id = app_id self.end_ts = end_ts self.start_ts = start_ts def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.end_ts is not None: result['EndTs'] = self.end_ts if self.start_ts is not None: result['StartTs'] = self.start_ts return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('EndTs') is not None: self.end_ts = m.get('EndTs') if m.get('StartTs') is not None: self.start_ts = m.get('StartTs') return self class DescribeFaultDiagnosisFactorDistributionStatResponseBodyStatList(TeaModel): def __init__( self, factor_id: str = None, user_count: int = None, user_ratio: float = None, ): self.factor_id = factor_id self.user_count = user_count self.user_ratio = user_ratio def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.factor_id is not None: result['FactorId'] = self.factor_id if self.user_count is not None: result['UserCount'] = self.user_count if self.user_ratio is not None: result['UserRatio'] = self.user_ratio return result def from_map(self, m: dict = None): m = m or dict() if m.get('FactorId') is not None: self.factor_id = m.get('FactorId') if m.get('UserCount') is not None: self.user_count = m.get('UserCount') if m.get('UserRatio') is not None: self.user_ratio = m.get('UserRatio') return self class DescribeFaultDiagnosisFactorDistributionStatResponseBody(TeaModel): def __init__( self, request_id: str = None, stat_list: List[DescribeFaultDiagnosisFactorDistributionStatResponseBodyStatList] = None, ): self.request_id = request_id self.stat_list = stat_list def validate(self): if self.stat_list: for k in self.stat_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.request_id is not None: result['RequestId'] = self.request_id result['StatList'] = [] if self.stat_list is not None: for k in self.stat_list: result['StatList'].append(k.to_map() if k else None) return result def from_map(self, m: dict = None): m = m or dict() if m.get('RequestId') is not None: self.request_id = m.get('RequestId') self.stat_list = [] if m.get('StatList') is not None: for k in m.get('StatList'): temp_model = DescribeFaultDiagnosisFactorDistributionStatResponseBodyStatList() self.stat_list.append(temp_model.from_map(k)) return self class DescribeFaultDiagnosisFactorDistributionStatResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeFaultDiagnosisFactorDistributionStatResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeFaultDiagnosisFactorDistributionStatResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeFaultDiagnosisOverallDataRequest(TeaModel): def __init__( self, app_id: str = None, end_ts: int = None, start_ts: int = None, stat_dim: str = None, ): self.app_id = app_id self.end_ts = end_ts self.start_ts = start_ts self.stat_dim = stat_dim def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.end_ts is not None: result['EndTs'] = self.end_ts if self.start_ts is not None: result['StartTs'] = self.start_ts if self.stat_dim is not None: result['StatDim'] = self.stat_dim return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('EndTs') is not None: self.end_ts = m.get('EndTs') if m.get('StartTs') is not None: self.start_ts = m.get('StartTs') if m.get('StatDim') is not None: self.stat_dim = m.get('StatDim') return self class DescribeFaultDiagnosisOverallDataResponseBodyMetricDataNodes(TeaModel): def __init__( self, ext: Dict[str, Any] = None, x: str = None, y: str = None, ): self.ext = ext self.x = x self.y = y def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.ext is not None: result['Ext'] = self.ext if self.x is not None: result['X'] = self.x if self.y is not None: result['Y'] = self.y return result def from_map(self, m: dict = None): m = m or dict() if m.get('Ext') is not None: self.ext = m.get('Ext') if m.get('X') is not None: self.x = m.get('X') if m.get('Y') is not None: self.y = m.get('Y') return self class DescribeFaultDiagnosisOverallDataResponseBodyMetricData(TeaModel): def __init__( self, nodes: List[DescribeFaultDiagnosisOverallDataResponseBodyMetricDataNodes] = None, ): self.nodes = nodes def validate(self): if self.nodes: for k in self.nodes: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['Nodes'] = [] if self.nodes is not None: for k in self.nodes: result['Nodes'].append(k.to_map() if k else None) return result def from_map(self, m: dict = None): m = m or dict() self.nodes = [] if m.get('Nodes') is not None: for k in m.get('Nodes'): temp_model = DescribeFaultDiagnosisOverallDataResponseBodyMetricDataNodes() self.nodes.append(temp_model.from_map(k)) return self class DescribeFaultDiagnosisOverallDataResponseBodyOverallData(TeaModel): def __init__( self, fault_user_count: int = None, fault_user_ratio: float = None, total_user_count: int = None, ): self.fault_user_count = fault_user_count self.fault_user_ratio = fault_user_ratio self.total_user_count = total_user_count def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.fault_user_count is not None: result['FaultUserCount'] = self.fault_user_count if self.fault_user_ratio is not None: result['FaultUserRatio'] = self.fault_user_ratio if self.total_user_count is not None: result['TotalUserCount'] = self.total_user_count return result def from_map(self, m: dict = None): m = m or dict() if m.get('FaultUserCount') is not None: self.fault_user_count = m.get('FaultUserCount') if m.get('FaultUserRatio') is not None: self.fault_user_ratio = m.get('FaultUserRatio') if m.get('TotalUserCount') is not None: self.total_user_count = m.get('TotalUserCount') return self class DescribeFaultDiagnosisOverallDataResponseBody(TeaModel): def __init__( self, metric_data: DescribeFaultDiagnosisOverallDataResponseBodyMetricData = None, overall_data: DescribeFaultDiagnosisOverallDataResponseBodyOverallData = None, request_id: str = None, ): self.metric_data = metric_data self.overall_data = overall_data self.request_id = request_id def validate(self): if self.metric_data: self.metric_data.validate() if self.overall_data: self.overall_data.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.metric_data is not None: result['MetricData'] = self.metric_data.to_map() if self.overall_data is not None: result['OverallData'] = self.overall_data.to_map() if self.request_id is not None: result['RequestId'] = self.request_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('MetricData') is not None: temp_model = DescribeFaultDiagnosisOverallDataResponseBodyMetricData() self.metric_data = temp_model.from_map(m['MetricData']) if m.get('OverallData') is not None: temp_model = DescribeFaultDiagnosisOverallDataResponseBodyOverallData() self.overall_data = temp_model.from_map(m['OverallData']) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') return self class DescribeFaultDiagnosisOverallDataResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeFaultDiagnosisOverallDataResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeFaultDiagnosisOverallDataResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeFaultDiagnosisUserDetailRequest(TeaModel): def __init__( self, app_id: str = None, channel_id: str = None, created_ts: int = None, fault_type: str = None, query_call_user_info: bool = None, user_id: str = None, ): self.app_id = app_id self.channel_id = channel_id self.created_ts = created_ts self.fault_type = fault_type self.query_call_user_info = query_call_user_info self.user_id = user_id def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.fault_type is not None: result['FaultType'] = self.fault_type if self.query_call_user_info is not None: result['QueryCallUserInfo'] = self.query_call_user_info if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('FaultType') is not None: self.fault_type = m.get('FaultType') if m.get('QueryCallUserInfo') is not None: self.query_call_user_info = m.get('QueryCallUserInfo') if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeFaultDiagnosisUserDetailResponseBodyCallInfo(TeaModel): def __init__( self, app_id: str = None, call_status: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, duration: int = None, ): # App ID。 self.app_id = app_id self.call_status = call_status self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.duration = duration def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.call_status is not None: result['CallStatus'] = self.call_status if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.duration is not None: result['Duration'] = self.duration return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('CallStatus') is not None: self.call_status = m.get('CallStatus') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('Duration') is not None: self.duration = m.get('Duration') return self class DescribeFaultDiagnosisUserDetailResponseBodyFactorListRelatedEventDatasEventDataItemsEventList(TeaModel): def __init__( self, acs: str = None, event_code: str = None, event_name: str = None, event_type: str = None, os: str = None, sdk: str = None, stream_name: str = None, stream_type: str = None, track_code: str = None, track_name: str = None, ts: int = None, user_id: str = None, ): self.acs = acs self.event_code = event_code self.event_name = event_name self.event_type = event_type self.os = os self.sdk = sdk self.stream_name = stream_name self.stream_type = stream_type self.track_code = track_code self.track_name = track_name self.ts = ts self.user_id = user_id def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.acs is not None: result['Acs'] = self.acs if self.event_code is not None: result['EventCode'] = self.event_code if self.event_name is not None: result['EventName'] = self.event_name if self.event_type is not None: result['EventType'] = self.event_type if self.os is not None: result['Os'] = self.os if self.sdk is not None: result['Sdk'] = self.sdk if self.stream_name is not None: result['StreamName'] = self.stream_name if self.stream_type is not None: result['StreamType'] = self.stream_type if self.track_code is not None: result['TrackCode'] = self.track_code if self.track_name is not None: result['TrackName'] = self.track_name if self.ts is not None: result['Ts'] = self.ts if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('Acs') is not None: self.acs = m.get('Acs') if m.get('EventCode') is not None: self.event_code = m.get('EventCode') if m.get('EventName') is not None: self.event_name = m.get('EventName') if m.get('EventType') is not None: self.event_type = m.get('EventType') if m.get('Os') is not None: self.os = m.get('Os') if m.get('Sdk') is not None: self.sdk = m.get('Sdk') if m.get('StreamName') is not None: self.stream_name = m.get('StreamName') if m.get('StreamType') is not None: self.stream_type = m.get('StreamType') if m.get('TrackCode') is not None: self.track_code = m.get('TrackCode') if m.get('TrackName') is not None: self.track_name = m.get('TrackName') if m.get('Ts') is not None: self.ts = m.get('Ts') if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeFaultDiagnosisUserDetailResponseBodyFactorListRelatedEventDatasEventDataItems(TeaModel): def __init__( self, event_list: List[DescribeFaultDiagnosisUserDetailResponseBodyFactorListRelatedEventDatasEventDataItemsEventList] = None, ts: int = None, ): self.event_list = event_list self.ts = ts def validate(self): if self.event_list: for k in self.event_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['EventList'] = [] if self.event_list is not None: for k in self.event_list: result['EventList'].append(k.to_map() if k else None) if self.ts is not None: result['Ts'] = self.ts return result def from_map(self, m: dict = None): m = m or dict() self.event_list = [] if m.get('EventList') is not None: for k in m.get('EventList'): temp_model = DescribeFaultDiagnosisUserDetailResponseBodyFactorListRelatedEventDatasEventDataItemsEventList() self.event_list.append(temp_model.from_map(k)) if m.get('Ts') is not None: self.ts = m.get('Ts') return self class DescribeFaultDiagnosisUserDetailResponseBodyFactorListRelatedEventDatas(TeaModel): def __init__( self, event_data_items: List[DescribeFaultDiagnosisUserDetailResponseBodyFactorListRelatedEventDatasEventDataItems] = None, role: str = None, user_id: str = None, ): self.event_data_items = event_data_items self.role = role self.user_id = user_id def validate(self): if self.event_data_items: for k in self.event_data_items: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['EventDataItems'] = [] if self.event_data_items is not None: for k in self.event_data_items: result['EventDataItems'].append(k.to_map() if k else None) if self.role is not None: result['Role'] = self.role if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() self.event_data_items = [] if m.get('EventDataItems') is not None: for k in m.get('EventDataItems'): temp_model = DescribeFaultDiagnosisUserDetailResponseBodyFactorListRelatedEventDatasEventDataItems() self.event_data_items.append(temp_model.from_map(k)) if m.get('Role') is not None: self.role = m.get('Role') if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeFaultDiagnosisUserDetailResponseBodyFactorListRelatedMetricDatasNodes(TeaModel): def __init__( self, ext: Dict[str, Any] = None, x: str = None, y: str = None, ): self.ext = ext self.x = x self.y = y def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.ext is not None: result['Ext'] = self.ext if self.x is not None: result['X'] = self.x if self.y is not None: result['Y'] = self.y return result def from_map(self, m: dict = None): m = m or dict() if m.get('Ext') is not None: self.ext = m.get('Ext') if m.get('X') is not None: self.x = m.get('X') if m.get('Y') is not None: self.y = m.get('Y') return self class DescribeFaultDiagnosisUserDetailResponseBodyFactorListRelatedMetricDatas(TeaModel): def __init__( self, nodes: List[DescribeFaultDiagnosisUserDetailResponseBodyFactorListRelatedMetricDatasNodes] = None, role: str = None, type: str = None, user_id: str = None, ): self.nodes = nodes self.role = role self.type = type self.user_id = user_id def validate(self): if self.nodes: for k in self.nodes: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['Nodes'] = [] if self.nodes is not None: for k in self.nodes: result['Nodes'].append(k.to_map() if k else None) if self.role is not None: result['Role'] = self.role if self.type is not None: result['Type'] = self.type if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() self.nodes = [] if m.get('Nodes') is not None: for k in m.get('Nodes'): temp_model = DescribeFaultDiagnosisUserDetailResponseBodyFactorListRelatedMetricDatasNodes() self.nodes.append(temp_model.from_map(k)) if m.get('Role') is not None: self.role = m.get('Role') if m.get('Type') is not None: self.type = m.get('Type') if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeFaultDiagnosisUserDetailResponseBodyFactorList(TeaModel): def __init__( self, factor_id: str = None, fault_source: str = None, related_event_datas: List[DescribeFaultDiagnosisUserDetailResponseBodyFactorListRelatedEventDatas] = None, related_metric_datas: List[DescribeFaultDiagnosisUserDetailResponseBodyFactorListRelatedMetricDatas] = None, ): self.factor_id = factor_id self.fault_source = fault_source self.related_event_datas = related_event_datas self.related_metric_datas = related_metric_datas def validate(self): if self.related_event_datas: for k in self.related_event_datas: if k: k.validate() if self.related_metric_datas: for k in self.related_metric_datas: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.factor_id is not None: result['FactorId'] = self.factor_id if self.fault_source is not None: result['FaultSource'] = self.fault_source result['RelatedEventDatas'] = [] if self.related_event_datas is not None: for k in self.related_event_datas: result['RelatedEventDatas'].append(k.to_map() if k else None) result['RelatedMetricDatas'] = [] if self.related_metric_datas is not None: for k in self.related_metric_datas: result['RelatedMetricDatas'].append(k.to_map() if k else None) return result def from_map(self, m: dict = None): m = m or dict() if m.get('FactorId') is not None: self.factor_id = m.get('FactorId') if m.get('FaultSource') is not None: self.fault_source = m.get('FaultSource') self.related_event_datas = [] if m.get('RelatedEventDatas') is not None: for k in m.get('RelatedEventDatas'): temp_model = DescribeFaultDiagnosisUserDetailResponseBodyFactorListRelatedEventDatas() self.related_event_datas.append(temp_model.from_map(k)) self.related_metric_datas = [] if m.get('RelatedMetricDatas') is not None: for k in m.get('RelatedMetricDatas'): temp_model = DescribeFaultDiagnosisUserDetailResponseBodyFactorListRelatedMetricDatas() self.related_metric_datas.append(temp_model.from_map(k)) return self class DescribeFaultDiagnosisUserDetailResponseBodyFaultMetricDataNodes(TeaModel): def __init__( self, x: str = None, y: str = None, ): self.x = x self.y = y def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.x is not None: result['X'] = self.x if self.y is not None: result['Y'] = self.y return result def from_map(self, m: dict = None): m = m or dict() if m.get('X') is not None: self.x = m.get('X') if m.get('Y') is not None: self.y = m.get('Y') return self class DescribeFaultDiagnosisUserDetailResponseBodyFaultMetricData(TeaModel): def __init__( self, nodes: List[DescribeFaultDiagnosisUserDetailResponseBodyFaultMetricDataNodes] = None, ): self.nodes = nodes def validate(self): if self.nodes: for k in self.nodes: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['Nodes'] = [] if self.nodes is not None: for k in self.nodes: result['Nodes'].append(k.to_map() if k else None) return result def from_map(self, m: dict = None): m = m or dict() self.nodes = [] if m.get('Nodes') is not None: for k in m.get('Nodes'): temp_model = DescribeFaultDiagnosisUserDetailResponseBodyFaultMetricDataNodes() self.nodes.append(temp_model.from_map(k)) return self class DescribeFaultDiagnosisUserDetailResponseBodyUserDetailOnlinePeriods(TeaModel): def __init__( self, join_ts: int = None, leave_ts: int = None, ): self.join_ts = join_ts self.leave_ts = leave_ts def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.join_ts is not None: result['JoinTs'] = self.join_ts if self.leave_ts is not None: result['LeaveTs'] = self.leave_ts return result def from_map(self, m: dict = None): m = m or dict() if m.get('JoinTs') is not None: self.join_ts = m.get('JoinTs') if m.get('LeaveTs') is not None: self.leave_ts = m.get('LeaveTs') return self class DescribeFaultDiagnosisUserDetailResponseBodyUserDetail(TeaModel): def __init__( self, created_ts: int = None, destroyed_ts: int = None, duration: int = None, location: str = None, network: str = None, online_duration: int = None, online_periods: List[DescribeFaultDiagnosisUserDetailResponseBodyUserDetailOnlinePeriods] = None, os: str = None, sdk_version: str = None, user_id: str = None, ): self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.duration = duration self.location = location self.network = network self.online_duration = online_duration self.online_periods = online_periods self.os = os self.sdk_version = sdk_version self.user_id = user_id def validate(self): if self.online_periods: for k in self.online_periods: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.duration is not None: result['Duration'] = self.duration if self.location is not None: result['Location'] = self.location if self.network is not None: result['Network'] = self.network if self.online_duration is not None: result['OnlineDuration'] = self.online_duration result['OnlinePeriods'] = [] if self.online_periods is not None: for k in self.online_periods: result['OnlinePeriods'].append(k.to_map() if k else None) if self.os is not None: result['Os'] = self.os if self.sdk_version is not None: result['SdkVersion'] = self.sdk_version if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('Duration') is not None: self.duration = m.get('Duration') if m.get('Location') is not None: self.location = m.get('Location') if m.get('Network') is not None: self.network = m.get('Network') if m.get('OnlineDuration') is not None: self.online_duration = m.get('OnlineDuration') self.online_periods = [] if m.get('OnlinePeriods') is not None: for k in m.get('OnlinePeriods'): temp_model = DescribeFaultDiagnosisUserDetailResponseBodyUserDetailOnlinePeriods() self.online_periods.append(temp_model.from_map(k)) if m.get('Os') is not None: self.os = m.get('Os') if m.get('SdkVersion') is not None: self.sdk_version = m.get('SdkVersion') if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeFaultDiagnosisUserDetailResponseBody(TeaModel): def __init__( self, call_info: DescribeFaultDiagnosisUserDetailResponseBodyCallInfo = None, factor_list: List[DescribeFaultDiagnosisUserDetailResponseBodyFactorList] = None, fault_metric_data: DescribeFaultDiagnosisUserDetailResponseBodyFaultMetricData = None, network_operators: List[str] = None, request_id: str = None, user_detail: DescribeFaultDiagnosisUserDetailResponseBodyUserDetail = None, ): self.call_info = call_info self.factor_list = factor_list self.fault_metric_data = fault_metric_data self.network_operators = network_operators self.request_id = request_id self.user_detail = user_detail def validate(self): if self.call_info: self.call_info.validate() if self.factor_list: for k in self.factor_list: if k: k.validate() if self.fault_metric_data: self.fault_metric_data.validate() if self.user_detail: self.user_detail.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.call_info is not None: result['CallInfo'] = self.call_info.to_map() result['FactorList'] = [] if self.factor_list is not None: for k in self.factor_list: result['FactorList'].append(k.to_map() if k else None) if self.fault_metric_data is not None: result['FaultMetricData'] = self.fault_metric_data.to_map() if self.network_operators is not None: result['NetworkOperators'] = self.network_operators if self.request_id is not None: result['RequestId'] = self.request_id if self.user_detail is not None: result['UserDetail'] = self.user_detail.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('CallInfo') is not None: temp_model = DescribeFaultDiagnosisUserDetailResponseBodyCallInfo() self.call_info = temp_model.from_map(m['CallInfo']) self.factor_list = [] if m.get('FactorList') is not None: for k in m.get('FactorList'): temp_model = DescribeFaultDiagnosisUserDetailResponseBodyFactorList() self.factor_list.append(temp_model.from_map(k)) if m.get('FaultMetricData') is not None: temp_model = DescribeFaultDiagnosisUserDetailResponseBodyFaultMetricData() self.fault_metric_data = temp_model.from_map(m['FaultMetricData']) if m.get('NetworkOperators') is not None: self.network_operators = m.get('NetworkOperators') if m.get('RequestId') is not None: self.request_id = m.get('RequestId') if m.get('UserDetail') is not None: temp_model = DescribeFaultDiagnosisUserDetailResponseBodyUserDetail() self.user_detail = temp_model.from_map(m['UserDetail']) return self class DescribeFaultDiagnosisUserDetailResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeFaultDiagnosisUserDetailResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeFaultDiagnosisUserDetailResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeFaultDiagnosisUserListRequest(TeaModel): def __init__( self, app_id: str = None, channel_id: str = None, end_ts: int = None, fault_types: str = None, page_no: int = None, page_size: int = None, start_ts: int = None, user_id: str = None, ): self.app_id = app_id self.channel_id = channel_id self.end_ts = end_ts self.fault_types = fault_types self.page_no = page_no self.page_size = page_size self.start_ts = start_ts self.user_id = user_id def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.end_ts is not None: result['EndTs'] = self.end_ts if self.fault_types is not None: result['FaultTypes'] = self.fault_types if self.page_no is not None: result['PageNo'] = self.page_no if self.page_size is not None: result['PageSize'] = self.page_size if self.start_ts is not None: result['StartTs'] = self.start_ts if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('EndTs') is not None: self.end_ts = m.get('EndTs') if m.get('FaultTypes') is not None: self.fault_types = m.get('FaultTypes') if m.get('PageNo') is not None: self.page_no = m.get('PageNo') if m.get('PageSize') is not None: self.page_size = m.get('PageSize') if m.get('StartTs') is not None: self.start_ts = m.get('StartTs') if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeFaultDiagnosisUserListResponseBodyUserListFaultList(TeaModel): def __init__( self, fault_type: str = None, ): self.fault_type = fault_type def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.fault_type is not None: result['FaultType'] = self.fault_type return result def from_map(self, m: dict = None): m = m or dict() if m.get('FaultType') is not None: self.fault_type = m.get('FaultType') return self class DescribeFaultDiagnosisUserListResponseBodyUserList(TeaModel): def __init__( self, channel_created_ts: int = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, fault_list: List[DescribeFaultDiagnosisUserListResponseBodyUserListFaultList] = None, user_id: str = None, ): self.channel_created_ts = channel_created_ts self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.fault_list = fault_list self.user_id = user_id def validate(self): if self.fault_list: for k in self.fault_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.channel_created_ts is not None: result['ChannelCreatedTs'] = self.channel_created_ts if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts result['FaultList'] = [] if self.fault_list is not None: for k in self.fault_list: result['FaultList'].append(k.to_map() if k else None) if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('ChannelCreatedTs') is not None: self.channel_created_ts = m.get('ChannelCreatedTs') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') self.fault_list = [] if m.get('FaultList') is not None: for k in m.get('FaultList'): temp_model = DescribeFaultDiagnosisUserListResponseBodyUserListFaultList() self.fault_list.append(temp_model.from_map(k)) if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeFaultDiagnosisUserListResponseBody(TeaModel): def __init__( self, page_no: int = None, page_size: int = None, request_id: str = None, total_cnt: int = None, user_list: List[DescribeFaultDiagnosisUserListResponseBodyUserList] = None, ): self.page_no = page_no self.page_size = page_size self.request_id = request_id self.total_cnt = total_cnt self.user_list = user_list def validate(self): if self.user_list: for k in self.user_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.page_no is not None: result['PageNo'] = self.page_no if self.page_size is not None: result['PageSize'] = self.page_size if self.request_id is not None: result['RequestId'] = self.request_id if self.total_cnt is not None: result['TotalCnt'] = self.total_cnt result['UserList'] = [] if self.user_list is not None: for k in self.user_list: result['UserList'].append(k.to_map() if k else None) return result def from_map(self, m: dict = None): m = m or dict() if m.get('PageNo') is not None: self.page_no = m.get('PageNo') if m.get('PageSize') is not None: self.page_size = m.get('PageSize') if m.get('RequestId') is not None: self.request_id = m.get('RequestId') if m.get('TotalCnt') is not None: self.total_cnt = m.get('TotalCnt') self.user_list = [] if m.get('UserList') is not None: for k in m.get('UserList'): temp_model = DescribeFaultDiagnosisUserListResponseBodyUserList() self.user_list.append(temp_model.from_map(k)) return self class DescribeFaultDiagnosisUserListResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeFaultDiagnosisUserListResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeFaultDiagnosisUserListResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeIceDurPeriodByDaySubTypeRequest(TeaModel): def __init__( self, end_ts: int = None, job_type: str = None, start_ts: int = None, time_zone: str = None, ): self.end_ts = end_ts self.job_type = job_type self.start_ts = start_ts self.time_zone = time_zone def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.end_ts is not None: result['EndTs'] = self.end_ts if self.job_type is not None: result['JobType'] = self.job_type if self.start_ts is not None: result['StartTs'] = self.start_ts if self.time_zone is not None: result['TimeZone'] = self.time_zone return result def from_map(self, m: dict = None): m = m or dict() if m.get('EndTs') is not None: self.end_ts = m.get('EndTs') if m.get('JobType') is not None: self.job_type = m.get('JobType') if m.get('StartTs') is not None: self.start_ts = m.get('StartTs') if m.get('TimeZone') is not None: self.time_zone = m.get('TimeZone') return self class DescribeIceDurPeriodByDaySubTypeResponseBodyJobInfoListSubJobInfoList(TeaModel): def __init__( self, sub_job_duration: int = None, sub_job_type: str = None, ): self.sub_job_duration = sub_job_duration self.sub_job_type = sub_job_type def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.sub_job_duration is not None: result['SubJobDuration'] = self.sub_job_duration if self.sub_job_type is not None: result['SubJobType'] = self.sub_job_type return result def from_map(self, m: dict = None): m = m or dict() if m.get('SubJobDuration') is not None: self.sub_job_duration = m.get('SubJobDuration') if m.get('SubJobType') is not None: self.sub_job_type = m.get('SubJobType') return self class DescribeIceDurPeriodByDaySubTypeResponseBodyJobInfoList(TeaModel): def __init__( self, date_ts: int = None, duration: int = None, sub_job_info_list: List[DescribeIceDurPeriodByDaySubTypeResponseBodyJobInfoListSubJobInfoList] = None, ): self.date_ts = date_ts self.duration = duration self.sub_job_info_list = sub_job_info_list def validate(self): if self.sub_job_info_list: for k in self.sub_job_info_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.date_ts is not None: result['DateTs'] = self.date_ts if self.duration is not None: result['Duration'] = self.duration result['SubJobInfoList'] = [] if self.sub_job_info_list is not None: for k in self.sub_job_info_list: result['SubJobInfoList'].append(k.to_map() if k else None) return result def from_map(self, m: dict = None): m = m or dict() if m.get('DateTs') is not None: self.date_ts = m.get('DateTs') if m.get('Duration') is not None: self.duration = m.get('Duration') self.sub_job_info_list = [] if m.get('SubJobInfoList') is not None: for k in m.get('SubJobInfoList'): temp_model = DescribeIceDurPeriodByDaySubTypeResponseBodyJobInfoListSubJobInfoList() self.sub_job_info_list.append(temp_model.from_map(k)) return self class DescribeIceDurPeriodByDaySubTypeResponseBody(TeaModel): def __init__( self, job_info_list: List[DescribeIceDurPeriodByDaySubTypeResponseBodyJobInfoList] = None, request_id: str = None, ): self.job_info_list = job_info_list self.request_id = request_id def validate(self): if self.job_info_list: for k in self.job_info_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['JobInfoList'] = [] if self.job_info_list is not None: for k in self.job_info_list: result['JobInfoList'].append(k.to_map() if k else None) if self.request_id is not None: result['RequestId'] = self.request_id return result def from_map(self, m: dict = None): m = m or dict() self.job_info_list = [] if m.get('JobInfoList') is not None: for k in m.get('JobInfoList'): temp_model = DescribeIceDurPeriodByDaySubTypeResponseBodyJobInfoList() self.job_info_list.append(temp_model.from_map(k)) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') return self class DescribeIceDurPeriodByDaySubTypeResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeIceDurPeriodByDaySubTypeResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeIceDurPeriodByDaySubTypeResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeIceDurSummaryOverviewRequest(TeaModel): def __init__( self, cur_ts: int = None, time_zone: str = None, ): self.cur_ts = cur_ts self.time_zone = time_zone def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.cur_ts is not None: result['CurTs'] = self.cur_ts if self.time_zone is not None: result['TimeZone'] = self.time_zone return result def from_map(self, m: dict = None): m = m or dict() if m.get('CurTs') is not None: self.cur_ts = m.get('CurTs') if m.get('TimeZone') is not None: self.time_zone = m.get('TimeZone') return self class DescribeIceDurSummaryOverviewResponseBodyJobInfoList(TeaModel): def __init__( self, duration: int = None, job_type: str = None, time_range: str = None, ): self.duration = duration self.job_type = job_type self.time_range = time_range def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.duration is not None: result['Duration'] = self.duration if self.job_type is not None: result['JobType'] = self.job_type if self.time_range is not None: result['TimeRange'] = self.time_range return result def from_map(self, m: dict = None): m = m or dict() if m.get('Duration') is not None: self.duration = m.get('Duration') if m.get('JobType') is not None: self.job_type = m.get('JobType') if m.get('TimeRange') is not None: self.time_range = m.get('TimeRange') return self class DescribeIceDurSummaryOverviewResponseBody(TeaModel): def __init__( self, job_info_list: List[DescribeIceDurSummaryOverviewResponseBodyJobInfoList] = None, request_id: str = None, ): self.job_info_list = job_info_list self.request_id = request_id def validate(self): if self.job_info_list: for k in self.job_info_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['JobInfoList'] = [] if self.job_info_list is not None: for k in self.job_info_list: result['JobInfoList'].append(k.to_map() if k else None) if self.request_id is not None: result['RequestId'] = self.request_id return result def from_map(self, m: dict = None): m = m or dict() self.job_info_list = [] if m.get('JobInfoList') is not None: for k in m.get('JobInfoList'): temp_model = DescribeIceDurSummaryOverviewResponseBodyJobInfoList() self.job_info_list.append(temp_model.from_map(k)) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') return self class DescribeIceDurSummaryOverviewResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeIceDurSummaryOverviewResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeIceDurSummaryOverviewResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribePubUserListBySubUserRequest(TeaModel): def __init__( self, app_id: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, sub_user_id: str = None, ): self.app_id = app_id self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.sub_user_id = sub_user_id def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.sub_user_id is not None: result['SubUserId'] = self.sub_user_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('SubUserId') is not None: self.sub_user_id = m.get('SubUserId') return self class DescribePubUserListBySubUserResponseBodyPubUserDetailListOnlinePeriods(TeaModel): def __init__( self, join_ts: int = None, leave_ts: int = None, ): self.join_ts = join_ts self.leave_ts = leave_ts def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.join_ts is not None: result['JoinTs'] = self.join_ts if self.leave_ts is not None: result['LeaveTs'] = self.leave_ts return result def from_map(self, m: dict = None): m = m or dict() if m.get('JoinTs') is not None: self.join_ts = m.get('JoinTs') if m.get('LeaveTs') is not None: self.leave_ts = m.get('LeaveTs') return self class DescribePubUserListBySubUserResponseBodyPubUserDetailList(TeaModel): def __init__( self, call_id_list: List[str] = None, client_type: str = None, created_ts: int = None, destroyed_ts: int = None, duration: int = None, location: str = None, network: str = None, network_list: List[str] = None, online_duration: int = None, online_periods: List[DescribePubUserListBySubUserResponseBodyPubUserDetailListOnlinePeriods] = None, os: str = None, os_list: List[str] = None, roles: List[str] = None, sdk_version: str = None, sdk_version_list: List[str] = None, user_id: str = None, user_id_alias: str = None, ): self.call_id_list = call_id_list self.client_type = client_type self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.duration = duration self.location = location self.network = network self.network_list = network_list self.online_duration = online_duration self.online_periods = online_periods self.os = os self.os_list = os_list self.roles = roles self.sdk_version = sdk_version self.sdk_version_list = sdk_version_list self.user_id = user_id self.user_id_alias = user_id_alias def validate(self): if self.online_periods: for k in self.online_periods: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.call_id_list is not None: result['CallIdList'] = self.call_id_list if self.client_type is not None: result['ClientType'] = self.client_type if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.duration is not None: result['Duration'] = self.duration if self.location is not None: result['Location'] = self.location if self.network is not None: result['Network'] = self.network if self.network_list is not None: result['NetworkList'] = self.network_list if self.online_duration is not None: result['OnlineDuration'] = self.online_duration result['OnlinePeriods'] = [] if self.online_periods is not None: for k in self.online_periods: result['OnlinePeriods'].append(k.to_map() if k else None) if self.os is not None: result['Os'] = self.os if self.os_list is not None: result['OsList'] = self.os_list if self.roles is not None: result['Roles'] = self.roles if self.sdk_version is not None: result['SdkVersion'] = self.sdk_version if self.sdk_version_list is not None: result['SdkVersionList'] = self.sdk_version_list if self.user_id is not None: result['UserId'] = self.user_id if self.user_id_alias is not None: result['UserIdAlias'] = self.user_id_alias return result def from_map(self, m: dict = None): m = m or dict() if m.get('CallIdList') is not None: self.call_id_list = m.get('CallIdList') if m.get('ClientType') is not None: self.client_type = m.get('ClientType') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('Duration') is not None: self.duration = m.get('Duration') if m.get('Location') is not None: self.location = m.get('Location') if m.get('Network') is not None: self.network = m.get('Network') if m.get('NetworkList') is not None: self.network_list = m.get('NetworkList') if m.get('OnlineDuration') is not None: self.online_duration = m.get('OnlineDuration') self.online_periods = [] if m.get('OnlinePeriods') is not None: for k in m.get('OnlinePeriods'): temp_model = DescribePubUserListBySubUserResponseBodyPubUserDetailListOnlinePeriods() self.online_periods.append(temp_model.from_map(k)) if m.get('Os') is not None: self.os = m.get('Os') if m.get('OsList') is not None: self.os_list = m.get('OsList') if m.get('Roles') is not None: self.roles = m.get('Roles') if m.get('SdkVersion') is not None: self.sdk_version = m.get('SdkVersion') if m.get('SdkVersionList') is not None: self.sdk_version_list = m.get('SdkVersionList') if m.get('UserId') is not None: self.user_id = m.get('UserId') if m.get('UserIdAlias') is not None: self.user_id_alias = m.get('UserIdAlias') return self class DescribePubUserListBySubUserResponseBodySubUserDetailOnlinePeriods(TeaModel): def __init__( self, join_ts: int = None, leave_ts: int = None, ): self.join_ts = join_ts self.leave_ts = leave_ts def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.join_ts is not None: result['JoinTs'] = self.join_ts if self.leave_ts is not None: result['LeaveTs'] = self.leave_ts return result def from_map(self, m: dict = None): m = m or dict() if m.get('JoinTs') is not None: self.join_ts = m.get('JoinTs') if m.get('LeaveTs') is not None: self.leave_ts = m.get('LeaveTs') return self class DescribePubUserListBySubUserResponseBodySubUserDetail(TeaModel): def __init__( self, client_type: str = None, created_ts: int = None, destroyed_ts: int = None, duration: int = None, location: str = None, network: str = None, network_list: List[str] = None, online_duration: int = None, online_periods: List[DescribePubUserListBySubUserResponseBodySubUserDetailOnlinePeriods] = None, os: str = None, os_list: List[str] = None, roles: List[str] = None, sdk_version: str = None, sdk_version_list: List[str] = None, user_id: str = None, user_id_alias: str = None, ): self.client_type = client_type self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.duration = duration self.location = location self.network = network self.network_list = network_list self.online_duration = online_duration self.online_periods = online_periods self.os = os self.os_list = os_list self.roles = roles self.sdk_version = sdk_version self.sdk_version_list = sdk_version_list self.user_id = user_id self.user_id_alias = user_id_alias def validate(self): if self.online_periods: for k in self.online_periods: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.client_type is not None: result['ClientType'] = self.client_type if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.duration is not None: result['Duration'] = self.duration if self.location is not None: result['Location'] = self.location if self.network is not None: result['Network'] = self.network if self.network_list is not None: result['NetworkList'] = self.network_list if self.online_duration is not None: result['OnlineDuration'] = self.online_duration result['OnlinePeriods'] = [] if self.online_periods is not None: for k in self.online_periods: result['OnlinePeriods'].append(k.to_map() if k else None) if self.os is not None: result['Os'] = self.os if self.os_list is not None: result['OsList'] = self.os_list if self.roles is not None: result['Roles'] = self.roles if self.sdk_version is not None: result['SdkVersion'] = self.sdk_version if self.sdk_version_list is not None: result['SdkVersionList'] = self.sdk_version_list if self.user_id is not None: result['UserId'] = self.user_id if self.user_id_alias is not None: result['UserIdAlias'] = self.user_id_alias return result def from_map(self, m: dict = None): m = m or dict() if m.get('ClientType') is not None: self.client_type = m.get('ClientType') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('Duration') is not None: self.duration = m.get('Duration') if m.get('Location') is not None: self.location = m.get('Location') if m.get('Network') is not None: self.network = m.get('Network') if m.get('NetworkList') is not None: self.network_list = m.get('NetworkList') if m.get('OnlineDuration') is not None: self.online_duration = m.get('OnlineDuration') self.online_periods = [] if m.get('OnlinePeriods') is not None: for k in m.get('OnlinePeriods'): temp_model = DescribePubUserListBySubUserResponseBodySubUserDetailOnlinePeriods() self.online_periods.append(temp_model.from_map(k)) if m.get('Os') is not None: self.os = m.get('Os') if m.get('OsList') is not None: self.os_list = m.get('OsList') if m.get('Roles') is not None: self.roles = m.get('Roles') if m.get('SdkVersion') is not None: self.sdk_version = m.get('SdkVersion') if m.get('SdkVersionList') is not None: self.sdk_version_list = m.get('SdkVersionList') if m.get('UserId') is not None: self.user_id = m.get('UserId') if m.get('UserIdAlias') is not None: self.user_id_alias = m.get('UserIdAlias') return self class DescribePubUserListBySubUserResponseBody(TeaModel): def __init__( self, call_status: str = None, pub_user_detail_list: List[DescribePubUserListBySubUserResponseBodyPubUserDetailList] = None, request_id: str = None, sub_user_detail: DescribePubUserListBySubUserResponseBodySubUserDetail = None, ): self.call_status = call_status self.pub_user_detail_list = pub_user_detail_list self.request_id = request_id self.sub_user_detail = sub_user_detail def validate(self): if self.pub_user_detail_list: for k in self.pub_user_detail_list: if k: k.validate() if self.sub_user_detail: self.sub_user_detail.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.call_status is not None: result['CallStatus'] = self.call_status result['PubUserDetailList'] = [] if self.pub_user_detail_list is not None: for k in self.pub_user_detail_list: result['PubUserDetailList'].append(k.to_map() if k else None) if self.request_id is not None: result['RequestId'] = self.request_id if self.sub_user_detail is not None: result['SubUserDetail'] = self.sub_user_detail.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('CallStatus') is not None: self.call_status = m.get('CallStatus') self.pub_user_detail_list = [] if m.get('PubUserDetailList') is not None: for k in m.get('PubUserDetailList'): temp_model = DescribePubUserListBySubUserResponseBodyPubUserDetailList() self.pub_user_detail_list.append(temp_model.from_map(k)) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') if m.get('SubUserDetail') is not None: temp_model = DescribePubUserListBySubUserResponseBodySubUserDetail() self.sub_user_detail = temp_model.from_map(m['SubUserDetail']) return self class DescribePubUserListBySubUserResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribePubUserListBySubUserResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribePubUserListBySubUserResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeQoeMetricDataRequest(TeaModel): def __init__( self, app_id: str = None, channel_id: str = None, created_ts: int = None, destroyed_ts: int = None, user_id: str = None, ): self.app_id = app_id self.channel_id = channel_id self.created_ts = created_ts self.destroyed_ts = destroyed_ts self.user_id = user_id def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.channel_id is not None: result['ChannelId'] = self.channel_id if self.created_ts is not None: result['CreatedTs'] = self.created_ts if self.destroyed_ts is not None: result['DestroyedTs'] = self.destroyed_ts if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('ChannelId') is not None: self.channel_id = m.get('ChannelId') if m.get('CreatedTs') is not None: self.created_ts = m.get('CreatedTs') if m.get('DestroyedTs') is not None: self.destroyed_ts = m.get('DestroyedTs') if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeQoeMetricDataResponseBodyAudioDataNodes(TeaModel): def __init__( self, x: str = None, y: str = None, ): self.x = x self.y = y def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.x is not None: result['X'] = self.x if self.y is not None: result['Y'] = self.y return result def from_map(self, m: dict = None): m = m or dict() if m.get('X') is not None: self.x = m.get('X') if m.get('Y') is not None: self.y = m.get('Y') return self class DescribeQoeMetricDataResponseBodyAudioData(TeaModel): def __init__( self, nodes: List[DescribeQoeMetricDataResponseBodyAudioDataNodes] = None, type: str = None, user_id: str = None, ): self.nodes = nodes self.type = type self.user_id = user_id def validate(self): if self.nodes: for k in self.nodes: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['Nodes'] = [] if self.nodes is not None: for k in self.nodes: result['Nodes'].append(k.to_map() if k else None) if self.type is not None: result['Type'] = self.type if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() self.nodes = [] if m.get('Nodes') is not None: for k in m.get('Nodes'): temp_model = DescribeQoeMetricDataResponseBodyAudioDataNodes() self.nodes.append(temp_model.from_map(k)) if m.get('Type') is not None: self.type = m.get('Type') if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeQoeMetricDataResponseBodyVideoDataNodes(TeaModel): def __init__( self, x: str = None, y: str = None, ): self.x = x self.y = y def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.x is not None: result['X'] = self.x if self.y is not None: result['Y'] = self.y return result def from_map(self, m: dict = None): m = m or dict() if m.get('X') is not None: self.x = m.get('X') if m.get('Y') is not None: self.y = m.get('Y') return self class DescribeQoeMetricDataResponseBodyVideoData(TeaModel): def __init__( self, nodes: List[DescribeQoeMetricDataResponseBodyVideoDataNodes] = None, type: str = None, user_id: str = None, ): self.nodes = nodes self.type = type self.user_id = user_id def validate(self): if self.nodes: for k in self.nodes: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['Nodes'] = [] if self.nodes is not None: for k in self.nodes: result['Nodes'].append(k.to_map() if k else None) if self.type is not None: result['Type'] = self.type if self.user_id is not None: result['UserId'] = self.user_id return result def from_map(self, m: dict = None): m = m or dict() self.nodes = [] if m.get('Nodes') is not None: for k in m.get('Nodes'): temp_model = DescribeQoeMetricDataResponseBodyVideoDataNodes() self.nodes.append(temp_model.from_map(k)) if m.get('Type') is not None: self.type = m.get('Type') if m.get('UserId') is not None: self.user_id = m.get('UserId') return self class DescribeQoeMetricDataResponseBody(TeaModel): def __init__( self, audio_data: List[DescribeQoeMetricDataResponseBodyAudioData] = None, request_id: str = None, video_data: List[DescribeQoeMetricDataResponseBodyVideoData] = None, ): self.audio_data = audio_data self.request_id = request_id self.video_data = video_data def validate(self): if self.audio_data: for k in self.audio_data: if k: k.validate() if self.video_data: for k in self.video_data: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['AudioData'] = [] if self.audio_data is not None: for k in self.audio_data: result['AudioData'].append(k.to_map() if k else None) if self.request_id is not None: result['RequestId'] = self.request_id result['VideoData'] = [] if self.video_data is not None: for k in self.video_data: result['VideoData'].append(k.to_map() if k else None) return result def from_map(self, m: dict = None): m = m or dict() self.audio_data = [] if m.get('AudioData') is not None: for k in m.get('AudioData'): temp_model = DescribeQoeMetricDataResponseBodyAudioData() self.audio_data.append(temp_model.from_map(k)) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') self.video_data = [] if m.get('VideoData') is not None: for k in m.get('VideoData'): temp_model = DescribeQoeMetricDataResponseBodyVideoData() self.video_data.append(temp_model.from_map(k)) return self class DescribeQoeMetricDataResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeQoeMetricDataResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeQoeMetricDataResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeQualityAreaDistributionStatDataRequest(TeaModel): def __init__( self, app_id: str = None, end_date: int = None, parent_area: str = None, start_date: int = None, ): self.app_id = app_id self.end_date = end_date self.parent_area = parent_area self.start_date = start_date def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.end_date is not None: result['EndDate'] = self.end_date if self.parent_area is not None: result['ParentArea'] = self.parent_area if self.start_date is not None: result['StartDate'] = self.start_date return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('EndDate') is not None: self.end_date = m.get('EndDate') if m.get('ParentArea') is not None: self.parent_area = m.get('ParentArea') if m.get('StartDate') is not None: self.start_date = m.get('StartDate') return self class DescribeQualityAreaDistributionStatDataResponseBodyQualityStatDataList(TeaModel): def __init__( self, audio_delay: int = None, audio_high_quality_transmission_rate: str = None, audio_speak_out_duration: int = None, audio_stuck_rate: str = None, call_duration_ratio: str = None, join_channel_suc_five_sec_rate: str = None, join_channel_suc_rate: str = None, name: str = None, video_delay: int = None, video_first_pic_duration: int = None, video_high_quality_transmission_rate: str = None, video_stuck_rate: str = None, ): self.audio_delay = audio_delay self.audio_high_quality_transmission_rate = audio_high_quality_transmission_rate self.audio_speak_out_duration = audio_speak_out_duration self.audio_stuck_rate = audio_stuck_rate self.call_duration_ratio = call_duration_ratio self.join_channel_suc_five_sec_rate = join_channel_suc_five_sec_rate self.join_channel_suc_rate = join_channel_suc_rate self.name = name self.video_delay = video_delay self.video_first_pic_duration = video_first_pic_duration self.video_high_quality_transmission_rate = video_high_quality_transmission_rate self.video_stuck_rate = video_stuck_rate def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.audio_delay is not None: result['AudioDelay'] = self.audio_delay if self.audio_high_quality_transmission_rate is not None: result['AudioHighQualityTransmissionRate'] = self.audio_high_quality_transmission_rate if self.audio_speak_out_duration is not None: result['AudioSpeakOutDuration'] = self.audio_speak_out_duration if self.audio_stuck_rate is not None: result['AudioStuckRate'] = self.audio_stuck_rate if self.call_duration_ratio is not None: result['CallDurationRatio'] = self.call_duration_ratio if self.join_channel_suc_five_sec_rate is not None: result['JoinChannelSucFiveSecRate'] = self.join_channel_suc_five_sec_rate if self.join_channel_suc_rate is not None: result['JoinChannelSucRate'] = self.join_channel_suc_rate if self.name is not None: result['Name'] = self.name if self.video_delay is not None: result['VideoDelay'] = self.video_delay if self.video_first_pic_duration is not None: result['VideoFirstPicDuration'] = self.video_first_pic_duration if self.video_high_quality_transmission_rate is not None: result['VideoHighQualityTransmissionRate'] = self.video_high_quality_transmission_rate if self.video_stuck_rate is not None: result['VideoStuckRate'] = self.video_stuck_rate return result def from_map(self, m: dict = None): m = m or dict() if m.get('AudioDelay') is not None: self.audio_delay = m.get('AudioDelay') if m.get('AudioHighQualityTransmissionRate') is not None: self.audio_high_quality_transmission_rate = m.get('AudioHighQualityTransmissionRate') if m.get('AudioSpeakOutDuration') is not None: self.audio_speak_out_duration = m.get('AudioSpeakOutDuration') if m.get('AudioStuckRate') is not None: self.audio_stuck_rate = m.get('AudioStuckRate') if m.get('CallDurationRatio') is not None: self.call_duration_ratio = m.get('CallDurationRatio') if m.get('JoinChannelSucFiveSecRate') is not None: self.join_channel_suc_five_sec_rate = m.get('JoinChannelSucFiveSecRate') if m.get('JoinChannelSucRate') is not None: self.join_channel_suc_rate = m.get('JoinChannelSucRate') if m.get('Name') is not None: self.name = m.get('Name') if m.get('VideoDelay') is not None: self.video_delay = m.get('VideoDelay') if m.get('VideoFirstPicDuration') is not None: self.video_first_pic_duration = m.get('VideoFirstPicDuration') if m.get('VideoHighQualityTransmissionRate') is not None: self.video_high_quality_transmission_rate = m.get('VideoHighQualityTransmissionRate') if m.get('VideoStuckRate') is not None: self.video_stuck_rate = m.get('VideoStuckRate') return self class DescribeQualityAreaDistributionStatDataResponseBody(TeaModel): def __init__( self, quality_stat_data_list: List[DescribeQualityAreaDistributionStatDataResponseBodyQualityStatDataList] = None, request_id: str = None, ): self.quality_stat_data_list = quality_stat_data_list self.request_id = request_id def validate(self): if self.quality_stat_data_list: for k in self.quality_stat_data_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['QualityStatDataList'] = [] if self.quality_stat_data_list is not None: for k in self.quality_stat_data_list: result['QualityStatDataList'].append(k.to_map() if k else None) if self.request_id is not None: result['RequestId'] = self.request_id return result def from_map(self, m: dict = None): m = m or dict() self.quality_stat_data_list = [] if m.get('QualityStatDataList') is not None: for k in m.get('QualityStatDataList'): temp_model = DescribeQualityAreaDistributionStatDataResponseBodyQualityStatDataList() self.quality_stat_data_list.append(temp_model.from_map(k)) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') return self class DescribeQualityAreaDistributionStatDataResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeQualityAreaDistributionStatDataResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeQualityAreaDistributionStatDataResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeQualityDistributionStatDataRequest(TeaModel): def __init__( self, app_id: str = None, end_date: int = None, start_date: int = None, stat_dim: str = None, ): self.app_id = app_id self.end_date = end_date self.start_date = start_date self.stat_dim = stat_dim def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.end_date is not None: result['EndDate'] = self.end_date if self.start_date is not None: result['StartDate'] = self.start_date if self.stat_dim is not None: result['StatDim'] = self.stat_dim return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('EndDate') is not None: self.end_date = m.get('EndDate') if m.get('StartDate') is not None: self.start_date = m.get('StartDate') if m.get('StatDim') is not None: self.stat_dim = m.get('StatDim') return self class DescribeQualityDistributionStatDataResponseBodyQualityStatDataList(TeaModel): def __init__( self, audio_delay: int = None, audio_high_quality_transmission_rate: str = None, audio_speak_out_duration: int = None, audio_stuck_rate: str = None, call_duration_ratio: str = None, join_channel_suc_five_sec_rate: str = None, join_channel_suc_rate: str = None, name: str = None, video_delay: int = None, video_first_pic_duration: int = None, video_high_quality_transmission_rate: str = None, video_stuck_rate: str = None, ): self.audio_delay = audio_delay self.audio_high_quality_transmission_rate = audio_high_quality_transmission_rate self.audio_speak_out_duration = audio_speak_out_duration self.audio_stuck_rate = audio_stuck_rate self.call_duration_ratio = call_duration_ratio self.join_channel_suc_five_sec_rate = join_channel_suc_five_sec_rate self.join_channel_suc_rate = join_channel_suc_rate self.name = name self.video_delay = video_delay self.video_first_pic_duration = video_first_pic_duration self.video_high_quality_transmission_rate = video_high_quality_transmission_rate self.video_stuck_rate = video_stuck_rate def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.audio_delay is not None: result['AudioDelay'] = self.audio_delay if self.audio_high_quality_transmission_rate is not None: result['AudioHighQualityTransmissionRate'] = self.audio_high_quality_transmission_rate if self.audio_speak_out_duration is not None: result['AudioSpeakOutDuration'] = self.audio_speak_out_duration if self.audio_stuck_rate is not None: result['AudioStuckRate'] = self.audio_stuck_rate if self.call_duration_ratio is not None: result['CallDurationRatio'] = self.call_duration_ratio if self.join_channel_suc_five_sec_rate is not None: result['JoinChannelSucFiveSecRate'] = self.join_channel_suc_five_sec_rate if self.join_channel_suc_rate is not None: result['JoinChannelSucRate'] = self.join_channel_suc_rate if self.name is not None: result['Name'] = self.name if self.video_delay is not None: result['VideoDelay'] = self.video_delay if self.video_first_pic_duration is not None: result['VideoFirstPicDuration'] = self.video_first_pic_duration if self.video_high_quality_transmission_rate is not None: result['VideoHighQualityTransmissionRate'] = self.video_high_quality_transmission_rate if self.video_stuck_rate is not None: result['VideoStuckRate'] = self.video_stuck_rate return result def from_map(self, m: dict = None): m = m or dict() if m.get('AudioDelay') is not None: self.audio_delay = m.get('AudioDelay') if m.get('AudioHighQualityTransmissionRate') is not None: self.audio_high_quality_transmission_rate = m.get('AudioHighQualityTransmissionRate') if m.get('AudioSpeakOutDuration') is not None: self.audio_speak_out_duration = m.get('AudioSpeakOutDuration') if m.get('AudioStuckRate') is not None: self.audio_stuck_rate = m.get('AudioStuckRate') if m.get('CallDurationRatio') is not None: self.call_duration_ratio = m.get('CallDurationRatio') if m.get('JoinChannelSucFiveSecRate') is not None: self.join_channel_suc_five_sec_rate = m.get('JoinChannelSucFiveSecRate') if m.get('JoinChannelSucRate') is not None: self.join_channel_suc_rate = m.get('JoinChannelSucRate') if m.get('Name') is not None: self.name = m.get('Name') if m.get('VideoDelay') is not None: self.video_delay = m.get('VideoDelay') if m.get('VideoFirstPicDuration') is not None: self.video_first_pic_duration = m.get('VideoFirstPicDuration') if m.get('VideoHighQualityTransmissionRate') is not None: self.video_high_quality_transmission_rate = m.get('VideoHighQualityTransmissionRate') if m.get('VideoStuckRate') is not None: self.video_stuck_rate = m.get('VideoStuckRate') return self class DescribeQualityDistributionStatDataResponseBody(TeaModel): def __init__( self, quality_stat_data_list: List[DescribeQualityDistributionStatDataResponseBodyQualityStatDataList] = None, request_id: str = None, ): self.quality_stat_data_list = quality_stat_data_list self.request_id = request_id def validate(self): if self.quality_stat_data_list: for k in self.quality_stat_data_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['QualityStatDataList'] = [] if self.quality_stat_data_list is not None: for k in self.quality_stat_data_list: result['QualityStatDataList'].append(k.to_map() if k else None) if self.request_id is not None: result['RequestId'] = self.request_id return result def from_map(self, m: dict = None): m = m or dict() self.quality_stat_data_list = [] if m.get('QualityStatDataList') is not None: for k in m.get('QualityStatDataList'): temp_model = DescribeQualityDistributionStatDataResponseBodyQualityStatDataList() self.quality_stat_data_list.append(temp_model.from_map(k)) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') return self class DescribeQualityDistributionStatDataResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeQualityDistributionStatDataResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeQualityDistributionStatDataResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeQualityOsSdkVersionDistributionStatDataRequest(TeaModel): def __init__( self, app_id: str = None, end_date: int = None, start_date: int = None, ): self.app_id = app_id self.end_date = end_date self.start_date = start_date def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.end_date is not None: result['EndDate'] = self.end_date if self.start_date is not None: result['StartDate'] = self.start_date return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('EndDate') is not None: self.end_date = m.get('EndDate') if m.get('StartDate') is not None: self.start_date = m.get('StartDate') return self class DescribeQualityOsSdkVersionDistributionStatDataResponseBodyQualityOsSdkVersionStatDataList(TeaModel): def __init__( self, audio_delay: int = None, audio_high_quality_transmission_rate: str = None, audio_speak_out_duration: int = None, audio_stuck_rate: str = None, call_duration_ratio: str = None, join_channel_suc_five_sec_rate: str = None, join_channel_suc_rate: str = None, name: str = None, os: str = None, video_delay: int = None, video_first_pic_duration: int = None, video_high_quality_transmission_rate: str = None, video_stuck_rate: str = None, ): self.audio_delay = audio_delay self.audio_high_quality_transmission_rate = audio_high_quality_transmission_rate self.audio_speak_out_duration = audio_speak_out_duration self.audio_stuck_rate = audio_stuck_rate self.call_duration_ratio = call_duration_ratio self.join_channel_suc_five_sec_rate = join_channel_suc_five_sec_rate self.join_channel_suc_rate = join_channel_suc_rate self.name = name self.os = os self.video_delay = video_delay self.video_first_pic_duration = video_first_pic_duration self.video_high_quality_transmission_rate = video_high_quality_transmission_rate self.video_stuck_rate = video_stuck_rate def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.audio_delay is not None: result['AudioDelay'] = self.audio_delay if self.audio_high_quality_transmission_rate is not None: result['AudioHighQualityTransmissionRate'] = self.audio_high_quality_transmission_rate if self.audio_speak_out_duration is not None: result['AudioSpeakOutDuration'] = self.audio_speak_out_duration if self.audio_stuck_rate is not None: result['AudioStuckRate'] = self.audio_stuck_rate if self.call_duration_ratio is not None: result['CallDurationRatio'] = self.call_duration_ratio if self.join_channel_suc_five_sec_rate is not None: result['JoinChannelSucFiveSecRate'] = self.join_channel_suc_five_sec_rate if self.join_channel_suc_rate is not None: result['JoinChannelSucRate'] = self.join_channel_suc_rate if self.name is not None: result['Name'] = self.name if self.os is not None: result['Os'] = self.os if self.video_delay is not None: result['VideoDelay'] = self.video_delay if self.video_first_pic_duration is not None: result['VideoFirstPicDuration'] = self.video_first_pic_duration if self.video_high_quality_transmission_rate is not None: result['VideoHighQualityTransmissionRate'] = self.video_high_quality_transmission_rate if self.video_stuck_rate is not None: result['VideoStuckRate'] = self.video_stuck_rate return result def from_map(self, m: dict = None): m = m or dict() if m.get('AudioDelay') is not None: self.audio_delay = m.get('AudioDelay') if m.get('AudioHighQualityTransmissionRate') is not None: self.audio_high_quality_transmission_rate = m.get('AudioHighQualityTransmissionRate') if m.get('AudioSpeakOutDuration') is not None: self.audio_speak_out_duration = m.get('AudioSpeakOutDuration') if m.get('AudioStuckRate') is not None: self.audio_stuck_rate = m.get('AudioStuckRate') if m.get('CallDurationRatio') is not None: self.call_duration_ratio = m.get('CallDurationRatio') if m.get('JoinChannelSucFiveSecRate') is not None: self.join_channel_suc_five_sec_rate = m.get('JoinChannelSucFiveSecRate') if m.get('JoinChannelSucRate') is not None: self.join_channel_suc_rate = m.get('JoinChannelSucRate') if m.get('Name') is not None: self.name = m.get('Name') if m.get('Os') is not None: self.os = m.get('Os') if m.get('VideoDelay') is not None: self.video_delay = m.get('VideoDelay') if m.get('VideoFirstPicDuration') is not None: self.video_first_pic_duration = m.get('VideoFirstPicDuration') if m.get('VideoHighQualityTransmissionRate') is not None: self.video_high_quality_transmission_rate = m.get('VideoHighQualityTransmissionRate') if m.get('VideoStuckRate') is not None: self.video_stuck_rate = m.get('VideoStuckRate') return self class DescribeQualityOsSdkVersionDistributionStatDataResponseBody(TeaModel): def __init__( self, quality_os_sdk_version_stat_data_list: List[DescribeQualityOsSdkVersionDistributionStatDataResponseBodyQualityOsSdkVersionStatDataList] = None, request_id: str = None, ): self.quality_os_sdk_version_stat_data_list = quality_os_sdk_version_stat_data_list self.request_id = request_id def validate(self): if self.quality_os_sdk_version_stat_data_list: for k in self.quality_os_sdk_version_stat_data_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['QualityOsSdkVersionStatDataList'] = [] if self.quality_os_sdk_version_stat_data_list is not None: for k in self.quality_os_sdk_version_stat_data_list: result['QualityOsSdkVersionStatDataList'].append(k.to_map() if k else None) if self.request_id is not None: result['RequestId'] = self.request_id return result def from_map(self, m: dict = None): m = m or dict() self.quality_os_sdk_version_stat_data_list = [] if m.get('QualityOsSdkVersionStatDataList') is not None: for k in m.get('QualityOsSdkVersionStatDataList'): temp_model = DescribeQualityOsSdkVersionDistributionStatDataResponseBodyQualityOsSdkVersionStatDataList() self.quality_os_sdk_version_stat_data_list.append(temp_model.from_map(k)) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') return self class DescribeQualityOsSdkVersionDistributionStatDataResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeQualityOsSdkVersionDistributionStatDataResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeQualityOsSdkVersionDistributionStatDataResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeQualityOverallDataRequest(TeaModel): def __init__( self, app_id: str = None, end_date: int = None, start_date: int = None, types: str = None, ): self.app_id = app_id self.end_date = end_date self.start_date = start_date self.types = types def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.end_date is not None: result['EndDate'] = self.end_date if self.start_date is not None: result['StartDate'] = self.start_date if self.types is not None: result['Types'] = self.types return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('EndDate') is not None: self.end_date = m.get('EndDate') if m.get('StartDate') is not None: self.start_date = m.get('StartDate') if m.get('Types') is not None: self.types = m.get('Types') return self class DescribeQualityOverallDataResponseBodyQualityOverallDataNodes(TeaModel): def __init__( self, x: str = None, y: str = None, ): self.x = x self.y = y def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.x is not None: result['X'] = self.x if self.y is not None: result['Y'] = self.y return result def from_map(self, m: dict = None): m = m or dict() if m.get('X') is not None: self.x = m.get('X') if m.get('Y') is not None: self.y = m.get('Y') return self class DescribeQualityOverallDataResponseBodyQualityOverallData(TeaModel): def __init__( self, average: str = None, nodes: List[DescribeQualityOverallDataResponseBodyQualityOverallDataNodes] = None, type: str = None, ): self.average = average self.nodes = nodes self.type = type def validate(self): if self.nodes: for k in self.nodes: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.average is not None: result['Average'] = self.average result['Nodes'] = [] if self.nodes is not None: for k in self.nodes: result['Nodes'].append(k.to_map() if k else None) if self.type is not None: result['Type'] = self.type return result def from_map(self, m: dict = None): m = m or dict() if m.get('Average') is not None: self.average = m.get('Average') self.nodes = [] if m.get('Nodes') is not None: for k in m.get('Nodes'): temp_model = DescribeQualityOverallDataResponseBodyQualityOverallDataNodes() self.nodes.append(temp_model.from_map(k)) if m.get('Type') is not None: self.type = m.get('Type') return self class DescribeQualityOverallDataResponseBody(TeaModel): def __init__( self, quality_overall_data: List[DescribeQualityOverallDataResponseBodyQualityOverallData] = None, request_id: str = None, ): self.quality_overall_data = quality_overall_data self.request_id = request_id def validate(self): if self.quality_overall_data: for k in self.quality_overall_data: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['QualityOverallData'] = [] if self.quality_overall_data is not None: for k in self.quality_overall_data: result['QualityOverallData'].append(k.to_map() if k else None) if self.request_id is not None: result['RequestId'] = self.request_id return result def from_map(self, m: dict = None): m = m or dict() self.quality_overall_data = [] if m.get('QualityOverallData') is not None: for k in m.get('QualityOverallData'): temp_model = DescribeQualityOverallDataResponseBodyQualityOverallData() self.quality_overall_data.append(temp_model.from_map(k)) if m.get('RequestId') is not None: self.request_id = m.get('RequestId') return self class DescribeQualityOverallDataResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeQualityOverallDataResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeQualityOverallDataResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeUsageAreaDistributionStatDataRequest(TeaModel): def __init__( self, app_id: str = None, end_date: str = None, parent_area: str = None, start_date: str = None, ): self.app_id = app_id self.end_date = end_date self.parent_area = parent_area self.start_date = start_date def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.end_date is not None: result['EndDate'] = self.end_date if self.parent_area is not None: result['ParentArea'] = self.parent_area if self.start_date is not None: result['StartDate'] = self.start_date return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('EndDate') is not None: self.end_date = m.get('EndDate') if m.get('ParentArea') is not None: self.parent_area = m.get('ParentArea') if m.get('StartDate') is not None: self.start_date = m.get('StartDate') return self class DescribeUsageAreaDistributionStatDataResponseBodyUsageAreaStatList(TeaModel): def __init__( self, audio_call_duration: int = None, name: str = None, total_call_duration: int = None, video_call_duration: int = None, ): self.audio_call_duration = audio_call_duration self.name = name self.total_call_duration = total_call_duration self.video_call_duration = video_call_duration def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.audio_call_duration is not None: result['AudioCallDuration'] = self.audio_call_duration if self.name is not None: result['Name'] = self.name if self.total_call_duration is not None: result['TotalCallDuration'] = self.total_call_duration if self.video_call_duration is not None: result['VideoCallDuration'] = self.video_call_duration return result def from_map(self, m: dict = None): m = m or dict() if m.get('AudioCallDuration') is not None: self.audio_call_duration = m.get('AudioCallDuration') if m.get('Name') is not None: self.name = m.get('Name') if m.get('TotalCallDuration') is not None: self.total_call_duration = m.get('TotalCallDuration') if m.get('VideoCallDuration') is not None: self.video_call_duration = m.get('VideoCallDuration') return self class DescribeUsageAreaDistributionStatDataResponseBody(TeaModel): def __init__( self, request_id: str = None, usage_area_stat_list: List[DescribeUsageAreaDistributionStatDataResponseBodyUsageAreaStatList] = None, ): self.request_id = request_id self.usage_area_stat_list = usage_area_stat_list def validate(self): if self.usage_area_stat_list: for k in self.usage_area_stat_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.request_id is not None: result['RequestId'] = self.request_id result['UsageAreaStatList'] = [] if self.usage_area_stat_list is not None: for k in self.usage_area_stat_list: result['UsageAreaStatList'].append(k.to_map() if k else None) return result def from_map(self, m: dict = None): m = m or dict() if m.get('RequestId') is not None: self.request_id = m.get('RequestId') self.usage_area_stat_list = [] if m.get('UsageAreaStatList') is not None: for k in m.get('UsageAreaStatList'): temp_model = DescribeUsageAreaDistributionStatDataResponseBodyUsageAreaStatList() self.usage_area_stat_list.append(temp_model.from_map(k)) return self class DescribeUsageAreaDistributionStatDataResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeUsageAreaDistributionStatDataResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeUsageAreaDistributionStatDataResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeUsageDistributionStatDataRequest(TeaModel): def __init__( self, app_id: str = None, end_date: int = None, start_date: int = None, stat_dim: str = None, ): self.app_id = app_id self.end_date = end_date self.start_date = start_date self.stat_dim = stat_dim def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.end_date is not None: result['EndDate'] = self.end_date if self.start_date is not None: result['StartDate'] = self.start_date if self.stat_dim is not None: result['StatDim'] = self.stat_dim return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('EndDate') is not None: self.end_date = m.get('EndDate') if m.get('StartDate') is not None: self.start_date = m.get('StartDate') if m.get('StatDim') is not None: self.stat_dim = m.get('StatDim') return self class DescribeUsageDistributionStatDataResponseBodyUsageStatList(TeaModel): def __init__( self, audio_call_duration: int = None, call_duration_ratio: str = None, name: str = None, total_call_duration: int = None, video_call_duration: int = None, ): self.audio_call_duration = audio_call_duration self.call_duration_ratio = call_duration_ratio self.name = name self.total_call_duration = total_call_duration self.video_call_duration = video_call_duration def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.audio_call_duration is not None: result['AudioCallDuration'] = self.audio_call_duration if self.call_duration_ratio is not None: result['CallDurationRatio'] = self.call_duration_ratio if self.name is not None: result['Name'] = self.name if self.total_call_duration is not None: result['TotalCallDuration'] = self.total_call_duration if self.video_call_duration is not None: result['VideoCallDuration'] = self.video_call_duration return result def from_map(self, m: dict = None): m = m or dict() if m.get('AudioCallDuration') is not None: self.audio_call_duration = m.get('AudioCallDuration') if m.get('CallDurationRatio') is not None: self.call_duration_ratio = m.get('CallDurationRatio') if m.get('Name') is not None: self.name = m.get('Name') if m.get('TotalCallDuration') is not None: self.total_call_duration = m.get('TotalCallDuration') if m.get('VideoCallDuration') is not None: self.video_call_duration = m.get('VideoCallDuration') return self class DescribeUsageDistributionStatDataResponseBody(TeaModel): def __init__( self, request_id: str = None, usage_stat_list: List[DescribeUsageDistributionStatDataResponseBodyUsageStatList] = None, ): self.request_id = request_id self.usage_stat_list = usage_stat_list def validate(self): if self.usage_stat_list: for k in self.usage_stat_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.request_id is not None: result['RequestId'] = self.request_id result['UsageStatList'] = [] if self.usage_stat_list is not None: for k in self.usage_stat_list: result['UsageStatList'].append(k.to_map() if k else None) return result def from_map(self, m: dict = None): m = m or dict() if m.get('RequestId') is not None: self.request_id = m.get('RequestId') self.usage_stat_list = [] if m.get('UsageStatList') is not None: for k in m.get('UsageStatList'): temp_model = DescribeUsageDistributionStatDataResponseBodyUsageStatList() self.usage_stat_list.append(temp_model.from_map(k)) return self class DescribeUsageDistributionStatDataResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeUsageDistributionStatDataResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeUsageDistributionStatDataResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeUsageOsSdkVersionDistributionStatDataRequest(TeaModel): def __init__( self, app_id: str = None, end_date: int = None, start_date: int = None, ): self.app_id = app_id self.end_date = end_date self.start_date = start_date def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.end_date is not None: result['EndDate'] = self.end_date if self.start_date is not None: result['StartDate'] = self.start_date return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('EndDate') is not None: self.end_date = m.get('EndDate') if m.get('StartDate') is not None: self.start_date = m.get('StartDate') return self class DescribeUsageOsSdkVersionDistributionStatDataResponseBodyUsageOsSdkVersionStatList(TeaModel): def __init__( self, audio_call_duration: int = None, call_duration_ratio: str = None, name: str = None, os: str = None, total_call_duration: int = None, video_call_duration: int = None, ): self.audio_call_duration = audio_call_duration self.call_duration_ratio = call_duration_ratio self.name = name self.os = os self.total_call_duration = total_call_duration self.video_call_duration = video_call_duration def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.audio_call_duration is not None: result['AudioCallDuration'] = self.audio_call_duration if self.call_duration_ratio is not None: result['CallDurationRatio'] = self.call_duration_ratio if self.name is not None: result['Name'] = self.name if self.os is not None: result['Os'] = self.os if self.total_call_duration is not None: result['TotalCallDuration'] = self.total_call_duration if self.video_call_duration is not None: result['VideoCallDuration'] = self.video_call_duration return result def from_map(self, m: dict = None): m = m or dict() if m.get('AudioCallDuration') is not None: self.audio_call_duration = m.get('AudioCallDuration') if m.get('CallDurationRatio') is not None: self.call_duration_ratio = m.get('CallDurationRatio') if m.get('Name') is not None: self.name = m.get('Name') if m.get('Os') is not None: self.os = m.get('Os') if m.get('TotalCallDuration') is not None: self.total_call_duration = m.get('TotalCallDuration') if m.get('VideoCallDuration') is not None: self.video_call_duration = m.get('VideoCallDuration') return self class DescribeUsageOsSdkVersionDistributionStatDataResponseBody(TeaModel): def __init__( self, request_id: str = None, usage_os_sdk_version_stat_list: List[DescribeUsageOsSdkVersionDistributionStatDataResponseBodyUsageOsSdkVersionStatList] = None, ): self.request_id = request_id self.usage_os_sdk_version_stat_list = usage_os_sdk_version_stat_list def validate(self): if self.usage_os_sdk_version_stat_list: for k in self.usage_os_sdk_version_stat_list: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.request_id is not None: result['RequestId'] = self.request_id result['UsageOsSdkVersionStatList'] = [] if self.usage_os_sdk_version_stat_list is not None: for k in self.usage_os_sdk_version_stat_list: result['UsageOsSdkVersionStatList'].append(k.to_map() if k else None) return result def from_map(self, m: dict = None): m = m or dict() if m.get('RequestId') is not None: self.request_id = m.get('RequestId') self.usage_os_sdk_version_stat_list = [] if m.get('UsageOsSdkVersionStatList') is not None: for k in m.get('UsageOsSdkVersionStatList'): temp_model = DescribeUsageOsSdkVersionDistributionStatDataResponseBodyUsageOsSdkVersionStatList() self.usage_os_sdk_version_stat_list.append(temp_model.from_map(k)) return self class DescribeUsageOsSdkVersionDistributionStatDataResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeUsageOsSdkVersionDistributionStatDataResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeUsageOsSdkVersionDistributionStatDataResponseBody() self.body = temp_model.from_map(m['body']) return self class DescribeUsageOverallDataRequest(TeaModel): def __init__( self, app_id: str = None, end_date: int = None, start_date: int = None, types: str = None, ): self.app_id = app_id self.end_date = end_date self.start_date = start_date self.types = types def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.app_id is not None: result['AppId'] = self.app_id if self.end_date is not None: result['EndDate'] = self.end_date if self.start_date is not None: result['StartDate'] = self.start_date if self.types is not None: result['Types'] = self.types return result def from_map(self, m: dict = None): m = m or dict() if m.get('AppId') is not None: self.app_id = m.get('AppId') if m.get('EndDate') is not None: self.end_date = m.get('EndDate') if m.get('StartDate') is not None: self.start_date = m.get('StartDate') if m.get('Types') is not None: self.types = m.get('Types') return self class DescribeUsageOverallDataResponseBodyUsageOverallDataNodes(TeaModel): def __init__( self, x: str = None, y: str = None, ): self.x = x self.y = y def validate(self): pass def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.x is not None: result['X'] = self.x if self.y is not None: result['Y'] = self.y return result def from_map(self, m: dict = None): m = m or dict() if m.get('X') is not None: self.x = m.get('X') if m.get('Y') is not None: self.y = m.get('Y') return self class DescribeUsageOverallDataResponseBodyUsageOverallData(TeaModel): def __init__( self, nodes: List[DescribeUsageOverallDataResponseBodyUsageOverallDataNodes] = None, type: str = None, ): self.nodes = nodes self.type = type def validate(self): if self.nodes: for k in self.nodes: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() result['Nodes'] = [] if self.nodes is not None: for k in self.nodes: result['Nodes'].append(k.to_map() if k else None) if self.type is not None: result['Type'] = self.type return result def from_map(self, m: dict = None): m = m or dict() self.nodes = [] if m.get('Nodes') is not None: for k in m.get('Nodes'): temp_model = DescribeUsageOverallDataResponseBodyUsageOverallDataNodes() self.nodes.append(temp_model.from_map(k)) if m.get('Type') is not None: self.type = m.get('Type') return self class DescribeUsageOverallDataResponseBody(TeaModel): def __init__( self, request_id: str = None, usage_overall_data: List[DescribeUsageOverallDataResponseBodyUsageOverallData] = None, ): self.request_id = request_id self.usage_overall_data = usage_overall_data def validate(self): if self.usage_overall_data: for k in self.usage_overall_data: if k: k.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.request_id is not None: result['RequestId'] = self.request_id result['UsageOverallData'] = [] if self.usage_overall_data is not None: for k in self.usage_overall_data: result['UsageOverallData'].append(k.to_map() if k else None) return result def from_map(self, m: dict = None): m = m or dict() if m.get('RequestId') is not None: self.request_id = m.get('RequestId') self.usage_overall_data = [] if m.get('UsageOverallData') is not None: for k in m.get('UsageOverallData'): temp_model = DescribeUsageOverallDataResponseBodyUsageOverallData() self.usage_overall_data.append(temp_model.from_map(k)) return self class DescribeUsageOverallDataResponse(TeaModel): def __init__( self, headers: Dict[str, str] = None, status_code: int = None, body: DescribeUsageOverallDataResponseBody = None, ): self.headers = headers self.status_code = status_code self.body = body def validate(self): if self.body: self.body.validate() def to_map(self): _map = super().to_map() if _map is not None: return _map result = dict() if self.headers is not None: result['headers'] = self.headers if self.status_code is not None: result['statusCode'] = self.status_code if self.body is not None: result['body'] = self.body.to_map() return result def from_map(self, m: dict = None): m = m or dict() if m.get('headers') is not None: self.headers = m.get('headers') if m.get('statusCode') is not None: self.status_code = m.get('statusCode') if m.get('body') is not None: temp_model = DescribeUsageOverallDataResponseBody() self.body = temp_model.from_map(m['body']) return self