@thinkai/tai-api-contract 2.54.0 → 2.56.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.54.0
4
+ version: 2.56.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}/...`.
@@ -1099,6 +1099,48 @@ paths:
1099
1099
  "403":
1100
1100
  $ref: "#/components/responses/Forbidden"
1101
1101
 
1102
+ /workspaces/{workspaceId}/org-chart/members/me:
1103
+ patch:
1104
+ tags: [Workspace]
1105
+ summary: Update current user's org chart member row
1106
+ description: >
1107
+ Updates the signed-in user's row in the workspace org chart snapshot (`thinkai_org_structure`),
1108
+ matched by work email. Any workspace member may update their own row; workspace editor role is not required.
1109
+ operationId: patchMyOrgChartMember
1110
+ parameters:
1111
+ - $ref: "#/components/parameters/WorkspaceId"
1112
+ requestBody:
1113
+ required: true
1114
+ content:
1115
+ application/json:
1116
+ schema:
1117
+ $ref: "#/components/schemas/UpdateMyOrgChartMemberBodyDto"
1118
+ responses:
1119
+ "200":
1120
+ description: Updated org chart member row
1121
+ content:
1122
+ application/json:
1123
+ schema:
1124
+ $ref: "#/components/schemas/OrgChartPersonDto"
1125
+ "400":
1126
+ description: Invalid request body
1127
+ content:
1128
+ application/json:
1129
+ schema:
1130
+ $ref: "#/components/schemas/ErrorMessageDto"
1131
+ "401":
1132
+ $ref: "#/components/responses/Unauthorized"
1133
+ "403":
1134
+ $ref: "#/components/responses/Forbidden"
1135
+ "404":
1136
+ description: >
1137
+ Org chart not found (no persisted chart for the workspace), or the caller's email
1138
+ is not present in the org chart roster.
1139
+ content:
1140
+ application/json:
1141
+ schema:
1142
+ $ref: "#/components/schemas/ErrorMessageDto"
1143
+
1102
1144
  /workspaces/{workspaceId}/config:
1103
1145
  get:
1104
1146
  tags: [TechStack]
@@ -4624,6 +4666,53 @@ paths:
4624
4666
  schema:
4625
4667
  $ref: "#/components/schemas/ErrorMessageDto"
4626
4668
 
4669
+ /workspaces/{workspaceId}/agentic-foundation/repo-scope:
4670
+ put:
4671
+ tags: [AgenticFoundation]
4672
+ summary: Update Agentic Foundation repository scope
4673
+ description: >
4674
+ Bulk include/exclude materialized repos from Agentic Foundation by toggling the existing
4675
+ `user_removed` archive state. Excluded repos remain integrated for productivity metrics.
4676
+ Only workspace admins may call this endpoint. Partial failures are reported per repo.
4677
+ operationId: putAgenticFoundationRepoScope
4678
+ parameters:
4679
+ - $ref: "#/components/parameters/WorkspaceId"
4680
+ requestBody:
4681
+ required: true
4682
+ content:
4683
+ application/json:
4684
+ schema:
4685
+ $ref: "#/components/schemas/PutAgenticFoundationRepoScopeBodyDto"
4686
+ example:
4687
+ changes:
4688
+ - repoId: 00000000-0000-0000-0000-000000000101
4689
+ included: false
4690
+ - repoId: 00000000-0000-0000-0000-000000000102
4691
+ included: true
4692
+ responses:
4693
+ "200":
4694
+ description: Scope changes applied (possibly with per-repo failures)
4695
+ content:
4696
+ application/json:
4697
+ schema:
4698
+ $ref: "#/components/schemas/PutAgenticFoundationRepoScopeResponseDto"
4699
+ "400":
4700
+ description: Invalid request body
4701
+ content:
4702
+ application/json:
4703
+ schema:
4704
+ $ref: "#/components/schemas/ErrorMessageDto"
4705
+ "401":
4706
+ $ref: "#/components/responses/Unauthorized"
4707
+ "403":
4708
+ $ref: "#/components/responses/Forbidden"
4709
+ "404":
4710
+ description: Workspace does not exist
4711
+ content:
4712
+ application/json:
4713
+ schema:
4714
+ $ref: "#/components/schemas/ErrorMessageDto"
4715
+
4627
4716
  /workspaces/{workspaceId}/agentic-foundation/dashboard:
4628
4717
  get:
4629
4718
  tags: [AgenticFoundation]
@@ -6774,6 +6863,27 @@ components:
6774
6863
  type: string
6775
6864
  description: Bitbucket account UUID (e.g. "{aeefb6b0-...}") to attribute merged PRs and reviews to this person in productivity ingest. Preferred over bitbucketNickname — Bitbucket PR payloads expose a stable uuid but not nickname. Resolves to the same person_id (email) as githubUsername.
6776
6865
 
6866
+ UpdateMyOrgChartMemberBodyDto:
6867
+ type: object
6868
+ additionalProperties: false
6869
+ properties:
6870
+ name:
6871
+ type: string
6872
+ title:
6873
+ type: string
6874
+ department:
6875
+ type: string
6876
+ team:
6877
+ type: string
6878
+ location:
6879
+ type: string
6880
+ githubUsername:
6881
+ type: string
6882
+ bitbucketNickname:
6883
+ type: string
6884
+ bitbucketUuid:
6885
+ type: string
6886
+
6777
6887
  OrgChartImportResultDto:
6778
6888
  type: object
6779
6889
  additionalProperties: false
@@ -11066,8 +11176,8 @@ components:
11066
11176
  archivedReason:
11067
11177
  type: string
11068
11178
  nullable: true
11069
- enum: [github_removed, installation_disconnected, installation_replaced, superseded]
11070
- description: Why the repo was archived. Only present when `archivedAt` is set.
11179
+ enum: [github_removed, installation_disconnected, installation_replaced, superseded, user_removed]
11180
+ description: Why the repo was archived. `user_removed` means excluded from Agentic Foundation scope only. Only present when `archivedAt` is set.
11071
11181
  eligibilityStatus:
11072
11182
  type: string
11073
11183
  enum: [eligible, ineligible]
@@ -11210,7 +11320,7 @@ components:
11210
11320
  archivedReason:
11211
11321
  type: string
11212
11322
  nullable: true
11213
- enum: [github_removed, installation_disconnected, installation_replaced, superseded]
11323
+ enum: [github_removed, installation_disconnected, installation_replaced, superseded, user_removed]
11214
11324
  eligibilityStatus:
11215
11325
  type: string
11216
11326
  enum: [eligible, ineligible]
@@ -12390,6 +12500,77 @@ components:
12390
12500
  nullable: true
12391
12501
  description: ID of the freshly enqueued readiness scan run (only present on re-add).
12392
12502
 
12503
+ PutAgenticFoundationRepoScopeChangeDto:
12504
+ type: object
12505
+ required: [repoId, included]
12506
+ properties:
12507
+ repoId:
12508
+ type: string
12509
+ format: uuid
12510
+ included:
12511
+ type: boolean
12512
+ description: >
12513
+ `true` to include in Agentic Foundation scope (unarchive user_removed).
12514
+ `false` to exclude (soft-archive with archived_reason user_removed).
12515
+
12516
+ PutAgenticFoundationRepoScopeBodyDto:
12517
+ type: object
12518
+ required: [changes]
12519
+ properties:
12520
+ changes:
12521
+ type: array
12522
+ minItems: 1
12523
+ maxItems: 200
12524
+ items:
12525
+ $ref: "#/components/schemas/PutAgenticFoundationRepoScopeChangeDto"
12526
+
12527
+ PutAgenticFoundationRepoScopeAppliedDto:
12528
+ type: object
12529
+ required: [repoId, status]
12530
+ properties:
12531
+ repoId:
12532
+ type: string
12533
+ format: uuid
12534
+ status:
12535
+ type: string
12536
+ enum: [Active, Inactive]
12537
+ runId:
12538
+ type: string
12539
+ format: uuid
12540
+ nullable: true
12541
+
12542
+ PutAgenticFoundationRepoScopeFailureDto:
12543
+ type: object
12544
+ required: [repoId, code, message]
12545
+ properties:
12546
+ repoId:
12547
+ type: string
12548
+ format: uuid
12549
+ code:
12550
+ type: string
12551
+ enum:
12552
+ - not_found
12553
+ - scan_in_progress
12554
+ - not_archived
12555
+ - already_active
12556
+ - system_archived
12557
+ - forbidden
12558
+ message:
12559
+ type: string
12560
+
12561
+ PutAgenticFoundationRepoScopeResponseDto:
12562
+ type: object
12563
+ required: [applied, failures]
12564
+ properties:
12565
+ applied:
12566
+ type: array
12567
+ items:
12568
+ $ref: "#/components/schemas/PutAgenticFoundationRepoScopeAppliedDto"
12569
+ failures:
12570
+ type: array
12571
+ items:
12572
+ $ref: "#/components/schemas/PutAgenticFoundationRepoScopeFailureDto"
12573
+
12393
12574
  ActivityLogEventTypeDto:
12394
12575
  type: string
12395
12576
  description: Type of workspace lifecycle event.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkai/tai-api-contract",
3
- "version": "2.54.0",
3
+ "version": "2.56.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -21,7 +21,7 @@
21
21
  "dependencies": {},
22
22
  "devDependencies": {
23
23
  "@stoplight/spectral-cli": "^6.16.1",
24
- "@types/node": "^26.0.1",
24
+ "@types/node": "^26.1.1",
25
25
  "jsonpath-plus": "^10.3.0",
26
26
  "openapi-typescript": "^7.13.0",
27
27
  "typescript": "~6.0.3"
@@ -400,6 +400,26 @@ export interface paths {
400
400
  patch?: never;
401
401
  trace?: never;
402
402
  };
403
+ "/workspaces/{workspaceId}/org-chart/members/me": {
404
+ parameters: {
405
+ query?: never;
406
+ header?: never;
407
+ path?: never;
408
+ cookie?: never;
409
+ };
410
+ get?: never;
411
+ put?: never;
412
+ post?: never;
413
+ delete?: never;
414
+ options?: never;
415
+ head?: never;
416
+ /**
417
+ * Update current user's org chart member row
418
+ * @description Updates the signed-in user's row in the workspace org chart snapshot (`thinkai_org_structure`), matched by work email. Any workspace member may update their own row; workspace editor role is not required.
419
+ */
420
+ patch: operations["patchMyOrgChartMember"];
421
+ trace?: never;
422
+ };
403
423
  "/workspaces/{workspaceId}/config": {
404
424
  parameters: {
405
425
  query?: never;
@@ -1659,6 +1679,26 @@ export interface paths {
1659
1679
  patch?: never;
1660
1680
  trace?: never;
1661
1681
  };
1682
+ "/workspaces/{workspaceId}/agentic-foundation/repo-scope": {
1683
+ parameters: {
1684
+ query?: never;
1685
+ header?: never;
1686
+ path?: never;
1687
+ cookie?: never;
1688
+ };
1689
+ get?: never;
1690
+ /**
1691
+ * Update Agentic Foundation repository scope
1692
+ * @description Bulk include/exclude materialized repos from Agentic Foundation by toggling the existing `user_removed` archive state. Excluded repos remain integrated for productivity metrics. Only workspace admins may call this endpoint. Partial failures are reported per repo.
1693
+ */
1694
+ put: operations["putAgenticFoundationRepoScope"];
1695
+ post?: never;
1696
+ delete?: never;
1697
+ options?: never;
1698
+ head?: never;
1699
+ patch?: never;
1700
+ trace?: never;
1701
+ };
1662
1702
  "/workspaces/{workspaceId}/agentic-foundation/dashboard": {
1663
1703
  parameters: {
1664
1704
  query?: never;
@@ -2587,6 +2627,16 @@ export interface components {
2587
2627
  /** @description Bitbucket account UUID (e.g. "{aeefb6b0-...}") to attribute merged PRs and reviews to this person in productivity ingest. Preferred over bitbucketNickname — Bitbucket PR payloads expose a stable uuid but not nickname. Resolves to the same person_id (email) as githubUsername. */
2588
2628
  bitbucketUuid?: string;
2589
2629
  };
2630
+ UpdateMyOrgChartMemberBodyDto: {
2631
+ name?: string;
2632
+ title?: string;
2633
+ department?: string;
2634
+ team?: string;
2635
+ location?: string;
2636
+ githubUsername?: string;
2637
+ bitbucketNickname?: string;
2638
+ bitbucketUuid?: string;
2639
+ };
2590
2640
  OrgChartImportResultDto: {
2591
2641
  persons: components["schemas"]["OrgChartPersonDto"][];
2592
2642
  errors: string[];
@@ -4640,10 +4690,10 @@ export interface components {
4640
4690
  */
4641
4691
  archivedAt?: string | null;
4642
4692
  /**
4643
- * @description Why the repo was archived. Only present when `archivedAt` is set.
4693
+ * @description Why the repo was archived. `user_removed` means excluded from Agentic Foundation scope only. Only present when `archivedAt` is set.
4644
4694
  * @enum {string|null}
4645
4695
  */
4646
- archivedReason?: "github_removed" | "installation_disconnected" | "installation_replaced" | "superseded" | null;
4696
+ archivedReason?: "github_removed" | "installation_disconnected" | "installation_replaced" | "superseded" | "user_removed" | null;
4647
4697
  /**
4648
4698
  * @description Whether the repo can be analyzed (#44/#729). Language support no longer makes a repo `ineligible` — a missing v1-supported stack is surfaced via `warnings` and the repo stays analyzable. It becomes `ineligible` when the most recent scan hit a hard size/file-count limit (e.g. code-size or file-count exceeded): the repo is then restricted here too so this surface matches the GitHub connect list's size gate after the scan. Null until the first sync/scan computes it.
4649
4699
  * @enum {string|null}
@@ -4698,7 +4748,7 @@ export interface components {
4698
4748
  /** Format: date-time */
4699
4749
  archivedAt?: string | null;
4700
4750
  /** @enum {string|null} */
4701
- archivedReason?: "github_removed" | "installation_disconnected" | "installation_replaced" | "superseded" | null;
4751
+ archivedReason?: "github_removed" | "installation_disconnected" | "installation_replaced" | "superseded" | "user_removed" | null;
4702
4752
  /**
4703
4753
  * @description See RepoReadinessScoreDto.eligibilityStatus. Language support is advisory (#729) and surfaced via `warnings`.
4704
4754
  * @enum {string|null}
@@ -5224,6 +5274,34 @@ export interface components {
5224
5274
  */
5225
5275
  runId?: string | null;
5226
5276
  };
5277
+ PutAgenticFoundationRepoScopeChangeDto: {
5278
+ /** Format: uuid */
5279
+ repoId: string;
5280
+ /** @description `true` to include in Agentic Foundation scope (unarchive user_removed). `false` to exclude (soft-archive with archived_reason user_removed). */
5281
+ included: boolean;
5282
+ };
5283
+ PutAgenticFoundationRepoScopeBodyDto: {
5284
+ changes: components["schemas"]["PutAgenticFoundationRepoScopeChangeDto"][];
5285
+ };
5286
+ PutAgenticFoundationRepoScopeAppliedDto: {
5287
+ /** Format: uuid */
5288
+ repoId: string;
5289
+ /** @enum {string} */
5290
+ status: "Active" | "Inactive";
5291
+ /** Format: uuid */
5292
+ runId?: string | null;
5293
+ };
5294
+ PutAgenticFoundationRepoScopeFailureDto: {
5295
+ /** Format: uuid */
5296
+ repoId: string;
5297
+ /** @enum {string} */
5298
+ code: "not_found" | "scan_in_progress" | "not_archived" | "already_active" | "system_archived" | "forbidden";
5299
+ message: string;
5300
+ };
5301
+ PutAgenticFoundationRepoScopeResponseDto: {
5302
+ applied: components["schemas"]["PutAgenticFoundationRepoScopeAppliedDto"][];
5303
+ failures: components["schemas"]["PutAgenticFoundationRepoScopeFailureDto"][];
5304
+ };
5227
5305
  /**
5228
5306
  * @description Type of workspace lifecycle event.
5229
5307
  * @enum {string}
@@ -5550,6 +5628,7 @@ export type OrgChartTreeNodeDto = components['schemas']['OrgChartTreeNodeDto'];
5550
5628
  export type ScoringOrgChartDto = components['schemas']['ScoringOrgChartDto'];
5551
5629
  export type OrgChartDto = components['schemas']['OrgChartDto'];
5552
5630
  export type OrgChartPersonDto = components['schemas']['OrgChartPersonDto'];
5631
+ export type UpdateMyOrgChartMemberBodyDto = components['schemas']['UpdateMyOrgChartMemberBodyDto'];
5553
5632
  export type OrgChartImportResultDto = components['schemas']['OrgChartImportResultDto'];
5554
5633
  export type OrgChartSaveResultDto = components['schemas']['OrgChartSaveResultDto'];
5555
5634
  export type OrgStructureSourceBodyDto = components['schemas']['OrgStructureSourceBodyDto'];
@@ -5786,6 +5865,11 @@ export type YourAiJourneyAiSpendWeekDto = components['schemas']['YourAiJourneyAi
5786
5865
  export type YourAiJourneyAiSpendDto = components['schemas']['YourAiJourneyAiSpendDto'];
5787
5866
  export type PatchRepoArchiveBodyDto = components['schemas']['PatchRepoArchiveBodyDto'];
5788
5867
  export type PatchRepoArchiveResponseDto = components['schemas']['PatchRepoArchiveResponseDto'];
5868
+ export type PutAgenticFoundationRepoScopeChangeDto = components['schemas']['PutAgenticFoundationRepoScopeChangeDto'];
5869
+ export type PutAgenticFoundationRepoScopeBodyDto = components['schemas']['PutAgenticFoundationRepoScopeBodyDto'];
5870
+ export type PutAgenticFoundationRepoScopeAppliedDto = components['schemas']['PutAgenticFoundationRepoScopeAppliedDto'];
5871
+ export type PutAgenticFoundationRepoScopeFailureDto = components['schemas']['PutAgenticFoundationRepoScopeFailureDto'];
5872
+ export type PutAgenticFoundationRepoScopeResponseDto = components['schemas']['PutAgenticFoundationRepoScopeResponseDto'];
5789
5873
  export type ActivityLogEventTypeDto = components['schemas']['ActivityLogEventTypeDto'];
5790
5874
  export type ActivityLogActorDto = components['schemas']['ActivityLogActorDto'];
5791
5875
  export type ActivityLogEntryDto = components['schemas']['ActivityLogEntryDto'];
@@ -6989,6 +7073,52 @@ export interface operations {
6989
7073
  403: components["responses"]["Forbidden"];
6990
7074
  };
6991
7075
  };
7076
+ patchMyOrgChartMember: {
7077
+ parameters: {
7078
+ query?: never;
7079
+ header?: never;
7080
+ path: {
7081
+ workspaceId: components["parameters"]["WorkspaceId"];
7082
+ };
7083
+ cookie?: never;
7084
+ };
7085
+ requestBody: {
7086
+ content: {
7087
+ "application/json": components["schemas"]["UpdateMyOrgChartMemberBodyDto"];
7088
+ };
7089
+ };
7090
+ responses: {
7091
+ /** @description Updated org chart member row */
7092
+ 200: {
7093
+ headers: {
7094
+ [name: string]: unknown;
7095
+ };
7096
+ content: {
7097
+ "application/json": components["schemas"]["OrgChartPersonDto"];
7098
+ };
7099
+ };
7100
+ /** @description Invalid request body */
7101
+ 400: {
7102
+ headers: {
7103
+ [name: string]: unknown;
7104
+ };
7105
+ content: {
7106
+ "application/json": components["schemas"]["ErrorMessageDto"];
7107
+ };
7108
+ };
7109
+ 401: components["responses"]["Unauthorized"];
7110
+ 403: components["responses"]["Forbidden"];
7111
+ /** @description Org chart not found (no persisted chart for the workspace), or the caller's email is not present in the org chart roster. */
7112
+ 404: {
7113
+ headers: {
7114
+ [name: string]: unknown;
7115
+ };
7116
+ content: {
7117
+ "application/json": components["schemas"]["ErrorMessageDto"];
7118
+ };
7119
+ };
7120
+ };
7121
+ };
6992
7122
  getWorkspaceConfig: {
6993
7123
  parameters: {
6994
7124
  query?: never;
@@ -10240,6 +10370,66 @@ export interface operations {
10240
10370
  };
10241
10371
  };
10242
10372
  };
10373
+ putAgenticFoundationRepoScope: {
10374
+ parameters: {
10375
+ query?: never;
10376
+ header?: never;
10377
+ path: {
10378
+ workspaceId: components["parameters"]["WorkspaceId"];
10379
+ };
10380
+ cookie?: never;
10381
+ };
10382
+ requestBody: {
10383
+ content: {
10384
+ /**
10385
+ * @example {
10386
+ * "changes": [
10387
+ * {
10388
+ * "repoId": "00000000-0000-0000-0000-000000000101",
10389
+ * "included": false
10390
+ * },
10391
+ * {
10392
+ * "repoId": "00000000-0000-0000-0000-000000000102",
10393
+ * "included": true
10394
+ * }
10395
+ * ]
10396
+ * }
10397
+ */
10398
+ "application/json": components["schemas"]["PutAgenticFoundationRepoScopeBodyDto"];
10399
+ };
10400
+ };
10401
+ responses: {
10402
+ /** @description Scope changes applied (possibly with per-repo failures) */
10403
+ 200: {
10404
+ headers: {
10405
+ [name: string]: unknown;
10406
+ };
10407
+ content: {
10408
+ "application/json": components["schemas"]["PutAgenticFoundationRepoScopeResponseDto"];
10409
+ };
10410
+ };
10411
+ /** @description Invalid request body */
10412
+ 400: {
10413
+ headers: {
10414
+ [name: string]: unknown;
10415
+ };
10416
+ content: {
10417
+ "application/json": components["schemas"]["ErrorMessageDto"];
10418
+ };
10419
+ };
10420
+ 401: components["responses"]["Unauthorized"];
10421
+ 403: components["responses"]["Forbidden"];
10422
+ /** @description Workspace does not exist */
10423
+ 404: {
10424
+ headers: {
10425
+ [name: string]: unknown;
10426
+ };
10427
+ content: {
10428
+ "application/json": components["schemas"]["ErrorMessageDto"];
10429
+ };
10430
+ };
10431
+ };
10432
+ };
10243
10433
  getAgenticFoundationDashboard: {
10244
10434
  parameters: {
10245
10435
  query?: never;