@thinkai/tai-api-contract 2.52.0 → 2.54.0-pr.886.9036266a

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.
@@ -1131,6 +1131,66 @@ export interface paths {
1131
1131
  patch?: never;
1132
1132
  trace?: never;
1133
1133
  };
1134
+ "/workspaces/{workspaceId}/integrations/ai-tool/{provider}/summary": {
1135
+ parameters: {
1136
+ query?: never;
1137
+ header?: never;
1138
+ path?: never;
1139
+ cookie?: never;
1140
+ };
1141
+ /**
1142
+ * AI-tool provider summary for a date window
1143
+ * @description Pre-aggregated spend, token, and active-user totals plus weekly buckets for the AI Usage & Spend overview. Replaces downloading the full `/snapshot` payload for KPI cards and sparklines.
1144
+ */
1145
+ get: operations["getWorkspaceAiToolProviderSummary"];
1146
+ put?: never;
1147
+ post?: never;
1148
+ delete?: never;
1149
+ options?: never;
1150
+ head?: never;
1151
+ patch?: never;
1152
+ trace?: never;
1153
+ };
1154
+ "/workspaces/{workspaceId}/integrations/ai-tool/{provider}/daily-series": {
1155
+ parameters: {
1156
+ query?: never;
1157
+ header?: never;
1158
+ path?: never;
1159
+ cookie?: never;
1160
+ };
1161
+ /**
1162
+ * AI-tool daily spend and usage series for charts
1163
+ * @description Daily chart points (spend and tokens) with optional product/model breakdown. Scoped to the requested date window; intended for the overview trend chart.
1164
+ */
1165
+ get: operations["getWorkspaceAiToolProviderDailySeries"];
1166
+ put?: never;
1167
+ post?: never;
1168
+ delete?: never;
1169
+ options?: never;
1170
+ head?: never;
1171
+ patch?: never;
1172
+ trace?: never;
1173
+ };
1174
+ "/workspaces/{workspaceId}/integrations/ai-tool/{provider}/model-breakdown": {
1175
+ parameters: {
1176
+ query?: never;
1177
+ header?: never;
1178
+ path?: never;
1179
+ cookie?: never;
1180
+ };
1181
+ /**
1182
+ * AI-tool model spend rollup for a date window
1183
+ * @description Aggregated spend and token totals per LLM model for the Costs by LLM Model page and team drill-downs. Optionally scoped to specific member external IDs.
1184
+ */
1185
+ get: operations["getWorkspaceAiToolProviderModelBreakdown"];
1186
+ put?: never;
1187
+ post?: never;
1188
+ delete?: never;
1189
+ options?: never;
1190
+ head?: never;
1191
+ patch?: never;
1192
+ trace?: never;
1193
+ };
1134
1194
  "/workspaces/{workspaceId}/integrations/ai-tool/{provider}/status": {
1135
1195
  parameters: {
1136
1196
  query?: never;
@@ -2056,6 +2116,23 @@ export interface paths {
2056
2116
  patch?: never;
2057
2117
  trace?: never;
2058
2118
  };
2119
+ "/workspaces/{workspaceId}/notifications/unread-count": {
2120
+ parameters: {
2121
+ query?: never;
2122
+ header?: never;
2123
+ path?: never;
2124
+ cookie?: never;
2125
+ };
2126
+ /** Unread notification count */
2127
+ get: operations["getNotificationUnreadCount"];
2128
+ put?: never;
2129
+ post?: never;
2130
+ delete?: never;
2131
+ options?: never;
2132
+ head?: never;
2133
+ patch?: never;
2134
+ trace?: never;
2135
+ };
2059
2136
  "/workspaces/{workspaceId}/notifications/{id}/read": {
2060
2137
  parameters: {
2061
2138
  query?: never;
@@ -3561,6 +3638,97 @@ export interface components {
3561
3638
  days?: components["schemas"]["AiUsageSpendUsageTrendsDayDto"][];
3562
3639
  weeks?: components["schemas"]["AiUsageSpendUsageTrendsWeekDto"][];
3563
3640
  };
3641
+ AiToolProviderSummaryWeekBucketDto: {
3642
+ weekLabel: string;
3643
+ spendCents: number;
3644
+ tokenCount: number;
3645
+ activeUsers: number;
3646
+ };
3647
+ AiToolProviderSummaryTopMoverDto: {
3648
+ externalId: string;
3649
+ label: string;
3650
+ deltaSpendCents: number;
3651
+ currentSpendCents: number;
3652
+ };
3653
+ AiToolProviderSummaryDto: {
3654
+ provider: string;
3655
+ /** Format: date */
3656
+ from: string;
3657
+ /** Format: date */
3658
+ to: string;
3659
+ status?: components["schemas"]["AiToolRefreshStatusDto"];
3660
+ seatCounts: {
3661
+ total: number;
3662
+ active: number;
3663
+ removed: number;
3664
+ };
3665
+ totals: {
3666
+ spendCents: number;
3667
+ tokenCount: number;
3668
+ activeUsers: number;
3669
+ totalEngineers: number;
3670
+ };
3671
+ weekBuckets: components["schemas"]["AiToolProviderSummaryWeekBucketDto"][];
3672
+ topMovers?: components["schemas"]["AiToolProviderSummaryTopMoverDto"][];
3673
+ hasTokenMetrics?: boolean;
3674
+ /** Format: date-time */
3675
+ generatedAt: string;
3676
+ };
3677
+ AiToolDailySeriesPointDto: {
3678
+ /** Format: date */
3679
+ day: string;
3680
+ label: string;
3681
+ spendCents: number;
3682
+ tokenCount: number;
3683
+ /** @description Spend cents by product label. */
3684
+ products: {
3685
+ [key: string]: number;
3686
+ };
3687
+ /** @description Spend cents by model name. */
3688
+ models: {
3689
+ [key: string]: number;
3690
+ };
3691
+ };
3692
+ AiToolDailySeriesDto: {
3693
+ provider: string;
3694
+ /** Format: date */
3695
+ from: string;
3696
+ /** Format: date */
3697
+ to: string;
3698
+ points: components["schemas"]["AiToolDailySeriesPointDto"][];
3699
+ productKeys: string[];
3700
+ modelKeys: string[];
3701
+ totals: {
3702
+ spendCents: number;
3703
+ tokenCount: number;
3704
+ };
3705
+ hasProductBreakdown?: boolean;
3706
+ hasModelBreakdown?: boolean;
3707
+ hasSpend?: boolean;
3708
+ hasTokens?: boolean;
3709
+ /** Format: date-time */
3710
+ generatedAt: string;
3711
+ };
3712
+ AiToolModelBreakdownItemDto: {
3713
+ modelName: string;
3714
+ spendCents: number;
3715
+ tokenCount: number;
3716
+ activeUsers: number;
3717
+ };
3718
+ AiToolModelBreakdownDto: {
3719
+ provider: string;
3720
+ /** Format: date */
3721
+ from: string;
3722
+ /** Format: date */
3723
+ to: string;
3724
+ models: components["schemas"]["AiToolModelBreakdownItemDto"][];
3725
+ totals: {
3726
+ spendCents: number;
3727
+ tokenCount: number;
3728
+ };
3729
+ /** Format: date-time */
3730
+ generatedAt: string;
3731
+ };
3564
3732
  AiToolMemberSummaryDto: {
3565
3733
  externalId: string;
3566
3734
  email: string;
@@ -3570,6 +3738,10 @@ export interface components {
3570
3738
  tokenCount: number;
3571
3739
  activeDays: number;
3572
3740
  mostUsedModel?: string;
3741
+ /** @description Per-product spend in cents for the requested window (Claude Enterprise). Omitted when no product-level daily rows exist for the member. */
3742
+ productBreakdownCents?: {
3743
+ [key: string]: number;
3744
+ };
3573
3745
  };
3574
3746
  AiToolMembersListDto: {
3575
3747
  members: components["schemas"]["AiToolMemberSummaryDto"][];
@@ -4783,11 +4955,17 @@ export interface components {
4783
4955
  /** Format: date-time */
4784
4956
  createdAt: string;
4785
4957
  route?: string;
4958
+ /** @enum {string} */
4959
+ severity?: "success" | "warning" | "destructive" | "muted" | "neutral";
4960
+ triggeredBy?: string | null;
4786
4961
  };
4787
4962
  NotificationListDto: {
4788
4963
  items: components["schemas"]["NotificationDto"][];
4789
4964
  total: number;
4790
4965
  };
4966
+ NotificationUnreadCountDto: {
4967
+ count: number;
4968
+ };
4791
4969
  EffectiveTaskRowDto: {
4792
4970
  id: string;
4793
4971
  name: string;
@@ -5049,7 +5227,7 @@ export interface components {
5049
5227
  * @description Type of workspace lifecycle event.
5050
5228
  * @enum {string}
5051
5229
  */
5052
- ActivityLogEventTypeDto: "repo.added" | "repo.removed" | "repo.readded" | "integration.github.added" | "integration.github.updated" | "integration.github.removed" | "integration.github.permissions_changed" | "integration.github.repo_added" | "integration.github.repo_removed" | "fix.requested" | "fix.generating" | "fix.pr_created" | "fix.merged" | "fix.failed" | "readiness.scan_started" | "readiness.scan_completed" | "readiness.scan_failed" | "readiness.scan_partial" | "integrations.agent_execution.provider_changed" | "integrations.repo_eligibility.overrides_changed" | "integrations.repo_eligibility.languages_refresh_requested" | "integrations.cursor.platform_key_enabled" | "integrations.cursor.platform_key_disabled" | "member.invited" | "member.role_changed" | "member.removed" | "hris.personio.sync_started" | "hris.personio.sync_completed" | "hris.personio.sync_failed" | "hris.sync_started" | "hris.sync_completed" | "hris.sync_failed" | "repo.sync_skipped" | "integrations.cursor.execution_key.added" | "integrations.cursor.execution_key.updated" | "integrations.cursor.execution_key.removed" | "integrations.cursor.execution_key.check_failed" | "integrations.cursor.admin_key.added" | "integrations.cursor.admin_key.updated" | "integrations.cursor.admin_key.removed" | "integrations.claude.execution_key.added" | "integrations.claude.execution_key.updated" | "integrations.claude.execution_key.removed" | "integrations.claude.execution_key.check_failed" | "integrations.claude.admin_key.added" | "integrations.claude.admin_key.updated" | "integrations.claude.admin_key.removed" | "integrations.claude.analytics_key.added" | "integrations.claude.analytics_key.updated" | "integrations.claude.analytics_key.removed" | "readiness.scan_precheck_failed" | "productivity.ingest.completed" | "productivity.ingest.failed" | "productivity.ingest.skipped";
5230
+ ActivityLogEventTypeDto: "repo.added" | "repo.removed" | "repo.readded" | "integration.github.added" | "integration.github.updated" | "integration.github.removed" | "integration.github.permissions_changed" | "integration.github.repo_added" | "integration.github.repo_removed" | "fix.requested" | "fix.generating" | "fix.pr_created" | "fix.merged" | "fix.failed" | "readiness.scan_started" | "readiness.scan_completed" | "readiness.scan_failed" | "readiness.scan_partial" | "integrations.agent_execution.provider_changed" | "integrations.repo_eligibility.overrides_changed" | "integrations.repo_eligibility.languages_refresh_requested" | "integrations.cursor.platform_key_enabled" | "integrations.cursor.platform_key_disabled" | "member.invited" | "member.role_changed" | "member.removed" | "hris.personio.sync_started" | "hris.personio.sync_completed" | "hris.personio.sync_failed" | "hris.zenhr.sync_started" | "hris.zenhr.sync_completed" | "hris.zenhr.sync_failed" | "hris.sync_started" | "hris.sync_completed" | "hris.sync_failed" | "repo.sync_skipped" | "integrations.cursor.execution_key.added" | "integrations.cursor.execution_key.updated" | "integrations.cursor.execution_key.removed" | "integrations.cursor.execution_key.check_failed" | "integrations.cursor.admin_key.added" | "integrations.cursor.admin_key.updated" | "integrations.cursor.admin_key.removed" | "integrations.claude.execution_key.added" | "integrations.claude.execution_key.updated" | "integrations.claude.execution_key.removed" | "integrations.claude.execution_key.check_failed" | "integrations.claude.admin_key.added" | "integrations.claude.admin_key.updated" | "integrations.claude.admin_key.removed" | "integrations.claude.analytics_key.added" | "integrations.claude.analytics_key.updated" | "integrations.claude.analytics_key.removed" | "readiness.scan_precheck_failed" | "productivity.ingest.completed" | "productivity.ingest.failed" | "productivity.ingest.skipped";
5053
5231
  ActivityLogActorDto: {
5054
5232
  /** Format: uuid */
5055
5233
  userId: string;
@@ -5453,6 +5631,13 @@ export type AiUsageSpendUsageTrendsProviderWeekDto = components['schemas']['AiUs
5453
5631
  export type AiUsageSpendUsageTrendsDayDto = components['schemas']['AiUsageSpendUsageTrendsDayDto'];
5454
5632
  export type AiUsageSpendUsageTrendsWeekDto = components['schemas']['AiUsageSpendUsageTrendsWeekDto'];
5455
5633
  export type AiUsageSpendUsageTrendsDto = components['schemas']['AiUsageSpendUsageTrendsDto'];
5634
+ export type AiToolProviderSummaryWeekBucketDto = components['schemas']['AiToolProviderSummaryWeekBucketDto'];
5635
+ export type AiToolProviderSummaryTopMoverDto = components['schemas']['AiToolProviderSummaryTopMoverDto'];
5636
+ export type AiToolProviderSummaryDto = components['schemas']['AiToolProviderSummaryDto'];
5637
+ export type AiToolDailySeriesPointDto = components['schemas']['AiToolDailySeriesPointDto'];
5638
+ export type AiToolDailySeriesDto = components['schemas']['AiToolDailySeriesDto'];
5639
+ export type AiToolModelBreakdownItemDto = components['schemas']['AiToolModelBreakdownItemDto'];
5640
+ export type AiToolModelBreakdownDto = components['schemas']['AiToolModelBreakdownDto'];
5456
5641
  export type AiToolMemberSummaryDto = components['schemas']['AiToolMemberSummaryDto'];
5457
5642
  export type AiToolMembersListDto = components['schemas']['AiToolMembersListDto'];
5458
5643
  export type AiToolTeamSummaryDto = components['schemas']['AiToolTeamSummaryDto'];
@@ -5570,6 +5755,7 @@ export type ProjectDto = components['schemas']['ProjectDto'];
5570
5755
  export type ProjectPatchDto = components['schemas']['ProjectPatchDto'];
5571
5756
  export type NotificationDto = components['schemas']['NotificationDto'];
5572
5757
  export type NotificationListDto = components['schemas']['NotificationListDto'];
5758
+ export type NotificationUnreadCountDto = components['schemas']['NotificationUnreadCountDto'];
5573
5759
  export type EffectiveTaskRowDto = components['schemas']['EffectiveTaskRowDto'];
5574
5760
  export type EffectivePhaseTasksBlockDto = components['schemas']['EffectivePhaseTasksBlockDto'];
5575
5761
  export type AiStrategyRecommendBodyDto = components['schemas']['AiStrategyRecommendBodyDto'];
@@ -7783,8 +7969,10 @@ export interface operations {
7783
7969
  windowEnd?: string;
7784
7970
  /** @description When set, aggregate engagement metrics for a single AI-tool member (user detail pages). Mutually exclusive with `scopeTeamId`. */
7785
7971
  memberExternalId?: string;
7786
- /** @description Org-chart team id — aggregate engagement for members mapped to that team (team detail pages). Mutually exclusive with `memberExternalId`. */
7972
+ /** @description Org-chart team id — aggregate engagement for members mapped to that team (team detail pages). Mutually exclusive with `memberExternalId` and `scopeExternalIds`. */
7787
7973
  scopeTeamId?: string;
7974
+ /** @description Comma-separated AI-tool member external IDs — aggregate engagement for exactly those seats (team detail when scoped via slim reads). Mutually exclusive with `memberExternalId` and `scopeTeamId`. */
7975
+ scopeExternalIds?: string;
7788
7976
  /** @description Optional provider id filter (`cursor`, `claude`) for detail pages. */
7789
7977
  provider?: "cursor" | "claude";
7790
7978
  };
@@ -8056,6 +8244,10 @@ export interface operations {
8056
8244
  parameters: {
8057
8245
  query?: {
8058
8246
  rangeId?: "4w" | "8w" | "q";
8247
+ /** @description Inclusive start day (YYYY-MM-DD). When set with `to`, overrides `rangeId` calendar buckets for the aggregation window. */
8248
+ from?: string;
8249
+ /** @description Inclusive end day (YYYY-MM-DD). Requires `from`. */
8250
+ to?: string;
8059
8251
  windowEnd?: string;
8060
8252
  page?: number;
8061
8253
  pageSize?: number;
@@ -8108,6 +8300,10 @@ export interface operations {
8108
8300
  parameters: {
8109
8301
  query?: {
8110
8302
  rangeId?: "4w" | "8w" | "q";
8303
+ /** @description Inclusive start day (YYYY-MM-DD). When set with `to`, overrides `rangeId`. */
8304
+ from?: string;
8305
+ /** @description Inclusive end day (YYYY-MM-DD). Requires `from`. */
8306
+ to?: string;
8111
8307
  windowEnd?: string;
8112
8308
  };
8113
8309
  header?: never;
@@ -8155,6 +8351,10 @@ export interface operations {
8155
8351
  parameters: {
8156
8352
  query?: {
8157
8353
  rangeId?: "4w" | "8w" | "q";
8354
+ /** @description Inclusive start day (YYYY-MM-DD). When set with `to`, overrides `rangeId`. */
8355
+ from?: string;
8356
+ /** @description Inclusive end day (YYYY-MM-DD). Requires `from`. */
8357
+ to?: string;
8158
8358
  windowEnd?: string;
8159
8359
  };
8160
8360
  header?: never;
@@ -8758,6 +8958,130 @@ export interface operations {
8758
8958
  403: components["responses"]["Forbidden"];
8759
8959
  };
8760
8960
  };
8961
+ getWorkspaceAiToolProviderSummary: {
8962
+ parameters: {
8963
+ query: {
8964
+ from: string;
8965
+ to: string;
8966
+ };
8967
+ header?: never;
8968
+ path: {
8969
+ workspaceId: components["parameters"]["WorkspaceId"];
8970
+ provider: "cursor" | "claude";
8971
+ };
8972
+ cookie?: never;
8973
+ };
8974
+ requestBody?: never;
8975
+ responses: {
8976
+ /** @description Provider summary */
8977
+ 200: {
8978
+ headers: {
8979
+ [name: string]: unknown;
8980
+ };
8981
+ content: {
8982
+ "application/json": components["schemas"]["AiToolProviderSummaryDto"];
8983
+ };
8984
+ };
8985
+ /** @description Invalid query */
8986
+ 400: {
8987
+ headers: {
8988
+ [name: string]: unknown;
8989
+ };
8990
+ content: {
8991
+ "application/json": {
8992
+ /** @example invalid_query */
8993
+ error: string;
8994
+ };
8995
+ };
8996
+ };
8997
+ 401: components["responses"]["Unauthorized"];
8998
+ 403: components["responses"]["Forbidden"];
8999
+ };
9000
+ };
9001
+ getWorkspaceAiToolProviderDailySeries: {
9002
+ parameters: {
9003
+ query: {
9004
+ from: string;
9005
+ to: string;
9006
+ /** @description Optional member external IDs. When set, the series includes only those members (team drill-down, user detail). Repeat the parameter or pass comma-separated values. */
9007
+ externalId?: string[];
9008
+ };
9009
+ header?: never;
9010
+ path: {
9011
+ workspaceId: components["parameters"]["WorkspaceId"];
9012
+ provider: "cursor" | "claude";
9013
+ };
9014
+ cookie?: never;
9015
+ };
9016
+ requestBody?: never;
9017
+ responses: {
9018
+ /** @description Daily series */
9019
+ 200: {
9020
+ headers: {
9021
+ [name: string]: unknown;
9022
+ };
9023
+ content: {
9024
+ "application/json": components["schemas"]["AiToolDailySeriesDto"];
9025
+ };
9026
+ };
9027
+ /** @description Invalid query */
9028
+ 400: {
9029
+ headers: {
9030
+ [name: string]: unknown;
9031
+ };
9032
+ content: {
9033
+ "application/json": {
9034
+ /** @example invalid_query */
9035
+ error: string;
9036
+ };
9037
+ };
9038
+ };
9039
+ 401: components["responses"]["Unauthorized"];
9040
+ 403: components["responses"]["Forbidden"];
9041
+ };
9042
+ };
9043
+ getWorkspaceAiToolProviderModelBreakdown: {
9044
+ parameters: {
9045
+ query: {
9046
+ from: string;
9047
+ to: string;
9048
+ /** @description Optional member external IDs to scope the rollup (org/team filter). */
9049
+ externalId?: string[];
9050
+ };
9051
+ header?: never;
9052
+ path: {
9053
+ workspaceId: components["parameters"]["WorkspaceId"];
9054
+ provider: "cursor" | "claude";
9055
+ };
9056
+ cookie?: never;
9057
+ };
9058
+ requestBody?: never;
9059
+ responses: {
9060
+ /** @description Model breakdown */
9061
+ 200: {
9062
+ headers: {
9063
+ [name: string]: unknown;
9064
+ };
9065
+ content: {
9066
+ "application/json": components["schemas"]["AiToolModelBreakdownDto"];
9067
+ };
9068
+ };
9069
+ /** @description Invalid query */
9070
+ 400: {
9071
+ headers: {
9072
+ [name: string]: unknown;
9073
+ };
9074
+ content: {
9075
+ "application/json": {
9076
+ /** @example invalid_query */
9077
+ error: string;
9078
+ };
9079
+ };
9080
+ };
9081
+ 401: components["responses"]["Unauthorized"];
9082
+ 403: components["responses"]["Forbidden"];
9083
+ };
9084
+ };
8761
9085
  getWorkspaceAiToolRefreshStatus: {
8762
9086
  parameters: {
8763
9087
  query?: never;
@@ -11054,6 +11378,29 @@ export interface operations {
11054
11378
  401: components["responses"]["Unauthorized"];
11055
11379
  };
11056
11380
  };
11381
+ getNotificationUnreadCount: {
11382
+ parameters: {
11383
+ query?: never;
11384
+ header?: never;
11385
+ path: {
11386
+ workspaceId: components["parameters"]["WorkspaceId"];
11387
+ };
11388
+ cookie?: never;
11389
+ };
11390
+ requestBody?: never;
11391
+ responses: {
11392
+ /** @description Unread count for the current user in this workspace (respecting notification preferences) */
11393
+ 200: {
11394
+ headers: {
11395
+ [name: string]: unknown;
11396
+ };
11397
+ content: {
11398
+ "application/json": components["schemas"]["NotificationUnreadCountDto"];
11399
+ };
11400
+ };
11401
+ 401: components["responses"]["Unauthorized"];
11402
+ };
11403
+ };
11057
11404
  postNotificationRead: {
11058
11405
  parameters: {
11059
11406
  query?: never;