Skip to content

Commit 0b8a438

Browse files
committed
feat(tiktokshop): 新增搜索产品尺码表模板接口
1 parent 2ca003f commit 0b8a438

6 files changed

Lines changed: 255 additions & 55 deletions

File tree

docs/TikTokGlobalShop/Basic_ModelDefinition.md

Lines changed: 56 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -30,109 +30,110 @@ Notes: The following catalog is consistent with the catalog structure of [TikTok
3030
- Get Seller Permissions: `SellerGetPermissions`
3131
- Get Active Shops: `SellerGetShops`
3232
- Products
33-
- Get Brands: `ProductGetBrands`
34-
- Create Custom Brands: `ProductCreateBrand`
33+
- Check Listing Prerequisites: `ProductGetPrerequisites`
3534
- Get Categories: `ProductGetCategories`
35+
- Recommend Categories: `ProductRecommendCategories`
3636
- Get Category Rules: `ProductGetCategoryRules`
3737
- Get Attributes: `ProductGetCategoryAttributes`
38-
- Recommend Categories: `ProductRecommendCategories`
38+
- Get Brands: `ProductGetBrands`
39+
- Create Custom Brands: `ProductCreateBrand`
40+
- Check Product Listing: `ProductCreateProductListingCheck`
3941
- Upload Product Image: `ProductUploadImage`
4042
- Upload Product File: `ProductUploadFile`
43+
- Search Size Charts: `ProductSearchSizeCharts`
4144
- Create Product: `ProductCreateProduct`
4245
- Partial Edit Product: `ProductUpdateProductPartial`
4346
- Edit Product: `ProductUpdateProduct`
44-
- Update Inventory: `ProductUpdateProductInventory`
45-
- Update Price: `ProductUpdateProductPrice`
4647
- Activate Products: `ProductActivateProducts`
4748
- Deactivate Products: `ProductDeactivateProducts`
4849
- Delete Products: `ProductDeleteProducts`
4950
- Recover Products: `ProductRecoverProducts`
5051
- Get Product: `ProductGetProductDetail`
52+
- Search Products: `ProductSearchProducts`
53+
- Update Price: `ProductUpdateProductPrice`
54+
- Update Inventory: `ProductUpdateProductInventory`
5155
- Inventory Search: `ProductGetInventories`
56+
- Product Information Issue Diagnosis: `ProductGetProductDiagnoses`
57+
- Get Products SEO Words: `ProductGetProductSEOWords`
58+
- Get Recommended Product Title And Description: `ProductGetProductSuggestions`
59+
- Optimized Images: `ProductOptimizeImages`
5260
- Get Global Categories: `ProductGetGlobalCategories`
61+
- Recommend Global Categories: `ProductRecommendGlobalCategories`
5362
- Get Global Category Rules: `ProductGetGlobalCategoryRules`
5463
- Get Global Attributes: `ProductGetGlobalCategoryAttributes`
55-
- Recommend Global Categories: `ProductRecommendGlobalCategories`
5664
- Create Global Product: `ProductCreateGlobalProduct`
5765
- Publish Global Product: `ProductPublishGlobalProduct`
58-
- Update Global Inventory: `ProductUpdateGlobalProductInventory`
59-
- Get Global Product: `ProductGetGlobalProductDetail`
6066
- Edit Global Product: `ProductUpdateGlobalProduct`
6167
- Delete Global Products: `ProductDeleteGlobalProducts`
62-
- Check Product Listing: `ProductCreateProductListingCheck`
63-
- Check Listing Prerequisites: `ProductGetPrerequisites`
68+
- Get Global Product: `ProductGetGlobalProductDetail`
6469
- Search Global Products: `ProductSearchGlobalProducts`
65-
- Search Products: `ProductSearchProducts`
70+
- Update Global Inventory: `ProductUpdateGlobalProductInventory`
6671
- Listing Schemas: `ProductGetListingSchemas`
67-
- Product Information Issue Diagnosis: `ProductGetProductDiagnoses`
68-
- Get Products SEO Words: `ProductGetProductSEOWords`
69-
- Get Recommended Product Title And Description: `ProductGetProductSuggestions`
70-
- Optimized Images: `ProductOptimizeImages`
72+
- Promotion
73+
- Create Activity: `PromotionCreateActivity`
74+
- Update Activity: `PromotionUpdateActivity`
75+
- Deactivate Activity: `PromotionDeactivateActivity`
76+
- Get Activity: `PromotionGetActivityDetail`
77+
- Search Activities: `PromotionSearchActivities`
78+
- Update Activity Product: `PromotionUpdateActivityProducts`
79+
- Remove Activity Product: `PromotionDeleteActivityProducts`
7180
- Orders
7281
- Get Order List: `OrderSearchOrders`
7382
- Get Order Detail: `OrderBatchGetOrderDetail`
7483
- Fulfillment
75-
- Search Package: `FulfillmentSearchPackages`
76-
- Get Package Detail: `FulfillmentGetPackageDetail`
77-
- Get Package Shipping Document: `FulfillmentGetPackageShippingDocuments`
78-
- Get Package Handover Time Slots: `FulfillmentGetPackageHandoverTimeSlots`
79-
- Get Tracking: `FulfillmentGetOrderTracking`
80-
- Update Package Shipping Info: `FulfillmentUpdatePackageShippingInfo`
81-
- Update Package Delivery Status: `FulfillmentBatchUpdatePackagesDeliveryStatus`
8284
- Get Order Split Attributes: `FulfillmentGetOrderSplitAttributes`
8385
- Split Orders: `FulfillmentSplitOrder`
86+
- Get Eligible Shipping Service: `FulfillmentSearchOrderShippingServices`
87+
- Create Packages: `FulfillmentCreatePackage`
88+
- Search Package: `FulfillmentSearchPackages`
8489
- Search Combinable Packages: `FulfillmentSearchCombinablePackages`
8590
- Combine Package: `FulfillmentCombinePackage`
8691
- Uncombine Packages: `FulfillmentUncombinePackage`
87-
- Mark Package As Shipped: `FulfillmentUpdateOrderPackages`
92+
- Get Package Handover Time Slots: `FulfillmentGetPackageHandoverTimeSlots`
8893
- Ship Package: `FulfillmentShipPackage`
8994
- Batch Ship Packages: `FulfillmentBatchShipPackages`
90-
- Fulfillment Upload Delivery Image: `FulfillmentUploadImage`
91-
- Fulfillment Upload Delivery File: `FulfillmentUploadFile`
92-
- Get Eligible Shipping Service: `FulfillmentSearchOrderShippingServices`
93-
- Create Packages: `FulfillmentCreatePackage`
95+
- Mark Package As Shipped: `FulfillmentUpdateOrderPackages`
96+
- Get Package Shipping Document: `FulfillmentGetPackageShippingDocuments`
97+
- Get Package Detail: `FulfillmentGetPackageDetail`
98+
- Get Tracking: `FulfillmentGetOrderTracking`
9499
- Update Shipping Info: `FulfillmentUpdateOrderShippingInfo`
100+
- Update Package Shipping Info: `FulfillmentUpdatePackageShippingInfo`
101+
- Fulfillment Upload Delivery File: `FulfillmentUploadFile`
102+
- Fulfillment Upload Delivery Image: `FulfillmentUploadImage`
103+
- Update Package Delivery Status: `FulfillmentBatchUpdatePackagesDeliveryStatus`
104+
- Logistics
105+
- Get Warehouse List: `LogisticsGetWarehouses`
106+
- Get Global Seller Warehouse: `LogisticsGetGlobalWarehouses`
107+
- Get Warehouse Delivery Options: `LogisticsGetWarehouseDeliveryOptions`
108+
- Get Shipping Providers: `LogisticsGetDeliveryOptionShippingProviders`
95109
- Return and Refund
96-
- Search Cancellations: `ReturnRefundSearchCancellations`
97-
- Approve Cancellation: `ReturnRefundApproveCancellation`
98-
- Reject Cancellation: `ReturnRefundRejectCancellation`
99-
- Search Returns: `ReturnRefundSearchReturns`
100-
- Approve Return: `ReturnRefundApproveReturn`
101-
- Reject Return: `ReturnRefundRejectReturn`
102110
- Get Aftersale Eligibility: `ReturnRefundGetOrderAftersaleEligibility`
103111
- Get Reject Reasons: `ReturnRefundGetRejectReasons`
104-
- Calculate Refund: `ReturnRefundCalculateRefund`
112+
- Create Return: `ReturnRefundCreateReturn`
113+
- Approve Return: `ReturnRefundApproveReturn`
114+
- Reject Return: `ReturnRefundRejectReturn`
115+
- Search Returns: `ReturnRefundSearchReturns`
105116
- Get Return Records: `ReturnRefundGetReturnRecords`
106117
- Cancel Order: `ReturnRefundCreateCancellation`
107-
- Create Return: `ReturnRefundCreateReturn`
108-
- Logistics
109-
- Get Warehouse Delivery Options: `LogisticsGetWarehouseDeliveryOptions`
110-
- Get Warehouse List: `LogisticsGetWarehouses`
111-
- Get Shipping Providers: `LogisticsGetDeliveryOptionShippingProviders`
112-
- Get Global Seller Warehouse: `LogisticsGetGlobalWarehouses`
113-
- Promotion
114-
- Create Activity: `PromotionCreateActivity`
115-
- Update Activity Product: `PromotionUpdateActivityProducts`
116-
- Remove Activity Product: `PromotionDeleteActivityProducts`
117-
- Search Activities: `PromotionSearchActivities`
118-
- Get Activity: `PromotionGetActivityDetail`
119-
- Update Activity: `PromotionUpdateActivity`
120-
- Deactivate Activity: `PromotionDeactivateActivity`
118+
- Approve Cancellation: `ReturnRefundApproveCancellation`
119+
- Reject Cancellation: `ReturnRefundRejectCancellation`
120+
- Search Cancellations: `ReturnRefundSearchCancellations`
121+
- Calculate Refund: `ReturnRefundCalculateRefund`
121122
- Finance
122-
- Get Order Statement Transactions: `FinanceGetOrderStatementTransactions`
123-
- Get Statement Transactions: `FinanceGetStatementTransactions`
124-
- Get Withdrawals: `FinanceGetWithdrawals`
125123
- Get Statements: `FinanceGetStatements`
124+
- Get Statement Transactions: `FinanceGetStatementTransactions`
125+
- Get Order Statement Transactions: `FinanceGetOrderStatementTransactions`
126126
- Get Payments: `FinanceGetPayments`
127+
- Get Withdrawals: `FinanceGetWithdrawals`
127128
- Customer Service
128-
- Get Conversation Messages: `CustomerServiceGetConversationMessages`
129+
- Create Conversation: `CustomerServiceCreateConversation`
129130
- Get Conversations: `CustomerServiceGetConversations`
131+
- Get Conversation Messages: `CustomerServiceGetConversationMessages`
132+
- Upload Buyer Messages Image: `CustomerServiceUploadImage`
130133
- Send Message: `CustomerServiceCreateConversationMessage`
134+
- Read Message: `CustomerServiceReadConversationMessage`
131135
- Get Agent Settings: `CustomerServiceGetAgentSettings`
132136
- Update Agent Settings: `CustomerServiceUpdateAgentSettings`
133-
- Upload Buyer Messages Image: `CustomerServiceUploadImage`
134-
- Read Message: `CustomerServiceReadConversationMessage`
135-
- Create Conversation: `CustomerServiceCreateConversation`
136137
- Supply Chain
137138
- Confirm Package Shipment: `SupplyChainSyncPackages`
138139

src/SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop/Extensions/TikTokShopClientExecuteProductExtensions.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,33 @@ public static class TikTokShopClientExecuteProductExtensions
409409
}
410410
#endregion
411411

