@thinkai/tai-api-contract 2.156.0 → 2.157.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.
@@ -1,7 +1,7 @@
1
1
  openapi: 3.0.3
2
2
  info:
3
3
  title: ThinkAI API
4
- version: 2.156.0
4
+ version: 2.157.0
5
5
  description: >
6
6
  Contract surface for the AI Driven SDLC backend used by ThinkAI.
7
7
  Workspace-scoped routes use `/workspaces/{workspaceId}/...`.
@@ -9343,10 +9343,11 @@ paths:
9343
9343
  summary: Slack install URL for Message Center
9344
9344
  operationId: getSlackInstallUrl
9345
9345
  description: >
9346
- Workspace admin only. Returns the Slack OAuth authorize URL. State is stored
9347
- server-side and names this workspace and the signed-in admin. Editor or viewer
9348
- is `403` with `code` `workspace_admin_required`. Missing Slack app settings are
9349
- `503` with `code` `slack_not_configured`.
9346
+ Workspace admin only. Returns the Slack OAuth authorize URL with
9347
+ `incoming-webhook` scope. State is stored server-side and names this workspace
9348
+ and the signed-in admin. Editor or viewer is `403` with `code`
9349
+ `workspace_admin_required`. Missing Slack app settings are `503` with `code`
9350
+ `slack_not_configured`.
9350
9351
  security:
9351
9352
  - bearerAuth: []
9352
9353
  parameters:
@@ -9393,10 +9394,11 @@ paths:
9393
9394
  description: >
9394
9395
  Browser return from Slack. The provider redirect does not include the API
9395
9396
  bearer token. `state` was issued by `getSlackInstallUrl` to a signed-in admin
9396
- and is single-use. The bot token is stored encrypted only when that user is
9397
- still a workspace admin. Success redirects to
9397
+ and is single-use. Install requests `incoming-webhook` only. The encrypted
9398
+ incoming-webhook URL and the channel Slack returns are stored only when that
9399
+ user is still a workspace admin. Success redirects to
9398
9400
  `{spa}/workspace/preferences?chat=slack`. Failures redirect to the same
9399
- page with `slack=error`. The token is never in the redirect.
9401
+ page with `slack=error`. The webhook URL is never in the redirect.
9400
9402
  parameters:
9401
9403
  - name: code
9402
9404
  in: query
@@ -9431,8 +9433,10 @@ paths:
9431
9433
  summary: Slack connection status
9432
9434
  operationId: getSlackIntegration
9433
9435
  description: >
9434
- Any workspace member. `{ connected, channelName }`. `channelName` is null
9435
- until an admin saves a channel. The bot token is never returned.
9436
+ Any workspace member. `{ connected, channelName }`. `connected` is true only
9437
+ when a decryptable install webhook is stored. `channelName` is the channel
9438
+ chosen on Slack's install screen (null when not connected). Secrets are
9439
+ never returned.
9436
9440
  security:
9437
9441
  - bearerAuth: []
9438
9442
  parameters:
@@ -9459,8 +9463,8 @@ paths:
9459
9463
  summary: Disconnect Slack
9460
9464
  operationId: deleteSlackIntegration
9461
9465
  description: >
9462
- Workspace admin only. Removes the bot token and saved channel. Later
9463
- Message Center delivery does not post to Slack.
9466
+ Workspace admin only. Removes the install webhook, optional bot token, and
9467
+ saved channel. Later Message Center delivery does not post to Slack.
9464
9468
  security:
9465
9469
  - bearerAuth: []
9466
9470
  parameters:
@@ -9489,13 +9493,15 @@ paths:
9489
9493
  /workspaces/{workspaceId}/integrations/slack/channel:
9490
9494
  put:
9491
9495
  tags: [Integrations]
9492
- summary: Save the Slack channel for Message Center
9496
+ summary: Change Slack channel (requires reinstall)
9493
9497
  operationId: putSlackChannel
9494
9498
  description: >
