feat(work): 封装部分企业微信接口

This commit is contained in:
Fu Diwei 2021-06-03 10:38:41 +08:00
parent b25eadfaa6
commit d290155dec
98 changed files with 4269 additions and 165 deletions

View File

@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/agent/get 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90227 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90363 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -39,6 +40,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/agent/list 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90227 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90363 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -81,6 +83,30 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestWithJsonAsync<Models.CgibinAgentSetResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/agent/set_scope 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90583 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinAgentSetScopeResponse> 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<Models.CgibinAgentSetScopeResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#region Workbench
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/agent/set_workbench_template 接口。</para>

View File

@ -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
{
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/appchat/create 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90245 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinAppChatCreateResponse> 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<Models.CgibinAppChatCreateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/appchat/update 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90246 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinAppChatUpdateResponse> 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<Models.CgibinAppChatUpdateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/appchat/get 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90247 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinAppChatGetResponse> 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<Models.CgibinAppChatGetResponse>(flurlReq, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/appchat/send 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90248 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinAppChatSendResponse> 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<Models.CgibinAppChatSendResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
}
}

View File

@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/batch/invite 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90975 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91127 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -35,6 +36,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/batch/syncuser 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90980 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91130 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -56,6 +58,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/batch/replaceuser 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90981 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91131 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -77,6 +80,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/batch/replaceparty 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90981 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91132 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -98,6 +102,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/batch/getresult 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90983 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91133 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>

View File

@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/corpgroup/corp/list_app_share_info 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93403 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93405 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>

View File

@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/department/create 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90205 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90341 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -35,6 +36,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/department/update 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90206 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90342 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -56,6 +58,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/department/delete 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90206 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90343 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -78,6 +81,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/department/list 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90208 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90344 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>

View File

@ -33,6 +33,28 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestAsync<Models.CgibinGetTokenResponse>(flurlReq, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/getcallbackip 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90930 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91116 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinGetCallbackIpResponse> 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<Models.CgibinGetCallbackIpResponse>(flurlReq, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/get_api_domain_ip 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92520 </para>

View File

@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/externalcontact/get_follow_user_list 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92571 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92576 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -35,6 +36,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/close_temp_chat 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92572 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92577 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -56,6 +58,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/externalcontact/list 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92113 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92264 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -78,6 +81,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/externalcontact/get 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92113 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92265 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -103,6 +107,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/batch/get_by_user 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92115 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93010 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -124,6 +129,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/remark 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92994 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92694 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -145,6 +151,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/mark_tag 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92118 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92697 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -164,8 +171,9 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/get_unassigned_listr 接口。</para>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/get_unassigned_list 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92124 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92273 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -187,6 +195,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/get_user_behavior_data 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92132 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92275 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -205,10 +214,32 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestWithJsonAsync<Models.CgibinExternalContactGetUserBehaviorDataResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/unionid_to_external_userid 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93274 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinExternalContactUnionIdToExternalUserIdResponse> 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<Models.CgibinExternalContactUnionIdToExternalUserIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#region ContactWay
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/add_contact_way 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92572 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92577 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -230,6 +261,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/get_contact_way 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92572 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92577 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -251,6 +283,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/update_contact_way 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92572 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92577 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -272,6 +305,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/del_contact_way 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92572 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92577 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -295,6 +329,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/get_corp_tag_list 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92117 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92696 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -316,6 +351,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/add_corp_tag 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92117 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92696 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -337,6 +373,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/edit_corp_tag 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92117 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92696 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -358,6 +395,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/del_corp_tag 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92117 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92696 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -381,6 +419,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/transfer_customer 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92125 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94096 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -402,6 +441,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/transfer_result 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94088 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94097 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -419,10 +459,11 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestWithJsonAsync<Models.CgibinExternalContactTransferResultResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/resigned/transfer_customer 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94081 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94100 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -444,6 +485,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/transfer_result 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94082 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94101 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -467,6 +509,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/groupchat/transfer 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92127 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93242 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -488,6 +531,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/groupchat/list 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92120 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93414 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -509,6 +553,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/groupchat/get 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92122 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92707 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -531,6 +576,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/groupchat/statistic 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92133 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93476 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -552,6 +598,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/groupchat/statistic_group_by_day 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92133 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93476 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -576,6 +623,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/get_moment_list 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93333 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93443 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -597,6 +645,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/get_moment_task 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93333 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93443 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -618,6 +667,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/get_moment_customer_list 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93333 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93443 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -639,6 +689,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/get_moment_send_result 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93333 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93443 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -660,6 +711,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/get_moment_comments 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93333 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93443 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -683,6 +735,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/add_msg_template 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92135 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92698 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -704,6 +757,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/get_groupmsg_list_v2 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93338 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93439 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -725,6 +779,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/get_groupmsg_task 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93338 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93439 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -746,6 +801,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/get_groupmsg_send_result 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93338 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93439 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -769,6 +825,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/send_welcome_msg 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92137 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/92599 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -790,6 +847,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/group_welcome_template/add 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92366 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93438 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -811,6 +869,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/group_welcome_template/edit 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92366 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93438 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -832,6 +891,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/group_welcome_template/get 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92366 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93438 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -853,6 +913,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/group_welcome_template/del 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92366 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93438 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -871,5 +932,31 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestWithJsonAsync<Models.CgibinExternalContactGroupWelcomeTemplateDeleteResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region Message
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/message/send 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/91609 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinExternalContactMessageSendResponse> 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<Models.CgibinExternalContactMessageSendResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
}
}

View File

@ -115,5 +115,31 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestWithJsonAsync<Models.CgibinLinkedCorpDepartmentListResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#region Message
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/linkedcorp/message/send 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90250 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinLinkedCorpMessageSendResponse> 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<Models.CgibinLinkedCorpMessageSendResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
}
}

View File

@ -15,6 +15,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/media/upload 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90253 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90389 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -77,6 +78,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/media/uploadimg 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90256 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90392 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -118,6 +120,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/media/get 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90254 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90390 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -140,6 +143,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/media/get/jssdk 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90255 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90391 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>

View File

@ -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
{
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/msgaudit/get_robot_info 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/91774 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMessageAuditGetRobotInfoResponse> 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<Models.CgibinMessageAuditGetRobotInfoResponse>(flurlReq, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/msgaudit/get_permit_user_list 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/91614 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMessageAuditGetPermitUserListResponse> 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<Models.CgibinMessageAuditGetPermitUserListResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/msgaudit/check_single_agree 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/91782 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMessageAuditCheckSingleAgreeResponse> 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<Models.CgibinMessageAuditCheckSingleAgreeResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/msgaudit/check_room_agree 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/91782 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMessageAuditCheckRoomAgreeResponse> 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<Models.CgibinMessageAuditCheckRoomAgreeResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/msgaudit/groupchat/get 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92951 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMessageAuditGroupChatGetResponse> 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<Models.CgibinMessageAuditGroupChatGetResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
}
}

View File

@ -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
{
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/message/send 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90236 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90372 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMessageSendResponse> 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<Models.CgibinMessageSendResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/message/update_taskcard 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/91579 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91585 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMessageUpdateTaskCardResponse> 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<Models.CgibinMessageUpdateTaskCardResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/message/get_statistics 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92369 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMessageGetStatisticsResponse> 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<Models.CgibinMessageGetStatisticsResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
}
}

View File

@ -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
{
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/service/get_provider_token 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91200 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinServiceGetProviderTokenResponse> 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<Models.CgibinServiceGetProviderTokenResponse>(flurlReq, data: requestData, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/service/get_suite_token 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90600 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinServiceGetSuiteTokenResponse> 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<Models.CgibinServiceGetSuiteTokenResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/service/get_pre_auth_code 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90601 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinServiceGetPreAuthCodeResponse> 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<Models.CgibinServiceGetPreAuthCodeResponse>(flurlReq, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/service/set_session_info 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90602 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinServiceSetSessionInfoResponse> 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<Models.CgibinServiceSetSessionInfoResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/service/get_permanent_code 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90603 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinServiceGetPermanentCodeResponse> 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<Models.CgibinServiceGetPermanentCodeResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/service/get_auth_info 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90604 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinServiceGetAuthInfoResponse> 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<Models.CgibinServiceGetAuthInfoResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/service/get_corp_token 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90605 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinServiceGetCorpTokenResponse> 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<Models.CgibinServiceGetCorpTokenResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/service/get_admin_list 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90605 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinServiceGetAdminListResponse> 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<Models.CgibinServiceGetAdminListResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/service/getuserinfo3rd 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91121 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinServiceUserInfo3rdResponse> 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<Models.CgibinServiceUserInfo3rdResponse>(flurlReq, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/service/getuserdetail3rd 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91122 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinServiceUserDetail3rdResponse> 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<Models.CgibinServiceUserDetail3rdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/service/get_login_info 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91125 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinServiceGetLoginInfoResponse> 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<Models.CgibinServiceGetLoginInfoResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#region Register
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/service/get_register_code 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90581 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinServiceGetRegisterCodeResponse> 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<Models.CgibinServiceGetRegisterCodeResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/service/get_register_info 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90582 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinServiceGetRegisterInfoResponse> 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<Models.CgibinServiceGetRegisterInfoResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
}
}

View File

@ -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
{
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/sync/contact_sync_success 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90584 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinSyncContactSyncSuccessResponse> 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<Models.CgibinSyncContactSyncSuccessResponse>(flurlReq, cancellationToken: cancellationToken);
}
}
}

View File

@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/tag/create 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90210 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90346 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -35,6 +36,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/tag/update 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90211 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90347 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -56,6 +58,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/tag/delete 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90212 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90348 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -78,6 +81,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/tag/list 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90216 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90352 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -99,6 +103,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/tag/get 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90213 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90349 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -122,6 +127,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/tag/addtagusers 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90214 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90350 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -143,6 +149,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/tag/deltagusers 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90215 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90351 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>

View File

@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/user/create 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90195 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90331 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -35,6 +36,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/user/get 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90196 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90332 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -57,6 +59,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/user/update 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90197 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90333 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -78,6 +81,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/user/delete 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90198 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90334 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -100,6 +104,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/user/batchdelete 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90199 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90335 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -121,6 +126,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/user/simplelist 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90200 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90336 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -146,6 +152,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/user/list 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90201 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90337 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -171,6 +178,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/user/convert_to_openid 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90202 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90338 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -192,6 +200,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/user/convert_to_userid 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90202 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90338 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -210,28 +219,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestWithJsonAsync<Models.CgibinUserConvertToUserIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/user/authsucc 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90203 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinUserAuthSuccessResponse> 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<Models.CgibinUserAuthSuccessResponse>(flurlReq, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/user/getuserinfo 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/91023 </para>
@ -255,6 +242,50 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestAsync<Models.CgibinUserGetUserInfoResponse>(flurlReq, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/user/getuserid 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/91693 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinUserGetUserIdResponse> 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<Models.CgibinUserGetUserIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/user/authsucc 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90203 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90339 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinUserAuthSuccessResponse> 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<Models.CgibinUserAuthSuccessResponse>(flurlReq, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/user/get_active_stat 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/92714 </para>

View File

@ -9,7 +9,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
public class CgibinGetApiDomainIpResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置企业微信服务器 IP 地址列表。
/// 获取或设置企业微信服务器 IP 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("ip_list")]
[System.Text.Json.Serialization.JsonPropertyName("ip_list")]

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/getcallbackip 接口的请求。</para>
/// </summary>
public class CgibinGetCallbackIpRequest : WechatWorkRequest
{
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/getcallbackip 接口的响应。</para>
/// </summary>
public class CgibinGetCallbackIpResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置企业微信回调的 IP 段列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("ip_list")]
[System.Text.Json.Serialization.JsonPropertyName("ip_list")]
public string[] IPList { get; set; } = default!;
}
}

View File

@ -83,7 +83,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
public string Description { get; set; } = default!;
/// <summary>
/// 获取或设置可见员范围信息。
/// 获取或设置可见员范围信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("allow_userinfos")]
[System.Text.Json.Serialization.JsonPropertyName("allow_userinfos")]

View File

@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/agent/set_scope 接口的请求。</para>
/// </summary>
public class CgibinAgentSetScopeRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置通讯录迁移凭证。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public override string? AccessToken { get; set; } = string.Empty;
/// <summary>
/// 获取或设置应用 ID。如果不指定将使用构造 <see cref="WechatWorkClient"/> 时的 <see cref="WechatWorkClientOptions.AgentId"/> 参数。
/// </summary>
[Newtonsoft.Json.JsonProperty("agentid")]
[System.Text.Json.Serialization.JsonPropertyName("agentid")]
public int? AgentId { get; set; }
/// <summary>
/// 获取或设置可见成员账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("allow_user")]
[System.Text.Json.Serialization.JsonPropertyName("allow_user")]
public IList<string>? AllowedUserIdList { get; set; }
/// <summary>
/// 获取或设置可见部门 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("allow_party")]
[System.Text.Json.Serialization.JsonPropertyName("allow_party")]
public IList<int>? AllowedDepartmentIdList { get; set; }
/// <summary>
/// 获取或设置可见标签 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("allow_tag")]
[System.Text.Json.Serialization.JsonPropertyName("allow_tag")]
public IList<int>? AllowedTagIdList { get; set; }
}
}

