tccli-intl-en 3.0.1265.1__py2.py3-none-any.whl → 3.1.1.1__py2.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.
Files changed (186) hide show
  1. tccli/__init__.py +1 -1
  2. tccli/argument.py +1 -1
  3. tccli/services/__init__.py +5 -1
  4. tccli/services/advisor/advisor_client.py +10 -4
  5. tccli/services/aiart/aiart_client.py +5 -2
  6. tccli/services/ams/ams_client.py +20 -8
  7. tccli/services/antiddos/antiddos_client.py +350 -140
  8. tccli/services/apigateway/apigateway_client.py +465 -186
  9. tccli/services/apm/apm_client.py +835 -68
  10. tccli/services/apm/v20210622/api.json +3936 -1145
  11. tccli/services/apm/v20210622/examples.json +133 -23
  12. tccli/services/asr/asr_client.py +10 -4
  13. tccli/services/autoscaling/autoscaling_client.py +290 -116
  14. tccli/services/autoscaling/v20180419/api.json +1 -1
  15. tccli/services/batch/batch_client.py +140 -56
  16. tccli/services/bi/bi_client.py +120 -48
  17. tccli/services/billing/billing_client.py +210 -84
  18. tccli/services/cam/cam_client.py +405 -162
  19. tccli/services/captcha/captcha_client.py +5 -2
  20. tccli/services/car/car_client.py +165 -66
  21. tccli/services/cbs/cbs_client.py +190 -76
  22. tccli/services/ccc/ccc_client.py +515 -146
  23. tccli/services/ccc/v20200210/api.json +511 -27
  24. tccli/services/ccc/v20200210/examples.json +24 -0
  25. tccli/services/cdb/cdb_client.py +665 -266
  26. tccli/services/cdc/cdc_client.py +100 -40
  27. tccli/services/cdn/cdn_client.py +220 -88
  28. tccli/services/cdwdoris/cdwdoris_client.py +385 -154
  29. tccli/services/cdwpg/cdwpg_client.py +120 -48
  30. tccli/services/cdz/cdz_client.py +5 -2
  31. tccli/services/cfg/cfg_client.py +80 -32
  32. tccli/services/cfs/cfs_client.py +195 -78
  33. tccli/services/cfw/cfw_client.py +330 -132
  34. tccli/services/chdfs/chdfs_client.py +145 -58
  35. tccli/services/ciam/ciam_client.py +80 -32
  36. tccli/services/ckafka/ckafka_client.py +629 -131
  37. tccli/services/ckafka/v20190819/api.json +2749 -1470
  38. tccli/services/ckafka/v20190819/examples.json +209 -155
  39. tccli/services/clb/clb_client.py +415 -166
  40. tccli/services/clb/v20180317/api.json +1022 -647
  41. tccli/services/clb/v20180317/examples.json +19 -19
  42. tccli/services/cloudaudit/cloudaudit_client.py +90 -36
  43. tccli/services/cls/cls_client.py +434 -173
  44. tccli/services/cmq/cmq_client.py +10 -4
  45. tccli/services/config/config_client.py +30 -12
  46. tccli/services/controlcenter/controlcenter_client.py +5 -2
  47. tccli/services/csip/csip_client.py +170 -68
  48. tccli/services/ctsdb/ctsdb_client.py +10 -4
  49. tccli/services/cvm/cvm_client.py +420 -168
  50. tccli/services/cvm/v20170312/api.json +280 -174
  51. tccli/services/cvm/v20170312/examples.json +116 -116
  52. tccli/services/cwp/cwp_client.py +2325 -930
  53. tccli/services/cynosdb/cynosdb_client.py +1887 -577
  54. tccli/services/cynosdb/v20190107/api.json +11763 -7697
  55. tccli/services/cynosdb/v20190107/examples.json +132 -4
  56. tccli/services/dataintegration/dataintegration_client.py +5 -2
  57. tccli/services/dayu/dayu_client.py +515 -206
  58. tccli/services/dbbrain/dbbrain_client.py +210 -84
  59. tccli/services/dc/dc_client.py +90 -36
  60. tccli/services/dcdb/dcdb_client.py +310 -124
  61. tccli/services/dlc/dlc_client.py +808 -216
  62. tccli/services/dlc/v20210125/api.json +534 -13
  63. tccli/services/dlc/v20210125/examples.json +40 -0
  64. tccli/services/dms/dms_client.py +10 -4
  65. tccli/services/dnspod/dnspod_client.py +200 -80
  66. tccli/services/domain/domain_client.py +120 -48
  67. tccli/services/dts/dts_client.py +415 -166
  68. tccli/services/eb/eb_client.py +130 -52
  69. tccli/services/ecdn/ecdn_client.py +75 -30
  70. tccli/services/ecm/ecm_client.py +620 -248
  71. tccli/services/eiam/eiam_client.py +200 -80
  72. tccli/services/emr/emr_client.py +385 -154
  73. tccli/services/es/es_client.py +105 -42
  74. tccli/services/facefusion/facefusion_client.py +15 -6
  75. tccli/services/faceid/faceid_client.py +95 -38
  76. tccli/services/faceid/v20180301/examples.json +2 -2
  77. tccli/services/gaap/gaap_client.py +440 -176
  78. tccli/services/gme/gme_client.py +50 -20
  79. tccli/services/gpm/gpm_client.py +90 -36
  80. tccli/services/gse/gse_client.py +110 -44
  81. tccli/services/gwlb/gwlb_client.py +90 -36
  82. tccli/services/iai/iai_client.py +145 -58
  83. tccli/services/iap/iap_client.py +30 -12
  84. tccli/services/ims/ims_client.py +5 -2
  85. tccli/services/intlpartnersmgt/intlpartnersmgt_client.py +210 -84
  86. tccli/services/iotcloud/iotcloud_client.py +100 -40
  87. tccli/services/ip/ip_client.py +30 -12
  88. tccli/services/kms/kms_client.py +340 -136
  89. tccli/services/lcic/lcic_client.py +265 -106
  90. tccli/services/lighthouse/lighthouse_client.py +370 -148
  91. tccli/services/live/live_client.py +600 -240
  92. tccli/services/lke/lke_client.py +450 -180
  93. tccli/services/lkeap/lkeap_client.py +142 -12
  94. tccli/services/lkeap/v20240522/api.json +263 -0
  95. tccli/services/lkeap/v20240522/examples.json +35 -1
  96. tccli/services/mariadb/mariadb_client.py +250 -100
  97. tccli/services/mdc/mdc_client.py +90 -36
  98. tccli/services/mdl/mdl_client.py +165 -66
  99. tccli/services/mdl/v20200326/api.json +186 -12
  100. tccli/services/mdl/v20200326/examples.json +16 -16
  101. tccli/services/mdp/mdp_client.py +416 -124
  102. tccli/services/mdp/v20200527/api.json +146 -14
  103. tccli/services/mdp/v20200527/examples.json +95 -79
  104. tccli/services/message/__init__.py +4 -0
  105. tccli/services/message/message_client.py +210 -0
  106. tccli/services/message/v20181225/api.json +72 -0
  107. tccli/services/message/v20181225/examples.json +13 -0
  108. tccli/services/mongodb/mongodb_client.py +369 -58
  109. tccli/services/mongodb/v20190725/api.json +811 -226
  110. tccli/services/mongodb/v20190725/examples.json +54 -22
  111. tccli/services/monitor/monitor_client.py +1008 -296
  112. tccli/services/monitor/v20180724/api.json +657 -8
  113. tccli/services/monitor/v20180724/examples.json +152 -4
  114. tccli/services/mps/mps_client.py +684 -184
  115. tccli/services/mps/v20190612/api.json +1656 -222
  116. tccli/services/mps/v20190612/examples.json +60 -10
  117. tccli/services/msp/msp_client.py +35 -14
  118. tccli/services/ocr/ocr_client.py +246 -76
  119. tccli/services/ocr/v20181119/api.json +119 -10
  120. tccli/services/ocr/v20181119/examples.json +8 -0
  121. tccli/services/omics/omics_client.py +100 -40
  122. tccli/services/organization/organization_client.py +580 -232
  123. tccli/services/postgres/postgres_client.py +455 -182
  124. tccli/services/privatedns/privatedns_client.py +155 -62
  125. tccli/services/pts/pts_client.py +240 -96
  126. tccli/services/quota/quota_client.py +229 -2
  127. tccli/services/quota/v20241204/api.json +451 -2
  128. tccli/services/quota/v20241204/examples.json +42 -3
  129. tccli/services/rce/rce_client.py +5 -2
  130. tccli/services/redis/redis_client.py +545 -218
  131. tccli/services/redis/v20180412/api.json +225 -113
  132. tccli/services/redis/v20180412/examples.json +19 -19
  133. tccli/services/region/region_client.py +15 -6
  134. tccli/services/rum/rum_client.py +300 -120
  135. tccli/services/scf/scf_client.py +210 -84
  136. tccli/services/ses/ses_client.py +145 -58
  137. tccli/services/sms/sms_client.py +90 -36
  138. tccli/services/sqlserver/sqlserver_client.py +695 -278
  139. tccli/services/ssl/ssl_client.py +190 -76
  140. tccli/services/ssm/ssm_client.py +120 -48
  141. tccli/services/sts/sts_client.py +25 -10
  142. tccli/services/tag/tag_client.py +150 -60
  143. tccli/services/tat/tat_client.py +95 -38
  144. tccli/services/tbaas/tbaas_client.py +20 -8
  145. tccli/services/tcaplusdb/tcaplusdb_client.py +260 -104
  146. tccli/services/tchd/tchd_client.py +5 -2
  147. tccli/services/tcmpp/tcmpp_client.py +520 -208
  148. tccli/services/tcr/tcr_client.py +380 -152
  149. tccli/services/tcsas/tcsas_client.py +295 -118
  150. tccli/services/tcsas/v20250106/api.json +101 -61
  151. tccli/services/tcsas/v20250106/examples.json +2 -2
  152. tccli/services/tcss/tcss_client.py +1650 -660
  153. tccli/services/tdid/tdid_client.py +240 -96
  154. tccli/services/tdmq/tdmq_client.py +470 -188
  155. tccli/services/tem/tem_client.py +280 -112
  156. tccli/services/teo/teo_client.py +1365 -483
  157. tccli/services/teo/v20220901/api.json +354 -39
  158. tccli/services/teo/v20220901/examples.json +24 -0
  159. tccli/services/tione/tione_client.py +5 -2
  160. tccli/services/tiw/tiw_client.py +255 -102
  161. tccli/services/tke/tke_client.py +690 -276
  162. tccli/services/tms/tms_client.py +5 -2
  163. tccli/services/tmt/tmt_client.py +5 -2
  164. tccli/services/trabbit/trabbit_client.py +145 -58
  165. tccli/services/trro/trro_client.py +95 -38
  166. tccli/services/trtc/trtc_client.py +255 -102
  167. tccli/services/trtc/v20190722/api.json +11 -11
  168. tccli/services/trtc/v20190722/examples.json +7 -7
  169. tccli/services/tts/tts_client.py +5 -2
  170. tccli/services/vclm/vclm_client.py +10 -4
  171. tccli/services/vm/vm_client.py +20 -8
  172. tccli/services/vod/vod_client.py +895 -358
  173. tccli/services/vpc/v20170312/api.json +970 -75
  174. tccli/services/vpc/v20170312/examples.json +106 -10
  175. tccli/services/vpc/vpc_client.py +2159 -644
  176. tccli/services/waf/waf_client.py +535 -214
  177. tccli/services/wedata/v20250806/api.json +13644 -0
  178. tccli/services/wedata/v20250806/examples.json +621 -0
  179. tccli/services/wedata/wedata_client.py +6067 -1263
  180. tccli/services/yunjing/yunjing_client.py +355 -142
  181. {tccli_intl_en-3.0.1265.1.dist-info → tccli_intl_en-3.1.1.1.dist-info}/METADATA +4 -7
  182. {tccli_intl_en-3.0.1265.1.dist-info → tccli_intl_en-3.1.1.1.dist-info}/RECORD +186 -180
  183. {tccli_intl_en-3.0.1265.1.dist-info → tccli_intl_en-3.1.1.1.dist-info}/WHEEL +1 -1
  184. {tccli_intl_en-3.0.1265.1.dist-info → tccli_intl_en-3.1.1.1.dist-info}/entry_points.txt +0 -1
  185. {tccli_intl_en-3.0.1265.1.dist-info → tccli_intl_en-3.1.1.1.dist-info}/LICENSE +0 -0
  186. {tccli_intl_en-3.0.1265.1.dist-info → tccli_intl_en-3.1.1.1.dist-info}/top_level.txt +0 -0