9495
- Workspace admin only. Body `{ channelId }`. Slack must already be connected.
9496
- The response is the same status object as `getSlackIntegration`, with the
9497
- channel name Slack returned. Unknown or malformed `channelId` is `400`
9498
- `invalid_slack_channel`. Not connected is `409` `slack_not_connected`.
9499
+ Workspace admin only. Body `{ channelId }`. The notification channel is
9500
+ chosen on Slack's install screen with the incoming webhook; this route does
9501
+ not rewrite channel metadata. When Slack is connected, the API returns `409`
9502
+ with `code` `slack_channel_reinstall_required` — reconnect via
9503
+ `getSlackInstallUrl` to pick a different channel. Malformed `channelId` is
9504
+ `400` `invalid_slack_channel`. Not connected is `409` `slack_not_connected`.
9499
9505
  security:
9500
9506
  - bearerAuth: []
9501
9507
  parameters:
@@ -9508,19 +9514,21 @@ paths:
9508
9514
  $ref: "#/components/schemas/SlackChannelBodyDto"
9509
9515
  responses:
9510
9516
  "200":
9511
- description: Channel saved
9517
+ description: >
9518
+ Not returned. The channel is chosen on Slack's install screen; when
9519
+ connected the API responds with `409` `slack_channel_reinstall_required`.
9512
9520
  content:
9513
9521
  application/json:
9514
9522
  schema:
9515
9523
  $ref: "#/components/schemas/SlackIntegrationStatusDto"
9516
9524
  "400":
9517
- description: channelId is missing, malformed, or unknown to Slack
9525
+ description: channelId is missing or malformed
9518
9526
  content:
9519
9527
  application/json:
9520
9528
  schema:
9521
9529
  $ref: "#/components/schemas/ErrorMessageDto"
9522
9530
  example:
9523
- error: Slack channel was not found
9531
+ error: channelId is required
9524
9532
  code: invalid_slack_channel
9525
9533
  "401":
9526
9534
  $ref: "#/components/responses/Unauthorized"
@@ -9540,23 +9548,22 @@ paths:
9540
9548
  schema:
9541
9549
  $ref: "#/components/schemas/ErrorMessageDto"
9542
9550
  "409":
9543
- description: Slack is not connected
9544
- content:
9545
- application/json:
9546
- schema:
9547
- $ref: "#/components/schemas/ErrorMessageDto"
9548
- example:
9549
- error: Slack is not connected
9550
- code: slack_not_connected
9551
- "502":
9552
- description: Slack rejected the lookup
9551
+ description: >
9552
+ Slack is not connected (`slack_not_connected`), or the channel cannot be
9553
+ changed without a new install (`slack_channel_reinstall_required`).
9553
9554
  content:
9554
9555
  application/json:
9555
9556
  schema:
9556
9557
  $ref: "#/components/schemas/ErrorMessageDto"
9557
- example:
9558
- error: Slack did not accept the channel
9559
- code: slack_request_failed
9558
+ examples:
9559
+ notConnected:
9560
+ value:
9561
+ error: Slack is not connected
9562
+ code: slack_not_connected
9563
+ reinstallRequired:
9564
+ value:
9565
+ error: Reconnect Slack to change the notification channel
9566
+ code: slack_channel_reinstall_required
9560
9567
 
9561
9568
  /workspaces/{workspaceId}/notification-preferences:
9562
9569
  get:
@@ -19646,7 +19653,8 @@ components:
19646
19653
  properties:
19647
19654
  url:
19648
19655
  type: string
19649
- description: Slack OAuth authorize URL. The bot token is not included.
19656
+ description: >
19657
+ Slack OAuth authorize URL (`incoming-webhook` scope). Secrets are not included.
19650
19658
 
19651
19659
  SlackIntegrationStatusDto:
19652
19660
  type: object
@@ -19655,10 +19663,13 @@ components:
19655
19663
  properties:
19656
19664
  connected:
19657
19665
  type: boolean
19666
+ description: >
19667
+ True only when a decryptable install webhook URL is stored for this workspace.
19658
19668
  channelName:
