tencentcloud-sdk-nodejs 4.0.463 → 4.0.464

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 (62) hide show
  1. package/CHANGELOG.md +491 -0
  2. package/SERVICE_CHANGELOG.md +828 -72
  3. package/package.json +1 -1
  4. package/products.md +15 -15
  5. package/src/common/sdk_version.ts +1 -1
  6. package/src/services/bma/v20210624/bma_client.ts +13 -1
  7. package/src/services/bma/v20210624/bma_models.ts +41 -16
  8. package/src/services/ckafka/v20190819/ckafka_models.ts +5 -0
  9. package/src/services/cpdp/v20190820/cpdp_models.ts +8 -0
  10. package/src/services/ess/v20201111/ess_models.ts +23 -17
  11. package/src/services/essbasic/v20210526/essbasic_client.ts +24 -7
  12. package/src/services/essbasic/v20210526/essbasic_models.ts +38 -12
  13. package/src/services/pts/v20210728/pts_models.ts +36 -0
  14. package/src/services/ssm/v20190923/ssm_models.ts +1 -1
  15. package/src/services/tcm/v20210413/tcm_client.ts +40 -16
  16. package/src/services/tcm/v20210413/tcm_models.ts +50 -0
  17. package/src/services/tcss/v20201101/tcss_client.ts +2008 -287
  18. package/src/services/tcss/v20201101/tcss_models.ts +12366 -4182
  19. package/src/services/teo/v20220901/teo_client.ts +2 -0
  20. package/src/services/teo/v20220901/teo_models.ts +68 -4
  21. package/src/services/tke/v20180525/tke_client.ts +3 -3
  22. package/src/services/tke/v20180525/tke_models.ts +38 -2
  23. package/src/services/trp/v20210515/trp_models.ts +5 -5
  24. package/src/services/trtc/v20190722/trtc_client.ts +8 -81
  25. package/src/services/trtc/v20190722/trtc_models.ts +107 -692
  26. package/src/services/wedata/v20210820/wedata_client.ts +79 -41
  27. package/src/services/wedata/v20210820/wedata_models.ts +417 -64
  28. package/tencentcloud/common/sdk_version.d.ts +1 -1
  29. package/tencentcloud/common/sdk_version.js +1 -1
  30. package/tencentcloud/services/bma/v20210624/bma_client.d.ts +5 -1
  31. package/tencentcloud/services/bma/v20210624/bma_client.js +6 -0
  32. package/tencentcloud/services/bma/v20210624/bma_models.d.ts +36 -14
  33. package/tencentcloud/services/ckafka/v20190819/ckafka_models.d.ts +4 -0
  34. package/tencentcloud/services/cpdp/v20190820/cpdp_models.d.ts +7 -0
  35. package/tencentcloud/services/ess/v20201111/ess_models.d.ts +19 -14
  36. package/tencentcloud/services/essbasic/v20210526/essbasic_client.d.ts +22 -5
  37. package/tencentcloud/services/essbasic/v20210526/essbasic_client.js +22 -5
  38. package/tencentcloud/services/essbasic/v20210526/essbasic_models.d.ts +36 -11
  39. package/tencentcloud/services/pts/v20210728/pts_models.d.ts +30 -0
  40. package/tencentcloud/services/ssm/v20190923/ssm_models.d.ts +1 -1
  41. package/tencentcloud/services/tcm/v20210413/tcm_client.d.ts +15 -7
  42. package/tencentcloud/services/tcm/v20210413/tcm_client.js +21 -9
  43. package/tencentcloud/services/tcm/v20210413/tcm_models.d.ts +44 -0
  44. package/tencentcloud/services/tcss/v20201101/tcss_client.d.ts +621 -65
  45. package/tencentcloud/services/tcss/v20201101/tcss_client.js +948 -114
  46. package/tencentcloud/services/tcss/v20201101/tcss_models.d.ts +9626 -2675
  47. package/tencentcloud/services/teo/v20220901/teo_models.d.ts +58 -4
  48. package/tencentcloud/services/tke/v20180525/tke_client.d.ts +3 -3
  49. package/tencentcloud/services/tke/v20180525/tke_client.js +1 -1
  50. package/tencentcloud/services/tke/v20180525/tke_models.d.ts +34 -2
  51. package/tencentcloud/services/trp/v20210515/trp_models.d.ts +5 -5
  52. package/tencentcloud/services/trtc/v20190722/trtc_client.d.ts +3 -33
  53. package/tencentcloud/services/trtc/v20190722/trtc_client.js +2 -38
  54. package/tencentcloud/services/trtc/v20190722/trtc_models.d.ts +60 -556
  55. package/tencentcloud/services/wedata/v20210820/wedata_client.d.ts +25 -13
  56. package/tencentcloud/services/wedata/v20210820/wedata_client.js +35 -17
  57. package/tencentcloud/services/wedata/v20210820/wedata_models.d.ts +352 -54
  58. package/test/bma.v20210624.test.js +10 -0
  59. package/test/tcm.v20210413.test.js +26 -6
  60. package/test/tcss.v20201101.test.js +1713 -323
  61. package/test/trtc.v20190722.test.js +0 -30
  62. package/test/wedata.v20210820.test.js +40 -10
