@thinkai/tai-api-contract 2.31.0 → 2.32.1-pr.731.1
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 +176 -1
- package/dist/generated/openapi.d.ts.map +1 -1
- package/openapi/openapi.yaml +269 -10
- package/package.json +1 -1
- package/src/generated/openapi.ts +176 -1
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.32.1
|
|
5
5
|
description: >
|
|
6
6
|
Contract surface for the AI Driven SDLC backend used by ThinkAI.
|
|
7
7
|
Workspace-scoped routes use `/workspaces/{workspaceId}/...`.
|
|
@@ -3213,6 +3213,25 @@ paths:
|
|
|
3213
3213
|
- $ref: "#/components/parameters/PaginationLimit"
|
|
3214
3214
|
- $ref: "#/components/parameters/PaginationOffset"
|
|
3215
3215
|
- $ref: "#/components/parameters/PaginationOrder"
|
|
3216
|
+
- name: sort
|
|
3217
|
+
in: query
|
|
3218
|
+
required: false
|
|
3219
|
+
description: >
|
|
3220
|
+
Server-side sort column (the activity "5 W's"). Combined with `order` (asc/desc).
|
|
3221
|
+
Defaults to `when` (occurredAt). `occurredAt`/`id` is always the tiebreaker.
|
|
3222
|
+
schema:
|
|
3223
|
+
type: string
|
|
3224
|
+
enum: [when, who, what, why, where]
|
|
3225
|
+
- name: productArea
|
|
3226
|
+
in: query
|
|
3227
|
+
required: false
|
|
3228
|
+
description: >
|
|
3229
|
+
Coarse product-area grouping filter (#156). `integration` = GitHub + AI-tool key events;
|
|
3230
|
+
`agentic_foundation` = repos, readiness scans, fixes; `workspace_team` = members + HRIS.
|
|
3231
|
+
Omit (or pass `all`) for every area.
|
|
3232
|
+
schema:
|
|
3233
|
+
type: string
|
|
3234
|
+
enum: [integration, agentic_foundation, workspace_team, all]
|
|
3216
3235
|
- name: eventType
|
|
3217
3236
|
in: query
|
|
3218
3237
|
description: Filter to a specific event type.
|
|
@@ -4043,6 +4062,79 @@ paths:
|
|
|
4043
4062
|
"403":
|
|
4044
4063
|
$ref: "#/components/responses/Forbidden"
|
|
4045
4064
|
|
|
4065
|
+
/workspaces/{workspaceId}/repo-eligibility:
|
|
4066
|
+
get:
|
|
4067
|
+
tags: [RepositoryReadiness]
|
|
4068
|
+
summary: Get repo-sync eligibility gate (defaults + per-workspace overrides)
|
|
4069
|
+
description: >
|
|
4070
|
+
Returns the effective repo-sync eligibility gate (archived / fork / size / count) for the
|
|
4071
|
+
workspace: the global `defaults`, any per-workspace `overrides`, the merged `effective`
|
|
4072
|
+
values, and whether the caller can edit without platform-admin (`canEditUnrestricted`).
|
|
4073
|
+
Member-level read access.
|
|
4074
|
+
operationId: getWorkspaceRepoEligibility
|
|
4075
|
+
parameters:
|
|
4076
|
+
- $ref: "#/components/parameters/WorkspaceId"
|
|
4077
|
+
responses:
|
|
4078
|
+
"200":
|
|
4079
|
+
description: Effective repo-eligibility configuration
|
|
4080
|
+
content:
|
|
4081
|
+
application/json:
|
|
4082
|
+
schema:
|
|
4083
|
+
$ref: "#/components/schemas/WorkspaceRepoEligibilityDto"
|
|
4084
|
+
"401":
|
|
4085
|
+
$ref: "#/components/responses/Unauthorized"
|
|
4086
|
+
"403":
|
|
4087
|
+
$ref: "#/components/responses/Forbidden"
|
|
4088
|
+
put:
|
|
4089
|
+
tags: [RepositoryReadiness]
|
|
4090
|
+
summary: Set per-workspace repo-sync eligibility overrides
|
|
4091
|
+
description: >
|
|
4092
|
+
Set (or clear, with an empty `overrides`) the per-workspace repo-sync eligibility overrides.
|
|
4093
|
+
**Platform admins** may set any value (raise caps, `0` = unlimited, include archived/forks).
|
|
4094
|
+
**Workspace admins** may only make the gate *more restrictive* than the platform defaults
|
|
4095
|
+
(lower caps, exclude archived/forks) — exceeding a platform limit returns `403`
|
|
4096
|
+
(`repo_eligibility_bound_exceeded`). Requires workspace admin or platform admin.
|
|
4097
|
+
operationId: putWorkspaceRepoEligibility
|
|
4098
|
+
parameters:
|
|
4099
|
+
- $ref: "#/components/parameters/WorkspaceId"
|
|
4100
|
+
requestBody:
|
|
4101
|
+
required: true
|
|
4102
|
+
content:
|
|
4103
|
+
application/json:
|
|
4104
|
+
schema:
|
|
4105
|
+
type: object
|
|
4106
|
+
required: [overrides]
|
|
4107
|
+
properties:
|
|
4108
|
+
overrides:
|
|
4109
|
+
$ref: "#/components/schemas/RepoEligibilityOverridesDto"
|
|
4110
|
+
responses:
|
|
4111
|
+
"200":
|
|
4112
|
+
description: Overrides saved
|
|
4113
|
+
content:
|
|
4114
|
+
application/json:
|
|
4115
|
+
schema:
|
|
4116
|
+
type: object
|
|
4117
|
+
required: [overrides, effective]
|
|
4118
|
+
properties:
|
|
4119
|
+
overrides:
|
|
4120
|
+
$ref: "#/components/schemas/RepoEligibilityOverridesDto"
|
|
4121
|
+
effective:
|
|
4122
|
+
$ref: "#/components/schemas/RepoEligibilityConfigDto"
|
|
4123
|
+
"400":
|
|
4124
|
+
description: Invalid request body
|
|
4125
|
+
content:
|
|
4126
|
+
application/json:
|
|
4127
|
+
schema:
|
|
4128
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
4129
|
+
"401":
|
|
4130
|
+
$ref: "#/components/responses/Unauthorized"
|
|
4131
|
+
"403":
|
|
4132
|
+
description: Forbidden, or a workspace-admin value exceeds a platform limit (`repo_eligibility_bound_exceeded`)
|
|
4133
|
+
content:
|
|
4134
|
+
application/json:
|
|
4135
|
+
schema:
|
|
4136
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
4137
|
+
|
|
4046
4138
|
/workspaces/{workspaceId}/readiness/cursor-key-usage:
|
|
4047
4139
|
get:
|
|
4048
4140
|
tags: [RepositoryReadiness]
|
|
@@ -5378,6 +5470,18 @@ components:
|
|
|
5378
5470
|
Whether the Claude Code execution key is stored. If false and `claudePlatformKeyEnabled`
|
|
5379
5471
|
is true in `WorkspaceConfigDto`, the platform key will be used for readiness runs
|
|
5380
5472
|
(additional cost applies).
|
|
5473
|
+
insightsCredentialKind:
|
|
5474
|
+
type: string
|
|
5475
|
+
enum: [admin, analytics, unknown]
|
|
5476
|
+
description: >
|
|
5477
|
+
Kind of stored insights credential (derived from the active plan's key). `admin` for
|
|
5478
|
+
Team Console Admin keys (`sk-ant-admin…`); `analytics` for Enterprise Analytics keys.
|
|
5479
|
+
insightsTokenHint:
|
|
5480
|
+
type: string
|
|
5481
|
+
maxLength: 64
|
|
5482
|
+
description: >
|
|
5483
|
+
Masked preview of the stored insights key (prefix + last four characters). Never
|
|
5484
|
+
includes the full secret.
|
|
5381
5485
|
|
|
5382
5486
|
AgentExecutionProviderDto:
|
|
5383
5487
|
type: string
|
|
@@ -6744,6 +6848,123 @@ components:
|
|
|
6744
6848
|
format: date-time
|
|
6745
6849
|
nullable: true
|
|
6746
6850
|
description: Last push or metadata update from GitHub when available.
|
|
6851
|
+
archived:
|
|
6852
|
+
type: boolean
|
|
6853
|
+
nullable: true
|
|
6854
|
+
description: True when the repository is archived (read-only on GitHub).
|
|
6855
|
+
fork:
|
|
6856
|
+
type: boolean
|
|
6857
|
+
nullable: true
|
|
6858
|
+
description: True when the repository is a fork of another repository.
|
|
6859
|
+
disabled:
|
|
6860
|
+
type: boolean
|
|
6861
|
+
nullable: true
|
|
6862
|
+
description: True when the repository is disabled on GitHub.
|
|
6863
|
+
size:
|
|
6864
|
+
type: integer
|
|
6865
|
+
nullable: true
|
|
6866
|
+
description: Repository size in KB as reported by GitHub.
|
|
6867
|
+
readOnly:
|
|
6868
|
+
type: boolean
|
|
6869
|
+
nullable: true
|
|
6870
|
+
description: >
|
|
6871
|
+
True when the GitHub App installation lacks push access to this repo
|
|
6872
|
+
(read-only). Read-only repos are rejected during sync because readiness
|
|
6873
|
+
fixes require write access.
|
|
6874
|
+
ineligibleReason:
|
|
6875
|
+
type: string
|
|
6876
|
+
nullable: true
|
|
6877
|
+
description: >
|
|
6878
|
+
Set when this repo was skipped during sync due to an eligibility check.
|
|
6879
|
+
The frontend should display this as an inline explanation (e.g. "This repo is archived").
|
|
6880
|
+
eligibilityStatus:
|
|
6881
|
+
type: string
|
|
6882
|
+
enum: [eligible, ineligible]
|
|
6883
|
+
nullable: true
|
|
6884
|
+
description: >
|
|
6885
|
+
Language-based eligibility for Agentic-Foundation readiness analysis (issue #44).
|
|
6886
|
+
`ineligible` repos (no supported stack) render read-only/orange in the AF list with
|
|
6887
|
+
no analyze/score/fix actions. Mixed monorepos with a supported secondary stack are
|
|
6888
|
+
`eligible`. Distinct from `ineligibleReason`, which reflects the structural sync gate.
|
|
6889
|
+
eligibilityReason:
|
|
6890
|
+
type: string
|
|
6891
|
+
nullable: true
|
|
6892
|
+
description: >
|
|
6893
|
+
Human-readable explanation when `eligibilityStatus` is `ineligible`
|
|
6894
|
+
(e.g. "This repository's primary language (Python) is not supported in v1").
|
|
6895
|
+
primaryStack:
|
|
6896
|
+
type: string
|
|
6897
|
+
nullable: true
|
|
6898
|
+
description: >
|
|
6899
|
+
Dominant supported stack (by GitHub language bytes), one of
|
|
6900
|
+
backend_jvm | ios_app | web_spa | backend_go | backend_python. Null for ineligible repos.
|
|
6901
|
+
secondaryStack:
|
|
6902
|
+
type: string
|
|
6903
|
+
nullable: true
|
|
6904
|
+
description: Second supported stack for a multi-stack repo, or null.
|
|
6905
|
+
supportedStacks:
|
|
6906
|
+
type: array
|
|
6907
|
+
nullable: true
|
|
6908
|
+
items:
|
|
6909
|
+
type: string
|
|
6910
|
+
description: >
|
|
6911
|
+
All supported stacks detected for the repo (ordered, primary first). Empty/null
|
|
6912
|
+
when no supported stack is present. Drives multi-stack scanning and the orange
|
|
6913
|
+
mixed-monorepo box in the AF UI.
|
|
6914
|
+
|
|
6915
|
+
RepoEligibilityConfigDto:
|
|
6916
|
+
type: object
|
|
6917
|
+
description: Resolved repo-sync eligibility gate (defaults or effective). All fields present.
|
|
6918
|
+
required: [excludeArchived, excludeForks, maxRepoSizeKb, maxReposPerWorkspace]
|
|
6919
|
+
properties:
|
|
6920
|
+
excludeArchived:
|
|
6921
|
+
type: boolean
|
|
6922
|
+
description: Skip archived repos during GitHub repo sync.
|
|
6923
|
+
excludeForks:
|
|
6924
|
+
type: boolean
|
|
6925
|
+
description: Skip forked repos. Forks are included by default.
|
|
6926
|
+
maxRepoSizeKb:
|
|
6927
|
+
type: integer
|
|
6928
|
+
description: Max repo size in KB (GitHub-reported). 0 = no limit.
|
|
6929
|
+
maxReposPerWorkspace:
|
|
6930
|
+
type: integer
|
|
6931
|
+
description: Max repos materialized per workspace per sync. 0 = no limit.
|
|
6932
|
+
|
|
6933
|
+
RepoEligibilityOverridesDto:
|
|
6934
|
+
type: object
|
|
6935
|
+
additionalProperties: false
|
|
6936
|
+
description: >
|
|
6937
|
+
Per-workspace overrides for the repo-sync eligibility gate. Any field present wins over the
|
|
6938
|
+
global default; omit a field to inherit the default. An empty object clears all overrides.
|
|
6939
|
+
properties:
|
|
6940
|
+
excludeArchived:
|
|
6941
|
+
type: boolean
|
|
6942
|
+
nullable: true
|
|
6943
|
+
excludeForks:
|
|
6944
|
+
type: boolean
|
|
6945
|
+
nullable: true
|
|
6946
|
+
maxRepoSizeKb:
|
|
6947
|
+
type: integer
|
|
6948
|
+
minimum: 0
|
|
6949
|
+
nullable: true
|
|
6950
|
+
maxReposPerWorkspace:
|
|
6951
|
+
type: integer
|
|
6952
|
+
minimum: 0
|
|
6953
|
+
nullable: true
|
|
6954
|
+
|
|
6955
|
+
WorkspaceRepoEligibilityDto:
|
|
6956
|
+
type: object
|
|
6957
|
+
required: [defaults, overrides, effective, canEditUnrestricted]
|
|
6958
|
+
properties:
|
|
6959
|
+
defaults:
|
|
6960
|
+
$ref: "#/components/schemas/RepoEligibilityConfigDto"
|
|
6961
|
+
overrides:
|
|
6962
|
+
$ref: "#/components/schemas/RepoEligibilityOverridesDto"
|
|
6963
|
+
effective:
|
|
6964
|
+
$ref: "#/components/schemas/RepoEligibilityConfigDto"
|
|
6965
|
+
canEditUnrestricted:
|
|
6966
|
+
type: boolean
|
|
6967
|
+
description: True when the caller is a platform admin (may set any value, incl. raising caps).
|
|
6747
6968
|
|
|
6748
6969
|
GithubMissingPermissionDto:
|
|
6749
6970
|
type: object
|
|
@@ -7772,6 +7993,33 @@ components:
|
|
|
7772
7993
|
nullable: true
|
|
7773
7994
|
enum: [github_removed, installation_disconnected, installation_replaced, superseded]
|
|
7774
7995
|
description: Why the repo was archived. Only present when `archivedAt` is set.
|
|
7996
|
+
eligibilityStatus:
|
|
7997
|
+
type: string
|
|
7998
|
+
enum: [eligible, ineligible]
|
|
7999
|
+
nullable: true
|
|
8000
|
+
description: >
|
|
8001
|
+
Language-based eligibility for Agentic-Foundation analysis (#44). `ineligible` repos
|
|
8002
|
+
(no v1-supported stack) render read-only/orange in the AF list with no analyze/score/fix
|
|
8003
|
+
actions; the server also rejects analyze requests for them. Null until the first
|
|
8004
|
+
sync/scan computes it.
|
|
8005
|
+
eligibilityReason:
|
|
8006
|
+
type: string
|
|
8007
|
+
nullable: true
|
|
8008
|
+
description: Human-readable explanation when `eligibilityStatus` is `ineligible`.
|
|
8009
|
+
primaryStack:
|
|
8010
|
+
type: string
|
|
8011
|
+
nullable: true
|
|
8012
|
+
description: Dominant supported stack — backend_jvm | ios_app | web_spa | backend_go | backend_python. Null when ineligible/uncomputed.
|
|
8013
|
+
secondaryStack:
|
|
8014
|
+
type: string
|
|
8015
|
+
nullable: true
|
|
8016
|
+
description: Second supported stack for a multi-stack repo, or null.
|
|
8017
|
+
supportedStacks:
|
|
8018
|
+
type: array
|
|
8019
|
+
nullable: true
|
|
8020
|
+
items:
|
|
8021
|
+
type: string
|
|
8022
|
+
description: All supported stacks detected (ordered, primary first). Empty/null when none.
|
|
7775
8023
|
|
|
7776
8024
|
RepoReadinessScoreDetailDto:
|
|
7777
8025
|
type: object
|
|
@@ -8846,18 +9094,29 @@ components:
|
|
|
8846
9094
|
- readiness.scan_completed
|
|
8847
9095
|
- readiness.scan_failed
|
|
8848
9096
|
- readiness.scan_partial
|
|
8849
|
-
-
|
|
8850
|
-
-
|
|
8851
|
-
-
|
|
8852
|
-
-
|
|
8853
|
-
- config.cursor.platform_key_disabled
|
|
8854
|
-
- config.claude.added
|
|
8855
|
-
- config.claude.updated
|
|
8856
|
-
- config.claude.removed
|
|
8857
|
-
- config.agent_execution.provider_changed
|
|
9097
|
+
- integrations.agent_execution.provider_changed
|
|
9098
|
+
- integrations.repo_eligibility.overrides_changed
|
|
9099
|
+
- integrations.cursor.platform_key_enabled
|
|
9100
|
+
- integrations.cursor.platform_key_disabled
|
|
8858
9101
|
- member.invited
|
|
8859
9102
|
- member.role_changed
|
|
8860
9103
|
- member.removed
|
|
9104
|
+
- repo.sync_skipped
|
|
9105
|
+
- integrations.cursor.execution_key.added
|
|
9106
|
+
- integrations.cursor.execution_key.updated
|
|
9107
|
+
- integrations.cursor.execution_key.removed
|
|
9108
|
+
- integrations.cursor.execution_key.check_failed
|
|
9109
|
+
- integrations.cursor.admin_key.added
|
|
9110
|
+
- integrations.cursor.admin_key.updated
|
|
9111
|
+
- integrations.cursor.admin_key.removed
|
|
9112
|
+
- integrations.claude.execution_key.added
|
|
9113
|
+
- integrations.claude.execution_key.updated
|
|
9114
|
+
- integrations.claude.execution_key.removed
|
|
9115
|
+
- integrations.claude.execution_key.check_failed
|
|
9116
|
+
- integrations.claude.admin_key.added
|
|
9117
|
+
- integrations.claude.admin_key.updated
|
|
9118
|
+
- integrations.claude.admin_key.removed
|
|
9119
|
+
- readiness.scan_precheck_failed
|
|
8861
9120
|
|
|
8862
9121
|
ActivityLogActorDto:
|
|
8863
9122
|
type: object
|
package/package.json
CHANGED
package/src/generated/openapi.ts
CHANGED
|
@@ -1550,6 +1550,30 @@ export interface paths {
|
|
|
1550
1550
|
patch?: never;
|
|
1551
1551
|
trace?: never;
|
|
1552
1552
|
};
|
|
1553
|
+
"/workspaces/{workspaceId}/repo-eligibility": {
|
|
1554
|
+
parameters: {
|
|
1555
|
+
query?: never;
|
|
1556
|
+
header?: never;
|
|
1557
|
+
path?: never;
|
|
1558
|
+
cookie?: never;
|
|
1559
|
+
};
|
|
1560
|
+
/**
|
|
1561
|
+
* Get repo-sync eligibility gate (defaults + per-workspace overrides)
|
|
1562
|
+
* @description Returns the effective repo-sync eligibility gate (archived / fork / size / count) for the workspace: the global `defaults`, any per-workspace `overrides`, the merged `effective` values, and whether the caller can edit without platform-admin (`canEditUnrestricted`). Member-level read access.
|
|
1563
|
+
*/
|
|
1564
|
+
get: operations["getWorkspaceRepoEligibility"];
|
|
1565
|
+
/**
|
|
1566
|
+
* Set per-workspace repo-sync eligibility overrides
|
|
1567
|
+
* @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.
|
|
1568
|
+
*/
|
|
1569
|
+
put: operations["putWorkspaceRepoEligibility"];
|
|
1570
|
+
post?: never;
|
|
1571
|
+
delete?: never;
|
|
1572
|
+
options?: never;
|
|
1573
|
+
head?: never;
|
|
1574
|
+
patch?: never;
|
|
1575
|
+
trace?: never;
|
|
1576
|
+
};
|
|
1553
1577
|
"/workspaces/{workspaceId}/readiness/cursor-key-usage": {
|
|
1554
1578
|
parameters: {
|
|
1555
1579
|
query?: never;
|
|
@@ -2134,6 +2158,13 @@ export interface components {
|
|
|
2134
2158
|
hasAnalyticsToken: boolean;
|
|
2135
2159
|
/** @description Whether the Claude Code execution key is stored. If false and `claudePlatformKeyEnabled` is true in `WorkspaceConfigDto`, the platform key will be used for readiness runs (additional cost applies). */
|
|
2136
2160
|
hasExecutionToken: boolean;
|
|
2161
|
+
/**
|
|
2162
|
+
* @description Kind of stored insights credential (derived from the active plan's key). `admin` for Team Console Admin keys (`sk-ant-admin…`); `analytics` for Enterprise Analytics keys.
|
|
2163
|
+
* @enum {string}
|
|
2164
|
+
*/
|
|
2165
|
+
insightsCredentialKind?: "admin" | "analytics" | "unknown";
|
|
2166
|
+
/** @description Masked preview of the stored insights key (prefix + last four characters). Never includes the full secret. */
|
|
2167
|
+
insightsTokenHint?: string;
|
|
2137
2168
|
};
|
|
2138
2169
|
/**
|
|
2139
2170
|
* @description The agent execution account used for Agentic Foundation runs (readiness scanner + fix queue). Exactly one is active per workspace.
|
|
@@ -2752,6 +2783,56 @@ export interface components {
|
|
|
2752
2783
|
* @description Last push or metadata update from GitHub when available.
|
|
2753
2784
|
*/
|
|
2754
2785
|
updatedAt?: string | null;
|
|
2786
|
+
/** @description True when the repository is archived (read-only on GitHub). */
|
|
2787
|
+
archived?: boolean | null;
|
|
2788
|
+
/** @description True when the repository is a fork of another repository. */
|
|
2789
|
+
fork?: boolean | null;
|
|
2790
|
+
/** @description True when the repository is disabled on GitHub. */
|
|
2791
|
+
disabled?: boolean | null;
|
|
2792
|
+
/** @description Repository size in KB as reported by GitHub. */
|
|
2793
|
+
size?: number | null;
|
|
2794
|
+
/** @description True when the GitHub App installation lacks push access to this repo (read-only). Read-only repos are rejected during sync because readiness fixes require write access. */
|
|
2795
|
+
readOnly?: boolean | null;
|
|
2796
|
+
/** @description Set when this repo was skipped during sync due to an eligibility check. The frontend should display this as an inline explanation (e.g. "This repo is archived"). */
|
|
2797
|
+
ineligibleReason?: string | null;
|
|
2798
|
+
/**
|
|
2799
|
+
* @description Language-based eligibility for Agentic-Foundation readiness analysis (issue #44). `ineligible` repos (no supported stack) render read-only/orange in the AF list with no analyze/score/fix actions. Mixed monorepos with a supported secondary stack are `eligible`. Distinct from `ineligibleReason`, which reflects the structural sync gate.
|
|
2800
|
+
* @enum {string|null}
|
|
2801
|
+
*/
|
|
2802
|
+
eligibilityStatus?: "eligible" | "ineligible" | null;
|
|
2803
|
+
/** @description Human-readable explanation when `eligibilityStatus` is `ineligible` (e.g. "This repository's primary language (Python) is not supported in v1"). */
|
|
2804
|
+
eligibilityReason?: string | null;
|
|
2805
|
+
/** @description Dominant supported stack (by GitHub language bytes), one of backend_jvm | ios_app | web_spa | backend_go | backend_python. Null for ineligible repos. */
|
|
2806
|
+
primaryStack?: string | null;
|
|
2807
|
+
/** @description Second supported stack for a multi-stack repo, or null. */
|
|
2808
|
+
secondaryStack?: string | null;
|
|
2809
|
+
/** @description All supported stacks detected for the repo (ordered, primary first). Empty/null when no supported stack is present. Drives multi-stack scanning and the orange mixed-monorepo box in the AF UI. */
|
|
2810
|
+
supportedStacks?: string[] | null;
|
|
2811
|
+
};
|
|
2812
|
+
/** @description Resolved repo-sync eligibility gate (defaults or effective). All fields present. */
|
|
2813
|
+
RepoEligibilityConfigDto: {
|
|
2814
|
+
/** @description Skip archived repos during GitHub repo sync. */
|
|
2815
|
+
excludeArchived: boolean;
|
|
2816
|
+
/** @description Skip forked repos. Forks are included by default. */
|
|
2817
|
+
excludeForks: boolean;
|
|
2818
|
+
/** @description Max repo size in KB (GitHub-reported). 0 = no limit. */
|
|
2819
|
+
maxRepoSizeKb: number;
|
|
2820
|
+
/** @description Max repos materialized per workspace per sync. 0 = no limit. */
|
|
2821
|
+
maxReposPerWorkspace: number;
|
|
2822
|
+
};
|
|
2823
|
+
/** @description Per-workspace overrides for the repo-sync eligibility gate. Any field present wins over the global default; omit a field to inherit the default. An empty object clears all overrides. */
|
|
2824
|
+
RepoEligibilityOverridesDto: {
|
|
2825
|
+
excludeArchived?: boolean | null;
|
|
2826
|
+
excludeForks?: boolean | null;
|
|
2827
|
+
maxRepoSizeKb?: number | null;
|
|
2828
|
+
maxReposPerWorkspace?: number | null;
|
|
2829
|
+
};
|
|
2830
|
+
WorkspaceRepoEligibilityDto: {
|
|
2831
|
+
defaults: components["schemas"]["RepoEligibilityConfigDto"];
|
|
2832
|
+
overrides: components["schemas"]["RepoEligibilityOverridesDto"];
|
|
2833
|
+
effective: components["schemas"]["RepoEligibilityConfigDto"];
|
|
2834
|
+
/** @description True when the caller is a platform admin (may set any value, incl. raising caps). */
|
|
2835
|
+
canEditUnrestricted: boolean;
|
|
2755
2836
|
};
|
|
2756
2837
|
GithubMissingPermissionDto: {
|
|
2757
2838
|
/** @description GitHub App permission key (e.g. contents, pull_requests). */
|
|
@@ -3244,6 +3325,19 @@ export interface components {
|
|
|
3244
3325
|
* @enum {string|null}
|
|
3245
3326
|
*/
|
|
3246
3327
|
archivedReason?: "github_removed" | "installation_disconnected" | "installation_replaced" | "superseded" | null;
|
|
3328
|
+
/**
|
|
3329
|
+
* @description Language-based eligibility for Agentic-Foundation analysis (#44). `ineligible` repos (no v1-supported stack) render read-only/orange in the AF list with no analyze/score/fix actions; the server also rejects analyze requests for them. Null until the first sync/scan computes it.
|
|
3330
|
+
* @enum {string|null}
|
|
3331
|
+
*/
|
|
3332
|
+
eligibilityStatus?: "eligible" | "ineligible" | null;
|
|
3333
|
+
/** @description Human-readable explanation when `eligibilityStatus` is `ineligible`. */
|
|
3334
|
+
eligibilityReason?: string | null;
|
|
3335
|
+
/** @description Dominant supported stack — backend_jvm | ios_app | web_spa | backend_go | backend_python. Null when ineligible/uncomputed. */
|
|
3336
|
+
primaryStack?: string | null;
|
|
3337
|
+
/** @description Second supported stack for a multi-stack repo, or null. */
|
|
3338
|
+
secondaryStack?: string | null;
|
|
3339
|
+
/** @description All supported stacks detected (ordered, primary first). Empty/null when none. */
|
|
3340
|
+
supportedStacks?: string[] | null;
|
|
3247
3341
|
};
|
|
3248
3342
|
/** @description Single-repo detail response. Identical to RepoReadinessScoreDto except dimensions use DimensionScoreDetailDto (criteriaDetails required per dimension). */
|
|
3249
3343
|
RepoReadinessScoreDetailDto: {
|
|
@@ -3705,7 +3799,7 @@ export interface components {
|
|
|
3705
3799
|
* @description Type of workspace lifecycle event.
|
|
3706
3800
|
* @enum {string}
|
|
3707
3801
|
*/
|
|
3708
|
-
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" | "
|
|
3802
|
+
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.cursor.platform_key_enabled" | "integrations.cursor.platform_key_disabled" | "member.invited" | "member.role_changed" | "member.removed" | "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";
|
|
3709
3803
|
ActivityLogActorDto: {
|
|
3710
3804
|
/** Format: uuid */
|
|
3711
3805
|
userId: string;
|
|
@@ -4076,6 +4170,9 @@ export type CreateWorkspaceBodyDto = components['schemas']['CreateWorkspaceBodyD
|
|
|
4076
4170
|
export type CompanyProfileDto = components['schemas']['CompanyProfileDto'];
|
|
4077
4171
|
export type GithubAccountDto = components['schemas']['GithubAccountDto'];
|
|
4078
4172
|
export type GithubInstalledRepoDto = components['schemas']['GithubInstalledRepoDto'];
|
|
4173
|
+
export type RepoEligibilityConfigDto = components['schemas']['RepoEligibilityConfigDto'];
|
|
4174
|
+
export type RepoEligibilityOverridesDto = components['schemas']['RepoEligibilityOverridesDto'];
|
|
4175
|
+
export type WorkspaceRepoEligibilityDto = components['schemas']['WorkspaceRepoEligibilityDto'];
|
|
4079
4176
|
export type GithubMissingPermissionDto = components['schemas']['GithubMissingPermissionDto'];
|
|
4080
4177
|
export type GithubInstallationSummaryDto = components['schemas']['GithubInstallationSummaryDto'];
|
|
4081
4178
|
export type GithubPendingApprovalDto = components['schemas']['GithubPendingApprovalDto'];
|
|
@@ -7261,6 +7358,10 @@ export interface operations {
|
|
|
7261
7358
|
offset?: components["parameters"]["PaginationOffset"];
|
|
7262
7359
|
/** @description Sort direction. */
|
|
7263
7360
|
order?: components["parameters"]["PaginationOrder"];
|
|
7361
|
+
/** @description Server-side sort column (the activity "5 W's"). Combined with `order` (asc/desc). Defaults to `when` (occurredAt). `occurredAt`/`id` is always the tiebreaker. */
|
|
7362
|
+
sort?: "when" | "who" | "what" | "why" | "where";
|
|
7363
|
+
/** @description Coarse product-area grouping filter (#156). `integration` = GitHub + AI-tool key events; `agentic_foundation` = repos, readiness scans, fixes; `workspace_team` = members + HRIS. Omit (or pass `all`) for every area. */
|
|
7364
|
+
productArea?: "integration" | "agentic_foundation" | "workspace_team" | "all";
|
|
7264
7365
|
/** @description Filter to a specific event type. */
|
|
7265
7366
|
eventType?: components["schemas"]["ActivityLogEventTypeDto"];
|
|
7266
7367
|
/** @description Filter to events performed by a specific user (UUID). */
|
|
@@ -8204,6 +8305,80 @@ export interface operations {
|
|
|
8204
8305
|
403: components["responses"]["Forbidden"];
|
|
8205
8306
|
};
|
|
8206
8307
|
};
|
|
8308
|
+
getWorkspaceRepoEligibility: {
|
|
8309
|
+
parameters: {
|
|
8310
|
+
query?: never;
|
|
8311
|
+
header?: never;
|
|
8312
|
+
path: {
|
|
8313
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
8314
|
+
};
|
|
8315
|
+
cookie?: never;
|
|
8316
|
+
};
|
|
8317
|
+
requestBody?: never;
|
|
8318
|
+
responses: {
|
|
8319
|
+
/** @description Effective repo-eligibility configuration */
|
|
8320
|
+
200: {
|
|
8321
|
+
headers: {
|
|
8322
|
+
[name: string]: unknown;
|
|
8323
|
+
};
|
|
8324
|
+
content: {
|
|
8325
|
+
"application/json": components["schemas"]["WorkspaceRepoEligibilityDto"];
|
|
8326
|
+
};
|
|
8327
|
+
};
|
|
8328
|
+
401: components["responses"]["Unauthorized"];
|
|
8329
|
+
403: components["responses"]["Forbidden"];
|
|
8330
|
+
};
|
|
8331
|
+
};
|
|
8332
|
+
putWorkspaceRepoEligibility: {
|
|
8333
|
+
parameters: {
|
|
8334
|
+
query?: never;
|
|
8335
|
+
header?: never;
|
|
8336
|
+
path: {
|
|
8337
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
8338
|
+
};
|
|
8339
|
+
cookie?: never;
|
|
8340
|
+
};
|
|
8341
|
+
requestBody: {
|
|
8342
|
+
content: {
|
|
8343
|
+
"application/json": {
|
|
8344
|
+
overrides: components["schemas"]["RepoEligibilityOverridesDto"];
|
|
8345
|
+
};
|
|
8346
|
+
};
|
|
8347
|
+
};
|
|
8348
|
+
responses: {
|
|
8349
|
+
/** @description Overrides saved */
|
|
8350
|
+
200: {
|
|
8351
|
+
headers: {
|
|
8352
|
+
[name: string]: unknown;
|
|
8353
|
+
};
|
|
8354
|
+
content: {
|
|
8355
|
+
"application/json": {
|
|
8356
|
+
overrides: components["schemas"]["RepoEligibilityOverridesDto"];
|
|
8357
|
+
effective: components["schemas"]["RepoEligibilityConfigDto"];
|
|
8358
|
+
};
|
|
8359
|
+
};
|
|
8360
|
+
};
|
|
8361
|
+
/** @description Invalid request body */
|
|
8362
|
+
400: {
|
|
8363
|
+
headers: {
|
|
8364
|
+
[name: string]: unknown;
|
|
8365
|
+
};
|
|
8366
|
+
content: {
|
|
8367
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
8368
|
+
};
|
|
8369
|
+
};
|
|
8370
|
+
401: components["responses"]["Unauthorized"];
|
|
8371
|
+
/** @description Forbidden, or a workspace-admin value exceeds a platform limit (`repo_eligibility_bound_exceeded`) */
|
|
8372
|
+
403: {
|
|
8373
|
+
headers: {
|
|
8374
|
+
[name: string]: unknown;
|
|
8375
|
+
};
|
|
8376
|
+
content: {
|
|
8377
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
8378
|
+
};
|
|
8379
|
+
};
|
|
8380
|
+
};
|
|
8381
|
+
};
|
|
8207
8382
|
getCursorKeyUsage: {
|
|
8208
8383
|
parameters: {
|
|
8209
8384
|
query?: never;
|