@keboola/api-client 53.0.0 → 54.0.0

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 (144) hide show
  1. package/API-SURFACE.md +2 -1
  2. package/CHANGELOG.md +23 -0
  3. package/dist/{admin-Di-MmGFP.cjs → admin-BZ7knTd0.cjs} +18 -2
  4. package/dist/admin-BZ7knTd0.cjs.map +1 -0
  5. package/dist/{admin-CbMOsfgs.js → admin-xFfHSZHQ.js} +13 -3
  6. package/dist/admin-xFfHSZHQ.js.map +1 -0
  7. package/dist/{componentId-DZP1rBix.js → componentId-Cps6WBy1.js} +1 -2
  8. package/dist/{componentId-DZP1rBix.js.map → componentId-Cps6WBy1.js.map} +1 -1
  9. package/dist/{componentId-olp0tltf.cjs → componentId-_tRhEv6W.cjs} +1 -2
  10. package/dist/{componentId-olp0tltf.cjs.map → componentId-_tRhEv6W.cjs.map} +1 -1
  11. package/dist/{configurations-WI8H4zLk.cjs → configurations-BM63ep1s.cjs} +2 -2
  12. package/dist/{configurations-WI8H4zLk.cjs.map → configurations-BM63ep1s.cjs.map} +1 -1
  13. package/dist/{configurations-Cd6Nsox-.js → configurations-BqvtIQm4.js} +2 -2
  14. package/dist/{configurations-Cd6Nsox-.js.map → configurations-BqvtIQm4.js.map} +1 -1
  15. package/dist/constants/index.cjs +1 -1
  16. package/dist/constants/index.d.cts +1 -1
  17. package/dist/constants/index.d.ts +1 -1
  18. package/dist/constants/index.js +1 -1
  19. package/dist/domain/permissions/index.cjs +4 -3
  20. package/dist/domain/permissions/index.d.cts +9 -1
  21. package/dist/domain/permissions/index.d.ts +9 -1
  22. package/dist/domain/permissions/index.js +4 -4
  23. package/dist/encryption/index.d.cts +1 -1
  24. package/dist/encryption/index.d.ts +1 -1
  25. package/dist/encryption/types.d.cts +1 -1
  26. package/dist/encryption/types.d.ts +1 -1
  27. package/dist/{index-BL7uXOiY.d.cts → index-B04rWq_0.d.cts} +2 -2
  28. package/dist/{index-BUKMdbKh.d.cts → index-BtvWJBYh.d.cts} +15 -7
  29. package/dist/{index-BNwo-zaJ.d.cts → index-Cd0naVic.d.cts} +1 -2
  30. package/dist/{index-BoKrc8wy.d.ts → index-DCfumWzq.d.ts} +2 -2
  31. package/dist/{index-B0prazAi.d.cts → index-DX7qciZA.d.cts} +27 -2
  32. package/dist/{index-CwUurckF.d.ts → index-DbStyQKc.d.ts} +1 -2
  33. package/dist/{index-BxgHNJ3Q.d.ts → index-Df30jjpZ.d.ts} +15 -7
  34. package/dist/{index-D0Gnp2QM.d.ts → index-DzqHh0lE.d.ts} +27 -2
  35. package/dist/index.cjs +7 -7
  36. package/dist/index.d.cts +2 -2
  37. package/dist/index.d.ts +2 -2
  38. package/dist/index.js +6 -6
  39. package/dist/management/index.cjs +1 -1
  40. package/dist/management/index.d.cts +1 -1
  41. package/dist/management/index.d.ts +1 -1
  42. package/dist/management/index.js +1 -1
  43. package/dist/management/types.d.cts +2 -2
  44. package/dist/management/types.d.ts +2 -2
  45. package/dist/{management-CmgsWmf0.js → management-BAfg8BmK.js} +31 -4
  46. package/dist/management-BAfg8BmK.js.map +1 -0
  47. package/dist/{management-Drs5G-hf.cjs → management-BuNIc7Mr.cjs} +31 -4
  48. package/dist/management-BuNIc7Mr.cjs.map +1 -0
  49. package/dist/metaObject-CSGF3d-o.js +53 -0
  50. package/dist/metaObject-CSGF3d-o.js.map +1 -0
  51. package/dist/metaObject-Ciyow2gr.cjs +64 -0
  52. package/dist/metaObject-Ciyow2gr.cjs.map +1 -0
  53. package/dist/metaObject-ClvW342q.d.ts +35 -0
  54. package/dist/metaObject-D7oudegV.d.cts +35 -0
  55. package/dist/oauth/index.cjs +2 -1
  56. package/dist/oauth/index.d.cts +34 -2
  57. package/dist/oauth/index.d.ts +34 -2
  58. package/dist/oauth/index.js +1 -1
  59. package/dist/oauth/types.d.cts +2 -2
  60. package/dist/oauth/types.d.ts +2 -2
  61. package/dist/{oauth-CSBChWuf.cjs → oauth-CXcrilOp.cjs} +47 -1
  62. package/dist/oauth-CXcrilOp.cjs.map +1 -0
  63. package/dist/{oauth-DOveZKUv.js → oauth-Ci0qeaS2.js} +43 -3
  64. package/dist/oauth-Ci0qeaS2.js.map +1 -0
  65. package/dist/{project-Onf-IcPW.cjs → project-BQ2oD6IW.cjs} +2 -2
  66. package/dist/{project-Onf-IcPW.cjs.map → project-BQ2oD6IW.cjs.map} +1 -1
  67. package/dist/{project-DmuC0bMK.js → project-aAVAOcmx.js} +2 -2
  68. package/dist/{project-DmuC0bMK.js.map → project-aAVAOcmx.js.map} +1 -1
  69. package/dist/queryService/index.d.cts +1 -1
  70. package/dist/queryService/index.d.ts +1 -1
  71. package/dist/queryService/types.d.cts +1 -1
  72. package/dist/queryService/types.d.ts +1 -1
  73. package/dist/queryService-B4h1Ez44.cjs +117 -0
  74. package/dist/queryService-B4h1Ez44.cjs.map +1 -0
  75. package/dist/queryService-DE_yE_S4.js +106 -0
  76. package/dist/queryService-DE_yE_S4.js.map +1 -0
  77. package/dist/queue/index.d.cts +1 -1
  78. package/dist/queue/index.d.ts +1 -1
  79. package/dist/sdk/configurations/index.cjs +2 -2
  80. package/dist/sdk/configurations/index.d.cts +2 -2
  81. package/dist/sdk/configurations/index.d.ts +2 -2
  82. package/dist/sdk/configurations/index.js +2 -2
  83. package/dist/sdk/dataAppServer/index.cjs +3 -39
  84. package/dist/sdk/dataAppServer/index.cjs.map +1 -1
  85. package/dist/sdk/dataAppServer/index.d.cts +1 -1
  86. package/dist/sdk/dataAppServer/index.d.ts +1 -1
  87. package/dist/sdk/dataAppServer/index.js +1 -37
  88. package/dist/sdk/dataAppServer/index.js.map +1 -1
  89. package/dist/sdk/queryService/index.cjs +3 -70
  90. package/dist/sdk/queryService/index.d.cts +2 -2
  91. package/dist/sdk/queryService/index.d.ts +2 -2
  92. package/dist/sdk/queryService/index.js +1 -70
  93. package/dist/sdk/securityPolicy/index.cjs +355 -0
  94. package/dist/sdk/securityPolicy/index.cjs.map +1 -0
  95. package/dist/sdk/securityPolicy/index.d.cts +100 -0
  96. package/dist/sdk/securityPolicy/index.d.ts +100 -0
  97. package/dist/sdk/securityPolicy/index.js +342 -0
  98. package/dist/sdk/securityPolicy/index.js.map +1 -0
  99. package/dist/sdk/securityPolicy/types.cjs +0 -0
  100. package/dist/sdk/securityPolicy/types.d.cts +2 -0
  101. package/dist/sdk/securityPolicy/types.d.ts +2 -0
  102. package/dist/sdk/securityPolicy/types.js +1 -0
  103. package/dist/sdk/semanticLayer/index.cjs +3 -2
  104. package/dist/sdk/semanticLayer/index.d.cts +3 -3
  105. package/dist/sdk/semanticLayer/index.d.ts +3 -3
  106. package/dist/sdk/semanticLayer/index.js +3 -1
  107. package/dist/sdk/semanticLayer/types.d.cts +1 -1
  108. package/dist/sdk/semanticLayer/types.d.ts +1 -1
  109. package/dist/sdk/vault/index.d.cts +1 -1
  110. package/dist/sdk/vault/index.d.ts +1 -1
  111. package/dist/{semanticLayer-D8D_3hk-.cjs → semanticLayer-BVpdWKJn.cjs} +4 -52
  112. package/dist/semanticLayer-BVpdWKJn.cjs.map +1 -0
  113. package/dist/{semanticLayer-CfjDnmsY.js → semanticLayer-Btj1Qy9O.js} +5 -47
  114. package/dist/semanticLayer-Btj1Qy9O.js.map +1 -0
  115. package/dist/storage/index.d.cts +2 -2
  116. package/dist/storage/index.d.ts +2 -2
  117. package/dist/storage/types.d.cts +2 -2
  118. package/dist/storage/types.d.ts +2 -2
  119. package/dist/syncActions/index.cjs +1 -1
  120. package/dist/syncActions/index.js +1 -1
  121. package/dist/{syncActions-DToUhyP3.cjs → syncActions-CR7xvuIv.cjs} +2 -2
  122. package/dist/{syncActions-DToUhyP3.cjs.map → syncActions-CR7xvuIv.cjs.map} +1 -1
  123. package/dist/{syncActions-DV_aObTQ.js → syncActions-CU4cIGRf.js} +2 -2
  124. package/dist/{syncActions-DV_aObTQ.js.map → syncActions-CU4cIGRf.js.map} +1 -1
  125. package/dist/{types-CsRfoHQw.d.cts → types-B7FKoyfy.d.cts} +270 -2
  126. package/dist/{types-iU1Sc1IM.d.ts → types-BDgOF2WN.d.ts} +6 -29
  127. package/dist/types-BXKL0wTI.d.cts +85 -0
  128. package/dist/{types-DNldEa7i.d.ts → types-COb2O9c1.d.ts} +270 -2
  129. package/dist/{types-DjWubjvP.d.cts → types-CaBcgsT2.d.cts} +121 -53
  130. package/dist/{types-BljDxuWG.d.cts → types-DCARsJWs.d.cts} +6 -29
  131. package/dist/{types-CsVRsObb.d.ts → types-DFcj9YyQ.d.ts} +121 -53
  132. package/dist/types-DK1bSUNr.d.ts +85 -0
  133. package/package.json +27 -1
  134. package/surface/management.md +4 -0
  135. package/dist/admin-CbMOsfgs.js.map +0 -1
  136. package/dist/admin-Di-MmGFP.cjs.map +0 -1
  137. package/dist/management-CmgsWmf0.js.map +0 -1
  138. package/dist/management-Drs5G-hf.cjs.map +0 -1
  139. package/dist/oauth-CSBChWuf.cjs.map +0 -1
  140. package/dist/oauth-DOveZKUv.js.map +0 -1
  141. package/dist/sdk/queryService/index.cjs.map +0 -1
  142. package/dist/sdk/queryService/index.js.map +0 -1
  143. package/dist/semanticLayer-CfjDnmsY.js.map +0 -1
  144. package/dist/semanticLayer-D8D_3hk-.cjs.map +0 -1
