@thinkai/tai-api-contract 2.200.0 → 2.202.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 +139 -0
- package/dist/generated/openapi.d.ts.map +1 -1
- package/openapi/openapi.yaml +181 -1
- package/openapi/x-test-status-map.json +10 -0
- package/package.json +3 -3
- package/src/generated/openapi.ts +139 -0
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.202.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}/...`.
|
|
@@ -2921,6 +2921,99 @@ paths:
|
|
|
2921
2921
|
schema:
|
|
2922
2922
|
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2923
2923
|
|
|
2924
|
+
/workspaces/{workspaceId}/agentic-foundation/dimension-targets:
|
|
2925
|
+
get:
|
|
2926
|
+
tags: [AIReadiness]
|
|
2927
|
+
summary: Get Agentic Foundation dimension settings
|
|
2928
|
+
description: >
|
|
2929
|
+
Workspace `disabledDimensions` (scoring off workspace-wide), target percent per
|
|
2930
|
+
readiness dimension, plus optional per-repository overrides. Omitted targets mean
|
|
2931
|
+
100. A repository override may disable scoring for a dimension and set its own
|
|
2932
|
+
target; it cannot re-enable a workspace-disabled dimension. Empty object means
|
|
2933
|
+
every dimension is scored at 100. Member-level read access.
|
|
2934
|
+
operationId: getWorkspaceDimensionTargets
|
|
2935
|
+
parameters:
|
|
2936
|
+
- $ref: "#/components/parameters/WorkspaceId"
|
|
2937
|
+
responses:
|
|
2938
|
+
"200":
|
|
2939
|
+
description: Current targets (may be empty)
|
|
2940
|
+
content:
|
|
2941
|
+
application/json:
|
|
2942
|
+
schema:
|
|
2943
|
+
$ref: "#/components/schemas/DimensionTargetsDto"
|
|
2944
|
+
"401":
|
|
2945
|
+
$ref: "#/components/responses/Unauthorized"
|
|
2946
|
+
"403":
|
|
2947
|
+
$ref: "#/components/responses/Forbidden"
|
|
2948
|
+
"404":
|
|
2949
|
+
description: Workspace does not exist or malformed workspaceId
|
|
2950
|
+
content:
|
|
2951
|
+
application/json:
|
|
2952
|
+
schema:
|
|
2953
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2954
|
+
put:
|
|
2955
|
+
tags: [AIReadiness]
|
|
2956
|
+
summary: Set Agentic Foundation dimension settings
|
|
2957
|
+
description: >
|
|
2958
|
+
Full-replace workspace dimension settings and repository overrides.
|
|
2959
|
+
`disabledDimensions` turns scoring off for those dimensions workspace-wide.
|
|
2960
|
+
Omit a target or send 100 to keep the default. `PUT {}` or `null` clears
|
|
2961
|
+
settings so every dimension is scored at 100. Repository ids must be in
|
|
2962
|
+
Agentic Foundation scan scope. Requires workspace **admin**.
|
|
2963
|
+
operationId: putWorkspaceDimensionTargets
|
|
2964
|
+
parameters:
|
|
2965
|
+
- $ref: "#/components/parameters/WorkspaceId"
|
|
2966
|
+
requestBody:
|
|
2967
|
+
required: true
|
|
2968
|
+
content:
|
|
2969
|
+
application/json:
|
|
2970
|
+
schema:
|
|
2971
|
+
$ref: "#/components/schemas/DimensionTargetsDto"
|
|
2972
|
+
examples:
|
|
2973
|
+
workspaceAndRepo:
|
|
2974
|
+
value:
|
|
2975
|
+
disabledDimensions: [delivery]
|
|
2976
|
+
targets:
|
|
2977
|
+
observability: 90
|
|
2978
|
+
repoOverrides:
|
|
2979
|
+
11111111-1111-4111-8111-111111111111:
|
|
2980
|
+
disabledDimensions: [observability]
|
|
2981
|
+
targets:
|
|
2982
|
+
tests-qa: 80
|
|
2983
|
+
responses:
|
|
2984
|
+
"204":
|
|
2985
|
+
description: Targets persisted (or cleared).
|
|
2986
|
+
"400":
|
|
2987
|
+
description: Invalid payload or repository is not in scan scope
|
|
2988
|
+
content:
|
|
2989
|
+
application/json:
|
|
2990
|
+
schema:
|
|
2991
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2992
|
+
examples:
|
|
2993
|
+
invalidDimensionTargets:
|
|
2994
|
+
value:
|
|
2995
|
+
error: "observability must be an integer from 0 to 100"
|
|
2996
|
+
code: invalid_dimension_targets
|
|
2997
|
+
"401":
|
|
2998
|
+
$ref: "#/components/responses/Unauthorized"
|
|
2999
|
+
"403":
|
|
3000
|
+
description: Forbidden — workspace admin required
|
|
3001
|
+
content:
|
|
3002
|
+
application/json:
|
|
3003
|
+
schema:
|
|
3004
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
3005
|
+
examples:
|
|
3006
|
+
workspaceAdminRequired:
|
|
3007
|
+
value:
|
|
3008
|
+
error: Forbidden
|
|
3009
|
+
code: workspace_admin_required
|
|
3010
|
+
"404":
|
|
3011
|
+
description: Workspace does not exist or malformed workspaceId
|
|
3012
|
+
content:
|
|
3013
|
+
application/json:
|
|
3014
|
+
schema:
|
|
3015
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
3016
|
+
|
|
2924
3017
|
/workspaces/{workspaceId}/sources:
|
|
2925
3018
|
put:
|
|
2926
3019
|
tags: [Workspace]
|
|
@@ -16810,6 +16903,93 @@ components:
|
|
|
16810
16903
|
maximum: 10000
|
|
16811
16904
|
description: Ceiling — stay at or below this many CI failures per engineer per week. `0` is valid.
|
|
16812
16905
|
|
|
16906
|
+
DimensionTargetPercentsDto:
|
|
16907
|
+
type: object
|
|
16908
|
+
additionalProperties: false
|
|
16909
|
+
description: Omitted dimension means a target of 100. Values of 100 are not stored.
|
|
16910
|
+
properties:
|
|
16911
|
+
ai-agent-readiness:
|
|
16912
|
+
type: integer
|
|
16913
|
+
nullable: true
|
|
16914
|
+
minimum: 0
|
|
16915
|
+
maximum: 100
|
|
16916
|
+
token-efficiency:
|
|
16917
|
+
type: integer
|
|
16918
|
+
nullable: true
|
|
16919
|
+
minimum: 0
|
|
16920
|
+
maximum: 100
|
|
16921
|
+
repo-hygiene:
|
|
16922
|
+
type: integer
|
|
16923
|
+
nullable: true
|
|
16924
|
+
minimum: 0
|
|
16925
|
+
maximum: 100
|
|
16926
|
+
stack-quality:
|
|
16927
|
+
type: integer
|
|
16928
|
+
nullable: true
|
|
16929
|
+
minimum: 0
|
|
16930
|
+
maximum: 100
|
|
16931
|
+
tests-qa:
|
|
16932
|
+
type: integer
|
|
16933
|
+
nullable: true
|
|
16934
|
+
minimum: 0
|
|
16935
|
+
maximum: 100
|
|
16936
|
+
observability:
|
|
16937
|
+
type: integer
|
|
16938
|
+
nullable: true
|
|
16939
|
+
minimum: 0
|
|
16940
|
+
maximum: 100
|
|
16941
|
+
api-contracts:
|
|
16942
|
+
type: integer
|
|
16943
|
+
nullable: true
|
|
16944
|
+
minimum: 0
|
|
16945
|
+
maximum: 100
|
|
16946
|
+
platform-governance:
|
|
16947
|
+
type: integer
|
|
16948
|
+
nullable: true
|
|
16949
|
+
minimum: 0
|
|
16950
|
+
maximum: 100
|
|
16951
|
+
delivery:
|
|
16952
|
+
type: integer
|
|
16953
|
+
nullable: true
|
|
16954
|
+
minimum: 0
|
|
16955
|
+
maximum: 100
|
|
16956
|
+
|
|
16957
|
+
DimensionTargetsRepoOverrideDto:
|
|
16958
|
+
type: object
|
|
16959
|
+
additionalProperties: false
|
|
16960
|
+
properties:
|
|
16961
|
+
disabledDimensions:
|
|
16962
|
+
type: array
|
|
16963
|
+
uniqueItems: true
|
|
16964
|
+
items:
|
|
16965
|
+
$ref: "#/components/schemas/ReadinessDimensionId"
|
|
16966
|
+
description: Dimensions left out of this repository's score.
|
|
16967
|
+
targets:
|
|
16968
|
+
$ref: "#/components/schemas/DimensionTargetPercentsDto"
|
|
16969
|
+
|
|
16970
|
+
DimensionTargetsDto:
|
|
16971
|
+
type: object
|
|
16972
|
+
additionalProperties: false
|
|
16973
|
+
description: >
|
|
16974
|
+
Agentic Foundation dimension settings. Empty object means every dimension is
|
|
16975
|
+
scored and the target is 100.
|
|
16976
|
+
properties:
|
|
16977
|
+
disabledDimensions:
|
|
16978
|
+
type: array
|
|
16979
|
+
uniqueItems: true
|
|
16980
|
+
items:
|
|
16981
|
+
$ref: "#/components/schemas/ReadinessDimensionId"
|
|
16982
|
+
description: >
|
|
16983
|
+
Dimensions left out of readiness scores for every repository in the
|
|
16984
|
+
workspace. Repository overrides may disable additional dimensions.
|
|
16985
|
+
targets:
|
|
16986
|
+
$ref: "#/components/schemas/DimensionTargetPercentsDto"
|
|
16987
|
+
repoOverrides:
|
|
16988
|
+
type: object
|
|
16989
|
+
additionalProperties:
|
|
16990
|
+
$ref: "#/components/schemas/DimensionTargetsRepoOverrideDto"
|
|
16991
|
+
description: Keys are in-scope repository ids.
|
|
16992
|
+
|
|
16813
16993
|
AiEmailAliasEntryDto:
|
|
16814
16994
|
type: object
|
|
16815
16995
|
required: [canonicalEmail, aliasEmail]
|
|
@@ -281,6 +281,16 @@
|
|
|
281
281
|
"method": "PUT",
|
|
282
282
|
"path": "/workspaces/{workspaceId}/productivity-targets"
|
|
283
283
|
},
|
|
284
|
+
"getWorkspaceDimensionTargets": {
|
|
285
|
+
"status": "implemented",
|
|
286
|
+
"method": "GET",
|
|
287
|
+
"path": "/workspaces/{workspaceId}/agentic-foundation/dimension-targets"
|
|
288
|
+
},
|
|
289
|
+
"putWorkspaceDimensionTargets": {
|
|
290
|
+
"status": "implemented",
|
|
291
|
+
"method": "PUT",
|
|
292
|
+
"path": "/workspaces/{workspaceId}/agentic-foundation/dimension-targets"
|
|
293
|
+
},
|
|
284
294
|
"putTenantSources": {
|
|
285
295
|
"status": "implemented",
|
|
286
296
|
"method": "PUT",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thinkai/tai-api-contract",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.202.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@stoplight/spectral-cli": "^6.17.0",
|
|
23
|
-
"@types/node": "^26.6.
|
|
24
|
-
"jsonpath-plus": "^11.2.
|
|
23
|
+
"@types/node": "^26.6.6",
|
|
24
|
+
"jsonpath-plus": "^11.2.2",
|
|
25
25
|
"openapi-typescript": "^7.13.0",
|
|
26
26
|
"typescript": "~6.0.3"
|
|
27
27
|
},
|
package/src/generated/openapi.ts
CHANGED
|
@@ -943,6 +943,30 @@ export interface paths {
|
|
|
943
943
|
patch?: never;
|
|
944
944
|
trace?: never;
|
|
945
945
|
};
|
|
946
|
+
"/workspaces/{workspaceId}/agentic-foundation/dimension-targets": {
|
|
947
|
+
parameters: {
|
|
948
|
+
query?: never;
|
|
949
|
+
header?: never;
|
|
950
|
+
path?: never;
|
|
951
|
+
cookie?: never;
|
|
952
|
+
};
|
|
953
|
+
/**
|
|
954
|
+
* Get Agentic Foundation dimension settings
|
|
955
|
+
* @description Workspace `disabledDimensions` (scoring off workspace-wide), target percent per readiness dimension, plus optional per-repository overrides. Omitted targets mean 100. A repository override may disable scoring for a dimension and set its own target; it cannot re-enable a workspace-disabled dimension. Empty object means every dimension is scored at 100. Member-level read access.
|
|
956
|
+
*/
|
|
957
|
+
get: operations["getWorkspaceDimensionTargets"];
|
|
958
|
+
/**
|
|
959
|
+
* Set Agentic Foundation dimension settings
|
|
960
|
+
* @description Full-replace workspace dimension settings and repository overrides. `disabledDimensions` turns scoring off for those dimensions workspace-wide. Omit a target or send 100 to keep the default. `PUT {}` or `null` clears settings so every dimension is scored at 100. Repository ids must be in Agentic Foundation scan scope. Requires workspace **admin**.
|
|
961
|
+
*/
|
|
962
|
+
put: operations["putWorkspaceDimensionTargets"];
|
|
963
|
+
post?: never;
|
|
964
|
+
delete?: never;
|
|
965
|
+
options?: never;
|
|
966
|
+
head?: never;
|
|
967
|
+
patch?: never;
|
|
968
|
+
trace?: never;
|
|
969
|
+
};
|
|
946
970
|
"/workspaces/{workspaceId}/sources": {
|
|
947
971
|
parameters: {
|
|
948
972
|
query?: never;
|
|
@@ -6516,6 +6540,33 @@ export interface components {
|
|
|
6516
6540
|
/** @description Ceiling — stay at or below this many CI failures per engineer per week. `0` is valid. */
|
|
6517
6541
|
ciFailuresPerEngineerPerWeek?: number | null;
|
|
6518
6542
|
};
|
|
6543
|
+
/** @description Omitted dimension means a target of 100. Values of 100 are not stored. */
|
|
6544
|
+
DimensionTargetPercentsDto: {
|
|
6545
|
+
"ai-agent-readiness"?: number | null;
|
|
6546
|
+
"token-efficiency"?: number | null;
|
|
6547
|
+
"repo-hygiene"?: number | null;
|
|
6548
|
+
"stack-quality"?: number | null;
|
|
6549
|
+
"tests-qa"?: number | null;
|
|
6550
|
+
observability?: number | null;
|
|
6551
|
+
"api-contracts"?: number | null;
|
|
6552
|
+
"platform-governance"?: number | null;
|
|
6553
|
+
delivery?: number | null;
|
|
6554
|
+
};
|
|
6555
|
+
DimensionTargetsRepoOverrideDto: {
|
|
6556
|
+
/** @description Dimensions left out of this repository's score. */
|
|
6557
|
+
disabledDimensions?: components["schemas"]["ReadinessDimensionId"][];
|
|
6558
|
+
targets?: components["schemas"]["DimensionTargetPercentsDto"];
|
|
6559
|
+
};
|
|
6560
|
+
/** @description Agentic Foundation dimension settings. Empty object means every dimension is scored and the target is 100. */
|
|
6561
|
+
DimensionTargetsDto: {
|
|
6562
|
+
/** @description Dimensions left out of readiness scores for every repository in the workspace. Repository overrides may disable additional dimensions. */
|
|
6563
|
+
disabledDimensions?: components["schemas"]["ReadinessDimensionId"][];
|
|
6564
|
+
targets?: components["schemas"]["DimensionTargetPercentsDto"];
|
|
6565
|
+
/** @description Keys are in-scope repository ids. */
|
|
6566
|
+
repoOverrides?: {
|
|
6567
|
+
[key: string]: components["schemas"]["DimensionTargetsRepoOverrideDto"];
|
|
6568
|
+
};
|
|
6569
|
+
};
|
|
6519
6570
|
AiEmailAliasEntryDto: {
|
|
6520
6571
|
/**
|
|
6521
6572
|
* Format: email
|
|
@@ -13316,6 +13367,9 @@ export type AiModelPolicyConfigDto = components['schemas']['AiModelPolicyConfigD
|
|
|
13316
13367
|
export type AiModelPolicyPersonOverrideDto = components['schemas']['AiModelPolicyPersonOverrideDto'];
|
|
13317
13368
|
export type AiModelPolicyDto = components['schemas']['AiModelPolicyDto'];
|
|
13318
13369
|
export type ProductivityTargetsDto = components['schemas']['ProductivityTargetsDto'];
|
|
13370
|
+
export type DimensionTargetPercentsDto = components['schemas']['DimensionTargetPercentsDto'];
|
|
13371
|
+
export type DimensionTargetsRepoOverrideDto = components['schemas']['DimensionTargetsRepoOverrideDto'];
|
|
13372
|
+
export type DimensionTargetsDto = components['schemas']['DimensionTargetsDto'];
|
|
13319
13373
|
export type AiEmailAliasEntryDto = components['schemas']['AiEmailAliasEntryDto'];
|
|
13320
13374
|
export type AiEmailAliasesDto = components['schemas']['AiEmailAliasesDto'];
|
|
13321
13375
|
export type TestConnectionResponseDto = components['schemas']['TestConnectionResponseDto'];
|
|
@@ -16871,6 +16925,91 @@ export interface operations {
|
|
|
16871
16925
|
};
|
|
16872
16926
|
};
|
|
16873
16927
|
};
|
|
16928
|
+
getWorkspaceDimensionTargets: {
|
|
16929
|
+
parameters: {
|
|
16930
|
+
query?: never;
|
|
16931
|
+
header?: never;
|
|
16932
|
+
path: {
|
|
16933
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
16934
|
+
};
|
|
16935
|
+
cookie?: never;
|
|
16936
|
+
};
|
|
16937
|
+
requestBody?: never;
|
|
16938
|
+
responses: {
|
|
16939
|
+
/** @description Current targets (may be empty) */
|
|
16940
|
+
200: {
|
|
16941
|
+
headers: {
|
|
16942
|
+
[name: string]: unknown;
|
|
16943
|
+
};
|
|
16944
|
+
content: {
|
|
16945
|
+
"application/json": components["schemas"]["DimensionTargetsDto"];
|
|
16946
|
+
};
|
|
16947
|
+
};
|
|
16948
|
+
401: components["responses"]["Unauthorized"];
|
|
16949
|
+
403: components["responses"]["Forbidden"];
|
|
16950
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
16951
|
+
404: {
|
|
16952
|
+
headers: {
|
|
16953
|
+
[name: string]: unknown;
|
|
16954
|
+
};
|
|
16955
|
+
content: {
|
|
16956
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
16957
|
+
};
|
|
16958
|
+
};
|
|
16959
|
+
};
|
|
16960
|
+
};
|
|
16961
|
+
putWorkspaceDimensionTargets: {
|
|
16962
|
+
parameters: {
|
|
16963
|
+
query?: never;
|
|
16964
|
+
header?: never;
|
|
16965
|
+
path: {
|
|
16966
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
16967
|
+
};
|
|
16968
|
+
cookie?: never;
|
|
16969
|
+
};
|
|
16970
|
+
requestBody: {
|
|
16971
|
+
content: {
|
|
16972
|
+
"application/json": components["schemas"]["DimensionTargetsDto"];
|
|
16973
|
+
};
|
|
16974
|
+
};
|
|
16975
|
+
responses: {
|
|
16976
|
+
/** @description Targets persisted (or cleared). */
|
|
16977
|
+
204: {
|
|
16978
|
+
headers: {
|
|
16979
|
+
[name: string]: unknown;
|
|
16980
|
+
};
|
|
16981
|
+
content?: never;
|
|
16982
|
+
};
|
|
16983
|
+
/** @description Invalid payload or repository is not in scan scope */
|
|
16984
|
+
400: {
|
|
16985
|
+
headers: {
|
|
16986
|
+
[name: string]: unknown;
|
|
16987
|
+
};
|
|
16988
|
+
content: {
|
|
16989
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
16990
|
+
};
|
|
16991
|
+
};
|
|
16992
|
+
401: components["responses"]["Unauthorized"];
|
|
16993
|
+
/** @description Forbidden — workspace admin required */
|
|
16994
|
+
403: {
|
|
16995
|
+
headers: {
|
|
16996
|
+
[name: string]: unknown;
|
|
16997
|
+
};
|
|
16998
|
+
content: {
|
|
16999
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
17000
|
+
};
|
|
17001
|
+
};
|
|
17002
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
17003
|
+
404: {
|
|
17004
|
+
headers: {
|
|
17005
|
+
[name: string]: unknown;
|
|
17006
|
+
};
|
|
17007
|
+
content: {
|
|
17008
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
17009
|
+
};
|
|
17010
|
+
};
|
|
17011
|
+
};
|
|
17012
|
+
};
|
|
16874
17013
|
putTenantSources: {
|
|
16875
17014
|
parameters: {
|
|
16876
17015
|
query?: never;
|