@@ -27,7 +27,10 @@ def doCreateReconstructDocumentFlow(args, parsed_globals):
27
27
  g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
28
28
  g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
29
29
  )
30
- elif os.getenv(OptionsDefine.ENV_TKE_REGION) and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
30
+ elif os.getenv(OptionsDefine.ENV_TKE_REGION) \
31
+ and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) \
32
+ and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) \
33
+ and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
31
34
  cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
32
35
  else:
33
36
  cred = credential.Credential(
@@ -39,7 +42,7 @@ def doCreateReconstructDocumentFlow(args, parsed_globals):
39
42
  endpoint=g_param[OptionsDefine.Endpoint],
40
43
  proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
41
44
  )
42
- profile = ClientProfile(httpProfile=http_profile, signMethod="HmacSHA256")
45
+ profile = ClientProfile(httpProfile=http_profile, signMethod="TC3-HMAC-SHA256")
43
46
  if g_param[OptionsDefine.Language]:
44
47
  profile.language = g_param[OptionsDefine.Language]
45
48
  mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
@@ -79,7 +82,10 @@ def doGetSplitDocumentResult(args, parsed_globals):
79
82
  g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
80
83
  g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
81
84
  )
82
- elif os.getenv(OptionsDefine.ENV_TKE_REGION) and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
85
+ elif os.getenv(OptionsDefine.ENV_TKE_REGION) \
86
+ and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) \
87
+ and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) \
88
+ and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
83
89
  cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