@@ -2273,6 +2273,66 @@ type paths = {
2273
2273
  patch: operations['patch_/manage/projects/{projectId}/users/{userId}::ProjectUpdateAdministratorAction'];
2274
2274
  trace?: never;
2275
2275
  };
2276
+ '/manage/search': {
2277
+ parameters: {
2278
+ query?: never;
2279
+ header?: never;
2280
+ path?: never;
2281
+ cookie?: never;
2282
+ };
2283
+ /**
2284
+ * Search projects, organizations, maintainers and users
2285
+ * @description Looks up the entities an admin navigates to across the whole stack, by name (and email for users).
2286
+ *
2287
+ * #### Access
2288
+ *
2289
+ * Each type is searched only when the caller may read it; a type it may not read is **absent** from the
2290
+ * response, not an empty collection, so "not allowed" and "no hits" can be told apart.
2291
+ *
2292
+ * * super admin — every type
2293
+ * * `project`, `organization`, `maintainer` — any L1 support feature (such as `can-manage-features`
2294
+ * or `can-disable-projects`)
2295
+ * * `user` — feature `can-manage-users` (the rule of `GET /manage/users`)
2296
+ *
2297
+ * Any other admin gets 403; membership in a project, organization or maintainer grants nothing here.
2298
+ * Admin and session tokens are accepted.
2299
+ *
2300
+ * #### Matching
2301
+ *
2302
+ * * *q* - required, trimmed, 2 to 255 characters. Matched as a case-insensitive substring of the name,
2303
+ * and of the email for users. `%` and `_` match themselves. An all-digit `q` also matches the row with
2304
+ * that exact `id`.
2305
+ * * Deleted projects, organizations and maintainers and anonymized users are never found. Disabled
2306
+ * projects are found and carry `isDisabled: true`.
2307
+ * * *filter[types]* - comma-separated subset of `project`, `organization`, `maintainer`, `user`;
2308
+ * omitted, every type the caller may read is searched. A listed type the caller may not read is
2309
+ * left out like an unlisted one.
2310
+ *
2311
+ * #### Ranking and pagination
2312
+ *
2313
+ * Each type is its own cursor-paginated collection (`data`, `meta`, `links`). Every item carries its
2314
+ * `rank`: `0` exact id match, `1` the name (or user email) starts with `q`, `2` any other match.
2315
+ * Items are ordered `rank ASC, id DESC`.
2316
+ *
2317
+ * * *page[limit]* - items returned per type; default value: 10, maximum: 50
2318
+ * * *page[after]* - cursor of the last item already read, for a single type: it requires exactly one
2319
+ * type in `filter[types]`. It is the base64url (padding optional) of `{"rank": <integer>, "id": <integer>}`
2320
+ * copied from that item, e.g. `{"rank":2,"id":4088}` → `eyJyYW5rIjoyLCJpZCI6NDA4OH0`.
2321
+ * Each type's `links.next` already carries its next page, with `filter[types]` narrowed to that type.
2322
+ *
2323
+ * A `q` that is missing or too short or long, an unknown or repeated type, an undecodable cursor,
2324
+ * `page[after]` without exactly one type, and bare `limit` / `offset` or `page[offset]` are rejected
2325
+ * with a validation error.
2326
+ */
2327
+ get: operations['get_/manage/search::SearchAction'];
2328
+ put?: never;
2329
+ post?: never;
2330
+ delete?: never;
2331
+ options?: never;
2332
+ head?: never;
2333
+ patch?: never;
2334
+ trace?: never;
2335
+ };
2276
2336
  '/manage/storage-backend/{backendId}/activate': {
2277
2337
  parameters: {
2278
2338
  query?: never;
@@ -6228,6 +6288,92 @@ type components = {
6228
6288
  email: string;
6229
6289
  } | null;
6230
6290
  };
6291
+ ProjectSearchItem: {
6292
+ /**
6293
+ * @description Match rank: `0` exact id, `1` name prefix, `2` name substring.
6294
+ * @enum {integer}
6295
+ */
6296
+ rank: 0 | 1 | 2;
6297
+ /** @example 4088 */
6298
+ id: number;
6299
+ /** @example Sales reporting */
6300
+ name: string;
6301
+ organization: {
6302
+ /** @example 123 */
6303
+ id: number;
6304
+ /** @example Acme */
6305
+ name: string;
6306
+ };
6307
+ /** @description The project is disabled; it is still found. */
6308
+ isDisabled: boolean;
6309
+ };
6310
+ OrganizationSearchItem: {
6311
+ /**
6312
+ * @description Match rank: `0` exact id, `1` name prefix, `2` name substring.
6313
+ * @enum {integer}
6314
+ */
6315
+ rank: 0 | 1 | 2;
6316
+ /** @example 123 */
6317
+ id: number;
6318
+ /** @example Acme */
6319
+ name: string;
6320
+ maintainer: {
6321
+ /** @example 1 */
6322
+ id: number;
6323
+ /** @example Keboola */
6324
+ name: string | null;
6325
+ };
6326
+ };
6327
+ MaintainerSearchItem: {
6328
+ /**
6329
+ * @description Match rank: `0` exact id, `1` name prefix, `2` name substring.
6330
+ * @enum {integer}
6331
+ */
6332
+ rank: 0 | 1 | 2;
6333
+ /** @example 1 */
6334
+ id: number;
6335
+ /** @example Keboola */
6336
+ name: string | null;
6337
+ };
6338
+ UserSearchItem: {
6339
+ /**
6340
+ * @description Match rank: `0` exact id, `1` name or email prefix, `2` name or email substring.
6341
+ * @enum {integer}
6342
+ */
6343
+ rank: 0 | 1 | 2;
6344
+ /** @example 42 */
6345
+ id: number;
6346
+ /** @example John Doe */
6347
+ name: string;
6348
+ /** @example john.doe@keboola.com */
6349
+ email: string;
6350
+ };
6351
+ SearchResponse: {
6352
+ /** @description Projects matching `q`; absent when the caller may not read projects or `filter[types]` leaves them out. */
6353
+ project?: {
6354
+ data: components['schemas']['ProjectSearchItem'][];
6355
+ meta: components['schemas']['PaginationMeta'];
6356
+ links: components['schemas']['PaginationLinks'];
6357
+ };
6358
+ /** @description Organizations matching `q`; absent when the caller may not read organizations or `filter[types]` leaves them out. */
6359
+ organization?: {
6360
+ data: components['schemas']['OrganizationSearchItem'][];
6361
+ meta: components['schemas']['PaginationMeta'];
6362
+ links: components['schemas']['PaginationLinks'];
6363
+ };
6364
+ /** @description Maintainers matching `q`; absent when the caller may not read maintainers or `filter[types]` leaves them out. */
6365
+ maintainer?: {
6366
+ data: components['schemas']['MaintainerSearchItem'][];
6367
+ meta: components['schemas']['PaginationMeta'];
6368
+ links: components['schemas']['PaginationLinks'];
6369
+ };
6370
+ /** @description Users matching `q`; absent when the caller may not read users or `filter[types]` leaves them out. */
6371
+ user?: {
6372
+ data: components['schemas']['UserSearchItem'][];
6373
+ meta: components['schemas']['PaginationMeta'];
6374
+ links: components['schemas']['PaginationLinks'];
6375
+ };
6376
+ };
6231
6377
  StorageBackendResponse: {
6232
6378
  /** @description Root credentials identifier. */
6233
6379
  id: number;
@@ -15448,6 +15594,117 @@ interface operations {
15448
15594
  };
15449
15595
  };
15450
15596
  };
