@thinkai/tai-api-contract 2.156.0 → 2.158.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.158.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}/...`.
@@ -6959,6 +6959,15 @@ paths:
6959
6959
  fixed: 0
6960
6960
  verificationGapCount: 0
6961
6961
  verificationGaps: []
6962
+ blockedRepoCount: 0
6963
+ topBlockingRuleTitle: null
6964
+ topBlockingRuleRepoCount: 0
6965
+ fixProof:
6966
+ windowDays: 30
6967
+ mergeRatePercent: null
6968
+ medianDaysToMerge: null
6969
+ clearedCount: 0
6970
+ rows: []
6962
6971
  dimensionAggregates: []
6963
6972
  fixStatusSummary:
6964
6973
  queued: 0
@@ -9343,10 +9352,11 @@ paths:
9343
9352
  summary: Slack install URL for Message Center
9344
9353
  operationId: getSlackInstallUrl
9345
9354
  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`.
9355
+ Workspace admin only. Returns the Slack OAuth authorize URL with
9356
+ `incoming-webhook` scope. State is stored server-side and names this workspace
9357
+ and the signed-in admin. Editor or viewer is `403` with `code`
9358
+ `workspace_admin_required`. Missing Slack app settings are `503` with `code`
9359
+ `slack_not_configured`.
9350
9360
  security:
9351
9361
  - bearerAuth: []
9352
9362
  parameters:
@@ -9393,10 +9403,11 @@ paths:
9393
9403
  description: >
9394
9404
  Browser return from Slack. The provider redirect does not include the API
9395
9405
  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
9406
+ and is single-use. Install requests `incoming-webhook` only. The encrypted
9407
+ incoming-webhook URL and the channel Slack returns are stored only when that
9408
+ user is still a workspace admin. Success redirects to
9398
9409
  `{spa}/workspace/preferences?chat=slack`. Failures redirect to the same
9399
- page with `slack=error`. The token is never in the redirect.
9410
+ page with `slack=error`. The webhook URL is never in the redirect.
9400
9411
  parameters:
9401
9412
  - name: code
9402
9413
  in: query
@@ -9431,8 +9442,10 @@ paths:
9431
9442
  summary: Slack connection status
9432
9443
  operationId: getSlackIntegration
9433
9444
  description: >
9434
- Any workspace member. `{ connected, channelName }`. `channelName` is null
9435
- until an admin saves a channel. The bot token is never returned.
9445
+ Any workspace member. `{ connected, channelName }`. `connected` is true only
9446
+ when a decryptable install webhook is stored. `channelName` is the channel
9447
+ chosen on Slack's install screen (null when not connected). Secrets are
9448
+ never returned.
9436
9449
  security:
9437
9450
  - bearerAuth: []
9438
9451
  parameters:
@@ -9459,8 +9472,8 @@ paths:
9459
9472
  summary: Disconnect Slack
9460
9473
  operationId: deleteSlackIntegration
9461
9474
  description: >
9462
- Workspace admin only. Removes the bot token and saved channel. Later
9463
- Message Center delivery does not post to Slack.
9475
+ Workspace admin only. Removes the install webhook, optional bot token, and
9476
+ saved channel. Later Message Center delivery does not post to Slack.
9464
9477
  security:
9465
9478
  - bearerAuth: []
9466
9479
  parameters:
@@ -9489,13 +9502,15 @@ paths:
9489
9502
  /workspaces/{workspaceId}/integrations/slack/channel:
9490
9503
  put:
9491
9504
  tags: [Integrations]
9492
- summary: Save the Slack channel for Message Center
9505
+ summary: Change Slack channel (requires reinstall)
9493
9506
  operationId: putSlackChannel
