lingxingapi 1.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of lingxingapi might be problematic. Click here for more details.

Files changed (65) hide show
  1. lingxingapi/__init__.py +7 -0
  2. lingxingapi/ads/__init__.py +0 -0
  3. lingxingapi/ads/api.py +5946 -0
  4. lingxingapi/ads/param.py +192 -0
  5. lingxingapi/ads/route.py +134 -0
  6. lingxingapi/ads/schema.py +2615 -0
  7. lingxingapi/api.py +443 -0
  8. lingxingapi/base/__init__.py +0 -0
  9. lingxingapi/base/api.py +409 -0
  10. lingxingapi/base/param.py +59 -0
  11. lingxingapi/base/route.py +11 -0
  12. lingxingapi/base/schema.py +198 -0
  13. lingxingapi/basic/__init__.py +0 -0
  14. lingxingapi/basic/api.py +466 -0
  15. lingxingapi/basic/param.py +72 -0
  16. lingxingapi/basic/route.py +20 -0
  17. lingxingapi/basic/schema.py +212 -0
  18. lingxingapi/errors.py +143 -0
  19. lingxingapi/fba/__init__.py +0 -0
  20. lingxingapi/fba/api.py +1691 -0
  21. lingxingapi/fba/param.py +250 -0
  22. lingxingapi/fba/route.py +30 -0
  23. lingxingapi/fba/schema.py +987 -0
  24. lingxingapi/fields.py +50 -0
  25. lingxingapi/finance/__init__.py +0 -0
  26. lingxingapi/finance/api.py +3091 -0
  27. lingxingapi/finance/param.py +616 -0
  28. lingxingapi/finance/route.py +44 -0
  29. lingxingapi/finance/schema.py +1243 -0
  30. lingxingapi/product/__init__.py +0 -0
  31. lingxingapi/product/api.py +2643 -0
  32. lingxingapi/product/param.py +934 -0
  33. lingxingapi/product/route.py +49 -0
  34. lingxingapi/product/schema.py +1004 -0
  35. lingxingapi/purchase/__init__.py +0 -0
  36. lingxingapi/purchase/api.py +496 -0
  37. lingxingapi/purchase/param.py +126 -0
  38. lingxingapi/purchase/route.py +11 -0
  39. lingxingapi/purchase/schema.py +215 -0
  40. lingxingapi/sales/__init__.py +0 -0
  41. lingxingapi/sales/api.py +3200 -0
  42. lingxingapi/sales/param.py +723 -0
  43. lingxingapi/sales/route.py +70 -0
  44. lingxingapi/sales/schema.py +1718 -0
  45. lingxingapi/source/__init__.py +0 -0
  46. lingxingapi/source/api.py +1799 -0
  47. lingxingapi/source/param.py +176 -0
  48. lingxingapi/source/route.py +38 -0
  49. lingxingapi/source/schema.py +1011 -0
  50. lingxingapi/tools/__init__.py +0 -0
  51. lingxingapi/tools/api.py +291 -0
  52. lingxingapi/tools/param.py +73 -0
  53. lingxingapi/tools/route.py +8 -0
  54. lingxingapi/tools/schema.py +169 -0
  55. lingxingapi/utils.py +411 -0
  56. lingxingapi/warehourse/__init__.py +0 -0
  57. lingxingapi/warehourse/api.py +1778 -0
  58. lingxingapi/warehourse/param.py +506 -0
  59. lingxingapi/warehourse/route.py +28 -0
  60. lingxingapi/warehourse/schema.py +926 -0
  61. lingxingapi-1.0.0.dist-info/METADATA +67 -0
  62. lingxingapi-1.0.0.dist-info/RECORD +65 -0
  63. lingxingapi-1.0.0.dist-info/WHEEL +5 -0
  64. lingxingapi-1.0.0.dist-info/licenses/LICENSE +22 -0
  65. lingxingapi-1.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,192 @@
