@thinkai/tai-api-contract 2.40.0 → 2.42.0-pr.841.9cb67bd6

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.
@@ -625,6 +625,66 @@ export interface paths {
625
625
  patch?: never;
626
626
  trace?: never;
627
627
  };
628
+ "/workspaces/{workspaceId}/integrations/ai-tool/{provider}/members": {
629
+ parameters: {
630
+ query?: never;
631
+ header?: never;
632
+ path?: never;
633
+ cookie?: never;
634
+ };
635
+ /**
636
+ * AI tool integration — paginated member list with usage totals
637
+ * @description Paginated list of active AI-tool seats enriched with spend, token, and active-day totals for the selected time range. Supports search (by email / display name) and sort (spend_cents_desc, active_days_desc, token_count_desc, name_asc). Useful for the **Members** tab of the AI tool integration detail page.
638
+ */
639
+ get: operations["getAiToolMembers"];
640
+ put?: never;
641
+ post?: never;
642
+ delete?: never;
643
+ options?: never;
644
+ head?: never;
645
+ patch?: never;
646
+ trace?: never;
647
+ };
648
+ "/workspaces/{workspaceId}/integrations/ai-tool/{provider}/teams": {
649
+ parameters: {
650
+ query?: never;
651
+ header?: never;
652
+ path?: never;
653
+ cookie?: never;
654
+ };
655
+ /**
656
+ * AI tool integration — team rollups from org chart
657
+ * @description Team-level AI tool usage aggregated from org-chart membership (SPA org chart snapshot). Returns spend, token, active member counts per team for the selected range. Members not mapped to any team are excluded.
658
+ */
659
+ get: operations["getAiToolTeams"];
660
+ put?: never;
661
+ post?: never;
662
+ delete?: never;
663
+ options?: never;
664
+ head?: never;
665
+ patch?: never;
666
+ trace?: never;
667
+ };
668
+ "/workspaces/{workspaceId}/integrations/ai-tool/{provider}/members/{externalId}": {
669
+ parameters: {
670
+ query?: never;
671
+ header?: never;
672
+ path?: never;
673
+ cookie?: never;
674
+ };
675
+ /**
676
+ * AI tool integration — member detail drill-down
677
+ * @description Individual member detail: total spend, tokens, active days, per-model spend breakdown, and per-day activity heatmap for the selected range. The member's team (from org chart) is returned when available.
678
+ */
679
+ get: operations["getAiToolMemberDetail"];
680
+ put?: never;
681
+ post?: never;
682
+ delete?: never;
683
+ options?: never;
684
+ head?: never;
685
+ patch?: never;
686
+ trace?: never;
687
+ };
628
688
  "/workspaces/{workspaceId}/company-profile": {
629
689
  parameters: {
630
690
  query?: never;
@@ -2928,6 +2988,68 @@ export interface components {
2928
2988
  generatedAt: string;
2929
2989
  weeks: components["schemas"]["AiUsageSpendUsageTrendsWeekDto"][];
2930
2990
  };
2991
+ AiToolMemberSummaryDto: {
2992
+ externalId: string;
2993
+ email: string;
2994
+ displayName?: string;
2995
+ role?: string;
2996
+ spendCents: number;
2997
+ tokenCount: number;
2998
+ activeDays: number;
2999
+ mostUsedModel?: string;
3000
+ };
3001
+ AiToolMembersListDto: {
3002
+ members: components["schemas"]["AiToolMemberSummaryDto"][];
3003
+ total: number;
3004
+ page: number;
3005
+ pageSize: number;
3006
+ };
3007
+ AiToolTeamSummaryDto: {
3008
+ teamId: string;
3009
+ teamName: string;
3010
+ memberCount: number;
3011
+ activeMembers: number;
3012
+ spendCents: number;
3013
+ tokenCount: number;
3014
+ };
3015
+ AiToolTeamsListDto: {
3016
+ teams: components["schemas"]["AiToolTeamSummaryDto"][];
3017
+ total: number;
3018
+ };
3019
+ AiToolMemberModelBreakdownItemDto: {
3020
+ modelName: string;
3021
+ spendCents: number;
3022
+ tokenCount: number;
3023
+ eventCount: number;
3024
+ };
3025
+ AiToolMemberProductBreakdownItemDto: {
3026
+ productName: string;
3027
+ spendCents: number;
3028
+ tokenCount: number;
3029
+ eventCount: number;
3030
+ };
3031
+ AiToolMemberHeatmapDayDto: {
3032
+ /** Format: date */
3033
+ day: string;
3034
+ isActive: boolean;
3035
+ tokenCount: number;
3036
+ };
3037
+ AiToolMemberDetailDto: {
3038
+ externalId: string;
3039
+ email: string;
3040
+ displayName?: string;
3041
+ role?: string;
3042
+ isRemoved: boolean;
3043
+ spendCents: number;
3044
+ tokenCount: number;
3045
+ activeDays: number;
3046
+ teamName?: string;
3047
+ teamAverageSpendCents?: number;
3048
+ teamMemberCount?: number;
3049
+ modelBreakdown: components["schemas"]["AiToolMemberModelBreakdownItemDto"][];
3050
+ productBreakdown: components["schemas"]["AiToolMemberProductBreakdownItemDto"][];
3051
+ heatmap: components["schemas"]["AiToolMemberHeatmapDayDto"][];
3052
+ };
2931
3053
  MeProfileDto: {
2932
3054
  id: string;
2933
3055
  email: string;
@@ -4509,6 +4631,14 @@ export type AiUsageSpendRoiProductivitySignalDto = components['schemas']['AiUsag
4509
4631
  export type AiUsageSpendUsageTrendsProviderWeekDto = components['schemas']['AiUsageSpendUsageTrendsProviderWeekDto'];
4510
4632
  export type AiUsageSpendUsageTrendsWeekDto = components['schemas']['AiUsageSpendUsageTrendsWeekDto'];
4511
4633
  export type AiUsageSpendUsageTrendsDto = components['schemas']['AiUsageSpendUsageTrendsDto'];
4634
+ export type AiToolMemberSummaryDto = components['schemas']['AiToolMemberSummaryDto'];
4635
+ export type AiToolMembersListDto = components['schemas']['AiToolMembersListDto'];
4636
+ export type AiToolTeamSummaryDto = components['schemas']['AiToolTeamSummaryDto'];
4637
+ export type AiToolTeamsListDto = components['schemas']['AiToolTeamsListDto'];
4638
+ export type AiToolMemberModelBreakdownItemDto = components['schemas']['AiToolMemberModelBreakdownItemDto'];
4639
+ export type AiToolMemberProductBreakdownItemDto = components['schemas']['AiToolMemberProductBreakdownItemDto'];
4640
+ export type AiToolMemberHeatmapDayDto = components['schemas']['AiToolMemberHeatmapDayDto'];
4641
+ export type AiToolMemberDetailDto = components['schemas']['AiToolMemberDetailDto'];
4512
4642
  export type MeProfileDto = components['schemas']['MeProfileDto'];
4513
4643
  export type UpdateMeBodyDto = components['schemas']['UpdateMeBodyDto'];
4514
4644
  export type WorkspaceSummaryDto = components['schemas']['WorkspaceSummaryDto'];
@@ -6314,6 +6444,154 @@ export interface operations {
6314
6444
  };
6315
6445
  };
6316
6446
  };
6447
+ getAiToolMembers: {
6448
+ parameters: {
6449
+ query?: {
6450
+ rangeId?: "4w" | "8w" | "q";
6451
+ windowEnd?: string;
6452
+ page?: number;
6453
+ pageSize?: number;
6454
+ search?: string;
6455
+ sort?: "spend_cents_desc" | "active_days_desc" | "token_count_desc" | "name_asc";
6456
+ };
6457
+ header?: never;
6458
+ path: {
6459
+ workspaceId: components["parameters"]["WorkspaceId"];
6460
+ /** @description AI tool provider id (e.g. claude, cursor). */
6461
+ provider: string;
6462
+ };
6463
+ cookie?: never;
6464
+ };
6465
+ requestBody?: never;
6466
+ responses: {
6467
+ /** @description Paginated member list with usage totals */
6468
+ 200: {
6469
+ headers: {
6470
+ [name: string]: unknown;
6471
+ };
6472
+ content: {
6473
+ "application/json": components["schemas"]["AiToolMembersListDto"];
6474
+ };
6475
+ };
6476
+ /** @description Invalid query parameters */
6477
+ 400: {
6478
+ headers: {
6479
+ [name: string]: unknown;
6480
+ };
6481
+ content: {
6482
+ "application/json": {
6483
+ /** @example invalid_query */
6484
+ error: string;
6485
+ };
6486
+ };
6487
+ };
6488
+ 401: components["responses"]["Unauthorized"];
6489
+ 403: components["responses"]["Forbidden"];
6490
+ /** @description Workspace does not exist or malformed workspaceId */
6491
+ 404: {
6492
+ headers: {
6493
+ [name: string]: unknown;
6494
+ };
6495
+ content?: never;
6496
+ };
6497
+ };
6498
+ };
6499
+ getAiToolTeams: {
6500
+ parameters: {
6501
+ query?: {
6502
+ rangeId?: "4w" | "8w" | "q";
6503
+ windowEnd?: string;
6504
+ };
6505
+ header?: never;
6506
+ path: {
6507
+ workspaceId: components["parameters"]["WorkspaceId"];
6508
+ provider: string;
6509
+ };
6510
+ cookie?: never;
6511
+ };
6512
+ requestBody?: never;
6513
+ responses: {
6514
+ /** @description Team rollup list */
6515
+ 200: {
6516
+ headers: {
6517
+ [name: string]: unknown;
6518
+ };
6519
+ content: {
6520
+ "application/json": components["schemas"]["AiToolTeamsListDto"];
6521
+ };
6522
+ };
6523
+ /** @description Invalid query parameters */
6524
+ 400: {
6525
+ headers: {
6526
+ [name: string]: unknown;
6527
+ };
6528
+ content: {
6529
+ "application/json": {
6530
+ /** @example invalid_query */
6531
+ error: string;
6532
+ };
6533
+ };
6534
+ };
6535
+ 401: components["responses"]["Unauthorized"];
6536
+ 403: components["responses"]["Forbidden"];
6537
+ /** @description Workspace does not exist or malformed workspaceId */
6538
+ 404: {
6539
+ headers: {
6540
+ [name: string]: unknown;
6541
+ };
6542
+ content?: never;
6543
+ };
6544
+ };
6545
+ };
6546
+ getAiToolMemberDetail: {
6547
+ parameters: {
6548
+ query?: {
6549
+ rangeId?: "4w" | "8w" | "q";
6550
+ windowEnd?: string;
6551
+ };
6552
+ header?: never;
6553
+ path: {
6554
+ workspaceId: components["parameters"]["WorkspaceId"];
6555
+ provider: string;
6556
+ /** @description Provider-assigned member external id. */
6557
+ externalId: string;
6558
+ };
6559
+ cookie?: never;
6560
+ };
6561
+ requestBody?: never;
6562
+ responses: {
6563
+ /** @description Member detail with model breakdown and day heatmap */
6564
+ 200: {
6565
+ headers: {
6566
+ [name: string]: unknown;
6567
+ };
6568
+ content: {
6569
+ "application/json": components["schemas"]["AiToolMemberDetailDto"];
6570
+ };
6571
+ };
6572
+ /** @description Invalid query parameters */
6573
+ 400: {
6574
+ headers: {
6575
+ [name: string]: unknown;
6576
+ };
6577
+ content: {
6578
+ "application/json": {
6579
+ /** @example invalid_query */
6580
+ error: string;
6581
+ };
6582
+ };
6583
+ };
6584
+ 401: components["responses"]["Unauthorized"];
6585
+ 403: components["responses"]["Forbidden"];
6586
+ /** @description Workspace or member does not exist */
6587
+ 404: {
6588
+ headers: {
6589
+ [name: string]: unknown;
6590
+ };
6591
+ content?: never;
6592
+ };
6593
+ };
6594
+ };
6317
6595
  getCompanyProfile: {
6318
6596
  parameters: {
6319
6597
  query?: never;