@thinkai/tai-api-contract 2.147.1 → 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.1
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}/...`.
@@ -9204,15 +9204,42 @@ paths:
9204
9204
  get:
9205
9205
  tags: [Notifications]
9206
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.
9207
9212
  operationId: listNotifications
9208
9213
  parameters:
9209
9214
  - $ref: "#/components/parameters/WorkspaceId"
9210
9215
  - name: limit
9211
9216
  in: query
9212
- schema: { type: integer, minimum: 1 }
9217
+ schema:
9218
+ type: integer
9219
+ minimum: 1
9220
+ maximum: 100
9221
+ default: 50
9213
9222
  - name: offset
9214
9223
  in: query
9215
- 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
9216
9243
  responses:
9217
9244
  "200":
9218
9245
  description: Page of notifications
@@ -9220,6 +9247,12 @@ paths:
9220
9247
  application/json:
9221
9248
  schema:
9222
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"
9223
9256
  "401":
9224
9257
  $ref: "#/components/responses/Unauthorized"
9225
9258
 
@@ -9227,6 +9260,10 @@ paths:
9227
9260
  get:
9228
9261
  tags: [Notifications]
9229
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`.
9230
9267
  operationId: getNotificationUnreadCount
9231
9268
  parameters:
9232
9269
  - $ref: "#/components/parameters/WorkspaceId"
@@ -9452,7 +9489,7 @@ paths:
9452
9489
  description: >
9453
9490
  Returns the authenticated user's profile, workspace list, and preferences in one response.
9454
9491
  When `workspaceId` is provided and resolves to a workspace the caller belongs to, also
9455
- returns platform banner, unread notification count, journey progress, and connectors
9492
+ returns platform banner, unread notification count (`count` and `hasUnreadCritical`), journey progress, and connectors
9456
9493
  snapshot. Invalid, unknown, or non-member `workspaceId` values do not produce 403/404 —
9457
9494
  the response is still 200 with only `me`, `workspaces`, and `preferences` (workspace-scoped
9458
9495
  fields omitted).
@@ -18501,7 +18538,7 @@ components:
18501
18538
 
18502
18539
  NotificationDto:
18503
18540
  type: object
18504
- required: [id, type, title, message, read, createdAt]
18541
+ required: [id, type, title, message, read, createdAt, severity]
18505
18542
  properties:
18506
18543
  id:
18507
18544
  type: string
@@ -18522,6 +18559,8 @@ components:
18522
18559
  severity:
18523
18560
  type: string
18524
18561
  enum: [success, warning, destructive, muted, neutral]
18562
+ description: >
18563
+ Stored on the notification row at fan-out. `destructive` is the only critical severity.
18525
18564
  triggeredBy:
18526
18565
  type: string
18527
18566
  nullable: true
@@ -18539,11 +18578,17 @@ components:
18539
18578
 
18540
18579
  NotificationUnreadCountDto:
18541
18580
  type: object
18542
- required: [count]
18581
+ required: [count, hasUnreadCritical]
18543
18582
  properties:
18544
18583
  count:
18545
18584
  type: integer
18546
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`.
18547
18592
 
18548
18593
  EffectiveTaskRowDto:
18549
18594
  type: object
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkai/tai-api-contract",
3
- "version": "2.147.1",
3
+ "version": "2.148.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -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;
@@ -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;
@@ -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
  };