@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.
@@ -1,7 +1,7 @@
1
1
  openapi: 3.0.3
2
2
  info:
3
3
  title: ThinkAI API
4
- version: 2.200.0
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.200.0",
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.5",
24
- "jsonpath-plus": "^11.2.1",
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
  },
@@ -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;