View File

@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/agent/set 接口的响应。</para>
/// </summary>
public class CgibinAgentSetScopeResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置无效的成员账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("invaliduser")]
[System.Text.Json.Serialization.JsonPropertyName("invaliduser")]
public string[]? InvalidUserIdList { get; set; }
/// <summary>
/// 获取或设置无效的部门 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("invalidparty")]
[System.Text.Json.Serialization.JsonPropertyName("invalidparty")]
public int[]? InvalidDepartmentIdList { get; set; }
/// <summary>
/// 获取或设置无效的标签 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("invalidtag")]
[System.Text.Json.Serialization.JsonPropertyName("invalidtag")]
public int[]? InvalidTagIdList { get; set; }
}
}

View File

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/appchat/create 接口的请求。</para>
/// </summary>
public class CgibinAppChatCreateRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置群聊 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("chatid")]
[System.Text.Json.Serialization.JsonPropertyName("chatid")]
public string? ChatId { get; set; }
/// <summary>
/// 获取或设置群聊名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 获取或设置群主 UserId。
/// </summary>
[Newtonsoft.Json.JsonProperty("owner")]
[System.Text.Json.Serialization.JsonPropertyName("owner")]
public string? OwnerUserId { get; set; }
/// <summary>
/// 获取或设置群成员 UserId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("userlist")]
[System.Text.Json.Serialization.JsonPropertyName("userlist")]
public IList<string> MemberUserIdList { get; set; } = new List<string>();
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/appchat/create 接口的响应。</para>
/// </summary>
public class CgibinAppChatCreateResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置群聊 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("chatid")]
[System.Text.Json.Serialization.JsonPropertyName("chatid")]
public string ChatId { get; set; } = default!;
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/appchat/get 接口的请求。</para>
/// </summary>
public class CgibinAppChatGetRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置群聊 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string ChatId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/appchat/get 接口的响应。</para>
/// </summary>
public class CgibinAppChatGetResponse : WechatWorkResponse
{
public static class Types
{
public class AppChat
{
/// <summary>
/// 获取或设置群聊 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("chatid")]
[System.Text.Json.Serialization.JsonPropertyName("chatid")]
public string ChatId { get; set; } = default!;
/// <summary>
/// 获取或设置群聊名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string Name { get; set; } = default!;
/// <summary>
/// 获取或设置群主 UserId。
/// </summary>
[Newtonsoft.Json.JsonProperty("owner")]
[System.Text.Json.Serialization.JsonPropertyName("owner")]
public string OwnerUserId { get; set; } = default!;
/// <summary>
/// 获取或设置群成员 UserId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("userlist")]
[System.Text.Json.Serialization.JsonPropertyName("userlist")]
public IList<string> MemberUserIdList { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置群聊信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("chat_info")]
[System.Text.Json.Serialization.JsonPropertyName("chat_info")]
public Types.AppChat AppChat { get; set; } = default!;
}
}

View File

@ -0,0 +1,136 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/appchat/send 接口的请求。</para>
/// </summary>
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
{
}
}
/// <summary>
/// 获取或设置群聊 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("chatid")]
[System.Text.Json.Serialization.JsonPropertyName("chatid")]
public string ChatId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置消息类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("msgtype")]
[System.Text.Json.Serialization.JsonPropertyName("msgtype")]
public string MessageType { get; set; } = string.Empty;
/// <summary>
/// 获取或设置文本消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("text")]
[System.Text.Json.Serialization.JsonPropertyName("text")]
public Types.TextMessage? MessageContentForText { get; set; }
/// <summary>
/// 获取或设置图片消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("image")]
[System.Text.Json.Serialization.JsonPropertyName("image")]
public Types.ImageMessage? MessageContentForImage { get; set; }
/// <summary>
/// 获取或设置语音消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("voice")]
[System.Text.Json.Serialization.JsonPropertyName("voice")]
public Types.VoiceMessage? MessageContentForVoice { get; set; }
/// <summary>
/// 获取或设置视频消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("video")]
[System.Text.Json.Serialization.JsonPropertyName("video")]
public Types.VideoMessage? MessageContentForVideo { get; set; }
/// <summary>
/// 获取或设置文件消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("file")]
[System.Text.Json.Serialization.JsonPropertyName("file")]
public Types.FileMessage? MessageContentForFile { get; set; }
/// <summary>
/// 获取或设置文本卡片消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("textcard")]
[System.Text.Json.Serialization.JsonPropertyName("textcard")]
public Types.TextCardMessage? MessageContentForTextCard { get; set; }
/// <summary>
/// 获取或设置图文消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("news")]
[System.Text.Json.Serialization.JsonPropertyName("news")]
public Types.NewsMessage? MessageContentForNews { get; set; }
/// <summary>
/// 获取或设置图文消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("mpnews")]
[System.Text.Json.Serialization.JsonPropertyName("mpnews")]
public Types.MpNewsMessage? MessageContentForMpNews { get; set; }
/// <summary>
/// 获取或设置 Markdown 消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("markdown")]
[System.Text.Json.Serialization.JsonPropertyName("markdown")]
public Types.MarkdownMessage? MessageContentForMarkdown { get; set; }
/// <summary>
/// 获取或设置是否是保密消息。
/// </summary>
[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; }
}
}

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/appchat/send 接口的响应。</para>
/// </summary>
public class CgibinAppChatSendResponse : WechatWorkResponse
{
}
}

View File

@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/appchat/update 接口的请求。</para>
/// </summary>
public class CgibinAppChatUpdateRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置群聊 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("chatid")]
[System.Text.Json.Serialization.JsonPropertyName("chatid")]
public string ChatId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置群聊名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string? Name { get; set; }
/// <summary>
/// 获取或设置群主 UserId。
/// </summary>
[Newtonsoft.Json.JsonProperty("owner")]
[System.Text.Json.Serialization.JsonPropertyName("owner")]
public string? OwnerUserId { get; set; }
/// <summary>
/// 获取或设置添加的群成员 UserId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("add_user_list")]
[System.Text.Json.Serialization.JsonPropertyName("add_user_list")]
public IList<string>? AddMemberUserIdList { get; set; }
/// <summary>
/// 获取或设置踢出的群成员 UserId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("del_user_list")]
[System.Text.Json.Serialization.JsonPropertyName("del_user_list")]
public IList<string>? RemoveMemberUserIdList { get; set; }
}
}

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/appchat/update 接口的响应。</para>
/// </summary>
public class CgibinAppChatUpdateResponse : WechatWorkResponse
{
}
}

View File

@ -9,21 +9,21 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
public class CgibinBatchInviteResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置非法成员账号列表。
/// 获取或设置无效的成员账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("invaliduser")]
[System.Text.Json.Serialization.JsonPropertyName("invaliduser")]
public string[]? InvalidUserIdList { get; set; }
/// <summary>
/// 获取或设置非法部门 ID 列表。
/// 获取或设置无效的部门 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("invalidparty")]
[System.Text.Json.Serialization.JsonPropertyName("invalidparty")]
public int[]? InvalidDepartmentIdList { get; set; }
/// <summary>
/// 获取或设置非法标签 ID 列表。
/// 获取或设置无效的标签 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("invalidtag")]
[System.Text.Json.Serialization.JsonPropertyName("invalidtag")]

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/externalcontact/unionid_to_external_userid 接口的请求。</para>
/// </summary>
public class CgibinExternalContactUnionIdToExternalUserIdRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置用户 UnionId。
/// </summary>
[Newtonsoft.Json.JsonProperty("unionid")]
[System.Text.Json.Serialization.JsonPropertyName("unionid")]
public string UnionId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/externalcontact/unionid_to_external_userid 接口的响应。</para>
/// </summary>
public class CgibinExternalContactUnionIdToExternalUserIdResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置外部联系人账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("external_userid")]
[System.Text.Json.Serialization.JsonPropertyName("external_userid")]
public string ExternalUserId { get; set; } = default!;
}
}

View File

@ -191,14 +191,14 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
public bool? IsTemp { get; set; }
/// <summary>
/// 获取或设置临时会话二维码有效(单位:秒)。
/// 获取或设置临时会话二维码有效时间(单位:秒)。
/// </summary>
[Newtonsoft.Json.JsonProperty("expires_in")]
[System.Text.Json.Serialization.JsonPropertyName("expires_in")]
public int? TempQrcodeExpiresIn { get; set; }
/// <summary>
/// 获取或设置临时会话有效期有效期(单位:秒)。
/// 获取或设置临时会话有效时间有效时间(单位:秒)。
/// </summary>
[Newtonsoft.Json.JsonProperty("chat_expires_in")]
[System.Text.Json.Serialization.JsonPropertyName("chat_expires_in")]

View File

@ -209,14 +209,14 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
public bool IsTemp { get; set; } = default!;
/// <summary>
/// 获取或设置临时会话二维码有效(单位:秒)。
/// 获取或设置临时会话二维码有效时间(单位:秒)。
/// </summary>
[Newtonsoft.Json.JsonProperty("expires_in")]
[System.Text.Json.Serialization.JsonPropertyName("expires_in")]
public int? TempQrcodeExpiresIn { get; set; }
/// <summary>
/// 获取或设置临时会话有效期有效期(单位:秒)。
/// 获取或设置临时会话有效时间有效时间(单位:秒)。
/// </summary>
[Newtonsoft.Json.JsonProperty("chat_expires_in")]
[System.Text.Json.Serialization.JsonPropertyName("chat_expires_in")]

View File

@ -72,14 +72,14 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
public bool? IsTemp { get; set; }
/// <summary>
/// 获取或设置临时会话二维码有效(单位:秒)。
/// 获取或设置临时会话二维码有效时间(单位:秒)。
/// </summary>
[Newtonsoft.Json.JsonProperty("expires_in")]
[System.Text.Json.Serialization.JsonPropertyName("expires_in")]
public int? TempQrcodeExpiresIn { get; set; }
/// <summary>
/// 获取或设置临时会话有效期有效期(单位:秒)。
/// 获取或设置临时会话有效时间有效时间(单位:秒)。
/// </summary>
[Newtonsoft.Json.JsonProperty("chat_expires_in")]
[System.Text.Json.Serialization.JsonPropertyName("chat_expires_in")]

View File