1
+ # -*- coding: utf-8 -*-
2
+ from typing import Optional
3
+ from pydantic import ValidationInfo, Field, field_validator
4
+ from lingxingapi import utils
5
+ from lingxingapi.base.param import Parameter, PageOffestAndLength
6
+ from lingxingapi.fields import NonEmptyStr, CountryCode, NonNegativeInt
7
+
8
+
9
+ # 基础数据 ----------------------------------------------------------------------------------------------------------------------
10
+ # . Ads Profiles
11
+ class AdProfiles(PageOffestAndLength):
12
+ """查询广告账号参数"""
13
+
14
+ profile_type: NonEmptyStr = Field(alias="type")
15
+
16
+
17
+ # . Ads Entities (Portfolios, Campaigns, etc.)
18
+ class AdEntities(PageOffestAndLength):
19
+ """查询广告组合参数"""
20
+
21
+ # 领星店铺ID
22
+ sid: Optional[NonNegativeInt] = None
23
+ # 亚马逊店铺ID [广告帐号ID] (AdsProfiles.profile_id)
24
+ profile_id: NonNegativeInt
25
+ # 广告组合状态 ("enabled", "paused", "archived" | 默认所有)
26
+ state: Optional[NonEmptyStr] = None
27
+ # 分页游标, 上次分页结果中的next_token
28
+ next_token: Optional[NonEmptyStr] = None
29
+
30
+
31
+ # . SP Negative Targets
32
+ class SpNegativeTargeting(AdEntities):
33
+ """查询 SP 否定投放参数"""
34
+
35
+ # 否定投放类型 ("keyword", "target")
36
+ targeting_type: NonEmptyStr = Field(alias="target_type")
37
+ # 广告活动ID
38
+ campaign_id: Optional[NonNegativeInt] = None
39
+
40
+
41
+ # . SB Targets
42
+ class SbTargeting(AdEntities):
43
+ """查询 SP 广告投放目标参数"""
44
+
45
+ # SB广告类型 ('SB', 'SBV', 'ALL')
46
+ ad_type: NonEmptyStr = Field(alias="ads_type")
47
+ # 投放目标类型 ('keyword', 'product', 'ALL')
48
+ targeting_type: NonEmptyStr
49
+
50
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
51
+ @field_validator("targeting_type", mode="before")
52
+ @classmethod
53
+ def _validate_targeting_type(cls, v: str) -> str:
54
+ return "producttarget" if v == "product" else v
55
+
56
+
57
+ # 报告 -------------------------------------------------------------------------------------------------------------------------
58
+ # . Ad Reports
59
+ class AdReports(AdEntities):
60
+ """查询广告报告参数"""
61
+
62
+ # 报告日期
63
+ report_date: str
64
+ # 是否展示完整归因期信息 (0: 否, 1: 是 | 默认: 0)
65
+ show_detail: Optional[NonNegativeInt] = None
66
+
67
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
68
+ @field_validator("report_date", mode="before")
69
+ @classmethod
70
+ def _validate_report_date(cls, v: str) -> str:
71
+ dt = utils.validate_datetime(v, False, "广告报告日期")
72
+ return "%04d-%02d-%02d" % (dt.year, dt.month, dt.day)
73
+
74
+
75
+ # . Ad Hour Reports
76
+ class AdHourData(Parameter):
77
+ """查询广告的小时报告参数"""
78
+
79
+ # 报告日期 (只能查询最近60天内的数据)
80
+ report_date: str
81
+ # 广告活动ID
82
+ campaign_id: NonNegativeInt
83
+ # 聚合纬度
84
+ agg_dimension: Optional[NonEmptyStr] = None
85
+
86
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
87
+ @field_validator("report_date", mode="before")
88
+ @classmethod
89
+ def _validate_report_date(cls, v: str) -> str:
90
+ dt = utils.validate_datetime(v, False, "广告报告日期")
91
+ return "%04d-%02d-%02d" % (dt.year, dt.month, dt.day)
92
+
93
+
94
+ # . SB Target Reports
95
+ class SbTargetingReports(AdReports):
96
+ """查询 SB 广告投放目标报告参数"""
97
+
98
+ # SB广告类型 ('SB', 'SBV', 'ALL')
99
+ ad_type: NonEmptyStr = Field(alias="sponsored_type")
100
+ # 投放目标类型 ('keyword', 'product', 'ALL')
101
+ targeting_type: NonEmptyStr = Field(alias="target_type")
102
+
103
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
104
+ @field_validator("targeting_type", mode="before")
105
+ @classmethod
106
+ def _validate_targeting_type(cls, v: str) -> str:
107
+ return "producttarget" if v == "product" else v
108
+
109
+
110
+ # . SB Query Word Reports
111
+ class SbQueryWordReports(AdReports):
112
+ """查询 SB 用户搜索词报告参数"""
113
+
114
+ targeting_type: NonEmptyStr = Field(alias="target_type")
115
+
116
+
117
+ # . DSP Reports
118
+ class DspReports(PageOffestAndLength):
119
+ """查询 DSP 报告参数"""
120
+
121
+ # 开始日期, 双闭区间, 时间间隔最长不超过90天
122
+ start_date: str
123
+ # 结束日期, 双闭区间, 时间间隔最长不超过90天
124
+ end_date: str
125
+ # 亚马逊店铺ID [广告帐号ID] (AdsProfiles.profile_id)
126
+ profile_id: NonNegativeInt
127
+
128
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
129
+ @field_validator("start_date", "end_date", mode="before")
130
+ @classmethod
131
+ def _validate_date(cls, v: str, info: ValidationInfo) -> str:
132
+ dt = utils.validate_datetime(v, False, "DSP报告日期 %s" % info.field_name)
133
+ return "%04d-%02d-%02d" % (dt.year, dt.month, dt.day)
134
+
135
+
136
+ # 报表下载 ----------------------------------------------------------------------------------------------------------------------
137
+ # . Download ABA Report
138
+ class DownloadAbaReport(Parameter):
139
+ """查询 Amazon ABA 报表下载参数"""
140
+
141
+ # 国家代码
142
+ country_code: CountryCode = Field(alias="country")
143
+ # 开始日期, 报表开始日期, 自动会调整为当周周日
144
+ start_date: str = Field(alias="data_start_time")
145
+
146
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
147
+ @field_validator("start_date", mode="before")
148
+ @classmethod
149
+ def _validate_start_date(cls, v: str) -> str:
150
+ dt = utils.validate_datetime(v, False, "ABA报表开始日期").to_sunday()
151
+ return "%04d-%02d-%02d" % (dt.year, dt.month, dt.day)
152
+
153
+
154
+ # 操作日志 ----------------------------------------------------------------------------------------------------------------------
155
+ # . Ads Operation Logs
156
+ class AdsOperationLogs(PageOffestAndLength):
157
+ """查询广告操作日志参数"""
158
+
159
+ # 领星店铺ID
160
+ sid: NonNegativeInt
161
+ # 开始日期, 日期间隔不能超过1个月
162
+ start_date: str
163
+ # 结束日期, 日期间隔不能超过1个月
164
+ end_date: str
165
+ # 广告类型 ('sp', 'sb', 'sd')
166
+ ad_type: str = Field(alias="sponsored_type")
167
+ # 操作对象
168
+ # - campaigns 广告活动
169
+ # - adGroups 广告组
170
+ # - productAds 广告
171
+ # - keywords 关键词
172
+ # - negativeKeywords 否定关键词
173
+ # - targets 商品投放
174
+ # - negativeTargets 否定商品投放
175
+ # - profiles 预算设置
176
+ operation_target: NonEmptyStr = Field(alias="operate_type")
177
+ # 日志来源
178
+ log_source: NonEmptyStr
179
+
180
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
181
+ @field_validator("start_date", "end_date", mode="before")
182
+ @classmethod
183
+ def _validate_date(cls, v: str, info: ValidationInfo) -> str:
184
+ dt = utils.validate_datetime(v, False, "广告操作日志日期 %s" % info.field_name)
185
+ return "%04d-%02d-%02d" % (dt.year, dt.month, dt.day)
186
+
187
+ @field_validator("ad_type", mode="before")
188
+ @classmethod
189
+ def _validate_ad_type(cls, v) -> str:
190
+ if not isinstance(v, str):
191
+ raise ValueError("广告类型必须是字符串")
192
+ return v.lower()
@@ -0,0 +1,134 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # fmt: off
4
+ # 基础数据 ----------------------------------------------------------------------------------------------------------------------
5
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/dspAccountList
6
+ AD_PROFILES: str = "/basicOpen/baseData/account/list"
7
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/portfolios
8
+ PORTFOLIOS: str = "/pb/openapi/newad/portfolios"
9
+
10
+ # . 基础数据 - Sponsored Products
11
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/spCampaigns
12
+ SP_CAMPAIGNS: str = "/pb/openapi/newad/spCampaigns"
13
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/spAdGroups
14
+ SP_AD_GROUPS: str = "/pb/openapi/newad/spAdGroups"
15
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/spProductAds
16
+ SP_PRODUCTS: str = "/pb/openapi/newad/spProductAds"
17
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/spKeywords
18
+ SP_KEYWORDS: str = "/pb/openapi/newad/spKeywords"
19
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/spTargets
20
+ SP_TARGETS: str = "/pb/openapi/newad/spTargets"
21
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/spNegativeTargetsOrKeywords
22
+ SP_NEGATIVE_TARGETING: str = "/pb/openapi/newad/spNegativeTargetsOrKeywords"
23
+
24
+ # . 基础数据 - Sponsored Brands
25
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/hsaCampaigns
26
+ SB_CAMPAIGNS: str = "/pb/openapi/newad/hsaCampaigns"
27
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/hsaAdGroups
28
+ SB_AD_GROUPS: str = "/pb/openapi/newad/hsaAdGroups"
29
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/sbAdHasProductAds
30
+ SB_CREATIVES: str = "/pb/openapi/newad/hsaProductAds"
31
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/sbTargeting
32
+ SB_TARGETING: str = "/pb/openapi/newad/sbTargeting"
33
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/hsaNegativeKeywords
34
+ SB_NEGATIVE_KEYWORDS: str = "/pb/openapi/newad/hsaNegativeKeywords"
35
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/hsaNegativeTargets
36
+ SB_NEGATIVE_TARGETS: str = "/pb/openapi/newad/hsaNegativeTargets"
37
+
38
+ # . 基础数据 - Sponsored Display
39
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/sdCampaigns
40
+ SD_CAMPAIGNS: str = "/pb/openapi/newad/sdCampaigns"
41
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/sdAdGroups
42
+ SD_AD_GROUPS: str = "/pb/openapi/newad/sdAdGroups"
43
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/sdProductAds
44
+ SD_PRODUCTS: str = "/pb/openapi/newad/sdProductAds"
45
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/sdTargets
46
+ SD_TARGETS: str = "/pb/openapi/newad/sdTargets"
47
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/sdNegativeTargets
48
+ SD_NEGATIVE_TARGETS: str = "/pb/openapi/newad/sdNegativeTargets"
49
+
50
+ # 报告 -------------------------------------------------------------------------------------------------------------------------
51
+ # . 报告 - Sponsored Products
52
+ # https://apidoc.lingxing.com/#/docs/newAd/report/spCampaignReports
53
+ SP_CAMPAIGN_REPORTS: str = "/pb/openapi/newad/spCampaignReports"
54
+ # https://apidoc.lingxing.com/#/docs/newAd/report/spCampaignHourData
55
+ SP_CAMPAIGN_HOUR_DATA: str = "/pb/openapi/newad/spCampaignHourData"
56
+ # https://apidoc.lingxing.com/#/docs/newAd/report/campaignPlacementReports
57
+ SP_PLACEMENT_REPORTS: str = "/pb/openapi/newad/campaignPlacementReports"
58
+ # https://apidoc.lingxing.com/#/docs/newAd/report/spAdPlacementHourData
59
+ SP_PLACEMENT_HOUR_DATA: str = "/pb/openapi/newad/spAdPlacementHourData"
60
+ # https://apidoc.lingxing.com/#/docs/newAd/report/spAdGroupReports
61
+ SP_AD_GROUP_REPORTS: str = "/pb/openapi/newad/spAdGroupReports"
62
+ # https://apidoc.lingxing.com/#/docs/newAd/report/spAdGroupHourData
63
+ SP_AD_GROUP_HOUR_DATA: str = "/pb/openapi/newad/spAdGroupHourData"
64
+ # https://apidoc.lingxing.com/#/docs/newAd/report/spProductAdReports
65
+ SP_PRODUCT_REPORTS: str = "/pb/openapi/newad/spProductAdReports"
66
+ # https://apidoc.lingxing.com/#/docs/newAd/report/spAdvertiseHourData
67
+ SP_PRODUCT_KEYWORD_HOUR_DATA: str = "/pb/openapi/newad/spAdvertiseHourData"
68
+ # https://apidoc.lingxing.com/#/docs/newAd/report/spKeywordReports
69
+ SP_KEYWORD_REPORTS: str = "/pb/openapi/newad/spKeywordReports"
70
+ # https://apidoc.lingxing.com/#/docs/newAd/report/spTargetReports
71
+ SP_TARGET_REPORTS: str = "/pb/openapi/newad/spTargetReports"
72
+ # https://apidoc.lingxing.com/#/docs/newAd/report/spTargetHourData
73
+ SP_TARGET_HOUR_DATA: str = "/pb/openapi/newad/spTargetHourData"
74
+ # https://apidoc.lingxing.com/#/docs/newAd/report/queryWordReports
75
+ SP_QUERY_WORD_REPORTS: str = "/pb/openapi/newad/queryWordReports"
76
+
77
+ # . 报告 - Sponsored Brands
78
+ # https://apidoc.lingxing.com/#/docs/newAd/report/hsaCampaignReports
79
+ SB_CAMPAIGN_REPORTS: str = "/pb/openapi/newad/hsaCampaignReports"
80
+ # https://apidoc.lingxing.com/#/docs/newAd/report/sbCampaignHourData
81
+ SB_CAMPAIGN_HOUR_DATA: str = "/pb/openapi/newad/sbCampaignHourData"
82
+ # https://apidoc.lingxing.com/#/docs/newAd/report/hsaCampaignPlacementReports
83
+ SB_PLACEMENT_REPORTS: str = "/pb/openapi/newad/hsaCampaignPlacementReports"
84
+ # https://apidoc.lingxing.com/#/docs/newAd/report/sbAdPlacementHourData
85
+ SB_PLACEMENT_HOUR_DATA: str = "/pb/openapi/newad/sbAdPlacementHourData"
86
+ # https://apidoc.lingxing.com/#/docs/newAd/report/hsaAdGroupReports
87
+ SB_AD_GROUP_REPORTS: str = "/pb/openapi/newad/hsaAdGroupReports"
88
+ # https://apidoc.lingxing.com/#/docs/newAd/report/sbAdGroupHourData
89
+ SB_AD_GROUP_HOUR_DATA: str = "/pb/openapi/newad/sbAdGroupHourData"
90
+ # https://apidoc.lingxing.com/#/docs/newAd/report/listHsaProductAdReport
91
+ SB_CREATIVE_REPORTS: str = "/pb/openapi/newad/listHsaProductAdReport"
92
+ # https://apidoc.lingxing.com/#/docs/newAd/report/listHsaTargetingReport
93
+ SB_TARGETING_REPORTS: str = "/pb/openapi/newad/listHsaTargetingReport"
94
+ # https://apidoc.lingxing.com/#/docs/newAd/report/sbTargetHourData
95
+ SB_TARGETING_HOUR_DATA: str = "/pb/openapi/newad/sbTargetHourData"
96
+ # https://apidoc.lingxing.com/#/docs/newAd/report/hsaQueryWordReports
97
+ SB_QUERY_WORD_REPORTS: str = "/pb/openapi/newad/hsaQueryWordReports"
98
+ # https://apidoc.lingxing.com/#/docs/newAd/report/hsaPurchasedAsinReports
99
+ SB_ASIN_ATTRIBUTION_REPORTS: str = "/pb/openapi/newad/hsaPurchasedAsinReports"
100
+ # https://apidoc.lingxing.com/#/docs/newAd/baseData/newadsbDivideAsinReports
101
+ SB_COST_ALLOCATION_REPORTS: str = "/pb/openapi/newad/sbDivideAsinReports"
102
+
103
+ # . 报告 - Sponsored Display
104
+ # https://apidoc.lingxing.com/#/docs/newAd/report/sdCampaignReports
105
+ SD_CAMPAIGN_REPORTS: str = "/pb/openapi/newad/sdCampaignReports"
106
+ # https://apidoc.lingxing.com/#/docs/newAd/report/sdCampaignHourData
107
+ SD_CAMPAIGN_HOUR_DATA: str = "/pb/openapi/newad/sdCampaignHourData"
108
+ # https://apidoc.lingxing.com/#/docs/newAd/report/sdAdGroupReports
109
+ SD_AD_GROUP_REPORTS: str = "/pb/openapi/newad/sdAdGroupReports"
110
+ # https://apidoc.lingxing.com/#/docs/newAd/report/sdAdGroupHourData
111
+ SD_AD_GROUP_HOUR_DATA: str = "/pb/openapi/newad/sdAdGroupHourData"
112
+ # https://apidoc.lingxing.com/#/docs/newAd/report/sdProductAdReports
113
+ SD_PRODUCT_REPORTS: str = "/pb/openapi/newad/sdProductAdReports"
114
+ # https://apidoc.lingxing.com/#/docs/newAd/report/sdAdvertiseHourData
115
+ SD_PRODUCT_HOUR_DATA: str = "/pb/openapi/newad/sdAdvertiseHourData"
116
+ # https://apidoc.lingxing.com/#/docs/newAd/report/sdTargetReports
117
+ SD_TARGET_REPORTS: str = "/pb/openapi/newad/sdTargetReports"
118
+ # https://apidoc.lingxing.com/#/docs/newAd/report/sdTargetHourData
119
+ SD_TARGET_HOUR_DATA: str = "/pb/openapi/newad/sdTargetHourData"
120
+ # https://apidoc.lingxing.com/#/docs/newAd/report/sdMatchTargetReports
121
+ SD_MATCHED_TARGET_REPORTS: str = "/pb/openapi/newad/sdMatchTargetReports"
122
+
123
+ # . 报告 - Demand-Side Platform (DSP)
124
+ # https://apidoc.lingxing.com/#/docs/newAd/report/dspReportOrderList
125
+ DSP_REPORTS: str = "/basicOpen/dspReport/order/list"
126
+
127
+
128
+ # 报表下载 ----------------------------------------------------------------------------------------------------------------------
129
+ # https://apidoc.lingxing.com/#/docs/newAd/reportDownload/abaReport
130
+ DOWNLOAD_ABA_REPORT: str = "/pb/openapi/newad/abaReport"
131
+
132
+ # 操作日志 ----------------------------------------------------------------------------------------------------------------------
133
+ # https://apidoc.lingxing.com/#/docs/newAd/apiLogStandard
134
+ ADS_OPERATION_LOGS: str = "/pb/openapi/newad/apiLogStandard"