@thinkai/tai-api-contract 2.37.0 → 2.39.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.
- package/dist/generated/openapi.d.ts +261 -1
- package/dist/generated/openapi.d.ts.map +1 -1
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/openapi/openapi.yaml +245 -1
- package/package.json +1 -1
- package/src/generated/openapi.ts +261 -1
- package/src/index.ts +31 -0
|
@@ -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;
|
|
@@ -2015,6 +2055,26 @@ export interface paths {
|
|
|
2015
2055
|
patch?: never;
|
|
2016
2056
|
trace?: never;
|
|
2017
2057
|
};
|
|
2058
|
+
"/workspaces/{workspaceId}/integrations/zenhr/reconnect": {
|
|
2059
|
+
parameters: {
|
|
2060
|
+
query?: never;
|
|
2061
|
+
header?: never;
|
|
2062
|
+
path?: never;
|
|
2063
|
+
cookie?: never;
|
|
2064
|
+
};
|
|
2065
|
+
get?: never;
|
|
2066
|
+
put?: never;
|
|
2067
|
+
/**
|
|
2068
|
+
* Attempt silent ZenHR reconnect
|
|
2069
|
+
* @description Attempts a silent token refresh and branch ping using stored ZenHR OAuth credentials. Returns `{ ok: true }` when the connection is restored without user interaction. Returns `{ ok: false, oauthRequired: true }` when stored credentials exist but refresh failed with an OAuth re-authorization error (e.g. `invalid_grant`); the SPA should start ZenHR OAuth next. Returns `502` for other upstream failures (same semantics as `GET .../integrations/zenhr/branches`).
|
|
2070
|
+
*/
|
|
2071
|
+
post: operations["reconnectWorkspaceZenHr"];
|
|
2072
|
+
delete?: never;
|
|
2073
|
+
options?: never;
|
|
2074
|
+
head?: never;
|
|
2075
|
+
patch?: never;
|
|
2076
|
+
trace?: never;
|
|
2077
|
+
};
|
|
2018
2078
|
"/workspaces/{workspaceId}/hris/status": {
|
|
2019
2079
|
parameters: {
|
|
2020
2080
|
query?: never;
|
|
@@ -2839,6 +2899,31 @@ export interface components {
|
|
|
2839
2899
|
usageDeltaPercent: number;
|
|
2840
2900
|
weeks: components["schemas"]["AiUsageSpendRoiProductivitySignalWeekDto"][];
|
|
2841
2901
|
};
|
|
2902
|
+
AiUsageSpendUsageTrendsProviderWeekDto: {
|
|
2903
|
+
providerId: string;
|
|
2904
|
+
providerName: string;
|
|
2905
|
+
spendCents: number;
|
|
2906
|
+
tokenCount: number;
|
|
2907
|
+
activeUsers: number;
|
|
2908
|
+
};
|
|
2909
|
+
AiUsageSpendUsageTrendsWeekDto: {
|
|
2910
|
+
/** Format: date-time */
|
|
2911
|
+
bucketStart: string;
|
|
2912
|
+
/** Format: date-time */
|
|
2913
|
+
bucketEnd: string;
|
|
2914
|
+
weekLabel?: string;
|
|
2915
|
+
providers: components["schemas"]["AiUsageSpendUsageTrendsProviderWeekDto"][];
|
|
2916
|
+
};
|
|
2917
|
+
AiUsageSpendUsageTrendsDto: {
|
|
2918
|
+
/** Format: uuid */
|
|
2919
|
+
workspaceId: string;
|
|
2920
|
+
/** @enum {string} */
|
|
2921
|
+
range: "4w" | "8w" | "q";
|
|
2922
|
+
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
2923
|
+
/** Format: date-time */
|
|
2924
|
+
generatedAt: string;
|
|
2925
|
+
weeks: components["schemas"]["AiUsageSpendUsageTrendsWeekDto"][];
|
|
2926
|
+
};
|
|
2842
2927
|
MeProfileDto: {
|
|
2843
2928
|
id: string;
|
|
2844
2929
|
email: string;
|
|
@@ -4041,7 +4126,7 @@ export interface components {
|
|
|
4041
4126
|
* @description Type of workspace lifecycle event.
|
|
4042
4127
|
* @enum {string}
|
|
4043
4128
|
*/
|
|
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";
|
|
4129
|
+
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
4130
|
ActivityLogActorDto: {
|
|
4046
4131
|
/** Format: uuid */
|
|
4047
4132
|
userId: string;
|
|
@@ -4124,6 +4209,16 @@ export interface components {
|
|
|
4124
4209
|
HrisSyncStatusListDto: {
|
|
4125
4210
|
statuses: components["schemas"]["HrisSyncStatusDto"][];
|
|
4126
4211
|
};
|
|
4212
|
+
ZenHrReconnectResultDto: {
|
|
4213
|
+
ok: boolean;
|
|
4214
|
+
/** @description When true with ok=false, stored credentials exist but refresh failed with an OAuth re-authorization error; the SPA should start ZenHR OAuth next. */
|
|
4215
|
+
oauthRequired?: boolean;
|
|
4216
|
+
/**
|
|
4217
|
+
* @description Machine-readable code when ok=false and oauthRequired=true.
|
|
4218
|
+
* @enum {string}
|
|
4219
|
+
*/
|
|
4220
|
+
error?: "zenhr_oauth_required";
|
|
4221
|
+
};
|
|
4127
4222
|
HrisTriggerSyncResultDto: {
|
|
4128
4223
|
/** @enum {string} */
|
|
4129
4224
|
status: "ok" | "skipped" | "error" | "partial";
|
|
@@ -4407,6 +4502,9 @@ export type AiUsageSpendAiToolUsageSpendDto = components['schemas']['AiUsageSpen
|
|
|
4407
4502
|
export type AiUsageSpendTeamToolHeatmapDto = components['schemas']['AiUsageSpendTeamToolHeatmapDto'];
|
|
4408
4503
|
export type AiUsageSpendRoiProductivitySignalWeekDto = components['schemas']['AiUsageSpendRoiProductivitySignalWeekDto'];
|
|
4409
4504
|
export type AiUsageSpendRoiProductivitySignalDto = components['schemas']['AiUsageSpendRoiProductivitySignalDto'];
|
|
4505
|
+
export type AiUsageSpendUsageTrendsProviderWeekDto = components['schemas']['AiUsageSpendUsageTrendsProviderWeekDto'];
|
|
4506
|
+
export type AiUsageSpendUsageTrendsWeekDto = components['schemas']['AiUsageSpendUsageTrendsWeekDto'];
|
|
4507
|
+
export type AiUsageSpendUsageTrendsDto = components['schemas']['AiUsageSpendUsageTrendsDto'];
|
|
4410
4508
|
export type MeProfileDto = components['schemas']['MeProfileDto'];
|
|
4411
4509
|
export type UpdateMeBodyDto = components['schemas']['UpdateMeBodyDto'];
|
|
4412
4510
|
export type WorkspaceSummaryDto = components['schemas']['WorkspaceSummaryDto'];
|
|
@@ -4532,6 +4630,7 @@ export type WorkspaceAbsenceDto = components['schemas']['WorkspaceAbsenceDto'];
|
|
|
4532
4630
|
export type WorkspaceAbsenceListDto = components['schemas']['WorkspaceAbsenceListDto'];
|
|
4533
4631
|
export type HrisSyncStatusDto = components['schemas']['HrisSyncStatusDto'];
|
|
4534
4632
|
export type HrisSyncStatusListDto = components['schemas']['HrisSyncStatusListDto'];
|
|
4633
|
+
export type ZenHrReconnectResultDto = components['schemas']['ZenHrReconnectResultDto'];
|
|
4535
4634
|
export type HrisTriggerSyncResultDto = components['schemas']['HrisTriggerSyncResultDto'];
|
|
4536
4635
|
export type HrisProviderSyncResultDto = components['schemas']['HrisProviderSyncResultDto'];
|
|
4537
4636
|
export type ActivityLogPageDto = components['schemas']['ActivityLogPageDto'];
|
|
@@ -5330,6 +5429,63 @@ export interface operations {
|
|
|
5330
5429
|
};
|
|
5331
5430
|
};
|
|
5332
5431
|
};
|
|
5432
|
+
deleteSourceInsightsByType: {
|
|
5433
|
+
parameters: {
|
|
5434
|
+
query?: never;
|
|
5435
|
+
header?: never;
|
|
5436
|
+
path: {
|
|
5437
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
5438
|
+
/** @description AI tool source type (`cursor` or `claude`). */
|
|
5439
|
+
type: "cursor" | "claude";
|
|
5440
|
+
};
|
|
5441
|
+
cookie?: never;
|
|
5442
|
+
};
|
|
5443
|
+
requestBody?: never;
|
|
5444
|
+
responses: {
|
|
5445
|
+
/** @description Insights credentials removed */
|
|
5446
|
+
200: {
|
|
5447
|
+
headers: {
|
|
5448
|
+
[name: string]: unknown;
|
|
5449
|
+
};
|
|
5450
|
+
content: {
|
|
5451
|
+
/**
|
|
5452
|
+
* @example {
|
|
5453
|
+
* "ok": true
|
|
5454
|
+
* }
|
|
5455
|
+
*/
|
|
5456
|
+
"application/json": {
|
|
5457
|
+
ok: boolean;
|
|
5458
|
+
};
|
|
5459
|
+
};
|
|
5460
|
+
};
|
|
5461
|
+
/** @description Invalid or unsupported source type */
|
|
5462
|
+
400: {
|
|
5463
|
+
headers: {
|
|
5464
|
+
[name: string]: unknown;
|
|
5465
|
+
};
|
|
5466
|
+
content: {
|
|
5467
|
+
/**
|
|
5468
|
+
* @example {
|
|
5469
|
+
* "error": "Invalid or unsupported source type for insights disconnect",
|
|
5470
|
+
* "code": "invalid_source_type"
|
|
5471
|
+
* }
|
|
5472
|
+
*/
|
|
5473
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
5474
|
+
};
|
|
5475
|
+
};
|
|
5476
|
+
401: components["responses"]["Unauthorized"];
|
|
5477
|
+
403: components["responses"]["Forbidden"];
|
|
5478
|
+
/** @description Source missing or no insights credentials configured */
|
|
5479
|
+
404: {
|
|
5480
|
+
headers: {
|
|
5481
|
+
[name: string]: unknown;
|
|
5482
|
+
};
|
|
5483
|
+
content: {
|
|
5484
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
5485
|
+
};
|
|
5486
|
+
};
|
|
5487
|
+
};
|
|
5488
|
+
};
|
|
5333
5489
|
getDashboardProductivity: {
|
|
5334
5490
|
parameters: {
|
|
5335
5491
|
query?: {
|
|
@@ -6102,6 +6258,58 @@ export interface operations {
|
|
|
6102
6258
|
};
|
|
6103
6259
|
};
|
|
6104
6260
|
};
|
|
6261
|
+
getAiUsageSpendUsageTrends: {
|
|
6262
|
+
parameters: {
|
|
6263
|
+
query?: {
|
|
6264
|
+
/** @description Measure time range (maps to weekly bucket count). */
|
|
6265
|
+
rangeId?: "4w" | "8w" | "q";
|
|
6266
|
+
/** @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). */
|
|
6267
|
+
department?: components["parameters"]["InsightsDepartmentFilter"];
|
|
6268
|
+
/** @description Team name filter; send `All teams` to include every team. */
|
|
6269
|
+
team?: string;
|
|
6270
|
+
/** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
|
|
6271
|
+
windowEnd?: string;
|
|
6272
|
+
};
|
|
6273
|
+
header?: never;
|
|
6274
|
+
path: {
|
|
6275
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
6276
|
+
};
|
|
6277
|
+
cookie?: never;
|
|
6278
|
+
};
|
|
6279
|
+
requestBody?: never;
|
|
6280
|
+
responses: {
|
|
6281
|
+
/** @description Per-provider weekly spend and token trend series */
|
|
6282
|
+
200: {
|
|
6283
|
+
headers: {
|
|
6284
|
+
[name: string]: unknown;
|
|
6285
|
+
};
|
|
6286
|
+
content: {
|
|
6287
|
+
"application/json": components["schemas"]["AiUsageSpendUsageTrendsDto"];
|
|
6288
|
+
};
|
|
6289
|
+
};
|
|
6290
|
+
/** @description Invalid query parameters */
|
|
6291
|
+
400: {
|
|
6292
|
+
headers: {
|
|
6293
|
+
[name: string]: unknown;
|
|
6294
|
+
};
|
|
6295
|
+
content: {
|
|
6296
|
+
"application/json": {
|
|
6297
|
+
/** @example invalid_query */
|
|
6298
|
+
error: string;
|
|
6299
|
+
};
|
|
6300
|
+
};
|
|
6301
|
+
};
|
|
6302
|
+
401: components["responses"]["Unauthorized"];
|
|
6303
|
+
403: components["responses"]["Forbidden"];
|
|
6304
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
6305
|
+
404: {
|
|
6306
|
+
headers: {
|
|
6307
|
+
[name: string]: unknown;
|
|
6308
|
+
};
|
|
6309
|
+
content?: never;
|
|
6310
|
+
};
|
|
6311
|
+
};
|
|
6312
|
+
};
|
|
6105
6313
|
getCompanyProfile: {
|
|
6106
6314
|
parameters: {
|
|
6107
6315
|
query?: never;
|
|
@@ -9635,6 +9843,58 @@ export interface operations {
|
|
|
9635
9843
|
403: components["responses"]["Forbidden"];
|
|
9636
9844
|
};
|
|
9637
9845
|
};
|
|
9846
|
+
reconnectWorkspaceZenHr: {
|
|
9847
|
+
parameters: {
|
|
9848
|
+
query?: never;
|
|
9849
|
+
header?: never;
|
|
9850
|
+
path: {
|
|
9851
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
9852
|
+
};
|
|
9853
|
+
cookie?: never;
|
|
9854
|
+
};
|
|
9855
|
+
requestBody?: never;
|
|
9856
|
+
responses: {
|
|
9857
|
+
/** @description Silent reconnect succeeded or OAuth is required */
|
|
9858
|
+
200: {
|
|
9859
|
+
headers: {
|
|
9860
|
+
[name: string]: unknown;
|
|
9861
|
+
};
|
|
9862
|
+
content: {
|
|
9863
|
+
"application/json": components["schemas"]["ZenHrReconnectResultDto"];
|
|
9864
|
+
};
|
|
9865
|
+
};
|
|
9866
|
+
401: components["responses"]["Unauthorized"];
|
|
9867
|
+
403: components["responses"]["Forbidden"];
|
|
9868
|
+
/** @description ZenHR is not connected for this workspace */
|
|
9869
|
+
404: {
|
|
9870
|
+
headers: {
|
|
9871
|
+
[name: string]: unknown;
|
|
9872
|
+
};
|
|
9873
|
+
content: {
|
|
9874
|
+
/**
|
|
9875
|
+
* @example {
|
|
9876
|
+
* "error": "zenhr_not_connected"
|
|
9877
|
+
* }
|
|
9878
|
+
*/
|
|
9879
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
9880
|
+
};
|
|
9881
|
+
};
|
|
9882
|
+
/** @description ZenHR refresh or branch ping failed for a non-OAuth reason */
|
|
9883
|
+
502: {
|
|
9884
|
+
headers: {
|
|
9885
|
+
[name: string]: unknown;
|
|
9886
|
+
};
|
|
9887
|
+
content: {
|
|
9888
|
+
/**
|
|
9889
|
+
* @example {
|
|
9890
|
+
* "error": "zenhr_reconnect_failed"
|
|
9891
|
+
* }
|
|
9892
|
+
*/
|
|
9893
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
9894
|
+
};
|
|
9895
|
+
};
|
|
9896
|
+
};
|
|
9897
|
+
};
|
|
9638
9898
|
getHrisSyncStatus: {
|
|
9639
9899
|
parameters: {
|
|
9640
9900
|
query?: never;
|