diff --git a/README.md b/README.md
index 6f4cd1f8..81b9a9bb 100644
--- a/README.md
+++ b/README.md
@@ -20,6 +20,8 @@
- 提供拦截器功能。
+- 包含 SourceLink,可在项目中无源代码调试。
+
- 完整、完善、完全的微信 API 封装。
---
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteComponentTcbExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteComponentTcbExtensions.cs
index d857bc3b..459b8e7b 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteComponentTcbExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteComponentTcbExtensions.cs
@@ -34,7 +34,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// 异步调用 [POST] /tcb/modifyenv 接口。
- /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/modifyenv.html
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/modifyEnv.html
///
///
///
@@ -256,7 +256,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// 异步调用 [POST] /tcb/invokecloudfunction 接口。
- /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/batchupdatetriggers.html
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/invokecloudfunction.html
///
///
///
@@ -277,5 +277,639 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
return await client.SendRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken);
}
#endregion
+
+ #region ContainerService
+ ///
+ /// 异步调用 [POST] /componenttcb/opencontainerservice 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/opencontainerservice.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbOpenContainerServiceAsync(this WechatApiClient client, Models.ComponentTcbOpenContainerServiceRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "opencontainerservice")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /tcb/usecloudaccesstoken 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/usecloudaccesstoken.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbUseCloudAccessTokenAsync(this WechatApiClient client, Models.ComponentTcbUseCloudAccessTokenRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "tcb", "usecloudaccesstoken")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/createcontainerservice 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/createcontainerservice.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbCreateContainerServiceAsync(this WechatApiClient client, Models.ComponentTcbCreateContainerServiceRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "createcontainerservice")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/getcslist 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/getcslist.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbGetContainerServiceListAsync(this WechatApiClient client, Models.ComponentTcbGetContainerServiceListRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "getcslist")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/delcontainerservice 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/delcontainerservice.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbDeleteContainerServiceAsync(this WechatApiClient client, Models.ComponentTcbDeleteContainerServiceRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "delcontainerservice")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/createcsversion 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/createcsversion.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbCreateContainerServiceVersionAsync(this WechatApiClient client, Models.ComponentTcbCreateContainerServiceVersionRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "createcsversion")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/batchcreatecsversion 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/batchcreatecsversion.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbBatchCreateContainerServiceVersionAsync(this WechatApiClient client, Models.ComponentTcbBatchCreateContainerServiceVersionRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "batchcreatecsversion")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/delcsversion 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/delcsversion.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbDeleteContainerServiceVersionAsync(this WechatApiClient client, Models.ComponentTcbDeleteContainerServiceVersionRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "delcsversion")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/batchdelcsversion 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/batchDelCSVersion.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbBatchDeleteContainerServiceVersionAsync(this WechatApiClient client, Models.ComponentTcbBatchDeleteContainerServiceVersionRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "batchdelcsversion")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/getcsversionlist 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/getcsversionlist.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbGetContainerServiceVersionListAsync(this WechatApiClient client, Models.ComponentTcbGetContainerServiceVersionListRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "getcsversionlist")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/getcsversiondetail 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/getcsversiondetail.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbGetContainerServiceVersionDetailAsync(this WechatApiClient client, Models.ComponentTcbGetContainerServiceVersionDetailRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "getcsversiondetail")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/setcsversionconfig 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/setcsversionconfig.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbSetContainerServiceVersionConfigAsync(this WechatApiClient client, Models.ComponentTcbSetContainerServiceVersionConfigRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "setcsversionconfig")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/setcspropotion 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/setcspropotion.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbSetContainerServicePropotionAsync(this WechatApiClient client, Models.ComponentTcbSetContainerServicePropotionRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "setcspropotion")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/batchsetcspropotion 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/batchSetCSPropotion.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbBatchSetContainerServicePropotionAsync(this WechatApiClient client, Models.ComponentTcbBatchSetContainerServicePropotionRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "batchsetcspropotion")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+ #endregion
+
+ #region COS
+ ///
+ /// 异步调用 [POST] /componenttcb/uploadfile 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/uploadfile.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbUploadFileAsync(this WechatApiClient client, Models.ComponentTcbUploadFileRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "uploadfile")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/batchdownloadfile 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/batchdownloadfile.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbBatchDownloadFileAsync(this WechatApiClient client, Models.ComponentTcbBatchDownloadFileRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "batchdownloadfile")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/batchdeletefile 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/batchdeletefile.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbBatchDeleteFileAsync(this WechatApiClient client, Models.ComponentTcbBatchDeleteFileRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "batchdeletefile")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/getbucket 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/getbucket.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbGetBucketAsync(this WechatApiClient client, Models.ComponentTcbGetBucketRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "getbucket")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+ #endregion
+
+ #region StaticStore
+ ///
+ /// 异步调用 [POST] /componenttcb/createstaticstore 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/CreateStaticStore.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbCreateStaticStoreAsync(this WechatApiClient client, Models.ComponentTcbCreateStaticStoreRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "createstaticstore")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/describestaticstore 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/DescribeStaticStore.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbDescribeStaticStoreAsync(this WechatApiClient client, Models.ComponentTcbDescribeStaticStoreRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "describestaticstore")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/staticfilelist 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/staticFileList.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbStaticFileListAsync(this WechatApiClient client, Models.ComponentTcbStaticFileListRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "staticfilelist")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/staticuploadfile 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/staticUploadFile.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbStaticUploadFileAsync(this WechatApiClient client, Models.ComponentTcbStaticUploadFileRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "staticuploadfile")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+ #endregion
+
+ #region Database
+ ///
+ /// 异步调用 [POST] /componenttcb/dbcollection 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/dbCollectionGet.html
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/dbCollectionAdd.html
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/dbCollectionDel.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbDbCollectionAsync(this WechatApiClient client, Models.ComponentTcbDbCollectionRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "dbcollection")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/dbrecord 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/dbRecordInsert.html
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/dbRecordDelete.html
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/dbRecordUpdate.html
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/dbRecordQuery.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbDbRecordAsync(this WechatApiClient client, Models.ComponentTcbDbRecordRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "dbrecord")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/dbindex 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/dbIndexCreate.html
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/dbIndexDelete.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbDbIndexAsync(this WechatApiClient client, Models.ComponentTcbDbIndexRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "dbindex")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/dbimport 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/dbimport.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbDbImportAsync(this WechatApiClient client, Models.ComponentTcbDbImportRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "dbimport")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/dbexport 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/dbexport.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbDbExportAsync(this WechatApiClient client, Models.ComponentTcbDbExportRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "dbexport")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/dbmigrationstate 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/dbmigrationstate.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbDbMigrationStateAsync(this WechatApiClient client, Models.ComponentTcbDbMigrationStateRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "dbmigrationstate")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/dbaggregate 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/dbaggregate.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbDbAggregateAsync(this WechatApiClient client, Models.ComponentTcbDbAggregateRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "dbaggregate")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/dbgetacl 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/dbGetACL.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbDbGetACLAsync(this WechatApiClient client, Models.ComponentTcbDbGetACLRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "dbgetacl")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /componenttcb/dbmodifyacl 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/dbModifyACL.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteComponentTcbDbModifyACLAsync(this WechatApiClient client, Models.ComponentTcbDbModifyACLRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "componenttcb", "dbmodifyacl")
+ .SetQueryParam("access_token", request.ComponentAccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+ #endregion
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteTcbExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteTcbExtensions.cs
index ec83724a..df37b9e8 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteTcbExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteTcbExtensions.cs
@@ -285,5 +285,107 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
+
+ #region ThirdPartyPlatforms
+ ///
+ /// 异步调用 [POST] /tcb/createclouduser 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/common/creatCloudUser.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteTcbCreateCloudUserAsync(this WechatApiClient client, Models.TcbCreateCloudUserRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "tcb", "createclouduser")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /tcb/getenvinfo 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/common/getEnvInfo.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteTcbGetEnvironmentInfoAsync(this WechatApiClient client, Models.TcbGetEnvironmentInfoRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "tcb", "getenvinfo")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /tcb/createenvandresource 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/common/createEnvAndResource.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteTcbCreateEnvironmentAndResourceAsync(this WechatApiClient client, Models.TcbCreateEnvironmentAndResourceRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "tcb", "createenvandresource")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /tcb/modifyenv 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/common/modifyEnv.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteTcbModifyEnvironmentAsync(this WechatApiClient client, Models.TcbModifyEnvironmentRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "tcb", "modifyenv")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /tcb/shareenv 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/common/shareenv.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteTcbShareEnvironmentAsync(this WechatApiClient client, Models.TcbShareEnvironmentRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "tcb", "shareenv")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+ #endregion
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbBatchDeleteFileRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbBatchDeleteFileRequest.cs
new file mode 100644
index 00000000..2e54b102
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbBatchDeleteFileRequest.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/batchdeletefile 接口的请求。
+ ///
+ public class ComponentTcbBatchDeleteFileRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置文件 ID 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("fileid_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("fileid_list")]
+ public IList FileIdList { get; set; } = new List();
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbBatchDeleteFileResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbBatchDeleteFileResponse.cs
new file mode 100644
index 00000000..9c03a464
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbBatchDeleteFileResponse.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/batchdeletefile 接口的响应。
+ ///
+ public class ComponentTcbBatchDeleteFileResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class File
+ {
+ ///
+ /// 获取或设置文件 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("fileid")]
+ [System.Text.Json.Serialization.JsonPropertyName("fileid")]
+ public string FileId { get; set; } = default!;
+
+ ///
+ /// 获取或设置错误码。
+ ///
+ [Newtonsoft.Json.JsonProperty("status")]
+ [System.Text.Json.Serialization.JsonPropertyName("status")]
+ public int ErrorCode { get; set; }
+
+ ///
+ /// 获取或设置错误描述。
+ ///
+ [Newtonsoft.Json.JsonProperty("errmsg")]
+ [System.Text.Json.Serialization.JsonPropertyName("errmsg")]
+ public string? ErrorMessage { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置文件列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("delete_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("delete_list")]
+ public Types.File[] FileList { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbBatchDownloadFileRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbBatchDownloadFileRequest.cs
new file mode 100644
index 00000000..2d4d1399
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbBatchDownloadFileRequest.cs
@@ -0,0 +1,52 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/batchdownloadfile 接口的请求。
+ ///
+ public class ComponentTcbBatchDownloadFileRequest : WechatApiRequest
+ {
+ public static class Types
+ {
+ public class File
+ {
+ ///
+ /// 获取或设置文件 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("fileid")]
+ [System.Text.Json.Serialization.JsonPropertyName("fileid")]
+ public string FileId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置下载链接有效期(单位:秒)。
+ ///
+ [Newtonsoft.Json.JsonProperty("max_age")]
+ [System.Text.Json.Serialization.JsonPropertyName("max_age")]
+ public int MaxAge { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置文件列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("file_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("file_list")]
+ public IList FileList { get; set; } = new List();
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbBatchDownloadFileResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbBatchDownloadFileResponse.cs
new file mode 100644
index 00000000..773c26a3
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbBatchDownloadFileResponse.cs
@@ -0,0 +1,52 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/batchdownloadfile 接口的响应。
+ ///
+ public class ComponentTcbBatchDownloadFileResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class File
+ {
+ ///
+ /// 获取或设置文件 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("fileid")]
+ [System.Text.Json.Serialization.JsonPropertyName("fileid")]
+ public string FileId { get; set; } = default!;
+
+ ///
+ /// 获取或设置下载链接。
+ ///
+ [Newtonsoft.Json.JsonProperty("download_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("download_url")]
+ public string? DownloadUrl { get; set; }
+
+ ///
+ /// 获取或设置错误码。
+ ///
+ [Newtonsoft.Json.JsonProperty("status")]
+ [System.Text.Json.Serialization.JsonPropertyName("status")]
+ public int ErrorCode { get; set; }
+
+ ///
+ /// 获取或设置错误描述。
+ ///
+ [Newtonsoft.Json.JsonProperty("errmsg")]
+ [System.Text.Json.Serialization.JsonPropertyName("errmsg")]
+ public string? ErrorMessage { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置文件列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("file_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("file_list")]
+ public Types.File[] FileList { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbGetBucketRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbGetBucketRequest.cs
new file mode 100644
index 00000000..13b4044d
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbGetBucketRequest.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/getbucket 接口的请求。
+ ///
+ public class ComponentTcbGetBucketRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置前缀匹配。
+ ///
+ [Newtonsoft.Json.JsonProperty("prefix")]
+ [System.Text.Json.Serialization.JsonPropertyName("prefix")]
+ public string? Prefix { get; set; }
+
+ ///
+ /// 获取或设置定界符。
+ ///
+ [Newtonsoft.Json.JsonProperty("delimiter")]
+ [System.Text.Json.Serialization.JsonPropertyName("delimiter")]
+ public string? Delimiter { get; set; }
+
+ ///
+ /// 获取或设置标志位。
+ ///
+ [Newtonsoft.Json.JsonProperty("marker")]
+ [System.Text.Json.Serialization.JsonPropertyName("marker")]
+ public string? Marker { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbGetBucketResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbGetBucketResponse.cs
new file mode 100644
index 00000000..049eee51
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbGetBucketResponse.cs
@@ -0,0 +1,62 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/getbucket 接口的响应。
+ ///
+ public class ComponentTcbGetBucketResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class File
+ {
+ ///
+ /// 获取或设置文件名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("key")]
+ [System.Text.Json.Serialization.JsonPropertyName("key")]
+ public string FileKey { get; set; } = default!;
+
+ ///
+ /// 获取或设置文件的 MD5 值。
+ ///
+ [Newtonsoft.Json.JsonProperty("md5")]
+ [System.Text.Json.Serialization.JsonPropertyName("md5")]
+ public string FileMd5 { get; set; } = default!;
+
+ ///
+ /// 获取或设置文件大小(单位:字节)。
+ ///
+ [Newtonsoft.Json.JsonProperty("size")]
+ [System.Text.Json.Serialization.JsonPropertyName("size")]
+ [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
+ public int FileSize { get; set; }
+
+ ///
+ /// 获取或设置最近修改时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("last_modified")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("last_modified")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ public DateTimeOffset LastModifiedTime { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置文件列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("contents")]
+ [System.Text.Json.Serialization.JsonPropertyName("contents")]
+ public Types.File[] FileList { get; set; } = default!;
+
+ ///
+ /// 获取或设置内容是否被截断。
+ ///
+ [Newtonsoft.Json.JsonProperty("is_truncated")]
+ [System.Text.Json.Serialization.JsonPropertyName("is_truncated")]
+ public bool IsTruncated { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbUploadFileRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbUploadFileRequest.cs
new file mode 100644
index 00000000..5916ed44
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbUploadFileRequest.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/uploadfile 接口的请求。
+ ///
+ public class ComponentTcbUploadFileRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置上传路径。
+ ///
+ [Newtonsoft.Json.JsonProperty("path")]
+ [System.Text.Json.Serialization.JsonPropertyName("path")]
+ public string Path { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbUploadFileResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbUploadFileResponse.cs
new file mode 100644
index 00000000..21ceb807
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbUploadFileResponse.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/uploadfile 接口的响应。
+ ///
+ public class ComponentTcbUploadFileResponse : WechatApiResponse
+ {
+ ///
+ /// 获取或设置上传 URL。
+ ///
+ [Newtonsoft.Json.JsonProperty("url")]
+ [System.Text.Json.Serialization.JsonPropertyName("url")]
+ public string Url { get; set; } = default!;
+
+ ///
+ /// 获取或设置上传凭证。
+ ///
+ [Newtonsoft.Json.JsonProperty("token")]
+ [System.Text.Json.Serialization.JsonPropertyName("token")]
+ public string Token { get; set; } = default!;
+
+ ///
+ /// 获取或设置授权信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("authorization")]
+ [System.Text.Json.Serialization.JsonPropertyName("authorization")]
+ public string Authorization { get; set; } = default!;
+
+ ///
+ /// 获取或设置文件 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("file_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("file_id")]
+ public string FileId { get; set; } = default!;
+
+ ///
+ /// 获取或设置 COS 文件 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("cos_file_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("cos_file_id")]
+ public string COSFileId { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbCreateContainerServiceRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbCreateContainerServiceRequest.cs
new file mode 100644
index 00000000..ac6f9816
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbCreateContainerServiceRequest.cs
@@ -0,0 +1,73 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/createcontainerservice 接口的请求。
+ ///
+ public class ComponentTcbCreateContainerServiceRequest : WechatApiRequest
+ {
+ public static class Types
+ {
+ public class VPC
+ {
+ ///
+ /// 获取或设置 VPC 唯一标识。
+ ///
+ [Newtonsoft.Json.JsonProperty("vpcid")]
+ [System.Text.Json.Serialization.JsonPropertyName("vpcid")]
+ public string VPCId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置子网 ID 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("subnetids")]
+ [System.Text.Json.Serialization.JsonPropertyName("subnetids")]
+ public IList SubnetIdList { get; set; } = new List();
+
+ ///
+ /// 获取或设置创建类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("create_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("create_type")]
+ public int CreateType { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置服务名。
+ ///
+ [Newtonsoft.Json.JsonProperty("service_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("service_name")]
+ public string ServiceName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置备注。
+ ///
+ [Newtonsoft.Json.JsonProperty("remark")]
+ [System.Text.Json.Serialization.JsonPropertyName("remark")]
+ public string? Remark { get; set; }
+
+ ///
+ /// 获取或设置 VPC 信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("vpc")]
+ [System.Text.Json.Serialization.JsonPropertyName("vpc")]
+ public Types.VPC? VPC { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbCreateContainerServiceResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbCreateContainerServiceResponse.cs
new file mode 100644
index 00000000..a6e7a5bd
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbCreateContainerServiceResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/createcontainerservice 接口的响应。
+ ///
+ public class ComponentTcbCreateContainerServiceResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbDeleteContainerServiceRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbDeleteContainerServiceRequest.cs
new file mode 100644
index 00000000..8c07e566
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbDeleteContainerServiceRequest.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/delcontainerservice 接口的请求。
+ ///
+ public class ComponentTcbDeleteContainerServiceRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置服务名。
+ ///
+ [Newtonsoft.Json.JsonProperty("service_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("service_name")]
+ public string ServiceName { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbDeleteContainerServiceResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbDeleteContainerServiceResponse.cs
new file mode 100644
index 00000000..011aa929
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbDeleteContainerServiceResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/delcontainerservice 接口的响应。
+ ///
+ public class ComponentTcbDeleteContainerServiceResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbGetContainerServiceListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbGetContainerServiceListRequest.cs
new file mode 100644
index 00000000..b53d8472
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbGetContainerServiceListRequest.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/getcslist 接口的请求。
+ ///
+ public class ComponentTcbGetContainerServiceListRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置分页起始位置。
+ ///
+ [Newtonsoft.Json.JsonProperty("offset")]
+ [System.Text.Json.Serialization.JsonPropertyName("offset")]
+ public int? Offset { get; set; }
+
+ ///
+ /// 获取或设置分页每页数量。
+ ///
+ [Newtonsoft.Json.JsonProperty("limit")]
+ [System.Text.Json.Serialization.JsonPropertyName("limit")]
+ public int? Limit { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbGetContainerServiceListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbGetContainerServiceListResponse.cs
new file mode 100644
index 00000000..12f2ee7c
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbGetContainerServiceListResponse.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/getcslist 接口的响应。
+ ///
+ public class ComponentTcbGetContainerServiceListResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class ContainerService
+ {
+ ///
+ /// 获取或设置服务名。
+ ///
+ [Newtonsoft.Json.JsonProperty("server_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("server_name")]
+ public string ServiceName { get; set; } = default!;
+
+ ///
+ /// 获取或设置 VPC 唯一标识。
+ ///
+ [Newtonsoft.Json.JsonProperty("vpcid")]
+ [System.Text.Json.Serialization.JsonPropertyName("vpcid")]
+ public string VPCId { get; set; } = default!;
+
+ ///
+ /// 获取或设置服务状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("status")]
+ [System.Text.Json.Serialization.JsonPropertyName("status")]
+ public string Status { get; set; } = default!;
+
+ ///
+ /// 获取或设置镜像地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("image_repo")]
+ [System.Text.Json.Serialization.JsonPropertyName("image_repo")]
+ public string? ImageRepository { get; set; }
+
+ ///
+ /// 获取或设置修改时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("updated_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("updated_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ public DateTimeOffset UpdateTime { get; set; }
+
+ ///
+ /// 获取或设置创建时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("created_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("created_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ public DateTimeOffset CreateTime { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置云托管服务列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("cslist")]
+ [System.Text.Json.Serialization.JsonPropertyName("cslist")]
+ public Types.ContainerService[] ContainerServiceList { get; set; } = default!;
+
+ ///
+ /// 获取或设置云函数总数量。
+ ///
+ [Newtonsoft.Json.JsonProperty("total")]
+ [System.Text.Json.Serialization.JsonPropertyName("total")]
+ public int TotalCount { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbOpenContainerServiceRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbOpenContainerServiceRequest.cs
new file mode 100644
index 00000000..2cd0a873
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbOpenContainerServiceRequest.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/opencontainerservice 接口的请求。
+ ///
+ public class ComponentTcbOpenContainerServiceRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbOpenContainerServiceResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbOpenContainerServiceResponse.cs
new file mode 100644
index 00000000..46541560
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbOpenContainerServiceResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/opencontainerservice 接口的响应。
+ ///
+ public class ComponentTcbOpenContainerServiceResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbUseCloudAccessTokenRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbUseCloudAccessTokenRequest.cs
new file mode 100644
index 00000000..8b64668d
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbUseCloudAccessTokenRequest.cs
@@ -0,0 +1,53 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /tcb/usecloudaccesstoken 接口的请求。
+ ///
+ public class ComponentTcbUseCloudAccessTokenRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置操作类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("action")]
+ [System.Text.Json.Serialization.JsonPropertyName("action")]
+ public string Action { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置是否关闭。
+ ///
+ [Newtonsoft.Json.JsonProperty("open")]
+ [System.Text.Json.Serialization.JsonPropertyName("open")]
+ public bool? IsOpen { get; set; }
+
+ ///
+ /// 获取或设置 API 白名单列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("api_whitelist")]
+ [System.Text.Json.Serialization.JsonPropertyName("api_whitelist")]
+ public IList? ApiWhiteList { get; set; }
+
+ ///
+ /// 获取或设置版本号。
+ ///
+ [Newtonsoft.Json.JsonProperty("version")]
+ [System.Text.Json.Serialization.JsonPropertyName("version")]
+ public int? Version { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbUseCloudAccessTokenResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbUseCloudAccessTokenResponse.cs
new file mode 100644
index 00000000..3975fae1
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/ComponentTcbUseCloudAccessTokenResponse.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /tcb/usecloudaccesstoken 接口的响应。
+ ///
+ public class ComponentTcbUseCloudAccessTokenResponse : WechatApiResponse
+ {
+ ///
+ /// 获取或设置是否关闭。
+ ///
+ [Newtonsoft.Json.JsonProperty("open")]
+ [System.Text.Json.Serialization.JsonPropertyName("open")]
+ public bool? IsOpen { get; set; }
+
+ ///
+ /// 获取或设置 API 白名单列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("api_whitelist")]
+ [System.Text.Json.Serialization.JsonPropertyName("api_whitelist")]
+ public string[]? ApiWhiteList { get; set; }
+
+ ///
+ /// 获取或设置版本号。
+ ///
+ [Newtonsoft.Json.JsonProperty("version")]
+ [System.Text.Json.Serialization.JsonPropertyName("version")]
+ public int? Version { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Propotion/ComponentTcbBatchSetContainerServicePropotionRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Propotion/ComponentTcbBatchSetContainerServicePropotionRequest.cs
new file mode 100644
index 00000000..588c9efc
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Propotion/ComponentTcbBatchSetContainerServicePropotionRequest.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/batchsetcspropotion 接口的请求。
+ ///
+ public class ComponentTcbBatchSetContainerServicePropotionRequest : WechatApiRequest
+ {
+ public static class Types
+ {
+ public class ContainerService
+ {
+ public static class Types
+ {
+ public class Version : ComponentTcbSetContainerServicePropotionRequest.Types.Version
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置服务名。
+ ///
+ [Newtonsoft.Json.JsonProperty("service_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("service_name")]
+ public string ServiceName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置版本列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("items")]
+ [System.Text.Json.Serialization.JsonPropertyName("items")]
+ public IList VersionList { get; set; } = new List();
+ }
+ }
+
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置云托管服务列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("items")]
+ [System.Text.Json.Serialization.JsonPropertyName("items")]
+ public IList ContainerServiceList { get; set; } = new List();
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Propotion/ComponentTcbBatchSetContainerServicePropotionResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Propotion/ComponentTcbBatchSetContainerServicePropotionResponse.cs
new file mode 100644
index 00000000..1b0cb375
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Propotion/ComponentTcbBatchSetContainerServicePropotionResponse.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/batchsetcspropotion 接口的响应。
+ ///
+ public class ComponentTcbBatchSetContainerServicePropotionResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class Success
+ {
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = default!;
+
+ ///
+ /// 获取或设置服务名。
+ ///
+ [Newtonsoft.Json.JsonProperty("service_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("service_name")]
+ public string ServiceName { get; set; } = default!;
+ }
+
+ public class Failure : Success
+ {
+ ///
+ /// 获取或设置错误描述。
+ ///
+ [Newtonsoft.Json.JsonProperty("errmsg")]
+ [System.Text.Json.Serialization.JsonPropertyName("errmsg")]
+ public string ErrorMessage { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置成功项列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("succ_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("succ_list")]
+ public Types.Success[] SuccessList { get; set; } = default!;
+
+ ///
+ /// 获取或设置失败项列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("fail_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("fail_list")]
+ public Types.Failure[] FailureList { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Propotion/ComponentTcbSetContainerServicePropotionRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Propotion/ComponentTcbSetContainerServicePropotionRequest.cs
new file mode 100644
index 00000000..ca8715fe
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Propotion/ComponentTcbSetContainerServicePropotionRequest.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/setcspropotion 接口的请求。
+ ///
+ public class ComponentTcbSetContainerServicePropotionRequest : WechatApiRequest
+ {
+ public static class Types
+ {
+ public class Version
+ {
+ ///
+ /// 获取或设置版本名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("version_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("version_name")]
+ public string VersionName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置流量占比(范围:0~100)。
+ ///
+ [Newtonsoft.Json.JsonProperty("flow_ratio")]
+ [System.Text.Json.Serialization.JsonPropertyName("flow_ratio")]
+ public int FlowRatio { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置服务名。
+ ///
+ [Newtonsoft.Json.JsonProperty("service_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("service_name")]
+ public string ServiceName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置版本列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("items")]
+ [System.Text.Json.Serialization.JsonPropertyName("items")]
+ public IList VersionList { get; set; } = new List();
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Propotion/ComponentTcbSetContainerServicePropotionResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Propotion/ComponentTcbSetContainerServicePropotionResponse.cs
new file mode 100644
index 00000000..5f39d524
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Propotion/ComponentTcbSetContainerServicePropotionResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/setcspropotion 接口的响应。
+ ///
+ public class ComponentTcbSetContainerServicePropotionResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbBatchCreateContainerServiceVersionRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbBatchCreateContainerServiceVersionRequest.cs
new file mode 100644
index 00000000..de091034
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbBatchCreateContainerServiceVersionRequest.cs
@@ -0,0 +1,215 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/batchcreatecsversion 接口的请求。
+ ///
+ public class ComponentTcbBatchCreateContainerServiceVersionRequest : WechatApiRequest
+ {
+ public static class Types
+ {
+ public class Image : ComponentTcbCreateContainerServiceVersionRequest.Types.Image
+ {
+ }
+
+ public class Code : ComponentTcbCreateContainerServiceVersionRequest.Types.Code
+ {
+ }
+
+ public class ImageSecret : ComponentTcbCreateContainerServiceVersionRequest.Types.ImageSecret
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("envs")]
+ [System.Text.Json.Serialization.JsonPropertyName("envs")]
+ public IList EnvironmentIdList { get; set; } = new List();
+
+ ///
+ /// 获取或设置服务名。
+ ///
+ [Newtonsoft.Json.JsonProperty("service_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("service_name")]
+ public string ServiceName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置上传方式。
+ ///
+ [Newtonsoft.Json.JsonProperty("upload_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("upload_type")]
+ public string UploadType { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置流量占比(范围:0~100)。
+ ///
+ [Newtonsoft.Json.JsonProperty("flow_ratio")]
+ [System.Text.Json.Serialization.JsonPropertyName("flow_ratio")]
+ public int? FlowRatio { get; set; }
+
+ ///
+ /// 获取或设置 CPU 核心数。
+ ///
+ [Newtonsoft.Json.JsonProperty("cpu")]
+ [System.Text.Json.Serialization.JsonPropertyName("cpu")]
+ public double? CPUCount { get; set; }
+
+ ///
+ /// 获取或设置内存大小(单位:GB)。
+ ///
+ [Newtonsoft.Json.JsonProperty("mem")]
+ [System.Text.Json.Serialization.JsonPropertyName("mem")]
+ public double? MemorySize { get; set; }
+
+ ///
+ /// 获取或设置最小副本数(范围:0~50)。
+ ///
+ [Newtonsoft.Json.JsonProperty("minnum")]
+ [System.Text.Json.Serialization.JsonPropertyName("minnum")]
+ public int? MinReplicas { get; set; }
+
+ ///
+ /// 获取或设置最大副本数(范围:0~50)。
+ ///
+ [Newtonsoft.Json.JsonProperty("maxnum")]
+ [System.Text.Json.Serialization.JsonPropertyName("maxnum")]
+ public int? MaxReplicas { get; set; }
+
+ ///
+ /// 获取或设置策略类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_type")]
+ public string? PolicyType { get; set; }
+
+ ///
+ /// 获取或设置策略阈值(范围:0~100)。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_threshold")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_threshold")]
+ public int? PolicyThreshold { get; set; }
+
+ ///
+ /// 获取或设置端口号。
+ ///
+ [Newtonsoft.Json.JsonProperty("container_port")]
+ [System.Text.Json.Serialization.JsonPropertyName("container_port")]
+ public int? ContainerPort { get; set; }
+
+ ///
+ /// 获取或设置仓库类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("repository_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("repository_type")]
+ public string? RepositoryType { get; set; }
+
+ ///
+ /// 获取或设置仓库地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("repository")]
+ [System.Text.Json.Serialization.JsonPropertyName("repository")]
+ public string? RepositoryUrl { get; set; }
+
+ ///
+ /// 获取或设置 Dockerfile 路径。
+ ///
+ [Newtonsoft.Json.JsonProperty("dockerfile_path")]
+ [System.Text.Json.Serialization.JsonPropertyName("dockerfile_path")]
+ public string? DockerfilePath { get; set; }
+
+ ///
+ /// 获取或设置构建目录。
+ ///
+ [Newtonsoft.Json.JsonProperty("build_dir")]
+ [System.Text.Json.Serialization.JsonPropertyName("build_dir")]
+ public string? BuildDirectory { get; set; }
+
+ ///
+ /// 获取或设置环境变量。
+ ///
+ [Newtonsoft.Json.JsonProperty("env_params")]
+ [System.Text.Json.Serialization.JsonPropertyName("env_params")]
+ public string? EnvironmentVariables { get; set; }
+
+ ///
+ /// 获取或设置分支。
+ ///
+ [Newtonsoft.Json.JsonProperty("branch")]
+ [System.Text.Json.Serialization.JsonPropertyName("branch")]
+ public string? Branch { get; set; }
+
+ ///
+ /// 获取或设置包名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("package_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("package_name")]
+ public string? PackageName { get; set; }
+
+ ///
+ /// 获取或设置包版本。
+ ///
+ [Newtonsoft.Json.JsonProperty("package_version")]
+ [System.Text.Json.Serialization.JsonPropertyName("package_version")]
+ public string? PackageVersion { get; set; }
+
+ ///
+ /// 获取或设置镜像信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("image_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("image_info")]
+ public Types.Image? Image { get; set; }
+
+ ///
+ /// 获取或设置代码信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("code_detail")]
+ [System.Text.Json.Serialization.JsonPropertyName("code_detail")]
+ public Types.Code? Code { get; set; }
+
+ ///
+ /// 获取或设置私有镜像密钥信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("image_secret_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("image_secret_info")]
+ public Types.ImageSecret? ImageSecret { get; set; }
+
+ ///
+ /// 获取或设置私有镜像认证密钥。
+ ///
+ [Newtonsoft.Json.JsonProperty("image_pulls_secret")]
+ [System.Text.Json.Serialization.JsonPropertyName("image_pulls_secret")]
+ public string? ImagePullsSecret { get; set; }
+
+ ///
+ /// 获取或设置自定义采集日志路径。
+ ///
+ [Newtonsoft.Json.JsonProperty("custom_logs")]
+ [System.Text.Json.Serialization.JsonPropertyName("custom_logs")]
+ public string? CustomLogPath { get; set; }
+
+ ///
+ /// 获取或设置是否开启微信令牌自动推送。
+ ///
+ [Newtonsoft.Json.JsonProperty("mount_wx_token")]
+ [System.Text.Json.Serialization.JsonPropertyName("mount_wx_token")]
+ public bool? IsMountWechatToken { get; set; }
+
+ ///
+ /// 获取或设置备注。
+ ///
+ [Newtonsoft.Json.JsonProperty("version_remark")]
+ [System.Text.Json.Serialization.JsonPropertyName("version_remark")]
+ public string? Remark { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbBatchCreateContainerServiceVersionResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbBatchCreateContainerServiceVersionResponse.cs
new file mode 100644
index 00000000..ff1adedb
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbBatchCreateContainerServiceVersionResponse.cs
@@ -0,0 +1,62 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/batchcreatecsversion 接口的响应。
+ ///
+ public class ComponentTcbBatchCreateContainerServiceVersionResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class Success
+ {
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = default!;
+
+ ///
+ /// 获取或设置版本名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("version_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("version_name")]
+ public string VersionName { get; set; } = default!;
+ }
+
+ public class Failure
+ {
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = default!;
+
+ ///
+ /// 获取或设置错误描述。
+ ///
+ [Newtonsoft.Json.JsonProperty("errormsg")]
+ [System.Text.Json.Serialization.JsonPropertyName("errormsg")]
+ public string ErrorMessage { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置成功项列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("succ_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("succ_list")]
+ public Types.Success[] SuccessList { get; set; } = default!;
+
+ ///
+ /// 获取或设置失败项列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("fail_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("fail_list")]
+ public Types.Failure[] FailureList { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbBatchDeleteContainerServiceVersionRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbBatchDeleteContainerServiceVersionRequest.cs
new file mode 100644
index 00000000..499aeb59
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbBatchDeleteContainerServiceVersionRequest.cs
@@ -0,0 +1,52 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/batchdelcsversion 接口的请求。
+ ///
+ public class ComponentTcbBatchDeleteContainerServiceVersionRequest : WechatApiRequest
+ {
+ public static class Types
+ {
+ public class Version
+ {
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置服务名。
+ ///
+ [Newtonsoft.Json.JsonProperty("service_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("service_name")]
+ public string ServiceName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置版本名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("version_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("version_name")]
+ public string VersionName { get; set; } = string.Empty;
+ }
+ }
+
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置版本列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("items")]
+ [System.Text.Json.Serialization.JsonPropertyName("items")]
+ public IList VersionList { get; set; } = new List();
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbBatchDeleteContainerServiceVersionResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbBatchDeleteContainerServiceVersionResponse.cs
new file mode 100644
index 00000000..1efa9434
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbBatchDeleteContainerServiceVersionResponse.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/batchdelcsversion 接口的响应。
+ ///
+ public class ComponentTcbBatchDeleteContainerServiceVersionResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class Success
+ {
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = default!;
+
+ ///
+ /// 获取或设置服务名。
+ ///
+ [Newtonsoft.Json.JsonProperty("service_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("service_name")]
+ public string ServiceName { get; set; } = default!;
+
+ ///
+ /// 获取或设置版本名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("version_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("version_name")]
+ public string VersionName { get; set; } = default!;
+ }
+
+ public class Failure : Success
+ {
+ ///
+ /// 获取或设置错误描述。
+ ///
+ [Newtonsoft.Json.JsonProperty("errmsg")]
+ [System.Text.Json.Serialization.JsonPropertyName("errmsg")]
+ public string ErrorMessage { get; set; } = default!;
+ }
+
+ }
+
+ ///
+ /// 获取或设置成功项列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("succ_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("succ_list")]
+ public Types.Success[] SuccessList { get; set; } = default!;
+
+ ///
+ /// 获取或设置失败项列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("fail_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("fail_list")]
+ public Types.Failure[] FailureList { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbCreateContainerServiceVersionRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbCreateContainerServiceVersionRequest.cs
new file mode 100644
index 00000000..5e696e97
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbCreateContainerServiceVersionRequest.cs
@@ -0,0 +1,309 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/createcsversion 接口的请求。
+ ///
+ public class ComponentTcbCreateContainerServiceVersionRequest : WechatApiRequest
+ {
+ public static class Types
+ {
+ public class Image
+ {
+ ///
+ /// 获取或设置镜像仓库名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("repository_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("repository_name")]
+ public string RepositoryName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置是否公有。
+ ///
+ [Newtonsoft.Json.JsonProperty("ispublic")]
+ [System.Text.Json.Serialization.JsonPropertyName("ispublic")]
+ public bool IsPublic { get; set; }
+
+ ///
+ /// 获取或设置镜像 Tag 名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("tagname")]
+ [System.Text.Json.Serialization.JsonPropertyName("tagname")]
+ public string TagName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置镜像服务地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("server_addr")]
+ [System.Text.Json.Serialization.JsonPropertyName("server_addr")]
+ public string ServerAddress { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置镜像拉取地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("image_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("image_url")]
+ public string ImageUrl { get; set; } = string.Empty;
+ }
+
+ public class Code
+ {
+ public static class Types
+ {
+ public class Repository
+ {
+ ///
+ /// 获取或设置仓库名字。
+ ///
+ [Newtonsoft.Json.JsonProperty("name")]
+ [System.Text.Json.Serialization.JsonPropertyName("name")]
+ public string? Name { get; set; }
+
+ ///
+ /// 获取或设置仓库完整名字。
+ ///
+ [Newtonsoft.Json.JsonProperty("fullname")]
+ [System.Text.Json.Serialization.JsonPropertyName("fullname")]
+ public string? FullName { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置仓库信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("name")]
+ [System.Text.Json.Serialization.JsonPropertyName("name")]
+ public Types.Repository? Repository { get; set; }
+
+ ///
+ /// 获取或设置仓库地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("url")]
+ [System.Text.Json.Serialization.JsonPropertyName("url")]
+ public string? Url { get; set; }
+ }
+
+ public class ImageSecret
+ {
+ ///
+ /// 获取或设置镜像地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("registryserver")]
+ [System.Text.Json.Serialization.JsonPropertyName("registryserver")]
+ public string? RegistryServer { get; set; }
+
+ ///
+ /// 获取或设置用户名。
+ ///
+ [Newtonsoft.Json.JsonProperty("username")]
+ [System.Text.Json.Serialization.JsonPropertyName("username")]
+ public string? Username { get; set; }
+
+ ///
+ /// 获取或设置密码。
+ ///
+ [Newtonsoft.Json.JsonProperty("password")]
+ [System.Text.Json.Serialization.JsonPropertyName("password")]
+ public string? Password { get; set; }
+
+ ///
+ /// 获取或设置邮箱。
+ ///
+ [Newtonsoft.Json.JsonProperty("email")]
+ [System.Text.Json.Serialization.JsonPropertyName("email")]
+ public string? Email { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置服务名。
+ ///
+ [Newtonsoft.Json.JsonProperty("service_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("service_name")]
+ public string ServiceName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置上传方式。
+ ///
+ [Newtonsoft.Json.JsonProperty("upload_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("upload_type")]
+ public string UploadType { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置流量占比(范围:0~100)。
+ ///
+ [Newtonsoft.Json.JsonProperty("flow_ratio")]
+ [System.Text.Json.Serialization.JsonPropertyName("flow_ratio")]
+ public int? FlowRatio { get; set; }
+
+ ///
+ /// 获取或设置 CPU 核心数。
+ ///
+ [Newtonsoft.Json.JsonProperty("cpu")]
+ [System.Text.Json.Serialization.JsonPropertyName("cpu")]
+ public double? CPUCount { get; set; }
+
+ ///
+ /// 获取或设置内存大小(单位:GB)。
+ ///
+ [Newtonsoft.Json.JsonProperty("mem")]
+ [System.Text.Json.Serialization.JsonPropertyName("mem")]
+ public double? MemorySize { get; set; }
+
+ ///
+ /// 获取或设置最小副本数(范围:0~50)。
+ ///
+ [Newtonsoft.Json.JsonProperty("minnum")]
+ [System.Text.Json.Serialization.JsonPropertyName("minnum")]
+ public int? MinReplicas { get; set; }
+
+ ///
+ /// 获取或设置最大副本数(范围:0~50)。
+ ///
+ [Newtonsoft.Json.JsonProperty("maxnum")]
+ [System.Text.Json.Serialization.JsonPropertyName("maxnum")]
+ public int? MaxReplicas { get; set; }
+
+ ///
+ /// 获取或设置策略类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_type")]
+ public string? PolicyType { get; set; }
+
+ ///
+ /// 获取或设置策略阈值(范围:0~100)。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_threshold")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_threshold")]
+ public int? PolicyThreshold { get; set; }
+
+ ///
+ /// 获取或设置端口号。
+ ///
+ [Newtonsoft.Json.JsonProperty("container_port")]
+ [System.Text.Json.Serialization.JsonPropertyName("container_port")]
+ public int? ContainerPort { get; set; }
+
+ ///
+ /// 获取或设置仓库类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("repository_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("repository_type")]
+ public string? RepositoryType { get; set; }
+
+ ///
+ /// 获取或设置仓库地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("repository")]
+ [System.Text.Json.Serialization.JsonPropertyName("repository")]
+ public string? RepositoryUrl { get; set; }
+
+ ///
+ /// 获取或设置 Dockerfile 路径。
+ ///
+ [Newtonsoft.Json.JsonProperty("dockerfile_path")]
+ [System.Text.Json.Serialization.JsonPropertyName("dockerfile_path")]
+ public string? DockerfilePath { get; set; }
+
+ ///
+ /// 获取或设置构建目录。
+ ///
+ [Newtonsoft.Json.JsonProperty("build_dir")]
+ [System.Text.Json.Serialization.JsonPropertyName("build_dir")]
+ public string? BuildDirectory { get; set; }
+
+ ///
+ /// 获取或设置环境变量。
+ ///
+ [Newtonsoft.Json.JsonProperty("env_params")]
+ [System.Text.Json.Serialization.JsonPropertyName("env_params")]
+ public string? EnvironmentVariables { get; set; }
+
+ ///
+ /// 获取或设置分支。
+ ///
+ [Newtonsoft.Json.JsonProperty("branch")]
+ [System.Text.Json.Serialization.JsonPropertyName("branch")]
+ public string? Branch { get; set; }
+
+ ///
+ /// 获取或设置包名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("package_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("package_name")]
+ public string? PackageName { get; set; }
+
+ ///
+ /// 获取或设置包版本。
+ ///
+ [Newtonsoft.Json.JsonProperty("package_version")]
+ [System.Text.Json.Serialization.JsonPropertyName("package_version")]
+ public string? PackageVersion { get; set; }
+
+ ///
+ /// 获取或设置镜像信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("image_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("image_info")]
+ public Types.Image? Image { get; set; }
+
+ ///
+ /// 获取或设置代码信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("code_detail")]
+ [System.Text.Json.Serialization.JsonPropertyName("code_detail")]
+ public Types.Code? Code { get; set; }
+
+ ///
+ /// 获取或设置私有镜像密钥信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("image_secret_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("image_secret_info")]
+ public Types.ImageSecret? ImageSecret { get; set; }
+
+ ///
+ /// 获取或设置私有镜像认证密钥。
+ ///
+ [Newtonsoft.Json.JsonProperty("image_pulls_secret")]
+ [System.Text.Json.Serialization.JsonPropertyName("image_pulls_secret")]
+ public string? ImagePullsSecret { get; set; }
+
+ ///
+ /// 获取或设置自定义采集日志路径。
+ ///
+ [Newtonsoft.Json.JsonProperty("custom_logs")]
+ [System.Text.Json.Serialization.JsonPropertyName("custom_logs")]
+ public string? CustomLogPath { get; set; }
+
+ ///
+ /// 获取或设置是否开启微信令牌自动推送。
+ ///
+ [Newtonsoft.Json.JsonProperty("mount_wx_token")]
+ [System.Text.Json.Serialization.JsonPropertyName("mount_wx_token")]
+ public bool? IsMountWechatToken { get; set; }
+
+ ///
+ /// 获取或设置备注。
+ ///
+ [Newtonsoft.Json.JsonProperty("version_remark")]
+ [System.Text.Json.Serialization.JsonPropertyName("version_remark")]
+ public string? Remark { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbCreateContainerServiceVersionResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbCreateContainerServiceVersionResponse.cs
new file mode 100644
index 00000000..0d716007
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbCreateContainerServiceVersionResponse.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/createcsversion 接口的响应。
+ ///
+ public class ComponentTcbCreateContainerServiceVersionResponse : WechatApiResponse
+ {
+ ///
+ /// 获取或设置版本名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("version_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("version_name")]
+ public string VersionName { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbDeleteContainerServiceVersionRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbDeleteContainerServiceVersionRequest.cs
new file mode 100644
index 00000000..e13f68b7
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbDeleteContainerServiceVersionRequest.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/delcsversion 接口的请求。
+ ///
+ public class ComponentTcbDeleteContainerServiceVersionRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置服务名。
+ ///
+ [Newtonsoft.Json.JsonProperty("service_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("service_name")]
+ public string ServiceName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置版本名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("version_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("version_name")]
+ public string VersionName { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbDeleteContainerServiceVersionResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbDeleteContainerServiceVersionResponse.cs
new file mode 100644
index 00000000..824b6588
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbDeleteContainerServiceVersionResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/delcsversion 接口的响应。
+ ///
+ public class ComponentTcbDeleteContainerServiceVersionResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionDetailRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionDetailRequest.cs
new file mode 100644
index 00000000..2a7ccca3
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionDetailRequest.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/getcsversiondetail 接口的请求。
+ ///
+ public class ComponentTcbGetContainerServiceVersionDetailRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置服务名。
+ ///
+ [Newtonsoft.Json.JsonProperty("service_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("service_name")]
+ public string ServiceName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置版本名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("version_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("version_name")]
+ public string VersionName { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionDetailResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionDetailResponse.cs
new file mode 100644
index 00000000..9d95f270
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionDetailResponse.cs
@@ -0,0 +1,190 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/getcsversiondetail 接口的响应。
+ ///
+ public class ComponentTcbGetContainerServiceVersionDetailResponse : WechatApiResponse
+ {
+ ///
+ /// 获取或设置版本名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("version_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("version_name")]
+ public string VersionName { get; set; } = default!;
+
+ ///
+ /// 获取或设置版本状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("status")]
+ [System.Text.Json.Serialization.JsonPropertyName("status")]
+ public string Status { get; set; } = default!;
+
+ ///
+ /// 获取或设置上传方式。
+ ///
+ [Newtonsoft.Json.JsonProperty("upload_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("upload_type")]
+ public string UploadType { get; set; } = default!;
+
+ ///
+ /// 获取或设置 CPU 核心数。
+ ///
+ [Newtonsoft.Json.JsonProperty("cpu")]
+ [System.Text.Json.Serialization.JsonPropertyName("cpu")]
+ public double CPUCount { get; set; }
+
+ ///
+ /// 获取或设置内存大小(单位:GB)。
+ ///
+ [Newtonsoft.Json.JsonProperty("mem")]
+ [System.Text.Json.Serialization.JsonPropertyName("mem")]
+ public double MemorySize { get; set; }
+
+ ///
+ /// 获取或设置最小副本数(范围:0~50)。
+ ///
+ [Newtonsoft.Json.JsonProperty("minnum")]
+ [System.Text.Json.Serialization.JsonPropertyName("minnum")]
+ public int MinReplicas { get; set; }
+
+ ///
+ /// 获取或设置最大副本数(范围:0~50)。
+ ///
+ [Newtonsoft.Json.JsonProperty("maxnum")]
+ [System.Text.Json.Serialization.JsonPropertyName("maxnum")]
+ public int MaxReplicas { get; set; }
+
+ ///
+ /// 获取或设置策略类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_type")]
+ public string PolicyType { get; set; } = default!;
+
+ ///
+ /// 获取或设置策略阈值(范围:0~100)。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_threshold")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_threshold")]
+ public int PolicyThreshold { get; set; }
+
+ ///
+ /// 获取或设置版本 IP。
+ ///
+ [Newtonsoft.Json.JsonProperty("version_ip")]
+ [System.Text.Json.Serialization.JsonPropertyName("version_ip")]
+ public string VersionIP { get; set; } = default!;
+
+ ///
+ /// 获取或设置版本端口。
+ ///
+ [Newtonsoft.Json.JsonProperty("version_port")]
+ [System.Text.Json.Serialization.JsonPropertyName("version_port")]
+ public int VersionPort { get; set; }
+
+ ///
+ /// 获取或设置端口号。
+ ///
+ [Newtonsoft.Json.JsonProperty("container_port")]
+ [System.Text.Json.Serialization.JsonPropertyName("container_port")]
+ public int ContainerPort { get; set; }
+
+ ///
+ /// 获取或设置仓库类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("repo_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("repo_type")]
+ public string RepositoryType { get; set; } = default!;
+
+ ///
+ /// 获取或设置仓库地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("repo")]
+ [System.Text.Json.Serialization.JsonPropertyName("repo")]
+ public string RepositoryUrl { get; set; } = default!;
+
+ ///
+ /// 获取或设置 Dockerfile 路径。
+ ///
+ [Newtonsoft.Json.JsonProperty("dockerfile_path")]
+ [System.Text.Json.Serialization.JsonPropertyName("dockerfile_path")]
+ public string DockerfilePath { get; set; } = default!;
+
+ ///
+ /// 获取或设置构建目录。
+ ///
+ [Newtonsoft.Json.JsonProperty("build_dir")]
+ [System.Text.Json.Serialization.JsonPropertyName("build_dir")]
+ public string BuildDirectory { get; set; } = default!;
+
+ ///
+ /// 获取或设置环境变量。
+ ///
+ [Newtonsoft.Json.JsonProperty("env_params")]
+ [System.Text.Json.Serialization.JsonPropertyName("env_params")]
+ public string EnvironmentVariables { get; set; } = default!;
+
+ ///
+ /// 获取或设置分支。
+ ///
+ [Newtonsoft.Json.JsonProperty("branch")]
+ [System.Text.Json.Serialization.JsonPropertyName("branch")]
+ public string Branch { get; set; } = default!;
+
+ ///
+ /// 获取或设置备注。
+ ///
+ [Newtonsoft.Json.JsonProperty("remark")]
+ [System.Text.Json.Serialization.JsonPropertyName("remark")]
+ public string? Remark { get; set; }
+
+ ///
+ /// 获取或设置包名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("package_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("package_name")]
+ public string PackageName { get; set; } = default!;
+
+ ///
+ /// 获取或设置包版本。
+ ///
+ [Newtonsoft.Json.JsonProperty("package_version")]
+ [System.Text.Json.Serialization.JsonPropertyName("package_version")]
+ public string PackageVersion { get; set; } = default!;
+
+ ///
+ /// 获取或设置镜像地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("image_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("image_url")]
+ public string? ImageUrl { get; set; }
+
+ ///
+ /// 获取或设置自定义采集日志路径。
+ ///
+ [Newtonsoft.Json.JsonProperty("custom_logs")]
+ [System.Text.Json.Serialization.JsonPropertyName("custom_logs")]
+ public string? CustomLogPath { get; set; }
+
+ ///
+ /// 获取或设置修改时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("updated_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("updated_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ public DateTimeOffset UpdateTime { get; set; } = default!;
+
+ ///
+ /// 获取或设置创建时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("created_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("created_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ public DateTimeOffset CreateTime { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionListRequest.cs
new file mode 100644
index 00000000..8566a37f
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionListRequest.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/getcsversionlist 接口的请求。
+ ///
+ public class ComponentTcbGetContainerServiceVersionListRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置服务名。
+ ///
+ [Newtonsoft.Json.JsonProperty("service_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("service_name")]
+ public string ServiceName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置分页起始位置。
+ ///
+ [Newtonsoft.Json.JsonProperty("offset")]
+ [System.Text.Json.Serialization.JsonPropertyName("offset")]
+ public int? Offset { get; set; }
+
+ ///
+ /// 获取或设置分页每页数量。
+ ///
+ [Newtonsoft.Json.JsonProperty("limit")]
+ [System.Text.Json.Serialization.JsonPropertyName("limit")]
+ public int? Limit { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionListResponse.cs
new file mode 100644
index 00000000..9688360f
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionListResponse.cs
@@ -0,0 +1,98 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/getcsversionlist 接口的响应。
+ ///
+ public class ComponentTcbGetContainerServiceVersionListResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class Version
+ {
+ ///
+ /// 获取或设置版本名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("version_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("version_name")]
+ public string VersionName { get; set; } = default!;
+
+ ///
+ /// 获取或设置版本状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("status")]
+ [System.Text.Json.Serialization.JsonPropertyName("status")]
+ public string Status { get; set; } = default!;
+
+ ///
+ /// 获取或设置流量占比。
+ ///
+ [Newtonsoft.Json.JsonProperty("flow_ratio")]
+ [System.Text.Json.Serialization.JsonPropertyName("flow_ratio")]
+ public int FlowRatio { get; set; }
+
+ ///
+ /// 获取或设置构建 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("buildid")]
+ [System.Text.Json.Serialization.JsonPropertyName("buildid")]
+ public int BuildId { get; set; }
+
+ ///
+ /// 获取或设置上传类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("upload_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("upload_type")]
+ public string UploadType { get; set; } = default!;
+
+ ///
+ /// 获取或设置最小副本数。
+ ///
+ [Newtonsoft.Json.JsonProperty("min_replicas")]
+ [System.Text.Json.Serialization.JsonPropertyName("min_replicas")]
+ public int MinReplicas { get; set; }
+
+ ///
+ /// 获取或设置最大副本数。
+ ///
+ [Newtonsoft.Json.JsonProperty("max_replicas")]
+ [System.Text.Json.Serialization.JsonPropertyName("max_replicas")]
+ public int MaxReplicas { get; set; }
+
+ ///
+ /// 获取或设置修改时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("updated_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("updated_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ public DateTimeOffset UpdateTime { get; set; } = default!;
+
+ ///
+ /// 获取或设置创建时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("created_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("created_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ public DateTimeOffset CreateTime { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置版本列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("items")]
+ [System.Text.Json.Serialization.JsonPropertyName("items")]
+ public Types.Version[] VersionList { get; set; } = default!;
+
+ ///
+ /// 获取或设置云函数总数量。
+ ///
+ [Newtonsoft.Json.JsonProperty("total")]
+ [System.Text.Json.Serialization.JsonPropertyName("total")]
+ public int TotalCount { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbSetContainerServiceVersionConfigRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbSetContainerServiceVersionConfigRequest.cs
new file mode 100644
index 00000000..70c18331
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbSetContainerServiceVersionConfigRequest.cs
@@ -0,0 +1,80 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/setcsversionconfig 接口的请求。
+ ///
+ public class ComponentTcbSetContainerServiceVersionConfigRequest : WechatApiRequest
+ {
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置服务名。
+ ///
+ [Newtonsoft.Json.JsonProperty("service_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("service_name")]
+ public string ServiceName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置版本名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("version_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("version_name")]
+ public string VersionName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置最小副本数(范围:0~50)。
+ ///
+ [Newtonsoft.Json.JsonProperty("minnum")]
+ [System.Text.Json.Serialization.JsonPropertyName("minnum")]
+ public int? MinReplicas { get; set; }
+
+ ///
+ /// 获取或设置最大副本数(范围:0~50)。
+ ///
+ [Newtonsoft.Json.JsonProperty("maxnum")]
+ [System.Text.Json.Serialization.JsonPropertyName("maxnum")]
+ public int? MaxReplicas { get; set; }
+
+ ///
+ /// 获取或设置端口号。
+ ///
+ [Newtonsoft.Json.JsonProperty("container_port")]
+ [System.Text.Json.Serialization.JsonPropertyName("container_port")]
+ public int? ContainerPort { get; set; }
+
+ ///
+ /// 获取或设置环境变量。
+ ///
+ [Newtonsoft.Json.JsonProperty("env_params")]
+ [System.Text.Json.Serialization.JsonPropertyName("env_params")]
+ public string? EnvironmentVariables { get; set; }
+
+ ///
+ /// 获取或设置自定义采集日志路径。
+ ///
+ [Newtonsoft.Json.JsonProperty("custom_logs")]
+ [System.Text.Json.Serialization.JsonPropertyName("custom_logs")]
+ public string? CustomLogPath { get; set; }
+
+ ///
+ /// 获取或设置备注。
+ ///
+ [Newtonsoft.Json.JsonProperty("remark")]
+ [System.Text.Json.Serialization.JsonPropertyName("remark")]
+ public string? Remark { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbSetContainerServiceVersionConfigResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbSetContainerServiceVersionConfigResponse.cs
new file mode 100644
index 00000000..fab47d54
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/ContainerService/Version/ComponentTcbSetContainerServiceVersionConfigResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/setcsversionconfig 接口的响应。
+ ///
+ public class ComponentTcbSetContainerServiceVersionConfigResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbAggregateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbAggregateRequest.cs
new file mode 100644
index 00000000..09abf48c
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbAggregateRequest.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbaggregate 接口的请求。
+ ///
+ public class ComponentTcbDbAggregateRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置数据库操作语句。
+ ///
+ [Newtonsoft.Json.JsonProperty("query")]
+ [System.Text.Json.Serialization.JsonPropertyName("query")]
+ public string QueryString { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbAggregateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbAggregateResponse.cs
new file mode 100644
index 00000000..e1e43908
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbAggregateResponse.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbaggregate 接口的响应。
+ ///
+ public class ComponentTcbDbAggregateResponse : WechatApiResponse
+ {
+ ///
+ /// 获取或设置查询数据列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("data")]
+ [System.Text.Json.Serialization.JsonPropertyName("data")]
+ public string[]? Data { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbCollectionRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbCollectionRequest.cs
new file mode 100644
index 00000000..2e29e6c7
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbCollectionRequest.cs
@@ -0,0 +1,53 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbcollection 接口的请求。
+ ///
+ public class ComponentTcbDbCollectionRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置操作类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("action")]
+ [System.Text.Json.Serialization.JsonPropertyName("action")]
+ public string Action { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置分页起始位置。
+ ///
+ [Newtonsoft.Json.JsonProperty("offset")]
+ [System.Text.Json.Serialization.JsonPropertyName("offset")]
+ public int? Offset { get; set; }
+
+ ///
+ /// 获取或设置分页每页数量。
+ ///
+ [Newtonsoft.Json.JsonProperty("limit")]
+ [System.Text.Json.Serialization.JsonPropertyName("limit")]
+ public int? Limit { get; set; }
+
+ ///
+ /// 获取或设置集合名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("collection_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("collection_name")]
+ public string? CollectionName { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbCollectionResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbCollectionResponse.cs
new file mode 100644
index 00000000..8020d9cf
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbCollectionResponse.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbcollection 接口的响应。
+ ///
+ public class ComponentTcbDbCollectionResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class Collection
+ {
+ ///
+ /// 获取或设置集合名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("name")]
+ [System.Text.Json.Serialization.JsonPropertyName("name")]
+ public string CollectionName { get; set; } = default!;
+
+ ///
+ /// 获取或设置数量。
+ ///
+ [Newtonsoft.Json.JsonProperty("count")]
+ [System.Text.Json.Serialization.JsonPropertyName("count")]
+ public int Count { get; set; }
+
+ ///
+ /// 获取或设置大小。
+ ///
+ [Newtonsoft.Json.JsonProperty("size")]
+ [System.Text.Json.Serialization.JsonPropertyName("size")]
+ public int Size { get; set; }
+
+ ///
+ /// 获取或设置索引数量。
+ ///
+ [Newtonsoft.Json.JsonProperty("index_count")]
+ [System.Text.Json.Serialization.JsonPropertyName("index_count")]
+ public int IndexCount { get; set; }
+
+ ///
+ /// 获取或设置索引大小。
+ ///
+ [Newtonsoft.Json.JsonProperty("index_size")]
+ [System.Text.Json.Serialization.JsonPropertyName("index_size")]
+ public int IndexSize { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置集合列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("collections")]
+ [System.Text.Json.Serialization.JsonPropertyName("collections")]
+ public Types.Collection[]? CollectionList { get; set; }
+
+ ///
+ /// 获取或设置总数量。
+ ///
+ [Newtonsoft.Json.JsonProperty("total")]
+ [System.Text.Json.Serialization.JsonPropertyName("total")]
+ public int? TotalCount { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbExportRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbExportRequest.cs
new file mode 100644
index 00000000..3541a580
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbExportRequest.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbexport 接口的请求。
+ ///
+ public class ComponentTcbDbExportRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置导入文件路径。
+ ///
+ [Newtonsoft.Json.JsonProperty("file_path")]
+ [System.Text.Json.Serialization.JsonPropertyName("file_path")]
+ public string FilePath { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置导入文件类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("file_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("file_type")]
+ public int FileType { get; set; }
+
+ ///
+ /// 获取或设置导出查询语句。
+ ///
+ [Newtonsoft.Json.JsonProperty("query")]
+ [System.Text.Json.Serialization.JsonPropertyName("query")]
+ public string QueryString { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbExportResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbExportResponse.cs
new file mode 100644
index 00000000..dfa7868d
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbExportResponse.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbexport 接口的响应。
+ ///
+ public class ComponentTcbDbExportResponse : WechatApiResponse
+ {
+ ///
+ /// 获取或设置导出任务 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("job_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("job_id")]
+ public int JobId { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbGetACLRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbGetACLRequest.cs
new file mode 100644
index 00000000..6acab83a
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbGetACLRequest.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbgetacl 接口的请求。
+ ///
+ public class ComponentTcbDbGetACLRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置集合名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("collection_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("collection_name")]
+ public string CollectionName { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbGetACLResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbGetACLResponse.cs
new file mode 100644
index 00000000..6b8a764e
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbGetACLResponse.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbgetacl 接口的响应。
+ ///
+ public class ComponentTcbDbGetACLResponse : WechatApiResponse
+ {
+ ///
+ /// 获取或设置权限说明。
+ ///
+ [Newtonsoft.Json.JsonProperty("acl_tag")]
+ [System.Text.Json.Serialization.JsonPropertyName("acl_tag")]
+ public string ACLTag { get; set; } = default!;
+
+ ///
+ /// 获取或设置自定义规则。
+ ///
+ [Newtonsoft.Json.JsonProperty("rule")]
+ [System.Text.Json.Serialization.JsonPropertyName("rule")]
+ public string Rule { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbImportRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbImportRequest.cs
new file mode 100644
index 00000000..907f9840
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbImportRequest.cs
@@ -0,0 +1,60 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbimport 接口的请求。
+ ///
+ public class ComponentTcbDbImportRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置集合名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("collection_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("collection_name")]
+ public string CollectionName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置导入文件路径。
+ ///
+ [Newtonsoft.Json.JsonProperty("file_path")]
+ [System.Text.Json.Serialization.JsonPropertyName("file_path")]
+ public string FilePath { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置导入文件类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("file_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("file_type")]
+ public int FileType { get; set; }
+
+ ///
+ /// 获取或设置是否在遇到错误时停止导入。
+ ///
+ [Newtonsoft.Json.JsonProperty("stop_on_error")]
+ [System.Text.Json.Serialization.JsonPropertyName("stop_on_error")]
+ public bool RequireStopOnError { get; set; }
+
+ ///
+ /// 获取或设置冲突处理模式。
+ ///
+ [Newtonsoft.Json.JsonProperty("conflict_mode")]
+ [System.Text.Json.Serialization.JsonPropertyName("conflict_mode")]
+ public int ConflictMode { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbImportResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbImportResponse.cs
new file mode 100644
index 00000000..5e3c0fa4
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbImportResponse.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbimport 接口的响应。
+ ///
+ public class ComponentTcbDbImportResponse : WechatApiResponse
+ {
+ ///
+ /// 获取或设置导入任务 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("job_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("job_id")]
+ public int JobId { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbIndexRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbIndexRequest.cs
new file mode 100644
index 00000000..0608f33d
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbIndexRequest.cs
@@ -0,0 +1,86 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbindex 接口的请求。
+ ///
+ public class ComponentTcbDbIndexRequest : WechatApiRequest
+ {
+ public static class Types
+ {
+ public class Index
+ {
+ public static class Types
+ {
+ public class Field
+ {
+ ///
+ /// 获取或设置字段名。
+ ///
+ [Newtonsoft.Json.JsonProperty("name")]
+ [System.Text.Json.Serialization.JsonPropertyName("name")]
+ public string Name { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置字段排序。
+ ///
+ [Newtonsoft.Json.JsonProperty("direction")]
+ [System.Text.Json.Serialization.JsonPropertyName("direction")]
+ public string? Direction { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置索引名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("name")]
+ [System.Text.Json.Serialization.JsonPropertyName("name")]
+ public string IndexName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置字段列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("keys")]
+ [System.Text.Json.Serialization.JsonPropertyName("keys")]
+ public IList? FieldList { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置操作类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("action")]
+ [System.Text.Json.Serialization.JsonPropertyName("action")]
+ public string Action { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置集合名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("collection_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("collection_name")]
+ public string CollectionName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置索引列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("indexes")]
+ [System.Text.Json.Serialization.JsonPropertyName("indexes")]
+ public IList? IndexList { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbIndexResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbIndexResponse.cs
new file mode 100644
index 00000000..6635bc26
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbIndexResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbindex 接口的响应。
+ ///
+ public class ComponentTcbDbIndexResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbMigrationStateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbMigrationStateRequest.cs
new file mode 100644
index 00000000..4773e4cb
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbMigrationStateRequest.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbmigrationstate 接口的请求。
+ ///
+ public class ComponentTcbDbMigrationStateRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置导出任务 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("job_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("job_id")]
+ public int JobId { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbMigrationStateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbMigrationStateResponse.cs
new file mode 100644
index 00000000..d45da70d
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbMigrationStateResponse.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbmigrationstate 接口的响应。
+ ///
+ public class ComponentTcbDbMigrationStateResponse : WechatApiResponse
+ {
+ ///
+ /// 获取或设置状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("status")]
+ [System.Text.Json.Serialization.JsonPropertyName("status")]
+ public string Status { get; set; } = default!;
+
+ ///
+ /// 获取或设置成功记录数。
+ ///
+ [Newtonsoft.Json.JsonProperty("record_success")]
+ [System.Text.Json.Serialization.JsonPropertyName("record_success")]
+ public int SuccessCount { get; set; }
+
+ ///
+ /// 获取或设置失败记录数。
+ ///
+ [Newtonsoft.Json.JsonProperty("record_fail")]
+ [System.Text.Json.Serialization.JsonPropertyName("record_fail")]
+ public int FailCount { get; set; }
+
+ ///
+ /// 获取或设置失败原因。
+ ///
+ [Newtonsoft.Json.JsonProperty("error_msg")]
+ [System.Text.Json.Serialization.JsonPropertyName("error_msg")]
+ public string? FailReason { get; set; }
+
+ ///
+ /// 获取或设置导出文件下载地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("file_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("file_url")]
+ public string? FileUrl { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbModifyACLRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbModifyACLRequest.cs
new file mode 100644
index 00000000..16d9bdca
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbModifyACLRequest.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbmodifyacl 接口的请求。
+ ///
+ public class ComponentTcbDbModifyACLRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置集合名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("collection_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("collection_name")]
+ public string CollectionName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置权限说明。
+ ///
+ [Newtonsoft.Json.JsonProperty("acl_tag")]
+ [System.Text.Json.Serialization.JsonPropertyName("acl_tag")]
+ public string ACLTag { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置自定义规则。
+ ///
+ [Newtonsoft.Json.JsonProperty("rule")]
+ [System.Text.Json.Serialization.JsonPropertyName("rule")]
+ public string Rule { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbModifyACLResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbModifyACLResponse.cs
new file mode 100644
index 00000000..99ccbc9a
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbModifyACLResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbmodifyacl 接口的响应。
+ ///
+ public class ComponentTcbDbModifyACLResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbRecordRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbRecordRequest.cs
new file mode 100644
index 00000000..fc6ea742
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbRecordRequest.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbrecord 接口的请求。
+ ///
+ public class ComponentTcbDbRecordRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置操作类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("action")]
+ [System.Text.Json.Serialization.JsonPropertyName("action")]
+ public string Action { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置数据库操作语句。
+ ///
+ [Newtonsoft.Json.JsonProperty("query")]
+ [System.Text.Json.Serialization.JsonPropertyName("query")]
+ public string? QueryString { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbRecordResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbRecordResponse.cs
new file mode 100644
index 00000000..0e5adee0
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Database/ComponentTcbDbRecordResponse.cs
@@ -0,0 +1,87 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/dbrecord 接口的响应。
+ ///
+ public class ComponentTcbDbRecordResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class Pagination
+ {
+ ///
+ /// 获取或设置分页起始位置。
+ ///
+ [Newtonsoft.Json.JsonProperty("offset")]
+ [System.Text.Json.Serialization.JsonPropertyName("offset")]
+ public int Offset { get; set; }
+
+ ///
+ /// 获取或设置分页每页数量。
+ ///
+ [Newtonsoft.Json.JsonProperty("limit")]
+ [System.Text.Json.Serialization.JsonPropertyName("limit")]
+ public int Limit { get; set; }
+
+ ///
+ /// 获取或设置总数量。
+ ///
+ [Newtonsoft.Json.JsonProperty("total")]
+ [System.Text.Json.Serialization.JsonPropertyName("total")]
+ public int TotalCount { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置插入成功的数据集合主键 ID 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("id_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("id_list")]
+ public string[]? IdList { get; set; }
+
+ ///
+ /// 获取或设置查询分页信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("pager")]
+ [System.Text.Json.Serialization.JsonPropertyName("pager")]
+ public Types.Pagination? Pagination { get; set; }
+
+ ///
+ /// 获取或设置查询数据列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("data")]
+ [System.Text.Json.Serialization.JsonPropertyName("data")]
+ public string[]? Data { get; set; }
+
+ ///
+ /// 获取或设置修改记录数。
+ ///
+ [Newtonsoft.Json.JsonProperty("modified")]
+ [System.Text.Json.Serialization.JsonPropertyName("modified")]
+ public int? ModifiedCount { get; set; }
+
+ ///
+ /// 获取或设置匹配记录数。
+ ///
+ [Newtonsoft.Json.JsonProperty("matched")]
+ [System.Text.Json.Serialization.JsonPropertyName("matched")]
+ public int? MatchedCount { get; set; }
+
+ ///
+ /// 获取或设置新插入记录的 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("id")]
+ [System.Text.Json.Serialization.JsonPropertyName("id")]
+ public string? Id { get; set; }
+
+ ///
+ /// 获取或设置删除记录数。
+ ///
+ [Newtonsoft.Json.JsonProperty("deleted")]
+ [System.Text.Json.Serialization.JsonPropertyName("deleted")]
+ public int? DeletedCount { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Environment/ComponentTcbDescribeEnvironmentsResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Environment/ComponentTcbDescribeEnvironmentsResponse.cs
index 23376178..e1bea45f 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Environment/ComponentTcbDescribeEnvironmentsResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/Environment/ComponentTcbDescribeEnvironmentsResponse.cs
@@ -68,7 +68,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("update_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
- public DateTimeOffset UpdateTime { get; set; } = default!;
+ public DateTimeOffset UpdateTime { get; set; }
///
/// 获取或设置创建时间。
@@ -77,7 +77,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
- public DateTimeOffset CreateTime { get; set; } = default!;
+ public DateTimeOffset CreateTime { get; set; }
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/SCF/ComponentTcbGetSCFListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/SCF/ComponentTcbGetSCFListResponse.cs
index b9bfedf5..911d23c2 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/SCF/ComponentTcbGetSCFListResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/SCF/ComponentTcbGetSCFListResponse.cs
@@ -67,7 +67,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("mod_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
- public DateTimeOffset UpdateTime { get; set; } = default!;
+ public DateTimeOffset UpdateTime { get; set; }
///
/// 获取或设置创建时间。
@@ -76,7 +76,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("add_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
- public DateTimeOffset CreateTime { get; set; } = default!;
+ public DateTimeOffset CreateTime { get; set; }
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreRequest.cs
new file mode 100644
index 00000000..ba1fc66d
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreRequest.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/createstaticstore 接口的请求。
+ ///
+ public class ComponentTcbCreateStaticStoreRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreResponse.cs
new file mode 100644
index 00000000..3614d387
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/createstaticstore 接口的响应。
+ ///
+ public class ComponentTcbCreateStaticStoreResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreRequest.cs
new file mode 100644
index 00000000..5e581584
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreRequest.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/describestaticstore 接口的请求。
+ ///
+ public class ComponentTcbDescribeStaticStoreRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreResponse.cs
new file mode 100644
index 00000000..a14e31b9
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreResponse.cs
@@ -0,0 +1,60 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/describestaticstore 接口的响应。
+ ///
+ public class ComponentTcbDescribeStaticStoreResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class Website
+ {
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = default!;
+
+ ///
+ /// 获取或设置域名。
+ ///
+ [Newtonsoft.Json.JsonProperty("domain")]
+ [System.Text.Json.Serialization.JsonPropertyName("domain")]
+ public string Domain { get; set; } = default!;
+
+ ///
+ /// 获取或设置存储桶。
+ ///
+ [Newtonsoft.Json.JsonProperty("bucket")]
+ [System.Text.Json.Serialization.JsonPropertyName("bucket")]
+ public string Bucket { get; set; } = default!;
+
+ ///
+ /// 获取或设置区域。
+ ///
+ [Newtonsoft.Json.JsonProperty("regoin")]
+ [System.Text.Json.Serialization.JsonPropertyName("regoin")]
+ public string Region { get; set; } = default!;
+
+ ///
+ /// 获取或设置状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("status")]
+ [System.Text.Json.Serialization.JsonPropertyName("status")]
+ public string Status { get; set; } = default!;
+ }
+ }
+
+
+ ///
+ /// 获取或设置网站列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("data")]
+ [System.Text.Json.Serialization.JsonPropertyName("data")]
+ public Types.Website[] WebsiteList { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticFileListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticFileListRequest.cs
new file mode 100644
index 00000000..756b245d
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticFileListRequest.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/staticfilelist 接口的请求。
+ ///
+ public class ComponentTcbStaticFileListRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置前缀匹配。
+ ///
+ [Newtonsoft.Json.JsonProperty("prefix")]
+ [System.Text.Json.Serialization.JsonPropertyName("prefix")]
+ public string? Prefix { get; set; }
+
+ ///
+ /// 获取或设置定界符。
+ ///
+ [Newtonsoft.Json.JsonProperty("delimiter")]
+ [System.Text.Json.Serialization.JsonPropertyName("delimiter")]
+ public string? Delimiter { get; set; }
+
+ ///
+ /// 获取或设置标志位。
+ ///
+ [Newtonsoft.Json.JsonProperty("marker")]
+ [System.Text.Json.Serialization.JsonPropertyName("marker")]
+ public string? Marker { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticFileListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticFileListResponse.cs
new file mode 100644
index 00000000..853403d5
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticFileListResponse.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/staticfilelist 接口的响应。
+ ///
+ public class ComponentTcbStaticFileListResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class File : ComponentTcbGetBucketResponse.Types.File
+ {
+ }
+ }
+
+
+ ///
+ /// 获取或设置网站列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("contents")]
+ [System.Text.Json.Serialization.JsonPropertyName("contents")]
+ public Types.File[] FileList { get; set; } = default!;
+
+ ///
+ /// 获取或设置内容是否被截断。
+ ///
+ [Newtonsoft.Json.JsonProperty("is_truncated")]
+ [System.Text.Json.Serialization.JsonPropertyName("is_truncated")]
+ public bool IsTruncated { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileRequest.cs
new file mode 100644
index 00000000..b3394282
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileRequest.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/staticuploadfile 接口的请求。
+ ///
+ public class ComponentTcbStaticUploadFileRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置第三方平台 AccessToken。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ComponentAccessToken { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置上传文件名。
+ ///
+ [Newtonsoft.Json.JsonProperty("filename")]
+ [System.Text.Json.Serialization.JsonPropertyName("filename")]
+ public string FileName { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileResponse.cs
new file mode 100644
index 00000000..25e9b57e
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileResponse.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /componenttcb/staticuploadfile 接口的响应。
+ ///
+ public class ComponentTcbStaticUploadFileResponse : WechatApiResponse
+ {
+ ///
+ /// 获取或设置上传 URL。
+ ///
+ [Newtonsoft.Json.JsonProperty("signed_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("signed_url")]
+ public string Url { get; set; } = default!;
+
+ ///
+ /// 获取或设置上传凭证。
+ ///
+ [Newtonsoft.Json.JsonProperty("token")]
+ [System.Text.Json.Serialization.JsonPropertyName("token")]
+ public string Token { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbCreateCloudUserRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbCreateCloudUserRequest.cs
new file mode 100644
index 00000000..232a8a9a
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbCreateCloudUserRequest.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /tcb/createclouduser 接口的请求。
+ ///
+ public class TcbCreateCloudUserRequest : WechatApiRequest
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbCreateCloudUserResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbCreateCloudUserResponse.cs
new file mode 100644
index 00000000..de826249
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbCreateCloudUserResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /tcb/createclouduser 接口的响应。
+ ///
+ public class TcbCreateCloudUserResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbCreateEnvironmentAndResourceRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbCreateEnvironmentAndResourceRequest.cs
new file mode 100644
index 00000000..0364a484
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbCreateEnvironmentAndResourceRequest.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /tcb/createenvandresource 接口的请求。
+ ///
+ public class TcbCreateEnvironmentAndResourceRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置环境别名。
+ ///
+ [Newtonsoft.Json.JsonProperty("alias")]
+ [System.Text.Json.Serialization.JsonPropertyName("alias")]
+ public string Alias { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbCreateEnvironmentAndResourceResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbCreateEnvironmentAndResourceResponse.cs
new file mode 100644
index 00000000..f25985f0
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbCreateEnvironmentAndResourceResponse.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /tcb/createenvandresource 接口的响应。
+ ///
+ public class TcbCreateEnvironmentAndResourceResponse : WechatApiResponse
+ {
+ ///
+ /// 获取或设置环境状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("status")]
+ [System.Text.Json.Serialization.JsonPropertyName("status")]
+ public string Status { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbGetEnvironmentInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbGetEnvironmentInfoRequest.cs
new file mode 100644
index 00000000..182f741e
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbGetEnvironmentInfoRequest.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /tcb/getenvinfo 接口的请求。
+ ///
+ public class TcbGetEnvironmentInfoRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbGetEnvironmentInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbGetEnvironmentInfoResponse.cs
new file mode 100644
index 00000000..49aa2ead
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbGetEnvironmentInfoResponse.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /tcb/getenvinfo 接口的响应。
+ ///
+ public class TcbGetEnvironmentInfoResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class Environment
+ {
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = default!;
+
+ ///
+ /// 获取或设置环境别名。
+ ///
+ [Newtonsoft.Json.JsonProperty("alias")]
+ [System.Text.Json.Serialization.JsonPropertyName("alias")]
+ public string Alias { get; set; } = default!;
+
+ ///
+ /// 获取或设置环境状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("status")]
+ [System.Text.Json.Serialization.JsonPropertyName("status")]
+ public string Status { get; set; } = default!;
+
+ ///
+ /// 获取或设置产品套餐 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("package_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("package_id")]
+ public string? PackageId { get; set; }
+
+ ///
+ /// 获取或设置产品套餐名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("package_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("package_name")]
+ public string? PackageName { get; set; }
+
+ ///
+ /// 获取或设置修改时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("update_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("update_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ public DateTimeOffset UpdateTime { get; set; } = default!;
+
+ ///
+ /// 获取或设置创建时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("create_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("create_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
+ public DateTimeOffset CreateTime { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置环境列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("info_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("info_list")]
+ public Types.Environment[] EnvironmentList { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbModifyEnvironmentRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbModifyEnvironmentRequest.cs
new file mode 100644
index 00000000..78980e82
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbModifyEnvironmentRequest.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /tcb/modifyenv 接口的请求。
+ ///
+ public class TcbModifyEnvironmentRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbModifyEnvironmentResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbModifyEnvironmentResponse.cs
new file mode 100644
index 00000000..e7b78a4e
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbModifyEnvironmentResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /tcb/modifyenv 接口的响应。
+ ///
+ public class TcbModifyEnvironmentResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbShareEnvironmentRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbShareEnvironmentRequest.cs
new file mode 100644
index 00000000..2996ede9
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbShareEnvironmentRequest.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /tcb/shareenv 接口的请求。
+ ///
+ public class TcbShareEnvironmentRequest : WechatApiRequest
+ {
+ ///
+ /// 获取或设置环境 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("env")]
+ [System.Text.Json.Serialization.JsonPropertyName("env")]
+ public string EnvironmentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置被授权的 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public string AppId { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbShareEnvironmentResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbShareEnvironmentResponse.cs
new file mode 100644
index 00000000..b8fa6252
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Tcb/ThirdPartyPlatforms/TcbShareEnvironmentResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /tcb/shareenv 接口的响应。
+ ///
+ public class TcbShareEnvironmentResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbBatchDeleteFileRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbBatchDeleteFileRequest.json
new file mode 100644
index 00000000..312bff7f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbBatchDeleteFileRequest.json
@@ -0,0 +1,6 @@
+{
+ "env": "test2-4a89da",
+ "fileid_list": [
+ "cloud://test2-4a89da.7465-test2-4a89da/A.png"
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbBatchDeleteFileResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbBatchDeleteFileResponse.json
new file mode 100644
index 00000000..98178bc9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbBatchDeleteFileResponse.json
@@ -0,0 +1,11 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "delete_list": [
+ {
+ "fileid": "cloud://test2-4a89da.7465-test2-4a89da/A.png",
+ "status": 0,
+ "errmsg": "ok"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbBatchDownloadFileRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbBatchDownloadFileRequest.json
new file mode 100644
index 00000000..0449b8d2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbBatchDownloadFileRequest.json
@@ -0,0 +1,9 @@
+{
+ "env": "test2-4a89da",
+ "file_list": [
+ {
+ "fileid": "cloud://test2-4a89da.7465-test2-4a89da/A.png",
+ "max_age": 7200
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbBatchDownloadFileResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbBatchDownloadFileResponse.json
new file mode 100644
index 00000000..90a12451
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbBatchDownloadFileResponse.json
@@ -0,0 +1,12 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "file_list": [
+ {
+ "fileid": "cloud://test2-4a89da.7465-test2-4a89da/A.png",
+ "download_url": "https://7465-test2-4a89da-1258717764.tcb.qcloud.la/A.png",
+ "status": 0,
+ "errmsg": "ok"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbGetBucketRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbGetBucketRequest.json
new file mode 100644
index 00000000..ba2552f8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbGetBucketRequest.json
@@ -0,0 +1,3 @@
+{
+ "env": "test-env1"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbGetBucketResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbGetBucketResponse.json
new file mode 100644
index 00000000..cb3e686a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbGetBucketResponse.json
@@ -0,0 +1,19 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "contents": [
+ {
+ "key": "Dockerfile",
+ "last_modified": "2020-12-04T08:56:59.000Z",
+ "md5": "6f58c139dc7aaefe41e3b40a8cb8f219-1",
+ "size": "554"
+ },
+ {
+ "key": "test_export",
+ "last_modified": "2020-12-04T09:35:56.000Z",
+ "md5": "e1ab5133bf151a78c466a90fa3a38a6e-1",
+ "size": "400"
+ }
+ ],
+ "is_truncated": false
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbUploadFileRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbUploadFileRequest.json
new file mode 100644
index 00000000..13c03f75
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbUploadFileRequest.json
@@ -0,0 +1,4 @@
+{
+ "env": "test2-4a89da",
+ "path": "this/is/a/example/file.path"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbUploadFileResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbUploadFileResponse.json
new file mode 100644
index 00000000..38605fb0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/COS/ComponentTcbUploadFileResponse.json
@@ -0,0 +1,9 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "url": "https://cos.ap-shanghai.myqcloud.com/7465-test2-4a89da-1258717764/testupload",
+ "token": "Cukha70zkXIBqkh1OhUIFqjUmXLXeSWq7dff61099221bb270522b8e0cf21d72e0aWCfGXEIDT5bKVJgykFFr9_MeQ-ExrsZ8oiFdMwyYag8h0r-EJq_EaO94KzksxH6bAeb4Y7SwZjJqoy_4g1Na797F1IEG9Dnstm_rz02AgaP5HbJwt1P-XHT4Xjw_lafla079gtQKAP-EPbE5Tc8BRXIm32esjGDDDuDyml7IJqbsPolYZ4-CHQsisdx488loGAN4f7YRMkrrP1Pgi5XOm0-iG5HbWd3tHtuE2pzsGkTobO_fyz2PfSPaeUt_735ll38yIWpAFESAsZnBj2DcRSPBT2FJ_s5mOZACS53q6-tWXPO0AR3-EhOCQpiDKsldVsCxz00Uwhgm1T6Ozw777fJEFkUIngUdZ5yajy3LA84Mpfu6CLkFjfiBtz3wpmcCQxhijo_CrVHkmaMc2JBQ",
+ "authorization": "q-sign-algorithm=sha1&q-ak=AKID98EDB528Sfqerp0Z_7l23we-u4Avrx04te9VvlzGihMTseysMgu7iSdh_hxEnoAy&q-sign-time=1557307130;1557308030&q-key-time=1557307130;1557308030&q-header-list=&q-url-param-list=&q-signature=ac95227b67a04157bb5e49b435c6ac3ce88e03f2",
+ "file_id": "cloud://test2-4a89da.7465-test2-4a89da-1258717764/testupload",
+ "cos_file_id": "HDze32/qZENCwWi5N5akgoXSv3U8DsccKaqCxTMGs0zFgvlD28j484/VYFPJ1l2QDh0Qy8wNbQCpxs5zEsLJln1lIY9RGYn1LzRQQQYFQm+Xwvw6S4YEZN1AIwY906mwIBgiI3gKGkU2K1+1ZEnEYEM4Uh/C1JxB4Q=="
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbCreateContainerServiceRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbCreateContainerServiceRequest.json
new file mode 100644
index 00000000..d9ba787e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbCreateContainerServiceRequest.json
@@ -0,0 +1,10 @@
+{
+ "env": "mmtest-5g7z68c153d7ff4b",
+ "service_name": "echo",
+ "remark": "test",
+ "vpc": {
+ "vpcid": "123",
+ "subnetids": [ "123" ],
+ "create_type": 3
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbCreateContainerServiceResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbCreateContainerServiceResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbCreateContainerServiceResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbGetContainerServiceListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbGetContainerServiceListRequest.json
new file mode 100644
index 00000000..00b61da0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbGetContainerServiceListRequest.json
@@ -0,0 +1,3 @@
+{
+ "env": "test-env1"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbGetContainerServiceListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbGetContainerServiceListResponse.json
new file mode 100644
index 00000000..0b7a6206
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbGetContainerServiceListResponse.json
@@ -0,0 +1,15 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "cslist": [
+ {
+ "server_name": "echo",
+ "created_time": "2020-12-07 21:30:44",
+ "updated_time": "2020-12-07 21:30:44",
+ "status": "succ",
+ "vpcid": "vpc-a9ejy7oi",
+ "image_repo": "tcb-100016998354-etdk/myttest2-9g1m6omv9fa12048_echo"
+ }
+ ],
+ "total": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbOpenContainerServiceRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbOpenContainerServiceRequest.json
new file mode 100644
index 00000000..ba2552f8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbOpenContainerServiceRequest.json
@@ -0,0 +1,3 @@
+{
+ "env": "test-env1"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbOpenContainerServiceResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbOpenContainerServiceResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbOpenContainerServiceResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbUseCloudAccessTokenRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbUseCloudAccessTokenRequest.json
new file mode 100644
index 00000000..646fbd49
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbUseCloudAccessTokenRequest.json
@@ -0,0 +1,7 @@
+{
+ "action": "set",
+ "open": true,
+ "env": "myttest-8gu57so0bd9f9e8a",
+ "api_whitelist": [ "/*" ],
+ "version": 6
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbUseCloudAccessTokenResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbUseCloudAccessTokenResponse.json
new file mode 100644
index 00000000..02e022b8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/ComponentTcbUseCloudAccessTokenResponse.json
@@ -0,0 +1,9 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "open": true,
+ "api_whitelist": [
+ "/*"
+ ],
+ "version": 2
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Propotion/ComponentTcbBatchSetContainerServicePropotionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Propotion/ComponentTcbBatchSetContainerServicePropotionRequest.json
new file mode 100644
index 00000000..dd4381f7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Propotion/ComponentTcbBatchSetContainerServicePropotionRequest.json
@@ -0,0 +1,18 @@
+{
+ "items": [
+ {
+ "env": "tiyan1-5gzlnxws501f4e68",
+ "service_name": "echo",
+ "items": [
+ {
+ "version_name": "echo-004",
+ "flow_ratio": 80
+ },
+ {
+ "version_name": "echo-007",
+ "flow_ratio": 20
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Propotion/ComponentTcbBatchSetContainerServicePropotionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Propotion/ComponentTcbBatchSetContainerServicePropotionResponse.json
new file mode 100644
index 00000000..5d2bb15e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Propotion/ComponentTcbBatchSetContainerServicePropotionResponse.json
@@ -0,0 +1,11 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "fail_list": [],
+ "succ_list": [
+ {
+ "env": "tiyan1-5gzlnxws501f4e68",
+ "service_name": "echo"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Propotion/ComponentTcbSetContainerServicePropotionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Propotion/ComponentTcbSetContainerServicePropotionRequest.json
new file mode 100644
index 00000000..c7c15673
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Propotion/ComponentTcbSetContainerServicePropotionRequest.json
@@ -0,0 +1,14 @@
+{
+ "env": "mmtest-5g7z68c153d7ff4b",
+ "service_name": "echo",
+ "items": [
+ {
+ "version_name": "echo-003",
+ "flow_ratio": 80
+ },
+ {
+ "version_name": "echo-008",
+ "flow_ratio": 20
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Propotion/ComponentTcbSetContainerServicePropotionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Propotion/ComponentTcbSetContainerServicePropotionResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Propotion/ComponentTcbSetContainerServicePropotionResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbBatchCreateContainerServiceVersionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbBatchCreateContainerServiceVersionRequest.json
new file mode 100644
index 00000000..0c540ec3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbBatchCreateContainerServiceVersionRequest.json
@@ -0,0 +1,14 @@
+{
+ "envs": [ "myttest2-9g1m6omv9fa12048", "myttest-8gu57so0bd9f9e8a" ],
+ "service_name": "echo",
+ "upload_type": "repository",
+ "repository_type": "github",
+ "repository": "https://github.com/maoyutao/wx-container-demo.git",
+ "code_detail": {
+ "name": {
+ "fullname": "maoyutao/wx-container-demo"
+ },
+ "url": "https://github.com/maoyutao/wx-container-demo.git"
+ },
+ "dockerfile_path": "Dockerfile"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbBatchCreateContainerServiceVersionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbBatchCreateContainerServiceVersionResponse.json
new file mode 100644
index 00000000..50a91b2d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbBatchCreateContainerServiceVersionResponse.json
@@ -0,0 +1,16 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "fail_list": [
+ {
+ "env": "test",
+ "errormsg": "xx"
+ }
+ ],
+ "succ_list": [
+ {
+ "env": "test",
+ "version_name": "echo001"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbBatchDeleteContainerServiceVersionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbBatchDeleteContainerServiceVersionRequest.json
new file mode 100644
index 00000000..d38fccf0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbBatchDeleteContainerServiceVersionRequest.json
@@ -0,0 +1,20 @@
+{
+ "items": [
+ {
+ "env": "tiyan1-5gzlnxws501f4e68",
+ "service_name": "echo",
+ "version_name": "echo-004"
+ },
+ {
+ "env": "tiyan1-5gzlnxws501f4e68",
+ "service_name": "echo",
+ "version_name": "echo-001"
+ },
+ {
+ "env": "tiyan1-5gzlnxws501f4e68",
+ "service_name": "echo",
+ "version_name": "echo-003"
+ }
+ ]
+
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbBatchDeleteContainerServiceVersionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbBatchDeleteContainerServiceVersionResponse.json
new file mode 100644
index 00000000..4f5c3a88
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbBatchDeleteContainerServiceVersionResponse.json
@@ -0,0 +1,22 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "fail_list": [],
+ "succ_list": [
+ {
+ "env": "tiyan1-5gzlnxws501f4e68",
+ "service_name": "echo",
+ "version_name": "echo-004"
+ },
+ {
+ "env": "tiyan1-5gzlnxws501f4e68",
+ "service_name": "echo",
+ "version_name": "echo-001"
+ },
+ {
+ "env": "tiyan1-5gzlnxws501f4e68",
+ "service_name": "echo",
+ "version_name": "echo-003"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbCreateContainerServiceVersionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbCreateContainerServiceVersionRequest.json
new file mode 100644
index 00000000..6b1c9d44
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbCreateContainerServiceVersionRequest.json
@@ -0,0 +1,15 @@
+{
+ "env": "mmtest-5g7z68c153d7ff4b",
+ "service_name": "echo",
+ "upload_type": "repository",
+ "repository_type": "github",
+ "repository": "https://github.com/maoyutao/wx-container-demo.git",
+ "code_detail": {
+ "name": {
+ "fullname": "maoyutao/wx-container-demo",
+ "name": "wx-container-demo"
+ },
+ "url": "https://github.com/maoyutao/wx-container-demo.git"
+ },
+ "dockerfile_path": "Dockerfile"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbCreateContainerServiceVersionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbCreateContainerServiceVersionResponse.json
new file mode 100644
index 00000000..c2aaf152
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbCreateContainerServiceVersionResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "version_name": "echo-001"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionDetailRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionDetailRequest.json
new file mode 100644
index 00000000..5b8d5d50
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionDetailRequest.json
@@ -0,0 +1,5 @@
+{
+ "env": "mmtest-5g7z68c153d7ff4b",
+ "service_name": "echo",
+ "version_name": "echo-009"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionDetailResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionDetailResponse.json
new file mode 100644
index 00000000..cb66d5a0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionDetailResponse.json
@@ -0,0 +1,29 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "version_name": "echo-009",
+ "remark": "",
+ "dockerfile_path": "Dockerfile",
+ "build_dir": "",
+ "cpu": 0.5,
+ "mem": 1,
+ "minnum": 0,
+ "maxnum": 50,
+ "policy_type": "cpu",
+ "policy_threshold": 60,
+ "env_params": "",
+ "created_time": "2020-12-09 11:23:19",
+ "updated_time": "2020-12-09 16:43:21",
+ "version_ip": "10.0.192.6",
+ "version_port": 80,
+ "status": "normal",
+ "package_name": "",
+ "package_version": "",
+ "upload_type": "repository",
+ "repo_type": "github",
+ "repo": "https://github.com/maoyutao/wx-container-demo.git",
+ "branch": "",
+ "custom_logs": "stdout",
+ "container_port": 80,
+ "image_url": "ccr.ccs.tencentyun.com/tcb-100016925355-hglp/mmtest-5g7z68c153d7ff4b_echo:echo-009-1607484199"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionListRequest.json
new file mode 100644
index 00000000..fbf3850c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionListRequest.json
@@ -0,0 +1,6 @@
+{
+ "env": "mmtest-5g7z68c153d7ff4b",
+ "service_name": "echo",
+ "offset": 0,
+ "limit": 20
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionListResponse.json
new file mode 100644
index 00000000..e63d4e05
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbGetContainerServiceVersionListResponse.json
@@ -0,0 +1,18 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "total": 1,
+ "items": [
+ {
+ "version_name": "echo-007",
+ "status": "build_fail",
+ "created_time": "2020-12-08 20:56:10",
+ "updated_time": "2020-12-08 21:06:10",
+ "flow_ratio": 0,
+ "buildid": 0,
+ "upload_type": "repository",
+ "min_replicas": 0,
+ "max_replicas": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbSetContainerServiceVersionConfigRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbSetContainerServiceVersionConfigRequest.json
new file mode 100644
index 00000000..3bc435b5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbSetContainerServiceVersionConfigRequest.json
@@ -0,0 +1,11 @@
+{
+ "env": "mmtest-5g7z68c153d7ff4b",
+ "service_name": "echo",
+ "version_name": "echo-009",
+ "minnum": 1,
+ "maxnum": 2,
+ "remark": "test",
+ "container_port": 80,
+ "env_params": "",
+ "custom_logs": ""
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbSetContainerServiceVersionConfigResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbSetContainerServiceVersionConfigResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/ContainerService/Version/ComponentTcbSetContainerServiceVersionConfigResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbAggregateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbAggregateRequest.json
new file mode 100644
index 00000000..338d3471
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbAggregateRequest.json
@@ -0,0 +1,4 @@
+{
+ "env": "test2-4a89da",
+ "query": "db.collection(\"test_collection\").aggregate().match({tags:\"cloud\"}).limit(10).end()"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbAggregateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbAggregateResponse.json
new file mode 100644
index 00000000..ae2b6fb8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbAggregateResponse.json
@@ -0,0 +1,10 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "data": [
+ "{\"_id\":\"f77e039f-f1cf-4aa8-bd59-16cbaa91e6ea\",\"location\":{\"type\":\"Point\",\"coordinates\":[{\"$numberDouble\":\"113.0\"},{\"$numberDouble\":\"23.0\"}]},\"done\":false,\"description\":\"learn cloud database\",\"due\":\"2019-09-09\",\"tags\":[\"cloud\",\"database\"]}",
+ "{\"_id\":\"6bb88938-49ea-42b6-a6f5-ce408970cfc6\",\"due\":\"2019-09-09\",\"tags\":[\"cloud\",\"database\"],\"location\":{\"type\":\"Point\",\"coordinates\":[{\"$numberDouble\":\"113.0\"},{\"$numberDouble\":\"23.0\"}]},\"done\":false,\"description\":\"学习 cloud database\"}",
+ "{\"_id\":\"51f4f67e-a6a1-4c3e-a50f-827380b8da86\",\"description\":\"学习 cloud database\",\"due\":\"2019-09-09\",\"tags\":[\"cloud\",\"database\"],\"location\":{\"coordinates\":[{\"$numberDouble\":\"113.0\"},{\"$numberDouble\":\"23.0\"}],\"type\":\"Point\"},\"done\":false}",
+ "{\"_id\":\"ee1d69da-b7ec-4e7a-bc1f-2fae31da4ce0\",\"tags\":[\"cloud\",\"database\"],\"location\":{\"type\":\"Point\",\"coordinates\":[{\"$numberDouble\":\"113.0\"},{\"$numberDouble\":\"23.0\"}]},\"done\":false,\"description\":\"学习 cloud database\",\"due\":\"2019-09-09\"}"
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbCollectionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbCollectionRequest.json
new file mode 100644
index 00000000..64a60efd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbCollectionRequest.json
@@ -0,0 +1,4 @@
+{
+ "env": "test-env1",
+ "collection_name": "testcollection"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbCollectionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbCollectionResponse.json
new file mode 100644
index 00000000..ffe5b991
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbCollectionResponse.json
@@ -0,0 +1,14 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "collections": [
+ {
+ "name": "testcollection",
+ "count": 0,
+ "size": 0,
+ "index_count": 2,
+ "index_size": 8192
+ }
+ ],
+ "total": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbExportRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbExportRequest.json
new file mode 100644
index 00000000..3ccca5b4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbExportRequest.json
@@ -0,0 +1,6 @@
+{
+ "env": "test2-4a89da",
+ "file_path": "test_export",
+ "file_type": 1,
+ "query": "const Point = db.Geo.Point;db.collection(\\'geo\\').where({name: \\'x\\',age: _.gt(10).and(_.lt(20)),loc: new Point(113,23),array: [1,2]}).limit(10).skip(1).orderBy(\\'age\\',\\'asc\\').orderBy(\\'name\\', \\'desc\\').field({ name: true }).get()"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbExportResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbExportResponse.json
new file mode 100644
index 00000000..897787f9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbExportResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "job_id": 100074947
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbGetACLRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbGetACLRequest.json
new file mode 100644
index 00000000..476d825f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbGetACLRequest.json
@@ -0,0 +1,4 @@
+{
+ "env": "myttest-8gu57so0bd9f9e8a",
+ "collection_name": "test"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbGetACLResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbGetACLResponse.json
new file mode 100644
index 00000000..6b3099f7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbGetACLResponse.json
@@ -0,0 +1,6 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "acl_tag": "CUSTOM",
+ "rule": "{\n \"read\": true,\n \"write\": \"doc._openid == auth.openid\"\n}"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbImportRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbImportRequest.json
new file mode 100644
index 00000000..ea54541a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbImportRequest.json
@@ -0,0 +1,8 @@
+{
+ "env": "qbasetest-a5c40e",
+ "collection_name": "test1",
+ "file_path": "test_import",
+ "file_type": 1,
+ "stop_on_error": false,
+ "conflict_mode": 2
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbImportResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbImportResponse.json
new file mode 100644
index 00000000..897787f9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbImportResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "job_id": 100074947
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbIndexRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbIndexRequest.json
new file mode 100644
index 00000000..f9832f27
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbIndexRequest.json
@@ -0,0 +1,15 @@
+{
+ "env": "mmtest-5g7z68c153d7ff4b",
+ "collection_name": "test",
+ "indexes": [
+ {
+ "name": "due_index",
+ "keys": [
+ {
+ "name": "due",
+ "direction": "1"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbIndexResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbIndexResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbIndexResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbModifyACLRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbModifyACLRequest.json
new file mode 100644
index 00000000..a68c86a2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbModifyACLRequest.json
@@ -0,0 +1,6 @@
+{
+ "env": "myttest-8gu57so0bd9f9e8a",
+ "collection_name": "test",
+ "acl_tag": "CUSTOM",
+ "rule": "{\n \"read\": true,\n \"write\": \"doc._openid == auth.openid\"\n}"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbModifyACLResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbModifyACLResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbModifyACLResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbRecordRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbRecordRequest.json
new file mode 100644
index 00000000..669779ed
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbRecordRequest.json
@@ -0,0 +1,4 @@
+{
+ "env": "test2-4a89da",
+ "query": "db.collection(\"geo\").where({done:true}).limit(10).skip(1).get()"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbRecordResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbRecordResponse.json
new file mode 100644
index 00000000..c5fa7f0b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/Database/ComponentTcbDbRecordResponse.json
@@ -0,0 +1,20 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "pager": {
+ "offset": 1,
+ "limit": 10,
+ "total": 2
+ },
+ "data": [
+ "{\"_id\":\"b15498af-1a5a-40b4-a4e7-b3fc4a1df482\",\"done\":true,\"name\":\"test\"}"
+ ],
+ "matched": 1,
+ "modified": 1,
+ "id": "",
+ "deleted": 2,
+ "id_list": [
+ "be62d9c4-43ec-4dc6-8ca1-30b206eeed24",
+ "0f4b8add5cdd728a003bf5c83ed99dff"
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreRequest.json
new file mode 100644
index 00000000..ba2552f8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreRequest.json
@@ -0,0 +1,3 @@
+{
+ "env": "test-env1"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreRequest.json
new file mode 100644
index 00000000..ba2552f8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreRequest.json
@@ -0,0 +1,3 @@
+{
+ "env": "test-env1"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreResponse.json
new file mode 100644
index 00000000..dd597384
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreResponse.json
@@ -0,0 +1,13 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "data": [
+ {
+ "env": "myttest-8gu57so0bd9f9e8a",
+ "domain": "myttest-8gu57so0bd9f9e8a-1304480914.tcloudbaseapp.com",
+ "bucket": "b8b3-static-myttest-8gu57so0bd9f9e8a-1304480914",
+ "regoin": "ap-shanghai",
+ "status": "online"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbStaticFileListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbStaticFileListRequest.json
new file mode 100644
index 00000000..ba2552f8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbStaticFileListRequest.json
@@ -0,0 +1,3 @@
+{
+ "env": "test-env1"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbStaticFileListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbStaticFileListResponse.json
new file mode 100644
index 00000000..cb3e686a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbStaticFileListResponse.json
@@ -0,0 +1,19 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "contents": [
+ {
+ "key": "Dockerfile",
+ "last_modified": "2020-12-04T08:56:59.000Z",
+ "md5": "6f58c139dc7aaefe41e3b40a8cb8f219-1",
+ "size": "554"
+ },
+ {
+ "key": "test_export",
+ "last_modified": "2020-12-04T09:35:56.000Z",
+ "md5": "e1ab5133bf151a78c466a90fa3a38a6e-1",
+ "size": "400"
+ }
+ ],
+ "is_truncated": false
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileRequest.json
new file mode 100644
index 00000000..809fa50d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileRequest.json
@@ -0,0 +1,4 @@
+{
+ "env": "myttest-8gu57so0bd9f9e8a",
+ "filename": "zcy.py"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileResponse.json
new file mode 100644
index 00000000..6f25ebea
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileResponse.json
@@ -0,0 +1,6 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "signed_url": "https://b8b3-static-myttest-8gu57so0bd9f9e8a-1304480914.cos.ap-shanghai.myqcloud.com/zcy.py?sign=q-sign-algorithm%3Dsha1%26q-ak%3DAKIDqIjj-XybgCHZ3q7bJh-cxBs_5fnpzNvlK4qlAMK67ZcHQykVfThVSZMrlsf56uoY%26q-sign-time%3D1613977939%3B1613977999%26q-key-time%3D1613977939%3B1613977999%26q-header-list%3D%26q-url-param-list%3D%26q-signature%3De697e7d0419781d7c9e53a11b431f19c762084d1",
+ "token": "CtAAY4i5meYdojAxhMKe70QIZWAPqDUa141d7416063bda7abaa7589c13a53ff589WKQf-qgkXMET4-TnOcU2Es6s7ax5rcJZmoJ2VPNmj92JY8M4Yt9nePkuU2iiP7UQGFNkxg08A6-82uEdURyH6f9hG3DnD32-J4Dl_ZErhVJl3BdF4qy2UEfbIeAe0MPxQcOTqQskedulgaeyXbCD0ols3zwMb-3AltEhuHmTDZC-PCqCC-zqzZHzNSMHHMKfgm5G17NI14Th4-o3JeKLjY5EiUTkvhuEJyDzcI_lMEe6-nFXYuWOLy00CKFwQ__oIJNkOnMrwH5HL5DXkUwk_b8meImrlluDruz6WhU3O3h-EFHst8Zca4Jopd0WKtd8EFcK7RaJL8hKXepf1w5EJdryC4xxA6Hn41d3mzG3k"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbCreateCloudUserRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbCreateCloudUserRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbCreateCloudUserRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbCreateCloudUserResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbCreateCloudUserResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbCreateCloudUserResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbCreateEnvironmentAndResourceRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbCreateEnvironmentAndResourceRequest.json
new file mode 100644
index 00000000..3695a83d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbCreateEnvironmentAndResourceRequest.json
@@ -0,0 +1,4 @@
+{
+ "env": "test-env-0001",
+ "alias": "test-env"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbCreateEnvironmentAndResourceResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbCreateEnvironmentAndResourceResponse.json
new file mode 100644
index 00000000..29a9ea43
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbCreateEnvironmentAndResourceResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "status": "INITIALIZING"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbGetEnvironmentInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbGetEnvironmentInfoRequest.json
new file mode 100644
index 00000000..45dc4e1f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbGetEnvironmentInfoRequest.json
@@ -0,0 +1,3 @@
+{
+ "env": "test-env-0001"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbGetEnvironmentInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbGetEnvironmentInfoResponse.json
new file mode 100644
index 00000000..cf06f659
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbGetEnvironmentInfoResponse.json
@@ -0,0 +1,15 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "info_list": [
+ {
+ "env": "test2-4a89da",
+ "alias": "test2",
+ "create_time": "2019-04-04 14:10:28",
+ "update_time": "2019-04-04 14:10:36",
+ "status": "NORMAL",
+ "package_id": "basic",
+ "package_name": "基础版 1"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbModifyEnvironmentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbModifyEnvironmentRequest.json
new file mode 100644
index 00000000..45dc4e1f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbModifyEnvironmentRequest.json
@@ -0,0 +1,3 @@
+{
+ "env": "test-env-0001"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbModifyEnvironmentResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbModifyEnvironmentResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbModifyEnvironmentResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbShareEnvironmentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbShareEnvironmentRequest.json
new file mode 100644
index 00000000..0d43afe2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbShareEnvironmentRequest.json
@@ -0,0 +1,4 @@
+{
+ "appid": "wx5fe6bb43205e9e70",
+ "env": "mytestenv-4gl1pvzp25d960df"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbShareEnvironmentResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbShareEnvironmentResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/ThirdPartyPlatforms/TcbShareEnvironmentResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file