@thinkai/tai-api-contract 2.40.0 → 2.41.0-pr.841.238652fb

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,59 @@ 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
+ AiToolMemberHeatmapDayDto: {
3026
+ /** Format: date */
3027
+ day: string;
3028
+ isActive: boolean;
3029
+ tokenCount: number;
3030
+ };
3031
+ AiToolMemberDetailDto: {
3032
+ externalId: string;
3033
+ email: string;
3034
+ displayName?: string;
3035
+ role?: string;
3036
+ isRemoved: boolean;
3037
+ spendCents: number;
3038
+ tokenCount: number;
3039
+ activeDays: number;
3040
+ teamName?: string;
3041
+ modelBreakdown: components["schemas"]["AiToolMemberModelBreakdownItemDto"][];
3042
+ heatmap: components["schemas"]["AiToolMemberHeatmapDayDto"][];
3043
+ };
2931
3044
  MeProfileDto: {
2932
3045
  id: string;
2933
3046
  email: string;
@@ -4509,6 +4622,13 @@ export type AiUsageSpendRoiProductivitySignalDto = components['schemas']['AiUsag
4509
4622
  export type AiUsageSpendUsageTrendsProviderWeekDto = components['schemas']['AiUsageSpendUsageTrendsProviderWeekDto'];
4510
4623
  export type AiUsageSpendUsageTrendsWeekDto = components['schemas']['AiUsageSpendUsageTrendsWeekDto'];
4511
4624
  export type AiUsageSpendUsageTrendsDto = components['schemas']['AiUsageSpendUsageTrendsDto'];
4625
+ export type AiToolMemberSummaryDto = components['schemas']['AiToolMemberSummaryDto'];
4626
+ export type AiToolMembersListDto = components['schemas']['AiToolMembersListDto'];
4627
+ export type AiToolTeamSummaryDto = components['schemas']['AiToolTeamSummaryDto'];
4628
+ export type AiToolTeamsListDto = components['schemas']['AiToolTeamsListDto'];
4629
+ export type AiToolMemberModelBreakdownItemDto = components['schemas']['AiToolMemberModelBreakdownItemDto'];
4630
+ export type AiToolMemberHeatmapDayDto = components['schemas']['AiToolMemberHeatmapDayDto'];
4631
+ export type AiToolMemberDetailDto = components['schemas']['AiToolMemberDetailDto'];
4512
4632
  export type MeProfileDto = components['schemas']['MeProfileDto'];
4513
4633
  export type UpdateMeBodyDto = components['schemas']['UpdateMeBodyDto'];
4514
4634
  export type WorkspaceSummaryDto = components['schemas']['WorkspaceSummaryDto'];
@@ -6314,6 +6434,154 @@ export interface operations {
6314
6434
  };
6315
6435
  };
6316
6436
  };
