ecapi-sdk 3.7.1__tar.gz → 3.7.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ecapi-sdk
3
- Version: 3.7.1
3
+ Version: 3.7.2
4
4
  Summary: ECAPI SDK for Python
5
5
  Author: EaseCation
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ecapi-sdk"
7
- version = "3.7.1"
7
+ version = "3.7.2"
8
8
  description = "ECAPI SDK for Python"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -732,6 +732,72 @@ class AuthAPI(_BaseApi):
732
732
  """刷新 Token"""
733
733
  return self._post(f"/auth/refresh", payload, **kwargs)
734
734
 
735
+ class CatalogAPI(_BaseApi):
736
+ def __init__(self, http: _HttpClient) -> None:
737
+ super().__init__(http)
738
+ self.sync = CatalogSyncAPI(http)
739
+
740
+ def change_product_status(self, id: Union[int, float], payload: Mapping[str, Any], **kwargs: Any) -> Any:
741
+ """商品状态流转"""
742
+ return self._post(f"/catalog/products/{quote(str(id), safe='')}/status", payload, **kwargs)
743
+
744
+ def create_product(self, payload: Mapping[str, Any], **kwargs: Any) -> Any:
745
+ """新建商品"""
746
+ return self._post(f"/catalog/products", payload, **kwargs)
747
+
748
+ def create_type(self, payload: Mapping[str, Any], **kwargs: Any) -> Any:
749
+ """新建商品类型"""
750
+ return self._post(f"/catalog/types", payload, **kwargs)
751
+
752
+ def export_by_type(self, typeId: str, **kwargs: Any) -> Any:
753
+ """按类型导出 CodeFunCore 商品配置 JSON"""
754
+ return self._get(f"/catalog/export/{quote(str(typeId), safe='')}", None, **kwargs)
755
+
756
+ def get_product_detail(self, id: Union[int, float], **kwargs: Any) -> Any:
757
+ """获取商品详情"""
758
+ return self._get(f"/catalog/products/{quote(str(id), safe='')}", None, **kwargs)
759
+
760
+ def get_suit_parts(self, id: Union[int, float], **kwargs: Any) -> Any:
761
+ """获取套装部件列表"""
762
+ return self._get(f"/catalog/products/{quote(str(id), safe='')}/parts", None, **kwargs)
763
+
764
+ def list_products(self, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
765
+ """分页查询商品列表"""
766
+ return self._get(f"/catalog/products", query, **kwargs)
767
+
768
+ def list_types(self, **kwargs: Any) -> Any:
769
+ """获取商品类型列表"""
770
+ return self._get(f"/catalog/types", None, **kwargs)
771
+
772
+ def replace_suit_parts(self, id: Union[int, float], payload: Mapping[str, Any], **kwargs: Any) -> Any:
773
+ """整体替换套装部件列表"""
774
+ return self._put(f"/catalog/products/{quote(str(id), safe='')}/parts", payload, **kwargs)
775
+
776
+ def update_product(self, id: Union[int, float], payload: Mapping[str, Any], **kwargs: Any) -> Any:
777
+ """更新商品"""
778
+ return self._put(f"/catalog/products/{quote(str(id), safe='')}", payload, **kwargs)
779
+
780
+ def update_type(self, typeId: str, payload: Mapping[str, Any], **kwargs: Any) -> Any:
781
+ """更新商品类型"""
782
+ return self._put(f"/catalog/types/{quote(str(typeId), safe='')}", payload, **kwargs)
783
+
784
+ class CatalogSyncAPI(_BaseApi):
785
+ def apply(self, payload: Mapping[str, Any], **kwargs: Any) -> Any:
786
+ """把选中商品写入当前工作区商品文件"""
787
+ return self._post(f"/catalog-sync/apply", payload, **kwargs)
788
+
789
+ def conflicts(self, **kwargs: Any) -> Any:
790
+ """列出被多个分支关联的商品"""
791
+ return self._get(f"/catalog-sync/conflicts", None, **kwargs)
792
+
793
+ def diff(self, **kwargs: Any) -> Any:
794
+ """工作区商品文件与 catalog 生成结果的键级 diff"""
795
+ return self._get(f"/catalog-sync/diff", None, **kwargs)
796
+
797
+ def suggestions(self, **kwargs: Any) -> Any:
798
+ """当前工作区的商品同步建议"""
799
+ return self._get(f"/catalog-sync/suggestions", None, **kwargs)
800
+
735
801
  class GameLogAPI(_BaseApi):
736
802
  def get_disaster_events(self, **kwargs: Any) -> Any:
737
803
  """获取灾难事件字典"""
@@ -773,6 +839,10 @@ class GameLogAPI(_BaseApi):
773
839
  """分页查询游戏玩家记录"""
774
840
  return self._get(f"/game-logs/players", query, **kwargs)
775
841
 
842
+ def get_ze_statistics(self, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
843
+ """生化大逃杀大盘统计"""
844
+ return self._get(f"/game-logs/zombieescape/statistics", query, **kwargs)
845
+
776
846
  class EchoMelandAPI(_BaseApi):
777
847
  def add_favorite(self, worldId: Union[int, float], ecid: str, **kwargs: Any) -> Any:
778
848
  """添加玩家家园收藏"""
@@ -888,11 +958,208 @@ class LogOrderExchangeAPI(_BaseApi):
888
958
  """分页查询兑换日志"""
889
959
  return self._get(f"/order-exchange-logs", query, **kwargs)
890
960
 
961
+ class LotteryAPI(_BaseApi):
962
+ def cancel(self, id: str, **kwargs: Any) -> Any:
963
+ """取消不再需要的模拟"""
964
+ return self._post(f"/lottery/simulations/{quote(str(id), safe='')}/cancel", None, **kwargs)
965
+
966
+ def convert(self, payload: Mapping[str, Any], **kwargs: Any) -> Any:
967
+ """预览转换旧抽奖配置"""
968
+ return self._post(f"/lottery/convert", payload, **kwargs)
969
+
970
+ def copy(self, id: str, payload: Mapping[str, Any], **kwargs: Any) -> Any:
971
+ """复制为独立文件"""
972
+ return self._post(f"/lottery/nodes/{quote(str(id), safe='')}/copy", payload, **kwargs)
973
+
974
+ def create(self, payload: Mapping[str, Any], **kwargs: Any) -> Any:
975
+ """新建抽奖文件或目录"""
976
+ return self._post(f"/lottery/nodes", payload, **kwargs)
977
+
978
+ def document(self, id: str, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
979
+ """读取当前或历史文件原文"""
980
+ return self._get(f"/lottery/documents/{quote(str(id), safe='')}", query, **kwargs)
981
+
982
+ def download(self, payload: Mapping[str, Any], **kwargs: Any) -> Any:
983
+ """下载单文件或完整配置文件组"""
984
+ return self._post(f"/lottery/downloads", payload, **kwargs)
985
+
986
+ def history(self, id: str, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
987
+ """浏览文件保存历史"""
988
+ return self._get(f"/lottery/documents/{quote(str(id), safe='')}/revisions", query, **kwargs)
989
+
990
+ def nodes(self, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
991
+ """列出抽奖文件与目录"""
992
+ return self._get(f"/lottery/nodes", query, **kwargs)
993
+
994
+ def preview(self, payload: Mapping[str, Any], **kwargs: Any) -> Any:
995
+ """解释下一抽的候选与保底"""
996
+ return self._post(f"/lottery/preview", payload, **kwargs)
997
+
998
+ def product_options(self, payload: Mapping[str, Any], **kwargs: Any) -> Any:
999
+ """解析所选商品的抽奖发放规格"""
1000
+ return self._post(f"/lottery/product-options", payload, **kwargs)
1001
+
1002
+ def restore(self, id: str, payload: Mapping[str, Any], **kwargs: Any) -> Any:
1003
+ """把历史内容恢复成新版本"""
1004
+ return self._post(f"/lottery/documents/{quote(str(id), safe='')}/restore", payload, **kwargs)
1005
+
1006
+ def save(self, id: str, payload: Mapping[str, Any], **kwargs: Any) -> Any:
1007
+ """手动保存YAML并创建历史版本"""
1008
+ return self._put(f"/lottery/documents/{quote(str(id), safe='')}", payload, **kwargs)
1009
+
1010
+ def simulation(self, id: str, **kwargs: Any) -> Any:
1011
+ """查询抽奖模拟任务执行状态与奖励统计"""
1012
+ return self._get(f"/lottery/simulations/{quote(str(id), safe='')}", None, **kwargs)
1013
+
1014
+ def simulations(self, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
1015
+ """查看最近的模拟记录"""
1016
+ return self._get(f"/lottery/simulations", query, **kwargs)
1017
+
1018
+ def start(self, payload: Mapping[str, Any], **kwargs: Any) -> Any:
1019
+ """提交异步模拟"""
1020
+ return self._post(f"/lottery/simulations", payload, **kwargs)
1021
+
1022
+ def templates(self, **kwargs: Any) -> Any:
1023
+ """选择抽奖箱与公共池模板"""
1024
+ return self._get(f"/lottery/templates", None, **kwargs)
1025
+
1026
+ def update_node(self, id: str, payload: Mapping[str, Any], **kwargs: Any) -> Any:
1027
+ """重命名、移动或移入/恢复回收站"""
1028
+ return self._patch(f"/lottery/nodes/{quote(str(id), safe='')}", payload, **kwargs)
1029
+
1030
+ def validate(self, payload: Mapping[str, Any], **kwargs: Any) -> Any:
1031
+ """检查配置、商品引用及公共池依赖"""
1032
+ return self._post(f"/lottery/validate", payload, **kwargs)
1033
+
1034
+ class MinecraftDeveloperAPI(_BaseApi):
1035
+ def apply_self_test(self, edition: str, projectId: str, payload: Mapping[str, Any], **kwargs: Any) -> Any:
1036
+ """申请手游自测"""
1037
+ return self._post(f"/mcdev/projects/{quote(str(edition), safe='')}/{quote(str(projectId), safe='')}/self-test-applications", payload, **kwargs)
1038
+
1039
+ def cancel_self_test(self, edition: str, projectId: str, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
1040
+ """取消手游自测"""
1041
+ return self._delete(f"/mcdev/projects/{quote(str(edition), safe='')}/{quote(str(projectId), safe='')}/self-test-applications/current", query, **kwargs)
1042
+
1043
+ def connect_session(self, payload: Mapping[str, Any], **kwargs: Any) -> Any:
1044
+ """连接官方登录会话"""
1045
+ return self._put(f"/mcdev/auth/session", payload, **kwargs)
1046
+
1047
+ def disconnect_session(self, **kwargs: Any) -> Any:
1048
+ """断开 ECAPI 的网易会话"""
1049
+ return self._delete(f"/mcdev/auth/session", None, **kwargs)
1050
+
1051
+ def download_mobile_package(self, edition: str, projectId: str, **kwargs: Any) -> Any:
1052
+ """下载手游资源包"""
1053
+ return self._get(f"/mcdev/projects/{quote(str(edition), safe='')}/{quote(str(projectId), safe='')}/mobile-package", None, response_type="bytes", **kwargs)
1054
+
1055
+ def get_project(self, edition: str, projectId: str, **kwargs: Any) -> Any:
1056
+ """获取开发者项目"""
1057
+ return self._get(f"/mcdev/projects/{quote(str(edition), safe='')}/{quote(str(projectId), safe='')}", None, **kwargs)
1058
+
1059
+ def get_project_status(self, edition: str, projectId: str, **kwargs: Any) -> Any:
1060
+ """查询项目异步状态"""
1061
+ return self._get(f"/mcdev/projects/{quote(str(edition), safe='')}/{quote(str(projectId), safe='')}/status", None, **kwargs)
1062
+
1063
+ def get_review_feedback(self, edition: str, projectId: str, **kwargs: Any) -> Any:
1064
+ """查询项目审核意见"""
1065
+ return self._get(f"/mcdev/projects/{quote(str(edition), safe='')}/{quote(str(projectId), safe='')}/review-feedback", None, **kwargs)
1066
+
1067
+ def get_session(self, **kwargs: Any) -> Any:
1068
+ """查询网易账号连接状态"""
1069
+ return self._get(f"/mcdev/auth/session", None, **kwargs)
1070
+
1071
+ def list_player_feedbacks(self, edition: str, projectId: str, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
1072
+ """查询项目玩家反馈"""
1073
+ return self._get(f"/mcdev/projects/{quote(str(edition), safe='')}/{quote(str(projectId), safe='')}/player-feedbacks", query, **kwargs)
1074
+
1075
+ def list_project_orders(self, edition: str, projectId: str, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
1076
+ """查询项目订单"""
1077
+ return self._get(f"/mcdev/projects/{quote(str(edition), safe='')}/{quote(str(projectId), safe='')}/orders", query, **kwargs)
1078
+
1079
+ def list_projects(self, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
1080
+ """列出开发者项目"""
1081
+ return self._get(f"/mcdev/projects", query, **kwargs)
1082
+
1083
+ def publish_online(self, edition: str, projectId: str, payload: Mapping[str, Any], **kwargs: Any) -> Any:
1084
+ """上架审核通过项目"""
1085
+ return self._post(f"/mcdev/projects/{quote(str(edition), safe='')}/{quote(str(projectId), safe='')}/online-publications", payload, **kwargs)
1086
+
1087
+ def replace_resource_pack(self, edition: str, projectId: str, payload: Mapping[str, Any], **kwargs: Any) -> Any:
1088
+ """上传并替换资源包"""
1089
+ return self._post(f"/mcdev/projects/{quote(str(edition), safe='')}/{quote(str(projectId), safe='')}/resource-packs", payload, **kwargs)
1090
+
1091
+ def revoke_review(self, edition: str, projectId: str, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
1092
+ """撤销网易审核"""
1093
+ return self._delete(f"/mcdev/projects/{quote(str(edition), safe='')}/{quote(str(projectId), safe='')}/review-submissions/current", query, **kwargs)
1094
+
1095
+ def submit_review(self, edition: str, projectId: str, payload: Mapping[str, Any], **kwargs: Any) -> Any:
1096
+ """提交网易审核"""
1097
+ return self._post(f"/mcdev/projects/{quote(str(edition), safe='')}/{quote(str(projectId), safe='')}/review-submissions", payload, **kwargs)
1098
+
1099
+ class OSSAPI(_BaseApi):
1100
+ def get_ze_content(self, fileName: str, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
1101
+ """读取 ZE OSS 配置内容"""
1102
+ return self._get(f"/managed-objects/ze/content/{quote(str(fileName), safe='')}", query, **kwargs)
1103
+
1104
+ def get_zvs_reload_content(self, fileName: str, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
1105
+ """读取 ZVS Reload OSS 配置内容"""
1106
+ return self._get(f"/managed-objects/zvs-reload/content/{quote(str(fileName), safe='')}", query, **kwargs)
1107
+
1108
+ def list_ze(self, **kwargs: Any) -> Any:
1109
+ """列出 ZE OSS 配置"""
1110
+ return self._get(f"/managed-objects/ze", None, **kwargs)
1111
+
1112
+ def list_ze_versions(self, fileName: str, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
1113
+ """查询 ZE OSS 配置版本"""
1114
+ return self._get(f"/managed-objects/ze/versions/{quote(str(fileName), safe='')}", query, **kwargs)
1115
+
1116
+ def list_zvs_reload(self, **kwargs: Any) -> Any:
1117
+ """列出 ZVS Reload OSS 配置"""
1118
+ return self._get(f"/managed-objects/zvs-reload", None, **kwargs)
1119
+
1120
+ def list_zvs_reload_versions(self, fileName: str, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
1121
+ """查询 ZVS Reload OSS 配置版本"""
1122
+ return self._get(f"/managed-objects/zvs-reload/versions/{quote(str(fileName), safe='')}", query, **kwargs)
1123
+
1124
+ def preview_ze_sync(self, mapKey: str, **kwargs: Any) -> Any:
1125
+ """预览 bbdev Node-RED 到正式 OSS 的 ZE 同步"""
1126
+ return self._get(f"/managed-objects/ze/{quote(str(mapKey), safe='')}/sync-preview", None, **kwargs)
1127
+
1128
+ def publish_ze_from_bbdev(self, mapKey: str, payload: Mapping[str, Any], **kwargs: Any) -> Any:
1129
+ """从 bbdev Node-RED 发布 ZE 配置到正式 OSS"""
1130
+ return self._post(f"/managed-objects/ze/{quote(str(mapKey), safe='')}/publish-from-bbdev", payload, **kwargs)
1131
+
1132
+ def update_ze_content(self, fileName: str, payload: Mapping[str, Any], **kwargs: Any) -> Any:
1133
+ """更新 ZE OSS 配置内容"""
1134
+ return self._put(f"/managed-objects/ze/content/{quote(str(fileName), safe='')}", payload, **kwargs)
1135
+
1136
+ def update_zvs_reload_content(self, fileName: str, payload: Mapping[str, Any], **kwargs: Any) -> Any:
1137
+ """更新 ZVS Reload OSS 配置内容"""
1138
+ return self._put(f"/managed-objects/zvs-reload/content/{quote(str(fileName), safe='')}", payload, **kwargs)
1139
+
1140
+ class ParkourAPI(_BaseApi):
1141
+ def get_level_detail(self, levelId: Union[int, float], **kwargs: Any) -> Any:
1142
+ """获取跑酷关卡详情"""
1143
+ return self._get(f"/parkour/levels/{quote(str(levelId), safe='')}", None, **kwargs)
1144
+
1145
+ def get_level_leaderboard(self, levelId: Union[int, float], query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
1146
+ """获取跑酷关卡排行榜"""
1147
+ return self._get(f"/parkour/levels/{quote(str(levelId), safe='')}/leaderboard", query, **kwargs)
1148
+
1149
+ def get_levels(self, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
1150
+ """分页查询跑酷关卡"""
1151
+ return self._get(f"/parkour/levels", query, **kwargs)
1152
+
1153
+ def get_tracks(self, **kwargs: Any) -> Any:
1154
+ """获取跑酷赛道列表"""
1155
+ return self._get(f"/parkour/tracks", None, **kwargs)
1156
+
891
1157
  class PlayerAPI(_BaseApi):
892
1158
  def __init__(self, http: _HttpClient) -> None:
893
1159
  super().__init__(http)
894
1160
  self.entitlement = PlayerEntitlementAPI(http)
895
1161
  self.leaderboard = PlayerLeaderboardAPI(http)
1162
+ self.parkour = PlayerParkourAPI(http)
896
1163
  self.rank_score = PlayerRankScoreAPI(http)
897
1164
  self.score = PlayerScoreAPI(http)
898
1165
  self.source_account = PlayerSourceAccountAPI(http)
@@ -970,6 +1237,10 @@ class PlayerAPI(_BaseApi):
970
1237
  """分页查询玩家邀请记录"""
971
1238
  return self._get(f"/players/{quote(str(ecid), safe='')}/referrals", query, **kwargs)
972
1239
 
1240
+ def resolve(self, nickid: str, **kwargs: Any) -> Any:
1241
+ """解析举报匿名身份"""
1242
+ return self._get(f"/admin/nickname-sessions/{quote(str(nickid), safe='')}", None, **kwargs)
1243
+
973
1244
  def search(self, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
974
1245
  """查询玩家搜索命中列表"""
975
1246
  return self._get(f"/players", query, **kwargs)
@@ -988,6 +1259,19 @@ class PlayerLeaderboardAPI(_BaseApi):
988
1259
  """批量查询排行榜数据"""
989
1260
  return self._get(f"/leaderboards/scores", query, **kwargs)
990
1261
 
1262
+ class PlayerParkourAPI(_BaseApi):
1263
+ def get_recent_scores(self, ecid: str, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
1264
+ """获取玩家最近的跑酷成绩"""
1265
+ return self._get(f"/players/{quote(str(ecid), safe='')}/parkour/recent-scores", query, **kwargs)
1266
+
1267
+ def get_summary(self, ecid: str, **kwargs: Any) -> Any:
1268
+ """获取玩家跑酷总览"""
1269
+ return self._get(f"/players/{quote(str(ecid), safe='')}/parkour/summary", None, **kwargs)
1270
+
1271
+ def get_track_progress(self, ecid: str, trackKey: str, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
1272
+ """获取玩家单条赛道的逐关进度"""
1273
+ return self._get(f"/players/{quote(str(ecid), safe='')}/parkour/tracks/{quote(str(trackKey), safe='')}", query, **kwargs)
1274
+
991
1275
  class PlayerRankScoreAPI(_BaseApi):
992
1276
  def get_history(self, ecid: str, query: Optional[QueryParams] = None, **kwargs: Any) -> Any:
993
1277
  """查询玩家历史赛季段位数据"""
@@ -1391,9 +1675,14 @@ class ECAPIClient:
1391
1675
  self.admin = AdminAPI(self._http)
1392
1676
  self.audit = AuditAPI(self._http)
1393
1677
  self.auth = AuthAPI(self._http)
1678
+ self.catalog = CatalogAPI(self._http)
1394
1679
  self.game_log = GameLogAPI(self._http)
1395
1680
  self.homeland = EchoMelandAPI(self._http)
1396
1681
  self.log = LogAPI(self._http)
1682
+ self.lottery = LotteryAPI(self._http)
1683
+ self.minecraft_developer = MinecraftDeveloperAPI(self._http)
1684
+ self.oss = OSSAPI(self._http)
1685
+ self.parkour = ParkourAPI(self._http)
1397
1686
  self.pit2 = PIT2API(self._http)
1398
1687
  self.player = PlayerAPI(self._http)
1399
1688
  self.replay = ReplayAPI(self._http)
@@ -475,6 +475,9 @@ class AuditAPIQueryAccessLogsQuery(TypedDict, total=False):
475
475
  requestId: QueryValue
476
476
  method: QueryValue
477
477
  path: QueryValue
478
+ apiKeyId: QueryValue
479
+ authType: QueryValue
480
+ operatorName: QueryValue
478
481
  statusCode: QueryValue
479
482
  statusClass: QueryValue
480
483
  minDurationMs: QueryValue
@@ -486,6 +489,9 @@ class AuditAPIQueryAccessLogStatsQuery(TypedDict, total=False):
486
489
  endTime: QueryValue
487
490
  method: QueryValue
488
491
  path: QueryValue
492
+ apiKeyId: QueryValue
493
+ authType: QueryValue
494
+ operatorName: QueryValue
489
495
  statusCode: QueryValue
490
496
  statusClass: QueryValue
491
497
  slowThresholdMs: QueryValue
@@ -588,6 +594,74 @@ class AuthAPIRefreshTokenBodyRequired(TypedDict):
588
594
  class AuthAPIRefreshTokenBody(AuthAPIRefreshTokenBodyRequired, total=False):
589
595
  pass
590
596
 
597
+ class CatalogAPIListProductsQuery(TypedDict, total=False):
598
+ current: QueryValue
599
+ pageSize: QueryValue
600
+ search: QueryValue
601
+ author: QueryValue
602
+ typeId: QueryValue
603
+ category: QueryValue
604
+ status: QueryValue
605
+ rarity: QueryValue
606
+
607
+ class CatalogAPICreateProductBodyRequired(TypedDict):
608
+ typeId: str
609
+
610
+ class CatalogAPICreateProductBody(CatalogAPICreateProductBodyRequired, total=False):
611
+ nameRaw: str
612
+ idItem: str
613
+ part: str
614
+ rarity: str
615
+ acquireMethod: str
616
+ acquireConfig: str
617
+ remark: str
618
+
619
+ class CatalogAPIUpdateProductBody(TypedDict, total=False):
620
+ typeId: str
621
+ idItem: str
622
+ nameRaw: str
623
+ part: str
624
+ rarity: str
625
+ acquireMethod: str
626
+ acquireConfig: str
627
+ remark: str
628
+ components: Sequence[Any]
629
+
630
+ class CatalogAPIReplaceSuitPartsBodyRequired(TypedDict):
631
+ parts: Sequence[Any]
632
+
633
+ class CatalogAPIReplaceSuitPartsBody(CatalogAPIReplaceSuitPartsBodyRequired, total=False):
634
+ pass
635
+
636
+ class CatalogAPIChangeProductStatusBodyRequired(TypedDict):
637
+ status: str
638
+
639
+ class CatalogAPIChangeProductStatusBody(CatalogAPIChangeProductStatusBodyRequired, total=False):
640
+ pass
641
+
642
+ class CatalogAPICreateTypeBodyRequired(TypedDict):
643
+ typeId: str
644
+ category: str
645
+ name: str
646
+ components: Sequence[Any]
647
+
648
+ class CatalogAPICreateTypeBody(CatalogAPICreateTypeBodyRequired, total=False):
649
+ icon: str
650
+ active: bool
651
+
652
+ class CatalogAPIUpdateTypeBody(TypedDict, total=False):
653
+ category: str
654
+ name: str
655
+ icon: Optional[str]
656
+ components: Sequence[Any]
657
+ active: bool
658
+
659
+ class CatalogSyncAPIApplyBodyRequired(TypedDict):
660
+ keys: Sequence[Any]
661
+
662
+ class CatalogSyncAPIApplyBody(CatalogSyncAPIApplyBodyRequired, total=False):
663
+ dryRun: bool
664
+
591
665
  class GameLogAPIGetDisasterMatchesQueryRequired(TypedDict):
592
666
  ecid: QueryValue
593
667
 
@@ -628,6 +702,13 @@ class GameLogAPIGetPlayersQuery(GameLogAPIGetPlayersQueryRequired, total=False):
628
702
  current: QueryValue
629
703
  pageSize: QueryValue
630
704
 
705
+ class GameLogAPIGetZeStatisticsQueryRequired(TypedDict):
706
+ startTime: QueryValue
707
+ endTime: QueryValue
708
+
709
+ class GameLogAPIGetZeStatisticsQuery(GameLogAPIGetZeStatisticsQueryRequired, total=False):
710
+ pass
711
+
631
712
  class EchoMelandAPIUpdateEnderChestBodyRequired(TypedDict):
632
713
  nbtBase64: Optional[str]
633
714
 
@@ -761,6 +842,206 @@ class LogOrderExchangeAPIListQuery(LogOrderExchangeAPIListQueryRequired, total=F
761
842
  current: QueryValue
762
843
  pageSize: QueryValue
763
844
 
845
+ class LotteryAPIConvertBody(TypedDict, total=False):
846
+ documentId: str
847
+ revision: int
848
+ yaml: str
849
+ scenario: Mapping[str, Any]
850
+
851
+ class LotteryAPIDocumentQuery(TypedDict, total=False):
852
+ revision: QueryValue
853
+
854
+ class LotteryAPISaveBodyRequired(TypedDict):
855
+ baseRevision: int
856
+ yaml: str
857
+
858
+ class LotteryAPISaveBody(LotteryAPISaveBodyRequired, total=False):
859
+ pass
860
+
861
+ class LotteryAPIRestoreBodyRequired(TypedDict):
862
+ baseRevision: int
863
+ fromRevision: int
864
+
865
+ class LotteryAPIRestoreBody(LotteryAPIRestoreBodyRequired, total=False):
866
+ pass
867
+
868
+ class LotteryAPIHistoryQuery(TypedDict, total=False):
869
+ before: QueryValue
870
+
871
+ class LotteryAPIDownloadBody(TypedDict, total=False):
872
+ documentId: str
873
+ revision: int
874
+ yaml: str
875
+ scenario: Mapping[str, Any]
876
+ format: str
877
+ simulationId: str
878
+
879
+ class LotteryAPINodesQuery(TypedDict, total=False):
880
+ includeDeleted: QueryValue
881
+
882
+ class LotteryAPICreateBodyRequired(TypedDict):
883
+ kind: str
884
+ name: str
885
+
886
+ class LotteryAPICreateBody(LotteryAPICreateBodyRequired, total=False):
887
+ parentId: Optional[str]
888
+ yaml: str
889
+
890
+ class LotteryAPIUpdateNodeBodyRequired(TypedDict):
891
+ baseVersion: int
892
+
893
+ class LotteryAPIUpdateNodeBody(LotteryAPIUpdateNodeBodyRequired, total=False):
894
+ name: str
895
+ parentId: Optional[str]
896
+ deleted: bool
897
+
898
+ class LotteryAPICopyBodyRequired(TypedDict):
899
+ name: str
900
+
901
+ class LotteryAPICopyBody(LotteryAPICopyBodyRequired, total=False):
902
+ parentId: Optional[str]
903
+
904
+ class LotteryAPIPreviewBody(TypedDict, total=False):
905
+ documentId: str
906
+ revision: int
907
+ yaml: str
908
+ scenario: Mapping[str, Any]
909
+
910
+ class LotteryAPIProductOptionsBodyRequired(TypedDict):
911
+ productIds: Sequence[Any]
912
+
913
+ class LotteryAPIProductOptionsBody(LotteryAPIProductOptionsBodyRequired, total=False):
914
+ pass
915
+
916
+ class LotteryAPISimulationsQuery(TypedDict, total=False):
917
+ documentId: QueryValue
918
+
919
+ class LotteryAPIStartBodyRequired(TypedDict):
920
+ requestId: str
921
+ players: int
922
+ drawsPerPlayer: int
923
+ seed: str
924
+
925
+ class LotteryAPIStartBody(LotteryAPIStartBodyRequired, total=False):
926
+ documentId: str
927
+ revision: int
928
+ yaml: str
929
+ scenario: Mapping[str, Any]
930
+
931
+ class LotteryAPIValidateBody(TypedDict, total=False):
932
+ documentId: str
933
+ revision: int
934
+ yaml: str
935
+ scenario: Mapping[str, Any]
936
+
937
+ class MinecraftDeveloperAPIConnectSessionBodyRequired(TypedDict):
938
+ userAgent: str
939
+
940
+ class MinecraftDeveloperAPIConnectSessionBody(MinecraftDeveloperAPIConnectSessionBodyRequired, total=False):
941
+ cookies: Sequence[Any]
942
+ cookieHeader: str
943
+
944
+ class MinecraftDeveloperAPIListProjectsQueryRequired(TypedDict):
945
+ edition: QueryValue
946
+
947
+ class MinecraftDeveloperAPIListProjectsQuery(MinecraftDeveloperAPIListProjectsQueryRequired, total=False):
948
+ current: QueryValue
949
+ pageSize: QueryValue
950
+
951
+ class MinecraftDeveloperAPIPublishOnlineBodyRequired(TypedDict):
952
+ confirmQueue: bool
953
+
954
+ class MinecraftDeveloperAPIPublishOnlineBody(MinecraftDeveloperAPIPublishOnlineBodyRequired, total=False):
955
+ pass
956
+
957
+ class MinecraftDeveloperAPIListProjectOrdersQueryRequired(TypedDict):
958
+ beginTime: QueryValue
959
+ endTime: QueryValue
960
+
961
+ class MinecraftDeveloperAPIListProjectOrdersQuery(MinecraftDeveloperAPIListProjectOrdersQueryRequired, total=False):
962
+ nickname: QueryValue
963
+
964
+ class MinecraftDeveloperAPIListPlayerFeedbacksQueryRequired(TypedDict):
965
+ beginTime: QueryValue
966
+ endTime: QueryValue
967
+
968
+ class MinecraftDeveloperAPIListPlayerFeedbacksQuery(MinecraftDeveloperAPIListPlayerFeedbacksQueryRequired, total=False):
969
+ current: QueryValue
970
+ pageSize: QueryValue
971
+
972
+ class MinecraftDeveloperAPIReplaceResourcePackBodyRequired(TypedDict):
973
+ package: str
974
+
975
+ class MinecraftDeveloperAPIReplaceResourcePackBody(MinecraftDeveloperAPIReplaceResourcePackBodyRequired, total=False):
976
+ confirmQueue: bool
977
+
978
+ class MinecraftDeveloperAPISubmitReviewBodyRequired(TypedDict):
979
+ confirmQueue: bool
980
+
981
+ class MinecraftDeveloperAPISubmitReviewBody(MinecraftDeveloperAPISubmitReviewBodyRequired, total=False):
982
+ pass
983
+
984
+ class MinecraftDeveloperAPIRevokeReviewQueryRequired(TypedDict):
985
+ confirmQueue: QueryValue
986
+
987
+ class MinecraftDeveloperAPIRevokeReviewQuery(MinecraftDeveloperAPIRevokeReviewQueryRequired, total=False):
988
+ pass
989
+
990
+ class MinecraftDeveloperAPIApplySelfTestBodyRequired(TypedDict):
991
+ confirmQueue: bool
992
+
993
+ class MinecraftDeveloperAPIApplySelfTestBody(MinecraftDeveloperAPIApplySelfTestBodyRequired, total=False):
994
+ pass
995
+
996
+ class MinecraftDeveloperAPICancelSelfTestQueryRequired(TypedDict):
997
+ confirmQueue: QueryValue
998
+
999
+ class MinecraftDeveloperAPICancelSelfTestQuery(MinecraftDeveloperAPICancelSelfTestQueryRequired, total=False):
1000
+ pass
1001
+
1002
+ class OSSAPIGetZeContentQuery(TypedDict, total=False):
1003
+ versionId: QueryValue
1004
+
1005
+ class OSSAPIUpdateZeContentBodyRequired(TypedDict):
1006
+ content: str
1007
+ expectedVersionId: str
1008
+
1009
+ class OSSAPIUpdateZeContentBody(OSSAPIUpdateZeContentBodyRequired, total=False):
1010
+ pass
1011
+
1012
+ class OSSAPIListZeVersionsQuery(TypedDict, total=False):
1013
+ limit: QueryValue
1014
+
1015
+ class OSSAPIPublishZeFromBbdevBodyRequired(TypedDict):
1016
+ expectedVersionId: str
1017
+ expectedSourceContentHash: str
1018
+
1019
+ class OSSAPIPublishZeFromBbdevBody(OSSAPIPublishZeFromBbdevBodyRequired, total=False):
1020
+ pass
1021
+
1022
+ class OSSAPIGetZvsReloadContentQuery(TypedDict, total=False):
1023
+ versionId: QueryValue
1024
+
1025
+ class OSSAPIUpdateZvsReloadContentBodyRequired(TypedDict):
1026
+ content: str
1027
+ expectedVersionId: str
1028
+
1029
+ class OSSAPIUpdateZvsReloadContentBody(OSSAPIUpdateZvsReloadContentBodyRequired, total=False):
1030
+ pass
1031
+
1032
+ class OSSAPIListZvsReloadVersionsQuery(TypedDict, total=False):
1033
+ limit: QueryValue
1034
+
1035
+ class ParkourAPIGetLevelsQuery(TypedDict, total=False):
1036
+ state: QueryValue
1037
+ authorEcid: QueryValue
1038
+ current: QueryValue
1039
+ pageSize: QueryValue
1040
+
1041
+ class ParkourAPIGetLevelLeaderboardQuery(TypedDict, total=False):
1042
+ limit: QueryValue
1043
+ includeAnomalous: QueryValue
1044
+
764
1045
  class PlayerAPISearchQueryRequired(TypedDict):
765
1046
  search: QueryValue
766
1047
 
@@ -848,6 +1129,13 @@ class PlayerLeaderboardAPIGetRankQueryRequired(TypedDict):
848
1129
  class PlayerLeaderboardAPIGetRankQuery(PlayerLeaderboardAPIGetRankQueryRequired, total=False):
849
1130
  sortOrder: QueryValue
850
1131
 
1132
+ class PlayerParkourAPIGetRecentScoresQuery(TypedDict, total=False):
1133
+ limit: QueryValue
1134
+
1135
+ class PlayerParkourAPIGetTrackProgressQuery(TypedDict, total=False):
1136
+ current: QueryValue
1137
+ pageSize: QueryValue
1138
+
851
1139
  class PlayerRankScoreAPIGetScoreQuery(TypedDict, total=False):
852
1140
  game: QueryValue
853
1141
  season: QueryValue
@@ -1376,6 +1664,26 @@ class AuthAPI:
1376
1664
  def login_by_oauth2(self, payload: AuthAPILoginByOauth2Body, **kwargs: Any) -> Any: ...
1377
1665
  def refresh_token(self, payload: AuthAPIRefreshTokenBody, **kwargs: Any) -> Any: ...
1378
1666
 
1667
+ class CatalogAPI:
1668
+ sync: CatalogSyncAPI
1669
+ def change_product_status(self, id: Union[int, float], payload: CatalogAPIChangeProductStatusBody, **kwargs: Any) -> Any: ...
1670
+ def create_product(self, payload: CatalogAPICreateProductBody, **kwargs: Any) -> Any: ...
1671
+ def create_type(self, payload: CatalogAPICreateTypeBody, **kwargs: Any) -> Any: ...
1672
+ def export_by_type(self, typeId: str, **kwargs: Any) -> Any: ...
1673
+ def get_product_detail(self, id: Union[int, float], **kwargs: Any) -> Any: ...
1674
+ def get_suit_parts(self, id: Union[int, float], **kwargs: Any) -> Any: ...
1675
+ def list_products(self, query: Optional[CatalogAPIListProductsQuery] = ..., **kwargs: Any) -> Any: ...
1676
+ def list_types(self, **kwargs: Any) -> Any: ...
1677
+ def replace_suit_parts(self, id: Union[int, float], payload: CatalogAPIReplaceSuitPartsBody, **kwargs: Any) -> Any: ...
1678
+ def update_product(self, id: Union[int, float], payload: CatalogAPIUpdateProductBody, **kwargs: Any) -> Any: ...
1679
+ def update_type(self, typeId: str, payload: CatalogAPIUpdateTypeBody, **kwargs: Any) -> Any: ...
1680
+
1681
+ class CatalogSyncAPI:
1682
+ def apply(self, payload: CatalogSyncAPIApplyBody, **kwargs: Any) -> Any: ...
1683
+ def conflicts(self, **kwargs: Any) -> Any: ...
1684
+ def diff(self, **kwargs: Any) -> Any: ...
1685
+ def suggestions(self, **kwargs: Any) -> Any: ...
1686
+
1379
1687
  class GameLogAPI:
1380
1688
  def get_disaster_events(self, **kwargs: Any) -> Any: ...
1381
1689
  def get_disaster_match_details(self, stageId: Union[int, float], **kwargs: Any) -> Any: ...
@@ -1387,6 +1695,7 @@ class GameLogAPI:
1387
1695
  def get_pit_session_details(self, id: str, **kwargs: Any) -> Any: ...
1388
1696
  def get_pit_sessions(self, query: Optional[GameLogAPIGetPitSessionsQuery] = ..., **kwargs: Any) -> Any: ...
1389
1697
  def get_players(self, query: GameLogAPIGetPlayersQuery, **kwargs: Any) -> Any: ...
1698
+ def get_ze_statistics(self, query: GameLogAPIGetZeStatisticsQuery, **kwargs: Any) -> Any: ...
1390
1699
 
1391
1700
  class EchoMelandAPI:
1392
1701
  def add_favorite(self, worldId: Union[int, float], ecid: str, **kwargs: Any) -> Any: ...
@@ -1427,9 +1736,66 @@ class LogOrderDownloadTaskAPI:
1427
1736
  class LogOrderExchangeAPI:
1428
1737
  def list(self, query: LogOrderExchangeAPIListQuery, **kwargs: Any) -> Any: ...
1429
1738
 
1739
+ class LotteryAPI:
1740
+ def cancel(self, id: str, **kwargs: Any) -> Any: ...
1741
+ def convert(self, payload: LotteryAPIConvertBody, **kwargs: Any) -> Any: ...
1742
+ def copy(self, id: str, payload: LotteryAPICopyBody, **kwargs: Any) -> Any: ...
1743
+ def create(self, payload: LotteryAPICreateBody, **kwargs: Any) -> Any: ...
1744
+ def document(self, id: str, query: Optional[LotteryAPIDocumentQuery] = ..., **kwargs: Any) -> Any: ...
1745
+ def download(self, payload: LotteryAPIDownloadBody, **kwargs: Any) -> Any: ...
1746
+ def history(self, id: str, query: Optional[LotteryAPIHistoryQuery] = ..., **kwargs: Any) -> Any: ...
1747
+ def nodes(self, query: Optional[LotteryAPINodesQuery] = ..., **kwargs: Any) -> Any: ...
1748
+ def preview(self, payload: LotteryAPIPreviewBody, **kwargs: Any) -> Any: ...
1749
+ def product_options(self, payload: LotteryAPIProductOptionsBody, **kwargs: Any) -> Any: ...
1750
+ def restore(self, id: str, payload: LotteryAPIRestoreBody, **kwargs: Any) -> Any: ...
1751
+ def save(self, id: str, payload: LotteryAPISaveBody, **kwargs: Any) -> Any: ...
1752
+ def simulation(self, id: str, **kwargs: Any) -> Any: ...
1753
+ def simulations(self, query: Optional[LotteryAPISimulationsQuery] = ..., **kwargs: Any) -> Any: ...
1754
+ def start(self, payload: LotteryAPIStartBody, **kwargs: Any) -> Any: ...
1755
+ def templates(self, **kwargs: Any) -> Any: ...
1756
+ def update_node(self, id: str, payload: LotteryAPIUpdateNodeBody, **kwargs: Any) -> Any: ...
1757
+ def validate(self, payload: LotteryAPIValidateBody, **kwargs: Any) -> Any: ...
1758
+
1759
+ class MinecraftDeveloperAPI:
1760
+ def apply_self_test(self, edition: str, projectId: str, payload: MinecraftDeveloperAPIApplySelfTestBody, **kwargs: Any) -> Any: ...
1761
+ def cancel_self_test(self, edition: str, projectId: str, query: MinecraftDeveloperAPICancelSelfTestQuery, **kwargs: Any) -> Any: ...
1762
+ def connect_session(self, payload: MinecraftDeveloperAPIConnectSessionBody, **kwargs: Any) -> Any: ...
1763
+ def disconnect_session(self, **kwargs: Any) -> Any: ...
1764
+ def download_mobile_package(self, edition: str, projectId: str, **kwargs: Any) -> Any: ...
1765
+ def get_project(self, edition: str, projectId: str, **kwargs: Any) -> Any: ...
1766
+ def get_project_status(self, edition: str, projectId: str, **kwargs: Any) -> Any: ...
1767
+ def get_review_feedback(self, edition: str, projectId: str, **kwargs: Any) -> Any: ...
1768
+ def get_session(self, **kwargs: Any) -> Any: ...
1769
+ def list_player_feedbacks(self, edition: str, projectId: str, query: MinecraftDeveloperAPIListPlayerFeedbacksQuery, **kwargs: Any) -> Any: ...
1770
+ def list_project_orders(self, edition: str, projectId: str, query: MinecraftDeveloperAPIListProjectOrdersQuery, **kwargs: Any) -> Any: ...
1771
+ def list_projects(self, query: MinecraftDeveloperAPIListProjectsQuery, **kwargs: Any) -> Any: ...
1772
+ def publish_online(self, edition: str, projectId: str, payload: MinecraftDeveloperAPIPublishOnlineBody, **kwargs: Any) -> Any: ...
1773
+ def replace_resource_pack(self, edition: str, projectId: str, payload: MinecraftDeveloperAPIReplaceResourcePackBody, **kwargs: Any) -> Any: ...
1774
+ def revoke_review(self, edition: str, projectId: str, query: MinecraftDeveloperAPIRevokeReviewQuery, **kwargs: Any) -> Any: ...
1775
+ def submit_review(self, edition: str, projectId: str, payload: MinecraftDeveloperAPISubmitReviewBody, **kwargs: Any) -> Any: ...
1776
+
1777
+ class OSSAPI:
1778
+ def get_ze_content(self, fileName: str, query: Optional[OSSAPIGetZeContentQuery] = ..., **kwargs: Any) -> Any: ...
1779
+ def get_zvs_reload_content(self, fileName: str, query: Optional[OSSAPIGetZvsReloadContentQuery] = ..., **kwargs: Any) -> Any: ...
1780
+ def list_ze(self, **kwargs: Any) -> Any: ...
1781
+ def list_ze_versions(self, fileName: str, query: Optional[OSSAPIListZeVersionsQuery] = ..., **kwargs: Any) -> Any: ...
1782
+ def list_zvs_reload(self, **kwargs: Any) -> Any: ...
1783
+ def list_zvs_reload_versions(self, fileName: str, query: Optional[OSSAPIListZvsReloadVersionsQuery] = ..., **kwargs: Any) -> Any: ...
1784
+ def preview_ze_sync(self, mapKey: str, **kwargs: Any) -> Any: ...
1785
+ def publish_ze_from_bbdev(self, mapKey: str, payload: OSSAPIPublishZeFromBbdevBody, **kwargs: Any) -> Any: ...
1786
+ def update_ze_content(self, fileName: str, payload: OSSAPIUpdateZeContentBody, **kwargs: Any) -> Any: ...
1787
+ def update_zvs_reload_content(self, fileName: str, payload: OSSAPIUpdateZvsReloadContentBody, **kwargs: Any) -> Any: ...
1788
+
1789
+ class ParkourAPI:
1790
+ def get_level_detail(self, levelId: Union[int, float], **kwargs: Any) -> Any: ...
1791
+ def get_level_leaderboard(self, levelId: Union[int, float], query: Optional[ParkourAPIGetLevelLeaderboardQuery] = ..., **kwargs: Any) -> Any: ...
1792
+ def get_levels(self, query: Optional[ParkourAPIGetLevelsQuery] = ..., **kwargs: Any) -> Any: ...
1793
+ def get_tracks(self, **kwargs: Any) -> Any: ...
1794
+
1430
1795
  class PlayerAPI:
1431
1796
  entitlement: PlayerEntitlementAPI
1432
1797
  leaderboard: PlayerLeaderboardAPI
1798
+ parkour: PlayerParkourAPI
1433
1799
  rank_score: PlayerRankScoreAPI
1434
1800
  score: PlayerScoreAPI
1435
1801
  source_account: PlayerSourceAccountAPI
@@ -1452,6 +1818,7 @@ class PlayerAPI:
1452
1818
  def get_wallet_lots(self, ecid: str, query: Optional[PlayerAPIGetWalletLotsQuery] = ..., **kwargs: Any) -> Any: ...
1453
1819
  def list_friend_relations(self, ecid: str, query: Optional[PlayerAPIListFriendRelationsQuery] = ..., **kwargs: Any) -> Any: ...
1454
1820
  def list_referrals(self, ecid: str, query: Optional[PlayerAPIListReferralsQuery] = ..., **kwargs: Any) -> Any: ...
1821
+ def resolve(self, nickid: str, **kwargs: Any) -> Any: ...
1455
1822
  def search(self, query: PlayerAPISearchQuery, **kwargs: Any) -> Any: ...
1456
1823
 
1457
1824
  class PlayerEntitlementAPI:
@@ -1461,6 +1828,11 @@ class PlayerLeaderboardAPI:
1461
1828
  def get_rank(self, ecid: str, query: PlayerLeaderboardAPIGetRankQuery, **kwargs: Any) -> Any: ...
1462
1829
  def get_scores(self, query: Optional[PlayerLeaderboardAPIGetScoresQuery] = ..., **kwargs: Any) -> Any: ...
1463
1830
 
1831
+ class PlayerParkourAPI:
1832
+ def get_recent_scores(self, ecid: str, query: Optional[PlayerParkourAPIGetRecentScoresQuery] = ..., **kwargs: Any) -> Any: ...
1833
+ def get_summary(self, ecid: str, **kwargs: Any) -> Any: ...
1834
+ def get_track_progress(self, ecid: str, trackKey: str, query: Optional[PlayerParkourAPIGetTrackProgressQuery] = ..., **kwargs: Any) -> Any: ...
1835
+
1464
1836
  class PlayerRankScoreAPI:
1465
1837
  def get_history(self, ecid: str, query: Optional[PlayerRankScoreAPIGetHistoryQuery] = ..., **kwargs: Any) -> Any: ...
1466
1838
  def get_periods(self, ecid: str, query: Optional[PlayerRankScoreAPIGetPeriodsQuery] = ..., **kwargs: Any) -> Any: ...
@@ -1617,9 +1989,14 @@ class ECAPIClient:
1617
1989
  admin: AdminAPI
1618
1990
  audit: AuditAPI
1619
1991
  auth: AuthAPI
1992
+ catalog: CatalogAPI
1620
1993
  game_log: GameLogAPI
1621
1994
  homeland: EchoMelandAPI
1622
1995
  log: LogAPI
1996
+ lottery: LotteryAPI
1997
+ minecraft_developer: MinecraftDeveloperAPI
1998
+ oss: OSSAPI
1999
+ parkour: ParkourAPI
1623
2000
  pit2: PIT2API
1624
2001
  player: PlayerAPI
1625
2002
  replay: ReplayAPI
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ecapi-sdk
3
- Version: 3.7.1
3
+ Version: 3.7.2
4
4
  Summary: ECAPI SDK for Python
5
5
  Author: EaseCation
6
6
  License: MIT
File without changes
File without changes