15597
+ 'get_/manage/search::SearchAction': {
15598
+ parameters: {
15599
+ query: {
15600
+ /**
15601
+ * @description Search term: 2 to 255 characters after trimming. An all-digit term also matches by exact `id`.
15602
+ * @example acme
15603
+ */
15604
+ q: string;
15605
+ /**
15606
+ * @description Pagination: `page[limit]` (default 10, maximum 50) and `page[after]`, the cursor of the last row read — base64url(json) of `{"rank": integer, "id": integer}`, rows ordered `rank ASC, id DESC`. Omit `page[after]` for the first page; `links.next` carries the next one.
15607
+ * @example {
15608
+ * "limit": 10
15609
+ * }
15610
+ */
15611
+ page?: {
15612
+ /** @description base64url(json) of `{"rank": integer, "id": integer}`. */
15613
+ after?: string;
15614
+ /** @default 10 */
15615
+ limit?: number;
15616
+ };
15617
+ /** @description Filters, JSON:API style: `filter[<name>]=<value>`. Filters combine with AND. */
15618
+ filter?: {
15619
+ /**
15620
+ * @description Comma-separated subset of `project`, `organization`, `maintainer`, `user`; omitted, every type the caller may read.
15621
+ * @example project,organization
15622
+ */
15623
+ types?: string;
15624
+ };
15625
+ };
15626
+ header?: never;
15627
+ path?: never;
15628
+ cookie?: never;
15629
+ };
15630
+ requestBody?: never;
15631
+ responses: {
15632
+ /** @description Hits grouped by type; only the types the caller may read and asked for are present. */
15633
+ 200: {
15634
+ headers: {
15635
+ [name: string]: unknown;
15636
+ };
15637
+ content: {
15638
+ /**
15639
+ * @example {
15640
+ * "project": {
15641
+ * "data": [
15642
+ * {
15643
+ * "rank": 1,
15644
+ * "id": 4088,
15645
+ * "name": "Acme reporting",
15646
+ * "organization": {
15647
+ * "id": 123,
15648
+ * "name": "Acme"
15649
+ * },
15650
+ * "isDisabled": false
15651
+ * }
15652
+ * ],
15653
+ * "meta": {
15654
+ * "total": 1,
15655
+ * "limit": 10,
15656
+ * "cursor": {
15657
+ * "param": "page[after]",
15658
+ * "encoding": "base64url(json)",
15659
+ * "fields": [
15660
+ * {
15661
+ * "name": "rank",
15662
+ * "type": "integer",
15663
+ * "nullable": false
15664
+ * },
15665
+ * {
15666
+ * "name": "id",
15667
+ * "type": "integer",
15668
+ * "nullable": false
15669
+ * }
15670
+ * ],
15671
+ * "order": "rank ASC, id DESC"
15672
+ * }
15673
+ * },
15674
+ * "links": {
15675
+ * "self": "https://connection.keboola.com/manage/search?q=acme&filter[types]=project&page[limit]=10",
15676
+ * "first": "https://connection.keboola.com/manage/search?q=acme&filter[types]=project&page[limit]=10",
15677
+ * "next": null
15678
+ * }
15679
+ * }
15680
+ * }
15681
+ */
15682
+ 'application/json': components['schemas']['SearchResponse'];
15683
+ };
15684
+ };
15685
+ /** @description Returned when `q`, `filter[types]` or the `page` parameters are invalid. */
15686
+ 400: {
15687
+ headers: {
15688
+ [name: string]: unknown;
15689
+ };
15690
+ content?: never;
15691
+ };
15692
+ /** @description Returned when the Manage token is missing or invalid. */
15693
+ 401: {
15694
+ headers: {
15695
+ [name: string]: unknown;
15696
+ };
15697
+ content?: never;
15698
+ };
15699
+ /** @description Returned when the token is not an admin or session token, or its admin may search no type. */
15700
+ 403: {
15701
+ headers: {
15702
+ [name: string]: unknown;
15703
+ };
15704
+ content?: never;
15705
+ };
15706
+ };
15707
+ };
15451
15708
  'post_/manage/storage-backend/{backendId}/activate::StorageBackendActivateAction': {
15452
15709
  parameters: {
15453
15710
  query?: never;
@@ -18456,6 +18713,14 @@ type ChangeProjectUserRoleBody = {
18456
18713
  role: User['role'];
18457
18714
  };
18458
18715
  type ChangeProjectUserRoleInput = ChangeProjectUserRolePath & ChangeProjectUserRoleBody;
18716
+ /** Query parameters of `GET /manage/search`: `q` plus the `filter[types]` and `page` deep objects. */
18717
+ type SearchQuery = OpenapiQueryType<paths['/manage/search']['get']>;
18718
+ /** `GET /manage/search`: one cursor-paginated collection per type the caller may read and asked for. */
18719
+ type SearchResult = OpenapiReturnType<paths['/manage/search']['get']>;
18720
+ type ProjectSearchItem = components['schemas']['ProjectSearchItem'];
18721
+ type OrganizationSearchItem = components['schemas']['OrganizationSearchItem'];
18722
+ type MaintainerSearchItem = components['schemas']['MaintainerSearchItem'];
18723
+ type UserSearchItem = components['schemas']['UserSearchItem'];
18459
18724
  /**
18460
18725
  * A storage backend as returned by `GET /manage/storage-backend/{id}`.
18461
18726
  *
@@ -18475,6 +18740,9 @@ type StorageBackend = Omit<components['schemas']['StorageBackendDetailResponse']
18475
18740
  /** BigQuery detail only; `null` = never configured. Overlay until connection#9129 deploys and
18476
18741
  * the schema is regenerated. */
18477
18742
  policyTagCapability?: PolicyTagCapability | null;
18743
+ /** BigQuery only, on detail and list: the GCP folder id, `null` when the backend has none.
18744
+ * Overlay until connection#9187 deploys and the schema is regenerated. */
18745
+ folderId?: string | null;
18478
18746
  };
18479
18747
  /** The stored policy-tag capability of a BigQuery backend, as the console `--status` shows it. */
18480
18748
  type PolicyTagCapability = {
@@ -18589,5 +18857,5 @@ type ProjectRetentionWorkspace = {
18589
18857
  } | null;
18590
18858
  };
18591
18859
  type ManagementToken = components['schemas']['ManageTokenVerifyResponse'];
18592
- export { MoveProjectBody as $, OrganizationProject as $n, PayAsYouGoBillingConfiguration as $t, UpdateStorageBackendBody as A, SamlConfigPath as An, GetAllFeaturesQuery as Ar, UpdateProjectInput as At, CreateProjectFeaturePath as B, AdminUser as Bn, ProjectInvitation as Br, User as Bt, StorageBackend as C, MaintainerInvitationPath as Cn, RotateFileStorageS3Input as Cr, SetProjectLimitsBody as Ct, StorageBackendProject as D, MaintainerUserPath as Dn, FeatureAdmin as Dr, SetProjectReviewersBody as Dt, StorageBackendPath as E, MaintainerUser as En, Feature as Er, SetProjectMetadataPath as Et, AssignProjectTemplateFeatureInput as F, UpdateMaintainerInput as Fn, DeletedProjectsPage as Fr, RemoveUserFeaturePath as Ft, GetProjectMetadataPath as G, Organization as Gn, CreatedApplicationToken as Gr, UserPath as Gt, CreateProjectInvitationPath as H, CreateOrganizationInvitationInput as Hn, ApplicationToken as Hr, UserListItem as Ht, ChangeProjectUserRoleBody as I, UpdateSamlConfigBody as In, DeletedProjectsStats as Ir, SetUserMetadataBody as It, JoinProjectBody as J, OrganizationInvitationPath as Jn, ConfirmProgrammaticProjectResult as Jt, GetProjectPath as K, OrganizationDetail as Kn, components as Kr, UserProjectMembership as Kt, ChangeProjectUserRoleInput as L, UpdateSamlConfigInput as Ln, DeletedProjectsStatus as Lr, SetUserMetadataInput as Lt, AddProjectUserBody as M, SetMaintainerMetadataBody as Mn, DeletedProjectPurgeResult as Mr, AddUserFeaturePath as Mt, AddProjectUserPath as N, SetMaintainerMetadataInput as Nn, DeletedProjectsListFilter as Nr, DeleteUserMetadataPath as Nt, UpdateBigqueryStorageBackendBody as O, MetadataItem as On, FeatureProject as Or, SetProjectReviewersPath as Ot, AssignFeatureBody as P, UpdateMaintainerBody as Pn, DeletedProjectsListQuery as Pr, GetUsersQuery as Pt, ListProjectUsersPath as Q, OrganizationPath as Qn, CreditPurchase as Qt, ChangeProjectUserRolePath as R, AddOrganizationUserBody as Rn, MaintainerInvitation as Rr, UpdateUserBody as Rt, PolicyTagEnablementGuideSchemaQuery as S, MaintainerInvitationDetail as Sn, RotateFileStorageS3Body as Sr, SetProjectDisabledInput as St, StorageBackendMaintainer as T, MaintainerPath as Tn, UpdateFileStorageBody as Tr, SetProjectMetadataBody as Tt, DeleteProjectInvitationPath as U, CreateOrganizationProjectBody as Un, ApplicationTokenScope as Ur, UserMaintainerMembership as Ut, CreateProjectInvitationBody as V, CreateOrganizationInvitationBody as Vn, ProjectJoinRequest as Vr, UserDetail as Vt, DeleteProjectMetadataPath as W, CreateOrganizationProjectInput as Wn, CreateApplicationTokenBody as Wr, UserOrganizationMembership as Wt, ListProjectInvitationsPath as X, OrganizationMaintainer as Xn, CreatePaymentRequestBody as Xt, JoinProjectInput as Y, OrganizationListItem as Yn, ProgrammaticProjectClaim as Yt, ListProjectJoinRequestsPath as Z, OrganizationMetadataItemPath as Zn, CreditPaymentRequest as Zt, PolicyTagCapability as _, CreateSamlConfigBody as _n, RotateFileStorageAbsInput as _r, RemoveProjectUserPath as _t, GetUiAppsQuery as a, X402PaymentStatus as an, SetUpBigQueryBody as ar, ProjectInvitationDetail as at, PolicyTagEnablementGuidePath as b, Maintainer as bn, RotateFileStorageGcsInput as br, Reviewer as bt, UiApp as c, AddMaintainerUserBody as cn, CreateFileStorageS3Body as cr, ProjectMetadataInput as ct, UiAppVersion as d, CompleteSamlSetupInput as dn, FileStorageGcs as dr, ProjectTemplate as dt, StripeCustomer as en, OrganizationUserPath as er, MoveProjectInput as et, CreateBigqueryServerSideStorageBackendBody as f, CreateMaintainerBody as fn, FileStorageProject as fr, ProjectTemplatePath as ft, GetStorageBackendProjectsQuery as g, CreateMaintainerOrganizationInput as gn, RotateFileStorageAbsBody as gr, RemoveProjectTemplateFeaturePath as gt, CreateSnowflakeStorageBackendResponse as h, CreateMaintainerOrganizationBody as hn, FileStorageS3 as hr, RemoveProjectLimitPath as ht, ReactivateWorkspaceResult as i, UpdateTopUpSettingBody as in, UpdateOrganizationInput as ir, ProjectInvitableRole as it, UpdateStorageBackendInput as j, SamlConfigSummary as jn, DeletedProject as jr, AddUserFeatureBody as jt, UpdateBigqueryStorageBackendInput as k, SamlConfigDetail as kn, FeatureType as kr, UpdateProjectBody as kt, UiAppDetail as l, AddMaintainerUserInput as ln, FileStorage as lr, ProjectMetadataItem as lt, CreateSnowflakeStorageBackendBody as m, CreateMaintainerInvitationInput as mn, FileStorageProjectsQuery as mr, RemoveProjectFeaturePath as mt, ProjectRetentionWorkspace as n, TopUpSetting as nn, SetOrganizationMetadataInput as nr, ProjectBase as nt, RegisterUiAppBody as o, X402_PAYMENT_STATUS as on, CreateFileStorageAbsBody as or, ProjectJoinRequestDetail as ot, CreateBigqueryStorageBackendBody as p, CreateMaintainerInvitationBody as pn, FileStorageProjectsPage as pr, ProjectWithFeatureWarnings as pt, GetProjectReviewersPath as q, OrganizationInvitationDetail as qn, paths as qr, ConfirmProgrammaticProjectBody as qt, ProjectRetentionWorkspaceState as r, UpdateStripeCustomerBody as rn, UpdateOrganizationBody as rr, ProjectFeatureWarning as rt, RenameUiAppBody as s, X402_TOP_UP_TYPE as sn, CreateFileStorageGcsBody as sr, ProjectJoinRequestPath as st, ManagementToken as t, StripeCustomerCard as tn, SetOrganizationMetadataBody as tr, Project as tt, UiAppRegistrationResult as u, CompleteSamlSetupBody as un, FileStorageAbs as ur, ProjectPath as ut, PolicyTagEnablementGuide as v, CreateSamlConfigInput as vn, RotateFileStorageAbsPath as vr, RequestProjectAccessBody as vt, StorageBackendBigquery as w, MaintainerMetadataItemPath as wn, RotateFileStorageS3Path as wr, SetProjectLimitsInput as wt, PolicyTagEnablementGuideQuery as x, MaintainerDetail as xn, RotateFileStorageGcsPath as xr, SetProjectDisabledBody as xt, PolicyTagEnablementGuideInput as y, CreateSamlConfigPath as yn, RotateFileStorageGcsBody as yr, RequestProjectAccessInput as yt, CreateProjectFeatureBody as z, AddOrganizationUserInput as zn, OrganizationInvitation as zr, UpdateUserInput as zt };
18593
- //# sourceMappingURL=types-DNldEa7i.d.ts.map
18860
+ export { GetProjectReviewersPath as $, OrganizationInvitationDetail as $n, paths as $r, ConfirmProgrammaticProjectBody as $t, UpdateStorageBackendBody as A, MaintainerMetadataItemPath as An, RotateFileStorageS3Path as Ar, SetProjectLimitsInput as At, AssignFeatureBody as B, UpdateMaintainerBody as Bn, DeletedProjectsListQuery as Br, GetUsersQuery as Bt, StorageBackend as C, CreateSamlConfigBody as Cn, RotateFileStorageAbsInput as Cr, RemoveProjectUserPath as Ct, StorageBackendProject as D, MaintainerDetail as Dn, RotateFileStorageGcsPath as Dr, SetProjectDisabledBody as Dt, StorageBackendPath as E, Maintainer as En, RotateFileStorageGcsInput as Er, Reviewer as Et, SearchQuery as F, SamlConfigDetail as Fn, FeatureType as Fr, UpdateProjectBody as Ft, CreateProjectFeatureBody as G, AddOrganizationUserInput as Gn, OrganizationInvitation as Gr, UpdateUserInput as Gt, ChangeProjectUserRoleBody as H, UpdateSamlConfigBody as Hn, DeletedProjectsStats as Hr, SetUserMetadataBody as Ht, SearchResult as I, SamlConfigPath as In, GetAllFeaturesQuery as Ir, UpdateProjectInput as It, CreateProjectInvitationPath as J, CreateOrganizationInvitationInput as Jn, ApplicationToken as Jr, UserListItem as Jt, CreateProjectFeaturePath as K, AdminUser as Kn, ProjectInvitation as Kr, User as Kt, UserSearchItem as L, SamlConfigSummary as Ln, DeletedProject as Lr, AddUserFeatureBody as Lt, MaintainerSearchItem as M, MaintainerUser as Mn, Feature as Mr, SetProjectMetadataPath as Mt, OrganizationSearchItem as N, MaintainerUserPath as Nn, FeatureAdmin as Nr, SetProjectReviewersBody as Nt, UpdateBigqueryStorageBackendBody as O, MaintainerInvitationDetail as On, RotateFileStorageS3Body as Or, SetProjectDisabledInput as Ot, ProjectSearchItem as P, MetadataItem as Pn, FeatureProject as Pr, SetProjectReviewersPath as Pt, GetProjectPath as Q, OrganizationDetail as Qn, components as Qr, UserProjectMembership as Qt, AddProjectUserBody as R, SetMaintainerMetadataBody as Rn, DeletedProjectPurgeResult as Rr, AddUserFeaturePath as Rt, PolicyTagEnablementGuideSchemaQuery as S, CreateMaintainerOrganizationInput as Sn, RotateFileStorageAbsBody as Sr, RemoveProjectTemplateFeaturePath as St, StorageBackendMaintainer as T, CreateSamlConfigPath as Tn, RotateFileStorageGcsBody as Tr, RequestProjectAccessInput as Tt, ChangeProjectUserRoleInput as U, UpdateSamlConfigInput as Un, DeletedProjectsStatus as Ur, SetUserMetadataInput as Ut, AssignProjectTemplateFeatureInput as V, UpdateMaintainerInput as Vn, DeletedProjectsPage as Vr, RemoveUserFeaturePath as Vt, ChangeProjectUserRolePath as W, AddOrganizationUserBody as Wn, MaintainerInvitation as Wr, UpdateUserBody as Wt, DeleteProjectMetadataPath as X, CreateOrganizationProjectInput as Xn, CreateApplicationTokenBody as Xr, UserOrganizationMembership as Xt, DeleteProjectInvitationPath as Y, CreateOrganizationProjectBody as Yn, ApplicationTokenScope as Yr, UserMaintainerMembership as Yt, GetProjectMetadataPath as Z, Organization as Zn, CreatedApplicationToken as Zr, UserPath as Zt, PolicyTagCapability as _, CompleteSamlSetupInput as _n, FileStorageGcs as _r, ProjectTemplate as _t, GetUiAppsQuery as a, PayAsYouGoBillingConfiguration as an, OrganizationProject as ar, MoveProjectBody as at, PolicyTagEnablementGuidePath as b, CreateMaintainerInvitationInput as bn, FileStorageProjectsQuery as br, RemoveProjectFeaturePath as bt, UiApp as c, TopUpSetting as cn, SetOrganizationMetadataInput as cr, ProjectBase as ct, UiAppVersion as d, X402PaymentStatus as dn, SetUpBigQueryBody as dr, ProjectInvitationDetail as dt, ConfirmProgrammaticProjectResult as en, OrganizationInvitationPath as er, JoinProjectBody as et, CreateBigqueryServerSideStorageBackendBody as f, X402_PAYMENT_STATUS as fn, CreateFileStorageAbsBody as fr, ProjectJoinRequestDetail as ft, GetStorageBackendProjectsQuery as g, CompleteSamlSetupBody as gn, FileStorageAbs as gr, ProjectPath as gt, CreateSnowflakeStorageBackendResponse as h, AddMaintainerUserInput as hn, FileStorage as hr, ProjectMetadataItem as ht, ReactivateWorkspaceResult as i, CreditPurchase as in, OrganizationPath as ir, ListProjectUsersPath as it, UpdateStorageBackendInput as j, MaintainerPath as jn, UpdateFileStorageBody as jr, SetProjectMetadataBody as jt, UpdateBigqueryStorageBackendInput as k, MaintainerInvitationPath as kn, RotateFileStorageS3Input as kr, SetProjectLimitsBody as kt, UiAppDetail as l, UpdateStripeCustomerBody as ln, UpdateOrganizationBody as lr, ProjectFeatureWarning as lt, CreateSnowflakeStorageBackendBody as m, AddMaintainerUserBody as mn, CreateFileStorageS3Body as mr, ProjectMetadataInput as mt, ProjectRetentionWorkspace as n, CreatePaymentRequestBody as nn, OrganizationMaintainer as nr, ListProjectInvitationsPath as nt, RegisterUiAppBody as o, StripeCustomer as on, OrganizationUserPath as or, MoveProjectInput as ot, CreateBigqueryStorageBackendBody as p, X402_TOP_UP_TYPE as pn, CreateFileStorageGcsBody as pr, ProjectJoinRequestPath as pt, CreateProjectInvitationBody as q, CreateOrganizationInvitationBody as qn, ProjectJoinRequest as qr, UserDetail as qt, ProjectRetentionWorkspaceState as r, CreditPaymentRequest as rn, OrganizationMetadataItemPath as rr, ListProjectJoinRequestsPath as rt, RenameUiAppBody as s, StripeCustomerCard as sn, SetOrganizationMetadataBody as sr, Project as st, ManagementToken as t, ProgrammaticProjectClaim as tn, OrganizationListItem as tr, JoinProjectInput as tt, UiAppRegistrationResult as u, UpdateTopUpSettingBody as un, UpdateOrganizationInput as ur, ProjectInvitableRole as ut, PolicyTagEnablementGuide as v, CreateMaintainerBody as vn, FileStorageProject as vr, ProjectTemplatePath as vt, StorageBackendBigquery as w, CreateSamlConfigInput as wn, RotateFileStorageAbsPath as wr, RequestProjectAccessBody as wt, PolicyTagEnablementGuideQuery as x, CreateMaintainerOrganizationBody as xn, FileStorageS3 as xr, RemoveProjectLimitPath as xt, PolicyTagEnablementGuideInput as y, CreateMaintainerInvitationBody as yn, FileStorageProjectsPage as yr, ProjectWithFeatureWarnings as yt, AddProjectUserPath as z, SetMaintainerMetadataInput as zn, DeletedProjectsListFilter as zr, DeleteUserMetadataPath as zt };
18861
+ //# sourceMappingURL=types-COb2O9c1.d.ts.map
@@ -210,14 +210,15 @@ type paths = {
210
210
  * registration is usable):
211
211
  *
212
212
  * * Repository permissions: Contents → Read-only; Organization permissions: Members →
213
- * Read-only (the install callback needs it to confirm the installer owns the GitHub
213
+ * Read-only (the callback needs it to confirm the user connecting owns the GitHub
214
214
  * organization).
215
- * * "Where can this GitHub App be installed?" → Any account.
216
- * * **"Request user authorization (OAuth) during installation" must be enabled**, and the
217
- * App's Callback URL set to this service's
218
- * `/platform-consumers/github-app/callback`. Without it GitHub sends no `code` with the
219
- * install redirect, the callback cannot prove the installer owns the installation they
220
- * returned with, and every connection attempt fails there.
215
+ * * "Where can this GitHub App be installed?" → Any account, for an App that third parties
216
+ * install.
217
+ * * The App's Callback URL list must include this service's
218
+ * `/platform-consumers/github-app/callback`: connecting goes through the App's OAuth web
219
+ * flow with that URL as `redirect_uri`. "Request user authorization (OAuth) during
220
+ * installation" is not needed; when it is on, the redirect GitHub sends right after an
221
+ * install has no `state` and is answered with directions to connect from Keboola.
221
222
  * * `clientId` / `clientSecret` come from the same App's page ("Client ID", "Generate a new
222
223
  * client secret") — they are not the App ID and private key.
223
224
  *
@@ -265,10 +266,11 @@ type paths = {
265
266
  cookie?: never;
266
267
  };
267
268
  /**
268
- * GitHub App install callback
269
- * @description Invoked by GitHub, not by API consumers. This is the App's Callback URL, configured once on
270
- * the GitHub side and identical for every install, which is why it carries no organization
271
- * segment — the organization is recovered from the install session that `state` resolves to.
269
+ * GitHub App OAuth callback
270
+ * @description Invoked by GitHub, not by API consumers. This is one of the App's Callback URLs, configured
271
+ * once on the GitHub side and identical for every connection, which is why it carries no
272
+ * organization segment — the organization is recovered from the install session that `state`
273
+ * resolves to.
272
274
  *
273
275
  * It is the only endpoint that records an installation, and it requires no Keboola credential.
274
276
  * Three things authorise it, all of them necessary:
@@ -276,22 +278,29 @@ type paths = {
276
278
  * 1. `state` must match the `__Host-orgInstallSession` cookie set when the flow started (the
277
279
  * legacy `oauthSessionId` cookie is ignored here);
278
280
  * 2. `state` must resolve to an unexpired install session;
279
- * 3. the installing user must own the account the installation belongs to. GitHub, asked as
280
- * the App, says which account that is (`GET /app/installations/{id}`); asked with the
281
- * user-to-server token obtained from `code`, it says whether the installer is an active
282
- * owner of that organization (`GET /user/memberships/orgs/{login}` → `role: admin`,
283
- * `state: active`) or, for a personal account, that very user (`GET /user`). Being a
284
- * collaborator or an ordinary member is not enough.
281
+ * 3. the user who authorized (`code`, exchanged for a user-to-server token) must own the
282
+ * account the bound installation belongs to: an active owner of that organization
283
+ * (`GET /user/memberships/orgs/{login}` → `role: admin`, `state: active`) or, for a
284
+ * personal account, that very user (`GET /user`). Being a collaborator or an ordinary
285
+ * member is not enough. This is why the App needs "Organization members: read".
285
286
  *
286
- * Point 3 is why the App needs "Request user authorization (OAuth) during installation" and
287
- * the "Organization members: read" permission. Installation ids are small sequential
288
- * integers, so without that confirmation anyone able to start an install for an organization
289
- * they do administer could bind a stranger's installation and mint read tokens on that
290
- * stranger's private repositories.
287
+ * Which installation is bound:
291
288
  *
292
- * When the installer is not a GitHub organization owner, GitHub returns
293
- * `setup_action=request` with no installation id: the installation is pending an owner's
294
- * approval and nothing is recorded.
289
+ * * **OAuth web flow** (started by `POST /authorize/organizations/{organizationId}`; only
290
+ * `code` and `state` come back): the App's installations the user can reach
291
+ * (`GET /user/installations`, all pages), narrowed to the `account` given at the start if
292
+ * any, each run through check 3. Exactly one owned installation is connected. None
293
+ * installed is a `400` and none owned a `403`, both naming the App's install page
294
+ * `{webBaseUrl}/apps/{slug}/installations/new`; several owned without `account` is a `400`
295
+ * naming them — start again with `account`.
296
+ * * **No `state`** — GitHub's redirect after an install started on GitHub, for an App that
297
+ * requests user authorization during installation: a `400` saying the connection has to
298
+ * be started from Keboola. Nothing is asked of GitHub or recorded.
299
+ *
300
+ * Any `installation_id` GitHub adds to the query is ignored. Installation ids are small
301
+ * sequential integers: believing one would let anyone able to start a connection for an
302
+ * organization they do administer bind a stranger's installation and mint read tokens on
303
+ * that stranger's private repositories.
295
304
  *
296
305
  * An organization holds at most one connection per GitHub account and registration. When the
297
306
  * account is already connected under a *different* installation id — the App was
@@ -318,23 +327,30 @@ type paths = {
318
327
  put?: never;
319
328
  /**
320
329
  * Connect a GitHub organization
321
- * @description Starts the GitHub App install flow and redirects to GitHub.
330
+ * @description Starts connecting a GitHub organization and redirects to the GitHub App's OAuth web flow,
331
+ * `{webBaseUrl}/login/oauth/authorize?client_id=…&redirect_uri=…&state=…`, where
332
+ * `redirect_uri` is this service's `/platform-consumers/github-app/callback`. GitHub signs
333
+ * the user in, asks them to authorize the App the first time, and returns to the callback,
334
+ * which connects the installation the user owns (or the one on `account`). The App must
335
+ * already be installed on the GitHub organization — by anyone, from anywhere; the callback
336
+ * links the install page if it is not.
322
337
  *
323
- * Submitted by the browser as a form — a top-level navigation — exactly like
324
- * `POST /authorize/{componentId}`, with the caller's Storage API token in the `token` form
325
- * field, verified with Storage API by this service. The token may belong to any project the
326
- * caller can reach: it establishes only *who* the caller is. A token without an admin
327
- * (component or legacy token) is refused with `403`.
338
+ * Submitted by the browser as a form — a top-level navigation from the organization's page
339
+ * in the Control Panel — with the caller's Manage API token in the `manageToken` form field,
340
+ * verified by this service with `GET /manage/tokens/verify`. The token must have a user
341
+ * behind it: the Control Panel's session token or a personal Manage token. An application
342
+ * token is refused with `403`; a token Manage API does not know, or reports as expired or
343
+ * disabled, with `401`. Storage API tokens and programmatic `kbc_pat_*` tokens are not
344
+ * accepted. The token establishes only *who* the
345
+ * caller is, and it is never stored.
328
346
  *
329
347
  * The organization is taken from the URL and the caller must be an administrator of it — `GET /manage/organizations/{id}/users` is
330
348
  * Connection's organization administrators listing, so appearing in it is the admin check.
331
- * Deriving the organization from the token instead would be unsafe — users belong to projects
332
- * across several organizations and the project-to-organization link is invisible in the UI.
349
+ * Super admins who are not listed are refused.
333
350
  *
334
351
  * The credentials row is created incomplete and only becomes usable once the install
335
352
  * callback records the installation. Starting again under the name of an incomplete row (an
336
- * abandoned tab, or an install that became an owner-approval request) replaces that row and
337
- * its session; otherwise the `app:expire-auth-sessions` cron sweeps it after an hour. A name
353
+ * abandoned tab or a refused callback) replaces that row and its session; otherwise the `app:expire-auth-sessions` cron sweeps it after an hour. A name
338
354
  * already taken by a completed connection is a `409`.
339
355
  *
340
356
  * The response sets the session cookie `__Host-orgInstallSession` (Secure, HttpOnly,
@@ -366,7 +382,8 @@ type paths = {
366
382
  /**
367
383
  * List connected GitHub organizations
368
384
  * @description Lists the GitHub accounts this Keboola organization has connected. Connections whose
369
- * install never completed are omitted.
385
+ * install never completed are omitted. The caller must be an administrator of the
386
+ * organization; see `ManageApiUserToken` for the accepted tokens.
370
387
  */
371
388
  get: operations['organizationCredentialsList'];
372
389
  put?: never;
@@ -423,7 +440,8 @@ type paths = {
423
440
  /**
424
441
  * Disconnect a GitHub organization
425
442
  * @description Removes the connection on the Keboola side. The App stays installed on GitHub until an
426
- * owner removes it there.
443
+ * owner removes it there. The caller must be an administrator of the organization; see
444
+ * `ManageApiUserToken` for the accepted tokens.
427
445
  */
428
446
  delete: operations['organizationCredentialsDelete'];
429
447
  options?: never;
@@ -555,8 +573,8 @@ type components = {
555
573
  webHost?: string;
556
574
  };
557
575
  OrganizationCredentialsInitRequest: {
558
- /** @description Storage API token of the caller; identifies who they are */
559
- token: string;
576
+ /** @description Manage API token of the caller with a user behind it (the Control Panel's session token or a personal Manage token); identifies who they are */
577
+ manageToken: string;
560
578
  /**
561
579
  * @description Unique within the organization.
562
580
  * @example acme-github
@@ -564,7 +582,7 @@ type components = {
564
582
  name: string;
565
583
  /**
566
584
  * Format: url
567
- * @description Where GitHub returns the user after the install completes. Must be https.
585
+ * @description Where the browser returns after the connection completes. Must be https.
568
586
  */
569
587
  returnUrl: string;
570
588
  description?: string | null;
@@ -573,6 +591,11 @@ type components = {
573
591
  * @example acme.ghe.com
574
592
  */
575
593
  host?: string | null;
594
+ /**
595
+ * @description The GitHub account (organization or user login, case-insensitive) to connect. Needed only when the caller owns several accounts the GitHub App is installed on; omitted, the callback connects the only one.
596
+ * @example acme
597
+ */
598
+ account?: string | null;
576
599
  };
577
600
  OrganizationCredentials: {
578
601
  /** Format: uuid */
@@ -590,8 +613,22 @@ type components = {
590
613
  */
591
614
  host?: string;
592
615
  creator?: {
616
+ /** @description ID of the token the connection was started with. */
593
617
  id?: string;
618
+ /** @description Description of that token; for the Control Panel's session token, the user's email. */
594
619
  description?: string | null;
620
+ /**
621
+ * @description Which API the token belongs to. Connections are started with a Manage API token; `storage` marks connections started with a Storage API token before that.
622
+ * @enum {string}
623
+ */
624
+ type?: 'manage' | 'storage';
625
+ /** @description The user behind the Manage API token. A session token expires after about an hour, so this is what still says who connected the organization. Null for `storage`. */
626
+ user?: {
627
+ /** @example 76 */
628
+ id?: string;
629
+ /** @example admin@keboola.com */
630
+ email?: string | null;
631
+ } | null;
595
632
  };
596
633
  /** Format: date-time */
597
634
  created?: string;
@@ -1247,15 +1284,11 @@ interface operations {
1247
1284
  };
1248
1285
  platformConsumerInstallCallback: {
1249
1286
  parameters: {
1250
- query: {
1251
- /** @description GitHub installation ID. */
1252
- installation_id?: string;
1253
- /** @description Temporary user authorization code. Present only when the App has "Request user authorization (OAuth) during installation" enabled; the callback exchanges it for a user-to-server token and verifies installation ownership with it. */
1287
+ query?: {
1288
+ /** @description Temporary user authorization code; exchanged for a user-to-server token that identifies the user and verifies installation ownership. Missing when the user did not authorize the App (`error=access_denied`). */
1254
1289
  code?: string;
1255
- /** @description What GitHub did. `request` means an owner still has to approve. */
1256
- setup_action?: 'install' | 'request' | 'update';
1257
- /** @description Opaque install-session ID issued when the flow started. */
1258
- state: string;
1290
+ /** @description Opaque install-session ID issued when the flow started. Required; GitHub omits it on the redirect after an install started on GitHub, which is answered with a `400`. */
1291
+ state?: string;
1259
1292
  };
1260
1293
  header?: never;
1261
1294
  path?: never;
@@ -1270,8 +1303,16 @@ interface operations {
1270
1303
  };
1271
1304
  content?: never;
1272
1305
  };
1273
- 400: components['responses']['400_BadRequest'];
1274
- /** @description The installer is not an active owner of the GitHub organization (or not the personal account) the installation belongs to, or the App lacks "Organization members: read" */
1306
+ /** @description No `state` (the connection has to be started from Keboola); no matching session cookie or an expired session; no `code`, or GitHub rejected it; the App is not installed on any account the user can reach (or on the requested `account`) — the message links the install page; or the user owns several accounts with the App installed and no `account` was given — the message names them */
1307
+ 400: {
1308
+ headers: {
1309
+ [name: string]: unknown;
1310
+ };
1311
+ content: {
1312
+ 'application/json': components['schemas']['Error'];
1313
+ };
1314
+ };
1315
+ /** @description The user owns none of the accounts the App is installed on that they can reach (or not the requested `account`): neither an active owner of the organization nor the personal account itself. The message links the install page, or names an organization enforcing SAML SSO the user's GitHub session is not authorized for. Also when the App lacks "Organization members: read" */
1275
1316
  403: {
1276
1317
  headers: {
1277
1318
  [name: string]: unknown;
@@ -1289,6 +1330,24 @@ interface operations {
1289
1330
  'application/json': components['schemas']['Error'];
1290
1331
  };
1291
1332
  };
1333
+ /** @description GitHub is rate limiting requests; see `Retry-After` */
1334
+ 429: {
1335
+ headers: {
1336
+ [name: string]: unknown;
1337
+ };
1338
+ content: {
1339
+ 'application/json': components['schemas']['Error'];
1340
+ };
1341
+ };
1342
+ /** @description GitHub failed or returned a malformed answer */
1343
+ 502: {
1344
+ headers: {
1345
+ [name: string]: unknown;
1346
+ };
1347
+ content: {
1348
+ 'application/json': components['schemas']['Error'];
1349
+ };
1350
+ };
1292
1351
  };
1293
1352
  };
1294
1353
  organizationCredentialsInit: {
@@ -1307,7 +1366,7 @@ interface operations {
1307
1366
  };
1308
1367
  };
1309
1368
  responses: {
1310
- /** @description Redirect to GitHub to install the App */
1369
+ /** @description Redirect to the GitHub App's OAuth web flow (`/login/oauth/authorize`) */
1311
1370
  302: {
1312
1371
  headers: {
1313
1372
  [name: string]: unknown;
@@ -1315,6 +1374,7 @@ interface operations {
1315
1374
  content?: never;
1316
1375
  };
1317
1376
  400: components['responses']['400_BadRequest'];
1377
+ 401: components['responses']['401_Unauthorized'];
1318
1378
  403: components['responses']['403_Forbidden'];
1319
1379
  /** @description A completed connection with this name already exists in the organization */
1320
1380
  409: {
@@ -1526,5 +1586,13 @@ type CredentialInput = ComponentPath & {
1526
1586
  type CreateCredentialInput = ComponentPath & Omit<CreateCredentialBody, '#data'> & {
1527
1587
  data: Record<string, unknown>;
1528
1588
  };
1529
- export { CredentialInput as a, GetCredentialsInput as c, Credential as i, CreateCredentialBody as n, CredentialPath as o, CreateCredentialInput as r, OrganizationConnection as s, ComponentPath as t };
1530
- //# sourceMappingURL=types-DjWubjvP.d.cts.map
1589
+ type OrganizationCredentials = OpenapiReturnType<paths['/organizations/{organizationId}/credentials']['get']>[number];
1590
+ type ManageTokenInput = {
1591
+ /** A Manage API token with a user behind it, e.g. the Control Panel's session token. */
1592
+ manageToken: string;
1593
+ };
1594
+ type GetOrganizationCredentialsInput = OpenapiPathType<paths['/organizations/{organizationId}/credentials']['get']> & ManageTokenInput;
1595
+ type DeleteOrganizationCredentialsInput = OpenapiPathType<paths['/organizations/{organizationId}/credentials/{id}']['delete']> & ManageTokenInput;
1596
+ type GetOrganizationConnectFormInput = OpenapiPathType<paths['/authorize/organizations/{organizationId}']['post']> & OpenapiBodyType<paths['/authorize/organizations/{organizationId}']['post']>;
1597
+ export { CredentialInput as a, GetOrganizationConnectFormInput as c, OrganizationCredentials as d, GetCredentialsInput as f, Credential as i, GetOrganizationCredentialsInput as l, CreateCredentialBody as n, CredentialPath as o, CreateCredentialInput as r, DeleteOrganizationCredentialsInput as s, ComponentPath as t, OrganizationConnection as u };
1598
+ //# sourceMappingURL=types-CaBcgsT2.d.cts.map