84
90
  else:
85
91
  cred = credential.Credential(
@@ -91,7 +97,7 @@ def doGetSplitDocumentResult(args, parsed_globals):
91
97
  endpoint=g_param[OptionsDefine.Endpoint],
92
98
  proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
93
99
  )
94
- profile = ClientProfile(httpProfile=http_profile, signMethod="HmacSHA256")
100
+ profile = ClientProfile(httpProfile=http_profile, signMethod="TC3-HMAC-SHA256")
95
101
  if g_param[OptionsDefine.Language]:
96
102
  profile.language = g_param[OptionsDefine.Language]
97
103
  mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
@@ -131,7 +137,10 @@ def doCreateSplitDocumentFlow(args, parsed_globals):
131
137
  g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
132
138
  g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
133
139
  )
134
- elif os.getenv(OptionsDefine.ENV_TKE_REGION) and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
140
+ elif os.getenv(OptionsDefine.ENV_TKE_REGION) \
141
+ and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) \
142
+ and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) \
143
+ and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
135
144
  cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
136
145
  else:
137
146
  cred = credential.Credential(
@@ -143,7 +152,7 @@ def doCreateSplitDocumentFlow(args, parsed_globals):
143
152
  endpoint=g_param[OptionsDefine.Endpoint],
144
153
  proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
145
154
  )