@@ -90,6 +90,20 @@ export interface DeleteFolderResponse {
90
90
  */
91
91
  RequestId?: string;
92
92
  }
93
+ /**
94
+ * DescribeResourceManagePathTrees返回参数结构体
95
+ */
96
+ export interface DescribeResourceManagePathTreesResponse {
97
+ /**
98
+ * 响应数据
99
+ 注意:此字段可能返回 null,表示取不到有效值。
100
+ */
101
+ Data: Array<ResourcePathTree>;
102
+ /**
103
+ * 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
104
+ */
105
+ RequestId?: string;
106
+ }
93
107
  /**
94
108
  * RunTask请求参数结构体
95
109
  */
@@ -192,23 +206,18 @@ export interface DescribeInstanceLogsRequest {
192
206
  CurRunDate: string;
193
207
  }
194
208
  /**
195
- * 操作结果
209
+ * CreateOrUpdateResource返回参数结构体
196
210
  */
197
- export interface BatchReturn {
198
- /**
199
- * 执行结果
200
- */
201
- Result: boolean;
211
+ export interface CreateOrUpdateResourceResponse {
202
212
  /**
203
- * 执行情况备注
213
+ * 响应数据
204
214
  注意:此字段可能返回 null,表示取不到有效值。
205
215
  */
206
- ErrorDesc: string;
216
+ Data: Array<UserFileDTO>;
207
217
  /**
208
- * 执行情况id
209
- 注意:此字段可能返回 null,表示取不到有效值。
218
+ * 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
210
219
  */
211
- ErrorId: string;
220
+ RequestId?: string;
212
221
  }
213
222
  /**
214
223
  * ModifyTaskScript请求参数结构体
@@ -748,31 +757,13 @@ export interface IntegrationNodeMapping {
748
757
  ExtConfig?: Array<RecordField>;
749
758
  }
750
759
  /**
751
- * 集成节点schema
760
+ * DescribeDatasource请求参数结构体
752
761
  */
753
- export interface IntegrationNodeSchema {
754
- /**
755
- * schema id
756
- */
757
- Id: string;
758
- /**
759
- * schema名称
760
- */
761
- Name: string;
762
- /**
763
- * schema类型
764
- */
765
- Type: string;
766
- /**
767
- * schema值
768
- 注意:此字段可能返回 null,表示取不到有效值。
769
- */
770
- Value?: string;
762
+ export interface DescribeDatasourceRequest {
771
763
  /**
772
- * schema拓展属性
773
- 注意:此字段可能返回 null,表示取不到有效值。
764
+ * 对象唯一ID
774
765
  */
775
- Properties?: Array<RecordField>;
766
+ Id: number;
776
767
  }
777
768
  /**
778
769
  * KillInstances返回参数结构体
@@ -818,14 +809,34 @@ export interface FunctionTypeOrKind {
818
809
  EnName: string;
819
810
  }
820
811
  /**
821
- * 内容详情
812
+ * DeleteResource请求参数结构体
822
813
  */
823
- export interface CommonContent {
814
+ export interface DeleteResourceRequest {
824
815
  /**
825
- * 详情内容
826
- 注意:此字段可能返回 null,表示取不到有效值。
816
+ * 项目ID
827
817
  */
828
- Content: string;
818
+ ProjectId?: string;
819
+ /**
820
+ * 资源ID
821
+ */
822
+ ResourceId?: string;
823
+ }
824
+ /**
825
+ * CreateWorkflow请求参数结构体
826
+ */
827
+ export interface CreateWorkflowRequest {
828
+ /**
829
+ * 项目Id
830
+ */
831
+ ProjectId: string;
832
+ /**
833
+ * 工作流名称
834
+ */
835
+ WorkflowName?: string;
836
+ /**
837
+ * 所属文件夹id
838
+ */
839
+ FolderId?: string;
829
840
  }
830
841
  /**
831
842
  * ModifyTaskScript返回参数结构体
@@ -841,6 +852,20 @@ export interface ModifyTaskScriptResponse {
841
852
  */
842
853
  RequestId?: string;
843
854
  }
855
+ /**
856
+ * DeleteResource返回参数结构体
857
+ */
858
+ export interface DeleteResourceResponse {
859
+ /**
860
+ * 是否成功
861
+ 注意:此字段可能返回 null,表示取不到有效值。
862
+ */
863
+ Data: boolean;
864
+ /**
865
+ * 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
866
+ */
867
+ RequestId?: string;
868
+ }
844
869
  /**
845
870
  * SubmitWorkflow返回参数结构体
846
871
  */
@@ -1008,6 +1033,25 @@ export interface SubmitWorkflow {
1008
1033
  */
1009
1034
  ErrorId: string;
1010
1035
  }
1036
+ /**
1037
+ * 操作结果
1038
+ */
1039
+ export interface BatchReturn {
1040
+ /**
1041
+ * 执行结果
1042
+ */
1043
+ Result: boolean;
1044
+ /**
1045
+ * 执行情况备注
1046
+ 注意:此字段可能返回 null,表示取不到有效值。
1047
+ */
1048
+ ErrorDesc: string;
1049
+ /**
1050
+ * 执行情况id
1051
+ 注意:此字段可能返回 null,表示取不到有效值。
1052
+ */
1053
+ ErrorId: string;
1054
+ }
1011
1055
  /**
1012
1056
  * DescribeFolderWorkflowList返回参数结构体
1013
1057
  */
@@ -1259,21 +1303,14 @@ export interface DescribeDataSourceListRequest {
1259
1303
  Filters?: Array<Filter>;
1260
1304
  }
1261
1305
  /**
1262
- * CreateWorkflow请求参数结构体
1306
+ * 内容详情
1263
1307
  */
1264
- export interface CreateWorkflowRequest {
1265
- /**
1266
- * 项目Id
1267
- */
1268
- ProjectId: string;
1269
- /**
1270
- * 工作流名称
1271
- */
1272
- WorkflowName?: string;
1308
+ export interface CommonContent {
1273
1309
  /**
1274
- * 所属文件夹id
1310
+ * 详情内容
1311
+ 注意:此字段可能返回 null,表示取不到有效值。
1275
1312
  */
1276
- FolderId?: string;
1313
+ Content: string;
1277
1314
  }
1278
1315
  /**
1279
1316
  * 简单Task信息
@@ -1398,6 +1435,106 @@ export interface CreateFolderResponse {
1398
1435
  */
1399
1436
  RequestId?: string;
1400
1437
  }
1438
+ /**
1439
+ * 用户文件信息
1440
+ */
1441
+ export interface UserFileDTO {
1442
+ /**
1443
+ * 资源ID
1444
+ 注意:此字段可能返回 null,表示取不到有效值。
1445
+ */
1446
+ ResourceId: string;
1447
+ /**
1448
+ * 文件名
1449
+ 注意:此字段可能返回 null,表示取不到有效值。
1450
+ */
1451
+ FileName: string;
1452
+ /**
1453
+ * 文件类型,如 jar zip 等
1454
+ 注意:此字段可能返回 null,表示取不到有效值。
1455
+ */
1456
+ FileExtensionType: string;
1457
+ /**
1458
+ * 文件上传类型,资源管理为 resource
1459
+ 注意:此字段可能返回 null,表示取不到有效值。
1460
+ */
1461
+ FileUploadType: string;
1462
+ /**
1463
+ * 文件MD5值
1464
+ 注意:此字段可能返回 null,表示取不到有效值。
1465
+ */
1466
+ Md5Value: string;
1467
+ /**
1468
+ * 创建时间,秒级别的时间戳
1469
+ 注意:此字段可能返回 null,表示取不到有效值。
1470
+ */
1471
+ CreateTime: number;
1472
+ /**
1473
+ * 更新时间,秒级别的时间戳
1474
+ 注意:此字段可能返回 null,表示取不到有效值。
1475
+ */
1476
+ UpdateTime: number;
1477
+ /**
1478
+ * 文件大小,单位为字节
1479
+ 注意:此字段可能返回 null,表示取不到有效值。
1480
+ */
1481
+ Size: number;
1482
+ /**
1483
+ * 本地路径
1484
+ 注意:此字段可能返回 null,表示取不到有效值。
1485
+ */
1486
+ LocalPath: string;
1487
+ /**
1488
+ * 本地临时路径
1489
+ 注意:此字段可能返回 null,表示取不到有效值。
1490
+ */
1491
+ LocalTmpPath: string;
1492
+ /**
1493
+ * 远程路径
1494
+ 注意:此字段可能返回 null,表示取不到有效值。
1495
+ */
1496
+ RemotePath: string;
1497
+ /**
1498
+ * 文件拥有者名字
1499
+ 注意:此字段可能返回 null,表示取不到有效值。
1500
+ */
1501
+ OwnerName: string;
1502
+ /**
1503
+ * 文件拥有者uin
1504
+ 注意:此字段可能返回 null,表示取不到有效值。
1505
+ */
1506
+ Owner: string;
1507
+ /**
1508
+ * 文件深度
1509
+ 注意:此字段可能返回 null,表示取不到有效值。
1510
+ */
1511
+ PathDepth: string;
1512
+ /**
1513
+ * 项目ID
1514
+ 注意:此字段可能返回 null,表示取不到有效值。
1515
+ */
1516
+ ProjectId: string;
1517
+ /**
1518
+ * 附加信息
1519
+ 注意:此字段可能返回 null,表示取不到有效值。
1520
+ */
1521
+ ExtraInfo: string;
1522
+ /**
1523
+ * 本地临时压缩文件绝对路径
1524
+ 注意:此字段可能返回 null,表示取不到有效值。
1525
+ */
1526
+ ZipPath: string;
1527
+ /**
1528
+ * 文件所属存储桶
1529
+ 注意:此字段可能返回 null,表示取不到有效值。
1530
+ */
1531
+ Bucket: string;
1532
+ /**
1533
+ * 文件所属存储桶的地域
1534
+ 注意:此字段可能返回 null,表示取不到有效值。
1535
+ */
1536
+ Region: string;
1537
+ }
1401
1538
  /**
1402
1539
  * 工作流信息
1403
1540
  */
@@ -1593,6 +1730,91 @@ export interface DescribeFunctionTypesResponse {
1593
1730
  */
1594
1731
  RequestId?: string;
1595
1732
  }
1733
+ /**
1734
+ * 资源管理目录树节点
1735
+ */
1736
+ export interface ResourcePathTree {
1737
+ /**
1738
+ * 资源名字
1739
+ 注意:此字段可能返回 null,表示取不到有效值。
1740
+ */
1741
+ Name: string;
1742
+ /**
1743
+ * 是否为叶子节点
1744
+ 注意:此字段可能返回 null,表示取不到有效值。
1745
+ */
1746
+ IsLeaf: boolean;
1747
+ /**
1748
+ * 资源ID
1749
+ 注意:此字段可能返回 null,表示取不到有效值。
1750
+ */
1751
+ ResourceId: string;
1752
+ /**
1753
+ * 本地路径
1754
+ 注意:此字段可能返回 null,表示取不到有效值。
1755
+ */
1756
+ LocalPath: string;
1757
+ /**
1758
+ * 远程路径
1759
+ 注意:此字段可能返回 null,表示取不到有效值。
1760
+ */
1761
+ RemotePath: string;
1762
+ /**
1763
+ * 文件类型
1764
+ 注意:此字段可能返回 null,表示取不到有效值。
1765
+ */
1766
+ FileExtensionType: string;
1767
+ /**
1768
+ * 文件大小
1769
+ 注意:此字段可能返回 null,表示取不到有效值。
1770
+ */
1771
+ Size: number;
1772
+ /**
1773
+ * 文件MD5值
1774
+ 注意:此字段可能返回 null,表示取不到有效值。
1775
+ */
1776
+ Md5Value: string;
1777
+ /**
1778
+ * 文件拥有者名字
1779
+ 注意:此字段可能返回 null,表示取不到有效值。
1780
+ */
1781
+ OwnerName: string;
1782
+ /**
1783
+ * 更新人
1784
+ 注意:此字段可能返回 null,表示取不到有效值。
1785
+ */
1786
+ UpdateUser: string;
1787
+ /**
1788
+ * 文件更新人uin
1789
+ 注意:此字段可能返回 null,表示取不到有效值。
1790
+ */
1791
+ UpdateUserId: string;
1792
+ /**
1793
+ * 创建时间
1794
+ 注意:此字段可能返回 null,表示取不到有效值。
1795
+ */
1796
+ CreateTime: number;
1797
+ /**
1798
+ * 更新时间
1799
+ 注意:此字段可能返回 null,表示取不到有效值。
1800
+ */
1801
+ UpdateTime: number;
1802
+ /**
1803
+ * Cos存储桶名
1804
+ 注意:此字段可能返回 null,表示取不到有效值。
1805
+ */
1806
+ CosBucket: string;
1807
+ /**
1808
+ * Cos地域
1809
+ 注意:此字段可能返回 null,表示取不到有效值。
1810
+ */
1811
+ CosRegion: string;
1812
+ /**
1813
+ * 额外信息
1814
+ 注意:此字段可能返回 null,表示取不到有效值。
1815
+ */
1816
+ ExtraInfo: string;
1817
+ }
1596
1818
  /**
1597
1819
  * SubmitWorkflow请求参数结构体
1598
1820
  */
@@ -1916,13 +2138,31 @@ export interface CanvasInfo {
1916
2138
  LinksList: Array<TaskLinkInfo>;
1917
2139
  }
1918
2140
  /**
1919
- * DescribeDatasource请求参数结构体
2141
+ * 集成节点schema
1920
2142
  */
1921
- export interface DescribeDatasourceRequest {
2143
+ export interface IntegrationNodeSchema {
1922
2144
  /**
1923
- * 对象唯一ID
2145
+ * schema id
1924
2146
  */
1925
- Id: number;
2147
+ Id: string;
2148
+ /**
2149
+ * schema名称
2150
+ */
2151
+ Name: string;
2152
+ /**
2153
+ * schema类型
2154
+ */
2155
+ Type: string;
2156
+ /**
2157
+ * schema值
2158
+ 注意:此字段可能返回 null,表示取不到有效值。
2159
+ */
2160
+ Value?: string;
2161
+ /**
2162
+ * schema拓展属性
2163
+ 注意:此字段可能返回 null,表示取不到有效值。
2164
+ */
2165
+ Properties?: Array<RecordField>;
1926
2166
  }
1927
2167
  /**
1928
2168
  * DeleteWorkflowNew请求参数结构体
@@ -2207,6 +2447,31 @@ export interface TaskInstanceInfo {
2207
2447
  */
2208
2448
  CostTime: string;
2209
2449
  }
2450
+ /**
2451
+ * DescribeResourceManagePathTrees请求参数结构体
2452
+ */
2453
+ export interface DescribeResourceManagePathTreesRequest {
2454
+ /**
2455
+ * 项目ID
2456
+ */
2457
+ ProjectId?: string;
2458
+ /**
2459
+ * 名字,供搜索
2460
+ */
2461
+ Name?: string;
2462
+ /**
2463
+ * 文件类型
2464
+ */
2465
+ FileType?: string;
2466
+ /**
2467
+ * 文件路径
2468
+ */
2469
+ FilePath?: string;
2470
+ /**
2471
+ * 文件夹类型
2472
+ */
2473
+ DirType?: string;
2474
+ }
2210
2475
  /**
2211
2476
  * 通用过滤器
2212
2477
  */
@@ -3543,6 +3808,39 @@ export interface DescribeRelatedInstancesResponse {
3543
3808
  */
3544
3809
  RequestId?: string;
3545
3810
  }
3811
+ /**
3812
+ * CreateOrUpdateResource请求参数结构体
3813
+ */
3814
+ export interface CreateOrUpdateResourceRequest {
3815
+ /**
3816
+ * 项目ID
3817
+ */
3818
+ ProjectId?: string;
3819
+ /**
3820
+ * 文件名
3821
+ */
3822
+ Files?: Array<string>;
3823
+ /**
3824
+ * 文件所属路径,资源管理根路径为 /datastudio/resouce
3825
+ */
3826
+ FilePath?: string;
3827
+ /**
3828
+ * cos存储桶名字
3829
+ */
3830
+ CosBucketName?: string;
3831
+ /**
3832
+ * cos所属地域
3833
+ */
3834
+ CosRegion?: string;
3835
+ /**
3836
+ * 是否为新文件,新增为 true,更新为 false
3837
+ */
3838
+ NewFile?: boolean;
3839
+ /**
3840
+ * 文件大小
3841
+ */
3842
+ FilesSize?: Array<string>;
3843
+ }
3546
3844
  /**
3547
3845
  * RerunInstances请求参数结构体
3548
3846
  */
@@ -28,6 +28,16 @@ it("bma.v20210624.UpdateCRWork", async function () {
28
28
  }
29
29
  })
30
30
 
31
+ it("bma.v20210624.CreateCRDesktopCode", async function () {
32
+ try {
33
+ const data = await client.CreateCRDesktopCode({})
34
+ expect(data).to.be.ok
35
+ } catch(error) {
36
+ expect(error.requestId).to.be.ok
37
+ expect(error.code).to.be.ok
38
+ }
39
+ })
40
+
31
41
  it("bma.v20210624.DescribeBPCompanyInfo", async function () {
32
42
  try {
33
43
  const data = await client.DescribeBPCompanyInfo({})
@@ -28,9 +28,29 @@ it("tcm.v20210413.DeleteMesh", async function () {
28
28
  }
29
29
  })
30
30
 
31
- it("tcm.v20210413.CreateMesh", async function () {
31
+ it("tcm.v20210413.LinkClusterList", async function () {
32
32
  try {
33
- const data = await client.CreateMesh({})
33
+ const data = await client.LinkClusterList({})
34
+ expect(data).to.be.ok
35
+ } catch(error) {
36
+ expect(error.requestId).to.be.ok
37
+ expect(error.code).to.be.ok
38
+ }
39
+ })
40
+
41
+ it("tcm.v20210413.DescribeMeshList", async function () {
42
+ try {
43
+ const data = await client.DescribeMeshList({})
44
+ expect(data).to.be.ok
45
+ } catch(error) {
46
+ expect(error.requestId).to.be.ok
47
+ expect(error.code).to.be.ok
48
+ }
49
+ })
50
+
51
+ it("tcm.v20210413.UnlinkCluster", async function () {
52
+ try {
53
+ const data = await client.UnlinkCluster({})
34
54
  expect(data).to.be.ok
35
55
  } catch(error) {
36
56
  expect(error.requestId).to.be.ok
@@ -48,9 +68,9 @@ it("tcm.v20210413.ModifyMesh", async function () {
48
68
  }
49
69
  })
50
70
 
51
- it("tcm.v20210413.DescribeMesh", async function () {
71
+ it("tcm.v20210413.CreateMesh", async function () {
52
72
  try {
53
- const data = await client.DescribeMesh({})
73
+ const data = await client.CreateMesh({})
54
74
  expect(data).to.be.ok
55
75
  } catch(error) {
56
76
  expect(error.requestId).to.be.ok
@@ -58,9 +78,9 @@ it("tcm.v20210413.DescribeMesh", async function () {
58
78
  }
59
79
  })
60
80
 
61
- it("tcm.v20210413.DescribeMeshList", async function () {
81
+ it("tcm.v20210413.DescribeMesh", async function () {
62
82
  try {
63
- const data = await client.DescribeMeshList({})
83
+ const data = await client.DescribeMesh({})
64
84
  expect(data).to.be.ok
65
85
  } catch(error) {
66
86
  expect(error.requestId).to.be.ok