412+
#region SizeChart
413+
/// <summary>
414+
/// <para>异步调用 [POST] /product/{version}/sizecharts/search 接口。</para>
415+
/// <para>
416+
/// REF: <br/>
417+
/// <![CDATA[ https://partner.tiktokshop.com/docv2/page/66bebeaa224acb02f7d7e8c5 ]]>
418+
/// </para>
419+
/// </summary>
420+
/// <param name="client"></param>
421+
/// <param name="request"></param>
422+
/// <param name="cancellationToken"></param>
423+
/// <returns></returns>
424+
public static async Task<Models.ProductSearchSizeChartsResponse> ExecuteProductSearchSizeChartsAsync(this TikTokShopClient client, Models.ProductSearchSizeChartsRequest request, CancellationToken cancellationToken = default)
425+
{
426+
if (client is null) throw new ArgumentNullException(nameof(client));
427+
if (request is null) throw new ArgumentNullException(nameof(request));
428+
429+
IFlurlRequest flurlReq = client
430+
.CreateFlurlRequest(request, HttpMethod.Post, "product", request.ApiVersion, "sizecharts", "search")
431+
.SetQueryParam("locales", request.Locales is not null ? string.Join(",", request.Locales) : null)
432+
.SetQueryParam("page_size", request.PageSize)
433+
.SetQueryParam("page_token", request.PageToken);
434+
435+
return await client.SendFlurlRequesAsJsontAsync<Models.ProductSearchSizeChartsResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
436+
}
437+
#endregion
438+
412439
#region Upload
413440
/// <summary>
414441
/// <para>异步调用 [POST] /product/{version}/images/upload 接口。</para>
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
using System.Collections.Generic;
2+
3+
namespace SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop.Models
4+
{
5+
/// <summary>
6+
/// <para>表示 [POST] /product/{version}/sizecharts/search 接口的请求。</para>
7+
/// </summary>
8+
public class ProductSearchSizeChartsRequest : TikTokShopRequest
9+
{
10+
/// <summary>
11+
/// 获取或设置 API 版本号。
12+
/// <para>默认值:202407</para>
13+
/// </summary>
14+
[Newtonsoft.Json.JsonIgnore]
15+
[System.Text.Json.Serialization.JsonIgnore]
16+
public override int ApiVersion { get; set; } = 202407;
17+
18+
/// <summary>
19+
/// 获取或设置尺码表模板 ID 列表。
20+
/// </summary>
21+
[Newtonsoft.Json.JsonProperty("ids")]
22+
[System.Text.Json.Serialization.JsonPropertyName("ids")]
23+
public IList<string>? SizeChartTemplateIdList { get; set; }
24+
25+
/// <summary>
26+
/// 获取或设置关键字。
27+
/// </summary>
28+
[Newtonsoft.Json.JsonProperty("keyword")]
29+
[System.Text.Json.Serialization.JsonPropertyName("keyword")]
30+
public string? Keyword { get; set; }
31+
32+
/// <summary>
33+
/// 获取或设置本地化语种列表。
34+
/// </summary>
35+
[Newtonsoft.Json.JsonIgnore]
36+
[System.Text.Json.Serialization.JsonIgnore]
37+
public IList<string>? Locales { get; set; }
38+
39+
/// <summary>
40+
/// 获取或设置分页每页数量。
41+
/// <para>默认值:10</para>
42+
/// </summary>
43+
[Newtonsoft.Json.JsonIgnore]
44+
[System.Text.Json.Serialization.JsonIgnore]
45+
public int PageSize { get; set; } = 10;
46+
47+
/// <summary>
48+
/// 获取或设置分页令牌。
49+
/// </summary>
50+
[Newtonsoft.Json.JsonIgnore]
51+
[System.Text.Json.Serialization.JsonIgnore]
52+
public string? PageToken { get; set; }
53+
}
54+
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
namespace SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop.Models
2+
{
3+
/// <summary>
4+
/// <para>表示 [POST] /product/{version}/sizecharts/search 接口的响应。</para>
5+
/// </summary>
6+
public class ProductSearchSizeChartsResponse : TikTokShopResponse<ProductSearchSizeChartsResponse.Types.Data>
7+
{
8+
public static class Types
9+
{
10+
public class Data
11+
{
12+
public static class Types
13+
{
14+
public class SizeChart
15+
{
16+
public static class Types
17+
{
18+
public class Image
19+
{
20+
/// <summary>
21+
/// 获取或设置本地化语种。
22+
/// </summary>
23+
[Newtonsoft.Json.JsonProperty("locale")]
24+
[System.Text.Json.Serialization.JsonPropertyName("locale")]
25+
public string Locale { get; set; } = default!;
26+
27+
/// <summary>
28+
/// 获取或设置图片 URI。
29+
/// </summary>
30+
[Newtonsoft.Json.JsonProperty("uri")]
31+
[System.Text.Json.Serialization.JsonPropertyName("uri")]
32+
public string Uri { get; set; } = default!;
33+
34+
/// <summary>
35+
/// 获取或设置图片 URL。
36+
/// </summary>
37+
[Newtonsoft.Json.JsonProperty("url")]
38+
[System.Text.Json.Serialization.JsonPropertyName("url")]
39+
public string Url { get; set; } = default!;
40+
}
41+
}
42+
43+
/// <summary>
44+
/// 获取或设置模板 ID。
45+
/// </summary>
46+
[Newtonsoft.Json.JsonProperty("template_id")]
47+
[System.Text.Json.Serialization.JsonPropertyName("template_id")]
48+
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalStringReadOnlyConverter))]
49+
public string TemplateId { get; set; } = default!;
50+
51+
/// <summary>
52+
/// 获取或设置模板名称。
53+
/// </summary>
54+
[Newtonsoft.Json.JsonProperty("template_name")]
55+
[System.Text.Json.Serialization.JsonPropertyName("template_name")]
56+
public string Name { get; set; } = default!;
57+
58+
/// <summary>
59+
/// 获取或设置图片列表。
60+
/// </summary>
61+
[Newtonsoft.Json.JsonProperty("images")]
62+
[System.Text.Json.Serialization.JsonPropertyName("images")]
63+
public Types.Image[] ImageList { get; set; } = default!;
64+
}
65+
}
66+
67+
/// <summary>
68+
/// 获取或设置尺码表模板列表。
69+
/// </summary>
70+
[Newtonsoft.Json.JsonProperty("size_chart")]
71+
[System.Text.Json.Serialization.JsonPropertyName("size_chart")]
72+
public Types.SizeChart[] SizeChartList { get; set; } = default!;
73+
74+
/// <summary>
75+
/// 获取或设置总数量。
76+
/// </summary>
77+
[Newtonsoft.Json.JsonProperty("total_count")]
78+
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
79+
public int TotalCount { get; set; }
80+
81+
/// <summary>
82+
/// 获取或设置下一页分页令牌。
83+
/// </summary>
84+
[Newtonsoft.Json.JsonProperty("next_page_token")]
85+
[System.Text.Json.Serialization.JsonPropertyName("next_page_token")]
86+
public string? NextPageToken { get; set; }
87+
}
88+
}
89+
}
90+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"ids": [
3+
"7362027385890244398"
4+
],
5+
"keyword": "size chart"
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"code": 0,
3+
"data": {
4+
"next_page_token": "b2Zmc2V0PTAK",
5+
"size_chart": [
6+
{
7+
"images": [
8+
{
9+
"locale": "en-US",
10+
"uri": "tos-maliva-i-o3syd03w52-us/c668cdf70b7f483c94dbe",
11+
"url": "https://p16-oec-va.ibyteimg.com/tos-maliva-i-o3syd03w52-us/6c8519a3663a4d728c4e3c131dc914b4~tplv-o3syd03w52-resize-jpeg:300:300.jpeg?from=522366036"
12+
}
13+
],
14+
"template_id": "7362027385890244398",
15+
"template_name": "size chart"
16+
}
17+
],
18+
"total_count": 100
19+
},
20+
"message": "Success",
21+
"request_id": "202203070749000101890810281E8C70B7"
22+
}

0 commit comments

Comments
 (0)