146
- profile = ClientProfile(httpProfile=http_profile, signMethod="HmacSHA256")
155
+ profile = ClientProfile(httpProfile=http_profile, signMethod="TC3-HMAC-SHA256")
147
156
  if g_param[OptionsDefine.Language]:
148
157
  profile.language = g_param[OptionsDefine.Language]
149
158
  mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
@@ -173,6 +182,61 @@ def doCreateSplitDocumentFlow(args, parsed_globals):
173
182
  FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
174
183
 
175
184
 
185
+ def doReconstructDocumentSSE(args, parsed_globals):
186
+ g_param = parse_global_arg(parsed_globals)
187
+
188
+ if g_param[OptionsDefine.UseCVMRole.replace('-', '_')]:
189
+ cred = credential.CVMRoleCredential()
190
+ elif g_param[OptionsDefine.RoleArn.replace('-', '_')] and g_param[OptionsDefine.RoleSessionName.replace('-', '_')]:
191
+ cred = credential.STSAssumeRoleCredential(
192
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
193
+ g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
194
+ )
195
+ elif os.getenv(OptionsDefine.ENV_TKE_REGION) \
196
+ and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) \
197
+ and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) \
198
+ and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
199
+ cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
200
+ else:
201
+ cred = credential.Credential(
202
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.Token]
203
+ )
204
+ http_profile = HttpProfile(
205
+ reqTimeout=60 if g_param[OptionsDefine.Timeout] is None else int(g_param[OptionsDefine.Timeout]),
206
+ reqMethod="POST",
207
+ endpoint=g_param[OptionsDefine.Endpoint],
208
+ proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
209
+ )
210
+ profile = ClientProfile(httpProfile=http_profile, signMethod="TC3-HMAC-SHA256")
211
+ if g_param[OptionsDefine.Language]:
212
+ profile.language = g_param[OptionsDefine.Language]
213
+ mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
214
+ client = mod.LkeapClient(cred, g_param[OptionsDefine.Region], profile)
215
+ client._sdkVersion += ("_CLI_" + __version__)
216
+ models = MODELS_MAP[g_param[OptionsDefine.Version]]
217
+ model = models.ReconstructDocumentSSERequest()
218
+ model.from_json_string(json.dumps(args))
219
+ start_time = time.time()
220
+ while True:
221
+ rsp = client.ReconstructDocumentSSE(model)
222
+ result = rsp.to_json_string()
223
+ try:
224
+ json_obj = json.loads(result)
225
+ except TypeError as e:
226
+ json_obj = json.loads(result.decode('utf-8')) # python3.3
227
+ if not g_param[OptionsDefine.Waiter] or search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj) == g_param['OptionsDefine.WaiterInfo']['to']:
228
+ break
229
+ cur_time = time.time()
230
+ if cur_time - start_time >= g_param['OptionsDefine.WaiterInfo']['timeout']:
231
+ raise ClientError('Request timeout, wait `%s` to `%s` timeout, last request is %s' %
232
+ (g_param['OptionsDefine.WaiterInfo']['expr'], g_param['OptionsDefine.WaiterInfo']['to'],
233
+ search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj)))
234
+ else:
235
+ print('Inquiry result is %s.' % search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj))
236
+ time.sleep(g_param['OptionsDefine.WaiterInfo']['interval'])
237
+ FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
238
+
239
+
176
240
  def doRunRerank(args, parsed_globals):
177
241
  g_param = parse_global_arg(parsed_globals)
178
242
 
@@ -183,7 +247,10 @@ def doRunRerank(args, parsed_globals):
183
247
  g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
184
248
  g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
185
249
  )
186
- elif os.getenv(OptionsDefine.ENV_TKE_REGION) and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
250
+ elif os.getenv(OptionsDefine.ENV_TKE_REGION) \
251
+ and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) \
252
+ and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) \
253
+ and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
187
254
  cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
188
255
  else:
189
256
  cred = credential.Credential(
@@ -195,7 +262,7 @@ def doRunRerank(args, parsed_globals):
195
262
  endpoint=g_param[OptionsDefine.Endpoint],
196
263
  proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
197
264
  )
198
- profile = ClientProfile(httpProfile=http_profile, signMethod="HmacSHA256")
265
+ profile = ClientProfile(httpProfile=http_profile, signMethod="TC3-HMAC-SHA256")
199
266
  if g_param[OptionsDefine.Language]:
200
267
  profile.language = g_param[OptionsDefine.Language]
201
268
  mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
@@ -235,7 +302,10 @@ def doGetReconstructDocumentResult(args, parsed_globals):
235
302
  g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
236
303
  g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
237
304
  )
238
- elif os.getenv(OptionsDefine.ENV_TKE_REGION) and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
305
+ elif os.getenv(OptionsDefine.ENV_TKE_REGION) \
306
+ and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) \
307
+ and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) \
308
+ and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
239
309
  cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
240
310
  else:
241
311
  cred = credential.Credential(
@@ -247,7 +317,7 @@ def doGetReconstructDocumentResult(args, parsed_globals):
247
317
  endpoint=g_param[OptionsDefine.Endpoint],
248
318
  proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
249
319
  )
250
- profile = ClientProfile(httpProfile=http_profile, signMethod="HmacSHA256")
320
+ profile = ClientProfile(httpProfile=http_profile, signMethod="TC3-HMAC-SHA256")
251
321
  if g_param[OptionsDefine.Language]:
252
322
  profile.language = g_param[OptionsDefine.Language]
253
323
  mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
@@ -287,7 +357,10 @@ def doQueryRewrite(args, parsed_globals):
287
357
  g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
288
358
  g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
289
359
  )
290
- elif os.getenv(OptionsDefine.ENV_TKE_REGION) and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
360
+ elif os.getenv(OptionsDefine.ENV_TKE_REGION) \
361
+ and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) \
362
+ and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) \
363
+ and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
291
364
  cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
292
365
  else:
293
366
  cred = credential.Credential(
@@ -299,7 +372,7 @@ def doQueryRewrite(args, parsed_globals):
299
372
  endpoint=g_param[OptionsDefine.Endpoint],
300
373
  proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
301
374
  )
302
- profile = ClientProfile(httpProfile=http_profile, signMethod="HmacSHA256")
375
+ profile = ClientProfile(httpProfile=http_profile, signMethod="TC3-HMAC-SHA256")
303
376
  if g_param[OptionsDefine.Language]:
304
377
  profile.language = g_param[OptionsDefine.Language]
305
378
  mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
@@ -329,6 +402,61 @@ def doQueryRewrite(args, parsed_globals):
329
402
  FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
330
403
 
331
404
 
405
+ def doGetEmbedding(args, parsed_globals):
406
+ g_param = parse_global_arg(parsed_globals)
407
+
408
+ if g_param[OptionsDefine.UseCVMRole.replace('-', '_')]:
409
+ cred = credential.CVMRoleCredential()
410
+ elif g_param[OptionsDefine.RoleArn.replace('-', '_')] and g_param[OptionsDefine.RoleSessionName.replace('-', '_')]:
411
+ cred = credential.STSAssumeRoleCredential(
412
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
413
+ g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
414
+ )
415
+ elif os.getenv(OptionsDefine.ENV_TKE_REGION) \
416
+ and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) \
417
+ and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) \
418
+ and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
419
+ cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
420
+ else:
421
+ cred = credential.Credential(
422
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.Token]
423
+ )
424
+ http_profile = HttpProfile(
425
+ reqTimeout=60 if g_param[OptionsDefine.Timeout] is None else int(g_param[OptionsDefine.Timeout]),
426
+ reqMethod="POST",
427
+ endpoint=g_param[OptionsDefine.Endpoint],
428
+ proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
429
+ )
430
+ profile = ClientProfile(httpProfile=http_profile, signMethod="TC3-HMAC-SHA256")
431
+ if g_param[OptionsDefine.Language]:
432
+ profile.language = g_param[OptionsDefine.Language]
433
+ mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
434
+ client = mod.LkeapClient(cred, g_param[OptionsDefine.Region], profile)
435
+ client._sdkVersion += ("_CLI_" + __version__)
436
+ models = MODELS_MAP[g_param[OptionsDefine.Version]]
437
+ model = models.GetEmbeddingRequest()
438
+ model.from_json_string(json.dumps(args))
439
+ start_time = time.time()
440
+ while True:
441
+ rsp = client.GetEmbedding(model)
442
+ result = rsp.to_json_string()
443
+ try:
444
+ json_obj = json.loads(result)
445
+ except TypeError as e:
446
+ json_obj = json.loads(result.decode('utf-8')) # python3.3
447
+ if not g_param[OptionsDefine.Waiter] or search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj) == g_param['OptionsDefine.WaiterInfo']['to']:
448
+ break
449
+ cur_time = time.time()
450
+ if cur_time - start_time >= g_param['OptionsDefine.WaiterInfo']['timeout']:
451
+ raise ClientError('Request timeout, wait `%s` to `%s` timeout, last request is %s' %
452
+ (g_param['OptionsDefine.WaiterInfo']['expr'], g_param['OptionsDefine.WaiterInfo']['to'],
453
+ search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj)))
454
+ else:
455
+ print('Inquiry result is %s.' % search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj))
456
+ time.sleep(g_param['OptionsDefine.WaiterInfo']['interval'])
457
+ FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
458
+
459
+
332
460
  CLIENT_MAP = {
333
461
  "v20240522": lkeap_client_v20240522,
334
462
 
@@ -343,9 +471,11 @@ ACTION_MAP = {
343
471
  "CreateReconstructDocumentFlow": doCreateReconstructDocumentFlow,
344
472
  "GetSplitDocumentResult": doGetSplitDocumentResult,
345
473
  "CreateSplitDocumentFlow": doCreateSplitDocumentFlow,
474
+ "ReconstructDocumentSSE": doReconstructDocumentSSE,
346
475
  "RunRerank": doRunRerank,
347
476
  "GetReconstructDocumentResult": doGetReconstructDocumentResult,
348
477
  "QueryRewrite": doQueryRewrite,
478
+ "GetEmbedding": doGetEmbedding,
349
479
 
350
480
  }
351
481
 
@@ -14,6 +14,13 @@
14
14
  "output": "CreateSplitDocumentFlowResponse",
15
15
  "status": "online"
16
16
  },
