@thinkai/tai-api-contract 2.147.0 → 2.148.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.147.0
4
+ version: 2.148.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}/...`.
@@ -7591,12 +7591,12 @@ paths:
7591
7591
  /workspaces/{workspaceId}/readiness/issues/{issueId}/fix-guide:
7592
7592
  get:
7593
7593
  tags: [RepositoryReadiness]
7594
- summary: Get scan-time fix instruction guide (G1–G5)
7594
+ summary: Get fix instructions for a readiness issue
7595
7595
  description: >
7596
- Returns the markdown fix guide written during the latest successful scan for this issue.
7597
- Applies only to platform-governance criteria **G1–G5** (`guidance` tier). **G6** and other
7598
- rubrics must use the Automations PR Fix it flow (`POST .../readiness/fixes`). When no guide
7599
- exists for a legacy run, returns `404` — re-scan the repository to generate instructions.
7596
+ G1–G5 return the markdown guide written during the latest successful scan.
7597
+ Every other issue returns the remediation already stored for that issue
7598
+ (latest succeeded criterion row, otherwise the issue description).
7599
+ When that text is missing, returns `404` so the page can show the empty-guide state.
7600
7600
  operationId: getReadinessIssueFixGuide
7601
7601
  parameters:
7602
7602
  - $ref: "#/components/parameters/WorkspaceId"
@@ -7609,16 +7609,11 @@ paths:
7609
7609
  schema:
7610
7610
  $ref: "#/components/schemas/ReadinessFixGuideDto"
7611
7611
  "400":
7612
- description: Issue rubric is not G1–G5 (use PR Fix it for G6 and other criteria)
7612
+ description: issueId is not a UUID
7613
7613
  content:
7614
7614
  application/json:
7615
7615
  schema:
7616
7616
  $ref: "#/components/schemas/ErrorMessageDto"
7617
- examples:
7618
- not_guidance:
7619
- value:
7620
- error: "Fix guide is only available for G1–G5 governance criteria"
7621
- code: fix_guide_not_guidance
7622
7617
  "401":
7623
7618
  $ref: "#/components/responses/Unauthorized"
7624
7619
  "403":
@@ -9209,15 +9204,42 @@ paths:
9209
9204
  get:
9210
9205
  tags: [Notifications]
9211
9206
  summary: Paginated notifications
9207
+ description: >
9208
+ Inbox for the current user in this workspace. Applies the same notification-type
9209
+ preference filter and routine-title exclusion as the unread badge. `view` defaults to
9210
+ `all` so a client that omits it still receives success rows. Severity is the stored
9211
+ column and is not recomputed per request.
9212
9212
  operationId: listNotifications
9213
9213
  parameters:
9214
9214
  - $ref: "#/components/parameters/WorkspaceId"
9215
9215
  - name: limit
9216
9216
  in: query
9217
- schema: { type: integer, minimum: 1 }
9217
+ schema:
9218
+ type: integer
9219
+ minimum: 1
9220
+ maximum: 100
9221
+ default: 50
9218
9222
  - name: offset
9219
9223
  in: query
9220
- schema: { type: integer, minimum: 0 }
9224
+ schema:
9225
+ type: integer
9226
+ minimum: 0
9227
+ default: 0
9228
+ - name: view
9229
+ in: query
9230
+ description: >
9231
+ `all` returns every severity. `needs_action` returns only `warning` and
9232
+ `destructive`. Omitted is `all`.
9233
+ schema:
9234
+ type: string
9235
+ enum: [all, needs_action]
9236
+ default: all
9237
+ - name: unread
9238
+ in: query
9239
+ description: >
9240
+ Omit to include read and unread rows. `true` is unread only. `false` is read only.
9241
+ schema:
9242
+ type: boolean
9221
9243
  responses:
9222
9244
  "200":
9223
9245
  description: Page of notifications
@@ -9225,6 +9247,12 @@ paths:
9225
9247
  application/json:
9226
9248
  schema:
9227
9249
  $ref: "#/components/schemas/NotificationListDto"
9250
+ "400":
9251
+ description: Invalid `view` or `unread`
9252
+ content:
9253
+ application/json:
9254
+ schema:
9255
+ $ref: "#/components/schemas/ErrorMessageDto"
9228
9256
  "401":
9229
9257
  $ref: "#/components/responses/Unauthorized"
9230
9258
 
@@ -9232,6 +9260,10 @@ paths:
9232
9260
  get:
9233
9261
  tags: [Notifications]
9234
9262
  summary: Unread notification count
9263
+ description: >
9264
+ Unread rows for the current user in this workspace after the notification-type
9265
+ preference filter and the routine-title exclusion. `count` is not capped.
9266
+ `hasUnreadCritical` is true when at least one of those rows has severity `destructive`.
9235
9267
  operationId: getNotificationUnreadCount
9236
9268
  parameters:
9237
9269
  - $ref: "#/components/parameters/WorkspaceId"
@@ -9457,7 +9489,7 @@ paths:
9457
9489
  description: >
9458
9490
  Returns the authenticated user's profile, workspace list, and preferences in one response.
9459
9491
  When `workspaceId` is provided and resolves to a workspace the caller belongs to, also
9460
- returns platform banner, unread notification count, journey progress, and connectors
9492
+ returns platform banner, unread notification count (`count` and `hasUnreadCritical`), journey progress, and connectors
9461
9493
  snapshot. Invalid, unknown, or non-member `workspaceId` values do not produce 403/404 —
9462
9494
  the response is still 200 with only `me`, `workspaces`, and `preferences` (workspace-scoped
9463
9495
  fields omitted).
@@ -18235,7 +18267,7 @@ components:
18235
18267
  rubricId:
18236
18268
  type: string
18237
18269
  maxLength: 16
18238
- description: G1–G5 rubric criterion id
18270
+ description: Rubric criterion id (G1–G5 guides, or any other issue with stored remediation)
18239
18271
  sourceRunId:
18240
18272
  type: string
18241
18273
  format: uuid
@@ -18506,7 +18538,7 @@ components:
18506
18538
 
18507
18539
  NotificationDto:
18508
18540
  type: object
18509
- required: [id, type, title, message, read, createdAt]
18541
+ required: [id, type, title, message, read, createdAt, severity]
18510
18542
  properties:
18511
18543
  id:
18512
18544
  type: string
@@ -18527,6 +18559,8 @@ components:
18527
18559
  severity:
18528
18560
  type: string
18529
18561
  enum: [success, warning, destructive, muted, neutral]
18562
+ description: >
18563
+ Stored on the notification row at fan-out. `destructive` is the only critical severity.
18530
18564
  triggeredBy:
18531
18565
  type: string
18532
18566
  nullable: true
@@ -18544,11 +18578,17 @@ components:
18544
18578
 
18545
18579
  NotificationUnreadCountDto:
18546
18580
  type: object
18547
- required: [count]
18581
+ required: [count, hasUnreadCritical]
18548
18582
  properties:
18549
18583
  count:
18550
18584
  type: integer
18551
18585
  minimum: 0
18586
+ description: >
18587
+ Unread rows after the type-preference filter and routine-title exclusion. Not capped.
18588
+ hasUnreadCritical:
18589
+ type: boolean
18590
+ description: >
18591
+ True when at least one of those unread rows has severity `destructive`.
18552
18592
 
18553
18593
  EffectiveTaskRowDto:
18554
18594
  type: object
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkai/tai-api-contract",
3
- "version": "2.147.0",
3
+ "version": "2.148.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -2872,8 +2872,8 @@ export interface paths {
2872
2872
  cookie?: never;
2873
2873
  };
2874
2874
  /**
2875
- * Get scan-time fix instruction guide (G1–G5)
2876
- * @description Returns the markdown fix guide written during the latest successful scan for this issue. Applies only to platform-governance criteria **G1–G5** (`guidance` tier). **G6** and other rubrics must use the Automations PR Fix it flow (`POST .../readiness/fixes`). When no guide exists for a legacy run, returns `404` — re-scan the repository to generate instructions.
2875
+ * Get fix instructions for a readiness issue
2876
+ * @description G1–G5 return the markdown guide written during the latest successful scan. Every other issue returns the remediation already stored for that issue (latest succeeded criterion row, otherwise the issue description). When that text is missing, returns `404` so the page can show the empty-guide state.
2877
2877
  */
2878
2878
  get: operations["getReadinessIssueFixGuide"];
2879
2879
  put?: never;
@@ -3708,7 +3708,10 @@ export interface paths {
3708
3708
  path?: never;
3709
3709
  cookie?: never;
3710
3710
  };
3711
- /** Paginated notifications */
3711
+ /**
3712
+ * Paginated notifications
3713
+ * @description Inbox for the current user in this workspace. Applies the same notification-type preference filter and routine-title exclusion as the unread badge. `view` defaults to `all` so a client that omits it still receives success rows. Severity is the stored column and is not recomputed per request.
3714
+ */
3712
3715
  get: operations["listNotifications"];
3713
3716
  put?: never;
3714
3717
  post?: never;
@@ -3725,7 +3728,10 @@ export interface paths {
3725
3728
  path?: never;
3726
3729
  cookie?: never;
3727
3730
  };
3728
- /** Unread notification count */
3731
+ /**
3732
+ * Unread notification count
3733
+ * @description Unread rows for the current user in this workspace after the notification-type preference filter and the routine-title exclusion. `count` is not capped. `hasUnreadCritical` is true when at least one of those rows has severity `destructive`.
3734
+ */
3729
3735
  get: operations["getNotificationUnreadCount"];
3730
3736
  put?: never;
3731
3737
  post?: never;
@@ -3852,7 +3858,7 @@ export interface paths {
3852
3858
  };
3853
3859
  /**
3854
3860
  * App chrome bootstrap payload
3855
- * @description Returns the authenticated user's profile, workspace list, and preferences in one response. When `workspaceId` is provided and resolves to a workspace the caller belongs to, also returns platform banner, unread notification count, journey progress, and connectors snapshot. Invalid, unknown, or non-member `workspaceId` values do not produce 403/404 — the response is still 200 with only `me`, `workspaces`, and `preferences` (workspace-scoped fields omitted).
3861
+ * @description Returns the authenticated user's profile, workspace list, and preferences in one response. When `workspaceId` is provided and resolves to a workspace the caller belongs to, also returns platform banner, unread notification count (`count` and `hasUnreadCritical`), journey progress, and connectors snapshot. Invalid, unknown, or non-member `workspaceId` values do not produce 403/404 — the response is still 200 with only `me`, `workspaces`, and `preferences` (workspace-scoped fields omitted).
3856
3862
  */
3857
3863
  get: operations["getAppShell"];
3858
3864
  put?: never;
@@ -7740,7 +7746,7 @@ export interface components {
7740
7746
  issueId: string;
7741
7747
  /** Format: uuid */
7742
7748
  repoId: string;
7743
- /** @description G1–G5 rubric criterion id */
7749
+ /** @description Rubric criterion id (G1–G5 guides, or any other issue with stored remediation) */
7744
7750
  rubricId: string;
7745
7751
  /**
7746
7752
  * Format: uuid
@@ -7880,8 +7886,11 @@ export interface components {
7880
7886
  /** Format: date-time */
7881
7887
  createdAt: string;
7882
7888
  route?: string;
7883
- /** @enum {string} */
7884
- severity?: "success" | "warning" | "destructive" | "muted" | "neutral";
7889
+ /**
7890
+ * @description Stored on the notification row at fan-out. `destructive` is the only critical severity.
7891
+ * @enum {string}
7892
+ */
7893
+ severity: "success" | "warning" | "destructive" | "muted" | "neutral";
7885
7894
  triggeredBy?: string | null;
7886
7895
  };
7887
7896
  NotificationListDto: {
@@ -7889,7 +7898,10 @@ export interface components {
7889
7898
  total: number;
7890
7899
  };
7891
7900
  NotificationUnreadCountDto: {
7901
+ /** @description Unread rows after the type-preference filter and routine-title exclusion. Not capped. */
7892
7902
  count: number;
7903
+ /** @description True when at least one of those unread rows has severity `destructive`. */
7904
+ hasUnreadCritical: boolean;
7893
7905
  };
7894
7906
  EffectiveTaskRowDto: {
7895
7907
  id: string;
@@ -18653,7 +18665,7 @@ export interface operations {
18653
18665
  "application/json": components["schemas"]["ReadinessFixGuideDto"];
18654
18666
  };
18655
18667
  };
18656
- /** @description Issue rubric is not G1–G5 (use PR Fix it for G6 and other criteria) */
18668
+ /** @description issueId is not a UUID */
18657
18669
  400: {
18658
18670
  headers: {
18659
18671
  [name: string]: unknown;
@@ -20580,6 +20592,10 @@ export interface operations {
20580
20592
  query?: {
20581
20593
  limit?: number;
20582
20594
  offset?: number;
20595
+ /** @description `all` returns every severity. `needs_action` returns only `warning` and `destructive`. Omitted is `all`. */
20596
+ view?: "all" | "needs_action";
20597
+ /** @description Omit to include read and unread rows. `true` is unread only. `false` is read only. */
20598
+ unread?: boolean;
20583
20599
  };
20584
20600
  header?: never;
20585
20601
  path: {
@@ -20598,6 +20614,15 @@ export interface operations {
20598
20614
  "application/json": components["schemas"]["NotificationListDto"];
20599
20615
  };
20600
20616
  };
20617
+ /** @description Invalid `view` or `unread` */
20618
+ 400: {
20619
+ headers: {
20620
+ [name: string]: unknown;
20621
+ };
20622
+ content: {
20623
+ "application/json": components["schemas"]["ErrorMessageDto"];
20624
+ };
20625
+ };
20601
20626
  401: components["responses"]["Unauthorized"];
20602
20627
  };
20603
20628
  };