19659
19669
  type: string
19660
19670
  nullable: true
19661
- description: Saved channel name. Null until an admin saves a channel, and when disconnected.
19671
+ description: >
19672
+ Channel name returned by Slack at install time. Null when not connected.
19662
19673
 
19663
19674
  SlackChannelBodyDto:
19664
19675
  type: object
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkai/tai-api-contract",
3
- "version": "2.156.0",
3
+ "version": "2.157.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -3774,7 +3774,7 @@ export interface paths {
3774
3774
  };
3775
3775
  /**
3776
3776
  * Slack install URL for Message Center
3777
- * @description Workspace admin only. Returns the Slack OAuth authorize URL. State is stored server-side and names this workspace and the signed-in admin. Editor or viewer is `403` with `code` `workspace_admin_required`. Missing Slack app settings are `503` with `code` `slack_not_configured`.
3777
+ * @description Workspace admin only. Returns the Slack OAuth authorize URL with `incoming-webhook` scope. State is stored server-side and names this workspace and the signed-in admin. Editor or viewer is `403` with `code` `workspace_admin_required`. Missing Slack app settings are `503` with `code` `slack_not_configured`.
3778
3778
  */
3779
3779
  get: operations["getSlackInstallUrl"];
3780
3780
  put?: never;
@@ -3794,7 +3794,7 @@ export interface paths {
3794
3794
  };
3795
3795
  /**
3796
3796
  * Slack OAuth callback
3797
- * @description Browser return from Slack. The provider redirect does not include the API bearer token. `state` was issued by `getSlackInstallUrl` to a signed-in admin and is single-use. The bot token is stored encrypted only when that user is still a workspace admin. Success redirects to `{spa}/workspace/preferences?chat=slack`. Failures redirect to the same page with `slack=error`. The token is never in the redirect.
3797
+ * @description Browser return from Slack. The provider redirect does not include the API bearer token. `state` was issued by `getSlackInstallUrl` to a signed-in admin and is single-use. Install requests `incoming-webhook` only. The encrypted incoming-webhook URL and the channel Slack returns are stored only when that user is still a workspace admin. Success redirects to `{spa}/workspace/preferences?chat=slack`. Failures redirect to the same page with `slack=error`. The webhook URL is never in the redirect.
3798
3798
  */
3799
3799
  get: operations["getSlackOauthCallback"];
3800
3800
  put?: never;
@@ -3814,14 +3814,14 @@ export interface paths {
3814
3814
  };
3815
3815
  /**
3816
3816
  * Slack connection status
3817
- * @description Any workspace member. `{ connected, channelName }`. `channelName` is null until an admin saves a channel. The bot token is never returned.
3817
+ * @description Any workspace member. `{ connected, channelName }`. `connected` is true only when a decryptable install webhook is stored. `channelName` is the channel chosen on Slack's install screen (null when not connected). Secrets are never returned.
3818
3818
  */
3819
3819
  get: operations["getSlackIntegration"];
3820
3820
  put?: never;
3821
3821
  post?: never;
3822
3822
  /**
3823
3823
  * Disconnect Slack
3824
- * @description Workspace admin only. Removes the bot token and saved channel. Later Message Center delivery does not post to Slack.
3824
+ * @description Workspace admin only. Removes the install webhook, optional bot token, and saved channel. Later Message Center delivery does not post to Slack.
3825
3825
  */
3826
3826
  delete: operations["deleteSlackIntegration"];
3827
3827
  options?: never;
@@ -3838,8 +3838,8 @@ export interface paths {
3838
3838
  };
3839
3839
  get?: never;