17
+ "GetEmbedding": {
18
+ "document": "This API is used to call the text representation model to convert text into a vector represented by numbers, which can be used in scenarios such as text retrieval, information recommendation, and knowledge mining. There is a single-account call limit control for this API. If you need to increase the concurrency limit, please contact us (https://cloud.tencent.com/act/event/Online_service).",
19
+ "input": "GetEmbeddingRequest",
20
+ "name": "Retrieve feature vector",
21
+ "output": "GetEmbeddingResponse",
22
+ "status": "online"
23
+ },
17
24
  "GetReconstructDocumentResult": {
18
25
  "document": "This is an asynchronous API for querying results, which is used to obtain the result of document parsing.",
19
26
  "input": "GetReconstructDocumentResultRequest",
@@ -35,6 +42,13 @@
35
42
  "output": "QueryRewriteResponse",
36
43
  "status": "online"
37
44
  },
45
+ "ReconstructDocumentSSE": {
46
+ "document": "This API is used for quasi-real-time document parsing, using HTTP SSE protocol for communication.",
47
+ "input": "ReconstructDocumentSSERequest",
48
+ "name": "Performs real-time document parsing",
49
+ "output": "ReconstructDocumentSSEResponse",
50
+ "status": "online"
51
+ },
38
52
  "RunRerank": {
39
53
  "document": "This API is used to reorder the results of multi-channel recall based on the rerank model of knowledge engine fine-tuning model technology, sort the segments according to the relevance between the query and the segment content from high to low score, and output the corresponding scoring results.",
40
54
  "input": "RunRerankRequest",
@@ -324,6 +338,97 @@
324
338
  ],
325
339
  "usage": "out"
326
340
  },
341
+ "EmbeddingObject": {
342
+ "document": "Vector.",
343
+ "members": [
344
+ {
345
+ "disabled": false,
346
+ "document": "Vector.",
347
+ "example": "无",
348
+ "member": "float",
349
+ "name": "Embedding",
350
+ "output_required": false,
351
+ "required": false,
352
+ "type": "list",
353
+ "value_allowed_null": false
354
+ }
355
+ ],
356
+ "usage": "both"
357
+ },
358
+ "GetEmbeddingRequest": {
359
+ "document": "GetEmbedding request structure.",
360
+ "members": [
361
+ {
362
+ "disabled": false,
363
+ "document": "Select the model for generating vectors\nNote: Optional [adp-text-embedding-0.5b]\n\n",
364
+ "example": "lke-text-embedding-v1",
365
+ "member": "string",
366
+ "name": "Model",
367
+ "required": true,
368
+ "type": "string"
369
+ },
370
+ {
371
+ "disabled": false,
372
+ "document": "Text that requires embedding. The maximum length of a single text is 500 characters. The maximum total number of entries is 7.",
373
+ "example": "[\"hello\", \"world\"]",
374
+ "member": "string",
375
+ "name": "Inputs",
376
+ "required": true,
377
+ "type": "list"
378
+ },
379
+ {
380
+ "disabled": false,
381
+ "document": "The type of text vectorization. To achieve better retrieval performance, it is recommended to distinguish between query text and document text types. For symmetric tasks such as clustering and classification, there is no need for special specification simply use the system default value \"document\".",
382
+ "example": "document",
383
+ "member": "string",
384
+ "name": "TextType",
385
+ "required": false,
386
+ "type": "string"
387
+ },
388
+ {
389
+ "disabled": false,
390
+ "document": "This field is not currently supported.",
391
+ "example": "问题:",
392
+ "member": "string",
393
+ "name": "Instruction",
394
+ "required": false,
395
+ "type": "string"
396
+ }
397
+ ],
398
+ "type": "object"
399
+ },
400
+ "GetEmbeddingResponse": {
401
+ "document": "GetEmbedding response structure.",
402
+ "members": [
403
+ {
404
+ "disabled": false,
405
+ "document": "Feature.",
406
+ "example": "无",
407
+ "member": "EmbeddingObject",
408
+ "name": "Data",
409
+ "output_required": true,
410
+ "type": "list",
411
+ "value_allowed_null": false
412
+ },
413
+ {
414
+ "disabled": false,
415
+ "document": "Consumption. Returns TotalToken.",
416
+ "example": "无",
417
+ "member": "Usage",
418
+ "name": "Usage",
419
+ "output_required": false,
420
+ "type": "object",
421
+ "value_allowed_null": false
422
+ },
423
+ {
424
+ "document": "The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.",
425
+ "member": "string",
426
+ "name": "RequestId",
427
+ "type": "string"
428
+ }
429
+ ],
430
+ "type": "object"
431
+ },
327
432
  "GetReconstructDocumentResultRequest": {
328
433
  "document": "GetReconstructDocumentResult request structure.",
329
434
  "members": [
@@ -559,6 +664,164 @@
559
664
  ],
560
665
  "usage": "out"
561
666
  },
