@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.
@@ -1,7 +1,7 @@
1
1
  openapi: 3.0.3
2
2
  info:
3
3
  title: ThinkAI API
4
- version: 2.30.1
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
- - config.cursor.added
8850
- - config.cursor.updated
8851
- - config.cursor.removed
8852
- - config.cursor.platform_key_enabled
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkai/tai-api-contract",
3
- "version": "2.31.0",
3
+ "version": "2.32.1-pr.731.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -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" | "config.cursor.added" | "config.cursor.updated" | "config.cursor.removed" | "config.cursor.platform_key_enabled" | "config.cursor.platform_key_disabled" | "config.claude.added" | "config.claude.updated" | "config.claude.removed" | "config.agent_execution.provider_changed" | "member.invited" | "member.role_changed" | "member.removed";
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;