@ -10,7 +10,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
public static class Types
{
public class Text
public class TextMessage
{
/// <summary>
/// 获取或设置文本消息内容。
@ -177,7 +177,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
/// </summary>
[Newtonsoft.Json.JsonProperty("text")]
[System.Text.Json.Serialization.JsonPropertyName("text")]
public Types.Text? Text { get; set; }
public Types.TextMessage? Text { get; set; }
/// <summary>
/// 获取或设置附件列表。

View File

@ -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
/// </summary>
[Newtonsoft.Json.JsonProperty("text")]
[System.Text.Json.Serialization.JsonPropertyName("text")]
public Types.Text? Text { get; set; }
public Types.TextMessage? Text { get; set; }
/// <summary>
/// 获取或设置附件列表。

View File

@ -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
/// </summary>
[Newtonsoft.Json.JsonProperty("text")]
[System.Text.Json.Serialization.JsonPropertyName("text")]
public Types.Text? Text { get; set; }
public Types.TextMessage? Text { get; set; }
/// <summary>
/// 获取或设置图片消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("image")]
[System.Text.Json.Serialization.JsonPropertyName("image")]
public Types.Image? Image { get; set; }
public Types.ImageMessage? Image { get; set; }
/// <summary>
/// 获取或设置图文消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("link")]
[System.Text.Json.Serialization.JsonPropertyName("link")]
public Types.Link? Link { get; set; }
public Types.LinkMessage? Link { get; set; }
/// <summary>
/// 获取或设置视频消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("video")]
[System.Text.Json.Serialization.JsonPropertyName("video")]
public Types.Video? Video { get; set; }
public Types.VideoMessage? Video { get; set; }
/// <summary>
/// 获取或设置小程序消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("miniprogram")]
[System.Text.Json.Serialization.JsonPropertyName("miniprogram")]
public Types.MiniProgram? MiniProgram { get; set; }
public Types.MiniProgramMessage? MiniProgram { get; set; }
/// <summary>
/// 获取或设置是否通知成员将这条入群欢迎语应用到客户群中。

View File

@ -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
/// </summary>
[Newtonsoft.Json.JsonProperty("text")]
[System.Text.Json.Serialization.JsonPropertyName("text")]
public Types.Text? Text { get; set; }
public Types.TextMessage? Text { get; set; }
/// <summary>
/// 获取或设置图片消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("image")]
[System.Text.Json.Serialization.JsonPropertyName("image")]
public Types.Image? Image { get; set; }
public Types.ImageMessage? Image { get; set; }
/// <summary>
/// 获取或设置图文消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("link")]
[System.Text.Json.Serialization.JsonPropertyName("link")]
public Types.Link? Link { get; set; }
public Types.LinkMessage? Link { get; set; }
/// <summary>
/// 获取或设置视频消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("video")]
[System.Text.Json.Serialization.JsonPropertyName("video")]
public Types.Video? Video { get; set; }
public Types.VideoMessage? Video { get; set; }
/// <summary>
/// 获取或设置小程序消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("miniprogram")]
[System.Text.Json.Serialization.JsonPropertyName("miniprogram")]
public Types.MiniProgram? MiniProgram { get; set; }
public Types.MiniProgramMessage? MiniProgram { get; set; }
/// <summary>
/// 获取或设置授权方安装的应用 ID。

View File

@ -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
/// </summary>
[Newtonsoft.Json.JsonProperty("text")]
[System.Text.Json.Serialization.JsonPropertyName("text")]
public Types.Text? Text { get; set; }
public Types.TextMessage? Text { get; set; }
/// <summary>
/// 获取或设置图片消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("image")]
[System.Text.Json.Serialization.JsonPropertyName("image")]
public Types.Image? Image { get; set; }
public Types.ImageMessage? Image { get; set; }
/// <summary>
/// 获取或设置图文消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("link")]
[System.Text.Json.Serialization.JsonPropertyName("link")]
public Types.Link? Link { get; set; }
public Types.LinkMessage? Link { get; set; }
/// <summary>
/// 获取或设置视频消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("video")]
[System.Text.Json.Serialization.JsonPropertyName("video")]
public Types.Video? Video { get; set; }
public Types.VideoMessage? Video { get; set; }
/// <summary>
/// 获取或设置小程序消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("miniprogram")]
[System.Text.Json.Serialization.JsonPropertyName("miniprogram")]
public Types.MiniProgram? MiniProgram { get; set; }
public Types.MiniProgramMessage? MiniProgram { get; set; }
/// <summary>
/// 获取或设置授权方安装的应用 ID。

View File

@ -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
/// </summary>
[Newtonsoft.Json.JsonProperty("text")]
[System.Text.Json.Serialization.JsonPropertyName("text")]
public Types.Text? Text { get; set; }
public Types.TextMessage? Text { get; set; }
/// <summary>
/// 获取或设置附件列表。

View File

@ -0,0 +1,216 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/externalcontact/message/send 接口的请求。</para>
/// </summary>
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
{
/// <summary>
/// 获取或设置小程序 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public string AppId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置小程序页面路径。
/// </summary>
[Newtonsoft.Json.JsonProperty("pagepath")]
[System.Text.Json.Serialization.JsonPropertyName("pagepath")]
public string PagePath { get; set; } = string.Empty;
/// <summary>
/// 获取或设置小程序标题。
/// </summary>
[Newtonsoft.Json.JsonProperty("title")]
[System.Text.Json.Serialization.JsonPropertyName("title")]
public string? Title { get; set; }
/// <summary>
/// 获取或设置小程序封面 MediaId。
/// </summary>
[Newtonsoft.Json.JsonProperty("thumb_media_id")]
[System.Text.Json.Serialization.JsonPropertyName("thumb_media_id")]
public string? ThumbnailMediaId { get; set; }
}
}
/// <summary>
/// 获取或设置接收消息外部联系人账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("to_external_user")]
[System.Text.Json.Serialization.JsonPropertyName("to_external_user")]
public IList<string>? ToExternalUserIdList { get; set; }
/// <summary>
/// 获取或设置接收消息家长账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("to_parent_userid")]
[System.Text.Json.Serialization.JsonPropertyName("to_parent_userid")]
public IList<string>? ToParentUserIdList { get; set; }
/// <summary>
/// 获取或设置接收消息学生账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("to_student_userid")]
[System.Text.Json.Serialization.JsonPropertyName("to_student_userid")]
public IList<string>? ToStudentUserIdList { get; set; }
/// <summary>
/// 获取或设置接收消息的部门 ID列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("to_party")]
[System.Text.Json.Serialization.JsonPropertyName("to_party")]
public IList<int>? ToDepartmentIdList { get; set; }
/// <summary>
/// 获取或设置是否发送给学校的所有家长。
/// </summary>
[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; }
/// <summary>
/// 获取或设置消息类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("msgtype")]
[System.Text.Json.Serialization.JsonPropertyName("msgtype")]
public string MessageType { get; set; } = string.Empty;
/// <summary>
/// 获取或设置文本消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("text")]
[System.Text.Json.Serialization.JsonPropertyName("text")]
public Types.TextMessage? MessageContentForText { get; set; }
/// <summary>
/// 获取或设置图片消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("image")]
[System.Text.Json.Serialization.JsonPropertyName("image")]
public Types.ImageMessage? MessageContentForImage { get; set; }
/// <summary>
/// 获取或设置语音消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("voice")]
[System.Text.Json.Serialization.JsonPropertyName("voice")]
public Types.VoiceMessage? MessageContentForVoice { get; set; }
/// <summary>
/// 获取或设置视频消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("video")]
[System.Text.Json.Serialization.JsonPropertyName("video")]
public Types.VideoMessage? MessageContentForVideo { get; set; }
/// <summary>
/// 获取或设置文件消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("file")]
[System.Text.Json.Serialization.JsonPropertyName("file")]
public Types.FileMessage? MessageContentForFile { get; set; }
/// <summary>
/// 获取或设置文本卡片消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("textcard")]
[System.Text.Json.Serialization.JsonPropertyName("textcard")]
public Types.TextCardMessage? MessageContentForTextCard { get; set; }
/// <summary>
/// 获取或设置图文消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("news")]
[System.Text.Json.Serialization.JsonPropertyName("news")]
public Types.NewsMessage? MessageContentForNews { get; set; }
/// <summary>
/// 获取或设置图文消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("mpnews")]
[System.Text.Json.Serialization.JsonPropertyName("mpnews")]
public Types.MpNewsMessage? MessageContentForMpNews { get; set; }
/// <summary>
/// 获取或设置小程序消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("miniprogram")]
[System.Text.Json.Serialization.JsonPropertyName("miniprogram")]
public Types.MiniProgramMessage? MessageContentForMiniProgram { get; set; }
/// <summary>
/// 获取或设置应用 ID。如果不指定将使用构造 <see cref="WechatWorkClient"/> 时的 <see cref="WechatWorkClientOptions.AgentId"/> 参数。
/// </summary>
[Newtonsoft.Json.JsonProperty("agentid")]
[System.Text.Json.Serialization.JsonPropertyName("agentid")]
public int? AgentId { get; set; }
/// <summary>
/// 获取或设置是否开启 ID 转译。
/// </summary>
[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; }
/// <summary>
/// 获取或设置是否开启重复消息检查。
/// </summary>
[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; }
/// <summary>
/// 获取或设置重复消息检查的时间间隔(单位:秒)。
/// </summary>
[Newtonsoft.Json.JsonProperty("duplicate_check_interval")]
[System.Text.Json.Serialization.JsonPropertyName("duplicate_check_interval")]
public int? DuplicateCheckInterval { get; set; }
}
}

View File

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/externalcontact/message/send 接口的响应。</para>
/// </summary>
public class CgibinExternalContactMessageSendResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置无效的外部联系人账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("invalid_external_user")]
[System.Text.Json.Serialization.JsonPropertyName("invalid_external_user")]
public string[]? InvalidExternalUserIdList { get; set; }
/// <summary>
/// 获取或设置无效的家长账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("invalid_parent_userid")]
[System.Text.Json.Serialization.JsonPropertyName("invalid_parent_userid")]
public string[]? InvalidParentUserIdList { get; set; }
/// <summary>
/// 获取或设置无效的学生账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("invalid_student_userid")]
[System.Text.Json.Serialization.JsonPropertyName("invalid_student_userid")]
public string[]? InvalidStudentUserIdList { get; set; }
/// <summary>
/// 获取或设置无效的部门 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("invalid_party")]
[System.Text.Json.Serialization.JsonPropertyName("invalid_party")]
public int[]? InvalidDepartmentIdIdList { get; set; }
}
}

View File

@ -0,0 +1,177 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/linkedcorp/message/send 接口的请求。</para>
/// </summary>
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
{
}
}
/// <summary>
/// 获取或设置接收消息的互联企业成员账号(格式:"CorpId/UserId")列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("touser")]
[System.Text.Json.Serialization.JsonPropertyName("touser")]
public IList<string>? ToCorpUserIdList { get; set; }
/// <summary>
/// 获取或设置接收消息的互联企业部门 ID格式"LinkedId/DepartmentId")列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("toparty")]
[System.Text.Json.Serialization.JsonPropertyName("toparty")]
public IList<string>? ToLinkedDepartmentIdList { get; set; }
/// <summary>
/// 获取或设置接收消息的标签 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("totag")]
[System.Text.Json.Serialization.JsonPropertyName("totag")]
public IList<int>? ToTagIdList { get; set; }
/// <summary>
/// 获取或设置是否发送给应用可见范围内的所有人,包括互联企业的成员。
/// </summary>
[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; }
/// <summary>
/// 获取或设置消息类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("msgtype")]
[System.Text.Json.Serialization.JsonPropertyName("msgtype")]
public string MessageType { get; set; } = string.Empty;
/// <summary>
/// 获取或设置文本消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("text")]
[System.Text.Json.Serialization.JsonPropertyName("text")]
public Types.TextMessage? MessageContentForText { get; set; }
/// <summary>
/// 获取或设置图片消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("image")]
[System.Text.Json.Serialization.JsonPropertyName("image")]
public Types.ImageMessage? MessageContentForImage { get; set; }
/// <summary>
/// 获取或设置语音消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("voice")]
[System.Text.Json.Serialization.JsonPropertyName("voice")]
public Types.VoiceMessage? MessageContentForVoice { get; set; }
/// <summary>
/// 获取或设置视频消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("video")]
[System.Text.Json.Serialization.JsonPropertyName("video")]
public Types.VideoMessage? MessageContentForVideo { get; set; }
/// <summary>
/// 获取或设置文件消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("file")]
[System.Text.Json.Serialization.JsonPropertyName("file")]
public Types.FileMessage? MessageContentForFile { get; set; }
/// <summary>
/// 获取或设置文本卡片消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("textcard")]
[System.Text.Json.Serialization.JsonPropertyName("textcard")]
public Types.TextCardMessage? MessageContentForTextCard { get; set; }
/// <summary>
/// 获取或设置图文消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("news")]
[System.Text.Json.Serialization.JsonPropertyName("news")]
public Types.NewsMessage? MessageContentForNews { get; set; }
/// <summary>
/// 获取或设置图文消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("mpnews")]
[System.Text.Json.Serialization.JsonPropertyName("mpnews")]
public Types.MpNewsMessage? MessageContentForMpNews { get; set; }
/// <summary>
/// 获取或设置 Markdown 消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("markdown")]
[System.Text.Json.Serialization.JsonPropertyName("markdown")]
public Types.MarkdownMessage? MessageContentForMarkdown { get; set; }
/// <summary>
/// 获取或设置小程序通知消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("miniprogram_notice")]
[System.Text.Json.Serialization.JsonPropertyName("miniprogram_notice")]
public Types.MiniProgramNoticeMessage? MessageContentForMiniProgramNotice { get; set; }
/// <summary>
/// 获取或设置应用 ID。如果不指定将使用构造 <see cref="WechatWorkClient"/> 时的 <see cref="WechatWorkClientOptions.AgentId"/> 参数。
/// </summary>
[Newtonsoft.Json.JsonProperty("agentid")]
[System.Text.Json.Serialization.JsonPropertyName("agentid")]
public int? AgentId { get; set; }
/// <summary>
/// 获取或设置是否是保密消息。
/// </summary>
[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; }
}
}

