Skip to content

Commit 7f454d2

Browse files
committed
feat(tiktokshop): 随官方更新商品相关接口模型
1 parent d227484 commit 7f454d2

9 files changed

Lines changed: 180 additions & 2 deletions

File tree

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,9 @@ public static class TikTokShopClientExecuteProductExtensions
536536
IFlurlRequest flurlReq = client
537537
.CreateFlurlRequest(request, HttpMethod.Post, "product", request.ApiVersion, "products", "listing_check");
538538

539+
if (request.IsDiagnosisRequired is not null)
540+
flurlReq.SetQueryParam("is_diagnosis_required", request.IsDiagnosisRequired.Value ? "true" : "false");
541+
539542
return await client.SendFlurlRequesAsJsontAsync<Models.ProductCreateProductListingCheckResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
540543
}
541544

src/SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop/Models/Product/ProductCreateProductListingCheckRequest.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,13 @@ public class Manufacturer : ProductCreateProductRequest.Types.Manufacturer
100100
}
101101
}
102102

103+
/// <summary>
104+
/// 获取或设置是否返回优化诊断结果。
105+
/// </summary>
106+
[Newtonsoft.Json.JsonIgnore]
107+
[System.Text.Json.Serialization.JsonIgnore]
108+
public bool? IsDiagnosisRequired { get; set; }
109+
103110
/// <summary>
104111
/// 获取或设置外部商品 ID。
105112
/// </summary>

src/SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop/Models/Product/ProductCreateProductListingCheckResponse.cs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,13 @@ public static class Types
1313
{
1414
public class FailReason
1515
{
16+
/// <summary>
17+
/// 获取或设置失败原因编码。
18+
/// </summary>
19+
[Newtonsoft.Json.JsonProperty("code")]
20+
[System.Text.Json.Serialization.JsonPropertyName("code")]
21+
public int Code { get; set; }
22+
1623
/// <summary>
1724
/// 获取或设置失败原因。
1825
/// </summary>
@@ -24,6 +31,45 @@ public class FailReason
2431
public class Warning : ProductCreateProductResponse.Types.Data.Types.Warning
2532
{
2633
}
34+
35+
public class Diagnosis
36+
{
37+
public static class Types
38+
{
39+
public class DiagnosisResult : ProductGetProductDiagnosesResponse.Types.Data.Types.Product.Types.Diagnosis.Types.DiagnosisResult
40+
{
41+
}
42+
43+
public class Suggestion : ProductGetProductDiagnosesResponse.Types.Data.Types.Product.Types.Diagnosis.Types.Suggestion
44+
{
45+
}
46+
}
47+
48+
/// <summary>
49+
/// 获取或设置字段。
50+
/// </summary>
51+
[Newtonsoft.Json.JsonProperty("field")]
52+
[System.Text.Json.Serialization.JsonPropertyName("field")]
53+
public string Field { get; set; } = default!;
54+
55+
/// <summary>
56+
/// 获取或设置诊断结果列表。
57+
/// </summary>
58+
[Newtonsoft.Json.JsonProperty("diagnosis_results")]
59+
[System.Text.Json.Serialization.JsonPropertyName("diagnosis_results")]
60+
public Types.DiagnosisResult[] DiagnosisResultList { get; set; } = default!;
61+
62+
/// <summary>
63+
/// 获取或设置修改建议。
64+
/// </summary>
65+
[Newtonsoft.Json.JsonProperty("suggestions")]
66+
[System.Text.Json.Serialization.JsonPropertyName("suggestions")]
67+
public Types.Suggestion? Suggestion { get; set; }
68+
}
69+
70+
public class ListingQuality : ProductGetProductDiagnosesResponse.Types.Data.Types.Product.Types.ListingQuality
71+
{
72+
}
2773
}
2874

2975
/// <summary>
@@ -46,6 +92,20 @@ public class Warning : ProductCreateProductResponse.Types.Data.Types.Warning
4692
[Newtonsoft.Json.JsonProperty("warnings")]
4793
[System.Text.Json.Serialization.JsonPropertyName("warnings")]
4894
public Types.Warning? Warning { get; set; }
95+
96+
/// <summary>
97+
/// 获取或设置诊断列表。
98+
/// </summary>
99+
[Newtonsoft.Json.JsonProperty("diagnoses")]
100+
[System.Text.Json.Serialization.JsonPropertyName("diagnoses")]
101+
public Types.Diagnosis[]? DiagnosisList { get; set; }
102+
103+
/// <summary>
104+
/// 获取或设置上架质量信息。
105+
/// </summary>
106+
[Newtonsoft.Json.JsonProperty("listing_quality")]
107+
[System.Text.Json.Serialization.JsonPropertyName("listing_quality")]
108+
public Types.ListingQuality? ListingQuality { get; set; }
49109
}
50110
}
51111
}