667
+ "ReconstructDocumentSSEConfig": {
668
+ "document": "ReconstructDocumentSSE feature configuration parameters.",
669
+ "members": [
670
+ {
671
+ "disabled": false,
672
+ "document": "The form in which tables in a Markdown file are returned.\n- 0: returned as MD.\n- 1: returned as HTML.\nThe default is 0.",
673
+ "example": "0",
674
+ "member": "string",
675
+ "name": "TableResultType",
676
+ "required": false,
677
+ "type": "string"
678
+ },
679
+ {
680
+ "disabled": false,
681
+ "document": "The form in which images in a Markdown file are returned.\n- 0: returned as URL.\n- 1: only return the text content extracted from the image in markdown.\nThe default value is 0.",
682
+ "example": "0",
683
+ "member": "string",
684
+ "name": "MarkdownImageResponseType",
685
+ "required": false,
686
+ "type": "string"
687
+ },
688
+ {
689
+ "disabled": false,
690
+ "document": "Whether the Markdown file contains page number information.",
691
+ "example": "true",
692
+ "member": "bool",
693
+ "name": "ReturnPageFormat",
694
+ "required": false,
695
+ "type": "bool"
696
+ },
697
+ {
698
+ "disabled": false,
699
+ "document": "The custom output page number style. {{p}} is a placeholder for the page number. Enable ReturnPageFormat to take effect. If empty, the default style is: <page_num>page {{p}}</page_num>.",
700
+ "example": "<page_num>page {{p}}</page_num>",
701
+ "member": "string",
702
+ "name": "PageFormat",
703
+ "required": false,
704
+ "type": "string"
705
+ }
706
+ ],
707
+ "usage": "in"
708
+ },
709
+ "ReconstructDocumentSSERequest": {
710
+ "document": "ReconstructDocumentSSE request structure.",
711
+ "members": [
712
+ {
713
+ "disabled": false,
714
+ "document": "The base64 value of the file. File size limit: the downloaded file shall not exceed 8MB after base64 encoding. File download time does not exceed 3 seconds. Supported image pixels: the length of a single side is between 20-10000px. Either FileUrl or FileBase64 of the file must be provided. If both are provided, only the FileUrl is used.",
715
+ "example": "base64",
716
+ "member": "string",
717
+ "name": "FileBase64",
718
+ "required": false,
719
+ "type": "string"
720
+ },
721
+ {
722
+ "disabled": false,
723
+ "document": "Document parsing configuration information.\t",
724
+ "example": "无",
725
+ "member": "ReconstructDocumentSSEConfig",
726
+ "name": "Config",
727
+ "required": false,
728
+ "type": "object"
729
+ }
730
+ ],
731
+ "type": "object"
732
+ },
733
+ "ReconstructDocumentSSEResponse": {
734
+ "document": "ReconstructDocumentSSE response structure.",
735
+ "members": [
736
+ {
737
+ "disabled": false,
738
+ "document": "Task ID. The unique identifier of the current request.",
739
+ "example": "taskld",
740
+ "member": "string",
741
+ "name": "TaskId",
742
+ "output_required": false,
743
+ "type": "string",
744
+ "value_allowed_null": false
745
+ },
746
+ {
747
+ "disabled": false,
748
+ "document": "Response type. 1: return progress information; 2: return parsing result.",
749
+ "example": "type",
750
+ "member": "string",
751
+ "name": "ResponseType",
752
+ "output_required": false,
753
+ "type": "string",
754
+ "value_allowed_null": false
755
+ },
756
+ {
757
+ "disabled": false,
758
+ "document": "Progress. Value range: 0 to 100.",
759
+ "example": "progress",
760
+ "member": "string",
761
+ "name": "Progress",
762
+ "output_required": false,
763
+ "type": "string",
764
+ "value_allowed_null": false
765
+ },
766
+ {
767
+ "disabled": false,
768
+ "document": "Progress information.",
769
+ "example": "progressMessage",
770
+ "member": "string",
771
+ "name": "ProgressMessage",
772
+ "output_required": false,
773
+ "type": "string",
774
+ "value_allowed_null": false
775
+ },
776
+ {
777
+ "disabled": false,
778
+ "document": "Temporary download URL for the document parsing result. The file is a zip compressed package, and the URL is valid for 30 minutes. The compressed package contains the following folders: \\*.md, \\*.jsonl, \\*mllm.json, images.",
779
+ "example": "documentRecognizeResultUrl",
780
+ "member": "string",
781
+ "name": "DocumentRecognizeResultUrl",
782
+ "output_required": false,
783
+ "type": "string",
784
+ "value_allowed_null": false
785
+ },
786
+ {
787
+ "disabled": false,
788
+ "document": "Page number where document parsing fails.",
789
+ "example": "无",
790
+ "member": "ReconstructDocumentFailedPage",
791
+ "name": "FailedPages",
792
+ "output_required": false,
793
+ "type": "list",
794
+ "value_allowed_null": false
795
+ },
796
+ {
797
+ "disabled": false,
798
+ "document": "",
799
+ "example": "1",
800
+ "member": "int64",
801
+ "name": "FailPageNum",
802
+ "output_required": false,
803
+ "type": "int",
804
+ "value_allowed_null": false
805
+ },
806
+ {
807
+ "disabled": false,
808
+ "document": "",
809
+ "example": "10",
810
+ "member": "int64",
811
+ "name": "SuccessPageNum",
812
+ "output_required": false,
813
+ "type": "int",
814
+ "value_allowed_null": false
815
+ },
816
+ {
817
+ "document": "The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem. As a streaming response API, when the request is successfully completed, the RequestId will be placed in the Header \"X-TC-RequestId\" of the HTTP response.",
818
+ "member": "string",
819
+ "name": "RequestId",
820
+ "type": "string"
821
+ }
822
+ ],
823
+ "type": "object"
824
+ },
562
825
  "RunRerankRequest": {
563
826
  "document": "RunRerank request structure.",
564
827
  "members": [
@@ -16,6 +16,26 @@
16
16
  "title": "PDF Splitting Task Creation"
17
17
  }
18
18
  ],
