@thinkai/tai-api-contract 2.53.0 → 2.54.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.
@@ -1132,6 +1132,66 @@ export interface paths {
1132
1132
  patch?: never;
1133
1133
  trace?: never;
1134
1134
  };
1135
+ "/workspaces/{workspaceId}/integrations/ai-tool/{provider}/summary": {
1136
+ parameters: {
1137
+ query?: never;
1138
+ header?: never;
1139
+ path?: never;
1140
+ cookie?: never;
1141
+ };
1142
+ /**
1143
+ * AI-tool provider summary for a date window
1144
+ * @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.
1145
+ */
1146
+ get: operations["getWorkspaceAiToolProviderSummary"];
1147
+ put?: never;
1148
+ post?: never;
1149
+ delete?: never;
1150
+ options?: never;
1151
+ head?: never;
1152
+ patch?: never;
1153
+ trace?: never;
1154
+ };
1155
+ "/workspaces/{workspaceId}/integrations/ai-tool/{provider}/daily-series": {
1156
+ parameters: {
1157
+ query?: never;
1158
+ header?: never;
1159
+ path?: never;
1160
+ cookie?: never;
1161
+ };
1162
+ /**
1163
+ * AI-tool daily spend and usage series for charts
1164
+ * @description Daily chart points (spend and tokens) with optional product/model breakdown. Scoped to the requested date window; intended for the overview trend chart.
1165
+ */
1166
+ get: operations["getWorkspaceAiToolProviderDailySeries"];
1167
+ put?: never;
1168
+ post?: never;
1169
+ delete?: never;
1170
+ options?: never;
1171
+ head?: never;
1172
+ patch?: never;
1173
+ trace?: never;
1174
+ };
1175
+ "/workspaces/{workspaceId}/integrations/ai-tool/{provider}/model-breakdown": {
1176
+ parameters: {
1177
+ query?: never;
1178
+ header?: never;
1179
+ path?: never;
1180
+ cookie?: never;
1181
+ };
1182
+ /**
1183
+ * AI-tool model spend rollup for a date window
1184
+ * @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.
1185
+ */
1186
+ get: operations["getWorkspaceAiToolProviderModelBreakdown"];
1187
+ put?: never;
1188
+ post?: never;
1189
+ delete?: never;
1190
+ options?: never;
1191
+ head?: never;
1192
+ patch?: never;
1193
+ trace?: never;
1194
+ };
1135
1195
  "/workspaces/{workspaceId}/integrations/ai-tool/{provider}/status": {
1136
1196
  parameters: {
1137
1197
  query?: never;
@@ -3579,6 +3639,97 @@ export interface components {
3579
3639
  days?: components["schemas"]["AiUsageSpendUsageTrendsDayDto"][];
3580
3640
  weeks?: components["schemas"]["AiUsageSpendUsageTrendsWeekDto"][];
3581
3641
  };
3642
+ AiToolProviderSummaryWeekBucketDto: {
3643
+ weekLabel: string;
3644
+ spendCents: number;
3645
+ tokenCount: number;
3646
+ activeUsers: number;
3647
+ };
3648
+ AiToolProviderSummaryTopMoverDto: {
3649
+ externalId: string;
3650
+ label: string;
3651
+ deltaSpendCents: number;
3652
+ currentSpendCents: number;
3653
+ };
3654
+ AiToolProviderSummaryDto: {
3655
+ provider: string;
3656
+ /** Format: date */
3657
+ from: string;
3658
+ /** Format: date */
3659
+ to: string;
3660
+ status?: components["schemas"]["AiToolRefreshStatusDto"];
3661
+ seatCounts: {
3662
+ total: number;
3663
+ active: number;
3664
+ removed: number;
3665
+ };
3666
+ totals: {
3667
+ spendCents: number;
3668
+ tokenCount: number;
3669
+ activeUsers: number;
3670
+ totalEngineers: number;
3671
+ };
3672
+ weekBuckets: components["schemas"]["AiToolProviderSummaryWeekBucketDto"][];
3673
+ topMovers?: components["schemas"]["AiToolProviderSummaryTopMoverDto"][];
3674
+ hasTokenMetrics?: boolean;
3675
+ /** Format: date-time */
3676
+ generatedAt: string;
3677
+ };
3678
+ AiToolDailySeriesPointDto: {
3679
+ /** Format: date */
3680
+ day: string;
3681
+ label: string;
3682
+ spendCents: number;
3683
+ tokenCount: number;
3684
+ /** @description Spend cents by product label. */
3685
+ products: {
3686
+ [key: string]: number;
3687
+ };
3688
+ /** @description Spend cents by model name. */
3689
+ models: {
3690
+ [key: string]: number;
3691
+ };
3692
+ };
3693
+ AiToolDailySeriesDto: {
3694
+ provider: string;
3695
+ /** Format: date */
3696
+ from: string;
3697
+ /** Format: date */
3698
+ to: string;
3699
+ points: components["schemas"]["AiToolDailySeriesPointDto"][];
3700
+ productKeys: string[];
3701
+ modelKeys: string[];
3702
+ totals: {
3703
+ spendCents: number;
3704
+ tokenCount: number;
3705
+ };
3706
+ hasProductBreakdown?: boolean;
3707
+ hasModelBreakdown?: boolean;
3708
+ hasSpend?: boolean;
3709
+ hasTokens?: boolean;
3710
+ /** Format: date-time */
3711
+ generatedAt: string;
3712
+ };
3713
+ AiToolModelBreakdownItemDto: {
3714
+ modelName: string;
3715
+ spendCents: number;
3716
+ tokenCount: number;
3717
+ activeUsers: number;
3718
+ };
3719
+ AiToolModelBreakdownDto: {
3720
+ provider: string;
3721
+ /** Format: date */
3722
+ from: string;
3723
+ /** Format: date */
3724
+ to: string;
3725
+ models: components["schemas"]["AiToolModelBreakdownItemDto"][];
3726
+ totals: {
3727
+ spendCents: number;
3728
+ tokenCount: number;
3729
+ };
3730
+ /** Format: date-time */
3731
+ generatedAt: string;
3732
+ };
3582
3733
  AiToolMemberSummaryDto: {
3583
3734
  externalId: string;
3584
3735
  email: string;
@@ -3588,6 +3739,10 @@ export interface components {
3588
3739
  tokenCount: number;
3589
3740
  activeDays: number;
3590
3741
  mostUsedModel?: string;
3742
+ /** @description Per-product spend in cents for the requested window (Claude Enterprise). Omitted when no product-level daily rows exist for the member. */
3743
+ productBreakdownCents?: {
3744
+ [key: string]: number;
3745
+ };
3591
3746
  };
3592
3747
  AiToolMembersListDto: {
3593
3748
  members: components["schemas"]["AiToolMemberSummaryDto"][];
@@ -5477,6 +5632,13 @@ export type AiUsageSpendUsageTrendsProviderWeekDto = components['schemas']['AiUs
5477
5632
  export type AiUsageSpendUsageTrendsDayDto = components['schemas']['AiUsageSpendUsageTrendsDayDto'];
5478
5633
  export type AiUsageSpendUsageTrendsWeekDto = components['schemas']['AiUsageSpendUsageTrendsWeekDto'];
5479
5634
  export type AiUsageSpendUsageTrendsDto = components['schemas']['AiUsageSpendUsageTrendsDto'];
5635
+ export type AiToolProviderSummaryWeekBucketDto = components['schemas']['AiToolProviderSummaryWeekBucketDto'];
5636
+ export type AiToolProviderSummaryTopMoverDto = components['schemas']['AiToolProviderSummaryTopMoverDto'];
5637
+ export type AiToolProviderSummaryDto = components['schemas']['AiToolProviderSummaryDto'];
5638
+ export type AiToolDailySeriesPointDto = components['schemas']['AiToolDailySeriesPointDto'];
5639
+ export type AiToolDailySeriesDto = components['schemas']['AiToolDailySeriesDto'];
5640
+ export type AiToolModelBreakdownItemDto = components['schemas']['AiToolModelBreakdownItemDto'];
5641
+ export type AiToolModelBreakdownDto = components['schemas']['AiToolModelBreakdownDto'];
5480
5642
  export type AiToolMemberSummaryDto = components['schemas']['AiToolMemberSummaryDto'];
5481
5643
  export type AiToolMembersListDto = components['schemas']['AiToolMembersListDto'];
5482
5644
  export type AiToolTeamSummaryDto = components['schemas']['AiToolTeamSummaryDto'];
@@ -7808,8 +7970,10 @@ export interface operations {
7808
7970
  windowEnd?: string;
7809
7971
  /** @description When set, aggregate engagement metrics for a single AI-tool member (user detail pages). Mutually exclusive with `scopeTeamId`. */
7810
7972
  memberExternalId?: string;
7811
- /** @description Org-chart team id — aggregate engagement for members mapped to that team (team detail pages). Mutually exclusive with `memberExternalId`. */
7973
+ /** @description Org-chart team id — aggregate engagement for members mapped to that team (team detail pages). Mutually exclusive with `memberExternalId` and `scopeExternalIds`. */
7812
7974
  scopeTeamId?: string;
7975
+ /** @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`. */
7976
+ scopeExternalIds?: string;
7813
7977
  /** @description Optional provider id filter (`cursor`, `claude`) for detail pages. */
7814
7978
  provider?: "cursor" | "claude";
7815
7979
  };
@@ -8081,6 +8245,10 @@ export interface operations {
8081
8245
  parameters: {
8082
8246
  query?: {
8083
8247
  rangeId?: "4w" | "8w" | "q";
8248
+ /** @description Inclusive start day (YYYY-MM-DD). When set with `to`, overrides `rangeId` calendar buckets for the aggregation window. */
8249
+ from?: string;
8250
+ /** @description Inclusive end day (YYYY-MM-DD). Requires `from`. */
8251
+ to?: string;
8084
8252
  windowEnd?: string;
8085
8253
  page?: number;
8086
8254
  pageSize?: number;
@@ -8133,6 +8301,10 @@ export interface operations {
8133
8301
  parameters: {
8134
8302
  query?: {
8135
8303
  rangeId?: "4w" | "8w" | "q";
8304
+ /** @description Inclusive start day (YYYY-MM-DD). When set with `to`, overrides `rangeId`. */
8305
+ from?: string;
8306
+ /** @description Inclusive end day (YYYY-MM-DD). Requires `from`. */
8307
+ to?: string;
8136
8308
  windowEnd?: string;
8137
8309
  };
8138
8310
  header?: never;
@@ -8180,6 +8352,10 @@ export interface operations {
8180
8352
  parameters: {
8181
8353
  query?: {
8182
8354
  rangeId?: "4w" | "8w" | "q";
8355
+ /** @description Inclusive start day (YYYY-MM-DD). When set with `to`, overrides `rangeId`. */
8356
+ from?: string;
8357
+ /** @description Inclusive end day (YYYY-MM-DD). Requires `from`. */
8358
+ to?: string;
8183
8359
  windowEnd?: string;
8184
8360
  };
8185
8361
  header?: never;
@@ -8783,6 +8959,130 @@ export interface operations {
8783
8959
  403: components["responses"]["Forbidden"];
8784
8960
  };
8785
8961
  };
8962
+ getWorkspaceAiToolProviderSummary: {
8963
+ parameters: {
8964
+ query: {
8965
+ from: string;
8966
+ to: string;
8967
+ };
8968
+ header?: never;
8969
+ path: {
8970
+ workspaceId: components["parameters"]["WorkspaceId"];
8971
+ provider: "cursor" | "claude";
8972
+ };
8973
+ cookie?: never;
8974
+ };
8975
+ requestBody?: never;
8976
+ responses: {
8977
+ /** @description Provider summary */
8978
+ 200: {
8979
+ headers: {
8980
+ [name: string]: unknown;
8981
+ };
8982
+ content: {
8983
+ "application/json": components["schemas"]["AiToolProviderSummaryDto"];
8984
+ };
8985
+ };
8986
+ /** @description Invalid query */
8987
+ 400: {
8988
+ headers: {
8989
+ [name: string]: unknown;
8990
+ };
8991
+ content: {
8992
+ "application/json": {
8993
+ /** @example invalid_query */
8994
+ error: string;
8995
+ };
8996
+ };
8997
+ };
8998
+ 401: components["responses"]["Unauthorized"];
8999
+ 403: components["responses"]["Forbidden"];
9000
+ };
9001
+ };
9002
+ getWorkspaceAiToolProviderDailySeries: {
9003
+ parameters: {
9004
+ query: {
9005
+ from: string;
9006
+ to: string;
9007
+ /** @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. */
9008
+ externalId?: string[];
9009
+ };
9010
+ header?: never;
9011
+ path: {
9012
+ workspaceId: components["parameters"]["WorkspaceId"];
9013
+ provider: "cursor" | "claude";
9014
+ };
9015
+ cookie?: never;
9016
+ };
9017
+ requestBody?: never;
9018
+ responses: {
9019
+ /** @description Daily series */
9020
+ 200: {
9021
+ headers: {
9022
+ [name: string]: unknown;
9023
+ };
9024
+ content: {
9025
+ "application/json": components["schemas"]["AiToolDailySeriesDto"];
9026
+ };
9027
+ };
9028
+ /** @description Invalid query */
9029
+ 400: {
9030
+ headers: {
9031
+ [name: string]: unknown;
9032
+ };
9033
+ content: {
9034
+ "application/json": {
9035
+ /** @example invalid_query */
9036
+ error: string;
9037
+ };
9038
+ };
9039
+ };
9040
+ 401: components["responses"]["Unauthorized"];
9041
+ 403: components["responses"]["Forbidden"];
9042
+ };
9043
+ };
9044
+ getWorkspaceAiToolProviderModelBreakdown: {
9045
+ parameters: {
9046
+ query: {
9047
+ from: string;
9048
+ to: string;
9049
+ /** @description Optional member external IDs to scope the rollup (org/team filter). */
9050
+ externalId?: string[];
9051
+ };
9052
+ header?: never;
9053
+ path: {
9054
+ workspaceId: components["parameters"]["WorkspaceId"];
9055
+ provider: "cursor" | "claude";
9056
+ };
9057
+ cookie?: never;
9058
+ };
9059
+ requestBody?: never;
9060
+ responses: {
9061
+ /** @description Model breakdown */
9062
+ 200: {
9063
+ headers: {
9064
+ [name: string]: unknown;
9065
+ };
9066
+ content: {
9067
+ "application/json": components["schemas"]["AiToolModelBreakdownDto"];
9068
+ };
9069
+ };
9070
+ /** @description Invalid query */
9071
+ 400: {
9072
+ headers: {
9073
+ [name: string]: unknown;
9074
+ };
9075
+ content: {
9076
+ "application/json": {
9077
+ /** @example invalid_query */
9078
+ error: string;
9079
+ };
9080
+ };
9081
+ };
9082
+ 401: components["responses"]["Unauthorized"];
9083
+ 403: components["responses"]["Forbidden"];
9084
+ };
9085
+ };
8786
9086
  getWorkspaceAiToolRefreshStatus: {
8787
9087
  parameters: {
8788
9088
  query?: never;
package/src/index.ts CHANGED
@@ -1254,6 +1254,85 @@ export interface HrisTriggerSyncResultDto {
1254
1254
  providers?: HrisProviderSyncResultDto[];
1255
1255
  }
1256
1256
 
1257
+ /** Weekly bucket in GET .../integrations/ai-tool/:provider/summary */
1258
+ export interface AiToolProviderSummaryWeekBucketDto {
1259
+ weekLabel: string;
1260
+ spendCents: number;
1261
+ tokenCount: number;
1262
+ activeUsers: number;
1263
+ }
1264
+
1265
+ /** Top spend mover between first and second half of the summary window. */
1266
+ export interface AiToolProviderSummaryTopMoverDto {
1267
+ externalId: string;
1268
+ label: string;
1269
+ deltaSpendCents: number;
1270
+ currentSpendCents: number;
1271
+ }
1272
+
1273
+ /** Response for GET .../integrations/ai-tool/:provider/summary */
1274
+ export interface AiToolProviderSummaryDto {
1275
+ provider: string;
1276
+ from: string;
1277
+ to: string;
1278
+ status?: import("./generated/openapi.js").components["schemas"]["AiToolRefreshStatusDto"];
1279
+ seatCounts: { total: number; active: number; removed: number };
1280
+ totals: {
1281
+ spendCents: number;
1282
+ tokenCount: number;
1283
+ activeUsers: number;
1284
+ totalEngineers: number;
1285
+ };
1286
+ weekBuckets: AiToolProviderSummaryWeekBucketDto[];
1287
+ topMovers?: AiToolProviderSummaryTopMoverDto[];
1288
+ hasTokenMetrics?: boolean;
1289
+ generatedAt: string;
1290
+ }
1291
+
1292
+ /** One day in GET .../integrations/ai-tool/:provider/daily-series */
1293
+ export interface AiToolDailySeriesPointDto {
1294
+ day: string;
1295
+ label: string;
1296
+ spendCents: number;
1297
+ tokenCount: number;
1298
+ products: Record<string, number>;
1299
+ models: Record<string, number>;
1300
+ }
1301
+
1302
+ /** Response for GET .../integrations/ai-tool/:provider/daily-series */
1303
+ export interface AiToolDailySeriesDto {
1304
+ provider: string;
1305
+ from: string;
1306
+ to: string;
1307
+ points: AiToolDailySeriesPointDto[];
1308
+ productKeys: string[];
1309
+ modelKeys: string[];
1310
+ totals: { spendCents: number; tokenCount: number };
1311
+ hasProductBreakdown?: boolean;
1312
+ hasModelBreakdown?: boolean;
1313
+ hasSpend?: boolean;
1314
+ hasTokens?: boolean;
1315
+ generatedAt: string;
1316
+ }
1317
+
1318
+ /** One model row in GET .../integrations/ai-tool/:provider/model-breakdown */
1319
+ export interface AiToolModelBreakdownItemDto {
1320
+ modelName: string;
1321
+ spendCents: number;
1322
+ tokenCount: number;
1323
+ activeUsers: number;
1324
+ }
1325
+
1326
+ /** Response for GET .../integrations/ai-tool/:provider/model-breakdown */
1327
+ export interface AiToolModelBreakdownDto {
1328
+ provider: string;
1329
+ from: string;
1330
+ to: string;
1331
+ models: AiToolModelBreakdownItemDto[];
1332
+ totals: { spendCents: number; tokenCount: number };
1333
+ generatedAt: string;
1334
+ }
1335
+
1257
1336
  /** Single AI-tool seat with usage totals for a time range. */
1258
1337
  export interface AiToolMemberSummaryDto {
1259
1338
  externalId: string;
@@ -1264,6 +1343,8 @@ export interface AiToolMemberSummaryDto {
1264
1343
  tokenCount: number;
1265
1344
  activeDays: number;
1266
1345
  mostUsedModel?: string;
1346
+ /** Per-product spend in cents for the window (Claude Enterprise). */
1347
+ productBreakdownCents?: Record<string, number>;
1267
1348
  }
1268
1349
 
1269
1350
  /** Paginated response for GET .../integrations/ai-tool/:provider/members */