src/SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop/Models/Product/ProductGetProductDetailResponse.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -898,6 +898,13 @@ public class AuditFailedReason
898898
[Newtonsoft.Json.JsonProperty("audit_failed_reasons")]
899899
[System.Text.Json.Serialization.JsonPropertyName("audit_failed_reasons")]
900900
public Types.AuditFailedReason[]? AuditFailedReasonList { get; set; }
901+
902+
/// <summary>
903+
/// 获取或设置上架质量等级。
904+
/// </summary>
905+
[Newtonsoft.Json.JsonProperty("listing_quality_tier")]
906+
[System.Text.Json.Serialization.JsonPropertyName("listing_quality_tier")]
907+
public string? ListingQualityTier { get; set; }
901908
}
902909
}
903910
}

src/SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop/Models/Product/ProductGetProductDiagnosesResponse.cs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,13 @@ public class DiagnosisResult
3434
[Newtonsoft.Json.JsonProperty("how_to_solve")]
3535
[System.Text.Json.Serialization.JsonPropertyName("how_to_solve")]
3636
public string HowToSolve { get; set; } = default!;
37+
38+
/// <summary>
39+
/// 获取或设置质量等级。
40+
/// </summary>
41+
[Newtonsoft.Json.JsonProperty("quality_tier")]
42+
[System.Text.Json.Serialization.JsonPropertyName("quality_tier")]
43+
public string? QualityTier { get; set; }
3744
}
3845

3946
public class Suggestion
@@ -150,6 +157,23 @@ public class Image
150157
[System.Text.Json.Serialization.JsonPropertyName("suggestion")]
151158
public Types.Suggestion? Suggestion { get; set; }
152159
}
160+
161+
public class ListingQuality
162+
{
163+
/// <summary>
164+
/// 获取或设置当前等级。
165+
/// </summary>
166+
[Newtonsoft.Json.JsonProperty("current_tier")]
167+
[System.Text.Json.Serialization.JsonPropertyName("current_tier")]
168+
public string CurrentTier { get; set; } = default!;
169+
170+
/// <summary>
171+
/// 获取或设置剩余建议数量。
172+
/// </summary>
173+
[Newtonsoft.Json.JsonProperty("remaining_recommendations")]
174+
[System.Text.Json.Serialization.JsonPropertyName("remaining_recommendations")]
175+
public int RemainingRecommendationCount { get; set; } = default!;
176+
}
153177
}
154178

155179
/// <summary>
@@ -166,6 +190,13 @@ public class Image
166190
[Newtonsoft.Json.JsonProperty("diagnoses")]
167191
[System.Text.Json.Serialization.JsonPropertyName("diagnoses")]
168192
public Types.Diagnosis[] DiagnosisList { get; set; } = default!;
193+
194+
/// <summary>
195+
/// 获取或设置上架质量信息。
196+
/// </summary>
197+
[Newtonsoft.Json.JsonProperty("listing_quality")]
198+
[System.Text.Json.Serialization.JsonPropertyName("listing_quality")]
199+
public Types.ListingQuality? ListingQuality { get; set; }
169200
}
170201
}
171202

src/SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop/Models/Product/ProductSearchProductsRequest.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@ public class ProductSearchProductsRequest : TikTokShopRequest
4343
[System.Text.Json.Serialization.JsonPropertyName("update_time_le")]
4444
public long? UpdateTimestampLessThan { get; set; }
4545

46+
/// <summary>
47+
/// 获取或设置分类版本。
48+
/// </summary>
49+
[Newtonsoft.Json.JsonProperty("category_version")]
50+
[System.Text.Json.Serialization.JsonPropertyName("category_version")]
51+
public string? CategoryVersion { get; set; }
52+
4653
/// <summary>
4754
/// 获取或设置商品状态。
4855
/// </summary>
@@ -57,6 +64,20 @@ public class ProductSearchProductsRequest : TikTokShopRequest
5764
[System.Text.Json.Serialization.JsonPropertyName("seller_skus")]
5865
public IList<string>? SellerSKUList { get; set; }
5966