View File

@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/linkedcorp/message/send 接口的响应。</para>
/// </summary>
public class CgibinLinkedCorpMessageSendResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置无效的互联企业成员账号(格式:"CorpId/UserId")列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("invaliduser")]
[System.Text.Json.Serialization.JsonPropertyName("invaliduser")]
public string[]? InvalidCorpUserIdList { get; set; }
/// <summary>
/// 获取或设置无效的互联企业部门 ID格式"LinkedId/DepartmentId")列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("invalidparty")]
[System.Text.Json.Serialization.JsonPropertyName("invalidparty")]
public string[]? InvalidLinkedDepartmentIdList { get; set; }
/// <summary>
/// 获取或设置无效的标签 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("invalidtag")]
[System.Text.Json.Serialization.JsonPropertyName("invalidtag")]
public int[]? InvalidTagIdList { get; set; }
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/message/get_statistics 接口的请求。</para>
/// </summary>
public class CgibinMessageGetStatisticsRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置查询时间类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("time_type")]
[System.Text.Json.Serialization.JsonPropertyName("time_type")]
public int? TimeType { get; set; }
}
}

View File

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/message/get_statistics 接口的响应。</para>
/// </summary>
public class CgibinMessageGetStatisticsResponse : WechatWorkResponse
{
public static class Types
{
public class Data
{
/// <summary>
/// 获取或设置应用 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("agentid")]
[System.Text.Json.Serialization.JsonPropertyName("agentid")]
public int AgentId { get; set; }
/// <summary>
/// 获取或设置应用名。
/// </summary>
[Newtonsoft.Json.JsonProperty("app_name")]
[System.Text.Json.Serialization.JsonPropertyName("app_name")]
public string AppName { get; set; } = default!;
/// <summary>
/// 获取或设置发消息成功人次。
/// </summary>
[Newtonsoft.Json.JsonProperty("count")]
[System.Text.Json.Serialization.JsonPropertyName("count")]
public int MessageCount { get; set; }
}
}
/// <summary>
/// 获取或设置统计数据列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("statistics")]
[System.Text.Json.Serialization.JsonPropertyName("statistics")]
public Types.Data[] DataList { get; set; } = default!;
}
}

View File

@ -0,0 +1,524 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/message/send 接口的请求。</para>
/// </summary>
public class CgibinMessageSendRequest : WechatWorkRequest
{
public static class Types
{
public class TextMessage
{
/// <summary>
/// 获取或设置文本内容。
/// </summary>
[Newtonsoft.Json.JsonProperty("content")]
[System.Text.Json.Serialization.JsonPropertyName("content")]
public string Content { get; set; } = string.Empty;
}
public class ImageMessage
{
/// <summary>
/// 获取或设置图片 MediaId。
/// </summary>
[Newtonsoft.Json.JsonProperty("media_id")]
[System.Text.Json.Serialization.JsonPropertyName("media_id")]
public string MediaId { get; set; } = string.Empty;
}
public class VoiceMessage
{
/// <summary>
/// 获取或设置语音 MediaId。
/// </summary>
[Newtonsoft.Json.JsonProperty("media_id")]
[System.Text.Json.Serialization.JsonPropertyName("media_id")]
public string MediaId { get; set; } = string.Empty;
}
public class VideoMessage
{
/// <summary>
/// 获取或设置视频 MediaId。
/// </summary>
[Newtonsoft.Json.JsonProperty("media_id")]
[System.Text.Json.Serialization.JsonPropertyName("media_id")]
public string MediaId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置视频标题。
/// </summary>
[Newtonsoft.Json.JsonProperty("title")]
[System.Text.Json.Serialization.JsonPropertyName("title")]
public string? Title { get; set; }
/// <summary>
/// 获取或设置视频描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("description")]
[System.Text.Json.Serialization.JsonPropertyName("description")]
public string? Description { get; set; }
}
public class FileMessage
{
/// <summary>
/// 获取或设置文件 MediaId。
/// </summary>
[Newtonsoft.Json.JsonProperty("media_id")]
[System.Text.Json.Serialization.JsonPropertyName("media_id")]
public string MediaId { get; set; } = string.Empty;
}
public class TextCardMessage
{
/// <summary>
/// 获取或设置点击后跳转的链接。
/// </summary>
[Newtonsoft.Json.JsonProperty("url")]
[System.Text.Json.Serialization.JsonPropertyName("url")]
public string Url { get; set; } = string.Empty;
/// <summary>
/// 获取或设置卡片标题。
/// </summary>
[Newtonsoft.Json.JsonProperty("title")]
[System.Text.Json.Serialization.JsonPropertyName("title")]
public string Title { get; set; } = string.Empty;
/// <summary>
/// 获取或设置卡片描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("description")]
[System.Text.Json.Serialization.JsonPropertyName("description")]
public string Description { get; set; } = string.Empty;
/// <summary>
/// 获取或设置按钮文字。
/// </summary>
[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
{
/// <summary>
/// 获取或设置点击后跳转的链接。
/// </summary>
[Newtonsoft.Json.JsonProperty("url")]
[System.Text.Json.Serialization.JsonPropertyName("url")]
public string Url { get; set; } = string.Empty;
/// <summary>
/// 获取或设置图文标题。
/// </summary>
[Newtonsoft.Json.JsonProperty("title")]
[System.Text.Json.Serialization.JsonPropertyName("title")]
public string Title { get; set; } = string.Empty;
/// <summary>
/// 获取或设置图文描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("description")]
[System.Text.Json.Serialization.JsonPropertyName("description")]
public string? Description { get; set; }
/// <summary>
/// 获取或设置图文封面 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("picurl")]
[System.Text.Json.Serialization.JsonPropertyName("picurl")]
public string? PictureUrl { get; set; }
/// <summary>
/// 获取或设置按钮文字。
/// </summary>
[Newtonsoft.Json.JsonProperty("btntxt")]
[System.Text.Json.Serialization.JsonPropertyName("btntxt")]
public string? ButtonText { get; set; }
}
}
/// <summary>
/// 获取或设置图文消息列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("articles")]
[System.Text.Json.Serialization.JsonPropertyName("articles")]
public IList<Types.Article> ArticleList { get; set; } = new List<Types.Article>();
}
public class MpNewsMessage
{
public static class Types
{
public class Article
{
/// <summary>
/// 获取或设置点击后跳转的链接。
/// </summary>
[Newtonsoft.Json.JsonProperty("url")]
[System.Text.Json.Serialization.JsonPropertyName("url")]
public string Url { get; set; } = string.Empty;
/// <summary>
/// 获取或设置图文标题。
/// </summary>
[Newtonsoft.Json.JsonProperty("title")]
[System.Text.Json.Serialization.JsonPropertyName("title")]
public string Title { get; set; } = string.Empty;
/// <summary>
/// 获取或设置图文摘要。
/// </summary>
[Newtonsoft.Json.JsonProperty("digest")]
[System.Text.Json.Serialization.JsonPropertyName("digest")]
public string? Digest { get; set; }
/// <summary>
/// 获取或设置图文作者。
/// </summary>
[Newtonsoft.Json.JsonProperty("author")]
[System.Text.Json.Serialization.JsonPropertyName("author")]
public string? Author { get; set; }
/// <summary>
/// 获取或设置图文内容。
/// </summary>
[Newtonsoft.Json.JsonProperty("content")]
[System.Text.Json.Serialization.JsonPropertyName("content")]
public string Content { get; set; } = string.Empty;
/// <summary>
/// 获取或设置图文原文链接。
/// </summary>
[Newtonsoft.Json.JsonProperty("content_source_url")]
[System.Text.Json.Serialization.JsonPropertyName("content_source_url")]
public string? ContentSourceUrl { get; set; }
/// <summary>
/// 获取或设置图文封面 MediaId。
/// </summary>
[Newtonsoft.Json.JsonProperty("thumb_media_id")]
[System.Text.Json.Serialization.JsonPropertyName("thumb_media_id")]
public string? ThumbnailMediaId { get; set; }
}
}
/// <summary>
/// 获取或设置图文消息列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("articles")]
[System.Text.Json.Serialization.JsonPropertyName("articles")]
public IList<Types.Article> ArticleList { get; set; } = new List<Types.Article>();
}
public class MarkdownMessage
{
/// <summary>
/// 获取或设置 Markdown 内容。
/// </summary>
[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
{
/// <summary>
/// 获取或设置消息内容的 Key。
/// </summary>
[Newtonsoft.Json.JsonProperty("key")]
[System.Text.Json.Serialization.JsonPropertyName("key")]
public string Key { get; set; } = string.Empty;
/// <summary>
/// 获取或设置消息内容的值。
/// </summary>
[Newtonsoft.Json.JsonProperty("value")]
[System.Text.Json.Serialization.JsonPropertyName("value")]
public string Value { get; set; } = string.Empty;
}
}
/// <summary>
/// 获取或设置小程序 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public string AppId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置小程序页面路径。
/// </summary>
[Newtonsoft.Json.JsonProperty("page")]
[System.Text.Json.Serialization.JsonPropertyName("page")]
public string PagePath { get; set; } = string.Empty;
/// <summary>
/// 获取或设置小程序标题。
/// </summary>
[Newtonsoft.Json.JsonProperty("title")]
[System.Text.Json.Serialization.JsonPropertyName("title")]
public string Title { get; set; } = string.Empty;
/// <summary>
/// 获取或设置小程序描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("description")]
[System.Text.Json.Serialization.JsonPropertyName("description")]
public string? Description { get; set; }
/// <summary>
/// 获取或设置消息内容键值对列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("content_item")]
[System.Text.Json.Serialization.JsonPropertyName("content_item")]
public IList<Types.KeyValue>? ContentKeyValueList { get; set; }
/// <summary>
/// 获取或设置是否放大第一个消息内容键值对。
/// </summary>
[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
{
/// <summary>
/// 获取或设置按钮 Key 值。
/// </summary>
[Newtonsoft.Json.JsonProperty("key")]
[System.Text.Json.Serialization.JsonPropertyName("key")]
public string Key { get; set; } = string.Empty;
/// <summary>
/// 获取或设置按钮名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 获取或设置按钮颜色。
/// </summary>
[Newtonsoft.Json.JsonProperty("color")]
[System.Text.Json.Serialization.JsonPropertyName("color")]
public string? Color { get; set; }
/// <summary>
/// 获取或设置按钮字体是否加粗。
/// </summary>
[Newtonsoft.Json.JsonProperty("is_bold")]
[System.Text.Json.Serialization.JsonPropertyName("is_bold")]
public bool? IsBold { get; set; }
}
}
/// <summary>
/// 获取或设置任务 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("task_id")]
[System.Text.Json.Serialization.JsonPropertyName("task_id")]
public string TaskId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置点击后跳转的链接。
/// </summary>
[Newtonsoft.Json.JsonProperty("url")]
[System.Text.Json.Serialization.JsonPropertyName("url")]
public string Url { get; set; } = string.Empty;
/// <summary>
/// 获取或设置卡片标题。
/// </summary>
[Newtonsoft.Json.JsonProperty("title")]
[System.Text.Json.Serialization.JsonPropertyName("title")]
public string Title { get; set; } = string.Empty;
/// <summary>
/// 获取或设置卡片描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("description")]
[System.Text.Json.Serialization.JsonPropertyName("description")]
public string Description { get; set; } = string.Empty;
/// <summary>
/// 获取或设置按钮列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("btn")]
[System.Text.Json.Serialization.JsonPropertyName("btn")]
public IList<Types.Button> ButtonList { get; set; } = new List<Types.Button>();
}
}
/// <summary>
/// 获取或设置接收消息的成员账号列表。
/// </summary>
[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<string>? ToUserIdList { get; set; }
/// <summary>
/// 获取或设置接收消息的部门 ID 列表。
/// </summary>
[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<int>? ToDepartmentIdList { get; set; }
/// <summary>
/// 获取或设置接收消息的标签 ID 列表。
/// </summary>
[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<int>? ToTagIdList { get; set; }
/// <summary>
/// 获取或设置消息类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("msgtype")]
[System.Text.Json.Serialization.JsonPropertyName("msgtype")]
public string MessageType { get; set; } = string.Empty;
/// <summary>
/// 获取或设置文本消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("text")]
[System.Text.Json.Serialization.JsonPropertyName("text")]
public Types.TextMessage? MessageContentForText { get; set; }
/// <summary>
/// 获取或设置图片消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("image")]
[System.Text.Json.Serialization.JsonPropertyName("image")]
public Types.ImageMessage? MessageContentForImage { get; set; }
/// <summary>
/// 获取或设置语音消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("voice")]
[System.Text.Json.Serialization.JsonPropertyName("voice")]
public Types.VoiceMessage? MessageContentForVoice { get; set; }
/// <summary>
/// 获取或设置视频消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("video")]
[System.Text.Json.Serialization.JsonPropertyName("video")]
public Types.VideoMessage? MessageContentForVideo { get; set; }
/// <summary>
/// 获取或设置文件消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("file")]
[System.Text.Json.Serialization.JsonPropertyName("file")]
public Types.FileMessage? MessageContentForFile { get; set; }
/// <summary>
/// 获取或设置文本卡片消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("textcard")]
[System.Text.Json.Serialization.JsonPropertyName("textcard")]
public Types.TextCardMessage? MessageContentForTextCard { get; set; }
/// <summary>
/// 获取或设置图文消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("news")]
[System.Text.Json.Serialization.JsonPropertyName("news")]
public Types.NewsMessage? MessageContentForNews { get; set; }
/// <summary>
/// 获取或设置图文消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("mpnews")]
[System.Text.Json.Serialization.JsonPropertyName("mpnews")]
public Types.MpNewsMessage? MessageContentForMpNews { get; set; }
/// <summary>
/// 获取或设置 Markdown 消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("markdown")]
[System.Text.Json.Serialization.JsonPropertyName("markdown")]
public Types.MarkdownMessage? MessageContentForMarkdown { get; set; }
/// <summary>
/// 获取或设置小程序通知消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("miniprogram_notice")]
[System.Text.Json.Serialization.JsonPropertyName("miniprogram_notice")]
public Types.MiniProgramNoticeMessage? MessageContentForMiniProgramNotice { get; set; }
/// <summary>
/// 获取或设置任务卡片消息信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("interactive_taskcard")]
[System.Text.Json.Serialization.JsonPropertyName("interactive_taskcard")]
public Types.TaskCardMessage? MessageContentForTaskCard { get; set; }
/// <summary>
/// 获取或设置应用 ID。如果不指定将使用构造 <see cref="WechatWorkClient"/> 时的 <see cref="WechatWorkClientOptions.AgentId"/> 参数。
/// </summary>
[Newtonsoft.Json.JsonProperty("agentid")]
[System.Text.Json.Serialization.JsonPropertyName("agentid")]
public int? AgentId { get; set; }
/// <summary>
/// 获取或设置是否是保密消息。
/// </summary>
[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; }
/// <summary>
/// 获取或设置是否开启 ID 转译。
/// </summary>
[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; }
/// <summary>
/// 获取或设置是否开启重复消息检查。
/// </summary>
[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; }
/// <summary>
/// 获取或设置重复消息检查的时间间隔(单位:秒)。
/// </summary>
[Newtonsoft.Json.JsonProperty("duplicate_check_interval")]
[System.Text.Json.Serialization.JsonPropertyName("duplicate_check_interval")]
public int? DuplicateCheckInterval { get; set; }
}
}

View File

@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/message/send 接口的响应。</para>
/// </summary>
public class CgibinMessageSendResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置无效的成员账号列表。
/// </summary>
[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; }
/// <summary>
/// 获取或设置无效的部门 ID 列表。
/// </summary>
[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; }
/// <summary>
/// 获取或设置无效的标签 ID 列表。
/// </summary>
[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; }
}
}