3840
3840
  /**
3841
- * Save the Slack channel for Message Center
3842
- * @description Workspace admin only. Body `{ channelId }`. Slack must already be connected. The response is the same status object as `getSlackIntegration`, with the channel name Slack returned. Unknown or malformed `channelId` is `400` `invalid_slack_channel`. Not connected is `409` `slack_not_connected`.
3841
+ * Change Slack channel (requires reinstall)
3842
+ * @description Workspace admin only. Body `{ channelId }`. The notification channel is chosen on Slack's install screen with the incoming webhook; this route does not rewrite channel metadata. When Slack is connected, the API returns `409` with `code` `slack_channel_reinstall_required` — reconnect via `getSlackInstallUrl` to pick a different channel. Malformed `channelId` is `400` `invalid_slack_channel`. Not connected is `409` `slack_not_connected`.
3843
3843
  */
3844
3844
  put: operations["putSlackChannel"];
3845
3845
  post?: never;
@@ -8354,12 +8354,13 @@ export interface components {
8354
8354
  teams: components["schemas"]["NotificationChatChannelsDto"];
8355
8355
  };
8356
8356
  SlackInstallUrlDto: {
8357
- /** @description Slack OAuth authorize URL. The bot token is not included. */
8357
+ /** @description Slack OAuth authorize URL (`incoming-webhook` scope). Secrets are not included. */
8358
8358
  url: string;
8359
8359
  };
8360
8360
  SlackIntegrationStatusDto: {
8361
+ /** @description True only when a decryptable install webhook URL is stored for this workspace. */
8361
8362
  connected: boolean;
8362
- /** @description Saved channel name. Null until an admin saves a channel, and when disconnected. */
8363
+ /** @description Channel name returned by Slack at install time. Null when not connected. */
8363
8364
  channelName: string | null;
8364
8365
  };
8365
8366
  SlackChannelBodyDto: {
@@ -21397,7 +21398,7 @@ export interface operations {
21397
21398
  };
21398
21399
  };
21399
21400
  responses: {
21400
- /** @description Channel saved */
21401
+ /** @description Not returned. The channel is chosen on Slack's install screen; when connected the API responds with `409` `slack_channel_reinstall_required`. */
21401
21402
  200: {
21402
21403
  headers: {
21403
21404
  [name: string]: unknown;
@@ -21406,7 +21407,7 @@ export interface operations {
21406
21407
  "application/json": components["schemas"]["SlackIntegrationStatusDto"];
21407
21408
  };
21408
21409
  };
21409
- /** @description channelId is missing, malformed, or unknown to Slack */
21410
+ /** @description channelId is missing or malformed */
21410
21411
  400: {
21411
21412
  headers: {
21412
21413
  [name: string]: unknown;
@@ -21414,7 +21415,7 @@ export interface operations {
21414
21415
  content: {
21415
21416
  /**
21416
21417
  * @example {
21417
- * "error": "Slack channel was not found",
21418
+ * "error": "channelId is required",
21418
21419
  * "code": "invalid_slack_channel"
21419
21420
  * }
21420
21421
  */
@@ -21446,33 +21447,12 @@ export interface operations {
21446
21447
  "application/json": components["schemas"]["ErrorMessageDto"];
21447
21448
  };
21448
21449
  };
21449
- /** @description Slack is not connected */
21450
+ /** @description Slack is not connected (`slack_not_connected`), or the channel cannot be changed without a new install (`slack_channel_reinstall_required`). */
21450
21451
  409: {
21451
21452
  headers: {
21452
21453
  [name: string]: unknown;
21453
21454
  };
21454
21455
  content: {
21455
- /**
21456
- * @example {
21457
- * "error": "Slack is not connected",
21458
- * "code": "slack_not_connected"
21459
- * }
21460
- */
21461
- "application/json": components["schemas"]["ErrorMessageDto"];
21462
- };
21463
- };
21464
- /** @description Slack rejected the lookup */
21465
- 502: {
21466
- headers: {
21467
- [name: string]: unknown;
21468
- };
21469
- content: {
21470
- /**
21471
- * @example {
21472
- * "error": "Slack did not accept the channel",
21473
- * "code": "slack_request_failed"
21474
- * }
21475
- */
21476
21456
  "application/json": components["schemas"]["ErrorMessageDto"];
21477
21457
  };
21478
21458
  };