From d290155dec5909f2b8d3aeb4539877c91fdbf7c7 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Thu, 3 Jun 2021 10:38:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(work):=20=E5=B0=81=E8=A3=85=E9=83=A8?= =?UTF-8?q?=E5=88=86=E4=BC=81=E4=B8=9A=E5=BE=AE=E4=BF=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...tWorkClientExecuteCgibinAgentExtensions.cs | 26 + ...orkClientExecuteCgibinAppChatExtensions.cs | 99 ++++ ...tWorkClientExecuteCgibinBatchExtensions.cs | 5 + ...kClientExecuteCgibinCorpGroupExtensions.cs | 1 + ...ClientExecuteCgibinDepartmentExtensions.cs | 4 + ...WechatWorkClientExecuteCgibinExtensions.cs | 22 + ...tExecuteCgibinExternalContactExtensions.cs | 91 ++- ...ClientExecuteCgibinLinkedCorpExtensions.cs | 26 + ...tWorkClientExecuteCgibinMediaExtensions.cs | 4 + ...ientExecuteCgibinMessageAuditExtensions.cs | 120 ++++ ...orkClientExecuteCgibinMessageExtensions.cs | 82 +++ ...orkClientExecuteCgibinServiceExtensions.cs | 295 ++++++++++ ...atWorkClientExecuteCgibinSyncExtensions.cs | 35 ++ ...hatWorkClientExecuteCgibinTagExtensions.cs | 7 + ...atWorkClientExecuteCgibinUserExtensions.cs | 75 ++- .../Cgibin/CgibinGetApiDomainIpResponse.cs | 2 +- .../Cgibin/CgibinGetCallbackIpRequest.cs | 12 + .../Cgibin/CgibinGetCallbackIpResponse.cs | 18 + .../CgibinAgent/CgibinAgentGetResponse.cs | 2 +- .../CgibinAgent/CgibinAgentSetScopeRequest.cs | 46 ++ .../CgibinAgentSetScopeResponse.cs | 32 ++ .../CgibinAppChatCreateRequest.cs | 39 ++ .../CgibinAppChatCreateResponse.cs | 18 + .../CgibinAppChat/CgibinAppChatGetRequest.cs | 18 + .../CgibinAppChat/CgibinAppChatGetResponse.cs | 52 ++ .../CgibinAppChat/CgibinAppChatSendRequest.cs | 136 +++++ .../CgibinAppChatSendResponse.cs | 12 + .../CgibinAppChatUpdateRequest.cs | 46 ++ .../CgibinAppChatUpdateResponse.cs | 12 + .../CgibinBatch/CgibinBatchInviteResponse.cs | 6 +- ...alContactUnionIdToExternalUserIdRequest.cs | 18 + ...lContactUnionIdToExternalUserIdResponse.cs | 18 + ...ibinExternalContactAddContactWayRequest.cs | 4 +- ...binExternalContactGetContactWayResponse.cs | 4 +- ...nExternalContactUpdateContactWayRequest.cs | 4 +- ...xternalContactAddMessageTemplateRequest.cs | 4 +- ...nalContactGetGroupMessageListV2Response.cs | 4 +- ...alContactGroupWelcomeTemplateAddRequest.cs | 20 +- ...lContactGroupWelcomeTemplateEditRequest.cs | 20 +- ...lContactGroupWelcomeTemplateGetResponse.cs | 20 +- ...xternalContactSendWelcomeMessageRequest.cs | 4 +- ...CgibinExternalContactMessageSendRequest.cs | 216 ++++++++ ...gibinExternalContactMessageSendResponse.cs | 39 ++ .../CgibinLinkedCorpMessageSendRequest.cs | 177 ++++++ .../CgibinLinkedCorpMessageSendResponse.cs | 32 ++ .../CgibinMessageGetStatisticsRequest.cs | 18 + .../CgibinMessageGetStatisticsResponse.cs | 45 ++ .../CgibinMessage/CgibinMessageSendRequest.cs | 524 ++++++++++++++++++ .../CgibinMessageSendResponse.cs | 38 ++ .../CgibinMessageUpdateTaskCardRequest.cs | 39 ++ .../CgibinMessageUpdateTaskCardResponse.cs | 18 + ...CgibinMessageAuditCheckRoomAgreeRequest.cs | 18 + ...gibinMessageAuditCheckRoomAgreeResponse.cs | 45 ++ ...ibinMessageAuditCheckSingleAgreeRequest.cs | 38 ++ ...binMessageAuditCheckSingleAgreeResponse.cs | 52 ++ ...binMessageAuditGetPermitUserListRequest.cs | 18 + ...inMessageAuditGetPermitUserListResponse.cs | 18 + .../CgibinMessageAuditGetRobotInfoRequest.cs | 18 + .../CgibinMessageAuditGetRobotInfoResponse.cs | 45 ++ .../CgibinMessageAuditGroupChatGetRequest.cs | 18 + .../CgibinMessageAuditGroupChatGetResponse.cs | 66 +++ .../CgibinServiceGetAdminListRequest.cs | 25 + .../CgibinServiceGetAdminListResponse.cs | 45 ++ .../CgibinServiceGetAuthInfoRequest.cs | 25 + .../CgibinServiceGetAuthInfoResponse.cs | 269 +++++++++ .../CgibinServiceGetCorpTokenRequest.cs | 25 + .../CgibinServiceGetCorpTokenResponse.cs | 25 + .../CgibinServiceGetLoginInfoRequest.cs | 25 + .../CgibinServiceGetLoginInfoResponse.cs | 137 +++++ .../CgibinServiceGetPermanentCodeRequest.cs | 18 + .../CgibinServiceGetPermanentCodeResponse.cs | 143 +++++ .../CgibinServiceGetPreAuthCodeRequest.cs | 12 + .../CgibinServiceGetPreAuthCodeResponse.cs | 25 + .../CgibinServiceGetProviderTokenRequest.cs | 12 + .../CgibinServiceGetProviderTokenResponse.cs | 25 + .../CgibinServiceGetSuiteTokenRequest.cs | 32 ++ .../CgibinServiceGetSuiteTokenResponse.cs | 25 + .../CgibinServiceSetSessionInfoRequest.cs | 45 ++ .../CgibinServiceSetSessionInfoResponse.cs | 12 + .../CgibinServiceUserDetail3rdRequest.cs | 18 + .../CgibinServiceUserDetail3rdResponse.cs | 53 ++ .../CgibinServiceUserInfo3rdRequest.cs | 18 + .../CgibinServiceUserInfo3rdResponse.cs | 60 ++ .../CgibinServiceGetRegisterCodeRequest.cs | 60 ++ .../CgibinServiceGetRegisterCodeResponse.cs | 25 + .../CgibinServiceGetRegisterInfoRequest.cs | 25 + .../CgibinServiceGetRegisterInfoResponse.cs | 76 +++ .../CgibinSyncContactSyncSuccessRequest.cs | 18 + .../CgibinSyncContactSyncSuccessResponse.cs | 12 + .../TagUser/CgibinTagAddTagUsersResponse.cs | 79 +-- .../CgibinUser/CgibinUserGetUserIdRequest.cs | 18 + .../CgibinUser/CgibinUserGetUserIdResponse.cs | 18 + .../CgibinUserGetUserInfoRequest.cs | 2 +- .../SKIT.FlurlHttpClient.Wechat.Work.csproj | 4 +- .../WechatWorkClient.cs | 22 +- .../WechatWorkClientOptions.cs | 23 +- .../WechatWorkEvent.cs | 30 +- .../WechatWorkRequest.cs | 3 +- 98 files changed, 4269 insertions(+), 165 deletions(-) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinAppChatExtensions.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMessageAuditExtensions.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMessageExtensions.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinServiceExtensions.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinSyncExtensions.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/Cgibin/CgibinGetCallbackIpRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/Cgibin/CgibinGetCallbackIpResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAgent/CgibinAgentSetScopeRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAgent/CgibinAgentSetScopeResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatCreateRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatCreateResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatGetRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatGetResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatSendRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatSendResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatUpdateRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatUpdateResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CgibinExternalContactUnionIdToExternalUserIdRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CgibinExternalContactUnionIdToExternalUserIdResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/Message/CgibinExternalContactMessageSendRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/Message/CgibinExternalContactMessageSendResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinLinkedCorp/Message/CgibinLinkedCorpMessageSendRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinLinkedCorp/Message/CgibinLinkedCorpMessageSendResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageGetStatisticsRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageGetStatisticsResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageSendRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageSendResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageUpdateTaskCardRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageUpdateTaskCardResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditCheckRoomAgreeRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditCheckRoomAgreeResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditCheckSingleAgreeRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditCheckSingleAgreeResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGetPermitUserListRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGetPermitUserListResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGetRobotInfoRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGetRobotInfoResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGroupChatGetRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGroupChatGetResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAdminListRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAdminListResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAuthInfoRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAuthInfoResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetCorpTokenRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetCorpTokenResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetLoginInfoRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetLoginInfoResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetPermanentCodeRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetPermanentCodeResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetPreAuthCodeRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetPreAuthCodeResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetProviderTokenRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetProviderTokenResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetSuiteTokenRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetSuiteTokenResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceSetSessionInfoRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceSetSessionInfoResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceUserDetail3rdRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceUserDetail3rdResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceUserInfo3rdRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceUserInfo3rdResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Register/CgibinServiceGetRegisterCodeRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Register/CgibinServiceGetRegisterCodeResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Register/CgibinServiceGetRegisterInfoRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Register/CgibinServiceGetRegisterInfoResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSync/CgibinSyncContactSyncSuccessRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSync/CgibinSyncContactSyncSuccessResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserGetUserIdRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserGetUserIdResponse.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinAgentExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinAgentExtensions.cs index 8b426e21..2628ae6e 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinAgentExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinAgentExtensions.cs @@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/agent/get 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90227 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90363 /// /// /// @@ -39,6 +40,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/agent/list 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90227 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90363 /// /// /// @@ -81,6 +83,30 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + /// + /// 异步调用 [POST] /cgi-bin/agent/set_scope 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90583 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinAgentSetScopeAsync(this WechatWorkClient client, Models.CgibinAgentSetScopeRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (!request.AgentId.HasValue) + request.AgentId = client.AgentId; + + IFlurlRequest flurlReq = client + .CreateRequest(HttpMethod.Post, "cgi-bin", "agent", "set_scope") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #region Workbench /// /// 异步调用 [POST] /cgi-bin/agent/set_workbench_template 接口。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinAppChatExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinAppChatExtensions.cs new file mode 100644 index 00000000..7e610535 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinAppChatExtensions.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Flurl; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.Work +{ + public static class WechatWorkClientExecuteCgibinAppChatExtensions + { + /// + /// 异步调用 [POST] /cgi-bin/appchat/create 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90245 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinAppChatCreateAsync(this WechatWorkClient client, Models.CgibinAppChatCreateRequest 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(HttpMethod.Post, "cgi-bin", "appchat", "create") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/appchat/update 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90246 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinAppChatUpdateAsync(this WechatWorkClient client, Models.CgibinAppChatUpdateRequest 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(HttpMethod.Post, "cgi-bin", "appchat", "update") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /cgi-bin/appchat/get 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90247 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinAppChatGetAsync(this WechatWorkClient client, Models.CgibinAppChatGetRequest 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(HttpMethod.Get, "cgi-bin", "appchat", "get") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken) + .SetQueryParam("chatid", request.ChatId); + + return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/appchat/send 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90248 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinAppChatSendAsync(this WechatWorkClient client, Models.CgibinAppChatSendRequest 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(HttpMethod.Post, "cgi-bin", "appchat", "send") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinBatchExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinBatchExtensions.cs index 18d41d4b..9f092878 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinBatchExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinBatchExtensions.cs @@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/batch/invite 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90975 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91127 /// /// /// @@ -35,6 +36,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/batch/syncuser 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90980 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91130 /// /// /// @@ -56,6 +58,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/batch/replaceuser 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90981 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91131 /// /// /// @@ -77,6 +80,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/batch/replaceparty 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90981 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91132 /// /// /// @@ -98,6 +102,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/batch/getresult 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90983 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91133 /// /// /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinCorpGroupExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinCorpGroupExtensions.cs index 9c679574..53327e21 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinCorpGroupExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinCorpGroupExtensions.cs @@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/corpgroup/corp/list_app_share_info 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93403 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93405 /// /// /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinDepartmentExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinDepartmentExtensions.cs index b5ba6384..5b9b3d98 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinDepartmentExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinDepartmentExtensions.cs @@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/department/create 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90205 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90341 /// /// /// @@ -35,6 +36,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/department/update 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90206 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90342 /// /// /// @@ -56,6 +58,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/department/delete 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90206 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90343 /// /// /// @@ -78,6 +81,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/department/list 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90208 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90344 /// /// /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExtensions.cs index f3148511..16fc6245 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExtensions.cs @@ -33,6 +33,28 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken); } + /// + /// 异步调用 [GET] /cgi-bin/getcallbackip 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90930 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91116 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinGetCallbackIpAsync(this WechatWorkClient client, Models.CgibinGetCallbackIpRequest 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(HttpMethod.Get, "cgi-bin", "getcallbackip") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken); + } + /// /// 异步调用 [GET] /cgi-bin/get_api_domain_ip 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92520 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs index 5da03d74..ea6546e3 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs @@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/externalcontact/get_follow_user_list 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92571 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92576 /// /// /// @@ -35,6 +36,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/close_temp_chat 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92572 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92577 /// /// /// @@ -56,6 +58,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/externalcontact/list 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92113 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92264 /// /// /// @@ -78,6 +81,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/externalcontact/get 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92113 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92265 /// /// /// @@ -103,6 +107,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/batch/get_by_user 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92115 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93010 /// /// /// @@ -124,6 +129,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/remark 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92994 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92694 /// /// /// @@ -145,6 +151,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/mark_tag 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92118 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92697 /// /// /// @@ -164,8 +171,9 @@ namespace SKIT.FlurlHttpClient.Wechat.Work } /// - /// 异步调用 [POST] /cgi-bin/externalcontact/get_unassigned_listr 接口。 + /// 异步调用 [POST] /cgi-bin/externalcontact/get_unassigned_list 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92124 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92273 /// /// /// @@ -187,6 +195,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/get_user_behavior_data 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92132 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92275 /// /// /// @@ -205,10 +214,32 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + /// + /// 异步调用 [POST] /cgi-bin/externalcontact/unionid_to_external_userid 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93274 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinExternalContactUnionIdToExternalUserIdAsync(this WechatWorkClient client, Models.CgibinExternalContactUnionIdToExternalUserIdRequest 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(HttpMethod.Post, "cgi-bin", "externalcontact", "unionid_to_external_userid") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #region ContactWay /// /// 异步调用 [POST] /cgi-bin/externalcontact/add_contact_way 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92572 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92577 /// /// /// @@ -230,6 +261,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/get_contact_way 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92572 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92577 /// /// /// @@ -251,6 +283,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/update_contact_way 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92572 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92577 /// /// /// @@ -272,6 +305,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/del_contact_way 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92572 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92577 /// /// /// @@ -295,6 +329,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/get_corp_tag_list 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92117 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92696 /// /// /// @@ -316,6 +351,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/add_corp_tag 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92117 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92696 /// /// /// @@ -337,6 +373,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/edit_corp_tag 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92117 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92696 /// /// /// @@ -358,6 +395,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/del_corp_tag 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92117 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92696 /// /// /// @@ -381,6 +419,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/transfer_customer 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92125 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94096 /// /// /// @@ -402,6 +441,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/transfer_result 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94088 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94097 /// /// /// @@ -419,10 +459,11 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } - + /// /// 异步调用 [POST] /cgi-bin/externalcontact/resigned/transfer_customer 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94081 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94100 /// /// /// @@ -444,6 +485,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/transfer_result 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94082 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94101 /// /// /// @@ -467,6 +509,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/groupchat/transfer 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92127 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93242 /// /// /// @@ -488,6 +531,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/groupchat/list 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92120 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93414 /// /// /// @@ -509,6 +553,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/groupchat/get 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92122 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92707 /// /// /// @@ -531,6 +576,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/groupchat/statistic 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92133 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93476 /// /// /// @@ -552,6 +598,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/groupchat/statistic_group_by_day 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92133 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93476 /// /// /// @@ -576,6 +623,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/get_moment_list 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93333 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93443 /// /// /// @@ -597,6 +645,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/get_moment_task 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93333 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93443 /// /// /// @@ -618,6 +667,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/get_moment_customer_list 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93333 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93443 /// /// /// @@ -639,6 +689,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/get_moment_send_result 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93333 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93443 /// /// /// @@ -660,6 +711,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/get_moment_comments 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93333 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93443 /// /// /// @@ -683,6 +735,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/add_msg_template 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92135 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92698 /// /// /// @@ -704,6 +757,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/get_groupmsg_list_v2 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93338 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93439 /// /// /// @@ -725,6 +779,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/get_groupmsg_task 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93338 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93439 /// /// /// @@ -746,6 +801,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/get_groupmsg_send_result 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93338 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93439 /// /// /// @@ -769,6 +825,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/send_welcome_msg 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92137 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92599 /// /// /// @@ -790,6 +847,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/group_welcome_template/add 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92366 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93438 /// /// /// @@ -811,6 +869,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/group_welcome_template/edit 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92366 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93438 /// /// /// @@ -832,6 +891,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/group_welcome_template/get 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92366 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93438 /// /// /// @@ -853,6 +913,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/group_welcome_template/del 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92366 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93438 /// /// /// @@ -871,5 +932,31 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion + + #region Message + /// + /// 异步调用 [POST] /cgi-bin/externalcontact/message/send 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/91609 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinExternalContactMessageSendAsync(this WechatWorkClient client, Models.CgibinExternalContactMessageSendRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (!request.AgentId.HasValue) + request.AgentId = client.AgentId; + + IFlurlRequest flurlReq = client + .CreateRequest(HttpMethod.Post, "cgi-bin", "externalcontact", "message", "send") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinLinkedCorpExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinLinkedCorpExtensions.cs index 6dead049..bfbe9da0 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinLinkedCorpExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinLinkedCorpExtensions.cs @@ -115,5 +115,31 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + + #region Message + /// + /// 异步调用 [POST] /cgi-bin/linkedcorp/message/send 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90250 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinLinkedCorpMessageSendAsync(this WechatWorkClient client, Models.CgibinLinkedCorpMessageSendRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (!request.AgentId.HasValue) + request.AgentId = client.AgentId; + + IFlurlRequest flurlReq = client + .CreateRequest(HttpMethod.Post, "cgi-bin", "linkedcorp", "message", "send") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMediaExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMediaExtensions.cs index 31504c53..1787c142 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMediaExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMediaExtensions.cs @@ -15,6 +15,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/media/upload 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90253 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90389 /// /// /// @@ -77,6 +78,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/media/uploadimg 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90256 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90392 /// /// /// @@ -118,6 +120,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/media/get 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90254 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90390 /// /// /// @@ -140,6 +143,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/media/get/jssdk 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90255 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90391 /// /// /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMessageAuditExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMessageAuditExtensions.cs new file mode 100644 index 00000000..4be7b39a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMessageAuditExtensions.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Flurl; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.Work +{ + public static class WechatWorkClientExecuteCgibinMessageAuditExtensions + { + /// + /// 异步调用 [GET] /cgi-bin/msgaudit/get_robot_info 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/91774 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMessageAuditGetRobotInfoAsync(this WechatWorkClient client, Models.CgibinMessageAuditGetRobotInfoRequest 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(HttpMethod.Get, "cgi-bin", "msgaudit", "get_robot_info") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken) + .SetQueryParam("robot_id", request.RobotId); + + return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/msgaudit/get_permit_user_list 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/91614 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMessageAuditGetPermitUserListAsync(this WechatWorkClient client, Models.CgibinMessageAuditGetPermitUserListRequest 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(HttpMethod.Post, "cgi-bin", "msgaudit", "get_permit_user_list") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/msgaudit/check_single_agree 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/91782 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMessageAuditCheckSingleAgreeAsync(this WechatWorkClient client, Models.CgibinMessageAuditCheckSingleAgreeRequest 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(HttpMethod.Post, "cgi-bin", "msgaudit", "check_single_agree") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/msgaudit/check_room_agree 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/91782 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMessageAuditCheckRoomAgreeAsync(this WechatWorkClient client, Models.CgibinMessageAuditCheckRoomAgreeRequest 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(HttpMethod.Post, "cgi-bin", "msgaudit", "check_room_agree") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/msgaudit/groupchat/get 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92951 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMessageAuditGroupChatGetAsync(this WechatWorkClient client, Models.CgibinMessageAuditGroupChatGetRequest 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(HttpMethod.Post, "cgi-bin", "msgaudit", "groupchat", "get") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMessageExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMessageExtensions.cs new file mode 100644 index 00000000..533ff67a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMessageExtensions.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Flurl; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.Work +{ + public static class WechatWorkClientExecuteCgibinMessageExtensions + { + /// + /// 异步调用 [POST] /cgi-bin/message/send 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90236 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90372 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMessageSendAsync(this WechatWorkClient client, Models.CgibinMessageSendRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (!request.AgentId.HasValue) + request.AgentId = client.AgentId; + + IFlurlRequest flurlReq = client + .CreateRequest(HttpMethod.Post, "cgi-bin", "message", "send") + .SetOptions(request); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/message/update_taskcard 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/91579 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91585 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMessageUpdateTaskCardAsync(this WechatWorkClient client, Models.CgibinMessageUpdateTaskCardRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (!request.AgentId.HasValue) + request.AgentId = client.AgentId; + + IFlurlRequest flurlReq = client + .CreateRequest(HttpMethod.Post, "cgi-bin", "message", "update_taskcard") + .SetOptions(request); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/message/get_statistics 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92369 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMessageGetStatisticsAsync(this WechatWorkClient client, Models.CgibinMessageGetStatisticsRequest 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(HttpMethod.Post, "cgi-bin", "message", "get_statistics") + .SetOptions(request); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinServiceExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinServiceExtensions.cs new file mode 100644 index 00000000..0564b5e1 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinServiceExtensions.cs @@ -0,0 +1,295 @@ +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Flurl; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.Work +{ + public static class WechatWorkClientExecuteCgibinServiceExtensions + { + /// + /// 异步调用 [POST] /cgi-bin/service/get_provider_token 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91200 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinGetProviderTokenAsync(this WechatWorkClient client, Models.CgibinServiceGetProviderTokenRequest 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(HttpMethod.Post, "cgi-bin", "service", "get_provider_token") + .SetOptions(request); + + var requestData = new { corpid = client.CorpId, provider_secret = client.AgentSecret }; + return await client.SendRequestWithJsonAsync(flurlReq, data: requestData, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/service/get_suite_token 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90600 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinGetSuiteTokenAsync(this WechatWorkClient client, Models.CgibinServiceGetSuiteTokenRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (string.IsNullOrEmpty(request.SuiteId)) + request.SuiteId = client.SuiteId; + + if (string.IsNullOrEmpty(request.SuiteSecret)) + request.SuiteSecret = client.SuiteSecret; + + IFlurlRequest flurlReq = client + .CreateRequest(HttpMethod.Post, "cgi-bin", "service", "get_suite_token") + .SetOptions(request); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /cgi-bin/service/get_pre_auth_code 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90601 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinGetPreAuthCodeAsync(this WechatWorkClient client, Models.CgibinServiceGetPreAuthCodeRequest 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(HttpMethod.Get, "cgi-bin", "service", "get_pre_auth_code") + .SetOptions(request) + .SetQueryParam("suite_access_token", request.AccessToken); + + return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/service/set_session_info 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90602 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinServiceSetSessionInfoAsync(this WechatWorkClient client, Models.CgibinServiceSetSessionInfoRequest 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(HttpMethod.Post, "cgi-bin", "service", "get_pre_auth_code") + .SetOptions(request) + .SetQueryParam("suite_access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/service/get_permanent_code 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90603 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinServiceGetPermanentCodeAsync(this WechatWorkClient client, Models.CgibinServiceGetPermanentCodeRequest 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(HttpMethod.Post, "cgi-bin", "service", "get_permanent_code") + .SetOptions(request) + .SetQueryParam("suite_access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/service/get_auth_info 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90604 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinServiceGetAuthInfoAsync(this WechatWorkClient client, Models.CgibinServiceGetAuthInfoRequest 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(HttpMethod.Post, "cgi-bin", "service", "get_auth_info") + .SetOptions(request) + .SetQueryParam("suite_access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/service/get_corp_token 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90605 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinServiceGetCorpTokenAsync(this WechatWorkClient client, Models.CgibinServiceGetCorpTokenRequest 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(HttpMethod.Post, "cgi-bin", "service", "get_corp_token") + .SetOptions(request) + .SetQueryParam("suite_access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/service/get_admin_list 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90605 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinServiceGetAdminListAsync(this WechatWorkClient client, Models.CgibinServiceGetAdminListRequest 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(HttpMethod.Post, "cgi-bin", "service", "get_admin_list") + .SetOptions(request) + .SetQueryParam("suite_access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /cgi-bin/service/getuserinfo3rd 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91121 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinServiceUserInfo3rdAsync(this WechatWorkClient client, Models.CgibinServiceUserInfo3rdRequest 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(HttpMethod.Get, "cgi-bin", "service", "getuserinfo3rd") + .SetOptions(request) + .SetQueryParam("suite_access_token", request.AccessToken) + .SetQueryParam("code", request.Code); + + return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/service/getuserdetail3rd 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91122 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinServiceUserDetail3rdAsync(this WechatWorkClient client, Models.CgibinServiceUserDetail3rdRequest 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(HttpMethod.Post, "cgi-bin", "service", "getuserdetail3rd") + .SetOptions(request) + .SetQueryParam("suite_access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/service/get_login_info 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91125 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinServiceGetLoginInfoAsync(this WechatWorkClient client, Models.CgibinServiceGetLoginInfoRequest 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(HttpMethod.Get, "cgi-bin", "service", "get_login_info") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + #region Register + /// + /// 异步调用 [POST] /cgi-bin/service/get_register_code 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90581 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinServiceGetRegisterCodeAsync(this WechatWorkClient client, Models.CgibinServiceGetRegisterCodeRequest 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(HttpMethod.Get, "cgi-bin", "service", "get_register_code") + .SetOptions(request) + .SetQueryParam("provider_access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/service/get_register_info 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90582 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinServiceGetRegisterInfoAsync(this WechatWorkClient client, Models.CgibinServiceGetRegisterInfoRequest 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(HttpMethod.Get, "cgi-bin", "service", "get_register_info") + .SetOptions(request) + .SetQueryParam("provider_access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinSyncExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinSyncExtensions.cs new file mode 100644 index 00000000..f6b6aa76 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinSyncExtensions.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Flurl; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.Work +{ + public static class WechatWorkClientExecuteCgibinSyncExtensions + { + /// + /// 异步调用 [GET] /cgi-bin/sync/contact_sync_success 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90584 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinSyncContactSyncSuccessAsync(this WechatWorkClient client, Models.CgibinSyncContactSyncSuccessRequest 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(HttpMethod.Get, "cgi-bin", "sync", "contact_sync_success") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinTagExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinTagExtensions.cs index 3c0a5b90..5cd38843 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinTagExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinTagExtensions.cs @@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/tag/create 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90210 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90346 /// /// /// @@ -35,6 +36,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/tag/update 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90211 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90347 /// /// /// @@ -56,6 +58,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/tag/delete 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90212 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90348 /// /// /// @@ -78,6 +81,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/tag/list 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90216 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90352 /// /// /// @@ -99,6 +103,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/tag/get 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90213 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90349 /// /// /// @@ -122,6 +127,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/tag/addtagusers 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90214 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90350 /// /// /// @@ -143,6 +149,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/tag/deltagusers 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90215 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90351 /// /// /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinUserExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinUserExtensions.cs index 884d2b4b..42038aad 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinUserExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinUserExtensions.cs @@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/user/create 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90195 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90331 /// /// /// @@ -35,6 +36,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/user/get 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90196 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90332 /// /// /// @@ -57,6 +59,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/user/update 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90197 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90333 /// /// /// @@ -78,6 +81,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/user/delete 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90198 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90334 /// /// /// @@ -100,6 +104,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/user/batchdelete 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90199 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90335 /// /// /// @@ -121,6 +126,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/user/simplelist 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90200 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90336 /// /// /// @@ -146,6 +152,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [GET] /cgi-bin/user/list 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90201 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90337 /// /// /// @@ -171,6 +178,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/user/convert_to_openid 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90202 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90338 /// /// /// @@ -192,6 +200,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/user/convert_to_userid 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90202 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90338 /// /// /// @@ -210,28 +219,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } - /// - /// 异步调用 [GET] /cgi-bin/user/authsucc 接口。 - /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90203 - /// - /// - /// - /// - /// - public static async Task ExecuteCgibinUserAuthSuccessAsync(this WechatWorkClient client, Models.CgibinUserAuthSuccessRequest 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(HttpMethod.Get, "cgi-bin", "user", "authsucc") - .SetOptions(request) - .SetQueryParam("access_token", request.AccessToken) - .SetQueryParam("userid", request.UserId); - - return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken); - } - /// /// 异步调用 [GET] /cgi-bin/user/getuserinfo 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/91023 @@ -255,6 +242,50 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken); } + /// + /// 异步调用 [POST] /cgi-bin/user/getuserid 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91693 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinUserGetUserIdAsync(this WechatWorkClient client, Models.CgibinUserGetUserIdRequest 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(HttpMethod.Post, "cgi-bin", "user", "getuserid") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /cgi-bin/user/authsucc 接口。 + /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90203 + /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90339 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinUserAuthSuccessAsync(this WechatWorkClient client, Models.CgibinUserAuthSuccessRequest 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(HttpMethod.Get, "cgi-bin", "user", "authsucc") + .SetOptions(request) + .SetQueryParam("access_token", request.AccessToken) + .SetQueryParam("userid", request.UserId); + + return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken); + } + /// /// 异步调用 [POST] /cgi-bin/user/get_active_stat 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92714 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/Cgibin/CgibinGetApiDomainIpResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/Cgibin/CgibinGetApiDomainIpResponse.cs index 26e9ed99..2baf0b61 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/Cgibin/CgibinGetApiDomainIpResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/Cgibin/CgibinGetApiDomainIpResponse.cs @@ -9,7 +9,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models public class CgibinGetApiDomainIpResponse : WechatWorkResponse { /// - /// 获取或设置企业微信服务器 IP 地址列表。 + /// 获取或设置企业微信服务器 IP 段列表。 /// [Newtonsoft.Json.JsonProperty("ip_list")] [System.Text.Json.Serialization.JsonPropertyName("ip_list")] diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/Cgibin/CgibinGetCallbackIpRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/Cgibin/CgibinGetCallbackIpRequest.cs new file mode 100644 index 00000000..8de99b2f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/Cgibin/CgibinGetCallbackIpRequest.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/getcallbackip 接口的请求。 + /// + public class CgibinGetCallbackIpRequest : WechatWorkRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/Cgibin/CgibinGetCallbackIpResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/Cgibin/CgibinGetCallbackIpResponse.cs new file mode 100644 index 00000000..0e7abf5d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/Cgibin/CgibinGetCallbackIpResponse.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/getcallbackip 接口的响应。 + /// + public class CgibinGetCallbackIpResponse : WechatWorkResponse + { + /// + /// 获取或设置企业微信回调的 IP 段列表。 + /// + [Newtonsoft.Json.JsonProperty("ip_list")] + [System.Text.Json.Serialization.JsonPropertyName("ip_list")] + public string[] IPList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAgent/CgibinAgentGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAgent/CgibinAgentGetResponse.cs index b9be4ea8..c85346de 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAgent/CgibinAgentGetResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAgent/CgibinAgentGetResponse.cs @@ -83,7 +83,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models public string Description { get; set; } = default!; /// - /// 获取或设置可见人员范围信息。 + /// 获取或设置可见成员范围信息。 /// [Newtonsoft.Json.JsonProperty("allow_userinfos")] [System.Text.Json.Serialization.JsonPropertyName("allow_userinfos")] diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAgent/CgibinAgentSetScopeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAgent/CgibinAgentSetScopeRequest.cs new file mode 100644 index 00000000..7b3eacd6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAgent/CgibinAgentSetScopeRequest.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/agent/set_scope 接口的请求。 + /// + public class CgibinAgentSetScopeRequest : WechatWorkRequest + { + /// + /// 获取或设置通讯录迁移凭证。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public override string? AccessToken { get; set; } = string.Empty; + + /// + /// 获取或设置应用 ID。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("agentid")] + [System.Text.Json.Serialization.JsonPropertyName("agentid")] + public int? AgentId { get; set; } + + /// + /// 获取或设置可见成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("allow_user")] + [System.Text.Json.Serialization.JsonPropertyName("allow_user")] + public IList? AllowedUserIdList { get; set; } + + /// + /// 获取或设置可见部门 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("allow_party")] + [System.Text.Json.Serialization.JsonPropertyName("allow_party")] + public IList? AllowedDepartmentIdList { get; set; } + + /// + /// 获取或设置可见标签 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("allow_tag")] + [System.Text.Json.Serialization.JsonPropertyName("allow_tag")] + public IList? AllowedTagIdList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAgent/CgibinAgentSetScopeResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAgent/CgibinAgentSetScopeResponse.cs new file mode 100644 index 00000000..25b5feb6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAgent/CgibinAgentSetScopeResponse.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/agent/set 接口的响应。 + /// + public class CgibinAgentSetScopeResponse : WechatWorkResponse + { + /// + /// 获取或设置无效的成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("invaliduser")] + [System.Text.Json.Serialization.JsonPropertyName("invaliduser")] + public string[]? InvalidUserIdList { get; set; } + + /// + /// 获取或设置无效的部门 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("invalidparty")] + [System.Text.Json.Serialization.JsonPropertyName("invalidparty")] + public int[]? InvalidDepartmentIdList { get; set; } + + /// + /// 获取或设置无效的标签 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("invalidtag")] + [System.Text.Json.Serialization.JsonPropertyName("invalidtag")] + public int[]? InvalidTagIdList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatCreateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatCreateRequest.cs new file mode 100644 index 00000000..436af034 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatCreateRequest.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/appchat/create 接口的请求。 + /// + public class CgibinAppChatCreateRequest : WechatWorkRequest + { + /// + /// 获取或设置群聊 ID。 + /// + [Newtonsoft.Json.JsonProperty("chatid")] + [System.Text.Json.Serialization.JsonPropertyName("chatid")] + public string? ChatId { get; set; } + + /// + /// 获取或设置群聊名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = string.Empty; + + /// + /// 获取或设置群主 UserId。 + /// + [Newtonsoft.Json.JsonProperty("owner")] + [System.Text.Json.Serialization.JsonPropertyName("owner")] + public string? OwnerUserId { get; set; } + + /// + /// 获取或设置群成员 UserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("userlist")] + [System.Text.Json.Serialization.JsonPropertyName("userlist")] + public IList MemberUserIdList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatCreateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatCreateResponse.cs new file mode 100644 index 00000000..dc575667 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatCreateResponse.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/appchat/create 接口的响应。 + /// + public class CgibinAppChatCreateResponse : WechatWorkResponse + { + /// + /// 获取或设置群聊 ID。 + /// + [Newtonsoft.Json.JsonProperty("chatid")] + [System.Text.Json.Serialization.JsonPropertyName("chatid")] + public string ChatId { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatGetRequest.cs new file mode 100644 index 00000000..6be2727e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatGetRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/appchat/get 接口的请求。 + /// + public class CgibinAppChatGetRequest : WechatWorkRequest + { + /// + /// 获取或设置群聊 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ChatId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatGetResponse.cs new file mode 100644 index 00000000..2721290a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatGetResponse.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/appchat/get 接口的响应。 + /// + public class CgibinAppChatGetResponse : WechatWorkResponse + { + public static class Types + { + public class AppChat + { + /// + /// 获取或设置群聊 ID。 + /// + [Newtonsoft.Json.JsonProperty("chatid")] + [System.Text.Json.Serialization.JsonPropertyName("chatid")] + public string ChatId { get; set; } = default!; + + /// + /// 获取或设置群聊名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置群主 UserId。 + /// + [Newtonsoft.Json.JsonProperty("owner")] + [System.Text.Json.Serialization.JsonPropertyName("owner")] + public string OwnerUserId { get; set; } = default!; + + /// + /// 获取或设置群成员 UserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("userlist")] + [System.Text.Json.Serialization.JsonPropertyName("userlist")] + public IList MemberUserIdList { get; set; } = default!; + } + } + + /// + /// 获取或设置群聊信息。 + /// + [Newtonsoft.Json.JsonProperty("chat_info")] + [System.Text.Json.Serialization.JsonPropertyName("chat_info")] + public Types.AppChat AppChat { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatSendRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatSendRequest.cs new file mode 100644 index 00000000..eb1b5813 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatSendRequest.cs @@ -0,0 +1,136 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/appchat/send 接口的请求。 + /// + public class CgibinAppChatSendRequest : WechatWorkRequest + { + public static class Types + { + public class TextMessage : CgibinMessageSendRequest.Types.TextMessage + { + } + + public class ImageMessage : CgibinMessageSendRequest.Types.ImageMessage + { + } + + public class VoiceMessage : CgibinMessageSendRequest.Types.VoiceMessage + { + } + + public class VideoMessage : CgibinMessageSendRequest.Types.VideoMessage + { + } + + public class FileMessage : CgibinMessageSendRequest.Types.FileMessage + { + } + + public class TextCardMessage : CgibinMessageSendRequest.Types.TextCardMessage + { + } + + public class NewsMessage : CgibinMessageSendRequest.Types.NewsMessage + { + } + + public class MpNewsMessage : CgibinMessageSendRequest.Types.MpNewsMessage + { + } + + public class MarkdownMessage : CgibinMessageSendRequest.Types.MarkdownMessage + { + } + } + + /// + /// 获取或设置群聊 ID。 + /// + [Newtonsoft.Json.JsonProperty("chatid")] + [System.Text.Json.Serialization.JsonPropertyName("chatid")] + public string ChatId { get; set; } = string.Empty; + + /// + /// 获取或设置消息类型。 + /// + [Newtonsoft.Json.JsonProperty("msgtype")] + [System.Text.Json.Serialization.JsonPropertyName("msgtype")] + public string MessageType { get; set; } = string.Empty; + + /// + /// 获取或设置文本消息信息。 + /// + [Newtonsoft.Json.JsonProperty("text")] + [System.Text.Json.Serialization.JsonPropertyName("text")] + public Types.TextMessage? MessageContentForText { get; set; } + + /// + /// 获取或设置图片消息信息。 + /// + [Newtonsoft.Json.JsonProperty("image")] + [System.Text.Json.Serialization.JsonPropertyName("image")] + public Types.ImageMessage? MessageContentForImage { get; set; } + + /// + /// 获取或设置语音消息信息。 + /// + [Newtonsoft.Json.JsonProperty("voice")] + [System.Text.Json.Serialization.JsonPropertyName("voice")] + public Types.VoiceMessage? MessageContentForVoice { get; set; } + + /// + /// 获取或设置视频消息信息。 + /// + [Newtonsoft.Json.JsonProperty("video")] + [System.Text.Json.Serialization.JsonPropertyName("video")] + public Types.VideoMessage? MessageContentForVideo { get; set; } + + /// + /// 获取或设置文件消息信息。 + /// + [Newtonsoft.Json.JsonProperty("file")] + [System.Text.Json.Serialization.JsonPropertyName("file")] + public Types.FileMessage? MessageContentForFile { get; set; } + + /// + /// 获取或设置文本卡片消息信息。 + /// + [Newtonsoft.Json.JsonProperty("textcard")] + [System.Text.Json.Serialization.JsonPropertyName("textcard")] + public Types.TextCardMessage? MessageContentForTextCard { get; set; } + + /// + /// 获取或设置图文消息信息。 + /// + [Newtonsoft.Json.JsonProperty("news")] + [System.Text.Json.Serialization.JsonPropertyName("news")] + public Types.NewsMessage? MessageContentForNews { get; set; } + + /// + /// 获取或设置图文消息信息。 + /// + [Newtonsoft.Json.JsonProperty("mpnews")] + [System.Text.Json.Serialization.JsonPropertyName("mpnews")] + public Types.MpNewsMessage? MessageContentForMpNews { get; set; } + + /// + /// 获取或设置 Markdown 消息信息。 + /// + [Newtonsoft.Json.JsonProperty("markdown")] + [System.Text.Json.Serialization.JsonPropertyName("markdown")] + public Types.MarkdownMessage? MessageContentForMarkdown { get; set; } + + /// + /// 获取或设置是否是保密消息。 + /// + [Newtonsoft.Json.JsonProperty("safe")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedNullableBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("safe")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedNullableBooleanConverter))] + public bool? IsSafe { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatSendResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatSendResponse.cs new file mode 100644 index 00000000..ec61eda6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatSendResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/appchat/send 接口的响应。 + /// + public class CgibinAppChatSendResponse : WechatWorkResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatUpdateRequest.cs new file mode 100644 index 00000000..b6683345 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatUpdateRequest.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/appchat/update 接口的请求。 + /// + public class CgibinAppChatUpdateRequest : WechatWorkRequest + { + /// + /// 获取或设置群聊 ID。 + /// + [Newtonsoft.Json.JsonProperty("chatid")] + [System.Text.Json.Serialization.JsonPropertyName("chatid")] + public string ChatId { get; set; } = string.Empty; + + /// + /// 获取或设置群聊名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// 获取或设置群主 UserId。 + /// + [Newtonsoft.Json.JsonProperty("owner")] + [System.Text.Json.Serialization.JsonPropertyName("owner")] + public string? OwnerUserId { get; set; } + + /// + /// 获取或设置添加的群成员 UserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("add_user_list")] + [System.Text.Json.Serialization.JsonPropertyName("add_user_list")] + public IList? AddMemberUserIdList { get; set; } + + /// + /// 获取或设置踢出的群成员 UserId 列表。 + /// + [Newtonsoft.Json.JsonProperty("del_user_list")] + [System.Text.Json.Serialization.JsonPropertyName("del_user_list")] + public IList? RemoveMemberUserIdList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatUpdateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatUpdateResponse.cs new file mode 100644 index 00000000..39e6fb27 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinAppChat/CgibinAppChatUpdateResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/appchat/update 接口的响应。 + /// + public class CgibinAppChatUpdateResponse : WechatWorkResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinBatch/CgibinBatchInviteResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinBatch/CgibinBatchInviteResponse.cs index 7147c9f0..562088b1 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinBatch/CgibinBatchInviteResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinBatch/CgibinBatchInviteResponse.cs @@ -9,21 +9,21 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models public class CgibinBatchInviteResponse : WechatWorkResponse { /// - /// 获取或设置非法成员账号列表。 + /// 获取或设置无效的成员账号列表。 /// [Newtonsoft.Json.JsonProperty("invaliduser")] [System.Text.Json.Serialization.JsonPropertyName("invaliduser")] public string[]? InvalidUserIdList { get; set; } /// - /// 获取或设置非法部门 ID 列表。 + /// 获取或设置无效的部门 ID 列表。 /// [Newtonsoft.Json.JsonProperty("invalidparty")] [System.Text.Json.Serialization.JsonPropertyName("invalidparty")] public int[]? InvalidDepartmentIdList { get; set; } /// - /// 获取或设置非法标签 ID 列表。 + /// 获取或设置无效的标签 ID 列表。 /// [Newtonsoft.Json.JsonProperty("invalidtag")] [System.Text.Json.Serialization.JsonPropertyName("invalidtag")] diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CgibinExternalContactUnionIdToExternalUserIdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CgibinExternalContactUnionIdToExternalUserIdRequest.cs new file mode 100644 index 00000000..0377ba9f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CgibinExternalContactUnionIdToExternalUserIdRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/unionid_to_external_userid 接口的请求。 + /// + public class CgibinExternalContactUnionIdToExternalUserIdRequest : WechatWorkRequest + { + /// + /// 获取或设置用户 UnionId。 + /// + [Newtonsoft.Json.JsonProperty("unionid")] + [System.Text.Json.Serialization.JsonPropertyName("unionid")] + public string UnionId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CgibinExternalContactUnionIdToExternalUserIdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CgibinExternalContactUnionIdToExternalUserIdResponse.cs new file mode 100644 index 00000000..addbb89a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CgibinExternalContactUnionIdToExternalUserIdResponse.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/unionid_to_external_userid 接口的响应。 + /// + public class CgibinExternalContactUnionIdToExternalUserIdResponse : WechatWorkResponse + { + /// + /// 获取或设置外部联系人账号。 + /// + [Newtonsoft.Json.JsonProperty("external_userid")] + [System.Text.Json.Serialization.JsonPropertyName("external_userid")] + public string ExternalUserId { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactAddContactWayRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactAddContactWayRequest.cs index 404879c2..c6a461f1 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactAddContactWayRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactAddContactWayRequest.cs @@ -191,14 +191,14 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models public bool? IsTemp { get; set; } /// - /// 获取或设置临时会话二维码有效期(单位:秒)。 + /// 获取或设置临时会话二维码有效时间(单位:秒)。 /// [Newtonsoft.Json.JsonProperty("expires_in")] [System.Text.Json.Serialization.JsonPropertyName("expires_in")] public int? TempQrcodeExpiresIn { get; set; } /// - /// 获取或设置临时会话有效期有效期(单位:秒)。 + /// 获取或设置临时会话有效时间有效时间(单位:秒)。 /// [Newtonsoft.Json.JsonProperty("chat_expires_in")] [System.Text.Json.Serialization.JsonPropertyName("chat_expires_in")] diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactGetContactWayResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactGetContactWayResponse.cs index 6b74e92d..139371d3 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactGetContactWayResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactGetContactWayResponse.cs @@ -209,14 +209,14 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models public bool IsTemp { get; set; } = default!; /// - /// 获取或设置临时会话二维码有效期(单位:秒)。 + /// 获取或设置临时会话二维码有效时间(单位:秒)。 /// [Newtonsoft.Json.JsonProperty("expires_in")] [System.Text.Json.Serialization.JsonPropertyName("expires_in")] public int? TempQrcodeExpiresIn { get; set; } /// - /// 获取或设置临时会话有效期有效期(单位:秒)。 + /// 获取或设置临时会话有效时间有效时间(单位:秒)。 /// [Newtonsoft.Json.JsonProperty("chat_expires_in")] [System.Text.Json.Serialization.JsonPropertyName("chat_expires_in")] diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactUpdateContactWayRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactUpdateContactWayRequest.cs index 8508386d..18f7d404 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactUpdateContactWayRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactUpdateContactWayRequest.cs @@ -72,14 +72,14 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models public bool? IsTemp { get; set; } /// - /// 获取或设置临时会话二维码有效期(单位:秒)。 + /// 获取或设置临时会话二维码有效时间(单位:秒)。 /// [Newtonsoft.Json.JsonProperty("expires_in")] [System.Text.Json.Serialization.JsonPropertyName("expires_in")] public int? TempQrcodeExpiresIn { get; set; } /// - /// 获取或设置临时会话有效期有效期(单位:秒)。 + /// 获取或设置临时会话有效时间有效时间(单位:秒)。 /// [Newtonsoft.Json.JsonProperty("chat_expires_in")] [System.Text.Json.Serialization.JsonPropertyName("chat_expires_in")] diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupMessage/CgibinExternalContactAddMessageTemplateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupMessage/CgibinExternalContactAddMessageTemplateRequest.cs index 5b5228cf..3a649b9b 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupMessage/CgibinExternalContactAddMessageTemplateRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupMessage/CgibinExternalContactAddMessageTemplateRequest.cs @@ -10,7 +10,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models { public static class Types { - public class Text + public class TextMessage { /// /// 获取或设置文本消息内容。 @@ -177,7 +177,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models /// [Newtonsoft.Json.JsonProperty("text")] [System.Text.Json.Serialization.JsonPropertyName("text")] - public Types.Text? Text { get; set; } + public Types.TextMessage? Text { get; set; } /// /// 获取或设置附件列表。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupMessage/CgibinExternalContactGetGroupMessageListV2Response.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupMessage/CgibinExternalContactGetGroupMessageListV2Response.cs index c5959b1e..9de1f013 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupMessage/CgibinExternalContactGetGroupMessageListV2Response.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupMessage/CgibinExternalContactGetGroupMessageListV2Response.cs @@ -14,7 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models { public static class Types { - public class Text : CgibinExternalContactAddMessageTemplateRequest.Types.Text + public class TextMessage : CgibinExternalContactAddMessageTemplateRequest.Types.TextMessage { } @@ -49,7 +49,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models /// [Newtonsoft.Json.JsonProperty("text")] [System.Text.Json.Serialization.JsonPropertyName("text")] - public Types.Text? Text { get; set; } + public Types.TextMessage? Text { get; set; } /// /// 获取或设置附件列表。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupWelcome/CgibinExternalContactGroupWelcomeTemplateAddRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupWelcome/CgibinExternalContactGroupWelcomeTemplateAddRequest.cs index aa533554..1527bd53 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupWelcome/CgibinExternalContactGroupWelcomeTemplateAddRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupWelcome/CgibinExternalContactGroupWelcomeTemplateAddRequest.cs @@ -10,23 +10,23 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models { public static class Types { - public class Text : CgibinExternalContactSendWelcomeMessageRequest.Types.Text + public class TextMessage : CgibinExternalContactSendWelcomeMessageRequest.Types.TextMessage { } - public class Image : CgibinExternalContactSendWelcomeMessageRequest.Types.Attachment.Types.Image + public class ImageMessage : CgibinExternalContactSendWelcomeMessageRequest.Types.Attachment.Types.Image { } - public class Link : CgibinExternalContactSendWelcomeMessageRequest.Types.Attachment.Types.Link + public class LinkMessage : CgibinExternalContactSendWelcomeMessageRequest.Types.Attachment.Types.Link { } - public class Video : CgibinExternalContactSendWelcomeMessageRequest.Types.Attachment.Types.Video + public class VideoMessage : CgibinExternalContactSendWelcomeMessageRequest.Types.Attachment.Types.Video { } - public class MiniProgram : CgibinExternalContactSendWelcomeMessageRequest.Types.Attachment.Types.MiniProgram + public class MiniProgramMessage : CgibinExternalContactSendWelcomeMessageRequest.Types.Attachment.Types.MiniProgram { } } @@ -36,35 +36,35 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models /// [Newtonsoft.Json.JsonProperty("text")] [System.Text.Json.Serialization.JsonPropertyName("text")] - public Types.Text? Text { get; set; } + public Types.TextMessage? Text { get; set; } /// /// 获取或设置图片消息信息。 /// [Newtonsoft.Json.JsonProperty("image")] [System.Text.Json.Serialization.JsonPropertyName("image")] - public Types.Image? Image { get; set; } + public Types.ImageMessage? Image { get; set; } /// /// 获取或设置图文消息信息。 /// [Newtonsoft.Json.JsonProperty("link")] [System.Text.Json.Serialization.JsonPropertyName("link")] - public Types.Link? Link { get; set; } + public Types.LinkMessage? Link { get; set; } /// /// 获取或设置视频消息信息。 /// [Newtonsoft.Json.JsonProperty("video")] [System.Text.Json.Serialization.JsonPropertyName("video")] - public Types.Video? Video { get; set; } + public Types.VideoMessage? Video { get; set; } /// /// 获取或设置小程序消息信息。 /// [Newtonsoft.Json.JsonProperty("miniprogram")] [System.Text.Json.Serialization.JsonPropertyName("miniprogram")] - public Types.MiniProgram? MiniProgram { get; set; } + public Types.MiniProgramMessage? MiniProgram { get; set; } /// /// 获取或设置是否通知成员将这条入群欢迎语应用到客户群中。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupWelcome/CgibinExternalContactGroupWelcomeTemplateEditRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupWelcome/CgibinExternalContactGroupWelcomeTemplateEditRequest.cs index e4cbefff..9a5105c5 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupWelcome/CgibinExternalContactGroupWelcomeTemplateEditRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupWelcome/CgibinExternalContactGroupWelcomeTemplateEditRequest.cs @@ -10,23 +10,23 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models { public static class Types { - public class Text : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.Text + public class TextMessage : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.TextMessage { } - public class Image : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.Image + public class ImageMessage : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.ImageMessage { } - public class Link : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.Link + public class LinkMessage : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.LinkMessage { } - public class Video : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.Video + public class VideoMessage : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.VideoMessage { } - public class MiniProgram : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.MiniProgram + public class MiniProgramMessage : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.MiniProgramMessage { } } @@ -43,35 +43,35 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models /// [Newtonsoft.Json.JsonProperty("text")] [System.Text.Json.Serialization.JsonPropertyName("text")] - public Types.Text? Text { get; set; } + public Types.TextMessage? Text { get; set; } /// /// 获取或设置图片消息信息。 /// [Newtonsoft.Json.JsonProperty("image")] [System.Text.Json.Serialization.JsonPropertyName("image")] - public Types.Image? Image { get; set; } + public Types.ImageMessage? Image { get; set; } /// /// 获取或设置图文消息信息。 /// [Newtonsoft.Json.JsonProperty("link")] [System.Text.Json.Serialization.JsonPropertyName("link")] - public Types.Link? Link { get; set; } + public Types.LinkMessage? Link { get; set; } /// /// 获取或设置视频消息信息。 /// [Newtonsoft.Json.JsonProperty("video")] [System.Text.Json.Serialization.JsonPropertyName("video")] - public Types.Video? Video { get; set; } + public Types.VideoMessage? Video { get; set; } /// /// 获取或设置小程序消息信息。 /// [Newtonsoft.Json.JsonProperty("miniprogram")] [System.Text.Json.Serialization.JsonPropertyName("miniprogram")] - public Types.MiniProgram? MiniProgram { get; set; } + public Types.MiniProgramMessage? MiniProgram { get; set; } /// /// 获取或设置授权方安装的应用 ID。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupWelcome/CgibinExternalContactGroupWelcomeTemplateGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupWelcome/CgibinExternalContactGroupWelcomeTemplateGetResponse.cs index 95cd56d0..f5618b16 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupWelcome/CgibinExternalContactGroupWelcomeTemplateGetResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupWelcome/CgibinExternalContactGroupWelcomeTemplateGetResponse.cs @@ -10,23 +10,23 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models { public static class Types { - public class Text : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.Text + public class TextMessage : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.TextMessage { } - public class Image : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.Image + public class ImageMessage : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.ImageMessage { } - public class Link : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.Link + public class LinkMessage : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.LinkMessage { } - public class Video : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.Video + public class VideoMessage : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.VideoMessage { } - public class MiniProgram : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.MiniProgram + public class MiniProgramMessage : CgibinExternalContactGroupWelcomeTemplateAddRequest.Types.MiniProgramMessage { } } @@ -36,35 +36,35 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models /// [Newtonsoft.Json.JsonProperty("text")] [System.Text.Json.Serialization.JsonPropertyName("text")] - public Types.Text? Text { get; set; } + public Types.TextMessage? Text { get; set; } /// /// 获取或设置图片消息信息。 /// [Newtonsoft.Json.JsonProperty("image")] [System.Text.Json.Serialization.JsonPropertyName("image")] - public Types.Image? Image { get; set; } + public Types.ImageMessage? Image { get; set; } /// /// 获取或设置图文消息信息。 /// [Newtonsoft.Json.JsonProperty("link")] [System.Text.Json.Serialization.JsonPropertyName("link")] - public Types.Link? Link { get; set; } + public Types.LinkMessage? Link { get; set; } /// /// 获取或设置视频消息信息。 /// [Newtonsoft.Json.JsonProperty("video")] [System.Text.Json.Serialization.JsonPropertyName("video")] - public Types.Video? Video { get; set; } + public Types.VideoMessage? Video { get; set; } /// /// 获取或设置小程序消息信息。 /// [Newtonsoft.Json.JsonProperty("miniprogram")] [System.Text.Json.Serialization.JsonPropertyName("miniprogram")] - public Types.MiniProgram? MiniProgram { get; set; } + public Types.MiniProgramMessage? MiniProgram { get; set; } /// /// 获取或设置授权方安装的应用 ID。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupWelcome/CgibinExternalContactSendWelcomeMessageRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupWelcome/CgibinExternalContactSendWelcomeMessageRequest.cs index 83f90513..7c930525 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupWelcome/CgibinExternalContactSendWelcomeMessageRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/GroupWelcome/CgibinExternalContactSendWelcomeMessageRequest.cs @@ -10,7 +10,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models { public static class Types { - public class Text : CgibinExternalContactAddMessageTemplateRequest.Types.Text + public class TextMessage : CgibinExternalContactAddMessageTemplateRequest.Types.TextMessage { } @@ -31,7 +31,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models /// [Newtonsoft.Json.JsonProperty("text")] [System.Text.Json.Serialization.JsonPropertyName("text")] - public Types.Text? Text { get; set; } + public Types.TextMessage? Text { get; set; } /// /// 获取或设置附件列表。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/Message/CgibinExternalContactMessageSendRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/Message/CgibinExternalContactMessageSendRequest.cs new file mode 100644 index 00000000..bcf7bc30 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/Message/CgibinExternalContactMessageSendRequest.cs @@ -0,0 +1,216 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/message/send 接口的请求。 + /// + public class CgibinExternalContactMessageSendRequest : WechatWorkRequest + { + public static class Types + { + public class TextMessage : CgibinMessageSendRequest.Types.TextMessage + { + } + + public class ImageMessage : CgibinMessageSendRequest.Types.ImageMessage + { + } + + public class VoiceMessage : CgibinMessageSendRequest.Types.VoiceMessage + { + } + + public class VideoMessage : CgibinMessageSendRequest.Types.VideoMessage + { + } + + public class FileMessage : CgibinMessageSendRequest.Types.FileMessage + { + } + + public class TextCardMessage : CgibinMessageSendRequest.Types.TextCardMessage + { + } + + public class NewsMessage : CgibinMessageSendRequest.Types.NewsMessage + { + } + + public class MpNewsMessage : CgibinMessageSendRequest.Types.MpNewsMessage + { + } + + public class MiniProgramMessage + { + /// + /// 获取或设置小程序 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置小程序页面路径。 + /// + [Newtonsoft.Json.JsonProperty("pagepath")] + [System.Text.Json.Serialization.JsonPropertyName("pagepath")] + public string PagePath { get; set; } = string.Empty; + + /// + /// 获取或设置小程序标题。 + /// + [Newtonsoft.Json.JsonProperty("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] + public string? Title { get; set; } + + /// + /// 获取或设置小程序封面 MediaId。 + /// + [Newtonsoft.Json.JsonProperty("thumb_media_id")] + [System.Text.Json.Serialization.JsonPropertyName("thumb_media_id")] + public string? ThumbnailMediaId { get; set; } + } + } + + /// + /// 获取或设置接收消息外部联系人账号列表。 + /// + [Newtonsoft.Json.JsonProperty("to_external_user")] + [System.Text.Json.Serialization.JsonPropertyName("to_external_user")] + public IList? ToExternalUserIdList { get; set; } + + /// + /// 获取或设置接收消息家长账号列表。 + /// + [Newtonsoft.Json.JsonProperty("to_parent_userid")] + [System.Text.Json.Serialization.JsonPropertyName("to_parent_userid")] + public IList? ToParentUserIdList { get; set; } + + /// + /// 获取或设置接收消息学生账号列表。 + /// + [Newtonsoft.Json.JsonProperty("to_student_userid")] + [System.Text.Json.Serialization.JsonPropertyName("to_student_userid")] + public IList? ToStudentUserIdList { get; set; } + + /// + /// 获取或设置接收消息的部门 ID列表。 + /// + [Newtonsoft.Json.JsonProperty("to_party")] + [System.Text.Json.Serialization.JsonPropertyName("to_party")] + public IList? ToDepartmentIdList { get; set; } + + /// + /// 获取或设置是否发送给学校的所有家长。 + /// + [Newtonsoft.Json.JsonProperty("toall")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedNullableBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("toall")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedNullableBooleanConverter))] + public bool? IsToAll { get; set; } + + /// + /// 获取或设置消息类型。 + /// + [Newtonsoft.Json.JsonProperty("msgtype")] + [System.Text.Json.Serialization.JsonPropertyName("msgtype")] + public string MessageType { get; set; } = string.Empty; + + /// + /// 获取或设置文本消息信息。 + /// + [Newtonsoft.Json.JsonProperty("text")] + [System.Text.Json.Serialization.JsonPropertyName("text")] + public Types.TextMessage? MessageContentForText { get; set; } + + /// + /// 获取或设置图片消息信息。 + /// + [Newtonsoft.Json.JsonProperty("image")] + [System.Text.Json.Serialization.JsonPropertyName("image")] + public Types.ImageMessage? MessageContentForImage { get; set; } + + /// + /// 获取或设置语音消息信息。 + /// + [Newtonsoft.Json.JsonProperty("voice")] + [System.Text.Json.Serialization.JsonPropertyName("voice")] + public Types.VoiceMessage? MessageContentForVoice { get; set; } + + /// + /// 获取或设置视频消息信息。 + /// + [Newtonsoft.Json.JsonProperty("video")] + [System.Text.Json.Serialization.JsonPropertyName("video")] + public Types.VideoMessage? MessageContentForVideo { get; set; } + + /// + /// 获取或设置文件消息信息。 + /// + [Newtonsoft.Json.JsonProperty("file")] + [System.Text.Json.Serialization.JsonPropertyName("file")] + public Types.FileMessage? MessageContentForFile { get; set; } + + /// + /// 获取或设置文本卡片消息信息。 + /// + [Newtonsoft.Json.JsonProperty("textcard")] + [System.Text.Json.Serialization.JsonPropertyName("textcard")] + public Types.TextCardMessage? MessageContentForTextCard { get; set; } + + /// + /// 获取或设置图文消息信息。 + /// + [Newtonsoft.Json.JsonProperty("news")] + [System.Text.Json.Serialization.JsonPropertyName("news")] + public Types.NewsMessage? MessageContentForNews { get; set; } + + /// + /// 获取或设置图文消息信息。 + /// + [Newtonsoft.Json.JsonProperty("mpnews")] + [System.Text.Json.Serialization.JsonPropertyName("mpnews")] + public Types.MpNewsMessage? MessageContentForMpNews { get; set; } + + /// + /// 获取或设置小程序消息信息。 + /// + [Newtonsoft.Json.JsonProperty("miniprogram")] + [System.Text.Json.Serialization.JsonPropertyName("miniprogram")] + public Types.MiniProgramMessage? MessageContentForMiniProgram { get; set; } + + /// + /// 获取或设置应用 ID。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("agentid")] + [System.Text.Json.Serialization.JsonPropertyName("agentid")] + public int? AgentId { get; set; } + + /// + /// 获取或设置是否开启 ID 转译。 + /// + [Newtonsoft.Json.JsonProperty("enable_id_trans")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedNullableBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("enable_id_trans")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedNullableBooleanConverter))] + public bool? EnableIdTransform { get; set; } + + /// + /// 获取或设置是否开启重复消息检查。 + /// + [Newtonsoft.Json.JsonProperty("enable_duplicate_check")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedNullableBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("enable_duplicate_check")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedNullableBooleanConverter))] + public bool? EnableDuplicateCheck { get; set; } + + /// + /// 获取或设置重复消息检查的时间间隔(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("duplicate_check_interval")] + [System.Text.Json.Serialization.JsonPropertyName("duplicate_check_interval")] + public int? DuplicateCheckInterval { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/Message/CgibinExternalContactMessageSendResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/Message/CgibinExternalContactMessageSendResponse.cs new file mode 100644 index 00000000..91cb3794 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/Message/CgibinExternalContactMessageSendResponse.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/message/send 接口的响应。 + /// + public class CgibinExternalContactMessageSendResponse : WechatWorkResponse + { + /// + /// 获取或设置无效的外部联系人账号列表。 + /// + [Newtonsoft.Json.JsonProperty("invalid_external_user")] + [System.Text.Json.Serialization.JsonPropertyName("invalid_external_user")] + public string[]? InvalidExternalUserIdList { get; set; } + + /// + /// 获取或设置无效的家长账号列表。 + /// + [Newtonsoft.Json.JsonProperty("invalid_parent_userid")] + [System.Text.Json.Serialization.JsonPropertyName("invalid_parent_userid")] + public string[]? InvalidParentUserIdList { get; set; } + + /// + /// 获取或设置无效的学生账号列表。 + /// + [Newtonsoft.Json.JsonProperty("invalid_student_userid")] + [System.Text.Json.Serialization.JsonPropertyName("invalid_student_userid")] + public string[]? InvalidStudentUserIdList { get; set; } + + /// + /// 获取或设置无效的部门 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("invalid_party")] + [System.Text.Json.Serialization.JsonPropertyName("invalid_party")] + public int[]? InvalidDepartmentIdIdList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinLinkedCorp/Message/CgibinLinkedCorpMessageSendRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinLinkedCorp/Message/CgibinLinkedCorpMessageSendRequest.cs new file mode 100644 index 00000000..576b17c2 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinLinkedCorp/Message/CgibinLinkedCorpMessageSendRequest.cs @@ -0,0 +1,177 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/linkedcorp/message/send 接口的请求。 + /// + public class CgibinLinkedCorpMessageSendRequest : WechatWorkRequest + { + public static class Types + { + public class TextMessage : CgibinMessageSendRequest.Types.TextMessage + { + } + + public class ImageMessage : CgibinMessageSendRequest.Types.ImageMessage + { + } + + public class VoiceMessage : CgibinMessageSendRequest.Types.VoiceMessage + { + } + + public class VideoMessage : CgibinMessageSendRequest.Types.VideoMessage + { + } + + public class FileMessage : CgibinMessageSendRequest.Types.FileMessage + { + } + + public class TextCardMessage : CgibinMessageSendRequest.Types.TextCardMessage + { + } + + public class NewsMessage : CgibinMessageSendRequest.Types.NewsMessage + { + } + + public class MpNewsMessage : CgibinMessageSendRequest.Types.MpNewsMessage + { + } + + public class MarkdownMessage : CgibinMessageSendRequest.Types.MarkdownMessage + { + } + + public class MiniProgramNoticeMessage : CgibinMessageSendRequest.Types.MiniProgramNoticeMessage + { + } + } + + /// + /// 获取或设置接收消息的互联企业成员账号(格式:"CorpId/UserId")列表。 + /// + [Newtonsoft.Json.JsonProperty("touser")] + [System.Text.Json.Serialization.JsonPropertyName("touser")] + public IList? ToCorpUserIdList { get; set; } + + /// + /// 获取或设置接收消息的互联企业部门 ID(格式:"LinkedId/DepartmentId")列表。 + /// + [Newtonsoft.Json.JsonProperty("toparty")] + [System.Text.Json.Serialization.JsonPropertyName("toparty")] + public IList? ToLinkedDepartmentIdList { get; set; } + + /// + /// 获取或设置接收消息的标签 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("totag")] + [System.Text.Json.Serialization.JsonPropertyName("totag")] + public IList? ToTagIdList { get; set; } + + /// + /// 获取或设置是否发送给应用可见范围内的所有人,包括互联企业的成员。 + /// + [Newtonsoft.Json.JsonProperty("toall")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedNullableBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("toall")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedNullableBooleanConverter))] + public bool? IsToAll { get; set; } + + /// + /// 获取或设置消息类型。 + /// + [Newtonsoft.Json.JsonProperty("msgtype")] + [System.Text.Json.Serialization.JsonPropertyName("msgtype")] + public string MessageType { get; set; } = string.Empty; + + /// + /// 获取或设置文本消息信息。 + /// + [Newtonsoft.Json.JsonProperty("text")] + [System.Text.Json.Serialization.JsonPropertyName("text")] + public Types.TextMessage? MessageContentForText { get; set; } + + /// + /// 获取或设置图片消息信息。 + /// + [Newtonsoft.Json.JsonProperty("image")] + [System.Text.Json.Serialization.JsonPropertyName("image")] + public Types.ImageMessage? MessageContentForImage { get; set; } + + /// + /// 获取或设置语音消息信息。 + /// + [Newtonsoft.Json.JsonProperty("voice")] + [System.Text.Json.Serialization.JsonPropertyName("voice")] + public Types.VoiceMessage? MessageContentForVoice { get; set; } + + /// + /// 获取或设置视频消息信息。 + /// + [Newtonsoft.Json.JsonProperty("video")] + [System.Text.Json.Serialization.JsonPropertyName("video")] + public Types.VideoMessage? MessageContentForVideo { get; set; } + + /// + /// 获取或设置文件消息信息。 + /// + [Newtonsoft.Json.JsonProperty("file")] + [System.Text.Json.Serialization.JsonPropertyName("file")] + public Types.FileMessage? MessageContentForFile { get; set; } + + /// + /// 获取或设置文本卡片消息信息。 + /// + [Newtonsoft.Json.JsonProperty("textcard")] + [System.Text.Json.Serialization.JsonPropertyName("textcard")] + public Types.TextCardMessage? MessageContentForTextCard { get; set; } + + /// + /// 获取或设置图文消息信息。 + /// + [Newtonsoft.Json.JsonProperty("news")] + [System.Text.Json.Serialization.JsonPropertyName("news")] + public Types.NewsMessage? MessageContentForNews { get; set; } + + /// + /// 获取或设置图文消息信息。 + /// + [Newtonsoft.Json.JsonProperty("mpnews")] + [System.Text.Json.Serialization.JsonPropertyName("mpnews")] + public Types.MpNewsMessage? MessageContentForMpNews { get; set; } + + /// + /// 获取或设置 Markdown 消息信息。 + /// + [Newtonsoft.Json.JsonProperty("markdown")] + [System.Text.Json.Serialization.JsonPropertyName("markdown")] + public Types.MarkdownMessage? MessageContentForMarkdown { get; set; } + + /// + /// 获取或设置小程序通知消息信息。 + /// + [Newtonsoft.Json.JsonProperty("miniprogram_notice")] + [System.Text.Json.Serialization.JsonPropertyName("miniprogram_notice")] + public Types.MiniProgramNoticeMessage? MessageContentForMiniProgramNotice { get; set; } + + /// + /// 获取或设置应用 ID。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("agentid")] + [System.Text.Json.Serialization.JsonPropertyName("agentid")] + public int? AgentId { get; set; } + + /// + /// 获取或设置是否是保密消息。 + /// + [Newtonsoft.Json.JsonProperty("safe")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedNullableBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("safe")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedNullableBooleanConverter))] + public bool? IsSafe { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinLinkedCorp/Message/CgibinLinkedCorpMessageSendResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinLinkedCorp/Message/CgibinLinkedCorpMessageSendResponse.cs new file mode 100644 index 00000000..4bc613d6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinLinkedCorp/Message/CgibinLinkedCorpMessageSendResponse.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/linkedcorp/message/send 接口的响应。 + /// + public class CgibinLinkedCorpMessageSendResponse : WechatWorkResponse + { + /// + /// 获取或设置无效的互联企业成员账号(格式:"CorpId/UserId")列表。 + /// + [Newtonsoft.Json.JsonProperty("invaliduser")] + [System.Text.Json.Serialization.JsonPropertyName("invaliduser")] + public string[]? InvalidCorpUserIdList { get; set; } + + /// + /// 获取或设置无效的互联企业部门 ID(格式:"LinkedId/DepartmentId")列表。 + /// + [Newtonsoft.Json.JsonProperty("invalidparty")] + [System.Text.Json.Serialization.JsonPropertyName("invalidparty")] + public string[]? InvalidLinkedDepartmentIdList { get; set; } + + /// + /// 获取或设置无效的标签 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("invalidtag")] + [System.Text.Json.Serialization.JsonPropertyName("invalidtag")] + public int[]? InvalidTagIdList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageGetStatisticsRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageGetStatisticsRequest.cs new file mode 100644 index 00000000..9be63c1e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageGetStatisticsRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/message/get_statistics 接口的请求。 + /// + public class CgibinMessageGetStatisticsRequest : WechatWorkRequest + { + /// + /// 获取或设置查询时间类型。 + /// + [Newtonsoft.Json.JsonProperty("time_type")] + [System.Text.Json.Serialization.JsonPropertyName("time_type")] + public int? TimeType { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageGetStatisticsResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageGetStatisticsResponse.cs new file mode 100644 index 00000000..6ab5c0b9 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageGetStatisticsResponse.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/message/get_statistics 接口的响应。 + /// + public class CgibinMessageGetStatisticsResponse : WechatWorkResponse + { + public static class Types + { + public class Data + { + /// + /// 获取或设置应用 ID。 + /// + [Newtonsoft.Json.JsonProperty("agentid")] + [System.Text.Json.Serialization.JsonPropertyName("agentid")] + public int AgentId { get; set; } + + /// + /// 获取或设置应用名。 + /// + [Newtonsoft.Json.JsonProperty("app_name")] + [System.Text.Json.Serialization.JsonPropertyName("app_name")] + public string AppName { get; set; } = default!; + + /// + /// 获取或设置发消息成功人次。 + /// + [Newtonsoft.Json.JsonProperty("count")] + [System.Text.Json.Serialization.JsonPropertyName("count")] + public int MessageCount { get; set; } + } + } + + /// + /// 获取或设置统计数据列表。 + /// + [Newtonsoft.Json.JsonProperty("statistics")] + [System.Text.Json.Serialization.JsonPropertyName("statistics")] + public Types.Data[] DataList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageSendRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageSendRequest.cs new file mode 100644 index 00000000..52a33420 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageSendRequest.cs @@ -0,0 +1,524 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/message/send 接口的请求。 + /// + public class CgibinMessageSendRequest : WechatWorkRequest + { + public static class Types + { + public class TextMessage + { + /// + /// 获取或设置文本内容。 + /// + [Newtonsoft.Json.JsonProperty("content")] + [System.Text.Json.Serialization.JsonPropertyName("content")] + public string Content { get; set; } = string.Empty; + } + + public class ImageMessage + { + /// + /// 获取或设置图片 MediaId。 + /// + [Newtonsoft.Json.JsonProperty("media_id")] + [System.Text.Json.Serialization.JsonPropertyName("media_id")] + public string MediaId { get; set; } = string.Empty; + } + + public class VoiceMessage + { + /// + /// 获取或设置语音 MediaId。 + /// + [Newtonsoft.Json.JsonProperty("media_id")] + [System.Text.Json.Serialization.JsonPropertyName("media_id")] + public string MediaId { get; set; } = string.Empty; + } + + public class VideoMessage + { + /// + /// 获取或设置视频 MediaId。 + /// + [Newtonsoft.Json.JsonProperty("media_id")] + [System.Text.Json.Serialization.JsonPropertyName("media_id")] + public string MediaId { get; set; } = string.Empty; + + /// + /// 获取或设置视频标题。 + /// + [Newtonsoft.Json.JsonProperty("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] + public string? Title { get; set; } + + /// + /// 获取或设置视频描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string? Description { get; set; } + } + + public class FileMessage + { + /// + /// 获取或设置文件 MediaId。 + /// + [Newtonsoft.Json.JsonProperty("media_id")] + [System.Text.Json.Serialization.JsonPropertyName("media_id")] + public string MediaId { get; set; } = string.Empty; + } + + public class TextCardMessage + { + /// + /// 获取或设置点击后跳转的链接。 + /// + [Newtonsoft.Json.JsonProperty("url")] + [System.Text.Json.Serialization.JsonPropertyName("url")] + public string Url { get; set; } = string.Empty; + + /// + /// 获取或设置卡片标题。 + /// + [Newtonsoft.Json.JsonProperty("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] + public string Title { get; set; } = string.Empty; + + /// + /// 获取或设置卡片描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置按钮文字。 + /// + [Newtonsoft.Json.JsonProperty("btntxt")] + [System.Text.Json.Serialization.JsonPropertyName("btntxt")] + public string? ButtonText { get; set; } + } + + public class NewsMessage + { + public static class Types + { + public class Article + { + /// + /// 获取或设置点击后跳转的链接。 + /// + [Newtonsoft.Json.JsonProperty("url")] + [System.Text.Json.Serialization.JsonPropertyName("url")] + public string Url { get; set; } = string.Empty; + + /// + /// 获取或设置图文标题。 + /// + [Newtonsoft.Json.JsonProperty("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] + public string Title { get; set; } = string.Empty; + + /// + /// 获取或设置图文描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string? Description { get; set; } + + /// + /// 获取或设置图文封面 URL。 + /// + [Newtonsoft.Json.JsonProperty("picurl")] + [System.Text.Json.Serialization.JsonPropertyName("picurl")] + public string? PictureUrl { get; set; } + + /// + /// 获取或设置按钮文字。 + /// + [Newtonsoft.Json.JsonProperty("btntxt")] + [System.Text.Json.Serialization.JsonPropertyName("btntxt")] + public string? ButtonText { get; set; } + } + } + + /// + /// 获取或设置图文消息列表。 + /// + [Newtonsoft.Json.JsonProperty("articles")] + [System.Text.Json.Serialization.JsonPropertyName("articles")] + public IList ArticleList { get; set; } = new List(); + } + + public class MpNewsMessage + { + public static class Types + { + public class Article + { + /// + /// 获取或设置点击后跳转的链接。 + /// + [Newtonsoft.Json.JsonProperty("url")] + [System.Text.Json.Serialization.JsonPropertyName("url")] + public string Url { get; set; } = string.Empty; + + /// + /// 获取或设置图文标题。 + /// + [Newtonsoft.Json.JsonProperty("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] + public string Title { get; set; } = string.Empty; + + /// + /// 获取或设置图文摘要。 + /// + [Newtonsoft.Json.JsonProperty("digest")] + [System.Text.Json.Serialization.JsonPropertyName("digest")] + public string? Digest { get; set; } + + /// + /// 获取或设置图文作者。 + /// + [Newtonsoft.Json.JsonProperty("author")] + [System.Text.Json.Serialization.JsonPropertyName("author")] + public string? Author { get; set; } + + /// + /// 获取或设置图文内容。 + /// + [Newtonsoft.Json.JsonProperty("content")] + [System.Text.Json.Serialization.JsonPropertyName("content")] + public string Content { get; set; } = string.Empty; + + /// + /// 获取或设置图文原文链接。 + /// + [Newtonsoft.Json.JsonProperty("content_source_url")] + [System.Text.Json.Serialization.JsonPropertyName("content_source_url")] + public string? ContentSourceUrl { get; set; } + + /// + /// 获取或设置图文封面 MediaId。 + /// + [Newtonsoft.Json.JsonProperty("thumb_media_id")] + [System.Text.Json.Serialization.JsonPropertyName("thumb_media_id")] + public string? ThumbnailMediaId { get; set; } + } + } + + /// + /// 获取或设置图文消息列表。 + /// + [Newtonsoft.Json.JsonProperty("articles")] + [System.Text.Json.Serialization.JsonPropertyName("articles")] + public IList ArticleList { get; set; } = new List(); + } + + public class MarkdownMessage + { + /// + /// 获取或设置 Markdown 内容。 + /// + [Newtonsoft.Json.JsonProperty("content")] + [System.Text.Json.Serialization.JsonPropertyName("content")] + public string Content { get; set; } = string.Empty; + } + + public class MiniProgramNoticeMessage + { + public static class Types + { + public class KeyValue + { + /// + /// 获取或设置消息内容的 Key。 + /// + [Newtonsoft.Json.JsonProperty("key")] + [System.Text.Json.Serialization.JsonPropertyName("key")] + public string Key { get; set; } = string.Empty; + + /// + /// 获取或设置消息内容的值。 + /// + [Newtonsoft.Json.JsonProperty("value")] + [System.Text.Json.Serialization.JsonPropertyName("value")] + public string Value { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置小程序 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置小程序页面路径。 + /// + [Newtonsoft.Json.JsonProperty("page")] + [System.Text.Json.Serialization.JsonPropertyName("page")] + public string PagePath { get; set; } = string.Empty; + + /// + /// 获取或设置小程序标题。 + /// + [Newtonsoft.Json.JsonProperty("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] + public string Title { get; set; } = string.Empty; + + /// + /// 获取或设置小程序描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string? Description { get; set; } + + /// + /// 获取或设置消息内容键值对列表。 + /// + [Newtonsoft.Json.JsonProperty("content_item")] + [System.Text.Json.Serialization.JsonPropertyName("content_item")] + public IList? ContentKeyValueList { get; set; } + + /// + /// 获取或设置是否放大第一个消息内容键值对。 + /// + [Newtonsoft.Json.JsonProperty("emphasis_first_item")] + [System.Text.Json.Serialization.JsonPropertyName("emphasis_first_item")] + public bool? IsFirstItemEmphasised { get; set; } + } + + public class TaskCardMessage + { + public static class Types + { + public class Button + { + /// + /// 获取或设置按钮 Key 值。 + /// + [Newtonsoft.Json.JsonProperty("key")] + [System.Text.Json.Serialization.JsonPropertyName("key")] + public string Key { get; set; } = string.Empty; + + /// + /// 获取或设置按钮名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = string.Empty; + + /// + /// 获取或设置按钮颜色。 + /// + [Newtonsoft.Json.JsonProperty("color")] + [System.Text.Json.Serialization.JsonPropertyName("color")] + public string? Color { get; set; } + + /// + /// 获取或设置按钮字体是否加粗。 + /// + [Newtonsoft.Json.JsonProperty("is_bold")] + [System.Text.Json.Serialization.JsonPropertyName("is_bold")] + public bool? IsBold { get; set; } + } + } + + /// + /// 获取或设置任务 ID。 + /// + [Newtonsoft.Json.JsonProperty("task_id")] + [System.Text.Json.Serialization.JsonPropertyName("task_id")] + public string TaskId { get; set; } = string.Empty; + + /// + /// 获取或设置点击后跳转的链接。 + /// + [Newtonsoft.Json.JsonProperty("url")] + [System.Text.Json.Serialization.JsonPropertyName("url")] + public string Url { get; set; } = string.Empty; + + /// + /// 获取或设置卡片标题。 + /// + [Newtonsoft.Json.JsonProperty("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] + public string Title { get; set; } = string.Empty; + + /// + /// 获取或设置卡片描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置按钮列表。 + /// + [Newtonsoft.Json.JsonProperty("btn")] + [System.Text.Json.Serialization.JsonPropertyName("btn")] + public IList ButtonList { get; set; } = new List(); + } + } + + /// + /// 获取或设置接收消息的成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("touser")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.SeparatedByVBarStringIListConverter))] + [System.Text.Json.Serialization.JsonPropertyName("touser")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.SeparatedByVBarStringIListConverter))] + public IList? ToUserIdList { get; set; } + + /// + /// 获取或设置接收消息的部门 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("toparty")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.SeparatedByVBarInt32IListConverter))] + [System.Text.Json.Serialization.JsonPropertyName("toparty")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.SeparatedByVBarInt32IListConverter))] + public IList? ToDepartmentIdList { get; set; } + + /// + /// 获取或设置接收消息的标签 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("totag")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.SeparatedByVBarInt32IListConverter))] + [System.Text.Json.Serialization.JsonPropertyName("totag")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.SeparatedByVBarInt32IListConverter))] + public IList? ToTagIdList { get; set; } + + /// + /// 获取或设置消息类型。 + /// + [Newtonsoft.Json.JsonProperty("msgtype")] + [System.Text.Json.Serialization.JsonPropertyName("msgtype")] + public string MessageType { get; set; } = string.Empty; + + /// + /// 获取或设置文本消息信息。 + /// + [Newtonsoft.Json.JsonProperty("text")] + [System.Text.Json.Serialization.JsonPropertyName("text")] + public Types.TextMessage? MessageContentForText { get; set; } + + /// + /// 获取或设置图片消息信息。 + /// + [Newtonsoft.Json.JsonProperty("image")] + [System.Text.Json.Serialization.JsonPropertyName("image")] + public Types.ImageMessage? MessageContentForImage { get; set; } + + /// + /// 获取或设置语音消息信息。 + /// + [Newtonsoft.Json.JsonProperty("voice")] + [System.Text.Json.Serialization.JsonPropertyName("voice")] + public Types.VoiceMessage? MessageContentForVoice { get; set; } + + /// + /// 获取或设置视频消息信息。 + /// + [Newtonsoft.Json.JsonProperty("video")] + [System.Text.Json.Serialization.JsonPropertyName("video")] + public Types.VideoMessage? MessageContentForVideo { get; set; } + + /// + /// 获取或设置文件消息信息。 + /// + [Newtonsoft.Json.JsonProperty("file")] + [System.Text.Json.Serialization.JsonPropertyName("file")] + public Types.FileMessage? MessageContentForFile { get; set; } + + /// + /// 获取或设置文本卡片消息信息。 + /// + [Newtonsoft.Json.JsonProperty("textcard")] + [System.Text.Json.Serialization.JsonPropertyName("textcard")] + public Types.TextCardMessage? MessageContentForTextCard { get; set; } + + /// + /// 获取或设置图文消息信息。 + /// + [Newtonsoft.Json.JsonProperty("news")] + [System.Text.Json.Serialization.JsonPropertyName("news")] + public Types.NewsMessage? MessageContentForNews { get; set; } + + /// + /// 获取或设置图文消息信息。 + /// + [Newtonsoft.Json.JsonProperty("mpnews")] + [System.Text.Json.Serialization.JsonPropertyName("mpnews")] + public Types.MpNewsMessage? MessageContentForMpNews { get; set; } + + /// + /// 获取或设置 Markdown 消息信息。 + /// + [Newtonsoft.Json.JsonProperty("markdown")] + [System.Text.Json.Serialization.JsonPropertyName("markdown")] + public Types.MarkdownMessage? MessageContentForMarkdown { get; set; } + + /// + /// 获取或设置小程序通知消息信息。 + /// + [Newtonsoft.Json.JsonProperty("miniprogram_notice")] + [System.Text.Json.Serialization.JsonPropertyName("miniprogram_notice")] + public Types.MiniProgramNoticeMessage? MessageContentForMiniProgramNotice { get; set; } + + /// + /// 获取或设置任务卡片消息信息。 + /// + [Newtonsoft.Json.JsonProperty("interactive_taskcard")] + [System.Text.Json.Serialization.JsonPropertyName("interactive_taskcard")] + public Types.TaskCardMessage? MessageContentForTaskCard { get; set; } + + /// + /// 获取或设置应用 ID。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("agentid")] + [System.Text.Json.Serialization.JsonPropertyName("agentid")] + public int? AgentId { get; set; } + + /// + /// 获取或设置是否是保密消息。 + /// + [Newtonsoft.Json.JsonProperty("safe")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedNullableBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("safe")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedNullableBooleanConverter))] + public bool? IsSafe { get; set; } + + /// + /// 获取或设置是否开启 ID 转译。 + /// + [Newtonsoft.Json.JsonProperty("enable_id_trans")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedNullableBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("enable_id_trans")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedNullableBooleanConverter))] + public bool? EnableIdTransform { get; set; } + + /// + /// 获取或设置是否开启重复消息检查。 + /// + [Newtonsoft.Json.JsonProperty("enable_duplicate_check")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumberTypedNullableBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("enable_duplicate_check")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumberTypedNullableBooleanConverter))] + public bool? EnableDuplicateCheck { get; set; } + + /// + /// 获取或设置重复消息检查的时间间隔(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("duplicate_check_interval")] + [System.Text.Json.Serialization.JsonPropertyName("duplicate_check_interval")] + public int? DuplicateCheckInterval { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageSendResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageSendResponse.cs new file mode 100644 index 00000000..2d1cfa28 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageSendResponse.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/message/send 接口的响应。 + /// + public class CgibinMessageSendResponse : WechatWorkResponse + { + /// + /// 获取或设置无效的成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("invaliduser")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.SeparatedByVBarStringArrayConverter))] + [System.Text.Json.Serialization.JsonPropertyName("invaliduser")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.SeparatedByVBarStringArrayConverter))] + public string[]? InvalidUserIdList { get; set; } + + /// + /// 获取或设置无效的部门 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("invalidparty")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.SeparatedByVBarInt32ArrayConverter))] + [System.Text.Json.Serialization.JsonPropertyName("invalidparty")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.SeparatedByVBarInt32ArrayConverter))] + public int[]? InvalidDepartmentIdList { get; set; } + + /// + /// 获取或设置无效的标签 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("invalidtag")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.SeparatedByVBarInt32ArrayConverter))] + [System.Text.Json.Serialization.JsonPropertyName("invalidtag")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.SeparatedByVBarInt32ArrayConverter))] + public int[]? InvalidTagIdList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageUpdateTaskCardRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageUpdateTaskCardRequest.cs new file mode 100644 index 00000000..2817e216 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageUpdateTaskCardRequest.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/message/update_taskcard 接口的请求。 + /// + public class CgibinMessageUpdateTaskCardRequest : WechatWorkRequest + { + /// + /// 获取或设置成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("userids")] + [System.Text.Json.Serialization.JsonPropertyName("userids")] + public IList? UserIdList { get; set; } + + /// + /// 获取或设置任务 ID。 + /// + [Newtonsoft.Json.JsonProperty("task_id")] + [System.Text.Json.Serialization.JsonPropertyName("task_id")] + public string TaskId { get; set; } = string.Empty; + + /// + /// 获取或设置应用 ID。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("agentid")] + [System.Text.Json.Serialization.JsonPropertyName("agentid")] + public int? AgentId { get; set; } + + /// + /// 获取或设置替换文案。 + /// + [Newtonsoft.Json.JsonProperty("replace_name")] + [System.Text.Json.Serialization.JsonPropertyName("replace_name")] + public string ReplacementText { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageUpdateTaskCardResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageUpdateTaskCardResponse.cs new file mode 100644 index 00000000..b8d5eee8 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessage/CgibinMessageUpdateTaskCardResponse.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/message/update_taskcard 接口的响应。 + /// + public class CgibinMessageUpdateTaskCardResponse : WechatWorkResponse + { + /// + /// 获取或设置无效的成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("invaliduser")] + [System.Text.Json.Serialization.JsonPropertyName("invaliduser")] + public string[]? InvalidUserIdList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditCheckRoomAgreeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditCheckRoomAgreeRequest.cs new file mode 100644 index 00000000..8f65009b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditCheckRoomAgreeRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/msgaudit/check_room_agree 接口的请求。 + /// + public class CgibinMessageAuditCheckRoomAgreeRequest : WechatWorkRequest + { + /// + /// 获取或设置待查询的群聊房间 ID。 + /// + [Newtonsoft.Json.JsonProperty("roomid")] + [System.Text.Json.Serialization.JsonPropertyName("roomid")] + public string RoomId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditCheckRoomAgreeResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditCheckRoomAgreeResponse.cs new file mode 100644 index 00000000..35dcd223 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditCheckRoomAgreeResponse.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/msgaudit/check_room_agree 接口的响应。 + /// + public class CgibinMessageAuditCheckRoomAgreeResponse : WechatWorkResponse + { + public static class Types + { + public class Data + { + /// + /// 获取或设置外部联系人的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("exteranalopenid")] + [System.Text.Json.Serialization.JsonPropertyName("exteranalopenid")] + public string ExternalOpenId { get; set; } = default!; + + /// + /// 获取或设置同意状态。 + /// + [Newtonsoft.Json.JsonProperty("agree_status")] + [System.Text.Json.Serialization.JsonPropertyName("agree_status")] + public string Status { get; set; } = default!; + + /// + /// 获取或设置状态改变的时间戳。 + /// + [Newtonsoft.Json.JsonProperty("status_change_time")] + [System.Text.Json.Serialization.JsonPropertyName("status_change_time")] + public long StatusChangedTimestamp { get; set; } + } + } + + /// + /// 获取或设置会话同意情况列表。 + /// + [Newtonsoft.Json.JsonProperty("agreeinfo")] + [System.Text.Json.Serialization.JsonPropertyName("agreeinfo")] + public Types.Data[] DataList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditCheckSingleAgreeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditCheckSingleAgreeRequest.cs new file mode 100644 index 00000000..f322f7c3 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditCheckSingleAgreeRequest.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/msgaudit/check_single_agree 接口的请求。 + /// + public class CgibinMessageAuditCheckSingleAgreeRequest : WechatWorkRequest + { + public static class Types + { + public class Data + { + /// + /// 获取或设置成员账号。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string UserId { get; set; } = string.Empty; + + /// + /// 获取或设置外部联系人的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("exteranalopenid")] + [System.Text.Json.Serialization.JsonPropertyName("exteranalopenid")] + public string ExternalOpenId { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置待查询的会话列表。 + /// + [Newtonsoft.Json.JsonProperty("info")] + [System.Text.Json.Serialization.JsonPropertyName("info")] + public IList DataList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditCheckSingleAgreeResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditCheckSingleAgreeResponse.cs new file mode 100644 index 00000000..9ece303e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditCheckSingleAgreeResponse.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/msgaudit/check_single_agree 接口的响应。 + /// + public class CgibinMessageAuditCheckSingleAgreeResponse : WechatWorkResponse + { + public static class Types + { + public class Data + { + /// + /// 获取或设置成员账号。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string UserId { get; set; } = default!; + + /// + /// 获取或设置外部联系人的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("exteranalopenid")] + [System.Text.Json.Serialization.JsonPropertyName("exteranalopenid")] + public string ExternalOpenId { get; set; } = default!; + + /// + /// 获取或设置同意状态。 + /// + [Newtonsoft.Json.JsonProperty("agree_status")] + [System.Text.Json.Serialization.JsonPropertyName("agree_status")] + public string Status { get; set; } = default!; + + /// + /// 获取或设置状态改变的时间戳。 + /// + [Newtonsoft.Json.JsonProperty("status_change_time")] + [System.Text.Json.Serialization.JsonPropertyName("status_change_time")] + public long StatusChangedTimestamp { get; set; } + } + } + + /// + /// 获取或设置会话同意情况列表。 + /// + [Newtonsoft.Json.JsonProperty("agreeinfo")] + [System.Text.Json.Serialization.JsonPropertyName("agreeinfo")] + public Types.Data[] DataList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGetPermitUserListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGetPermitUserListRequest.cs new file mode 100644 index 00000000..4bcf66fe --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGetPermitUserListRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/msgaudit/get_permit_user_list 接口的请求。 + /// + public class CgibinMessageAuditGetPermitUserListRequest : WechatWorkRequest + { + /// + /// 获取或设置指定版本。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public int? Type { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGetPermitUserListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGetPermitUserListResponse.cs new file mode 100644 index 00000000..5a79e443 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGetPermitUserListResponse.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/msgaudit/get_permit_user_list 接口的响应。 + /// + public class CgibinMessageAuditGetPermitUserListResponse : WechatWorkResponse + { + /// + /// 获取或设置成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("ids")] + [System.Text.Json.Serialization.JsonPropertyName("ids")] + public string[] UserIdList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGetRobotInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGetRobotInfoRequest.cs new file mode 100644 index 00000000..53d02e76 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGetRobotInfoRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/msgaudit/get_robot_info 接口的请求。 + /// + public class CgibinMessageAuditGetRobotInfoRequest : WechatWorkRequest + { + /// + /// 获取或设置机器人 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string RobotId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGetRobotInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGetRobotInfoResponse.cs new file mode 100644 index 00000000..b5f96c71 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGetRobotInfoResponse.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/msgaudit/get_robot_info 接口的响应。 + /// + public class CgibinMessageAuditGetRobotInfoResponse : WechatWorkResponse + { + public static class Types + { + public class Robot + { + /// + /// 获取或设置机器人 ID。 + /// + [Newtonsoft.Json.JsonProperty("robot_id")] + [System.Text.Json.Serialization.JsonPropertyName("robot_id")] + public string RobotId { get; set; } = default!; + + /// + /// 获取或设置机器人名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置创建者的成员账号。 + /// + [Newtonsoft.Json.JsonProperty("creator_userid")] + [System.Text.Json.Serialization.JsonPropertyName("creator_userid")] + public string CreatorUserId { get; set; } = default!; + } + } + + /// + /// 获取或设置机器人信息。 + /// + [Newtonsoft.Json.JsonProperty("data")] + [System.Text.Json.Serialization.JsonPropertyName("data")] + public Types.Robot Robot { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGroupChatGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGroupChatGetRequest.cs new file mode 100644 index 00000000..4c4d1c1f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGroupChatGetRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/msgaudit/groupchat/get 接口的请求。 + /// + public class CgibinMessageAuditGroupChatGetRequest : WechatWorkRequest + { + /// + /// 获取或设置待查询的群聊房间 ID。 + /// + [Newtonsoft.Json.JsonProperty("roomid")] + [System.Text.Json.Serialization.JsonPropertyName("roomid")] + public string RoomId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGroupChatGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGroupChatGetResponse.cs new file mode 100644 index 00000000..a5133daa --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMessageAudit/CgibinMessageAuditGroupChatGetResponse.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/msgaudit/groupchat/get 接口的响应。 + /// + public class CgibinMessageAuditGroupChatGetResponse : WechatWorkResponse + { + public static class Types + { + public class Member + { + /// + /// 获取或设置群成员的 UserId。 + /// + [Newtonsoft.Json.JsonProperty("memberid")] + [System.Text.Json.Serialization.JsonPropertyName("memberid")] + public string UserId { get; set; } = default!; + + /// + /// 获取或设置入群时间戳。 + /// + [Newtonsoft.Json.JsonProperty("jointime")] + [System.Text.Json.Serialization.JsonPropertyName("jointime")] + public long JoinTimestamp { get; set; } + } + } + + /// + /// 获取或设置群聊房间名称。 + /// + [Newtonsoft.Json.JsonProperty("roomname")] + [System.Text.Json.Serialization.JsonPropertyName("roomname")] + public string RoomName { get; set; } = default!; + + /// + /// 获取或设置群聊创建者的成员账号。 + /// + [Newtonsoft.Json.JsonProperty("creator")] + [System.Text.Json.Serialization.JsonPropertyName("creator")] + public string CreatorUserId { get; set; } = default!; + + /// + /// 获取或设置群成员列表。 + /// + [Newtonsoft.Json.JsonProperty("members")] + [System.Text.Json.Serialization.JsonPropertyName("members")] + public Types.Member[] MemberList { get; set; } = default!; + + /// + /// 获取或设置群公告。 + /// + [Newtonsoft.Json.JsonProperty("notice")] + [System.Text.Json.Serialization.JsonPropertyName("notice")] + public string Notice { get; set; } = default!; + + /// + /// 获取或设置群聊创建时间戳。 + /// + [Newtonsoft.Json.JsonProperty("room_create_time")] + [System.Text.Json.Serialization.JsonPropertyName("room_create_time")] + public long CreateTimestamp { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAdminListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAdminListRequest.cs new file mode 100644 index 00000000..e805dba7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAdminListRequest.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/service/get_admin_list 接口的请求。 + /// + public class CgibinServiceGetAdminListRequest : WechatWorkRequest + { + /// + /// 获取或设置授权方 CorpId。 + /// + [Newtonsoft.Json.JsonProperty("auth_corpid")] + [System.Text.Json.Serialization.JsonPropertyName("auth_corpid")] + public string AuthorizerCorpId { get; set; } = string.Empty; + + /// + /// 获取或设置授权方安装的应用 AgentId。 + /// + [Newtonsoft.Json.JsonProperty("agentid")] + [System.Text.Json.Serialization.JsonPropertyName("agentid")] + public int AgentId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAdminListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAdminListResponse.cs new file mode 100644 index 00000000..ae7dbde0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAdminListResponse.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/service/get_admin_list 接口的响应。 + /// + public class CgibinServiceGetAdminListResponse : WechatWorkResponse + { + public static class Types + { + public class Admin + { + /// + /// 获取或设置成员账号。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string UserId { get; set; } = default!; + + /// + /// 获取或设置第三方成员唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("open_userid")] + [System.Text.Json.Serialization.JsonPropertyName("open_userid")] + public string? OpenUserId { get; set; } + + /// + /// 获取或设置管理权限。 + /// + [Newtonsoft.Json.JsonProperty("auth_type")] + [System.Text.Json.Serialization.JsonPropertyName("auth_type")] + public int AuthType { get; set; } + } + } + + /// + /// 获取或设置管理员列表。 + /// + [Newtonsoft.Json.JsonProperty("admin")] + [System.Text.Json.Serialization.JsonPropertyName("admin")] + public Types.Admin[]? AdminList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAuthInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAuthInfoRequest.cs new file mode 100644 index 00000000..a06e0a8b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAuthInfoRequest.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/service/get_auth_info 接口的请求。 + /// + public class CgibinServiceGetAuthInfoRequest : WechatWorkRequest + { + /// + /// 获取或设置授权方 CorpId。 + /// + [Newtonsoft.Json.JsonProperty("auth_corpid")] + [System.Text.Json.Serialization.JsonPropertyName("auth_corpid")] + public string AuthorizerCorpId { get; set; } = string.Empty; + + /// + /// 获取或设置永久授权码。 + /// + [Newtonsoft.Json.JsonProperty("permanent_code")] + [System.Text.Json.Serialization.JsonPropertyName("permanent_code")] + public string PermanentAuthCode { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAuthInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAuthInfoResponse.cs new file mode 100644 index 00000000..814428ee --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAuthInfoResponse.cs @@ -0,0 +1,269 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/service/get_auth_info 接口的响应。 + /// + public class CgibinServiceGetAuthInfoResponse : WechatWorkResponse + { + public static class Types + { + public class DealerCorp + { + /// + /// 获取或设置企业 CorpId。 + /// + [Newtonsoft.Json.JsonProperty("corpid")] + [System.Text.Json.Serialization.JsonPropertyName("corpid")] + public string CorpId { get; set; } = default!; + + /// + /// 获取或设置企业名称。 + /// + [Newtonsoft.Json.JsonProperty("corp_name")] + [System.Text.Json.Serialization.JsonPropertyName("corp_name")] + public string Name { get; set; } = default!; + } + + public class AuthorizerCorp : DealerCorp + { + /// + /// 获取或设置企业类型。 + /// + [Newtonsoft.Json.JsonProperty("corp_type")] + [System.Text.Json.Serialization.JsonPropertyName("corp_type")] + public string Type { get; set; } = default!; + + /// + /// 获取或设置企业方形头像 URL。 + /// + [Newtonsoft.Json.JsonProperty("corp_square_logo_url")] + [System.Text.Json.Serialization.JsonPropertyName("corp_square_logo_url")] + public string? SquareLogoUrl { get; set; } + + /// + /// 获取或设置用户数上限。 + /// + [Newtonsoft.Json.JsonProperty("corp_user_max")] + [System.Text.Json.Serialization.JsonPropertyName("corp_user_max")] + public int MaxUsers { get; set; } + + /// + /// 获取或设置应用数上限。 + /// + [Newtonsoft.Json.JsonProperty("corp_agent_max")] + [System.Text.Json.Serialization.JsonPropertyName("corp_agent_max")] + public int MaxAgents { get; set; } + + /// + /// 获取或设置主体名称。 + /// + [Newtonsoft.Json.JsonProperty("corp_full_name")] + [System.Text.Json.Serialization.JsonPropertyName("corp_full_name")] + public string? SubjectFullName { get; set; } + + /// + /// 获取或设置主体类型。 + /// + [Newtonsoft.Json.JsonProperty("subject_type")] + [System.Text.Json.Serialization.JsonPropertyName("subject_type")] + public int? SubjectType { get; set; } + + /// + /// 获取或设置认证到期时间戳。 + /// + [Newtonsoft.Json.JsonProperty("verified_end_time")] + [System.Text.Json.Serialization.JsonPropertyName("verified_end_time")] + public long? VerifyExpireTimestamp { get; set; } + + /// + /// 获取或设置企业微工作台二维码 URL。 + /// + [Newtonsoft.Json.JsonProperty("corp_wxqrcode")] + [System.Text.Json.Serialization.JsonPropertyName("corp_wxqrcode")] + public string? QrcodeUrl { get; set; } + + /// + /// 获取或设置企业规模。 + /// + [Newtonsoft.Json.JsonProperty("corp_scale")] + [System.Text.Json.Serialization.JsonPropertyName("corp_scale")] + public string? Scale { get; set; } + + /// + /// 获取或设置企业所属行业。 + /// + [Newtonsoft.Json.JsonProperty("corp_industry")] + [System.Text.Json.Serialization.JsonPropertyName("corp_industry")] + public string? Industry { get; set; } + + /// + /// 获取或设置企业所属子行业。 + /// + [Newtonsoft.Json.JsonProperty("corp_sub_industry")] + [System.Text.Json.Serialization.JsonPropertyName("corp_sub_industry")] + public string? SubIndustry { get; set; } + + /// + /// 获取或设置企业所在地。 + /// + [Newtonsoft.Json.JsonProperty("location")] + [System.Text.Json.Serialization.JsonPropertyName("location")] + public string? Location { get; set; } + } + + public class Authorization + { + public static class Types + { + public class Agent + { + public static class Types + { + public class Privilege + { + /// + /// 获取或设置权限等级。 + /// + [Newtonsoft.Json.JsonProperty("level")] + [System.Text.Json.Serialization.JsonPropertyName("level")] + public int Level { get; set; } + + /// + /// 获取或设置可见成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("allow_user")] + [System.Text.Json.Serialization.JsonPropertyName("allow_user")] + public string[]? AllowedUserIdList { get; set; } + + /// + /// 获取或设置可见部门 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("allow_party")] + [System.Text.Json.Serialization.JsonPropertyName("allow_party")] + public int[]? AllowedDepartmentIdList { get; set; } + + /// + /// 获取或设置可见标签 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("allow_tag")] + [System.Text.Json.Serialization.JsonPropertyName("allow_tag")] + public int[]? AllowedTagIdList { get; set; } + + /// + /// 获取或设置额外成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("extra_user")] + [System.Text.Json.Serialization.JsonPropertyName("extra_user")] + public string[]? ExtraUserIdList { get; set; } + + /// + /// 获取或设置额外部门 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("extra_party")] + [System.Text.Json.Serialization.JsonPropertyName("extra_party")] + public int[]? ExtraDepartmentIdList { get; set; } + + /// + /// 获取或设置额外标签 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("extra_tag")] + [System.Text.Json.Serialization.JsonPropertyName("extra_tag")] + public int[]? ExtraTagIdList { get; set; } + } + + public class SharedFrom + { + /// + /// 获取或设置企业 CorpId。 + /// + [Newtonsoft.Json.JsonProperty("corpid")] + [System.Text.Json.Serialization.JsonPropertyName("corpid")] + public string? CorpId { get; set; } + } + } + + /// + /// 获取或设置应用 ID。 + /// + [Newtonsoft.Json.JsonProperty("agentid")] + [System.Text.Json.Serialization.JsonPropertyName("agentid")] + public int AgentId { get; set; } + + /// + /// 获取或设置应用名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置应用方形头像 URL。 + /// + [Newtonsoft.Json.JsonProperty("square_logo_url")] + [System.Text.Json.Serialization.JsonPropertyName("square_logo_url")] + public string SquareLogoUrl { get; set; } = default!; + + /// + /// 获取或设置应用圆形头像 URL。 + /// + [Newtonsoft.Json.JsonProperty("round_logo_url")] + [System.Text.Json.Serialization.JsonPropertyName("round_logo_url")] + public string RoundLogoUrl { get; set; } = default!; + + /// + /// 获取或设置 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public int? AppId { get; set; } + + /// + /// 获取或设置应用权限信息。 + /// + [Newtonsoft.Json.JsonProperty("privilege")] + [System.Text.Json.Serialization.JsonPropertyName("privilege")] + public Types.Privilege Privilege { get; set; } = default!; + + /// + /// 获取或设置共享了应用的互联企业信息。 + /// + [Newtonsoft.Json.JsonProperty("shared_from")] + [System.Text.Json.Serialization.JsonPropertyName("shared_from")] + public Types.SharedFrom? SharedFrom { get; set; } + } + } + + /// + /// 获取或设置授权的应用列表。 + /// + [Newtonsoft.Json.JsonProperty("agent")] + [System.Text.Json.Serialization.JsonPropertyName("agent")] + public Types.Agent[] AgentList { get; set; } = default!; + } + } + + /// + /// 获取或设置代理服务商企业信息。 + /// + [Newtonsoft.Json.JsonProperty("dealer_corp_info")] + [System.Text.Json.Serialization.JsonPropertyName("dealer_corp_info")] + public Types.DealerCorp? DealerCorp { get; set; } + + /// + /// 获取或设置授权方企业信息。 + /// + [Newtonsoft.Json.JsonProperty("auth_corp_info")] + [System.Text.Json.Serialization.JsonPropertyName("auth_corp_info")] + public Types.AuthorizerCorp? AuthorizerCorp { get; set; } + + /// + /// 获取或设置授权信息。 + /// + [Newtonsoft.Json.JsonProperty("auth_info")] + [System.Text.Json.Serialization.JsonPropertyName("auth_info")] + public Types.Authorization? Authorization { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetCorpTokenRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetCorpTokenRequest.cs new file mode 100644 index 00000000..d29d5c6d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetCorpTokenRequest.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/service/get_corp_token 接口的请求。 + /// + public class CgibinServiceGetCorpTokenRequest : WechatWorkRequest + { + /// + /// 获取或设置授权方 CorpId。 + /// + [Newtonsoft.Json.JsonProperty("auth_corpid")] + [System.Text.Json.Serialization.JsonPropertyName("auth_corpid")] + public string AuthorizerCorpId { get; set; } = string.Empty; + + /// + /// 获取或设置永久授权码。 + /// + [Newtonsoft.Json.JsonProperty("permanent_code")] + [System.Text.Json.Serialization.JsonPropertyName("permanent_code")] + public string PermanentAuthCode { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetCorpTokenResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetCorpTokenResponse.cs new file mode 100644 index 00000000..7624b613 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetCorpTokenResponse.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/service/get_corp_token 接口的响应。 + /// + public class CgibinServiceGetCorpTokenResponse : WechatWorkResponse + { + /// + /// 获取或设置授权方凭证。 + /// + [Newtonsoft.Json.JsonProperty("access_token")] + [System.Text.Json.Serialization.JsonPropertyName("access_token")] + public string AccessToken { get; set; } = default!; + + /// + /// 获取或设置授权方凭证有效时间(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("expires_in")] + [System.Text.Json.Serialization.JsonPropertyName("expires_in")] + public int ExpiresIn { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetLoginInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetLoginInfoRequest.cs new file mode 100644 index 00000000..54f939f4 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetLoginInfoRequest.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/service/get_login_info 接口的请求。 + /// + public class CgibinServiceGetLoginInfoRequest : WechatWorkRequest + { + /// + /// 获取或设置服务商 AccessToken。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public override string? AccessToken { get; set; } = string.Empty; + + /// + /// 获取或设置授权码。 + /// + [Newtonsoft.Json.JsonProperty("auth_code")] + [System.Text.Json.Serialization.JsonPropertyName("auth_code")] + public string AuthCode { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetLoginInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetLoginInfoResponse.cs new file mode 100644 index 00000000..951c2205 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetLoginInfoResponse.cs @@ -0,0 +1,137 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/service/get_login_info 接口的响应。 + /// + public class CgibinServiceGetLoginInfoResponse : WechatWorkResponse + { + public static class Types + { + public class User + { + /// + /// 获取或设置成员账号。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string? UserId { get; set; } + + /// + /// 获取或设置第三方成员唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("open_userid")] + [System.Text.Json.Serialization.JsonPropertyName("open_userid")] + public string? OpenUserId { get; set; } + + /// + /// 获取或设置成员名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// 获取或设置头像 URL。 + /// + [Newtonsoft.Json.JsonProperty("avatar")] + [System.Text.Json.Serialization.JsonPropertyName("avatar")] + public string? AvatarUrl { get; set; } + } + + public class Corp + { + /// + /// 获取或设置企业 CorpId。 + /// + [Newtonsoft.Json.JsonProperty("corpid")] + [System.Text.Json.Serialization.JsonPropertyName("corpid")] + public string CorpId { get; set; } = default!; + } + + public class Agent + { + /// + /// 获取或设置应用 ID。 + /// + [Newtonsoft.Json.JsonProperty("agentid")] + [System.Text.Json.Serialization.JsonPropertyName("agentid")] + public int AgentId { get; set; } + + /// + /// 获取或设置应用权限。 + /// + [Newtonsoft.Json.JsonProperty("auth_type")] + [System.Text.Json.Serialization.JsonPropertyName("auth_type")] + public int AuthType { get; set; } + } + + public class Authorization + { + public static class Types + { + public class Department + { + /// + /// 获取或设置部门 ID。 + /// + [Newtonsoft.Json.JsonProperty("id")] + [System.Text.Json.Serialization.JsonPropertyName("id")] + public int DepartmentId { get; set; } + + /// + /// 获取或设置是否有可写权限。 + /// + [Newtonsoft.Json.JsonProperty("writable")] + [System.Text.Json.Serialization.JsonPropertyName("writable")] + public bool Writable { get; set; } + } + } + + /// + /// 获取或设置部门列表。 + /// + [Newtonsoft.Json.JsonProperty("department")] + [System.Text.Json.Serialization.JsonPropertyName("department")] + public Types.Department[] DepartmentList { get; set; } = default!; + } + } + + /// + /// 获取或设置登录用户的类型。 + /// + [Newtonsoft.Json.JsonProperty("usertype")] + [System.Text.Json.Serialization.JsonPropertyName("usertype")] + public int UserType { get; set; } + + /// + /// 获取或设置登录用户的信息。 + /// + [Newtonsoft.Json.JsonProperty("user_info")] + [System.Text.Json.Serialization.JsonPropertyName("user_info")] + public Types.User User { get; set; } = default!; + + /// + /// 获取或设置授权方企业信息。 + /// + [Newtonsoft.Json.JsonProperty("corp_info")] + [System.Text.Json.Serialization.JsonPropertyName("corp_info")] + public Types.Corp Corp { get; set; } = default!; + + /// + /// 获取或设置应用列表。 + /// + [Newtonsoft.Json.JsonProperty("agent")] + [System.Text.Json.Serialization.JsonPropertyName("agent")] + public Types.Agent[] AgentList { get; set; } = default!; + + /// + /// 获取或设置权限信息。 + /// + [Newtonsoft.Json.JsonProperty("auth_info")] + [System.Text.Json.Serialization.JsonPropertyName("auth_info")] + public Types.Authorization Authorization { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetPermanentCodeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetPermanentCodeRequest.cs new file mode 100644 index 00000000..60f177c4 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetPermanentCodeRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/service/get_permanent_code 接口的请求。 + /// + public class CgibinServiceGetPermanentCodeRequest : WechatWorkRequest + { + /// + /// 获取或设置临时授权码。 + /// + [Newtonsoft.Json.JsonProperty("auth_code")] + [System.Text.Json.Serialization.JsonPropertyName("auth_code")] + public string TempAuthCode { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetPermanentCodeResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetPermanentCodeResponse.cs new file mode 100644 index 00000000..46faa8e2 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetPermanentCodeResponse.cs @@ -0,0 +1,143 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/service/get_permanent_code 接口的响应。 + /// + public class CgibinServiceGetPermanentCodeResponse : WechatWorkResponse + { + public static class Types + { + public class DealerCorp : CgibinServiceGetAuthInfoResponse.Types.DealerCorp + { + } + + public class AuthorizerCorp : CgibinServiceGetAuthInfoResponse.Types.AuthorizerCorp + { + /// + /// 获取或设置授权模式。 + /// + [Newtonsoft.Json.JsonProperty("auth_type")] + [System.Text.Json.Serialization.JsonPropertyName("auth_type")] + public int AuthType { get; set; } + } + + public class Authorization : CgibinServiceGetAuthInfoResponse.Types.Authorization + { + } + + public class AuthorizerUser + { + /// + /// 获取或设置授权管理员的成员账号。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string? UserId { get; set; } + + /// + /// 获取或设置授权管理员的名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// 获取或设置授权管理员的头像 Url。 + /// + [Newtonsoft.Json.JsonProperty("avatar")] + [System.Text.Json.Serialization.JsonPropertyName("avatar")] + public string? AvatarUrl { get; set; } + + /// + /// 获取或设置授权管理员的第三方成员唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("open_userid")] + [System.Text.Json.Serialization.JsonPropertyName("open_userid")] + public string? OpenUserId { get; set; } + } + + public class Register + { + /// + /// 获取或设置注册码。 + /// + [Newtonsoft.Json.JsonProperty("register_code")] + [System.Text.Json.Serialization.JsonPropertyName("register_code")] + public string RegisterCode { get; set; } = default!; + + /// + /// 获取或设置推广包 ID。 + /// + [Newtonsoft.Json.JsonProperty("template_id")] + [System.Text.Json.Serialization.JsonPropertyName("template_id")] + public string TemplateId { get; set; } = default!; + + /// + /// 获取或设置自定义渠道参数。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public string? State { get; set; } + } + } + + /// + /// 获取或设置永久授权码。 + /// + [Newtonsoft.Json.JsonProperty("permanent_code")] + [System.Text.Json.Serialization.JsonPropertyName("permanent_code")] + public string PermanentAuthCode { get; set; } = default!; + + /// + /// 获取或设置授权方凭证。 + /// + [Newtonsoft.Json.JsonProperty("access_token")] + [System.Text.Json.Serialization.JsonPropertyName("access_token")] + public string AccessToken { get; set; } = default!; + + /// + /// 获取或设置授权方凭证有效时间(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("expires_in")] + [System.Text.Json.Serialization.JsonPropertyName("expires_in")] + public int ExpiresIn { get; set; } + + /// + /// 获取或设置代理服务商企业信息。 + /// + [Newtonsoft.Json.JsonProperty("dealer_corp_info")] + [System.Text.Json.Serialization.JsonPropertyName("dealer_corp_info")] + public Types.DealerCorp? DealerCorp { get; set; } + + /// + /// 获取或设置授权方企业信息。 + /// + [Newtonsoft.Json.JsonProperty("auth_corp_info")] + [System.Text.Json.Serialization.JsonPropertyName("auth_corp_info")] + public Types.AuthorizerCorp? AuthorizerCorp { get; set; } + + /// + /// 获取或设置授权信息。 + /// + [Newtonsoft.Json.JsonProperty("auth_info")] + [System.Text.Json.Serialization.JsonPropertyName("auth_info")] + public Types.Authorization? Authorization { get; set; } + + /// + /// 获取或设置授权管理员信息。 + /// + [Newtonsoft.Json.JsonProperty("auth_user_info")] + [System.Text.Json.Serialization.JsonPropertyName("auth_user_info")] + public Types.AuthorizerUser? AuthorizerUser { get; set; } + + /// + /// 获取或设置推广二维码信息。 + /// + [Newtonsoft.Json.JsonProperty("register_code_info")] + [System.Text.Json.Serialization.JsonPropertyName("register_code_info")] + public Types.Register? Register { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetPreAuthCodeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetPreAuthCodeRequest.cs new file mode 100644 index 00000000..918f837c --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetPreAuthCodeRequest.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/service/get_pre_auth_code 接口的请求。 + /// + public class CgibinServiceGetPreAuthCodeRequest : WechatWorkRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetPreAuthCodeResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetPreAuthCodeResponse.cs new file mode 100644 index 00000000..8727b9b4 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetPreAuthCodeResponse.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/service/get_pre_auth_code 接口的响应。 + /// + public class CgibinServiceGetPreAuthCodeResponse : WechatWorkResponse + { + /// + /// 获取或设置预授权码。 + /// + [Newtonsoft.Json.JsonProperty("pre_auth_code")] + [System.Text.Json.Serialization.JsonPropertyName("pre_auth_code")] + public string PreAuthCode { get; set; } = default!; + + /// + /// 获取或设置预授权码有效时间(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("expires_in")] + [System.Text.Json.Serialization.JsonPropertyName("expires_in")] + public int ExpiresIn { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetProviderTokenRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetProviderTokenRequest.cs new file mode 100644 index 00000000..33a82d9e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetProviderTokenRequest.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/service/get_provider_token 接口的请求。 + /// + public class CgibinServiceGetProviderTokenRequest : WechatWorkRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetProviderTokenResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetProviderTokenResponse.cs new file mode 100644 index 00000000..666c1496 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetProviderTokenResponse.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/service/get_provider_token 接口的响应。 + /// + public class CgibinServiceGetProviderTokenResponse : WechatWorkResponse + { + /// + /// 获取或设置服务商凭证。 + /// + [Newtonsoft.Json.JsonProperty("provider_access_token")] + [System.Text.Json.Serialization.JsonPropertyName("provider_access_token")] + public string ProviderAccessToken { get; set; } = default!; + + /// + /// 获取或设置服务商凭证有效时间(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("expires_in")] + [System.Text.Json.Serialization.JsonPropertyName("expires_in")] + public int ExpiresIn { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetSuiteTokenRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetSuiteTokenRequest.cs new file mode 100644 index 00000000..d8c017c2 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetSuiteTokenRequest.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/service/get_suite_token 接口的请求。 + /// + public class CgibinServiceGetSuiteTokenRequest : WechatWorkRequest + { + /// + /// 获取或设置第三方应用 SuiteId。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("suite_id")] + [System.Text.Json.Serialization.JsonPropertyName("suite_id")] + public string? SuiteId { get; set; } + + /// + /// 获取或设置第三方应用 SuiteSecret。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("suite_secret")] + [System.Text.Json.Serialization.JsonPropertyName("suite_secret")] + public string? SuiteSecret { get; set; } + + /// + /// 获取或设置企业微信后台推送的 Ticket。 + /// + [Newtonsoft.Json.JsonProperty("suite_ticket")] + [System.Text.Json.Serialization.JsonPropertyName("suite_ticket")] + public string SuiteTicket { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetSuiteTokenResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetSuiteTokenResponse.cs new file mode 100644 index 00000000..f5510013 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetSuiteTokenResponse.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/service/get_suite_token 接口的响应。 + /// + public class CgibinServiceGetSuiteTokenResponse : WechatWorkResponse + { + /// + /// 获取或设置第三方应用凭证。 + /// + [Newtonsoft.Json.JsonProperty("suite_access_token")] + [System.Text.Json.Serialization.JsonPropertyName("suite_access_token")] + public string SuiteAccessToken { get; set; } = default!; + + /// + /// 获取或设置第三方应用凭证有效时间(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("expires_in")] + [System.Text.Json.Serialization.JsonPropertyName("expires_in")] + public int ExpiresIn { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceSetSessionInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceSetSessionInfoRequest.cs new file mode 100644 index 00000000..87ef7da0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceSetSessionInfoRequest.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/service/set_session_info 接口的请求。 + /// + public class CgibinServiceSetSessionInfoRequest : WechatWorkRequest + { + public static class Types + { + public class Session + { + /// + /// 获取或设置允许授权的 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public IList? AppIdList { get; set; } + + /// + /// 获取或设置授权类型。 + /// + [Newtonsoft.Json.JsonProperty("auth_type")] + [System.Text.Json.Serialization.JsonPropertyName("auth_type")] + public int? AuthType { get; set; } + } + } + + /// + /// 获取或设置预授权码。 + /// + [Newtonsoft.Json.JsonProperty("pre_auth_code")] + [System.Text.Json.Serialization.JsonPropertyName("pre_auth_code")] + public string PreAuthCode { get; set; } = string.Empty; + + /// + /// 获取或设置本次授权过程中需要用到的会话信息。 + /// + [Newtonsoft.Json.JsonProperty("session_info")] + [System.Text.Json.Serialization.JsonPropertyName("session_info")] + public Types.Session Session { get; set; } = new Types.Session(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceSetSessionInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceSetSessionInfoResponse.cs new file mode 100644 index 00000000..95dab3b4 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceSetSessionInfoResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/service/set_session_info 接口的响应。 + /// + public class CgibinServiceSetSessionInfoResponse : WechatWorkResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceUserDetail3rdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceUserDetail3rdRequest.cs new file mode 100644 index 00000000..01f2c912 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceUserDetail3rdRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/service/getuserdetail3rd 接口的请求。 + /// + public class CgibinServiceUserDetail3rdRequest : WechatWorkRequest + { + /// + /// 获取或设置成员票据。 + /// + [Newtonsoft.Json.JsonProperty("user_ticket")] + [System.Text.Json.Serialization.JsonPropertyName("user_ticket")] + public string UserTicket { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceUserDetail3rdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceUserDetail3rdResponse.cs new file mode 100644 index 00000000..a2e060de --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceUserDetail3rdResponse.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/service/getuserdetail3rd 接口的响应。 + /// + public class CgibinServiceUserDetail3rdResponse : WechatWorkResponse + { + /// + /// 获取或设置用户所属企业 CorpId。 + /// + [Newtonsoft.Json.JsonProperty("corpid")] + [System.Text.Json.Serialization.JsonPropertyName("corpid")] + public string CorpId { get; set; } = default!; + + /// + /// 获取或设置用户所在企业内的成员账号。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string UserId { get; set; } = default!; + + /// + /// 获取或设置成员名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// 获取或设置性别。 + /// + [Newtonsoft.Json.JsonProperty("gender")] + [System.Text.Json.Serialization.JsonPropertyName("gender")] + public int? Gender { get; set; } + + /// + /// 获取或设置头像 URL。 + /// + [Newtonsoft.Json.JsonProperty("avatar")] + [System.Text.Json.Serialization.JsonPropertyName("avatar")] + public string? AvatarUrl { get; set; } + + /// + /// 获取或设置二维码 URL。 + /// + [Newtonsoft.Json.JsonProperty("qr_code")] + [System.Text.Json.Serialization.JsonPropertyName("qr_code")] + public string? QrcodeUrl { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceUserInfo3rdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceUserInfo3rdRequest.cs new file mode 100644 index 00000000..6aca309e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceUserInfo3rdRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/service/getuserinfo3rd 接口的请求。 + /// + public class CgibinServiceUserInfo3rdRequest : WechatWorkRequest + { + /// + /// 获取或设置授权码。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string Code { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceUserInfo3rdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceUserInfo3rdResponse.cs new file mode 100644 index 00000000..18fc636a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceUserInfo3rdResponse.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/service/getuserinfo3rd 接口的响应。 + /// + public class CgibinServiceUserInfo3rdResponse : WechatWorkResponse + { + /// + /// 获取或设置用户所属企业 CorpId。 + /// + [Newtonsoft.Json.JsonProperty("CorpId")] + [System.Text.Json.Serialization.JsonPropertyName("CorpId")] + public string? CorpId { get; set; } + + /// + /// 获取或设置用户所在企业内的成员账号。 + /// + [Newtonsoft.Json.JsonProperty("UserId")] + [System.Text.Json.Serialization.JsonPropertyName("UserId")] + public string? UserId { get; set; } + + /// + /// 获取或设置用户 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("OpenId")] + [System.Text.Json.Serialization.JsonPropertyName("OpenId")] + public string? OpenId { get; set; } + + /// + /// 获取或设置设备号。 + /// + [Newtonsoft.Json.JsonProperty("DeviceId")] + [System.Text.Json.Serialization.JsonPropertyName("DeviceId")] + public string? DeviceId { get; set; } + + /// + /// 获取或设置第三方成员唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("open_userid")] + [System.Text.Json.Serialization.JsonPropertyName("open_userid")] + public string? OpenUserId { get; set; } + + /// + /// 获取或设置成员票据。 + /// + [Newtonsoft.Json.JsonProperty("user_ticket")] + [System.Text.Json.Serialization.JsonPropertyName("user_ticket")] + public string? UserTicket { get; set; } + + /// + /// 获取或设置成员票据有效时间(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("expires_in")] + [System.Text.Json.Serialization.JsonPropertyName("expires_in")] + public int? ExpiresIn { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Register/CgibinServiceGetRegisterCodeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Register/CgibinServiceGetRegisterCodeRequest.cs new file mode 100644 index 00000000..1073d0ec --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Register/CgibinServiceGetRegisterCodeRequest.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/service/get_register_code 接口的请求。 + /// + public class CgibinServiceGetRegisterCodeRequest : WechatWorkRequest + { + /// + /// 获取或设置服务商 AccessToken。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public override string? AccessToken { get; set; } = string.Empty; + + /// + /// 获取或设置推广包 ID。 + /// + [Newtonsoft.Json.JsonProperty("template_id")] + [System.Text.Json.Serialization.JsonPropertyName("template_id")] + public string TemplateId { get; set; } = string.Empty; + + /// + /// 获取或设置企业名称。 + /// + [Newtonsoft.Json.JsonProperty("corp_name")] + [System.Text.Json.Serialization.JsonPropertyName("corp_name")] + public string? CorpName { get; set; } + + /// + /// 获取或设置管理员姓名。 + /// + [Newtonsoft.Json.JsonProperty("admin_name")] + [System.Text.Json.Serialization.JsonPropertyName("admin_name")] + public string? AdminName { get; set; } + + /// + /// 获取或设置管理员手机号码。 + /// + [Newtonsoft.Json.JsonProperty("admin_mobile")] + [System.Text.Json.Serialization.JsonPropertyName("admin_mobile")] + public string? AdminMobileNumber { get; set; } + + /// + /// 获取或设置自定义渠道参数。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public string? State { get; set; } + + /// + /// 获取或设置跟进人的成员账号。 + /// + [Newtonsoft.Json.JsonProperty("follow_user")] + [System.Text.Json.Serialization.JsonPropertyName("follow_user")] + public string? FollowUserId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Register/CgibinServiceGetRegisterCodeResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Register/CgibinServiceGetRegisterCodeResponse.cs new file mode 100644 index 00000000..f37a2c8e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Register/CgibinServiceGetRegisterCodeResponse.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/service/get_register_code 接口的响应。 + /// + public class CgibinServiceGetRegisterCodeResponse : WechatWorkResponse + { + /// + /// 获取或设置注册码。 + /// + [Newtonsoft.Json.JsonProperty("register_code")] + [System.Text.Json.Serialization.JsonPropertyName("register_code")] + public string RegisterCode { get; set; } = default!; + + /// + /// 获取或设置注册码有效时间(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("expires_in")] + [System.Text.Json.Serialization.JsonPropertyName("expires_in")] + public int ExpiresIn { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Register/CgibinServiceGetRegisterInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Register/CgibinServiceGetRegisterInfoRequest.cs new file mode 100644 index 00000000..c2f78b6c --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Register/CgibinServiceGetRegisterInfoRequest.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/service/get_register_info 接口的请求。 + /// + public class CgibinServiceGetRegisterInfoRequest : WechatWorkRequest + { + /// + /// 获取或设置服务商 AccessToken。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public override string? AccessToken { get; set; } = string.Empty; + + /// + /// 获取或设置注册码。 + /// + [Newtonsoft.Json.JsonProperty("register_code")] + [System.Text.Json.Serialization.JsonPropertyName("register_code")] + public string RegisterCode { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Register/CgibinServiceGetRegisterInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Register/CgibinServiceGetRegisterInfoResponse.cs new file mode 100644 index 00000000..fae44113 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Register/CgibinServiceGetRegisterInfoResponse.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/service/get_register_info 接口的响应。 + /// + public class CgibinServiceGetRegisterInfoResponse : WechatWorkResponse + { + public static class Types + { + public class ContactSync + { + /// + /// 获取或设置通讯录迁移凭证。 + /// + [Newtonsoft.Json.JsonProperty("access_token")] + [System.Text.Json.Serialization.JsonPropertyName("access_token")] + public string AccessToken { get; set; } = default!; + + /// + /// 获取或设置通讯录迁移凭证有效时间(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("expires_in")] + [System.Text.Json.Serialization.JsonPropertyName("expires_in")] + public int ExpiresIn { get; set; } + } + + public class AuthorizerUser + { + /// + /// 获取或设置成员账号。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string UserId { get; set; } = default!; + } + } + + /// + /// 获取或设置企业 CorpId。 + /// + [Newtonsoft.Json.JsonProperty("corpid")] + [System.Text.Json.Serialization.JsonPropertyName("corpid")] + public string CorpId { get; set; } = default!; + + /// + /// 获取或设置通讯录迁移信息。 + /// + [Newtonsoft.Json.JsonProperty("contact_sync")] + [System.Text.Json.Serialization.JsonPropertyName("contact_sync")] + public Types.ContactSync? ContactSync { get; set; } + + /// + /// 获取或设置授权管理员信息。 + /// + [Newtonsoft.Json.JsonProperty("auth_user_info")] + [System.Text.Json.Serialization.JsonPropertyName("auth_user_info")] + public Types.AuthorizerUser? AuthorizerUser { get; set; } + + /// + /// 获取或设置推广包 ID。 + /// + [Newtonsoft.Json.JsonProperty("template_id")] + [System.Text.Json.Serialization.JsonPropertyName("template_id")] + public string TemplateId { get; set; } = default!; + + /// + /// 获取或设置自定义渠道参数。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public string? State { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSync/CgibinSyncContactSyncSuccessRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSync/CgibinSyncContactSyncSuccessRequest.cs new file mode 100644 index 00000000..9ddb0ebf --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSync/CgibinSyncContactSyncSuccessRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/sync/contact_sync_success 接口的请求。 + /// + public class CgibinSyncContactSyncSuccessRequest : WechatWorkRequest + { + /// + /// 获取或设置通讯录迁移凭证。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public override string? AccessToken { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSync/CgibinSyncContactSyncSuccessResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSync/CgibinSyncContactSyncSuccessResponse.cs new file mode 100644 index 00000000..d24cd657 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinSync/CgibinSyncContactSyncSuccessResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/sync/contact_sync_success 接口的响应。 + /// + public class CgibinSyncContactSyncSuccessResponse : WechatWorkResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinTag/TagUser/CgibinTagAddTagUsersResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinTag/TagUser/CgibinTagAddTagUsersResponse.cs index bacd90b3..99b47ecf 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinTag/TagUser/CgibinTagAddTagUsersResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinTag/TagUser/CgibinTagAddTagUsersResponse.cs @@ -8,88 +8,17 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models /// public class CgibinTagAddTagUsersResponse : WechatWorkResponse { - internal static class Converters - { - internal class NewtonsoftJsonInvalidUserIdListConverter : Newtonsoft.Json.JsonConverter - { - public override bool CanRead - { - get { return true; } - } - - public override bool CanWrite - { - get { return true; } - } - - public override string[]? ReadJson(Newtonsoft.Json.JsonReader reader, Type objectType, string[]? existingValue, bool hasExistingValue, Newtonsoft.Json.JsonSerializer serializer) - { - if (reader.TokenType == Newtonsoft.Json.JsonToken.Null) - { - return existingValue; - } - else if (reader.TokenType == Newtonsoft.Json.JsonToken.String) - { - string? value = serializer.Deserialize(reader); - if (value == null) - return existingValue; - - return value.Split('|'); - } - - throw new Newtonsoft.Json.JsonReaderException(); - } - - public override void WriteJson(Newtonsoft.Json.JsonWriter writer, string[]? value, Newtonsoft.Json.JsonSerializer serializer) - { - if (value != null) - writer.WriteValue(string.Join("|", value)); - else - writer.WriteNull(); - } - } - - internal class SystemTextJsonInvalidUserIdListConverter : System.Text.Json.Serialization.JsonConverter - { - public override string[]? Read(ref System.Text.Json.Utf8JsonReader reader, Type typeToConvert, System.Text.Json.JsonSerializerOptions options) - { - if (reader.TokenType == System.Text.Json.JsonTokenType.Null) - { - return null; - } - else if (reader.TokenType == System.Text.Json.JsonTokenType.String) - { - string? value = reader.GetString(); - if (value == null) - return null; - - return value.Split('|'); - } - - throw new System.Text.Json.JsonException(); - } - - public override void Write(System.Text.Json.Utf8JsonWriter writer, string[]? value, System.Text.Json.JsonSerializerOptions options) - { - if (value != null) - writer.WriteStringValue(string.Join("|", value)); - else - writer.WriteNullValue(); - } - } - } - /// - /// 获取或设置非法成员账号列表。 + /// 获取或设置无效的成员账号列表。 /// [Newtonsoft.Json.JsonProperty("invalidlist")] - [Newtonsoft.Json.JsonConverter(typeof(Converters.NewtonsoftJsonInvalidUserIdListConverter))] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.SeparatedByVBarStringArrayConverter))] [System.Text.Json.Serialization.JsonPropertyName("invalidlist")] - [System.Text.Json.Serialization.JsonConverter(typeof(Converters.SystemTextJsonInvalidUserIdListConverter))] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.SeparatedByVBarStringArrayConverter))] public string[]? InvalidUserIdList { get; set; } /// - /// 获取或设置非法部门 ID 列表。 + /// 获取或设置无效的部门 ID 列表。 /// [Newtonsoft.Json.JsonProperty("invalidparty")] [System.Text.Json.Serialization.JsonPropertyName("invalidparty")] diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserGetUserIdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserGetUserIdRequest.cs new file mode 100644 index 00000000..2b397ed2 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserGetUserIdRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/user/getuserid 接口的请求。 + /// + public class CgibinUserGetUserIdRequest : WechatWorkRequest + { + /// + /// 获取或设置手机号码。 + /// + [Newtonsoft.Json.JsonProperty("mobile")] + [System.Text.Json.Serialization.JsonPropertyName("mobile")] + public string MobileNumber { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserGetUserIdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserGetUserIdResponse.cs new file mode 100644 index 00000000..83324f7b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserGetUserIdResponse.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/user/getuserid 接口的响应。 + /// + public class CgibinUserGetUserIdResponse : WechatWorkResponse + { + /// + /// 获取或设置成员账号。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string UserId { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserGetUserInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserGetUserInfoRequest.cs index 4a1e18af..04566824 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserGetUserInfoRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinUser/CgibinUserGetUserInfoRequest.cs @@ -9,7 +9,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models public class CgibinUserGetUserInfoRequest : WechatWorkRequest { /// - /// 获取或设置通过成员授权获取到的 Code。 + /// 获取或设置授权码。 /// [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/SKIT.FlurlHttpClient.Wechat.Work.csproj b/src/SKIT.FlurlHttpClient.Wechat.Work/SKIT.FlurlHttpClient.Wechat.Work.csproj index b82cc776..4b293bab 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/SKIT.FlurlHttpClient.Wechat.Work.csproj +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/SKIT.FlurlHttpClient.Wechat.Work.csproj @@ -11,9 +11,9 @@ SKIT.FlurlHttpClient.Wechat.Work MIT https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat - Flurl.Http Wechat Weixin MicroMessage 微信 企业微信 + Flurl.Http Wechat Weixin MicroMessage WechatWork WeixinWork Wxwork 微信 企业微信 0.0.1-alpha - Flurl.Http client for Wechat Work Open API. 基于 Flurl.Http 的企业微信 API 客户端。 + Flurl.Http client for Wechat Work Open API. 基于 Flurl.Http 的企业微信 API 客户端,支持企业内部开发、第三方应用开发模式,支持基础服务、通讯录管理、客户联系、身份验证、应用管理、消息推送、素材管理、OA、效率工具、企业互联、电子发票、家校沟通、家校应用、政民沟通等功能。 Fu Diwei git https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkClient.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkClient.cs index 824519b4..9df619cd 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkClient.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkClient.cs @@ -25,12 +25,27 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 获取当前客户端使用的企业微信应用的 AgentId。 /// - public int AgentId { get; } + internal int? AgentId { get; } /// /// 获取当前客户端使用的企业微信应用的 AgentSecret。 /// - internal string AgentSecret { get; } + internal string? AgentSecret { get; } + + /// + /// 获取当前客户端使用的企业微信服务商 Secret。 + /// + internal string? ProviderSecret { get; set; } + + /// + /// 获取当前客户端使用的企业微信第三方应用的 SuiteId。 + /// + internal string? SuiteId { get; set; } + + /// + /// 获取当前客户端使用的企业微信第三方应用的 SuiteSecret。 + /// + internal string? SuiteSecret { get; set; } /// /// 获取当前客户端使用的 JSON 序列化器。 @@ -52,6 +67,9 @@ namespace SKIT.FlurlHttpClient.Wechat.Work CorpId = options.CorpId; AgentId = options.AgentId; AgentSecret = options.AgentSecret; + ProviderSecret = options.ProviderSecret; + SuiteId = options.SuiteId; + SuiteSecret = options.SuiteSecret; ProxyFlurlClient.BaseUrl = options.Endpoints ?? WechatWorkEndpoints.DEFAULT; ProxyFlurlClient.WithTimeout(TimeSpan.FromMilliseconds(options.Timeout)); diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkClientOptions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkClientOptions.cs index 2f53db12..c9d02980 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkClientOptions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkClientOptions.cs @@ -25,13 +25,28 @@ namespace SKIT.FlurlHttpClient.Wechat.Work public string CorpId { get; set; } = default!; /// - /// 获取或设置企业微信应用的 AgentId。 + /// 获取或设置企业微信应用的 AgentId。仅限企业内部开发时使用。 /// - public int AgentId { get; set; } = default!; + public int? AgentId { get; set; } /// - /// 获取或设置企业微信应用的 AgentSecret。 + /// 获取或设置企业微信应用的 AgentSecret。仅限企业内部开发时使用。 /// - public string AgentSecret { get; set; } = default!; + public string? AgentSecret { get; set; } + + /// + /// 获取或设置企业微信服务商 Secret。仅限第三方应用开发时使用。 + /// + public string? ProviderSecret { get; set; } + + /// + /// 获取或设置企业微信第三方应用的 SuiteId。仅限第三方应用开发时使用。 + /// + public string? SuiteId { get; set; } + + /// + /// 获取或设置企业微信第三方应用的 SuiteSecret。仅限第三方应用开发时使用。 + /// + public string? SuiteSecret { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkEvent.cs index 98817040..33669338 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkEvent.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkEvent.cs @@ -11,21 +11,33 @@ namespace SKIT.FlurlHttpClient.Wechat.Work public class WechatWorkEvent { /// - /// 获取或设置接收的企业 ID。 + /// 获取或设置企业 CorpId。 /// - [XmlElement("ToUserName")] - public string ToUserName { get; set; } = default!; + [XmlElement("ToUserName", IsNullable = true)] + public string? ToUserName { get; set; } /// - /// 获取或设置接收的应用 ID。 + /// 获取或设置发送方账号。 /// - [XmlElement("AgentID")] - public string AgentId { get; set; } = default!; + [XmlElement("FromUserName", IsNullable = true)] + public string? FromUserName { get; set; } /// - /// 获取或设置经过加密的消息数据。 + /// 获取或设置消息类型。 /// - [XmlElement("Encrypt")] - public string EncryptedData { get; set; } = default!; + [XmlElement("MsgType", IsNullable = true)] + public string? MessageType { get; set; } + + /// + /// 获取或设置事件类型。 + /// + [XmlElement("Event", IsNullable = true)] + public string? Event { get; set; } + + /// + /// 获取或设置消息创建时间。 + /// + [XmlElement("CreateTime")] + public long CreateTimestamp { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkRequest.cs index 45e9ed50..cc26211c 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkRequest.cs @@ -16,7 +16,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Work public virtual int? Timeout { get; set; } /// - /// 获取或设置企业微信应用的 AccessToken。 + /// 获取或设置企业微信的 AccessToken。 + /// 注意:部分第三方应用开发的接口中该字段表示第三方应用的 SuiteAccessToken。 /// [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore]