diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Extensions/WechatOpenAIClientExecuteSkillStoreExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Extensions/WechatOpenAIClientExecuteSkillStoreExtensions.cs
new file mode 100644
index 00000000..89d28ba4
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Extensions/WechatOpenAIClientExecuteSkillStoreExtensions.cs
@@ -0,0 +1,90 @@
+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.OpenAI
+{
+ public static class WechatOpenAIClientExecuteSkillStoreExtensions
+ {
+ ///
+ /// 异步调用 [POST] /v2/skill_store/get_list 接口。
+ /// REF: https://developers.weixin.qq.com/doc/aispeech/openapi/api/v2/skill_store/get_store_skill_list.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteSkillStoreGetListAsync(this WechatOpenAIClient client, Models.SkillStoreGetListRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "v2", "skill_store", "get_list");
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /v2/skill_store/bot_acquire_state/update 接口。
+ /// REF: https://developers.weixin.qq.com/doc/aispeech/openapi/api/v2/skill_store/update_bot_acquire_state.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteSkillStoreBotAcquireStateUpdateAsync(this WechatOpenAIClient client, Models.SkillStoreBotAcquireStateUpdateRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "v2", "skill_store", "bot_acquire_state", "update");
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /v2/skill_store/bot_switch_state/update 接口。
+ /// REF: https://developers.weixin.qq.com/doc/aispeech/openapi/api/v2/skill_store/batch_update_state.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteSkillStoreBotSwitchStateUpdateAsync(this WechatOpenAIClient client, Models.SkillStoreBotSwitchStateUpdateRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "v2", "skill_store", "bot_switch_state", "update");
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /v2/skill_store/builtin_skill_switch/update 接口。
+ /// REF: https://developers.weixin.qq.com/doc/aispeech/openapi/api/v2/skill_store/update_builtin_skill_switch.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteSkillStoreBuiltinSkillSwitchUpdateAsync(this WechatOpenAIClient client, Models.SkillStoreBuiltinSkillSwitchUpdateRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "v2", "skill_store", "builtin_skill_switch", "update");
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBotAcquireStateUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBotAcquireStateUpdateRequest.cs
new file mode 100644
index 00000000..a6672942
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBotAcquireStateUpdateRequest.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models
+{
+ ///
+ /// 表示 [POST] /v2/skill_store/bot_acquire_state/update 接口的请求。
+ ///
+ public class SkillStoreBotAcquireStateUpdateRequest : WechatOpenAIRequest
+ {
+ ///
+ /// 获取或设置技能 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("skill_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("skill_id")]
+ public string SkillId { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBotAcquireStateUpdateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBotAcquireStateUpdateResponse.cs
new file mode 100644
index 00000000..ad73f9b2
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBotAcquireStateUpdateResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models
+{
+ ///
+ /// 表示 [POST] /v2/skill_store/bot_acquire_state/update 接口的响应。
+ ///
+ public class SkillStoreBotAcquireStateUpdateResponse : WechatOpenAIResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBotSwitchStateUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBotSwitchStateUpdateRequest.cs
new file mode 100644
index 00000000..96f29979
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBotSwitchStateUpdateRequest.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models
+{
+ ///
+ /// 表示 [POST] /v2/skill_store/bot_switch_state/update 接口的请求。
+ ///
+ public class SkillStoreBotSwitchStateUpdateRequest : WechatOpenAIRequest
+ {
+ ///
+ /// 获取或设置技能 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("skill_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("skill_id")]
+ public string SkillId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置要开启技能开关的机器人 ID 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("on_bot_id_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("on_bot_id_list")]
+ public IList OnBotIdList { get; set; } = new List();
+
+ ///
+ /// 获取或设置要关闭技能开关的机器人 ID 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("off_bot_id_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("off_bot_id_list")]
+ public IList OffBotIdList { get; set; } = new List();
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBotSwitchStateUpdateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBotSwitchStateUpdateResponse.cs
new file mode 100644
index 00000000..a3a7423c
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBotSwitchStateUpdateResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models
+{
+ ///
+ /// 表示 [POST] /v2/skill_store/bot_switch_state/update 接口的响应。
+ ///
+ public class SkillStoreBotSwitchStateUpdateResponse : WechatOpenAIResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBuiltinSkillSwitchUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBuiltinSkillSwitchUpdateRequest.cs
new file mode 100644
index 00000000..bf5ff242
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBuiltinSkillSwitchUpdateRequest.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models
+{
+ ///
+ /// 表示 [POST] /v2/skill_store/builtin_skill_switch/update 接口的请求。
+ ///
+ public class SkillStoreBuiltinSkillSwitchUpdateRequest : WechatOpenAIRequest
+ {
+ ///
+ /// 获取或设置技能名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("skill_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("skill_name")]
+ public string SkillName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置要开启技能开关的机器人 ID 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("on_bot_id_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("on_bot_id_list")]
+ public IList OnBotIdList { get; set; } = new List();
+
+ ///
+ /// 获取或设置要关闭技能开关的机器人 ID 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("off_bot_id_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("off_bot_id_list")]
+ public IList OffBotIdList { get; set; } = new List();
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBuiltinSkillSwitchUpdateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBuiltinSkillSwitchUpdateResponse.cs
new file mode 100644
index 00000000..a838ed08
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreBuiltinSkillSwitchUpdateResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models
+{
+ ///
+ /// 表示 [POST] /v2/skill_store/builtin_skill_switch/update 接口的响应。
+ ///
+ public class SkillStoreBuiltinSkillSwitchUpdateResponse : WechatOpenAIResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreGetListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreGetListRequest.cs
new file mode 100644
index 00000000..407e35f6
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreGetListRequest.cs
@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models
+{
+ ///
+ /// 表示 [POST] /v2/skill_store/get_list 接口的请求。
+ ///
+ public class SkillStoreGetListRequest : WechatOpenAIRequest
+ {
+ ///
+ /// 获取或设置关键字。
+ ///
+ [Newtonsoft.Json.JsonProperty("keyword")]
+ [System.Text.Json.Serialization.JsonPropertyName("keyword")]
+ public string? Keyword { get; set; }
+
+ ///
+ /// 获取或设置技能类别。
+ ///
+ [Newtonsoft.Json.JsonProperty("category")]
+ [System.Text.Json.Serialization.JsonPropertyName("category")]
+ public string? Category { get; set; }
+
+ ///
+ /// 获取或设置分类字段。
+ ///
+ [Newtonsoft.Json.JsonProperty("order")]
+ [System.Text.Json.Serialization.JsonPropertyName("order")]
+ public int Order { get; set; }
+
+ ///
+ /// 获取或设置分页页数。
+ /// 默认值:1
+ ///
+ [Newtonsoft.Json.JsonProperty("page")]
+ [System.Text.Json.Serialization.JsonPropertyName("page")]
+ public int Page { get; set; } = 1;
+
+ ///
+ /// 获取或设置分页每页数量。
+ /// 默认值:10
+ ///
+ [Newtonsoft.Json.JsonProperty("size")]
+ [System.Text.Json.Serialization.JsonPropertyName("size")]
+ public int Limit { get; set; } = 10;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreGetListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreGetListResponse.cs
new file mode 100644
index 00000000..32ba36fa
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/SkillStore/SkillStoreGetListResponse.cs
@@ -0,0 +1,152 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models
+{
+ ///
+ /// 表示 [POST] /v2/skill_store/get_list 接口的响应。
+ ///
+ public class SkillStoreGetListResponse : WechatOpenAIResponse
+ {
+ public static class Types
+ {
+ public class Data
+ {
+ public static class Types
+ {
+ public class Skill
+ {
+ public static class Types
+ {
+ public class Bot
+ {
+ ///
+ /// 获取或设置机器人总数。
+ ///
+ [Newtonsoft.Json.JsonProperty("count")]
+ [System.Text.Json.Serialization.JsonPropertyName("count")]
+ public int TotalCount { get; set; }
+
+ ///
+ /// 获取或设置开启的机器人数。
+ ///
+ [Newtonsoft.Json.JsonProperty("on_num")]
+ [System.Text.Json.Serialization.JsonPropertyName("on_num")]
+ public int OnCount { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置技能 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("skill_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("skill_id")]
+ public string SkillId { get; set; } = default!;
+
+ ///
+ /// 获取或设置技能名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("skill_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("skill_name")]
+ public string SkillName { get; set; } = default!;
+
+ ///
+ /// 获取或设置机器人名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("bot_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("bot_name")]
+ public string BotName { get; set; } = default!;
+
+ ///
+ /// 获取或设置是否已获取。
+ ///
+ [Newtonsoft.Json.JsonProperty("acquired")]
+ [System.Text.Json.Serialization.JsonPropertyName("acquired")]
+ public bool IsAcquired { get; set; }
+
+ ///
+ /// 获取或设置获取时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("acquired_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RegularNullableDateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("acquired_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RegularNullableDateTimeOffsetConverter))]
+ public DateTimeOffset? AcquireTime { get; set; }
+
+ ///
+ /// 获取或设置机器人信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("bot_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("bot_info")]
+ public Types.Bot Bot { get; set; } = default!;
+
+ ///
+ /// 获取或设置分类。
+ ///
+ [Newtonsoft.Json.JsonProperty("category")]
+ [System.Text.Json.Serialization.JsonPropertyName("category")]
+ public string Category { get; set; } = default!;
+
+ ///
+ /// 获取或设置描述。
+ ///
+ [Newtonsoft.Json.JsonProperty("desc")]
+ [System.Text.Json.Serialization.JsonPropertyName("desc")]
+ public string Description { get; set; } = default!;
+
+ ///
+ /// 获取或设置热度。
+ ///
+ [Newtonsoft.Json.JsonProperty("hot")]
+ [System.Text.Json.Serialization.JsonPropertyName("hot")]
+ public int Hot { get; set; }
+
+ ///
+ /// 获取或设置话术举例列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("statement_case_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("statement_case_list")]
+ public string[] StatementCaseList { get; set; } = default!;
+
+ ///
+ /// 获取或设置状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("state")]
+ [System.Text.Json.Serialization.JsonPropertyName("state")]
+ public int State { get; set; }
+
+ ///
+ /// 获取或设置技能开关。
+ ///
+ [Newtonsoft.Json.JsonProperty("switch")]
+ [System.Text.Json.Serialization.JsonPropertyName("switch")]
+ public bool Switch { get; set; }
+
+ ///
+ /// 获取或设置修改时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("update_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RegularDateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("update_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RegularDateTimeOffsetConverter))]
+ public DateTimeOffset UpdateTime { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置技能列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("list")]
+ [System.Text.Json.Serialization.JsonPropertyName("list")]
+ public Types.Skill[] SkillList { get; set; } = default!;
+
+ ///
+ /// 获取或设置技能总数量。
+ ///
+ [Newtonsoft.Json.JsonProperty("count")]
+ [System.Text.Json.Serialization.JsonPropertyName("count")]
+ public int TotalCount { get; set; }
+ }
+ }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBotAcquireStateUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBotAcquireStateUpdateRequest.json
new file mode 100644
index 00000000..222f7b79
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBotAcquireStateUpdateRequest.json
@@ -0,0 +1,3 @@
+{
+ "skill_id": "23e21b8d4e226d046b4e"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBotAcquireStateUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBotAcquireStateUpdateResponse.json
new file mode 100644
index 00000000..a2217ea2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBotAcquireStateUpdateResponse.json
@@ -0,0 +1,5 @@
+{
+ "code": 0,
+ "msg": "success",
+ "request_id": "255i0ug8-l9q4-3801-44ft-w7csjn9e5142"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBotSwitchStateUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBotSwitchStateUpdateRequest.json
new file mode 100644
index 00000000..50205eda
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBotSwitchStateUpdateRequest.json
@@ -0,0 +1,5 @@
+{
+ "skill_id": "21c705957fc5af9fc32e",
+ "on_bot_id_list": [ "1dzcmrij0zyvexs4llblxepwclfvnq3fv", "2dzcmrij0zyvexs4llblxepwclfvnq3fv" ],
+ "off_bot_id_list": [ "dzcmrij0zyvexs4llblxepwclfvnq3fv", "3dzcmrij0zyvexs4llblxepwclfvnq3fv" ]
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBotSwitchStateUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBotSwitchStateUpdateResponse.json
new file mode 100644
index 00000000..a2217ea2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBotSwitchStateUpdateResponse.json
@@ -0,0 +1,5 @@
+{
+ "code": 0,
+ "msg": "success",
+ "request_id": "255i0ug8-l9q4-3801-44ft-w7csjn9e5142"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBuiltinSkillSwitchUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBuiltinSkillSwitchUpdateRequest.json
new file mode 100644
index 00000000..e6b891fd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBuiltinSkillSwitchUpdateRequest.json
@@ -0,0 +1,5 @@
+{
+ "skill_name": "天气",
+ "on_bot_id_list": [ "1dzcmrij0zyvexs4llblxepwclfvnq3fv", "2dzcmrij0zyvexs4llblxepwclfvnq3fv" ],
+ "off_bot_id_list": [ "dzcmrij0zyvexs4llblxepwclfvnq3fv", "3dzcmrij0zyvexs4llblxepwclfvnq3fv" ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBuiltinSkillSwitchUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBuiltinSkillSwitchUpdateResponse.json
new file mode 100644
index 00000000..a2217ea2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreBuiltinSkillSwitchUpdateResponse.json
@@ -0,0 +1,5 @@
+{
+ "code": 0,
+ "msg": "success",
+ "request_id": "255i0ug8-l9q4-3801-44ft-w7csjn9e5142"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreGetListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreGetListRequest.json
new file mode 100644
index 00000000..b4c54cb9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreGetListRequest.json
@@ -0,0 +1,7 @@
+{
+ "category": "",
+ "keyword": "",
+ "order": 1,
+ "page": 1,
+ "size": 10
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreGetListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreGetListResponse.json
new file mode 100644
index 00000000..c9d87641
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/SkillStore/SkillStoreGetListResponse.json
@@ -0,0 +1,30 @@
+{
+ "code": 0,
+ "data": {
+ "count": 6,
+ "list": [
+ {
+ "acquired": false,
+ "bot_info": {
+ "count": 2,
+ "on_num": 1
+ },
+ "bot_name": "讲笑话机器人",
+ "category": "游戏",
+ "desc": "提供多种娱乐技能,具体包括:讲情话、夸夸我、讲笑话、玩成语接龙等互动娱乐技能。其中擅长讲笑话,尤其是冷笑话;擅长讲情话,尤其是土味情话;还能提供花式夸人,玩成语接龙游戏等技能。",
+ "hot": 0,
+ "skill_id": "buarvgld1evpg4faxacg",
+ "skill_name": "小微欢乐多",
+ "state": 0,
+ "statement_case_list": [
+ "讲笑话",
+ "讲情话"
+ ],
+ "switch": true,
+ "update_time": "2020-07-29 11:38:39"
+ }
+ ]
+ },
+ "msg": "success",
+ "request_id": "255i0ug8-l9q4-3801-44ft-w7csjn9e5142"
+}
\ No newline at end of file