@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.
- package/dist/generated/openapi.d.ts +52 -34
- package/dist/generated/openapi.d.ts.map +1 -1
- package/openapi/openapi.yaml +168 -37
- package/package.json +1 -1
- package/src/generated/openapi.ts +52 -34
package/openapi/openapi.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
openapi: 3.0.3
|
|
2
2
|
info:
|
|
3
3
|
title: ThinkAI API
|
|
4
|
-
version: 2.
|
|
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
|
|
9347
|
-
server-side and names this workspace
|
|
9348
|
-
is `403` with `code`
|
|
9349
|
-
`503` with `code`
|
|
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.
|
|
9397
|
-
|
|
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
|
|
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 }`. `
|
|
9435
|
-
|
|
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
|
|
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:
|
|
9505
|
+
summary: Change Slack channel (requires reinstall)
|
|
9493
9506
|
operationId: putSlackChannel
|
|
9494
9507
|
description: >
|
|
9495
|
-
Workspace admin only. Body `{ channelId }`.
|
|
9496
|
-
|
|
9497
|
-
channel
|
|
9498
|
-
`
|
|
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:
|
|
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
|
|
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:
|
|
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:
|
|
9544
|
-
|
|
9545
|
-
|
|
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
|
-
|
|
9558
|
-
|
|
9559
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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
package/src/generated/openapi.ts
CHANGED
|
@@ -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
|
|
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 }`. `
|
|
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
|
-
*
|
|
3842
|
-
* @description Workspace admin only. Body `{ channelId }`. Slack
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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": "
|
|
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
|
};
|