View File

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/message/update_taskcard 接口的请求。</para>
/// </summary>
public class CgibinMessageUpdateTaskCardRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置成员账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("userids")]
[System.Text.Json.Serialization.JsonPropertyName("userids")]
public IList<string>? UserIdList { get; set; }
/// <summary>
/// 获取或设置任务 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("task_id")]
[System.Text.Json.Serialization.JsonPropertyName("task_id")]
public string TaskId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置应用 ID。如果不指定将使用构造 <see cref="WechatWorkClient"/> 时的 <see cref="WechatWorkClientOptions.AgentId"/> 参数。
/// </summary>
[Newtonsoft.Json.JsonProperty("agentid")]
[System.Text.Json.Serialization.JsonPropertyName("agentid")]
public int? AgentId { get; set; }
/// <summary>
/// 获取或设置替换文案。
/// </summary>
[Newtonsoft.Json.JsonProperty("replace_name")]
[System.Text.Json.Serialization.JsonPropertyName("replace_name")]
public string ReplacementText { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/message/update_taskcard 接口的响应。</para>
/// </summary>
public class CgibinMessageUpdateTaskCardResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置无效的成员账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("invaliduser")]
[System.Text.Json.Serialization.JsonPropertyName("invaliduser")]
public string[]? InvalidUserIdList { get; set; }
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/msgaudit/check_room_agree 接口的请求。</para>
/// </summary>
public class CgibinMessageAuditCheckRoomAgreeRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置待查询的群聊房间 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("roomid")]
[System.Text.Json.Serialization.JsonPropertyName("roomid")]
public string RoomId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/msgaudit/check_room_agree 接口的响应。</para>
/// </summary>
public class CgibinMessageAuditCheckRoomAgreeResponse : WechatWorkResponse
{
public static class Types
{
public class Data
{
/// <summary>
/// 获取或设置外部联系人的 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("exteranalopenid")]
[System.Text.Json.Serialization.JsonPropertyName("exteranalopenid")]
public string ExternalOpenId { get; set; } = default!;
/// <summary>
/// 获取或设置同意状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("agree_status")]
[System.Text.Json.Serialization.JsonPropertyName("agree_status")]
public string Status { get; set; } = default!;
/// <summary>
/// 获取或设置状态改变的时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("status_change_time")]
[System.Text.Json.Serialization.JsonPropertyName("status_change_time")]
public long StatusChangedTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置会话同意情况列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("agreeinfo")]
[System.Text.Json.Serialization.JsonPropertyName("agreeinfo")]
public Types.Data[] DataList { get; set; } = default!;
}
}

View File

@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/msgaudit/check_single_agree 接口的请求。</para>
/// </summary>
public class CgibinMessageAuditCheckSingleAgreeRequest : WechatWorkRequest
{
public static class Types
{
public class Data
{
/// <summary>
/// 获取或设置成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("userid")]
[System.Text.Json.Serialization.JsonPropertyName("userid")]
public string UserId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置外部联系人的 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("exteranalopenid")]
[System.Text.Json.Serialization.JsonPropertyName("exteranalopenid")]
public string ExternalOpenId { get; set; } = string.Empty;
}
}
/// <summary>
/// 获取或设置待查询的会话列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("info")]
[System.Text.Json.Serialization.JsonPropertyName("info")]
public IList<Types.Data> DataList { get; set; } = new List<Types.Data>();
}
}

View File