9494
9507
  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`.
9508
+ Workspace admin only. Body `{ channelId }`. The notification channel is
9509
+ chosen on Slack's install screen with the incoming webhook; this route does
9510
+ not rewrite channel metadata. When Slack is connected, the API returns `409`
9511
+ with `code` `slack_channel_reinstall_required` — reconnect via
9512
+ `getSlackInstallUrl` to pick a different channel. Malformed `channelId` is
9513
+ `400` `invalid_slack_channel`. Not connected is `409` `slack_not_connected`.
9499
9514
  security:
9500
9515
  - bearerAuth: []
9501
9516
  parameters:
@@ -9508,19 +9523,21 @@ paths:
9508
9523
  $ref: "#/components/schemas/SlackChannelBodyDto"
9509
9524
  responses:
9510
9525
  "200":
9511
- description: Channel saved
9526
+ description: >
9527
+ Not returned. The channel is chosen on Slack's install screen; when
9528
+ connected the API responds with `409` `slack_channel_reinstall_required`.
9512
9529
  content:
9513
9530
  application/json:
9514
9531
  schema:
9515
9532
  $ref: "#/components/schemas/SlackIntegrationStatusDto"
9516
9533
  "400":
9517
- description: channelId is missing, malformed, or unknown to Slack
9534
+ description: channelId is missing or malformed
9518
9535
  content:
9519
9536
  application/json:
9520
9537
  schema:
9521
9538
  $ref: "#/components/schemas/ErrorMessageDto"
9522
9539
  example:
9523
- error: Slack channel was not found
9540
+ error: channelId is required
9524
9541
  code: invalid_slack_channel
9525
9542
  "401":
9526
9543
  $ref: "#/components/responses/Unauthorized"
@@ -9540,23 +9557,22 @@ paths:
9540
9557
  schema:
9541
9558
  $ref: "#/components/schemas/ErrorMessageDto"
9542
9559
  "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
9560
+ description: >
9561
+ Slack is not connected (`slack_not_connected`), or the channel cannot be
9562
+ changed without a new install (`slack_channel_reinstall_required`).
9553
9563
  content:
9554
9564
  application/json:
9555
9565
  schema:
9556
9566
  $ref: "#/components/schemas/ErrorMessageDto"
9557
- example:
9558
- error: Slack did not accept the channel
9559
- code: slack_request_failed
9567
+ examples:
9568
+ notConnected:
9569
+ value:
9570
+ error: Slack is not connected
9571
+ code: slack_not_connected
9572
+ reinstallRequired:
9573
+ value:
9574
+ error: Reconnect Slack to change the notification channel
9575
+ code: slack_channel_reinstall_required
9560
9576
 
9561
9577
  /workspaces/{workspaceId}/notification-preferences:
9562
9578
  get:
@@ -11508,7 +11524,7 @@ components:
11508
11524
  description: Allowlisted repository sort field.
11509
11525
  schema:
11510
11526
  type: string
11511
- enum: [repoName, overallScore, lastAnalyzed, language]
11527
+ enum: [repoName, overallScore, lastAnalyzed, language, blockingRule]
11512
11528
  default: overallScore
11513
11529
  CodeInsightsRepoSort:
11514
11530
  name: sort
@@ -18464,6 +18480,15 @@ components:
18464
18480
  scores; live CI health stays in SDLC Insights.
18465
18481
  items:
18466
18482
  $ref: "#/components/schemas/ScanImprovementDto"
18483
+ blockingRule:
18484
+ type: object
18485
+ nullable: true
18486
+ allOf:
18487
+ - $ref: "#/components/schemas/ReadinessBlockingRuleDto"
18488
+ description: >
18489
+ The one open gap or partial criterion on the latest succeeded scan that is not
18490
+ already fixed. Null when the repo is not blocked. Severity ranks first, then
18491
+ dimension weight, then rubric id.
18467
18492
 
18468
18493
  LinkedRolePendingDto:
18469
18494
  type: object
@@ -18642,10 +18667,27 @@ components:
18642
18667
  description: See RepoReadinessScoreDto.scanImprovements.
18643
18668
  items:
18644
18669
  $ref: "#/components/schemas/ScanImprovementDto"
18670
+ blockingRule:
18671
+ type: object
18672
+ nullable: true
18673
+ allOf:
18674
+ - $ref: "#/components/schemas/ReadinessBlockingRuleDto"
18675
+ description: See RepoReadinessScoreDto.blockingRule.
18645
18676
 
18646
18677
  AgenticFoundationDashboardSummaryDto:
18647
18678
  type: object
18648
- required: [repoCount, averageOverallScore, issueCount, criticalIssueCount, issuesByFixStatus]
18679
+ required:
18680
+ [
18681
+ repoCount,
18682
+ averageOverallScore,
18683
+ issueCount,
18684
+ criticalIssueCount,
18685
+ issuesByFixStatus,
18686
+ blockedRepoCount,
18687
+ topBlockingRuleTitle,
18688
+ topBlockingRuleRepoCount,
18689
+ fixProof,
18690
+ ]
18649
18691
  properties:
18650
18692
  repoCount:
18651
18693
  type: integer
@@ -18697,6 +18739,91 @@ components:
18697
18739
  both gaps appears twice. Does not change averageOverallScore.
18698
18740
  items:
18699
18741
  $ref: "#/components/schemas/AgenticFoundationVerificationGapDto"
18742
+ blockedRepoCount:
18743
+ type: integer
18744
+ minimum: 0
18745
+ description: >
18746
+ Non-archived repos whose latest succeeded scan still has a gap or partial
18747
+ criterion that is not fixed. A repo with no open gap is not blocked.
18748
+ topBlockingRuleTitle:
18749
+ type: string
18750
+ nullable: true
18751
+ description: Rule title that blocks the most repos. Null when blockedRepoCount is 0.
18752
+ topBlockingRuleRepoCount:
18753
+ type: integer
18754
+ minimum: 0
18755
+ description: How many blocked repos share topBlockingRuleTitle.
18756
+ fixProof:
18757
+ $ref: "#/components/schemas/AgenticFoundationFixProofDto"
18758
+
18759
+ ReadinessBlockingRuleDto:
18760
+ type: object
18761
+ additionalProperties: false
18762
+ required: [rubricId, title, severity]
18763
+ properties:
18764
+ rubricId:
18765
+ type: string
18766
+ title:
18767
+ type: string
18768
+ severity:
18769
+ type: string
18770
+ enum: [critical, high, medium, low]
18771
+
18772
+ AgenticFoundationFixProofDto:
18773
+ type: object
18774
+ additionalProperties: false
18775
+ required: [windowDays, mergeRatePercent, medianDaysToMerge, clearedCount, rows]
18776
+ properties:
18777
+ windowDays:
18778
+ type: integer
18779
+ minimum: 1
18780
+ mergeRatePercent:
18781
+ type: integer
18782
+ minimum: 0
18783
+ maximum: 100
18784
+ nullable: true
18785
+ description: >
18786
+ Rounded percent of terminal fixes in the window that merged (merged / merged + failed).
18787
+ Null when there is no terminal fix.
18788
+ medianDaysToMerge:
18789
+ type: number
18790
+ nullable: true
18791
+ description: Median days from created_at to merge. Null when nothing merged in the window.
18792
+ clearedCount:
18793
+ type: integer
18794
+ minimum: 0
18795
+ description: Merged fixes in the window whose next scan marked the criterion met.
18796
+ rows:
18797
+ type: array
18798
+ maxItems: 10
18799
+ items:
18800
+ $ref: "#/components/schemas/AgenticFoundationFixProofRowDto"
18801
+
18802
+ AgenticFoundationFixProofRowDto:
18803
+ type: object
18804
+ additionalProperties: false
18805
+ required: [repoName, ruleTitle, scoreBefore, scoreAfter, cleared]
18806
+ properties:
18807
+ repoName:
18808
+ type: string
18809
+ ruleTitle:
18810
+ type: string
18811
+ scoreBefore:
18812
+ type: integer
18813
+ minimum: 0
18814
+ maximum: 100
18815
+ nullable: true
18816
+ scoreAfter:
18817
+ type: integer
18818
+ minimum: 0
18819
+ maximum: 100
18820
+ nullable: true
18821
+ cleared:
18822
+ type: boolean
18823
+ nullable: true
18824
+ description: >
18825
+ True when the first succeeded scan after the merge marked the criterion met.
18826
+ Null when that scan has not run yet.
18700
18827
 
18701
18828
  AgenticFoundationVerificationGapDto:
18702
18829
  type: object
@@ -19646,7 +19773,8 @@ components:
19646
19773
  properties:
19647
19774
  url:
19648
19775
  type: string
19649
- description: Slack OAuth authorize URL. The bot token is not included.
19776
+ description: >
19777
+ Slack OAuth authorize URL (`incoming-webhook` scope). Secrets are not included.
19650
19778
 
19651
19779
  SlackIntegrationStatusDto:
19652
19780
  type: object
@@ -19655,10 +19783,13 @@ components:
19655
19783
  properties:
19656
19784
  connected:
19657
19785
  type: boolean
19786
+ description: >
19787
+ True only when a decryptable install webhook URL is stored for this workspace.
19658
19788
  channelName:
19659
19789
  type: string
19660
19790
  nullable: true
19661
- description: Saved channel name. Null until an admin saves a channel, and when disconnected.
19791
+ description: >
19792
+ Channel name returned by Slack at install time. Null when not connected.
19662
19793
 
19663
19794
  SlackChannelBodyDto:
19664
19795
  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.158.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;
@@ -7835,6 +7835,8 @@ export interface components {
7835
7835
  linkedRoleAssessment?: components["schemas"]["LinkedRoleAssessmentDto"] | null;
7836
7836
  /** @description Repo-level "Improve this scan" recommendations for Agentic Foundation CI setup (at most three). Omitted when the scan emitted none. Does not change criterion scores; live CI health stays in SDLC Insights. */
7837
7837
  scanImprovements?: components["schemas"]["ScanImprovementDto"][];
7838
+ /** @description The one open gap or partial criterion on the latest succeeded scan that is not already fixed. Null when the repo is not blocked. Severity ranks first, then dimension weight, then rubric id. */
7839
+ blockingRule?: components["schemas"]["ReadinessBlockingRuleDto"] | null;
7838
7840
  };
7839
7841
  LinkedRolePendingDto: {
7840
7842
  /** @description Topology role key, e.g. terraform | gitops | ci_templates | api_contracts. */
@@ -7915,6 +7917,8 @@ export interface components {
7915
7917
  linkedRoleAssessment?: components["schemas"]["LinkedRoleAssessmentDto"] | null;
7916
7918
  /** @description See RepoReadinessScoreDto.scanImprovements. */
7917
7919
  scanImprovements?: components["schemas"]["ScanImprovementDto"][];
7920
+ /** @description See RepoReadinessScoreDto.blockingRule. */
7921
+ blockingRule?: components["schemas"]["ReadinessBlockingRuleDto"] | null;
7918
7922
  };
7919
7923
  AgenticFoundationDashboardSummaryDto: {
7920
7924
  repoCount: number;
@@ -7936,6 +7940,37 @@ export interface components {
7936
7940
  verificationGapCount?: number;
7937
7941
  /** @description Up to 12 repo and reason pairs for verificationGapCount. A repo with both gaps appears twice. Does not change averageOverallScore. */
7938
7942
  verificationGaps?: components["schemas"]["AgenticFoundationVerificationGapDto"][];
7943
+ /** @description Non-archived repos whose latest succeeded scan still has a gap or partial criterion that is not fixed. A repo with no open gap is not blocked. */
7944
+ blockedRepoCount: number;
7945
+ /** @description Rule title that blocks the most repos. Null when blockedRepoCount is 0. */
7946
+ topBlockingRuleTitle: string | null;
7947
+ /** @description How many blocked repos share topBlockingRuleTitle. */
7948
+ topBlockingRuleRepoCount: number;
7949
+ fixProof: components["schemas"]["AgenticFoundationFixProofDto"];
7950
+ };
7951
+ ReadinessBlockingRuleDto: {
7952
+ rubricId: string;
7953
+ title: string;
7954
+ /** @enum {string} */
7955
+ severity: "critical" | "high" | "medium" | "low";
7956
+ };
7957
+ AgenticFoundationFixProofDto: {
7958
+ windowDays: number;
7959
+ /** @description Rounded percent of terminal fixes in the window that merged (merged / merged + failed). Null when there is no terminal fix. */
7960
+ mergeRatePercent: number | null;
7961
+ /** @description Median days from created_at to merge. Null when nothing merged in the window. */
7962
+ medianDaysToMerge: number | null;
7963
+ /** @description Merged fixes in the window whose next scan marked the criterion met. */
7964
+ clearedCount: number;
7965
+ rows: components["schemas"]["AgenticFoundationFixProofRowDto"][];
7966
+ };
7967
+ AgenticFoundationFixProofRowDto: {
7968
+ repoName: string;
7969
+ ruleTitle: string;
7970
+ scoreBefore: number | null;
7971
+ scoreAfter: number | null;
7972
+ /** @description True when the first succeeded scan after the merge marked the criterion met. Null when that scan has not run yet. */
7973
+ cleared: boolean | null;
7939
7974
  };
7940
7975
  AgenticFoundationVerificationGapDto: {
7941
7976
  repoName: string;
@@ -8354,12 +8389,13 @@ export interface components {
8354
8389
  teams: components["schemas"]["NotificationChatChannelsDto"];
8355
8390
  };
8356
8391
  SlackInstallUrlDto: {
8357
- /** @description Slack OAuth authorize URL. The bot token is not included. */
8392
+ /** @description Slack OAuth authorize URL (`incoming-webhook` scope). Secrets are not included. */
8358
8393
  url: string;
8359
8394
  };
8360
8395
  SlackIntegrationStatusDto: {
8396
+ /** @description True only when a decryptable install webhook URL is stored for this workspace. */
8361
8397
  connected: boolean;
8362
- /** @description Saved channel name. Null until an admin saves a channel, and when disconnected. */
8398
+ /** @description Channel name returned by Slack at install time. Null when not connected. */
8363
8399
  channelName: string | null;
8364
8400
  };
8365
8401
  SlackChannelBodyDto: {
@@ -10800,7 +10836,7 @@ export interface components {
10800
10836
  /** @description Sort direction. */
10801
10837
  PaginationOrder: "asc" | "desc";
10802
10838
  /** @description Allowlisted repository sort field. */
10803
- ReadinessRepoSort: "repoName" | "overallScore" | "lastAnalyzed" | "language";
10839
+ ReadinessRepoSort: "repoName" | "overallScore" | "lastAnalyzed" | "language" | "blockingRule";
10804
10840
  /** @description Allowlisted Code Insights repo sort field. */
10805
10841
  CodeInsightsRepoSort: "repoName" | "locTotal" | "ccAvg" | "dupPct" | "lastMeasuredAt";
10806
10842
  /** @description Case-insensitive substring filter on repo name / provider slug. */
@@ -11111,6 +11147,9 @@ export type LinkedRolePendingDto = components['schemas']['LinkedRolePendingDto']
11111
11147
  export type LinkedRoleAssessmentDto = components['schemas']['LinkedRoleAssessmentDto'];
11112
11148
  export type RepoReadinessScoreDetailDto = components['schemas']['RepoReadinessScoreDetailDto'];
11113
11149
  export type AgenticFoundationDashboardSummaryDto = components['schemas']['AgenticFoundationDashboardSummaryDto'];
11150
+ export type ReadinessBlockingRuleDto = components['schemas']['ReadinessBlockingRuleDto'];
11151
+ export type AgenticFoundationFixProofDto = components['schemas']['AgenticFoundationFixProofDto'];
11152
+ export type AgenticFoundationFixProofRowDto = components['schemas']['AgenticFoundationFixProofRowDto'];
11114
11153
  export type AgenticFoundationVerificationGapDto = components['schemas']['AgenticFoundationVerificationGapDto'];
11115
11154
  export type PageMetaDto = components['schemas']['PageMetaDto'];
11116
11155
  export type ReadinessEligibilityLimitsDto = components['schemas']['ReadinessEligibilityLimitsDto'];
@@ -21397,7 +21436,7 @@ export interface operations {
21397
21436
  };
21398
21437
  };
21399
21438
  responses: {
21400
- /** @description Channel saved */
21439
+ /** @description Not returned. The channel is chosen on Slack's install screen; when connected the API responds with `409` `slack_channel_reinstall_required`. */
21401
21440
  200: {
21402
21441
  headers: {
21403
21442
  [name: string]: unknown;
@@ -21406,7 +21445,7 @@ export interface operations {
21406
21445
  "application/json": components["schemas"]["SlackIntegrationStatusDto"];
21407
21446
  };
21408
21447
  };
21409
- /** @description channelId is missing, malformed, or unknown to Slack */
21448
+ /** @description channelId is missing or malformed */
21410
21449
  400: {
21411
21450
  headers: {
21412
21451
  [name: string]: unknown;
@@ -21414,7 +21453,7 @@ export interface operations {
21414
21453
  content: {
21415
21454
  /**
21416
21455
  * @example {
21417
- * "error": "Slack channel was not found",
21456
+ * "error": "channelId is required",
21418
21457
  * "code": "invalid_slack_channel"
21419
21458
  * }
21420
21459
  */
@@ -21446,33 +21485,12 @@ export interface operations {
21446
21485
  "application/json": components["schemas"]["ErrorMessageDto"];
21447
21486
  };
21448
21487
  };
21449
- /** @description Slack is not connected */
21488
+ /** @description Slack is not connected (`slack_not_connected`), or the channel cannot be changed without a new install (`slack_channel_reinstall_required`). */
21450
21489
  409: {
21451
21490
  headers: {
21452
21491
  [name: string]: unknown;
21453
21492
  };
21454
21493
  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
21494
  "application/json": components["schemas"]["ErrorMessageDto"];
21477
21495
  };
21478
21496
  };