@thinkai/tai-api-contract 2.5.2 → 2.5.17
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.
- package/dist/generated/openapi.d.ts +1499 -27
- package/dist/generated/openapi.d.ts.map +1 -1
- package/dist/index.d.ts +317 -0
- package/dist/index.d.ts.map +1 -1
- package/openapi/openapi.yaml +2979 -1227
- package/package.json +1 -1
- package/src/generated/openapi.ts +1499 -27
- package/src/index.ts +353 -0
package/src/generated/openapi.ts
CHANGED
|
@@ -69,7 +69,10 @@ export interface paths {
|
|
|
69
69
|
path?: never;
|
|
70
70
|
cookie?: never;
|
|
71
71
|
};
|
|
72
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* List workspace team members
|
|
74
|
+
* @description Returns active workspace members (`tai_workspace_members` with `deleted_at` null). Any workspace member may list; invite and role changes require admin.
|
|
75
|
+
*/
|
|
73
76
|
get: operations["listTenantMembers"];
|
|
74
77
|
put?: never;
|
|
75
78
|
post?: never;
|
|
@@ -88,7 +91,10 @@ export interface paths {
|
|
|
88
91
|
};
|
|
89
92
|
get?: never;
|
|
90
93
|
put?: never;
|
|
91
|
-
/**
|
|
94
|
+
/**
|
|
95
|
+
* Invite member to workspace
|
|
96
|
+
* @description Workspace admin only. Upserts `tai_users` by email and adds or reactivates `tai_workspace_members`. Idempotent when the email is already an active member: returns **201** with the existing row and **does not change** their role if the request body role differs. Does not send email; optional `tai_workspace_invitations` row may be recorded (no accept/link flow yet).
|
|
97
|
+
*/
|
|
92
98
|
post: operations["inviteTenantMember"];
|
|
93
99
|
delete?: never;
|
|
94
100
|
options?: never;
|
|
@@ -106,11 +112,17 @@ export interface paths {
|
|
|
106
112
|
get?: never;
|
|
107
113
|
put?: never;
|
|
108
114
|
post?: never;
|
|
109
|
-
/**
|
|
115
|
+
/**
|
|
116
|
+
* Remove member from workspace
|
|
117
|
+
* @description Workspace admin only. Soft-deletes the membership (`deleted_at` set). Cannot remove the workspace owner or the last admin.
|
|
118
|
+
*/
|
|
110
119
|
delete: operations["removeTenantMember"];
|
|
111
120
|
options?: never;
|
|
112
121
|
head?: never;
|
|
113
|
-
/**
|
|
122
|
+
/**
|
|
123
|
+
* Update workspace member role
|
|
124
|
+
* @description Workspace admin only. `memberId` is `tai_users.id` (UUID), not the auth subject.
|
|
125
|
+
*/
|
|
114
126
|
patch: operations["updateTenantMemberRole"];
|
|
115
127
|
trace?: never;
|
|
116
128
|
};
|
|
@@ -228,6 +240,266 @@ export interface paths {
|
|
|
228
240
|
patch?: never;
|
|
229
241
|
trace?: never;
|
|
230
242
|
};
|
|
243
|
+
"/workspaces/{workspaceId}/insights/productivity-insights/aggregated-teams": {
|
|
244
|
+
parameters: {
|
|
245
|
+
query?: never;
|
|
246
|
+
header?: never;
|
|
247
|
+
path?: never;
|
|
248
|
+
cookie?: never;
|
|
249
|
+
};
|
|
250
|
+
/**
|
|
251
|
+
* Productivity insights — aggregated team weekly metrics
|
|
252
|
+
* @description Team-level rollup for Productivity insights (Aggregated Teams view on /phase-c/c4). Returns weekly merged PR counts and fail rates per engineering team, filtered by the same department, team, and range controls as the Measure UI.
|
|
253
|
+
*/
|
|
254
|
+
get: operations["getProductivityInsightsAggregatedTeams"];
|
|
255
|
+
put?: never;
|
|
256
|
+
post?: never;
|
|
257
|
+
delete?: never;
|
|
258
|
+
options?: never;
|
|
259
|
+
head?: never;
|
|
260
|
+
patch?: never;
|
|
261
|
+
trace?: never;
|
|
262
|
+
};
|
|
263
|
+
"/workspaces/{workspaceId}/insights/productivity-insights/merged-pr-trends": {
|
|
264
|
+
parameters: {
|
|
265
|
+
query?: never;
|
|
266
|
+
header?: never;
|
|
267
|
+
path?: never;
|
|
268
|
+
cookie?: never;
|
|
269
|
+
};
|
|
270
|
+
/**
|
|
271
|
+
* Productivity insights — merged PR trends (portfolio + contributors)
|
|
272
|
+
* @description Weekly merged PR counts for the Measure "Merged PR Trends" widget on /phase-c/c4 Individual Contributors. Returns a portfolio aggregate series plus per-contributor weekly counts, filtered by the same department, team, and range controls as the Measure UI.
|
|
273
|
+
*/
|
|
274
|
+
get: operations["getProductivityInsightsMergedPrTrends"];
|
|
275
|
+
put?: never;
|
|
276
|
+
post?: never;
|
|
277
|
+
delete?: never;
|
|
278
|
+
options?: never;
|
|
279
|
+
head?: never;
|
|
280
|
+
patch?: never;
|
|
281
|
+
trace?: never;
|
|
282
|
+
};
|
|
283
|
+
"/workspaces/{workspaceId}/insights/productivity-insights/teams": {
|
|
284
|
+
parameters: {
|
|
285
|
+
query?: never;
|
|
286
|
+
header?: never;
|
|
287
|
+
path?: never;
|
|
288
|
+
cookie?: never;
|
|
289
|
+
};
|
|
290
|
+
/**
|
|
291
|
+
* Productivity insights — top teams and team drilldown
|
|
292
|
+
* @description Without `teamId`: returns the top-ranked teams by average weekly merged PR count for the Measure **Top teams** widget on /phase-c/c4 and /phase-c/c7. With `teamId`: returns weekly rollup and summary for a single team (powers `/phase-c/c4/teams/:teamId` drilldown).
|
|
293
|
+
*/
|
|
294
|
+
get: operations["getProductivityInsightsTeams"];
|
|
295
|
+
put?: never;
|
|
296
|
+
post?: never;
|
|
297
|
+
delete?: never;
|
|
298
|
+
options?: never;
|
|
299
|
+
head?: never;
|
|
300
|
+
patch?: never;
|
|
301
|
+
trace?: never;
|
|
302
|
+
};
|
|
303
|
+
"/workspaces/{workspaceId}/insights/productivity-insights/contributors/{contributorId}": {
|
|
304
|
+
parameters: {
|
|
305
|
+
query?: never;
|
|
306
|
+
header?: never;
|
|
307
|
+
path?: never;
|
|
308
|
+
cookie?: never;
|
|
309
|
+
};
|
|
310
|
+
/**
|
|
311
|
+
* Productivity insights — contributor drilldown
|
|
312
|
+
* @description Weekly and daily activity rollups for a single contributor on `/phase-c/c4/contributors/:id`. Distributes weekly merged PR counts from precomputed person metrics across weekdays; includes fail-rate signals and period-over-period summary deltas. Uses org-chart person ids (typically email).
|
|
313
|
+
*/
|
|
314
|
+
get: operations["getProductivityInsightsContributor"];
|
|
315
|
+
put?: never;
|
|
316
|
+
post?: never;
|
|
317
|
+
delete?: never;
|
|
318
|
+
options?: never;
|
|
319
|
+
head?: never;
|
|
320
|
+
patch?: never;
|
|
321
|
+
trace?: never;
|
|
322
|
+
};
|
|
323
|
+
"/workspaces/{workspaceId}/insights/productivity-insights/needs-attention": {
|
|
324
|
+
parameters: {
|
|
325
|
+
query?: never;
|
|
326
|
+
header?: never;
|
|
327
|
+
path?: never;
|
|
328
|
+
cookie?: never;
|
|
329
|
+
};
|
|
330
|
+
/**
|
|
331
|
+
* Productivity insights — needs attention (bottom performers)
|
|
332
|
+
* @description Bottom performers for the Measure "Needs attention" widget on /phase-c/c4 (LeadersLaggards laggards column). Returns the lowest-ranked teams or contributors by average weekly merged PR count for the selected filters and range.
|
|
333
|
+
*/
|
|
334
|
+
get: operations["getProductivityInsightsNeedsAttention"];
|
|
335
|
+
put?: never;
|
|
336
|
+
post?: never;
|
|
337
|
+
delete?: never;
|
|
338
|
+
options?: never;
|
|
339
|
+
head?: never;
|
|
340
|
+
patch?: never;
|
|
341
|
+
trace?: never;
|
|
342
|
+
};
|
|
343
|
+
"/workspaces/{workspaceId}/insights/ai-usage-spend/aggregated-teams": {
|
|
344
|
+
parameters: {
|
|
345
|
+
query?: never;
|
|
346
|
+
header?: never;
|
|
347
|
+
path?: never;
|
|
348
|
+
cookie?: never;
|
|
349
|
+
};
|
|
350
|
+
/**
|
|
351
|
+
* AI usage & spend insights — aggregated team weekly rollups
|
|
352
|
+
* @description Team-level AI adoption, token volume, and spend for the Measure **Aggregated Teams** view on `/phase-c/c7` and the dashboard AI Usage & Spend card. Aggregates stored AI-tool integration snapshots (daily usage + billing spend) by org-chart team using member email. Same filter params as other Measure insights routes.
|
|
353
|
+
*/
|
|
354
|
+
get: operations["getAiUsageSpendAggregatedTeams"];
|
|
355
|
+
put?: never;
|
|
356
|
+
post?: never;
|
|
357
|
+
delete?: never;
|
|
358
|
+
options?: never;
|
|
359
|
+
head?: never;
|
|
360
|
+
patch?: never;
|
|
361
|
+
trace?: never;
|
|
362
|
+
};
|
|
363
|
+
"/workspaces/{workspaceId}/insights/ai-usage-spend/aggregated-contributors": {
|
|
364
|
+
parameters: {
|
|
365
|
+
query?: never;
|
|
366
|
+
header?: never;
|
|
367
|
+
path?: never;
|
|
368
|
+
cookie?: never;
|
|
369
|
+
};
|
|
370
|
+
/**
|
|
371
|
+
* AI usage & spend insights — aggregated contributor weekly rollups
|
|
372
|
+
* @description Per-contributor AI adoption, token volume, and spend for the Measure **Individual Contributors** view on `/phase-c/c7`. Aggregates stored AI-tool integration snapshots (daily usage + billing spend) by org-chart person id (typically email). Same filter params as other Measure insights routes.
|
|
373
|
+
*/
|
|
374
|
+
get: operations["getAiUsageSpendAggregatedContributors"];
|
|
375
|
+
put?: never;
|
|
376
|
+
post?: never;
|
|
377
|
+
delete?: never;
|
|
378
|
+
options?: never;
|
|
379
|
+
head?: never;
|
|
380
|
+
patch?: never;
|
|
381
|
+
trace?: never;
|
|
382
|
+
};
|
|
383
|
+
"/workspaces/{workspaceId}/insights/ai-usage-spend/contributor-tool-heatmap": {
|
|
384
|
+
parameters: {
|
|
385
|
+
query?: never;
|
|
386
|
+
header?: never;
|
|
387
|
+
path?: never;
|
|
388
|
+
cookie?: never;
|
|
389
|
+
};
|
|
390
|
+
/**
|
|
391
|
+
* AI usage & spend insights — contributor × week heatmap rows
|
|
392
|
+
* @description Contributor × week heatmap rows for the Measure **Individual Contributors** tool heatmap on `/phase-c/c7`. Same aggregation as aggregated-contributors; returns weekly token, spend, and active-user counts per org-chart person.
|
|
393
|
+
*/
|
|
394
|
+
get: operations["getAiUsageSpendContributorToolHeatmap"];
|
|
395
|
+
put?: never;
|
|
396
|
+
post?: never;
|
|
397
|
+
delete?: never;
|
|
398
|
+
options?: never;
|
|
399
|
+
head?: never;
|
|
400
|
+
patch?: never;
|
|
401
|
+
trace?: never;
|
|
402
|
+
};
|
|
403
|
+
"/workspaces/{workspaceId}/insights/ai-usage-spend/key-insights": {
|
|
404
|
+
parameters: {
|
|
405
|
+
query?: never;
|
|
406
|
+
header?: never;
|
|
407
|
+
path?: never;
|
|
408
|
+
cookie?: never;
|
|
409
|
+
};
|
|
410
|
+
/**
|
|
411
|
+
* AI usage & spend insights — key insights panel
|
|
412
|
+
* @description Narrative insight cards for the Measure **Key insights** panel on `/phase-c/c7` (AI Usage & Spend). Derived from scoped AI-tool usage/spend snapshots and productivity metrics for the selected filters and range.
|
|
413
|
+
*/
|
|
414
|
+
get: operations["getAiUsageSpendKeyInsights"];
|
|
415
|
+
put?: never;
|
|
416
|
+
post?: never;
|
|
417
|
+
delete?: never;
|
|
418
|
+
options?: never;
|
|
419
|
+
head?: never;
|
|
420
|
+
patch?: never;
|
|
421
|
+
trace?: never;
|
|
422
|
+
};
|
|
423
|
+
"/workspaces/{workspaceId}/insights/ai-usage-spend/ai-assisted-code-percentage": {
|
|
424
|
+
parameters: {
|
|
425
|
+
query?: never;
|
|
426
|
+
header?: never;
|
|
427
|
+
path?: never;
|
|
428
|
+
cookie?: never;
|
|
429
|
+
};
|
|
430
|
+
/**
|
|
431
|
+
* AI usage & spend insights — AI-assisted code percentage
|
|
432
|
+
* @description Period and weekly AI-assisted code percentage for the Measure **AI-assisted code** card on `/phase-c/c7` and the **AI impact** curve on `/phase-c/c4`. When scoped productivity metrics include `aiAssistedContributionRatioPercent`, values are **measured** from ingest; otherwise the API falls back to token→LOC heuristics and sets `dataQuality` to **estimated**. Clients should not present estimated series as Cursor-measured signal.
|
|
433
|
+
*/
|
|
434
|
+
get: operations["getAiUsageSpendAiAssistedCodePercentage"];
|
|
435
|
+
put?: never;
|
|
436
|
+
post?: never;
|
|
437
|
+
delete?: never;
|
|
438
|
+
options?: never;
|
|
439
|
+
head?: never;
|
|
440
|
+
patch?: never;
|
|
441
|
+
trace?: never;
|
|
442
|
+
};
|
|
443
|
+
"/workspaces/{workspaceId}/insights/ai-usage-spend/ai-tool-usage-spend": {
|
|
444
|
+
parameters: {
|
|
445
|
+
query?: never;
|
|
446
|
+
header?: never;
|
|
447
|
+
path?: never;
|
|
448
|
+
cookie?: never;
|
|
449
|
+
};
|
|
450
|
+
/**
|
|
451
|
+
* AI usage & spend insights — AI tool usage and spend by provider/model
|
|
452
|
+
* @description Scoped portfolio rollups of AI-tool token usage and spend by registered provider and by model (from daily usage `mostUsedModel`) for the **Provider / Model usage + spend** chart on `/phase-c/c4` and `/phase-c/c7`. Reads stored AI-tool integration snapshots (`tai_workspace_ai_tool_daily_usage`, `tai_workspace_ai_tool_spend`).
|
|
453
|
+
*/
|
|
454
|
+
get: operations["getAiUsageSpendAiToolUsageSpend"];
|
|
455
|
+
put?: never;
|
|
456
|
+
post?: never;
|
|
457
|
+
delete?: never;
|
|
458
|
+
options?: never;
|
|
459
|
+
head?: never;
|
|
460
|
+
patch?: never;
|
|
461
|
+
trace?: never;
|
|
462
|
+
};
|
|
463
|
+
"/workspaces/{workspaceId}/insights/ai-usage-spend/team-tool-heatmap": {
|
|
464
|
+
parameters: {
|
|
465
|
+
query?: never;
|
|
466
|
+
header?: never;
|
|
467
|
+
path?: never;
|
|
468
|
+
cookie?: never;
|
|
469
|
+
};
|
|
470
|
+
/**
|
|
471
|
+
* AI usage & spend insights — team weekly heatmap
|
|
472
|
+
* @description Team × week rollups of AI-tool token volume, spend, and active users for the **Team tool heatmap** on `/phase-c/c4` and `/phase-c/c7`. Aggregates stored AI-tool integration snapshots by org-chart team. Same filter params as other Measure insights routes.
|
|
473
|
+
*/
|
|
474
|
+
get: operations["getAiUsageSpendTeamToolHeatmap"];
|
|
475
|
+
put?: never;
|
|
476
|
+
post?: never;
|
|
477
|
+
delete?: never;
|
|
478
|
+
options?: never;
|
|
479
|
+
head?: never;
|
|
480
|
+
patch?: never;
|
|
481
|
+
trace?: never;
|
|
482
|
+
};
|
|
483
|
+
"/workspaces/{workspaceId}/insights/ai-usage-spend/roi-productivity-signal": {
|
|
484
|
+
parameters: {
|
|
485
|
+
query?: never;
|
|
486
|
+
header?: never;
|
|
487
|
+
path?: never;
|
|
488
|
+
cookie?: never;
|
|
489
|
+
};
|
|
490
|
+
/**
|
|
491
|
+
* AI usage & spend insights — ROI and productivity signal
|
|
492
|
+
* @description Connects scoped AI-tool usage and spend to engineering throughput (merged PRs) for the **ROI & Productivity Signal** panel on `/phase-c/c4` and `/phase-c/c7`. Returns spend efficiency metrics, adoption counts, and weekly usage vs PR series. Same filter params as other Measure insights routes.
|
|
493
|
+
*/
|
|
494
|
+
get: operations["getAiUsageSpendRoiProductivitySignal"];
|
|
495
|
+
put?: never;
|
|
496
|
+
post?: never;
|
|
497
|
+
delete?: never;
|
|
498
|
+
options?: never;
|
|
499
|
+
head?: never;
|
|
500
|
+
patch?: never;
|
|
501
|
+
trace?: never;
|
|
502
|
+
};
|
|
231
503
|
"/workspaces/{workspaceId}/company-profile": {
|
|
232
504
|
parameters: {
|
|
233
505
|
query?: never;
|
|
@@ -1054,7 +1326,7 @@ export interface paths {
|
|
|
1054
1326
|
put?: never;
|
|
1055
1327
|
/**
|
|
1056
1328
|
* Import org chart from Supabase storage path
|
|
1057
|
-
* @description Parse-only. Downloads the CSV at `storagePath` from the `org-charts` bucket and returns `persons` and `errors`. Does not persist to `spa_org_chart` or `org_chart`. The SPA derives teams client-side and saves the org structure via `POST /workspaces/{workspaceId}/org-chart`.
|
|
1329
|
+
* @description Parse-only. Downloads the CSV at `storagePath` from the `org-charts` bucket and returns `persons` and `errors`. Does not persist to `spa_org_chart` or `org_chart`. The SPA derives teams client-side and saves the org structure via `POST /workspaces/{workspaceId}/org-chart`. Required columns: employee_id, name, email, title, department, team, manager_id, location. Optional: github_username (GitHub login for productivity ingest). Saving the SPA snapshot also materializes a scoring `org_chart` tree for team/person metrics when import members are present.
|
|
1058
1330
|
*/
|
|
1059
1331
|
post: operations["postOrgChartImport"];
|
|
1060
1332
|
delete?: never;
|
|
@@ -1069,8 +1341,11 @@ export interface components {
|
|
|
1069
1341
|
schemas: {
|
|
1070
1342
|
ErrorMessageDto: {
|
|
1071
1343
|
error: string;
|
|
1344
|
+
/** @description Machine-readable error code when present (for example `last_admin`). */
|
|
1345
|
+
code?: string;
|
|
1072
1346
|
};
|
|
1073
1347
|
TeamMemberDto: {
|
|
1348
|
+
/** Format: uuid */
|
|
1074
1349
|
id: string;
|
|
1075
1350
|
name: string;
|
|
1076
1351
|
email: string;
|
|
@@ -1119,14 +1394,22 @@ export interface components {
|
|
|
1119
1394
|
root: components["schemas"]["OrgChartNodeDto"];
|
|
1120
1395
|
};
|
|
1121
1396
|
OrgChartPersonDto: {
|
|
1397
|
+
/** @description Stable HR identifier; referenced by manager_id for reporting lines. */
|
|
1122
1398
|
employeeId: string;
|
|
1123
1399
|
name: string;
|
|
1400
|
+
/** @description Work email; used as canonical person_id in productivity ingest when present. */
|
|
1124
1401
|
email: string;
|
|
1402
|
+
/** @description Job title; used for contributor rows and leadership (enabler) hints. */
|
|
1125
1403
|
title: string;
|
|
1404
|
+
/** @description Department filter on Productivity insights. */
|
|
1126
1405
|
department: string;
|
|
1406
|
+
/** @description Engineering team name for Aggregated Teams and team drill-downs. */
|
|
1127
1407
|
team: string;
|
|
1408
|
+
/** @description employee_id of the person's manager; leave empty for top-level leaders. */
|
|
1128
1409
|
managerId: string;
|
|
1129
1410
|
location: string;
|
|
1411
|
+
/** @description GitHub login (no @) to map merged PRs and reviews to this person in productivity ingest. */
|
|
1412
|
+
githubUsername?: string;
|
|
1130
1413
|
};
|
|
1131
1414
|
OrgChartImportResultDto: {
|
|
1132
1415
|
persons: components["schemas"]["OrgChartPersonDto"][];
|
|
@@ -1250,26 +1533,404 @@ export interface components {
|
|
|
1250
1533
|
metrics: components["schemas"]["DashboardProductivityMetricsDto"];
|
|
1251
1534
|
}[];
|
|
1252
1535
|
};
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
name
|
|
1257
|
-
|
|
1258
|
-
defaultWorkspaceId?: string | null;
|
|
1536
|
+
ProductivityInsightsAggregatedTeamsScopeDto: {
|
|
1537
|
+
/** @description Applied department filter from the Measure UI. Backend scopes via CSV import (`thinkai_org_structure`) or SPA `department` nodes; unknown departments yield empty scoped results rather than org-wide rollups. */
|
|
1538
|
+
department: string;
|
|
1539
|
+
/** @description Applied team name filter from the Measure UI. */
|
|
1540
|
+
team: string;
|
|
1259
1541
|
};
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1542
|
+
ProductivityInsightsAggregatedTeamWeekDto: {
|
|
1543
|
+
/** Format: date-time */
|
|
1544
|
+
bucketStart: string;
|
|
1545
|
+
/** Format: date-time */
|
|
1546
|
+
bucketEnd: string;
|
|
1547
|
+
/** @description Short label for the week column (MM/DD), aligned with Measure charts. */
|
|
1548
|
+
weekLabel?: string;
|
|
1549
|
+
mergedPrCount: number;
|
|
1550
|
+
failRatePercent: number;
|
|
1551
|
+
};
|
|
1552
|
+
ProductivityInsightsAggregatedTeamRowDto: {
|
|
1553
|
+
teamId: string;
|
|
1554
|
+
teamName: string;
|
|
1555
|
+
headcount: number;
|
|
1556
|
+
managerLabel?: string;
|
|
1557
|
+
weeks: components["schemas"]["ProductivityInsightsAggregatedTeamWeekDto"][];
|
|
1558
|
+
};
|
|
1559
|
+
ProductivityInsightsAggregatedTeamsDto: {
|
|
1560
|
+
/** Format: uuid */
|
|
1561
|
+
workspaceId: string;
|
|
1562
|
+
/** @enum {string} */
|
|
1563
|
+
range: "4w" | "8w" | "q";
|
|
1564
|
+
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
1565
|
+
/** Format: date-time */
|
|
1566
|
+
generatedAt: string;
|
|
1567
|
+
teams: components["schemas"]["ProductivityInsightsAggregatedTeamRowDto"][];
|
|
1264
1568
|
};
|
|
1265
|
-
|
|
1569
|
+
ProductivityInsightsMergedPrTrendWeekDto: {
|
|
1570
|
+
/** Format: date-time */
|
|
1571
|
+
bucketStart: string;
|
|
1572
|
+
/** Format: date-time */
|
|
1573
|
+
bucketEnd: string;
|
|
1574
|
+
/** @description Short label for the week column (MM/DD), aligned with Measure charts. */
|
|
1575
|
+
weekLabel?: string;
|
|
1576
|
+
mergedPrCount: number;
|
|
1577
|
+
};
|
|
1578
|
+
ProductivityInsightsMergedPrContributorRowDto: {
|
|
1579
|
+
/** @description Canonical person identifier (matches org chart person_id / employeeId). */
|
|
1580
|
+
personId: string;
|
|
1581
|
+
personName: string;
|
|
1582
|
+
teamName?: string;
|
|
1583
|
+
weeks: components["schemas"]["ProductivityInsightsMergedPrTrendWeekDto"][];
|
|
1584
|
+
};
|
|
1585
|
+
ProductivityInsightsMergedPrTrendsDto: {
|
|
1586
|
+
/** Format: uuid */
|
|
1587
|
+
workspaceId: string;
|
|
1588
|
+
/** @enum {string} */
|
|
1589
|
+
range: "4w" | "8w" | "q";
|
|
1590
|
+
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
1591
|
+
/** Format: date-time */
|
|
1592
|
+
generatedAt: string;
|
|
1593
|
+
/** @description Portfolio aggregate merged PR counts (sum of filtered contributors per week). */
|
|
1594
|
+
weeks: components["schemas"]["ProductivityInsightsMergedPrTrendWeekDto"][];
|
|
1595
|
+
contributors: components["schemas"]["ProductivityInsightsMergedPrContributorRowDto"][];
|
|
1596
|
+
};
|
|
1597
|
+
ProductivityInsightsTeamLeaderItemDto: {
|
|
1598
|
+
/** @description 1-based rank within the top-teams list (1 = highest performer). */
|
|
1599
|
+
rank: number;
|
|
1600
|
+
teamId: string;
|
|
1601
|
+
teamName: string;
|
|
1602
|
+
/** @description Optional context line (e.g. headcount or manager). */
|
|
1603
|
+
subtitle?: string;
|
|
1604
|
+
/** @description Average weekly merged PR count over the selected range. */
|
|
1605
|
+
periodAvgMergedPrs: number;
|
|
1606
|
+
/** @description Percent change of the latest week vs the period average. */
|
|
1607
|
+
deltaVsPeriodAvgPercent: number;
|
|
1608
|
+
/** @description Average change failure rate over the range when available. */
|
|
1609
|
+
avgFailRatePercent?: number;
|
|
1610
|
+
};
|
|
1611
|
+
ProductivityInsightsTeamSummaryDto: {
|
|
1612
|
+
totalMergedPrs: number;
|
|
1613
|
+
avgMergedPrsPerWeek: number;
|
|
1614
|
+
avgFailRatePercent: number;
|
|
1615
|
+
headcount: number;
|
|
1616
|
+
};
|
|
1617
|
+
ProductivityInsightsTeamDetailDto: {
|
|
1618
|
+
teamId: string;
|
|
1619
|
+
teamName: string;
|
|
1620
|
+
headcount: number;
|
|
1621
|
+
managerLabel?: string;
|
|
1622
|
+
weeks: components["schemas"]["ProductivityInsightsAggregatedTeamWeekDto"][];
|
|
1623
|
+
summary: components["schemas"]["ProductivityInsightsTeamSummaryDto"];
|
|
1624
|
+
};
|
|
1625
|
+
ProductivityInsightsTeamsResponseDto: {
|
|
1626
|
+
/** Format: uuid */
|
|
1627
|
+
workspaceId: string;
|
|
1628
|
+
/** @enum {string} */
|
|
1629
|
+
range: "4w" | "8w" | "q";
|
|
1630
|
+
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
1631
|
+
/** Format: date-time */
|
|
1632
|
+
generatedAt: string;
|
|
1633
|
+
/** @description Present when `teamId` query is omitted — top-ranked teams. */
|
|
1634
|
+
items?: components["schemas"]["ProductivityInsightsTeamLeaderItemDto"][];
|
|
1635
|
+
/** @description Present when `teamId` query is set — single-team drilldown. */
|
|
1636
|
+
team?: components["schemas"]["ProductivityInsightsTeamDetailDto"];
|
|
1637
|
+
};
|
|
1638
|
+
ProductivityInsightsContributorProfileDto: {
|
|
1639
|
+
/** @description Org-chart person id (typically email). */
|
|
1266
1640
|
id: string;
|
|
1267
|
-
slug: string;
|
|
1268
1641
|
name: string;
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1642
|
+
title?: string;
|
|
1643
|
+
team?: string;
|
|
1644
|
+
department?: string;
|
|
1645
|
+
};
|
|
1646
|
+
ProductivityInsightsContributorActivityDayDto: {
|
|
1647
|
+
/** Format: date */
|
|
1648
|
+
date: string;
|
|
1649
|
+
dayIndex: number;
|
|
1650
|
+
mergedPrCount: number;
|
|
1651
|
+
mergedPrs: string[];
|
|
1652
|
+
absent: boolean;
|
|
1653
|
+
absenceType?: string;
|
|
1654
|
+
failureSignal: boolean;
|
|
1655
|
+
failures: string[];
|
|
1656
|
+
};
|
|
1657
|
+
ProductivityInsightsContributorActivityWeekDto: {
|
|
1658
|
+
label: string;
|
|
1659
|
+
/** Format: date-time */
|
|
1660
|
+
bucketStart: string;
|
|
1661
|
+
/** Format: date-time */
|
|
1662
|
+
bucketEnd: string;
|
|
1663
|
+
days: components["schemas"]["ProductivityInsightsContributorActivityDayDto"][];
|
|
1664
|
+
};
|
|
1665
|
+
ProductivityInsightsContributorActivitySummaryDto: {
|
|
1666
|
+
totalMergedPrs: number;
|
|
1667
|
+
avgMergedPrsPerWeek: number;
|
|
1668
|
+
totalAbsenceDays: number;
|
|
1669
|
+
avgFailRate: number;
|
|
1670
|
+
mergedPrDelta: number;
|
|
1671
|
+
avgMergedPrsPerWeekDelta: number;
|
|
1672
|
+
totalAbsenceDaysDelta: number;
|
|
1673
|
+
avgFailRateDelta: number;
|
|
1674
|
+
};
|
|
1675
|
+
ProductivityInsightsContributorDetailDto: {
|
|
1676
|
+
/** Format: uuid */
|
|
1677
|
+
workspaceId: string;
|
|
1678
|
+
contributorId: string;
|
|
1679
|
+
/** @enum {string} */
|
|
1680
|
+
range: "4w" | "8w" | "q";
|
|
1681
|
+
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
1682
|
+
/** Format: date-time */
|
|
1683
|
+
generatedAt: string;
|
|
1684
|
+
contributor: components["schemas"]["ProductivityInsightsContributorProfileDto"];
|
|
1685
|
+
weeks: components["schemas"]["ProductivityInsightsContributorActivityWeekDto"][];
|
|
1686
|
+
summary: components["schemas"]["ProductivityInsightsContributorActivitySummaryDto"];
|
|
1687
|
+
};
|
|
1688
|
+
ProductivityInsightsNeedsAttentionItemDto: {
|
|
1689
|
+
/** @description 1-based rank within the laggards list (1 = lowest performer). */
|
|
1690
|
+
rank: number;
|
|
1691
|
+
/** @description Org chart team id or canonical person id. */
|
|
1692
|
+
entityId: string;
|
|
1693
|
+
/** @enum {string} */
|
|
1694
|
+
entityType: "team" | "contributor";
|
|
1695
|
+
name: string;
|
|
1696
|
+
/** @description Optional context line (e.g. headcount or job title). */
|
|
1697
|
+
subtitle?: string;
|
|
1698
|
+
/** @description Mean weekly merged PR count across the selected range. */
|
|
1699
|
+
periodAvgMergedPrs: number;
|
|
1700
|
+
/** @description Percent change of the latest week vs the period mean. */
|
|
1701
|
+
deltaVsPeriodAvgPercent: number;
|
|
1702
|
+
/** @description Mean weekly change-failure rate when available. */
|
|
1703
|
+
avgFailRatePercent?: number;
|
|
1704
|
+
};
|
|
1705
|
+
ProductivityInsightsNeedsAttentionDto: {
|
|
1706
|
+
/** Format: uuid */
|
|
1707
|
+
workspaceId: string;
|
|
1708
|
+
/** @enum {string} */
|
|
1709
|
+
range: "4w" | "8w" | "q";
|
|
1710
|
+
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
1711
|
+
/** @enum {string} */
|
|
1712
|
+
entityType: "teams" | "contributors";
|
|
1713
|
+
/** Format: date-time */
|
|
1714
|
+
generatedAt: string;
|
|
1715
|
+
items: components["schemas"]["ProductivityInsightsNeedsAttentionItemDto"][];
|
|
1716
|
+
};
|
|
1717
|
+
AiUsageSpendAggregatedTeamWeekDto: {
|
|
1718
|
+
/** Format: date-time */
|
|
1719
|
+
bucketStart: string;
|
|
1720
|
+
/** Format: date-time */
|
|
1721
|
+
bucketEnd: string;
|
|
1722
|
+
/** @description Short label for table headers (e.g. MM/DD). */
|
|
1723
|
+
weekLabel?: string;
|
|
1724
|
+
/** @description Total tokens consumed in the bucket (from AI-tool daily usage payloads when available). */
|
|
1725
|
+
tokenCount: number;
|
|
1726
|
+
/** @description Estimated spend in USD cents attributed to the bucket. */
|
|
1727
|
+
spendCents: number;
|
|
1728
|
+
/** @description Distinct engineers with active AI-tool usage in the bucket. */
|
|
1729
|
+
activeUsers: number;
|
|
1730
|
+
};
|
|
1731
|
+
AiUsageSpendAggregatedTeamRowDto: {
|
|
1732
|
+
teamId: string;
|
|
1733
|
+
teamName: string;
|
|
1734
|
+
headcount: number;
|
|
1735
|
+
managerLabel?: string;
|
|
1736
|
+
weeks: components["schemas"]["AiUsageSpendAggregatedTeamWeekDto"][];
|
|
1737
|
+
};
|
|
1738
|
+
AiUsageSpendAggregatedTeamsSummaryDto: {
|
|
1739
|
+
totalTokenCount: number;
|
|
1740
|
+
totalSpendCents: number;
|
|
1741
|
+
/** @description Distinct engineers with any active usage in the selected range. */
|
|
1742
|
+
activeUsers: number;
|
|
1743
|
+
/** @description Count of connected AI-tool providers with usage or spend in range. */
|
|
1744
|
+
activeTools: number;
|
|
1745
|
+
/** @description Sum of org-chart headcount across returned teams. */
|
|
1746
|
+
totalEngineers: number;
|
|
1747
|
+
};
|
|
1748
|
+
AiUsageSpendAggregatedTeamsDto: {
|
|
1749
|
+
/** Format: uuid */
|
|
1750
|
+
workspaceId: string;
|
|
1751
|
+
/** @enum {string} */
|
|
1752
|
+
range: "4w" | "8w" | "q";
|
|
1753
|
+
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
1754
|
+
/** Format: date-time */
|
|
1755
|
+
generatedAt: string;
|
|
1756
|
+
teams: components["schemas"]["AiUsageSpendAggregatedTeamRowDto"][];
|
|
1757
|
+
summary: components["schemas"]["AiUsageSpendAggregatedTeamsSummaryDto"];
|
|
1758
|
+
};
|
|
1759
|
+
AiUsageSpendAggregatedContributorRowDto: {
|
|
1760
|
+
/** @description Org-chart person id (typically email). */
|
|
1761
|
+
contributorId: string;
|
|
1762
|
+
contributorName: string;
|
|
1763
|
+
title?: string;
|
|
1764
|
+
team?: string;
|
|
1765
|
+
department?: string;
|
|
1766
|
+
weeks: components["schemas"]["AiUsageSpendAggregatedTeamWeekDto"][];
|
|
1767
|
+
};
|
|
1768
|
+
AiUsageSpendAggregatedContributorsDto: {
|
|
1769
|
+
/** Format: uuid */
|
|
1770
|
+
workspaceId: string;
|
|
1771
|
+
/** @enum {string} */
|
|
1772
|
+
range: "4w" | "8w" | "q";
|
|
1773
|
+
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
1774
|
+
/** Format: date-time */
|
|
1775
|
+
generatedAt: string;
|
|
1776
|
+
contributors: components["schemas"]["AiUsageSpendAggregatedContributorRowDto"][];
|
|
1777
|
+
summary: components["schemas"]["AiUsageSpendAggregatedTeamsSummaryDto"];
|
|
1778
|
+
};
|
|
1779
|
+
AiUsageSpendContributorToolHeatmapDto: {
|
|
1780
|
+
/** Format: uuid */
|
|
1781
|
+
workspaceId: string;
|
|
1782
|
+
/** @enum {string} */
|
|
1783
|
+
range: "4w" | "8w" | "q";
|
|
1784
|
+
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
1785
|
+
/** Format: date-time */
|
|
1786
|
+
generatedAt: string;
|
|
1787
|
+
contributors: components["schemas"]["AiUsageSpendAggregatedContributorRowDto"][];
|
|
1788
|
+
};
|
|
1789
|
+
AiUsageSpendKeyInsightItemDto: {
|
|
1790
|
+
/** @description Stable insight key (e.g. spend-leader, spend-vs-output). */
|
|
1791
|
+
id: string;
|
|
1792
|
+
/** @enum {string} */
|
|
1793
|
+
tone: "positive" | "warning" | "neutral";
|
|
1794
|
+
/** @description Human-readable insight sentence for the UI panel. */
|
|
1795
|
+
text: string;
|
|
1796
|
+
};
|
|
1797
|
+
AiUsageSpendKeyInsightsDto: {
|
|
1798
|
+
/** Format: uuid */
|
|
1799
|
+
workspaceId: string;
|
|
1800
|
+
/** @enum {string} */
|
|
1801
|
+
range: "4w" | "8w" | "q";
|
|
1802
|
+
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
1803
|
+
/** Format: date-time */
|
|
1804
|
+
generatedAt: string;
|
|
1805
|
+
items: components["schemas"]["AiUsageSpendKeyInsightItemDto"][];
|
|
1806
|
+
};
|
|
1807
|
+
/**
|
|
1808
|
+
* @description **measured** — derived from scoped productivity ingest (`aiAdoption.aiAssistedContributionRatioPercent`). **estimated** — derived from AI-tool token volume heuristics when ingest ratios are absent for that bucket.
|
|
1809
|
+
* @enum {string}
|
|
1810
|
+
*/
|
|
1811
|
+
AiAssistedCodeDataQuality: "estimated" | "measured";
|
|
1812
|
+
AiUsageSpendAiAssistedCodeWeekDto: {
|
|
1813
|
+
/** Format: date-time */
|
|
1814
|
+
bucketStart: string;
|
|
1815
|
+
/** Format: date-time */
|
|
1816
|
+
bucketEnd: string;
|
|
1817
|
+
weekLabel?: string;
|
|
1818
|
+
aiAssistedCodePercent: number;
|
|
1819
|
+
totalLoc: number;
|
|
1820
|
+
aiLoc: number;
|
|
1821
|
+
humanLoc: number;
|
|
1822
|
+
dataQuality: components["schemas"]["AiAssistedCodeDataQuality"];
|
|
1823
|
+
};
|
|
1824
|
+
AiUsageSpendAiAssistedCodePercentageDto: {
|
|
1825
|
+
/** Format: uuid */
|
|
1826
|
+
workspaceId: string;
|
|
1827
|
+
/** @enum {string} */
|
|
1828
|
+
range: "4w" | "8w" | "q";
|
|
1829
|
+
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
1830
|
+
/** Format: date-time */
|
|
1831
|
+
generatedAt: string;
|
|
1832
|
+
/** @description Portfolio AI-assisted code share for the selected period (0–100). */
|
|
1833
|
+
aiAssistedCodePercent: number;
|
|
1834
|
+
/** @description Period rollup quality. **measured** only when every weekly bucket in `weeks` used ingest ratios; otherwise **estimated** (including mixed ingest/heuristic weeks). */
|
|
1835
|
+
dataQuality: components["schemas"]["AiAssistedCodeDataQuality"];
|
|
1836
|
+
/** @description Change in AI-assisted code share vs the prior half of the range (percentage points). */
|
|
1837
|
+
deltaVsPriorPeriodPercent: number;
|
|
1838
|
+
totalLoc: number;
|
|
1839
|
+
aiLoc: number;
|
|
1840
|
+
humanLoc: number;
|
|
1841
|
+
/** @default 50 */
|
|
1842
|
+
targetMinPercent: number;
|
|
1843
|
+
/** @default 75 */
|
|
1844
|
+
targetMaxPercent: number;
|
|
1845
|
+
weeks: components["schemas"]["AiUsageSpendAiAssistedCodeWeekDto"][];
|
|
1846
|
+
};
|
|
1847
|
+
AiUsageSpendAiToolUsageSpendProviderItemDto: {
|
|
1848
|
+
providerId: string;
|
|
1849
|
+
providerName: string;
|
|
1850
|
+
tokenCount: number;
|
|
1851
|
+
spendCents: number;
|
|
1852
|
+
activeUsers: number;
|
|
1853
|
+
};
|
|
1854
|
+
AiUsageSpendAiToolUsageSpendModelItemDto: {
|
|
1855
|
+
providerId: string;
|
|
1856
|
+
providerName: string;
|
|
1857
|
+
modelName: string;
|
|
1858
|
+
tokenCount: number;
|
|
1859
|
+
spendCents: number;
|
|
1860
|
+
};
|
|
1861
|
+
AiUsageSpendAiToolUsageSpendDto: {
|
|
1862
|
+
/** Format: uuid */
|
|
1863
|
+
workspaceId: string;
|
|
1864
|
+
/** @enum {string} */
|
|
1865
|
+
range: "4w" | "8w" | "q";
|
|
1866
|
+
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
1867
|
+
/** Format: date-time */
|
|
1868
|
+
generatedAt: string;
|
|
1869
|
+
totalEngineers: number;
|
|
1870
|
+
providers: components["schemas"]["AiUsageSpendAiToolUsageSpendProviderItemDto"][];
|
|
1871
|
+
models: components["schemas"]["AiUsageSpendAiToolUsageSpendModelItemDto"][];
|
|
1872
|
+
};
|
|
1873
|
+
AiUsageSpendTeamToolHeatmapDto: {
|
|
1874
|
+
/** Format: uuid */
|
|
1875
|
+
workspaceId: string;
|
|
1876
|
+
/** @enum {string} */
|
|
1877
|
+
range: "4w" | "8w" | "q";
|
|
1878
|
+
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
1879
|
+
/** Format: date-time */
|
|
1880
|
+
generatedAt: string;
|
|
1881
|
+
teams: components["schemas"]["AiUsageSpendAggregatedTeamRowDto"][];
|
|
1882
|
+
};
|
|
1883
|
+
AiUsageSpendRoiProductivitySignalWeekDto: {
|
|
1884
|
+
/** Format: date-time */
|
|
1885
|
+
bucketStart: string;
|
|
1886
|
+
/** Format: date-time */
|
|
1887
|
+
bucketEnd: string;
|
|
1888
|
+
weekLabel?: string;
|
|
1889
|
+
/** @description Estimated merged PR count in the bucket from dashboard velocity metrics. */
|
|
1890
|
+
mergedPrCount: number;
|
|
1891
|
+
/** @description Total AI-tool tokens consumed in the bucket. */
|
|
1892
|
+
tokenCount: number;
|
|
1893
|
+
};
|
|
1894
|
+
AiUsageSpendRoiProductivitySignalDto: {
|
|
1895
|
+
/** Format: uuid */
|
|
1896
|
+
workspaceId: string;
|
|
1897
|
+
/** @enum {string} */
|
|
1898
|
+
range: "4w" | "8w" | "q";
|
|
1899
|
+
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
1900
|
+
/** Format: date-time */
|
|
1901
|
+
generatedAt: string;
|
|
1902
|
+
totalMergedPrs: number;
|
|
1903
|
+
totalSpendCents: number;
|
|
1904
|
+
activeUsers: number;
|
|
1905
|
+
totalEngineers: number;
|
|
1906
|
+
/** @description Share of merged PRs estimated to be AI-assisted (0–1). */
|
|
1907
|
+
aiAssistedPrRatio: number;
|
|
1908
|
+
/** @description Percent change in merged PR throughput (recent half vs prior half of range). */
|
|
1909
|
+
prThroughputDeltaPercent: number;
|
|
1910
|
+
/** @description Percent change in token usage (recent half vs prior half of range). */
|
|
1911
|
+
usageDeltaPercent: number;
|
|
1912
|
+
weeks: components["schemas"]["AiUsageSpendRoiProductivitySignalWeekDto"][];
|
|
1913
|
+
};
|
|
1914
|
+
MeProfileDto: {
|
|
1915
|
+
id: string;
|
|
1916
|
+
email: string;
|
|
1917
|
+
name: string;
|
|
1918
|
+
roles: string[];
|
|
1919
|
+
defaultWorkspaceId?: string | null;
|
|
1920
|
+
};
|
|
1921
|
+
UpdateMeBodyDto: {
|
|
1922
|
+
name?: string;
|
|
1923
|
+
email?: string;
|
|
1924
|
+
defaultWorkspaceId?: string | null;
|
|
1925
|
+
};
|
|
1926
|
+
WorkspaceSummaryDto: {
|
|
1927
|
+
id: string;
|
|
1928
|
+
slug: string;
|
|
1929
|
+
name: string;
|
|
1930
|
+
status: string;
|
|
1931
|
+
};
|
|
1932
|
+
WorkspacesForUserDto: {
|
|
1933
|
+
workspaces: components["schemas"]["WorkspaceSummaryDto"][];
|
|
1273
1934
|
};
|
|
1274
1935
|
CreateWorkspaceBodyDto: {
|
|
1275
1936
|
slug: string;
|
|
@@ -1803,7 +2464,11 @@ export interface components {
|
|
|
1803
2464
|
RepoId: string;
|
|
1804
2465
|
ProjectId: string;
|
|
1805
2466
|
NotificationId: string;
|
|
2467
|
+
/** @description Workspace member user id (`tai_users.id`). */
|
|
2468
|
+
WorkspaceMemberId: string;
|
|
1806
2469
|
FixId: string;
|
|
2470
|
+
/** @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). */
|
|
2471
|
+
InsightsDepartmentFilter: string;
|
|
1807
2472
|
};
|
|
1808
2473
|
requestBodies: never;
|
|
1809
2474
|
headers: never;
|
|
@@ -1833,6 +2498,42 @@ export type AiToolRefreshResponseDto = components['schemas']['AiToolRefreshRespo
|
|
|
1833
2498
|
export type DashboardProductivityMetricsDto = components['schemas']['DashboardProductivityMetricsDto'];
|
|
1834
2499
|
export type DashboardProductivityDto = components['schemas']['DashboardProductivityDto'];
|
|
1835
2500
|
export type DashboardProductivityHistoryDto = components['schemas']['DashboardProductivityHistoryDto'];
|
|
2501
|
+
export type ProductivityInsightsAggregatedTeamsScopeDto = components['schemas']['ProductivityInsightsAggregatedTeamsScopeDto'];
|
|
2502
|
+
export type ProductivityInsightsAggregatedTeamWeekDto = components['schemas']['ProductivityInsightsAggregatedTeamWeekDto'];
|
|
2503
|
+
export type ProductivityInsightsAggregatedTeamRowDto = components['schemas']['ProductivityInsightsAggregatedTeamRowDto'];
|
|
2504
|
+
export type ProductivityInsightsAggregatedTeamsDto = components['schemas']['ProductivityInsightsAggregatedTeamsDto'];
|
|
2505
|
+
export type ProductivityInsightsMergedPrTrendWeekDto = components['schemas']['ProductivityInsightsMergedPrTrendWeekDto'];
|
|
2506
|
+
export type ProductivityInsightsMergedPrContributorRowDto = components['schemas']['ProductivityInsightsMergedPrContributorRowDto'];
|
|
2507
|
+
export type ProductivityInsightsMergedPrTrendsDto = components['schemas']['ProductivityInsightsMergedPrTrendsDto'];
|
|
2508
|
+
export type ProductivityInsightsTeamLeaderItemDto = components['schemas']['ProductivityInsightsTeamLeaderItemDto'];
|
|
2509
|
+
export type ProductivityInsightsTeamSummaryDto = components['schemas']['ProductivityInsightsTeamSummaryDto'];
|
|
2510
|
+
export type ProductivityInsightsTeamDetailDto = components['schemas']['ProductivityInsightsTeamDetailDto'];
|
|
2511
|
+
export type ProductivityInsightsTeamsResponseDto = components['schemas']['ProductivityInsightsTeamsResponseDto'];
|
|
2512
|
+
export type ProductivityInsightsContributorProfileDto = components['schemas']['ProductivityInsightsContributorProfileDto'];
|
|
2513
|
+
export type ProductivityInsightsContributorActivityDayDto = components['schemas']['ProductivityInsightsContributorActivityDayDto'];
|
|
2514
|
+
export type ProductivityInsightsContributorActivityWeekDto = components['schemas']['ProductivityInsightsContributorActivityWeekDto'];
|
|
2515
|
+
export type ProductivityInsightsContributorActivitySummaryDto = components['schemas']['ProductivityInsightsContributorActivitySummaryDto'];
|
|
2516
|
+
export type ProductivityInsightsContributorDetailDto = components['schemas']['ProductivityInsightsContributorDetailDto'];
|
|
2517
|
+
export type ProductivityInsightsNeedsAttentionItemDto = components['schemas']['ProductivityInsightsNeedsAttentionItemDto'];
|
|
2518
|
+
export type ProductivityInsightsNeedsAttentionDto = components['schemas']['ProductivityInsightsNeedsAttentionDto'];
|
|
2519
|
+
export type AiUsageSpendAggregatedTeamWeekDto = components['schemas']['AiUsageSpendAggregatedTeamWeekDto'];
|
|
2520
|
+
export type AiUsageSpendAggregatedTeamRowDto = components['schemas']['AiUsageSpendAggregatedTeamRowDto'];
|
|
2521
|
+
export type AiUsageSpendAggregatedTeamsSummaryDto = components['schemas']['AiUsageSpendAggregatedTeamsSummaryDto'];
|
|
2522
|
+
export type AiUsageSpendAggregatedTeamsDto = components['schemas']['AiUsageSpendAggregatedTeamsDto'];
|
|
2523
|
+
export type AiUsageSpendAggregatedContributorRowDto = components['schemas']['AiUsageSpendAggregatedContributorRowDto'];
|
|
2524
|
+
export type AiUsageSpendAggregatedContributorsDto = components['schemas']['AiUsageSpendAggregatedContributorsDto'];
|
|
2525
|
+
export type AiUsageSpendContributorToolHeatmapDto = components['schemas']['AiUsageSpendContributorToolHeatmapDto'];
|
|
2526
|
+
export type AiUsageSpendKeyInsightItemDto = components['schemas']['AiUsageSpendKeyInsightItemDto'];
|
|
2527
|
+
export type AiUsageSpendKeyInsightsDto = components['schemas']['AiUsageSpendKeyInsightsDto'];
|
|
2528
|
+
export type AiAssistedCodeDataQuality = components['schemas']['AiAssistedCodeDataQuality'];
|
|
2529
|
+
export type AiUsageSpendAiAssistedCodeWeekDto = components['schemas']['AiUsageSpendAiAssistedCodeWeekDto'];
|
|
2530
|
+
export type AiUsageSpendAiAssistedCodePercentageDto = components['schemas']['AiUsageSpendAiAssistedCodePercentageDto'];
|
|
2531
|
+
export type AiUsageSpendAiToolUsageSpendProviderItemDto = components['schemas']['AiUsageSpendAiToolUsageSpendProviderItemDto'];
|
|
2532
|
+
export type AiUsageSpendAiToolUsageSpendModelItemDto = components['schemas']['AiUsageSpendAiToolUsageSpendModelItemDto'];
|
|
2533
|
+
export type AiUsageSpendAiToolUsageSpendDto = components['schemas']['AiUsageSpendAiToolUsageSpendDto'];
|
|
2534
|
+
export type AiUsageSpendTeamToolHeatmapDto = components['schemas']['AiUsageSpendTeamToolHeatmapDto'];
|
|
2535
|
+
export type AiUsageSpendRoiProductivitySignalWeekDto = components['schemas']['AiUsageSpendRoiProductivitySignalWeekDto'];
|
|
2536
|
+
export type AiUsageSpendRoiProductivitySignalDto = components['schemas']['AiUsageSpendRoiProductivitySignalDto'];
|
|
1836
2537
|
export type MeProfileDto = components['schemas']['MeProfileDto'];
|
|
1837
2538
|
export type UpdateMeBodyDto = components['schemas']['UpdateMeBodyDto'];
|
|
1838
2539
|
export type WorkspaceSummaryDto = components['schemas']['WorkspaceSummaryDto'];
|
|
@@ -1905,7 +2606,9 @@ export type ParameterWorkspaceId = components['parameters']['WorkspaceId'];
|
|
|
1905
2606
|
export type ParameterRepoId = components['parameters']['RepoId'];
|
|
1906
2607
|
export type ParameterProjectId = components['parameters']['ProjectId'];
|
|
1907
2608
|
export type ParameterNotificationId = components['parameters']['NotificationId'];
|
|
2609
|
+
export type ParameterWorkspaceMemberId = components['parameters']['WorkspaceMemberId'];
|
|
1908
2610
|
export type ParameterFixId = components['parameters']['FixId'];
|
|
2611
|
+
export type ParameterInsightsDepartmentFilter = components['parameters']['InsightsDepartmentFilter'];
|
|
1909
2612
|
export type $defs = Record<string, never>;
|
|
1910
2613
|
export interface operations {
|
|
1911
2614
|
getMe: {
|
|
@@ -2033,11 +2736,32 @@ export interface operations {
|
|
|
2033
2736
|
[name: string]: unknown;
|
|
2034
2737
|
};
|
|
2035
2738
|
content: {
|
|
2739
|
+
/**
|
|
2740
|
+
* @example {
|
|
2741
|
+
* "members": [
|
|
2742
|
+
* {
|
|
2743
|
+
* "id": "11111111-1111-4111-8111-111111111111",
|
|
2744
|
+
* "name": "Alex Admin",
|
|
2745
|
+
* "email": "alex@example.com",
|
|
2746
|
+
* "role": "admin"
|
|
2747
|
+
* }
|
|
2748
|
+
* ]
|
|
2749
|
+
* }
|
|
2750
|
+
*/
|
|
2036
2751
|
"application/json": components["schemas"]["TeamMemberListDto"];
|
|
2037
2752
|
};
|
|
2038
2753
|
};
|
|
2039
2754
|
401: components["responses"]["Unauthorized"];
|
|
2040
2755
|
403: components["responses"]["Forbidden"];
|
|
2756
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
2757
|
+
404: {
|
|
2758
|
+
headers: {
|
|
2759
|
+
[name: string]: unknown;
|
|
2760
|
+
};
|
|
2761
|
+
content: {
|
|
2762
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
2763
|
+
};
|
|
2764
|
+
};
|
|
2041
2765
|
};
|
|
2042
2766
|
};
|
|
2043
2767
|
inviteTenantMember: {
|
|
@@ -2051,6 +2775,12 @@ export interface operations {
|
|
|
2051
2775
|
};
|
|
2052
2776
|
requestBody: {
|
|
2053
2777
|
content: {
|
|
2778
|
+
/**
|
|
2779
|
+
* @example {
|
|
2780
|
+
* "email": "new.member@example.com",
|
|
2781
|
+
* "role": "editor"
|
|
2782
|
+
* }
|
|
2783
|
+
*/
|
|
2054
2784
|
"application/json": components["schemas"]["InviteTeamMemberBodyDto"];
|
|
2055
2785
|
};
|
|
2056
2786
|
};
|
|
@@ -2064,8 +2794,26 @@ export interface operations {
|
|
|
2064
2794
|
"application/json": components["schemas"]["TeamMemberDto"];
|
|
2065
2795
|
};
|
|
2066
2796
|
};
|
|
2797
|
+
/** @description Invalid email or role */
|
|
2798
|
+
400: {
|
|
2799
|
+
headers: {
|
|
2800
|
+
[name: string]: unknown;
|
|
2801
|
+
};
|
|
2802
|
+
content: {
|
|
2803
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
2804
|
+
};
|
|
2805
|
+
};
|
|
2067
2806
|
401: components["responses"]["Unauthorized"];
|
|
2068
2807
|
403: components["responses"]["Forbidden"];
|
|
2808
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
2809
|
+
404: {
|
|
2810
|
+
headers: {
|
|
2811
|
+
[name: string]: unknown;
|
|
2812
|
+
};
|
|
2813
|
+
content: {
|
|
2814
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
2815
|
+
};
|
|
2816
|
+
};
|
|
2069
2817
|
};
|
|
2070
2818
|
};
|
|
2071
2819
|
removeTenantMember: {
|
|
@@ -2074,7 +2822,8 @@ export interface operations {
|
|
|
2074
2822
|
header?: never;
|
|
2075
2823
|
path: {
|
|
2076
2824
|
workspaceId: components["parameters"]["WorkspaceId"];
|
|
2077
|
-
|
|
2825
|
+
/** @description Workspace member user id (`tai_users.id`). */
|
|
2826
|
+
memberId: components["parameters"]["WorkspaceMemberId"];
|
|
2078
2827
|
};
|
|
2079
2828
|
cookie?: never;
|
|
2080
2829
|
};
|
|
@@ -2089,12 +2838,23 @@ export interface operations {
|
|
|
2089
2838
|
};
|
|
2090
2839
|
401: components["responses"]["Unauthorized"];
|
|
2091
2840
|
403: components["responses"]["Forbidden"];
|
|
2092
|
-
/** @description Member not found */
|
|
2841
|
+
/** @description Member not found or invalid memberId */
|
|
2093
2842
|
404: {
|
|
2094
2843
|
headers: {
|
|
2095
2844
|
[name: string]: unknown;
|
|
2096
2845
|
};
|
|
2097
|
-
content
|
|
2846
|
+
content: {
|
|
2847
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
2848
|
+
};
|
|
2849
|
+
};
|
|
2850
|
+
/** @description Cannot remove workspace owner or last admin */
|
|
2851
|
+
409: {
|
|
2852
|
+
headers: {
|
|
2853
|
+
[name: string]: unknown;
|
|
2854
|
+
};
|
|
2855
|
+
content: {
|
|
2856
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
2857
|
+
};
|
|
2098
2858
|
};
|
|
2099
2859
|
};
|
|
2100
2860
|
};
|
|
@@ -2104,12 +2864,18 @@ export interface operations {
|
|
|
2104
2864
|
header?: never;
|
|
2105
2865
|
path: {
|
|
2106
2866
|
workspaceId: components["parameters"]["WorkspaceId"];
|
|
2107
|
-
|
|
2867
|
+
/** @description Workspace member user id (`tai_users.id`). */
|
|
2868
|
+
memberId: components["parameters"]["WorkspaceMemberId"];
|
|
2108
2869
|
};
|
|
2109
2870
|
cookie?: never;
|
|
2110
2871
|
};
|
|
2111
2872
|
requestBody: {
|
|
2112
2873
|
content: {
|
|
2874
|
+
/**
|
|
2875
|
+
* @example {
|
|
2876
|
+
* "role": "viewer"
|
|
2877
|
+
* }
|
|
2878
|
+
*/
|
|
2113
2879
|
"application/json": components["schemas"]["UpdateTeamMemberRoleBodyDto"];
|
|
2114
2880
|
};
|
|
2115
2881
|
};
|
|
@@ -2123,14 +2889,34 @@ export interface operations {
|
|
|
2123
2889
|
"application/json": components["schemas"]["TeamMemberDto"];
|
|
2124
2890
|
};
|
|
2125
2891
|
};
|
|
2892
|
+
/** @description Invalid role payload */
|
|
2893
|
+
400: {
|
|
2894
|
+
headers: {
|
|
2895
|
+
[name: string]: unknown;
|
|
2896
|
+
};
|
|
2897
|
+
content: {
|
|
2898
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
2899
|
+
};
|
|
2900
|
+
};
|
|
2126
2901
|
401: components["responses"]["Unauthorized"];
|
|
2127
2902
|
403: components["responses"]["Forbidden"];
|
|
2128
|
-
/** @description Member not found */
|
|
2903
|
+
/** @description Member not found or invalid memberId */
|
|
2129
2904
|
404: {
|
|
2130
2905
|
headers: {
|
|
2131
2906
|
[name: string]: unknown;
|
|
2132
2907
|
};
|
|
2133
|
-
content
|
|
2908
|
+
content: {
|
|
2909
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
2910
|
+
};
|
|
2911
|
+
};
|
|
2912
|
+
/** @description Cannot demote the last workspace admin */
|
|
2913
|
+
409: {
|
|
2914
|
+
headers: {
|
|
2915
|
+
[name: string]: unknown;
|
|
2916
|
+
};
|
|
2917
|
+
content: {
|
|
2918
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
2919
|
+
};
|
|
2134
2920
|
};
|
|
2135
2921
|
};
|
|
2136
2922
|
};
|
|
@@ -2421,6 +3207,692 @@ export interface operations {
|
|
|
2421
3207
|
401: components["responses"]["Unauthorized"];
|
|
2422
3208
|
};
|
|
2423
3209
|
};
|
|
3210
|
+
getProductivityInsightsAggregatedTeams: {
|
|
3211
|
+
parameters: {
|
|
3212
|
+
query?: {
|
|
3213
|
+
/** @description Measure time range (maps to weekly bucket count). */
|
|
3214
|
+
rangeId?: "4w" | "8w" | "q";
|
|
3215
|
+
/** @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). */
|
|
3216
|
+
department?: components["parameters"]["InsightsDepartmentFilter"];
|
|
3217
|
+
/** @description Team name filter; send `All teams` to include every team. */
|
|
3218
|
+
team?: string;
|
|
3219
|
+
/** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
|
|
3220
|
+
windowEnd?: string;
|
|
3221
|
+
};
|
|
3222
|
+
header?: never;
|
|
3223
|
+
path: {
|
|
3224
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
3225
|
+
};
|
|
3226
|
+
cookie?: never;
|
|
3227
|
+
};
|
|
3228
|
+
requestBody?: never;
|
|
3229
|
+
responses: {
|
|
3230
|
+
/** @description Aggregated team productivity series */
|
|
3231
|
+
200: {
|
|
3232
|
+
headers: {
|
|
3233
|
+
[name: string]: unknown;
|
|
3234
|
+
};
|
|
3235
|
+
content: {
|
|
3236
|
+
"application/json": components["schemas"]["ProductivityInsightsAggregatedTeamsDto"];
|
|
3237
|
+
};
|
|
3238
|
+
};
|
|
3239
|
+
/** @description Invalid query parameters */
|
|
3240
|
+
400: {
|
|
3241
|
+
headers: {
|
|
3242
|
+
[name: string]: unknown;
|
|
3243
|
+
};
|
|
3244
|
+
content: {
|
|
3245
|
+
"application/json": {
|
|
3246
|
+
/** @example invalid_query */
|
|
3247
|
+
error: string;
|
|
3248
|
+
};
|
|
3249
|
+
};
|
|
3250
|
+
};
|
|
3251
|
+
401: components["responses"]["Unauthorized"];
|
|
3252
|
+
403: components["responses"]["Forbidden"];
|
|
3253
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
3254
|
+
404: {
|
|
3255
|
+
headers: {
|
|
3256
|
+
[name: string]: unknown;
|
|
3257
|
+
};
|
|
3258
|
+
content?: never;
|
|
3259
|
+
};
|
|
3260
|
+
};
|
|
3261
|
+
};
|
|
3262
|
+
getProductivityInsightsMergedPrTrends: {
|
|
3263
|
+
parameters: {
|
|
3264
|
+
query?: {
|
|
3265
|
+
/** @description Measure time range (maps to weekly bucket count). */
|
|
3266
|
+
rangeId?: "4w" | "8w" | "q";
|
|
3267
|
+
/** @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). */
|
|
3268
|
+
department?: components["parameters"]["InsightsDepartmentFilter"];
|
|
3269
|
+
/** @description Team name filter; send `All teams` to include every team. */
|
|
3270
|
+
team?: string;
|
|
3271
|
+
/** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
|
|
3272
|
+
windowEnd?: string;
|
|
3273
|
+
};
|
|
3274
|
+
header?: never;
|
|
3275
|
+
path: {
|
|
3276
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
3277
|
+
};
|
|
3278
|
+
cookie?: never;
|
|
3279
|
+
};
|
|
3280
|
+
requestBody?: never;
|
|
3281
|
+
responses: {
|
|
3282
|
+
/** @description Portfolio and per-contributor merged PR weekly series */
|
|
3283
|
+
200: {
|
|
3284
|
+
headers: {
|
|
3285
|
+
[name: string]: unknown;
|
|
3286
|
+
};
|
|
3287
|
+
content: {
|
|
3288
|
+
"application/json": components["schemas"]["ProductivityInsightsMergedPrTrendsDto"];
|
|
3289
|
+
};
|
|
3290
|
+
};
|
|
3291
|
+
/** @description Invalid query parameters */
|
|
3292
|
+
400: {
|
|
3293
|
+
headers: {
|
|
3294
|
+
[name: string]: unknown;
|
|
3295
|
+
};
|
|
3296
|
+
content: {
|
|
3297
|
+
"application/json": {
|
|
3298
|
+
/** @example invalid_query */
|
|
3299
|
+
error: string;
|
|
3300
|
+
};
|
|
3301
|
+
};
|
|
3302
|
+
};
|
|
3303
|
+
401: components["responses"]["Unauthorized"];
|
|
3304
|
+
403: components["responses"]["Forbidden"];
|
|
3305
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
3306
|
+
404: {
|
|
3307
|
+
headers: {
|
|
3308
|
+
[name: string]: unknown;
|
|
3309
|
+
};
|
|
3310
|
+
content?: never;
|
|
3311
|
+
};
|
|
3312
|
+
};
|
|
3313
|
+
};
|
|
3314
|
+
getProductivityInsightsTeams: {
|
|
3315
|
+
parameters: {
|
|
3316
|
+
query?: {
|
|
3317
|
+
/** @description When set, return drilldown for this org-chart team id instead of the top-team list. */
|
|
3318
|
+
teamId?: string;
|
|
3319
|
+
/** @description Maximum top-team rows when `teamId` is omitted (UI default 3). */
|
|
3320
|
+
limit?: number;
|
|
3321
|
+
/** @description Measure time range (maps to weekly bucket count). */
|
|
3322
|
+
rangeId?: "4w" | "8w" | "q";
|
|
3323
|
+
/** @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). */
|
|
3324
|
+
department?: components["parameters"]["InsightsDepartmentFilter"];
|
|
3325
|
+
/** @description Team name filter; send `All teams` to include every team. */
|
|
3326
|
+
team?: string;
|
|
3327
|
+
/** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
|
|
3328
|
+
windowEnd?: string;
|
|
3329
|
+
};
|
|
3330
|
+
header?: never;
|
|
3331
|
+
path: {
|
|
3332
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
3333
|
+
};
|
|
3334
|
+
cookie?: never;
|
|
3335
|
+
};
|
|
3336
|
+
requestBody?: never;
|
|
3337
|
+
responses: {
|
|
3338
|
+
/** @description Top teams list or single-team drilldown */
|
|
3339
|
+
200: {
|
|
3340
|
+
headers: {
|
|
3341
|
+
[name: string]: unknown;
|
|
3342
|
+
};
|
|
3343
|
+
content: {
|
|
3344
|
+
"application/json": components["schemas"]["ProductivityInsightsTeamsResponseDto"];
|
|
3345
|
+
};
|
|
3346
|
+
};
|
|
3347
|
+
/** @description Invalid query parameters */
|
|
3348
|
+
400: {
|
|
3349
|
+
headers: {
|
|
3350
|
+
[name: string]: unknown;
|
|
3351
|
+
};
|
|
3352
|
+
content: {
|
|
3353
|
+
"application/json": {
|
|
3354
|
+
/** @example invalid_query */
|
|
3355
|
+
error: string;
|
|
3356
|
+
};
|
|
3357
|
+
};
|
|
3358
|
+
};
|
|
3359
|
+
401: components["responses"]["Unauthorized"];
|
|
3360
|
+
403: components["responses"]["Forbidden"];
|
|
3361
|
+
/** @description Workspace or team not found */
|
|
3362
|
+
404: {
|
|
3363
|
+
headers: {
|
|
3364
|
+
[name: string]: unknown;
|
|
3365
|
+
};
|
|
3366
|
+
content?: never;
|
|
3367
|
+
};
|
|
3368
|
+
};
|
|
3369
|
+
};
|
|
3370
|
+
getProductivityInsightsContributor: {
|
|
3371
|
+
parameters: {
|
|
3372
|
+
query?: {
|
|
3373
|
+
/** @description Measure time range (maps to weekly bucket count). */
|
|
3374
|
+
rangeId?: "4w" | "8w" | "q";
|
|
3375
|
+
/** @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). */
|
|
3376
|
+
department?: components["parameters"]["InsightsDepartmentFilter"];
|
|
3377
|
+
/** @description Team name filter; send `All teams` to include every team. */
|
|
3378
|
+
team?: string;
|
|
3379
|
+
/** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
|
|
3380
|
+
windowEnd?: string;
|
|
3381
|
+
};
|
|
3382
|
+
header?: never;
|
|
3383
|
+
path: {
|
|
3384
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
3385
|
+
/** @description Org-chart person id (e.g. email from `person_id` external id). */
|
|
3386
|
+
contributorId: string;
|
|
3387
|
+
};
|
|
3388
|
+
cookie?: never;
|
|
3389
|
+
};
|
|
3390
|
+
requestBody?: never;
|
|
3391
|
+
responses: {
|
|
3392
|
+
/** @description Contributor activity drilldown */
|
|
3393
|
+
200: {
|
|
3394
|
+
headers: {
|
|
3395
|
+
[name: string]: unknown;
|
|
3396
|
+
};
|
|
3397
|
+
content: {
|
|
3398
|
+
"application/json": components["schemas"]["ProductivityInsightsContributorDetailDto"];
|
|
3399
|
+
};
|
|
3400
|
+
};
|
|
3401
|
+
/** @description Invalid query parameters */
|
|
3402
|
+
400: {
|
|
3403
|
+
headers: {
|
|
3404
|
+
[name: string]: unknown;
|
|
3405
|
+
};
|
|
3406
|
+
content: {
|
|
3407
|
+
"application/json": {
|
|
3408
|
+
/** @example invalid_query */
|
|
3409
|
+
error: string;
|
|
3410
|
+
};
|
|
3411
|
+
};
|
|
3412
|
+
};
|
|
3413
|
+
401: components["responses"]["Unauthorized"];
|
|
3414
|
+
403: components["responses"]["Forbidden"];
|
|
3415
|
+
/** @description Workspace or contributor not found */
|
|
3416
|
+
404: {
|
|
3417
|
+
headers: {
|
|
3418
|
+
[name: string]: unknown;
|
|
3419
|
+
};
|
|
3420
|
+
content?: never;
|
|
3421
|
+
};
|
|
3422
|
+
};
|
|
3423
|
+
};
|
|
3424
|
+
getProductivityInsightsNeedsAttention: {
|
|
3425
|
+
parameters: {
|
|
3426
|
+
query?: {
|
|
3427
|
+
/** @description Rank teams (Aggregated Teams tab) or contributors (Individual Contributors tab). */
|
|
3428
|
+
entityType?: "teams" | "contributors";
|
|
3429
|
+
/** @description Maximum number of laggard rows to return (UI default 3). */
|
|
3430
|
+
limit?: number;
|
|
3431
|
+
/** @description Measure time range (maps to weekly bucket count). */
|
|
3432
|
+
rangeId?: "4w" | "8w" | "q";
|
|
3433
|
+
/** @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). */
|
|
3434
|
+
department?: components["parameters"]["InsightsDepartmentFilter"];
|
|
3435
|
+
/** @description Team name filter; send `All teams` to include every team. */
|
|
3436
|
+
team?: string;
|
|
3437
|
+
/** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
|
|
3438
|
+
windowEnd?: string;
|
|
3439
|
+
};
|
|
3440
|
+
header?: never;
|
|
3441
|
+
path: {
|
|
3442
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
3443
|
+
};
|
|
3444
|
+
cookie?: never;
|
|
3445
|
+
};
|
|
3446
|
+
requestBody?: never;
|
|
3447
|
+
responses: {
|
|
3448
|
+
/** @description Bottom performers for the needs-attention widget */
|
|
3449
|
+
200: {
|
|
3450
|
+
headers: {
|
|
3451
|
+
[name: string]: unknown;
|
|
3452
|
+
};
|
|
3453
|
+
content: {
|
|
3454
|
+
"application/json": components["schemas"]["ProductivityInsightsNeedsAttentionDto"];
|
|
3455
|
+
};
|
|
3456
|
+
};
|
|
3457
|
+
/** @description Invalid query parameters */
|
|
3458
|
+
400: {
|
|
3459
|
+
headers: {
|
|
3460
|
+
[name: string]: unknown;
|
|
3461
|
+
};
|
|
3462
|
+
content: {
|
|
3463
|
+
"application/json": {
|
|
3464
|
+
/** @example invalid_query */
|
|
3465
|
+
error: string;
|
|
3466
|
+
};
|
|
3467
|
+
};
|
|
3468
|
+
};
|
|
3469
|
+
401: components["responses"]["Unauthorized"];
|
|
3470
|
+
403: components["responses"]["Forbidden"];
|
|
3471
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
3472
|
+
404: {
|
|
3473
|
+
headers: {
|
|
3474
|
+
[name: string]: unknown;
|
|
3475
|
+
};
|
|
3476
|
+
content?: never;
|
|
3477
|
+
};
|
|
3478
|
+
};
|
|
3479
|
+
};
|
|
3480
|
+
getAiUsageSpendAggregatedTeams: {
|
|
3481
|
+
parameters: {
|
|
3482
|
+
query?: {
|
|
3483
|
+
/** @description Measure time range (maps to weekly bucket count). */
|
|
3484
|
+
rangeId?: "4w" | "8w" | "q";
|
|
3485
|
+
/** @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). */
|
|
3486
|
+
department?: components["parameters"]["InsightsDepartmentFilter"];
|
|
3487
|
+
/** @description Team name filter; send `All teams` to include every team. */
|
|
3488
|
+
team?: string;
|
|
3489
|
+
/** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
|
|
3490
|
+
windowEnd?: string;
|
|
3491
|
+
};
|
|
3492
|
+
header?: never;
|
|
3493
|
+
path: {
|
|
3494
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
3495
|
+
};
|
|
3496
|
+
cookie?: never;
|
|
3497
|
+
};
|
|
3498
|
+
requestBody?: never;
|
|
3499
|
+
responses: {
|
|
3500
|
+
/** @description Aggregated team AI usage and spend series */
|
|
3501
|
+
200: {
|
|
3502
|
+
headers: {
|
|
3503
|
+
[name: string]: unknown;
|
|
3504
|
+
};
|
|
3505
|
+
content: {
|
|
3506
|
+
"application/json": components["schemas"]["AiUsageSpendAggregatedTeamsDto"];
|
|
3507
|
+
};
|
|
3508
|
+
};
|
|
3509
|
+
/** @description Invalid query parameters */
|
|
3510
|
+
400: {
|
|
3511
|
+
headers: {
|
|
3512
|
+
[name: string]: unknown;
|
|
3513
|
+
};
|
|
3514
|
+
content: {
|
|
3515
|
+
"application/json": {
|
|
3516
|
+
/** @example invalid_query */
|
|
3517
|
+
error: string;
|
|
3518
|
+
};
|
|
3519
|
+
};
|
|
3520
|
+
};
|
|
3521
|
+
401: components["responses"]["Unauthorized"];
|
|
3522
|
+
403: components["responses"]["Forbidden"];
|
|
3523
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
3524
|
+
404: {
|
|
3525
|
+
headers: {
|
|
3526
|
+
[name: string]: unknown;
|
|
3527
|
+
};
|
|
3528
|
+
content?: never;
|
|
3529
|
+
};
|
|
3530
|
+
};
|
|
3531
|
+
};
|
|
3532
|
+
getAiUsageSpendAggregatedContributors: {
|
|
3533
|
+
parameters: {
|
|
3534
|
+
query?: {
|
|
3535
|
+
/** @description Measure time range (maps to weekly bucket count). */
|
|
3536
|
+
rangeId?: "4w" | "8w" | "q";
|
|
3537
|
+
/** @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). */
|
|
3538
|
+
department?: components["parameters"]["InsightsDepartmentFilter"];
|
|
3539
|
+
/** @description Team name filter; send `All teams` to include every team. */
|
|
3540
|
+
team?: string;
|
|
3541
|
+
/** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
|
|
3542
|
+
windowEnd?: string;
|
|
3543
|
+
};
|
|
3544
|
+
header?: never;
|
|
3545
|
+
path: {
|
|
3546
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
3547
|
+
};
|
|
3548
|
+
cookie?: never;
|
|
3549
|
+
};
|
|
3550
|
+
requestBody?: never;
|
|
3551
|
+
responses: {
|
|
3552
|
+
/** @description Aggregated contributor AI usage and spend series */
|
|
3553
|
+
200: {
|
|
3554
|
+
headers: {
|
|
3555
|
+
[name: string]: unknown;
|
|
3556
|
+
};
|
|
3557
|
+
content: {
|
|
3558
|
+
"application/json": components["schemas"]["AiUsageSpendAggregatedContributorsDto"];
|
|
3559
|
+
};
|
|
3560
|
+
};
|
|
3561
|
+
/** @description Invalid query parameters */
|
|
3562
|
+
400: {
|
|
3563
|
+
headers: {
|
|
3564
|
+
[name: string]: unknown;
|
|
3565
|
+
};
|
|
3566
|
+
content: {
|
|
3567
|
+
"application/json": {
|
|
3568
|
+
/** @example invalid_query */
|
|
3569
|
+
error: string;
|
|
3570
|
+
};
|
|
3571
|
+
};
|
|
3572
|
+
};
|
|
3573
|
+
401: components["responses"]["Unauthorized"];
|
|
3574
|
+
403: components["responses"]["Forbidden"];
|
|
3575
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
3576
|
+
404: {
|
|
3577
|
+
headers: {
|
|
3578
|
+
[name: string]: unknown;
|
|
3579
|
+
};
|
|
3580
|
+
content?: never;
|
|
3581
|
+
};
|
|
3582
|
+
};
|
|
3583
|
+
};
|
|
3584
|
+
getAiUsageSpendContributorToolHeatmap: {
|
|
3585
|
+
parameters: {
|
|
3586
|
+
query?: {
|
|
3587
|
+
/** @description Measure time range (maps to weekly bucket count). */
|
|
3588
|
+
rangeId?: "4w" | "8w" | "q";
|
|
3589
|
+
/** @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). */
|
|
3590
|
+
department?: components["parameters"]["InsightsDepartmentFilter"];
|
|
3591
|
+
/** @description Team name filter; send `All teams` to include every team. */
|
|
3592
|
+
team?: string;
|
|
3593
|
+
/** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
|
|
3594
|
+
windowEnd?: string;
|
|
3595
|
+
};
|
|
3596
|
+
header?: never;
|
|
3597
|
+
path: {
|
|
3598
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
3599
|
+
};
|
|
3600
|
+
cookie?: never;
|
|
3601
|
+
};
|
|
3602
|
+
requestBody?: never;
|
|
3603
|
+
responses: {
|
|
3604
|
+
/** @description Contributor heatmap rows for AI usage and spend */
|
|
3605
|
+
200: {
|
|
3606
|
+
headers: {
|
|
3607
|
+
[name: string]: unknown;
|
|
3608
|
+
};
|
|
3609
|
+
content: {
|
|
3610
|
+
"application/json": components["schemas"]["AiUsageSpendContributorToolHeatmapDto"];
|
|
3611
|
+
};
|
|
3612
|
+
};
|
|
3613
|
+
/** @description Invalid query parameters */
|
|
3614
|
+
400: {
|
|
3615
|
+
headers: {
|
|
3616
|
+
[name: string]: unknown;
|
|
3617
|
+
};
|
|
3618
|
+
content: {
|
|
3619
|
+
"application/json": {
|
|
3620
|
+
/** @example invalid_query */
|
|
3621
|
+
error: string;
|
|
3622
|
+
};
|
|
3623
|
+
};
|
|
3624
|
+
};
|
|
3625
|
+
401: components["responses"]["Unauthorized"];
|
|
3626
|
+
403: components["responses"]["Forbidden"];
|
|
3627
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
3628
|
+
404: {
|
|
3629
|
+
headers: {
|
|
3630
|
+
[name: string]: unknown;
|
|
3631
|
+
};
|
|
3632
|
+
content?: never;
|
|
3633
|
+
};
|
|
3634
|
+
};
|
|
3635
|
+
};
|
|
3636
|
+
getAiUsageSpendKeyInsights: {
|
|
3637
|
+
parameters: {
|
|
3638
|
+
query?: {
|
|
3639
|
+
/** @description Measure time range (maps to weekly bucket count). */
|
|
3640
|
+
rangeId?: "4w" | "8w" | "q";
|
|
3641
|
+
/** @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). */
|
|
3642
|
+
department?: components["parameters"]["InsightsDepartmentFilter"];
|
|
3643
|
+
/** @description Team name filter; send `All teams` to include every team. */
|
|
3644
|
+
team?: string;
|
|
3645
|
+
/** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
|
|
3646
|
+
windowEnd?: string;
|
|
3647
|
+
};
|
|
3648
|
+
header?: never;
|
|
3649
|
+
path: {
|
|
3650
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
3651
|
+
};
|
|
3652
|
+
cookie?: never;
|
|
3653
|
+
};
|
|
3654
|
+
requestBody?: never;
|
|
3655
|
+
responses: {
|
|
3656
|
+
/** @description Key insight cards for the AI usage & spend panel */
|
|
3657
|
+
200: {
|
|
3658
|
+
headers: {
|
|
3659
|
+
[name: string]: unknown;
|
|
3660
|
+
};
|
|
3661
|
+
content: {
|
|
3662
|
+
"application/json": components["schemas"]["AiUsageSpendKeyInsightsDto"];
|
|
3663
|
+
};
|
|
3664
|
+
};
|
|
3665
|
+
/** @description Invalid query parameters */
|
|
3666
|
+
400: {
|
|
3667
|
+
headers: {
|
|
3668
|
+
[name: string]: unknown;
|
|
3669
|
+
};
|
|
3670
|
+
content: {
|
|
3671
|
+
"application/json": {
|
|
3672
|
+
/** @example invalid_query */
|
|
3673
|
+
error: string;
|
|
3674
|
+
};
|
|
3675
|
+
};
|
|
3676
|
+
};
|
|
3677
|
+
401: components["responses"]["Unauthorized"];
|
|
3678
|
+
403: components["responses"]["Forbidden"];
|
|
3679
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
3680
|
+
404: {
|
|
3681
|
+
headers: {
|
|
3682
|
+
[name: string]: unknown;
|
|
3683
|
+
};
|
|
3684
|
+
content?: never;
|
|
3685
|
+
};
|
|
3686
|
+
};
|
|
3687
|
+
};
|
|
3688
|
+
getAiUsageSpendAiAssistedCodePercentage: {
|
|
3689
|
+
parameters: {
|
|
3690
|
+
query?: {
|
|
3691
|
+
/** @description Measure time range (maps to weekly bucket count). */
|
|
3692
|
+
rangeId?: "4w" | "8w" | "q";
|
|
3693
|
+
/** @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). */
|
|
3694
|
+
department?: components["parameters"]["InsightsDepartmentFilter"];
|
|
3695
|
+
/** @description Team name filter; send `All teams` to include every team. */
|
|
3696
|
+
team?: string;
|
|
3697
|
+
/** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
|
|
3698
|
+
windowEnd?: string;
|
|
3699
|
+
};
|
|
3700
|
+
header?: never;
|
|
3701
|
+
path: {
|
|
3702
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
3703
|
+
};
|
|
3704
|
+
cookie?: never;
|
|
3705
|
+
};
|
|
3706
|
+
requestBody?: never;
|
|
3707
|
+
responses: {
|
|
3708
|
+
/** @description AI-assisted code percentage series */
|
|
3709
|
+
200: {
|
|
3710
|
+
headers: {
|
|
3711
|
+
[name: string]: unknown;
|
|
3712
|
+
};
|
|
3713
|
+
content: {
|
|
3714
|
+
"application/json": components["schemas"]["AiUsageSpendAiAssistedCodePercentageDto"];
|
|
3715
|
+
};
|
|
3716
|
+
};
|
|
3717
|
+
/** @description Invalid query parameters */
|
|
3718
|
+
400: {
|
|
3719
|
+
headers: {
|
|
3720
|
+
[name: string]: unknown;
|
|
3721
|
+
};
|
|
3722
|
+
content: {
|
|
3723
|
+
"application/json": {
|
|
3724
|
+
/** @example invalid_query */
|
|
3725
|
+
error: string;
|
|
3726
|
+
};
|
|
3727
|
+
};
|
|
3728
|
+
};
|
|
3729
|
+
401: components["responses"]["Unauthorized"];
|
|
3730
|
+
403: components["responses"]["Forbidden"];
|
|
3731
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
3732
|
+
404: {
|
|
3733
|
+
headers: {
|
|
3734
|
+
[name: string]: unknown;
|
|
3735
|
+
};
|
|
3736
|
+
content?: never;
|
|
3737
|
+
};
|
|
3738
|
+
};
|
|
3739
|
+
};
|
|
3740
|
+
getAiUsageSpendAiToolUsageSpend: {
|
|
3741
|
+
parameters: {
|
|
3742
|
+
query?: {
|
|
3743
|
+
/** @description Measure time range (maps to weekly bucket count). */
|
|
3744
|
+
rangeId?: "4w" | "8w" | "q";
|
|
3745
|
+
/** @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). */
|
|
3746
|
+
department?: components["parameters"]["InsightsDepartmentFilter"];
|
|
3747
|
+
/** @description Team name filter; send `All teams` to include every team. */
|
|
3748
|
+
team?: string;
|
|
3749
|
+
/** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
|
|
3750
|
+
windowEnd?: string;
|
|
3751
|
+
};
|
|
3752
|
+
header?: never;
|
|
3753
|
+
path: {
|
|
3754
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
3755
|
+
};
|
|
3756
|
+
cookie?: never;
|
|
3757
|
+
};
|
|
3758
|
+
requestBody?: never;
|
|
3759
|
+
responses: {
|
|
3760
|
+
/** @description Provider and model AI tool usage/spend rollups */
|
|
3761
|
+
200: {
|
|
3762
|
+
headers: {
|
|
3763
|
+
[name: string]: unknown;
|
|
3764
|
+
};
|
|
3765
|
+
content: {
|
|
3766
|
+
"application/json": components["schemas"]["AiUsageSpendAiToolUsageSpendDto"];
|
|
3767
|
+
};
|
|
3768
|
+
};
|
|
3769
|
+
/** @description Invalid query parameters */
|
|
3770
|
+
400: {
|
|
3771
|
+
headers: {
|
|
3772
|
+
[name: string]: unknown;
|
|
3773
|
+
};
|
|
3774
|
+
content: {
|
|
3775
|
+
"application/json": {
|
|
3776
|
+
/** @example invalid_query */
|
|
3777
|
+
error: string;
|
|
3778
|
+
};
|
|
3779
|
+
};
|
|
3780
|
+
};
|
|
3781
|
+
401: components["responses"]["Unauthorized"];
|
|
3782
|
+
403: components["responses"]["Forbidden"];
|
|
3783
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
3784
|
+
404: {
|
|
3785
|
+
headers: {
|
|
3786
|
+
[name: string]: unknown;
|
|
3787
|
+
};
|
|
3788
|
+
content?: never;
|
|
3789
|
+
};
|
|
3790
|
+
};
|
|
3791
|
+
};
|
|
3792
|
+
getAiUsageSpendTeamToolHeatmap: {
|
|
3793
|
+
parameters: {
|
|
3794
|
+
query?: {
|
|
3795
|
+
/** @description Measure time range (maps to weekly bucket count). */
|
|
3796
|
+
rangeId?: "4w" | "8w" | "q";
|
|
3797
|
+
/** @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). */
|
|
3798
|
+
department?: components["parameters"]["InsightsDepartmentFilter"];
|
|
3799
|
+
/** @description Team name filter; send `All teams` to include every team. */
|
|
3800
|
+
team?: string;
|
|
3801
|
+
/** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
|
|
3802
|
+
windowEnd?: string;
|
|
3803
|
+
};
|
|
3804
|
+
header?: never;
|
|
3805
|
+
path: {
|
|
3806
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
3807
|
+
};
|
|
3808
|
+
cookie?: never;
|
|
3809
|
+
};
|
|
3810
|
+
requestBody?: never;
|
|
3811
|
+
responses: {
|
|
3812
|
+
/** @description Team weekly AI usage heatmap rows */
|
|
3813
|
+
200: {
|
|
3814
|
+
headers: {
|
|
3815
|
+
[name: string]: unknown;
|
|
3816
|
+
};
|
|
3817
|
+
content: {
|
|
3818
|
+
"application/json": components["schemas"]["AiUsageSpendTeamToolHeatmapDto"];
|
|
3819
|
+
};
|
|
3820
|
+
};
|
|
3821
|
+
/** @description Invalid query parameters */
|
|
3822
|
+
400: {
|
|
3823
|
+
headers: {
|
|
3824
|
+
[name: string]: unknown;
|
|
3825
|
+
};
|
|
3826
|
+
content: {
|
|
3827
|
+
"application/json": {
|
|
3828
|
+
/** @example invalid_query */
|
|
3829
|
+
error: string;
|
|
3830
|
+
};
|
|
3831
|
+
};
|
|
3832
|
+
};
|
|
3833
|
+
401: components["responses"]["Unauthorized"];
|
|
3834
|
+
403: components["responses"]["Forbidden"];
|
|
3835
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
3836
|
+
404: {
|
|
3837
|
+
headers: {
|
|
3838
|
+
[name: string]: unknown;
|
|
3839
|
+
};
|
|
3840
|
+
content?: never;
|
|
3841
|
+
};
|
|
3842
|
+
};
|
|
3843
|
+
};
|
|
3844
|
+
getAiUsageSpendRoiProductivitySignal: {
|
|
3845
|
+
parameters: {
|
|
3846
|
+
query?: {
|
|
3847
|
+
/** @description Measure time range (maps to weekly bucket count). */
|
|
3848
|
+
rangeId?: "4w" | "8w" | "q";
|
|
3849
|
+
/** @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). */
|
|
3850
|
+
department?: components["parameters"]["InsightsDepartmentFilter"];
|
|
3851
|
+
/** @description Team name filter; send `All teams` to include every team. */
|
|
3852
|
+
team?: string;
|
|
3853
|
+
/** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
|
|
3854
|
+
windowEnd?: string;
|
|
3855
|
+
};
|
|
3856
|
+
header?: never;
|
|
3857
|
+
path: {
|
|
3858
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
3859
|
+
};
|
|
3860
|
+
cookie?: never;
|
|
3861
|
+
};
|
|
3862
|
+
requestBody?: never;
|
|
3863
|
+
responses: {
|
|
3864
|
+
/** @description ROI and productivity signal rollups */
|
|
3865
|
+
200: {
|
|
3866
|
+
headers: {
|
|
3867
|
+
[name: string]: unknown;
|
|
3868
|
+
};
|
|
3869
|
+
content: {
|
|
3870
|
+
"application/json": components["schemas"]["AiUsageSpendRoiProductivitySignalDto"];
|
|
3871
|
+
};
|
|
3872
|
+
};
|
|
3873
|
+
/** @description Invalid query parameters */
|
|
3874
|
+
400: {
|
|
3875
|
+
headers: {
|
|
3876
|
+
[name: string]: unknown;
|
|
3877
|
+
};
|
|
3878
|
+
content: {
|
|
3879
|
+
"application/json": {
|
|
3880
|
+
/** @example invalid_query */
|
|
3881
|
+
error: string;
|
|
3882
|
+
};
|
|
3883
|
+
};
|
|
3884
|
+
};
|
|
3885
|
+
401: components["responses"]["Unauthorized"];
|
|
3886
|
+
403: components["responses"]["Forbidden"];
|
|
3887
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
3888
|
+
404: {
|
|
3889
|
+
headers: {
|
|
3890
|
+
[name: string]: unknown;
|
|
3891
|
+
};
|
|
3892
|
+
content?: never;
|
|
3893
|
+
};
|
|
3894
|
+
};
|
|
3895
|
+
};
|
|
2424
3896
|
getCompanyProfile: {
|
|
2425
3897
|
parameters: {
|
|
2426
3898
|
query?: never;
|