19
+ "GetEmbedding": [
20
+ {
21
+ "document": "",
22
+ "input": "POST / HTTP/1.1\nHost: lkeap.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: GetEmbedding\n<Common request parameters>\n\n{\n \"Model\": \"adp-text-embedding-0.5b\",\n \"Inputs\": [\n \"Hello.\"\n ]\n}",
23
+ "output": "{\n \"Response\": {\n \"Data\": [\n {\n \"Embedding\": [\n 0\n ]\n }\n ],\n \"RequestId\": \"3c140219-cfe9-470e-b241-907877d6fb03\",\n \"Usage\": {\n \"TotalTokens\": 3\n }\n }\n}",
24
+ "title": "Obtain The Embeddings"
25
+ },
26
+ {
27
+ "document": "",
28
+ "input": "POST / HTTP/1.1\nHost: lkeap.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: GetEmbedding\n<Common request parameters>\n\n{\n \"Model\": \"adp-text-embedding-0.5b\",\n \"Inputs\": [\n \"Hello\",\n \"Word\"\n ]\n}",
29
+ "output": "{\n \"Response\": {\n \"Data\": [\n {\n \"Embedding\": [\n 0\n ]\n },\n {\n \"Embedding\": [\n 0\n ]\n }\n ],\n \"RequestId\": \"3c140219-cfe9-470e-b241-907877d6fb03\",\n \"Usage\": {\n \"TotalTokens\": 3\n }\n }\n}",
30
+ "title": "Obtain The Embeddings1"
31
+ },
32
+ {
33
+ "document": "",
34
+ "input": "POST / HTTP/1.1\nHost: lkeap.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: GetEmbedding\n<Common request parameters>\n\n{\n \"Model\": \"adp-text-embedding-0.5b\",\n \"Inputs\": [\n \"Hello\",\n \"Word\"\n ]\n}",
35
+ "output": "{\n \"Response\": {\n \"Data\": [\n {\n \"Embedding\": [\n 0\n ]\n },\n {\n \"Embedding\": [\n 0\n ]\n }\n ],\n \"RequestId\": \"3c140219-cfe9-470e-b241-907877d6fb03\",\n \"Usage\": {\n \"TotalTokens\": 3\n }\n }\n}",
36
+ "title": "Obtain The Embeddings2"
37
+ }
38
+ ],
19
39
  "GetReconstructDocumentResult": [
20
40
  {
21
41
  "document": "",
@@ -46,6 +66,20 @@
46
66
  "title": "Multi-round Rewriting"
47
67
  }
48
68
  ],
69
+ "ReconstructDocumentSSE": [
70
+ {
71
+ "document": "",
72
+ "input": "POST / HTTP/1.1\nHost: lkeap.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: ReconstructDocumentSSE\n<Common request parameters>\n\n{}",
73
+ "output": "{\n \"RequestId\": \"0c7bbfbc-641a-4321-bee2-56b1e1e046e9\",\n \"TaskId\": \"0c7bbfbc-641a-4321-bee2-56b1e1e046e9\",\n \"ResponseType\": \"PROGRESS\",\n \"Progress\": \"0\",\n \"ProgressMessage\": \"Start document parsing\",\n \"DocumentRecognizeResultUrl\": \"\",\n \"FailedPages\": []\n}",
74
+ "title": "ReconstructDocumentSSE in Processing Response Sample"
75
+ },
76
+ {
77
+ "document": "",
78
+ "input": "POST / HTTP/1.1\nHost: lkeap.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: ReconstructDocumentSSE\n<Common request parameters>\n\n{}",
79
+ "output": "{\n \"RequestId\": \"0c7cabfbc-641a-4321-bee2-56b1e1adwq6e9\",\n \"TaskId\": \"0c7bbfbc-641a-4321-bee2-5dds1e1e04fe9\",\n \"ResponseType\": \"TASK_RSP\",\n \"Progress\": \"100\",\n\"ProgressMessage\": \"Document parsing completed\"\n \"DocumentRecognizeResultUrl\": \"https://lkeap-reconstruct-sse-prod-intl-1251316161.cos.ap-jakarta.myqcloud.com/output_files/atom_v3/2025-10-21/200042064731_200042064731/64873e5b-082b-482c-9d98-42c4994696c9_parse.zip?q-sign-algorithm=sha1&q-ak=XXXXXXX&q-sign-time=1761035122%3B1761036922&q-key-time=1761035122%3B1761036922&q-header-list=host&q-url-param-list=&q-signature=XXXXXXX\",\n \"FailedPages\": []\n}",
80
+ "title": "ReconstructDocumentSSE Processing Completed Response Example"
81
+ }
82
+ ],
49
83
  "RunRerank": [
50
84
  {
51
85
  "document": "Reorder.",
@@ -55,4 +89,4 @@
55
89
  }
56
90
  ]
57
91
  }
58
- }
92
+ }