@thinkai/tai-api-contract 2.114.0 → 2.116.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 +129 -5
- package/dist/generated/openapi.d.ts.map +1 -1
- package/openapi/openapi.yaml +102 -12
- package/package.json +1 -1
- package/src/generated/openapi.ts +129 -5
package/openapi/openapi.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
openapi: 3.0.3
|
|
2
2
|
info:
|
|
3
3
|
title: ThinkAI API
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.116.0
|
|
5
5
|
description: >
|
|
6
6
|
Contract surface for the AI Driven SDLC backend used by ThinkAI.
|
|
7
7
|
Workspace-scoped routes use `/workspaces/{workspaceId}/...`.
|
|
@@ -1537,6 +1537,75 @@ paths:
|
|
|
1537
1537
|
schema:
|
|
1538
1538
|
$ref: "#/components/schemas/ErrorMessageDto"
|
|
1539
1539
|
|
|
1540
|
+
/workspaces/{workspaceId}/ai-email-aliases:
|
|
1541
|
+
get:
|
|
1542
|
+
tags: [Workspace]
|
|
1543
|
+
summary: Get workspace email aliases for people not on the org chart
|
|
1544
|
+
description: >
|
|
1545
|
+
Returns workspace-level mappings from alternate work emails to a canonical email
|
|
1546
|
+
(same behaviour as org-chart `alternate_emails`, without adding org-chart members).
|
|
1547
|
+
Empty `aliases` array when unset. Member-level read access.
|
|
1548
|
+
operationId: getWorkspaceAiEmailAliases
|
|
1549
|
+
parameters:
|
|
1550
|
+
- $ref: "#/components/parameters/WorkspaceId"
|
|
1551
|
+
responses:
|
|
1552
|
+
"200":
|
|
1553
|
+
description: Current alias mappings (may be empty)
|
|
1554
|
+
content:
|
|
1555
|
+
application/json:
|
|
1556
|
+
schema:
|
|
1557
|
+
$ref: "#/components/schemas/AiEmailAliasesDto"
|
|
1558
|
+
"401":
|
|
1559
|
+
$ref: "#/components/responses/Unauthorized"
|
|
1560
|
+
"403":
|
|
1561
|
+
$ref: "#/components/responses/Forbidden"
|
|
1562
|
+
"404":
|
|
1563
|
+
description: Workspace does not exist or malformed workspaceId
|
|
1564
|
+
content:
|
|
1565
|
+
application/json:
|
|
1566
|
+
schema:
|
|
1567
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
1568
|
+
put:
|
|
1569
|
+
tags: [Workspace]
|
|
1570
|
+
summary: Set workspace email aliases for people not on the org chart
|
|
1571
|
+
description: >
|
|
1572
|
+
Full-replace workspace-level email alias mappings (e.g.
|
|
1573
|
+
`jane.doe.contractor@example.com` → `jane.doe@example.com`). Same effect as
|
|
1574
|
+
`alternate_emails` on an org row. Does not add org-chart members.
|
|
1575
|
+
`PUT { aliases: [] }` clears all aliases. Requires workspace **admin**.
|
|
1576
|
+
operationId: putWorkspaceAiEmailAliases
|
|
1577
|
+
parameters:
|
|
1578
|
+
- $ref: "#/components/parameters/WorkspaceId"
|
|
1579
|
+
requestBody:
|
|
1580
|
+
required: true
|
|
1581
|
+
content:
|
|
1582
|
+
application/json:
|
|
1583
|
+
schema:
|
|
1584
|
+
$ref: "#/components/schemas/AiEmailAliasesDto"
|
|
1585
|
+
responses:
|
|
1586
|
+
"204":
|
|
1587
|
+
description: Aliases persisted (or cleared).
|
|
1588
|
+
"400":
|
|
1589
|
+
description: Invalid payload
|
|
1590
|
+
content:
|
|
1591
|
+
application/json:
|
|
1592
|
+
schema:
|
|
1593
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
1594
|
+
"401":
|
|
1595
|
+
$ref: "#/components/responses/Unauthorized"
|
|
1596
|
+
"403":
|
|
1597
|
+
description: Forbidden — workspace admin required
|
|
1598
|
+
content:
|
|
1599
|
+
application/json:
|
|
1600
|
+
schema:
|
|
1601
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
1602
|
+
"404":
|
|
1603
|
+
description: Workspace does not exist or malformed workspaceId
|
|
1604
|
+
content:
|
|
1605
|
+
application/json:
|
|
1606
|
+
schema:
|
|
1607
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
1608
|
+
|
|
1540
1609
|
/workspaces/{workspaceId}/productivity-targets:
|
|
1541
1610
|
get:
|
|
1542
1611
|
tags: [Workspace]
|
|
@@ -7261,10 +7330,11 @@ paths:
|
|
|
7261
7330
|
summary: Set per-workspace repo-sync eligibility overrides
|
|
7262
7331
|
description: >
|
|
7263
7332
|
Set (or clear, with an empty `overrides`) the per-workspace repo-sync eligibility overrides.
|
|
7264
|
-
|
|
7265
|
-
**
|
|
7266
|
-
|
|
7267
|
-
(
|
|
7333
|
+
Omitted keys leave existing workspace overrides unchanged; `null` clears a single override
|
|
7334
|
+
back to the platform default. **Platform admins** may set any value (raise caps, `0` = unlimited,
|
|
7335
|
+
include archived/forks). **Workspace admins** may only make the gate *more restrictive* than
|
|
7336
|
+
the platform defaults (lower caps, exclude archived/forks) — exceeding a platform limit returns
|
|
7337
|
+
`403` (`repo_eligibility_bound_exceeded`). Requires workspace admin or platform admin.
|
|
7268
7338
|
operationId: putWorkspaceRepoEligibility
|
|
7269
7339
|
parameters:
|
|
7270
7340
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
@@ -7284,13 +7354,7 @@ paths:
|
|
|
7284
7354
|
content:
|
|
7285
7355
|
application/json:
|
|
7286
7356
|
schema:
|
|
7287
|
-
|
|
7288
|
-
required: [overrides, effective]
|
|
7289
|
-
properties:
|
|
7290
|
-
overrides:
|
|
7291
|
-
$ref: "#/components/schemas/RepoEligibilityOverridesDto"
|
|
7292
|
-
effective:
|
|
7293
|
-
$ref: "#/components/schemas/RepoEligibilityConfigDto"
|
|
7357
|
+
$ref: "#/components/schemas/WorkspaceRepoEligibilityDto"
|
|
7294
7358
|
"400":
|
|
7295
7359
|
description: Invalid request body
|
|
7296
7360
|
content:
|
|
@@ -11176,6 +11240,32 @@ components:
|
|
|
11176
11240
|
maximum: 10000
|
|
11177
11241
|
description: Ceiling — stay at or below this many CI failures per engineer per week. `0` is valid.
|
|
11178
11242
|
|
|
11243
|
+
AiEmailAliasEntryDto:
|
|
11244
|
+
type: object
|
|
11245
|
+
required: [canonicalEmail, aliasEmail]
|
|
11246
|
+
additionalProperties: false
|
|
11247
|
+
properties:
|
|
11248
|
+
canonicalEmail:
|
|
11249
|
+
type: string
|
|
11250
|
+
format: email
|
|
11251
|
+
description: Canonical identity for AI tool attribution (person_id target).
|
|
11252
|
+
aliasEmail:
|
|
11253
|
+
type: string
|
|
11254
|
+
format: email
|
|
11255
|
+
description: Alternate Claude/Cursor login email mapped to canonicalEmail.
|
|
11256
|
+
|
|
11257
|
+
AiEmailAliasesDto:
|
|
11258
|
+
type: object
|
|
11259
|
+
required: [aliases]
|
|
11260
|
+
additionalProperties: false
|
|
11261
|
+
properties:
|
|
11262
|
+
aliases:
|
|
11263
|
+
type: array
|
|
11264
|
+
maxItems: 5000
|
|
11265
|
+
items:
|
|
11266
|
+
$ref: "#/components/schemas/AiEmailAliasEntryDto"
|
|
11267
|
+
description: Workspace-level alias mappings (empty array when unset).
|
|
11268
|
+
|
|
11179
11269
|
TestConnectionResponseDto:
|
|
11180
11270
|
type: object
|
|
11181
11271
|
required: [success]
|
package/package.json
CHANGED
package/src/generated/openapi.ts
CHANGED
|
@@ -582,6 +582,30 @@ export interface paths {
|
|
|
582
582
|
patch?: never;
|
|
583
583
|
trace?: never;
|
|
584
584
|
};
|
|
585
|
+
"/workspaces/{workspaceId}/ai-email-aliases": {
|
|
586
|
+
parameters: {
|
|
587
|
+
query?: never;
|
|
588
|
+
header?: never;
|
|
589
|
+
path?: never;
|
|
590
|
+
cookie?: never;
|
|
591
|
+
};
|
|
592
|
+
/**
|
|
593
|
+
* Get workspace email aliases for people not on the org chart
|
|
594
|
+
* @description Returns workspace-level mappings from alternate work emails to a canonical email (same behaviour as org-chart `alternate_emails`, without adding org-chart members). Empty `aliases` array when unset. Member-level read access.
|
|
595
|
+
*/
|
|
596
|
+
get: operations["getWorkspaceAiEmailAliases"];
|
|
597
|
+
/**
|
|
598
|
+
* Set workspace email aliases for people not on the org chart
|
|
599
|
+
* @description Full-replace workspace-level email alias mappings (e.g. `jane.doe.contractor@example.com` → `jane.doe@example.com`). Same effect as `alternate_emails` on an org row. Does not add org-chart members. `PUT { aliases: [] }` clears all aliases. Requires workspace **admin**.
|
|
600
|
+
*/
|
|
601
|
+
put: operations["putWorkspaceAiEmailAliases"];
|
|
602
|
+
post?: never;
|
|
603
|
+
delete?: never;
|
|
604
|
+
options?: never;
|
|
605
|
+
head?: never;
|
|
606
|
+
patch?: never;
|
|
607
|
+
trace?: never;
|
|
608
|
+
};
|
|
585
609
|
"/workspaces/{workspaceId}/productivity-targets": {
|
|
586
610
|
parameters: {
|
|
587
611
|
query?: never;
|
|
@@ -2790,7 +2814,7 @@ export interface paths {
|
|
|
2790
2814
|
get: operations["getWorkspaceRepoEligibility"];
|
|
2791
2815
|
/**
|
|
2792
2816
|
* Set per-workspace repo-sync eligibility overrides
|
|
2793
|
-
* @description Set (or clear, with an empty `overrides`) the per-workspace repo-sync eligibility overrides. **Platform admins** may set any value (raise caps, `0` = unlimited, include archived/forks). **Workspace admins** may only make the gate *more restrictive* than the platform defaults (lower caps, exclude archived/forks) — exceeding a platform limit returns `403` (`repo_eligibility_bound_exceeded`). Requires workspace admin or platform admin.
|
|
2817
|
+
* @description Set (or clear, with an empty `overrides`) the per-workspace repo-sync eligibility overrides. Omitted keys leave existing workspace overrides unchanged; `null` clears a single override back to the platform default. **Platform admins** may set any value (raise caps, `0` = unlimited, include archived/forks). **Workspace admins** may only make the gate *more restrictive* than the platform defaults (lower caps, exclude archived/forks) — exceeding a platform limit returns `403` (`repo_eligibility_bound_exceeded`). Requires workspace admin or platform admin.
|
|
2794
2818
|
*/
|
|
2795
2819
|
put: operations["putWorkspaceRepoEligibility"];
|
|
2796
2820
|
post?: never;
|
|
@@ -4552,6 +4576,22 @@ export interface components {
|
|
|
4552
4576
|
/** @description Ceiling — stay at or below this many CI failures per engineer per week. `0` is valid. */
|
|
4553
4577
|
ciFailuresPerEngineerPerWeek?: number | null;
|
|
4554
4578
|
};
|
|
4579
|
+
AiEmailAliasEntryDto: {
|
|
4580
|
+
/**
|
|
4581
|
+
* Format: email
|
|
4582
|
+
* @description Canonical identity for AI tool attribution (person_id target).
|
|
4583
|
+
*/
|
|
4584
|
+
canonicalEmail: string;
|
|
4585
|
+
/**
|
|
4586
|
+
* Format: email
|
|
4587
|
+
* @description Alternate Claude/Cursor login email mapped to canonicalEmail.
|
|
4588
|
+
*/
|
|
4589
|
+
aliasEmail: string;
|
|
4590
|
+
};
|
|
4591
|
+
AiEmailAliasesDto: {
|
|
4592
|
+
/** @description Workspace-level alias mappings (empty array when unset). */
|
|
4593
|
+
aliases: components["schemas"]["AiEmailAliasEntryDto"][];
|
|
4594
|
+
};
|
|
4555
4595
|
TestConnectionResponseDto: {
|
|
4556
4596
|
success: boolean;
|
|
4557
4597
|
/** @description Machine-readable failure code when success=false (e.g. invalid_token, zenhr_sync_in_progress when ZenHR OAuth refresh is contended). */
|
|
@@ -9079,6 +9119,8 @@ export type DeliveryRoleConfigDto = components['schemas']['DeliveryRoleConfigDto
|
|
|
9079
9119
|
export type RepoDeliveryOverrideDto = components['schemas']['RepoDeliveryOverrideDto'];
|
|
9080
9120
|
export type DeliveryTopologyDto = components['schemas']['DeliveryTopologyDto'];
|
|
9081
9121
|
export type ProductivityTargetsDto = components['schemas']['ProductivityTargetsDto'];
|
|
9122
|
+
export type AiEmailAliasEntryDto = components['schemas']['AiEmailAliasEntryDto'];
|
|
9123
|
+
export type AiEmailAliasesDto = components['schemas']['AiEmailAliasesDto'];
|
|
9082
9124
|
export type TestConnectionResponseDto = components['schemas']['TestConnectionResponseDto'];
|
|
9083
9125
|
export type CursorKeyUsageDto = components['schemas']['CursorKeyUsageDto'];
|
|
9084
9126
|
export type AiToolSeatDto = components['schemas']['AiToolSeatDto'];
|
|
@@ -11102,6 +11144,91 @@ export interface operations {
|
|
|
11102
11144
|
};
|
|
11103
11145
|
};
|
|
11104
11146
|
};
|
|
11147
|
+
getWorkspaceAiEmailAliases: {
|
|
11148
|
+
parameters: {
|
|
11149
|
+
query?: never;
|
|
11150
|
+
header?: never;
|
|
11151
|
+
path: {
|
|
11152
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
11153
|
+
};
|
|
11154
|
+
cookie?: never;
|
|
11155
|
+
};
|
|
11156
|
+
requestBody?: never;
|
|
11157
|
+
responses: {
|
|
11158
|
+
/** @description Current alias mappings (may be empty) */
|
|
11159
|
+
200: {
|
|
11160
|
+
headers: {
|
|
11161
|
+
[name: string]: unknown;
|
|
11162
|
+
};
|
|
11163
|
+
content: {
|
|
11164
|
+
"application/json": components["schemas"]["AiEmailAliasesDto"];
|
|
11165
|
+
};
|
|
11166
|
+
};
|
|
11167
|
+
401: components["responses"]["Unauthorized"];
|
|
11168
|
+
403: components["responses"]["Forbidden"];
|
|
11169
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
11170
|
+
404: {
|
|
11171
|
+
headers: {
|
|
11172
|
+
[name: string]: unknown;
|
|
11173
|
+
};
|
|
11174
|
+
content: {
|
|
11175
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
11176
|
+
};
|
|
11177
|
+
};
|
|
11178
|
+
};
|
|
11179
|
+
};
|
|
11180
|
+
putWorkspaceAiEmailAliases: {
|
|
11181
|
+
parameters: {
|
|
11182
|
+
query?: never;
|
|
11183
|
+
header?: never;
|
|
11184
|
+
path: {
|
|
11185
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
11186
|
+
};
|
|
11187
|
+
cookie?: never;
|
|
11188
|
+
};
|
|
11189
|
+
requestBody: {
|
|
11190
|
+
content: {
|
|
11191
|
+
"application/json": components["schemas"]["AiEmailAliasesDto"];
|
|
11192
|
+
};
|
|
11193
|
+
};
|
|
11194
|
+
responses: {
|
|
11195
|
+
/** @description Aliases persisted (or cleared). */
|
|
11196
|
+
204: {
|
|
11197
|
+
headers: {
|
|
11198
|
+
[name: string]: unknown;
|
|
11199
|
+
};
|
|
11200
|
+
content?: never;
|
|
11201
|
+
};
|
|
11202
|
+
/** @description Invalid payload */
|
|
11203
|
+
400: {
|
|
11204
|
+
headers: {
|
|
11205
|
+
[name: string]: unknown;
|
|
11206
|
+
};
|
|
11207
|
+
content: {
|
|
11208
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
11209
|
+
};
|
|
11210
|
+
};
|
|
11211
|
+
401: components["responses"]["Unauthorized"];
|
|
11212
|
+
/** @description Forbidden — workspace admin required */
|
|
11213
|
+
403: {
|
|
11214
|
+
headers: {
|
|
11215
|
+
[name: string]: unknown;
|
|
11216
|
+
};
|
|
11217
|
+
content: {
|
|
11218
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
11219
|
+
};
|
|
11220
|
+
};
|
|
11221
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
11222
|
+
404: {
|
|
11223
|
+
headers: {
|
|
11224
|
+
[name: string]: unknown;
|
|
11225
|
+
};
|
|
11226
|
+
content: {
|
|
11227
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
11228
|
+
};
|
|
11229
|
+
};
|
|
11230
|
+
};
|
|
11231
|
+
};
|
|
11105
11232
|
getWorkspaceProductivityTargets: {
|
|
11106
11233
|
parameters: {
|
|
11107
11234
|
query?: never;
|
|
@@ -16834,10 +16961,7 @@ export interface operations {
|
|
|
16834
16961
|
[name: string]: unknown;
|
|
16835
16962
|
};
|
|
16836
16963
|
content: {
|
|
16837
|
-
"application/json":
|
|
16838
|
-
overrides: components["schemas"]["RepoEligibilityOverridesDto"];
|
|
16839
|
-
effective: components["schemas"]["RepoEligibilityConfigDto"];
|
|
16840
|
-
};
|
|
16964
|
+
"application/json": components["schemas"]["WorkspaceRepoEligibilityDto"];
|
|
16841
16965
|
};
|
|
16842
16966
|
};
|
|
16843
16967
|
/** @description Invalid request body */
|