6437
+ getAiToolMembers: {
6438
+ parameters: {
6439
+ query?: {
6440
+ rangeId?: "4w" | "8w" | "q";
6441
+ windowEnd?: string;
6442
+ page?: number;
6443
+ pageSize?: number;
6444
+ search?: string;
6445
+ sort?: "spend_cents_desc" | "active_days_desc" | "token_count_desc" | "name_asc";
6446
+ };
6447
+ header?: never;
6448
+ path: {
6449
+ workspaceId: components["parameters"]["WorkspaceId"];
6450
+ /** @description AI tool provider id (e.g. claude, cursor). */
6451
+ provider: string;
6452
+ };
6453
+ cookie?: never;
6454
+ };
6455
+ requestBody?: never;
6456
+ responses: {
6457
+ /** @description Paginated member list with usage totals */
6458
+ 200: {
6459
+ headers: {
6460
+ [name: string]: unknown;
6461
+ };
6462
+ content: {
6463
+ "application/json": components["schemas"]["AiToolMembersListDto"];
6464
+ };
6465
+ };
6466
+ /** @description Invalid query parameters */
6467
+ 400: {
6468
+ headers: {
6469
+ [name: string]: unknown;
6470
+ };
6471
+ content: {
6472
+ "application/json": {
6473
+ /** @example invalid_query */
6474
+ error: string;
6475
+ };
6476
+ };
6477
+ };
6478
+ 401: components["responses"]["Unauthorized"];
6479
+ 403: components["responses"]["Forbidden"];
6480
+ /** @description Workspace does not exist or malformed workspaceId */
6481
+ 404: {
6482
+ headers: {
6483
+ [name: string]: unknown;
6484
+ };
6485
+ content?: never;
6486
+ };
6487
+ };
6488
+ };
6489
+ getAiToolTeams: {
6490
+ parameters: {
6491
+ query?: {
6492
+ rangeId?: "4w" | "8w" | "q";
6493
+ windowEnd?: string;
6494
+ };
6495
+ header?: never;
6496
+ path: {
6497
+ workspaceId: components["parameters"]["WorkspaceId"];
6498
+ provider: string;
6499
+ };
6500
+ cookie?: never;
6501
+ };
6502
+ requestBody?: never;
6503
+ responses: {
6504
+ /** @description Team rollup list */
6505
+ 200: {
6506
+ headers: {
6507
+ [name: string]: unknown;
6508
+ };
6509
+ content: {
6510
+ "application/json": components["schemas"]["AiToolTeamsListDto"];
6511
+ };
6512
+ };
6513
+ /** @description Invalid query parameters */
6514
+ 400: {
6515
+ headers: {
6516
+ [name: string]: unknown;
6517
+ };
6518
+ content: {
6519
+ "application/json": {
6520
+ /** @example invalid_query */
6521
+ error: string;
6522
+ };
6523
+ };
6524
+ };
6525
+ 401: components["responses"]["Unauthorized"];
6526
+ 403: components["responses"]["Forbidden"];
6527
+ /** @description Workspace does not exist or malformed workspaceId */
6528
+ 404: {
6529
+ headers: {
6530
+ [name: string]: unknown;
6531
+ };
6532
+ content?: never;
6533
+ };
6534
+ };
6535
+ };
6536
+ getAiToolMemberDetail: {
6537
+ parameters: {
6538
+ query?: {
6539
+ rangeId?: "4w" | "8w" | "q";
6540
+ windowEnd?: string;
6541
+ };
6542
+ header?: never;
6543
+ path: {
6544
+ workspaceId: components["parameters"]["WorkspaceId"];
6545
+ provider: string;
6546
+ /** @description Provider-assigned member external id. */
6547
+ externalId: string;
6548
+ };
6549
+ cookie?: never;
6550
+ };
6551
+ requestBody?: never;
6552
+ responses: {
6553
+ /** @description Member detail with model breakdown and day heatmap */
6554
+ 200: {
6555
+ headers: {
6556
+ [name: string]: unknown;
6557
+ };
6558
+ content: {
6559
+ "application/json": components["schemas"]["AiToolMemberDetailDto"];
6560
+ };
6561
+ };
6562
+ /** @description Invalid query parameters */
6563
+ 400: {
6564
+ headers: {
6565
+ [name: string]: unknown;
6566
+ };
6567
+ content: {
6568
+ "application/json": {
6569
+ /** @example invalid_query */
6570
+ error: string;
6571
+ };
6572
+ };
6573
+ };
6574
+ 401: components["responses"]["Unauthorized"];
6575
+ 403: components["responses"]["Forbidden"];
6576
+ /** @description Workspace or member does not exist */
6577
+ 404: {
6578
+ headers: {
6579
+ [name: string]: unknown;
6580
+ };
6581
+ content?: never;
6582
+ };
6583
+ };
6584
+ };
6317
6585
  getCompanyProfile: {
6318
6586
  parameters: {
6319
6587
  query?: never;