67+
/// <summary>
68+
/// 获取或设置上架质量等级。
69+
/// </summary>
70+
[Newtonsoft.Json.JsonProperty("listing_quality_tier")]
71+
[System.Text.Json.Serialization.JsonPropertyName("listing_quality_tier")]
72+
public string? ListingQualityTier { get; set; }
73+
74+
/// <summary>
75+
/// 获取或设置上架平台列表。
76+
/// </summary>
77+
[Newtonsoft.Json.JsonProperty("listing_platforms")]
78+
[System.Text.Json.Serialization.JsonPropertyName("listing_platforms")]
79+
public IList<string>? ListingPlatformList { get; set; }
80+
6081
/// <summary>
6182
/// 获取或设置分页每页数量。
6283
/// <para>默认值:10</para>

test/SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop.UnitTests/ModelSamples/_/Product/ProductCreateProductListingCheckResponse.json

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,50 @@
22
"code": 0,
33
"data": {
44
"check_result": "FAILED",
5+
"diagnoses": [
6+
{
7+
"diagnosis_results": [
8+
{
9+
"code": "TITLE_LESS_THAN_40_CHARACTERS",
10+
"how_to_solve": "Names must be at least 40 characters long and contain product-identifying information, such as \"hiking boots\" or \"lipstick\".",
11+
"quality_tier": "POOR"
12+
}
13+
],
14+
"field": "TITLE",
15+
"suggestions": {
16+
"images": [
17+
{
18+
"height": 600,
19+
"optimized_uri": "tos-maliva-i-o3syd03w52-us/0266127022264e54ad2f639f5e0fb5e6",
20+
"optimized_url": "https://p16-graph-va.ibyteimg.com/tos-maliva-i-1por3rr4fy-us/v2/0266127022264e54ad2f639f5e0fb5e6~tplv-1por3rr4fy-image.webp",
21+
"uri": "tos-maliva-i-o3syd03w52-us/53b55d6e8cdf1f315affa7e70b45707d",
22+
"url": "https://p16-graph-va.ibyteimg.com/tos-maliva-i-1por3rr4fy-us/v2/53b55d6e8cdf1f315affa7e70b45707d~tplv-1por3rr4fy-image.webp",
23+
"width": 600
24+
}
25+
],
26+
"seo_words": [
27+
{
28+
"text": "dress"
29+
}
30+
],
31+
"smart_texts": [
32+
{
33+
"text": "this is a good title"
34+
}
35+
]
36+
}
37+
}
38+
],
539
"fail_reasons": [
640
{
41+
"code": 12052700,
742
"message": "Product title invalid"
843
}
944
],
45+
"listing_quality": {
46+
"current_tier": "POOR",
47+
"remaining_recommendations": 3
48+
},
1049
"warnings": {
1150
"message": "Your product will not be sent for review. "
1251
}

test/SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop.UnitTests/ModelSamples/_/Product/ProductGetProductDiagnosesResponse.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
"diagnosis_results": [
99
{
1010
"code": "TITLE_LESS_THAN_40_CHARACTERS",
11-
"how_to_solve": "Names must be at least 40 characters long and contain product-identifying information, such as \"hiking boots\" or \"lipstick\"."
11+
"how_to_solve": "Names must be at least 40 characters long and contain product-identifying information, such as \"hiking boots\" or \"lipstick\".",
12+
"quality_tier": "GOOD"
1213
}
1314
],
1415
"field": "TITLE",
@@ -36,7 +37,11 @@
3637
}
3738
}
3839
],
39-
"id": "123456"
40+
"id": "123456",
41+
"listing_quality": {
42+
"current_tier": "POOR",
43+
"remaining_recommendations": 3
44+
}
4045
}
4146
]
4247
},

test/SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop.UnitTests/ModelSamples/_/Product/ProductSearchProductsRequest.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
{
2+
"category_version": "v1",
23
"create_time_ge": 1694309208,
34
"create_time_le": 1694319208,
5+
"listing_platforms": [
6+
"TIKTOK_SHOP"
7+
],
8+
"listing_quality_tier": "POOR",
49
"seller_skus": [
510
"Color-Red-XM001"
611
],

0 commit comments

Comments
 (0)