@thinkai/tai-api-contract 2.37.0-pr.810.f519687c → 2.38.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.
@@ -291,6 +291,26 @@ export interface paths {
291
291
  patch?: never;
292
292
  trace?: never;
293
293
  };
294
+ "/workspaces/{workspaceId}/sources/{type}/insights": {
295
+ parameters: {
296
+ query?: never;
297
+ header?: never;
298
+ path?: never;
299
+ cookie?: never;
300
+ };
301
+ get?: never;
302
+ put?: never;
303
+ post?: never;
304
+ /**
305
+ * Disconnect AI tool usage insights credentials
306
+ * @description Remove usage-insights credentials (admin/analytics API keys) for `cursor` or `claude` while preserving execution keys used by the readiness agent. Purges cached AI-tool usage data for that provider. Requires admin workspace role.
307
+ */
308
+ delete: operations["deleteSourceInsightsByType"];
309
+ options?: never;
310
+ head?: never;
311
+ patch?: never;
312
+ trace?: never;
313
+ };
294
314
  "/workspaces/{workspaceId}/dashboard/productivity": {
295
315
  parameters: {
296
316
  query?: never;
@@ -585,6 +605,26 @@ export interface paths {
585
605
  patch?: never;
586
606
  trace?: never;
587
607
  };
608
+ "/workspaces/{workspaceId}/insights/ai-usage-spend/usage-trends": {
609
+ parameters: {
610
+ query?: never;
611
+ header?: never;
612
+ path?: never;
613
+ cookie?: never;
614
+ };
615
+ /**
616
+ * AI usage & spend insights — per-provider weekly spend/token trends
617
+ * @description Per-provider weekly spend and token series for the **Usage Trends** stacked area chart on `/insights/ai-usage`. Returns one week entry per calendar bucket, each containing an array of provider rows with spend, token count, and active user count for that week. Weeks with zero activity for a provider are omitted from the providers array. Same filter params as other Measure insights routes.
618
+ */
619
+ get: operations["getAiUsageSpendUsageTrends"];
620
+ put?: never;
621
+ post?: never;
622
+ delete?: never;
623
+ options?: never;
624
+ head?: never;
625
+ patch?: never;
626
+ trace?: never;
627
+ };
588
628
  "/workspaces/{workspaceId}/company-profile": {
589
629
  parameters: {
590
630
  query?: never;
@@ -2839,6 +2879,31 @@ export interface components {
2839
2879
  usageDeltaPercent: number;
2840
2880
  weeks: components["schemas"]["AiUsageSpendRoiProductivitySignalWeekDto"][];
2841
2881
  };
2882
+ AiUsageSpendUsageTrendsProviderWeekDto: {
2883
+ providerId: string;
2884
+ providerName: string;
2885
+ spendCents: number;
2886
+ tokenCount: number;
2887
+ activeUsers: number;
2888
+ };
2889
+ AiUsageSpendUsageTrendsWeekDto: {
2890
+ /** Format: date-time */
2891
+ bucketStart: string;
2892
+ /** Format: date-time */
2893
+ bucketEnd: string;
2894
+ weekLabel?: string;
2895
+ providers: components["schemas"]["AiUsageSpendUsageTrendsProviderWeekDto"][];
2896
+ };
2897
+ AiUsageSpendUsageTrendsDto: {
2898
+ /** Format: uuid */
2899
+ workspaceId: string;
2900
+ /** @enum {string} */
2901
+ range: "4w" | "8w" | "q";
2902
+ scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
2903
+ /** Format: date-time */
2904
+ generatedAt: string;
2905
+ weeks: components["schemas"]["AiUsageSpendUsageTrendsWeekDto"][];
2906
+ };
2842
2907
  MeProfileDto: {
2843
2908
  id: string;
2844
2909
  email: string;
@@ -4041,7 +4106,7 @@ export interface components {
4041
4106
  * @description Type of workspace lifecycle event.
4042
4107
  * @enum {string}
4043
4108
  */
4044
- 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" | "readiness.scan_precheck_failed" | "productivity.ingest.completed" | "productivity.ingest.failed" | "productivity.ingest.skipped";
4109
+ 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";
4045
4110
  ActivityLogActorDto: {
4046
4111
  /** Format: uuid */
4047
4112
  userId: string;
@@ -4407,6 +4472,9 @@ export type AiUsageSpendAiToolUsageSpendDto = components['schemas']['AiUsageSpen
4407
4472
  export type AiUsageSpendTeamToolHeatmapDto = components['schemas']['AiUsageSpendTeamToolHeatmapDto'];
4408
4473
  export type AiUsageSpendRoiProductivitySignalWeekDto = components['schemas']['AiUsageSpendRoiProductivitySignalWeekDto'];
4409
4474
  export type AiUsageSpendRoiProductivitySignalDto = components['schemas']['AiUsageSpendRoiProductivitySignalDto'];
4475
+ export type AiUsageSpendUsageTrendsProviderWeekDto = components['schemas']['AiUsageSpendUsageTrendsProviderWeekDto'];
4476
+ export type AiUsageSpendUsageTrendsWeekDto = components['schemas']['AiUsageSpendUsageTrendsWeekDto'];
4477
+ export type AiUsageSpendUsageTrendsDto = components['schemas']['AiUsageSpendUsageTrendsDto'];
4410
4478
  export type MeProfileDto = components['schemas']['MeProfileDto'];
4411
4479
  export type UpdateMeBodyDto = components['schemas']['UpdateMeBodyDto'];
4412
4480
  export type WorkspaceSummaryDto = components['schemas']['WorkspaceSummaryDto'];
@@ -5330,6 +5398,63 @@ export interface operations {
5330
5398
  };
5331
5399
  };
5332
5400
  };
5401
+ deleteSourceInsightsByType: {
5402
+ parameters: {
5403
+ query?: never;
5404
+ header?: never;
5405
+ path: {
5406
+ workspaceId: components["parameters"]["WorkspaceId"];
5407
+ /** @description AI tool source type (`cursor` or `claude`). */
5408
+ type: "cursor" | "claude";
5409
+ };
5410
+ cookie?: never;
5411
+ };
5412
+ requestBody?: never;
5413
+ responses: {
5414
+ /** @description Insights credentials removed */
5415
+ 200: {
5416
+ headers: {
5417
+ [name: string]: unknown;
5418
+ };
5419
+ content: {
5420
+ /**
5421
+ * @example {
5422
+ * "ok": true
5423
+ * }
5424
+ */
5425
+ "application/json": {
5426
+ ok: boolean;
5427
+ };
5428
+ };
5429
+ };
5430
+ /** @description Invalid or unsupported source type */
5431
+ 400: {
5432
+ headers: {
5433
+ [name: string]: unknown;
5434
+ };
5435
+ content: {
5436
+ /**
5437
+ * @example {
5438
+ * "error": "Invalid or unsupported source type for insights disconnect",
5439
+ * "code": "invalid_source_type"
5440
+ * }
5441
+ */
5442
+ "application/json": components["schemas"]["ErrorMessageDto"];
5443
+ };
5444
+ };
5445
+ 401: components["responses"]["Unauthorized"];
5446
+ 403: components["responses"]["Forbidden"];
5447
+ /** @description Source missing or no insights credentials configured */
5448
+ 404: {
5449
+ headers: {
5450
+ [name: string]: unknown;
5451
+ };
5452
+ content: {
5453
+ "application/json": components["schemas"]["ErrorMessageDto"];
5454
+ };
5455
+ };
5456
+ };
5457
+ };
5333
5458
  getDashboardProductivity: {
5334
5459
  parameters: {
5335
5460
  query?: {
@@ -6102,6 +6227,58 @@ export interface operations {
6102
6227
  };
6103
6228
  };
6104
6229
  };
6230
+ getAiUsageSpendUsageTrends: {
6231
+ parameters: {
6232
+ query?: {
6233
+ /** @description Measure time range (maps to weekly bucket count). */
6234
+ rangeId?: "4w" | "8w" | "q";
6235
+ /** @description Department filter; send `All departments` to include every department. Scoped using imported `thinkai_org_structure` members when present, otherwise SPA org chart `department` nodes and their descendant teams. When neither source defines the requested department, insights return no scoped teams or contributors (not org-wide data). */
6236
+ department?: components["parameters"]["InsightsDepartmentFilter"];
6237
+ /** @description Team name filter; send `All teams` to include every team. */
6238
+ team?: string;
6239
+ /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
6240
+ windowEnd?: string;
6241
+ };
6242
+ header?: never;
6243
+ path: {
6244
+ workspaceId: components["parameters"]["WorkspaceId"];
6245
+ };
6246
+ cookie?: never;
6247
+ };
6248
+ requestBody?: never;
6249
+ responses: {
6250
+ /** @description Per-provider weekly spend and token trend series */
6251
+ 200: {
6252
+ headers: {
6253
+ [name: string]: unknown;
6254
+ };
6255
+ content: {
6256
+ "application/json": components["schemas"]["AiUsageSpendUsageTrendsDto"];
6257
+ };
6258
+ };
6259
+ /** @description Invalid query parameters */
6260
+ 400: {
6261
+ headers: {
6262
+ [name: string]: unknown;
6263
+ };
6264
+ content: {
6265
+ "application/json": {
6266
+ /** @example invalid_query */
6267
+ error: string;
6268
+ };
6269
+ };
6270
+ };
6271
+ 401: components["responses"]["Unauthorized"];
6272
+ 403: components["responses"]["Forbidden"];
6273
+ /** @description Workspace does not exist or malformed workspaceId */
6274
+ 404: {
6275
+ headers: {
6276
+ [name: string]: unknown;
6277
+ };
6278
+ content?: never;
6279
+ };
6280
+ };
6281
+ };
6105
6282
  getCompanyProfile: {
6106
6283
  parameters: {
6107
6284
  query?: never;