@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/msgaudit/check_single_agree 接口的响应。</para>
/// </summary>
public class CgibinMessageAuditCheckSingleAgreeResponse : WechatWorkResponse
{
public static class Types
{
public class Data
{
/// <summary>
/// 获取或设置成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("userid")]
[System.Text.Json.Serialization.JsonPropertyName("userid")]
public string UserId { get; set; } = default!;
/// <summary>
/// 获取或设置外部联系人的 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("exteranalopenid")]
[System.Text.Json.Serialization.JsonPropertyName("exteranalopenid")]
public string ExternalOpenId { get; set; } = default!;
/// <summary>
/// 获取或设置同意状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("agree_status")]
[System.Text.Json.Serialization.JsonPropertyName("agree_status")]
public string Status { get; set; } = default!;
/// <summary>
/// 获取或设置状态改变的时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("status_change_time")]
[System.Text.Json.Serialization.JsonPropertyName("status_change_time")]
public long StatusChangedTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置会话同意情况列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("agreeinfo")]
[System.Text.Json.Serialization.JsonPropertyName("agreeinfo")]
public Types.Data[] DataList { get; set; } = default!;
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/msgaudit/get_permit_user_list 接口的请求。</para>
/// </summary>
public class CgibinMessageAuditGetPermitUserListRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置指定版本。
/// </summary>
[Newtonsoft.Json.JsonProperty("type")]
[System.Text.Json.Serialization.JsonPropertyName("type")]
public int? Type { get; set; }
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/msgaudit/get_permit_user_list 接口的响应。</para>
/// </summary>
public class CgibinMessageAuditGetPermitUserListResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置成员账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("ids")]
[System.Text.Json.Serialization.JsonPropertyName("ids")]
public string[] UserIdList { get; set; } = default!;
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/msgaudit/get_robot_info 接口的请求。</para>
/// </summary>
public class CgibinMessageAuditGetRobotInfoRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置机器人 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string RobotId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/msgaudit/get_robot_info 接口的响应。</para>
/// </summary>
public class CgibinMessageAuditGetRobotInfoResponse : WechatWorkResponse
{
public static class Types
{
public class Robot
{
/// <summary>
/// 获取或设置机器人 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("robot_id")]
[System.Text.Json.Serialization.JsonPropertyName("robot_id")]
public string RobotId { get; set; } = default!;
/// <summary>
/// 获取或设置机器人名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string Name { get; set; } = default!;
/// <summary>
/// 获取或设置创建者的成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("creator_userid")]
[System.Text.Json.Serialization.JsonPropertyName("creator_userid")]
public string CreatorUserId { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置机器人信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("data")]
[System.Text.Json.Serialization.JsonPropertyName("data")]
public Types.Robot Robot { get; set; } = default!;
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/msgaudit/groupchat/get 接口的请求。</para>
/// </summary>
public class CgibinMessageAuditGroupChatGetRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置待查询的群聊房间 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("roomid")]
[System.Text.Json.Serialization.JsonPropertyName("roomid")]
public string RoomId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,66 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/msgaudit/groupchat/get 接口的响应。</para>
/// </summary>
public class CgibinMessageAuditGroupChatGetResponse : WechatWorkResponse
{
public static class Types
{
public class Member
{
/// <summary>
/// 获取或设置群成员的 UserId。
/// </summary>
[Newtonsoft.Json.JsonProperty("memberid")]
[System.Text.Json.Serialization.JsonPropertyName("memberid")]
public string UserId { get; set; } = default!;
/// <summary>
/// 获取或设置入群时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("jointime")]
[System.Text.Json.Serialization.JsonPropertyName("jointime")]
public long JoinTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置群聊房间名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("roomname")]
[System.Text.Json.Serialization.JsonPropertyName("roomname")]
public string RoomName { get; set; } = default!;
/// <summary>
/// 获取或设置群聊创建者的成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("creator")]
[System.Text.Json.Serialization.JsonPropertyName("creator")]
public string CreatorUserId { get; set; } = default!;
/// <summary>
/// 获取或设置群成员列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("members")]
[System.Text.Json.Serialization.JsonPropertyName("members")]
public Types.Member[] MemberList { get; set; } = default!;
/// <summary>
/// 获取或设置群公告。
/// </summary>
[Newtonsoft.Json.JsonProperty("notice")]
[System.Text.Json.Serialization.JsonPropertyName("notice")]
public string Notice { get; set; } = default!;
/// <summary>
/// 获取或设置群聊创建时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("room_create_time")]
[System.Text.Json.Serialization.JsonPropertyName("room_create_time")]
public long CreateTimestamp { get; set; }
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/service/get_admin_list 接口的请求。</para>
/// </summary>
public class CgibinServiceGetAdminListRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置授权方 CorpId。
/// </summary>
[Newtonsoft.Json.JsonProperty("auth_corpid")]
[System.Text.Json.Serialization.JsonPropertyName("auth_corpid")]
public string AuthorizerCorpId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置授权方安装的应用 AgentId。
/// </summary>
[Newtonsoft.Json.JsonProperty("agentid")]
[System.Text.Json.Serialization.JsonPropertyName("agentid")]
public int AgentId { get; set; }
}
}

View File

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/service/get_admin_list 接口的响应。</para>
/// </summary>
public class CgibinServiceGetAdminListResponse : WechatWorkResponse
{
public static class Types
{
public class Admin
{
/// <summary>
/// 获取或设置成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("userid")]
[System.Text.Json.Serialization.JsonPropertyName("userid")]
public string UserId { get; set; } = default!;
/// <summary>
/// 获取或设置第三方成员唯一标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("open_userid")]
[System.Text.Json.Serialization.JsonPropertyName("open_userid")]
public string? OpenUserId { get; set; }
/// <summary>
/// 获取或设置管理权限。
/// </summary>
[Newtonsoft.Json.JsonProperty("auth_type")]
[System.Text.Json.Serialization.JsonPropertyName("auth_type")]
public int AuthType { get; set; }
}
}
/// <summary>
/// 获取或设置管理员列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("admin")]
[System.Text.Json.Serialization.JsonPropertyName("admin")]
public Types.Admin[]? AdminList { get; set; }
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/service/get_auth_info 接口的请求。</para>
/// </summary>
public class CgibinServiceGetAuthInfoRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置授权方 CorpId。
/// </summary>
[Newtonsoft.Json.JsonProperty("auth_corpid")]
[System.Text.Json.Serialization.JsonPropertyName("auth_corpid")]
public string AuthorizerCorpId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置永久授权码。
/// </summary>
[Newtonsoft.Json.JsonProperty("permanent_code")]
[System.Text.Json.Serialization.JsonPropertyName("permanent_code")]
public string PermanentAuthCode { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,269 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/service/get_auth_info 接口的响应。</para>
/// </summary>
public class CgibinServiceGetAuthInfoResponse : WechatWorkResponse
{
public static class Types
{
public class DealerCorp
{
/// <summary>
/// 获取或设置企业 CorpId。
/// </summary>
[Newtonsoft.Json.JsonProperty("corpid")]
[System.Text.Json.Serialization.JsonPropertyName("corpid")]
public string CorpId { get; set; } = default!;
/// <summary>
/// 获取或设置企业名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("corp_name")]
[System.Text.Json.Serialization.JsonPropertyName("corp_name")]
public string Name { get; set; } = default!;
}
public class AuthorizerCorp : DealerCorp
{
/// <summary>
/// 获取或设置企业类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("corp_type")]
[System.Text.Json.Serialization.JsonPropertyName("corp_type")]
public string Type { get; set; } = default!;
/// <summary>
/// 获取或设置企业方形头像 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("corp_square_logo_url")]
[System.Text.Json.Serialization.JsonPropertyName("corp_square_logo_url")]
public string? SquareLogoUrl { get; set; }
/// <summary>
/// 获取或设置用户数上限。
/// </summary>
[Newtonsoft.Json.JsonProperty("corp_user_max")]
[System.Text.Json.Serialization.JsonPropertyName("corp_user_max")]
public int MaxUsers { get; set; }
/// <summary>
/// 获取或设置应用数上限。
/// </summary>
[Newtonsoft.Json.JsonProperty("corp_agent_max")]
[System.Text.Json.Serialization.JsonPropertyName("corp_agent_max")]
public int MaxAgents { get; set; }
/// <summary>
/// 获取或设置主体名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("corp_full_name")]
[System.Text.Json.Serialization.JsonPropertyName("corp_full_name")]
public string? SubjectFullName { get; set; }
/// <summary>
/// 获取或设置主体类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("subject_type")]
[System.Text.Json.Serialization.JsonPropertyName("subject_type")]
public int? SubjectType { get; set; }
/// <summary>
/// 获取或设置认证到期时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("verified_end_time")]
[System.Text.Json.Serialization.JsonPropertyName("verified_end_time")]
public long? VerifyExpireTimestamp { get; set; }
/// <summary>
/// 获取或设置企业微工作台二维码 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("corp_wxqrcode")]
[System.Text.Json.Serialization.JsonPropertyName("corp_wxqrcode")]
public string? QrcodeUrl { get; set; }
/// <summary>
/// 获取或设置企业规模。
/// </summary>
[Newtonsoft.Json.JsonProperty("corp_scale")]
[System.Text.Json.Serialization.JsonPropertyName("corp_scale")]
public string? Scale { get; set; }
/// <summary>
/// 获取或设置企业所属行业。
/// </summary>
[Newtonsoft.Json.JsonProperty("corp_industry")]
[System.Text.Json.Serialization.JsonPropertyName("corp_industry")]
public string? Industry { get; set; }
/// <summary>
/// 获取或设置企业所属子行业。
/// </summary>
[Newtonsoft.Json.JsonProperty("corp_sub_industry")]
[System.Text.Json.Serialization.JsonPropertyName("corp_sub_industry")]
public string? SubIndustry { get; set; }
/// <summary>
/// 获取或设置企业所在地。
/// </summary>
[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
{
/// <summary>
/// 获取或设置权限等级。
/// </summary>
[Newtonsoft.Json.JsonProperty("level")]
[System.Text.Json.Serialization.JsonPropertyName("level")]
public int Level { get; set; }
/// <summary>
/// 获取或设置可见成员账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("allow_user")]
[System.Text.Json.Serialization.JsonPropertyName("allow_user")]
public string[]? AllowedUserIdList { get; set; }
/// <summary>
/// 获取或设置可见部门 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("allow_party")]
[System.Text.Json.Serialization.JsonPropertyName("allow_party")]
public int[]? AllowedDepartmentIdList { get; set; }
/// <summary>
/// 获取或设置可见标签 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("allow_tag")]
[System.Text.Json.Serialization.JsonPropertyName("allow_tag")]
public int[]? AllowedTagIdList { get; set; }
/// <summary>
/// 获取或设置额外成员账号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("extra_user")]
[System.Text.Json.Serialization.JsonPropertyName("extra_user")]
public string[]? ExtraUserIdList { get; set; }
/// <summary>
/// 获取或设置额外部门 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("extra_party")]
[System.Text.Json.Serialization.JsonPropertyName("extra_party")]
public int[]? ExtraDepartmentIdList { get; set; }
/// <summary>
/// 获取或设置额外标签 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("extra_tag")]
[System.Text.Json.Serialization.JsonPropertyName("extra_tag")]
public int[]? ExtraTagIdList { get; set; }
}
public class SharedFrom
{
/// <summary>
/// 获取或设置企业 CorpId。
/// </summary>
[Newtonsoft.Json.JsonProperty("corpid")]
[System.Text.Json.Serialization.JsonPropertyName("corpid")]
public string? CorpId { get; set; }
}
}
/// <summary>
/// 获取或设置应用 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("agentid")]
[System.Text.Json.Serialization.JsonPropertyName("agentid")]
public int AgentId { get; set; }
/// <summary>
/// 获取或设置应用名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string Name { get; set; } = default!;
/// <summary>
/// 获取或设置应用方形头像 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("square_logo_url")]
[System.Text.Json.Serialization.JsonPropertyName("square_logo_url")]
public string SquareLogoUrl { get; set; } = default!;
/// <summary>
/// 获取或设置应用圆形头像 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("round_logo_url")]
[System.Text.Json.Serialization.JsonPropertyName("round_logo_url")]
public string RoundLogoUrl { get; set; } = default!;
/// <summary>
/// 获取或设置 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public int? AppId { get; set; }
/// <summary>
/// 获取或设置应用权限信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("privilege")]
[System.Text.Json.Serialization.JsonPropertyName("privilege")]
public Types.Privilege Privilege { get; set; } = default!;
/// <summary>
/// 获取或设置共享了应用的互联企业信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("shared_from")]
[System.Text.Json.Serialization.JsonPropertyName("shared_from")]
public Types.SharedFrom? SharedFrom { get; set; }
}
}
/// <summary>
/// 获取或设置授权的应用列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("agent")]
[System.Text.Json.Serialization.JsonPropertyName("agent")]
public Types.Agent[] AgentList { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置代理服务商企业信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("dealer_corp_info")]
[System.Text.Json.Serialization.JsonPropertyName("dealer_corp_info")]
public Types.DealerCorp? DealerCorp { get; set; }
/// <summary>
/// 获取或设置授权方企业信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("auth_corp_info")]
[System.Text.Json.Serialization.JsonPropertyName("auth_corp_info")]
public Types.AuthorizerCorp? AuthorizerCorp { get; set; }
/// <summary>
/// 获取或设置授权信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("auth_info")]
[System.Text.Json.Serialization.JsonPropertyName("auth_info")]
public Types.Authorization? Authorization { get; set; }
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/service/get_corp_token 接口的请求。</para>
/// </summary>
public class CgibinServiceGetCorpTokenRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置授权方 CorpId。
/// </summary>
[Newtonsoft.Json.JsonProperty("auth_corpid")]
[System.Text.Json.Serialization.JsonPropertyName("auth_corpid")]
public string AuthorizerCorpId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置永久授权码。
/// </summary>
[Newtonsoft.Json.JsonProperty("permanent_code")]
[System.Text.Json.Serialization.JsonPropertyName("permanent_code")]
public string PermanentAuthCode { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/service/get_corp_token 接口的响应。</para>
/// </summary>
public class CgibinServiceGetCorpTokenResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置授权方凭证。
/// </summary>
[Newtonsoft.Json.JsonProperty("access_token")]
[System.Text.Json.Serialization.JsonPropertyName("access_token")]
public string AccessToken { get; set; } = default!;
/// <summary>
/// 获取或设置授权方凭证有效时间(单位:秒)。
/// </summary>
[Newtonsoft.Json.JsonProperty("expires_in")]
[System.Text.Json.Serialization.JsonPropertyName("expires_in")]
public int ExpiresIn { get; set; }
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/service/get_login_info 接口的请求。</para>
/// </summary>
public class CgibinServiceGetLoginInfoRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置服务商 AccessToken。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public override string? AccessToken { get; set; } = string.Empty;
/// <summary>
/// 获取或设置授权码。
/// </summary>
[Newtonsoft.Json.JsonProperty("auth_code")]
[System.Text.Json.Serialization.JsonPropertyName("auth_code")]
public string AuthCode { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,137 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/service/get_login_info 接口的响应。</para>
/// </summary>
public class CgibinServiceGetLoginInfoResponse : WechatWorkResponse
{
public static class Types
{
public class User
{
/// <summary>
/// 获取或设置成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("userid")]
[System.Text.Json.Serialization.JsonPropertyName("userid")]
public string? UserId { get; set; }
/// <summary>
/// 获取或设置第三方成员唯一标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("open_userid")]
[System.Text.Json.Serialization.JsonPropertyName("open_userid")]
public string? OpenUserId { get; set; }
/// <summary>
/// 获取或设置成员名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string? Name { get; set; }
/// <summary>
/// 获取或设置头像 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("avatar")]
[System.Text.Json.Serialization.JsonPropertyName("avatar")]
public string? AvatarUrl { get; set; }
}
public class Corp
{
/// <summary>
/// 获取或设置企业 CorpId。
/// </summary>
[Newtonsoft.Json.JsonProperty("corpid")]
[System.Text.Json.Serialization.JsonPropertyName("corpid")]
public string CorpId { get; set; } = default!;
}
public class Agent
{
/// <summary>
/// 获取或设置应用 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("agentid")]
[System.Text.Json.Serialization.JsonPropertyName("agentid")]
public int AgentId { get; set; }
/// <summary>
/// 获取或设置应用权限。
/// </summary>
[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
{
/// <summary>
/// 获取或设置部门 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("id")]
[System.Text.Json.Serialization.JsonPropertyName("id")]
public int DepartmentId { get; set; }
/// <summary>
/// 获取或设置是否有可写权限。
/// </summary>
[Newtonsoft.Json.JsonProperty("writable")]
[System.Text.Json.Serialization.JsonPropertyName("writable")]
public bool Writable { get; set; }
}
}
/// <summary>
/// 获取或设置部门列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("department")]
[System.Text.Json.Serialization.JsonPropertyName("department")]
public Types.Department[] DepartmentList { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置登录用户的类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("usertype")]
[System.Text.Json.Serialization.JsonPropertyName("usertype")]
public int UserType { get; set; }
/// <summary>
/// 获取或设置登录用户的信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("user_info")]
[System.Text.Json.Serialization.JsonPropertyName("user_info")]
public Types.User User { get; set; } = default!;
/// <summary>
/// 获取或设置授权方企业信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("corp_info")]
[System.Text.Json.Serialization.JsonPropertyName("corp_info")]
public Types.Corp Corp { get; set; } = default!;
/// <summary>
/// 获取或设置应用列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("agent")]
[System.Text.Json.Serialization.JsonPropertyName("agent")]
public Types.Agent[] AgentList { get; set; } = default!;
/// <summary>
/// 获取或设置权限信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("auth_info")]
[System.Text.Json.Serialization.JsonPropertyName("auth_info")]
public Types.Authorization Authorization { get; set; } = default!;
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/service/get_permanent_code 接口的请求。</para>
/// </summary>
public class CgibinServiceGetPermanentCodeRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置临时授权码。
/// </summary>
[Newtonsoft.Json.JsonProperty("auth_code")]
[System.Text.Json.Serialization.JsonPropertyName("auth_code")]
public string TempAuthCode { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,143 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/service/get_permanent_code 接口的响应。</para>
/// </summary>
public class CgibinServiceGetPermanentCodeResponse : WechatWorkResponse
{
public static class Types
{
public class DealerCorp : CgibinServiceGetAuthInfoResponse.Types.DealerCorp
{
}
public class AuthorizerCorp : CgibinServiceGetAuthInfoResponse.Types.AuthorizerCorp
{
/// <summary>
/// 获取或设置授权模式。
/// </summary>
[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
{
/// <summary>
/// 获取或设置授权管理员的成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("userid")]
[System.Text.Json.Serialization.JsonPropertyName("userid")]
public string? UserId { get; set; }
/// <summary>
/// 获取或设置授权管理员的名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string? Name { get; set; }
/// <summary>
/// 获取或设置授权管理员的头像 Url。
/// </summary>
[Newtonsoft.Json.JsonProperty("avatar")]
[System.Text.Json.Serialization.JsonPropertyName("avatar")]
public string? AvatarUrl { get; set; }
/// <summary>
/// 获取或设置授权管理员的第三方成员唯一标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("open_userid")]
[System.Text.Json.Serialization.JsonPropertyName("open_userid")]
public string? OpenUserId { get; set; }
}
public class Register
{
/// <summary>
/// 获取或设置注册码。
/// </summary>
[Newtonsoft.Json.JsonProperty("register_code")]
[System.Text.Json.Serialization.JsonPropertyName("register_code")]
public string RegisterCode { get; set; } = default!;
/// <summary>
/// 获取或设置推广包 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("template_id")]
[System.Text.Json.Serialization.JsonPropertyName("template_id")]
public string TemplateId { get; set; } = default!;
/// <summary>
/// 获取或设置自定义渠道参数。
/// </summary>
[Newtonsoft.Json.JsonProperty("state")]
[System.Text.Json.Serialization.JsonPropertyName("state")]
public string? State { get; set; }
}
}
/// <summary>
/// 获取或设置永久授权码。
/// </summary>
[Newtonsoft.Json.JsonProperty("permanent_code")]
[System.Text.Json.Serialization.JsonPropertyName("permanent_code")]
public string PermanentAuthCode { get; set; } = default!;
/// <summary>
/// 获取或设置授权方凭证。
/// </summary>
[Newtonsoft.Json.JsonProperty("access_token")]
[System.Text.Json.Serialization.JsonPropertyName("access_token")]
public string AccessToken { get; set; } = default!;
/// <summary>
/// 获取或设置授权方凭证有效时间(单位:秒)。
/// </summary>
[Newtonsoft.Json.JsonProperty("expires_in")]
[System.Text.Json.Serialization.JsonPropertyName("expires_in")]
public int ExpiresIn { get; set; }
/// <summary>
/// 获取或设置代理服务商企业信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("dealer_corp_info")]
[System.Text.Json.Serialization.JsonPropertyName("dealer_corp_info")]
public Types.DealerCorp? DealerCorp { get; set; }
/// <summary>
/// 获取或设置授权方企业信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("auth_corp_info")]
[System.Text.Json.Serialization.JsonPropertyName("auth_corp_info")]
public Types.AuthorizerCorp? AuthorizerCorp { get; set; }
/// <summary>
/// 获取或设置授权信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("auth_info")]
[System.Text.Json.Serialization.JsonPropertyName("auth_info")]
public Types.Authorization? Authorization { get; set; }
/// <summary>
/// 获取或设置授权管理员信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("auth_user_info")]
[System.Text.Json.Serialization.JsonPropertyName("auth_user_info")]
public Types.AuthorizerUser? AuthorizerUser { get; set; }
/// <summary>
/// 获取或设置推广二维码信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("register_code_info")]
[System.Text.Json.Serialization.JsonPropertyName("register_code_info")]
public Types.Register? Register { get; set; }
}
}

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/service/get_pre_auth_code 接口的请求。</para>
/// </summary>
public class CgibinServiceGetPreAuthCodeRequest : WechatWorkRequest
{
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/service/get_pre_auth_code 接口的响应。</para>
/// </summary>
public class CgibinServiceGetPreAuthCodeResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置预授权码。
/// </summary>
[Newtonsoft.Json.JsonProperty("pre_auth_code")]
[System.Text.Json.Serialization.JsonPropertyName("pre_auth_code")]
public string PreAuthCode { get; set; } = default!;
/// <summary>
/// 获取或设置预授权码有效时间(单位:秒)。
/// </summary>
[Newtonsoft.Json.JsonProperty("expires_in")]
[System.Text.Json.Serialization.JsonPropertyName("expires_in")]
public int ExpiresIn { get; set; }
}
}

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/service/get_provider_token 接口的请求。</para>
/// </summary>
public class CgibinServiceGetProviderTokenRequest : WechatWorkRequest
{
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/service/get_provider_token 接口的响应。</para>
/// </summary>
public class CgibinServiceGetProviderTokenResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置服务商凭证。
/// </summary>
[Newtonsoft.Json.JsonProperty("provider_access_token")]
[System.Text.Json.Serialization.JsonPropertyName("provider_access_token")]
public string ProviderAccessToken { get; set; } = default!;
/// <summary>
/// 获取或设置服务商凭证有效时间(单位:秒)。
/// </summary>
[Newtonsoft.Json.JsonProperty("expires_in")]
[System.Text.Json.Serialization.JsonPropertyName("expires_in")]
public int ExpiresIn { get; set; }
}
}

View File

@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/service/get_suite_token 接口的请求。</para>
/// </summary>
public class CgibinServiceGetSuiteTokenRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置第三方应用 SuiteId。如果不指定将使用构造 <see cref="WechatWorkClient"/> 时的 <see cref="WechatWorkClientOptions.SuiteId"/> 参数。
/// </summary>
[Newtonsoft.Json.JsonProperty("suite_id")]
[System.Text.Json.Serialization.JsonPropertyName("suite_id")]
public string? SuiteId { get; set; }
/// <summary>
/// 获取或设置第三方应用 SuiteSecret。如果不指定将使用构造 <see cref="WechatWorkClient"/> 时的 <see cref="WechatWorkClientOptions.SuiteSecret"/> 参数。
/// </summary>
[Newtonsoft.Json.JsonProperty("suite_secret")]
[System.Text.Json.Serialization.JsonPropertyName("suite_secret")]
public string? SuiteSecret { get; set; }
/// <summary>
/// 获取或设置企业微信后台推送的 Ticket。
/// </summary>
[Newtonsoft.Json.JsonProperty("suite_ticket")]
[System.Text.Json.Serialization.JsonPropertyName("suite_ticket")]
public string SuiteTicket { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/service/get_suite_token 接口的响应。</para>
/// </summary>
public class CgibinServiceGetSuiteTokenResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置第三方应用凭证。
/// </summary>
[Newtonsoft.Json.JsonProperty("suite_access_token")]
[System.Text.Json.Serialization.JsonPropertyName("suite_access_token")]
public string SuiteAccessToken { get; set; } = default!;
/// <summary>
/// 获取或设置第三方应用凭证有效时间(单位:秒)。
/// </summary>
[Newtonsoft.Json.JsonProperty("expires_in")]
[System.Text.Json.Serialization.JsonPropertyName("expires_in")]
public int ExpiresIn { get; set; }
}
}

View File

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/service/set_session_info 接口的请求。</para>
/// </summary>
public class CgibinServiceSetSessionInfoRequest : WechatWorkRequest
{
public static class Types
{
public class Session
{
/// <summary>
/// 获取或设置允许授权的 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public IList<int>? AppIdList { get; set; }
/// <summary>
/// 获取或设置授权类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("auth_type")]
[System.Text.Json.Serialization.JsonPropertyName("auth_type")]
public int? AuthType { get; set; }
}
}
/// <summary>
/// 获取或设置预授权码。
/// </summary>
[Newtonsoft.Json.JsonProperty("pre_auth_code")]
[System.Text.Json.Serialization.JsonPropertyName("pre_auth_code")]
public string PreAuthCode { get; set; } = string.Empty;
/// <summary>
/// 获取或设置本次授权过程中需要用到的会话信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("session_info")]
[System.Text.Json.Serialization.JsonPropertyName("session_info")]
public Types.Session Session { get; set; } = new Types.Session();
}
}

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/service/set_session_info 接口的响应。</para>
/// </summary>
public class CgibinServiceSetSessionInfoResponse : WechatWorkResponse
{
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/service/getuserdetail3rd 接口的请求。</para>
/// </summary>
public class CgibinServiceUserDetail3rdRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置成员票据。
/// </summary>
[Newtonsoft.Json.JsonProperty("user_ticket")]
[System.Text.Json.Serialization.JsonPropertyName("user_ticket")]
public string UserTicket { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/service/getuserdetail3rd 接口的响应。</para>
/// </summary>
public class CgibinServiceUserDetail3rdResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置用户所属企业 CorpId。
/// </summary>
[Newtonsoft.Json.JsonProperty("corpid")]
[System.Text.Json.Serialization.JsonPropertyName("corpid")]
public string CorpId { get; set; } = default!;
/// <summary>
/// 获取或设置用户所在企业内的成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("userid")]
[System.Text.Json.Serialization.JsonPropertyName("userid")]
public string UserId { get; set; } = default!;
/// <summary>
/// 获取或设置成员名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string? Name { get; set; }
/// <summary>
/// 获取或设置性别。
/// </summary>
[Newtonsoft.Json.JsonProperty("gender")]
[System.Text.Json.Serialization.JsonPropertyName("gender")]
public int? Gender { get; set; }
/// <summary>
/// 获取或设置头像 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("avatar")]
[System.Text.Json.Serialization.JsonPropertyName("avatar")]
public string? AvatarUrl { get; set; }
/// <summary>
/// 获取或设置二维码 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("qr_code")]
[System.Text.Json.Serialization.JsonPropertyName("qr_code")]
public string? QrcodeUrl { get; set; }
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/service/getuserinfo3rd 接口的请求。</para>
/// </summary>
public class CgibinServiceUserInfo3rdRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置授权码。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string Code { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/service/getuserinfo3rd 接口的响应。</para>
/// </summary>
public class CgibinServiceUserInfo3rdResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置用户所属企业 CorpId。
/// </summary>
[Newtonsoft.Json.JsonProperty("CorpId")]
[System.Text.Json.Serialization.JsonPropertyName("CorpId")]
public string? CorpId { get; set; }
/// <summary>
/// 获取或设置用户所在企业内的成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("UserId")]
[System.Text.Json.Serialization.JsonPropertyName("UserId")]
public string? UserId { get; set; }
/// <summary>
/// 获取或设置用户 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("OpenId")]
[System.Text.Json.Serialization.JsonPropertyName("OpenId")]
public string? OpenId { get; set; }
/// <summary>
/// 获取或设置设备号。
/// </summary>
[Newtonsoft.Json.JsonProperty("DeviceId")]
[System.Text.Json.Serialization.JsonPropertyName("DeviceId")]
public string? DeviceId { get; set; }
/// <summary>
/// 获取或设置第三方成员唯一标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("open_userid")]
[System.Text.Json.Serialization.JsonPropertyName("open_userid")]
public string? OpenUserId { get; set; }
/// <summary>
/// 获取或设置成员票据。
/// </summary>
[Newtonsoft.Json.JsonProperty("user_ticket")]
[System.Text.Json.Serialization.JsonPropertyName("user_ticket")]
public string? UserTicket { get; set; }
/// <summary>
/// 获取或设置成员票据有效时间(单位:秒)。
/// </summary>
[Newtonsoft.Json.JsonProperty("expires_in")]
[System.Text.Json.Serialization.JsonPropertyName("expires_in")]
public int? ExpiresIn { get; set; }
}
}

View File

@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/service/get_register_code 接口的请求。</para>
/// </summary>
public class CgibinServiceGetRegisterCodeRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置服务商 AccessToken。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public override string? AccessToken { get; set; } = string.Empty;
/// <summary>
/// 获取或设置推广包 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("template_id")]
[System.Text.Json.Serialization.JsonPropertyName("template_id")]
public string TemplateId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置企业名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("corp_name")]
[System.Text.Json.Serialization.JsonPropertyName("corp_name")]
public string? CorpName { get; set; }
/// <summary>
/// 获取或设置管理员姓名。
/// </summary>
[Newtonsoft.Json.JsonProperty("admin_name")]
[System.Text.Json.Serialization.JsonPropertyName("admin_name")]
public string? AdminName { get; set; }
/// <summary>
/// 获取或设置管理员手机号码。
/// </summary>
[Newtonsoft.Json.JsonProperty("admin_mobile")]
[System.Text.Json.Serialization.JsonPropertyName("admin_mobile")]
public string? AdminMobileNumber { get; set; }
/// <summary>
/// 获取或设置自定义渠道参数。
/// </summary>
[Newtonsoft.Json.JsonProperty("state")]
[System.Text.Json.Serialization.JsonPropertyName("state")]
public string? State { get; set; }
/// <summary>
/// 获取或设置跟进人的成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("follow_user")]
[System.Text.Json.Serialization.JsonPropertyName("follow_user")]
public string? FollowUserId { get; set; }
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/service/get_register_code 接口的响应。</para>
/// </summary>
public class CgibinServiceGetRegisterCodeResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置注册码。
/// </summary>
[Newtonsoft.Json.JsonProperty("register_code")]
[System.Text.Json.Serialization.JsonPropertyName("register_code")]
public string RegisterCode { get; set; } = default!;
/// <summary>
/// 获取或设置注册码有效时间(单位:秒)。
/// </summary>
[Newtonsoft.Json.JsonProperty("expires_in")]
[System.Text.Json.Serialization.JsonPropertyName("expires_in")]
public int ExpiresIn { get; set; }
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/service/get_register_info 接口的请求。</para>
/// </summary>
public class CgibinServiceGetRegisterInfoRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置服务商 AccessToken。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public override string? AccessToken { get; set; } = string.Empty;
/// <summary>
/// 获取或设置注册码。
/// </summary>
[Newtonsoft.Json.JsonProperty("register_code")]
[System.Text.Json.Serialization.JsonPropertyName("register_code")]
public string RegisterCode { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,76 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/service/get_register_info 接口的响应。</para>
/// </summary>
public class CgibinServiceGetRegisterInfoResponse : WechatWorkResponse
{
public static class Types
{
public class ContactSync
{
/// <summary>
/// 获取或设置通讯录迁移凭证。
/// </summary>
[Newtonsoft.Json.JsonProperty("access_token")]
[System.Text.Json.Serialization.JsonPropertyName("access_token")]
public string AccessToken { get; set; } = default!;
/// <summary>
/// 获取或设置通讯录迁移凭证有效时间(单位:秒)。
/// </summary>
[Newtonsoft.Json.JsonProperty("expires_in")]
[System.Text.Json.Serialization.JsonPropertyName("expires_in")]
public int ExpiresIn { get; set; }
}
public class AuthorizerUser
{
/// <summary>
/// 获取或设置成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("userid")]
[System.Text.Json.Serialization.JsonPropertyName("userid")]
public string UserId { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置企业 CorpId。
/// </summary>
[Newtonsoft.Json.JsonProperty("corpid")]
[System.Text.Json.Serialization.JsonPropertyName("corpid")]
public string CorpId { get; set; } = default!;
/// <summary>
/// 获取或设置通讯录迁移信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("contact_sync")]
[System.Text.Json.Serialization.JsonPropertyName("contact_sync")]
public Types.ContactSync? ContactSync { get; set; }
/// <summary>
/// 获取或设置授权管理员信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("auth_user_info")]
[System.Text.Json.Serialization.JsonPropertyName("auth_user_info")]
public Types.AuthorizerUser? AuthorizerUser { get; set; }
/// <summary>
/// 获取或设置推广包 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("template_id")]
[System.Text.Json.Serialization.JsonPropertyName("template_id")]
public string TemplateId { get; set; } = default!;
/// <summary>
/// 获取或设置自定义渠道参数。
/// </summary>
[Newtonsoft.Json.JsonProperty("state")]
[System.Text.Json.Serialization.JsonPropertyName("state")]
public string? State { get; set; }
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/sync/contact_sync_success 接口的请求。</para>
/// </summary>
public class CgibinSyncContactSyncSuccessRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置通讯录迁移凭证。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public override string? AccessToken { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [GET] /cgi-bin/sync/contact_sync_success 接口的响应。</para>
/// </summary>
public class CgibinSyncContactSyncSuccessResponse : WechatWorkResponse
{
}
}

View File

@ -8,88 +8,17 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
/// </summary>
public class CgibinTagAddTagUsersResponse : WechatWorkResponse
{
internal static class Converters
{
internal class NewtonsoftJsonInvalidUserIdListConverter : Newtonsoft.Json.JsonConverter<string[]?>
{
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<string>(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<string[]?>
{
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();
}
}
}
/// <summary>
/// 获取或设置非法成员账号列表。
/// 获取或设置无效的成员账号列表。
/// </summary>
[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; }
/// <summary>
/// 获取或设置非法部门 ID 列表。
/// 获取或设置无效的部门 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("invalidparty")]
[System.Text.Json.Serialization.JsonPropertyName("invalidparty")]

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/user/getuserid 接口的请求。</para>
/// </summary>
public class CgibinUserGetUserIdRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置手机号码。
/// </summary>
[Newtonsoft.Json.JsonProperty("mobile")]
[System.Text.Json.Serialization.JsonPropertyName("mobile")]
public string MobileNumber { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/user/getuserid 接口的响应。</para>
/// </summary>
public class CgibinUserGetUserIdResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("userid")]
[System.Text.Json.Serialization.JsonPropertyName("userid")]
public string UserId { get; set; } = default!;
}
}

View File

@ -9,7 +9,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.Models
public class CgibinUserGetUserInfoRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置通过成员授权获取到的 Code
/// 获取或设置授权码
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]

View File

@ -11,9 +11,9 @@
<PackageId>SKIT.FlurlHttpClient.Wechat.Work</PackageId>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageProjectUrl>https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat</PackageProjectUrl>
<PackageTags>Flurl.Http Wechat Weixin MicroMessage 微信 企业微信</PackageTags>
<PackageTags>Flurl.Http Wechat Weixin MicroMessage WechatWork WeixinWork Wxwork 微信 企业微信</PackageTags>
<Version>0.0.1-alpha</Version>
<Description>Flurl.Http client for Wechat Work Open API. 基于 Flurl.Http 的企业微信 API 客户端。</Description>
<Description>Flurl.Http client for Wechat Work Open API. 基于 Flurl.Http 的企业微信 API 客户端支持企业内部开发、第三方应用开发模式支持基础服务、通讯录管理、客户联系、身份验证、应用管理、消息推送、素材管理、OA、效率工具、企业互联、电子发票、家校沟通、家校应用、政民沟通等功能</Description>
<Authors>Fu Diwei</Authors>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git</RepositoryUrl>

View File

@ -25,12 +25,27 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
/// <summary>
/// 获取当前客户端使用的企业微信应用的 AgentId。
/// </summary>
public int AgentId { get; }
internal int? AgentId { get; }
/// <summary>
/// 获取当前客户端使用的企业微信应用的 AgentSecret。
/// </summary>
internal string AgentSecret { get; }
internal string? AgentSecret { get; }
/// <summary>
/// 获取当前客户端使用的企业微信服务商 Secret。
/// </summary>
internal string? ProviderSecret { get; set; }
/// <summary>
/// 获取当前客户端使用的企业微信第三方应用的 SuiteId。
/// </summary>
internal string? SuiteId { get; set; }
/// <summary>
/// 获取当前客户端使用的企业微信第三方应用的 SuiteSecret。
/// </summary>
internal string? SuiteSecret { get; set; }
/// <summary>
/// 获取当前客户端使用的 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));

View File

@ -25,13 +25,28 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
public string CorpId { get; set; } = default!;
/// <summary>
/// 获取或设置企业微信应用的 AgentId。
/// 获取或设置企业微信应用的 AgentId。仅限企业内部开发时使用。
/// </summary>
public int AgentId { get; set; } = default!;
public int? AgentId { get; set; }
/// <summary>
/// 获取或设置企业微信应用的 AgentSecret。
/// 获取或设置企业微信应用的 AgentSecret。仅限企业内部开发时使用。
/// </summary>
public string AgentSecret { get; set; } = default!;
public string? AgentSecret { get; set; }
/// <summary>
/// 获取或设置企业微信服务商 Secret。仅限第三方应用开发时使用。
/// </summary>
public string? ProviderSecret { get; set; }
/// <summary>
/// 获取或设置企业微信第三方应用的 SuiteId。仅限第三方应用开发时使用。
/// </summary>
public string? SuiteId { get; set; }
/// <summary>
/// 获取或设置企业微信第三方应用的 SuiteSecret。仅限第三方应用开发时使用。
/// </summary>
public string? SuiteSecret { get; set; }
}
}

View File

@ -11,21 +11,33 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
public class WechatWorkEvent
{
/// <summary>
/// 获取或设置接收的企业 ID
/// 获取或设置企业 CorpId
/// </summary>
[XmlElement("ToUserName")]
public string ToUserName { get; set; } = default!;
[XmlElement("ToUserName", IsNullable = true)]
public string? ToUserName { get; set; }
/// <summary>
/// 获取或设置接收的应用 ID
/// 获取或设置发送方账号
/// </summary>
[XmlElement("AgentID")]
public string AgentId { get; set; } = default!;
[XmlElement("FromUserName", IsNullable = true)]
public string? FromUserName { get; set; }
/// <summary>
/// 获取或设置经过加密的消息数据
/// 获取或设置消息类型
/// </summary>
[XmlElement("Encrypt")]
public string EncryptedData { get; set; } = default!;
[XmlElement("MsgType", IsNullable = true)]
public string? MessageType { get; set; }
/// <summary>
/// 获取或设置事件类型。
/// </summary>
[XmlElement("Event", IsNullable = true)]
public string? Event { get; set; }
/// <summary>
/// 获取或设置消息创建时间。
/// </summary>
[XmlElement("CreateTime")]
public long CreateTimestamp { get; set; }
}
}

View File

@ -16,7 +16,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
public virtual int? Timeout { get; set; }
/// <summary>
/// 获取或设置企业微信应用的 AccessToken。
/// <para>获取或设置企业微信的 AccessToken。</para>
/// <para>注意:部分第三方应用开发的接口中该字段表示第三方应用的 SuiteAccessToken。</para>
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]