@thinkai/tai-api-contract 2.30.1 → 2.31.0-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.31.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}/...`.
@@ -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.
@@ -4003,6 +4022,79 @@ paths:
4003
4022
  "403":
4004
4023
  $ref: "#/components/responses/Forbidden"
4005
4024
 
4025
+ /workspaces/{workspaceId}/repo-eligibility:
4026
+ get:
4027
+ tags: [RepositoryReadiness]
4028
+ summary: Get repo-sync eligibility gate (defaults + per-workspace overrides)
4029
+ description: >
4030
+ Returns the effective repo-sync eligibility gate (archived / fork / size / count) for the
4031
+ workspace: the global `defaults`, any per-workspace `overrides`, the merged `effective`
4032
+ values, and whether the caller can edit without platform-admin (`canEditUnrestricted`).
4033
+ Member-level read access.
4034
+ operationId: getWorkspaceRepoEligibility
4035
+ parameters:
4036
+ - $ref: "#/components/parameters/WorkspaceId"
4037
+ responses:
4038
+ "200":
4039
+ description: Effective repo-eligibility configuration
4040
+ content:
4041
+ application/json:
4042
+ schema:
4043
+ $ref: "#/components/schemas/WorkspaceRepoEligibilityDto"
4044
+ "401":
4045
+ $ref: "#/components/responses/Unauthorized"
4046
+ "403":
4047
+ $ref: "#/components/responses/Forbidden"
4048
+ put:
4049
+ tags: [RepositoryReadiness]
4050
+ summary: Set per-workspace repo-sync eligibility overrides
4051
+ description: >
4052
+ Set (or clear, with an empty `overrides`) the per-workspace repo-sync eligibility overrides.
4053
+ **Platform admins** may set any value (raise caps, `0` = unlimited, include archived/forks).
4054
+ **Workspace admins** may only make the gate *more restrictive* than the platform defaults
4055
+ (lower caps, exclude archived/forks) — exceeding a platform limit returns `403`
4056
+ (`repo_eligibility_bound_exceeded`). Requires workspace admin or platform admin.
4057
+ operationId: putWorkspaceRepoEligibility
4058
+ parameters:
4059
+ - $ref: "#/components/parameters/WorkspaceId"
4060
+ requestBody:
4061
+ required: true
4062
+ content:
4063
+ application/json:
4064
+ schema:
4065
+ type: object
4066
+ required: [overrides]
4067
+ properties:
4068
+ overrides:
4069
+ $ref: "#/components/schemas/RepoEligibilityOverridesDto"
4070
+ responses:
4071
+ "200":
4072
+ description: Overrides saved
4073
+ content:
4074
+ application/json:
4075
+ schema:
4076
+ type: object
4077
+ required: [overrides, effective]
4078
+ properties:
4079
+ overrides:
4080
+ $ref: "#/components/schemas/RepoEligibilityOverridesDto"
4081
+ effective:
4082
+ $ref: "#/components/schemas/RepoEligibilityConfigDto"
4083
+ "400":
4084
+ description: Invalid request body
4085
+ content:
4086
+ application/json:
4087
+ schema:
4088
+ $ref: "#/components/schemas/ErrorMessageDto"
4089
+ "401":
4090
+ $ref: "#/components/responses/Unauthorized"
4091
+ "403":
4092
+ description: Forbidden, or a workspace-admin value exceeds a platform limit (`repo_eligibility_bound_exceeded`)
4093
+ content:
4094
+ application/json:
4095
+ schema:
4096
+ $ref: "#/components/schemas/ErrorMessageDto"
4097
+
4006
4098
  /workspaces/{workspaceId}/readiness/cursor-key-usage:
4007
4099
  get:
4008
4100
  tags: [RepositoryReadiness]
@@ -6704,6 +6796,123 @@ components:
6704
6796
  format: date-time
6705
6797
  nullable: true
6706
6798
  description: Last push or metadata update from GitHub when available.
6799
+ archived:
6800
+ type: boolean
6801
+ nullable: true
6802
+ description: True when the repository is archived (read-only on GitHub).
6803
+ fork:
6804
+ type: boolean
6805
+ nullable: true
6806
+ description: True when the repository is a fork of another repository.
6807
+ disabled:
6808
+ type: boolean
6809
+ nullable: true
6810
+ description: True when the repository is disabled on GitHub.
6811
+ size:
6812
+ type: integer
6813
+ nullable: true
6814
+ description: Repository size in KB as reported by GitHub.
6815
+ readOnly:
6816
+ type: boolean
6817
+ nullable: true
6818
+ description: >
6819
+ True when the GitHub App installation lacks push access to this repo
6820
+ (read-only). Read-only repos are rejected during sync because readiness
6821
+ fixes require write access.
6822
+ ineligibleReason:
6823
+ type: string
6824
+ nullable: true
6825
+ description: >
6826
+ Set when this repo was skipped during sync due to an eligibility check.
6827
+ The frontend should display this as an inline explanation (e.g. "This repo is archived").
6828
+ eligibilityStatus:
6829
+ type: string
6830
+ enum: [eligible, ineligible]
6831
+ nullable: true
6832
+ description: >
6833
+ Language-based eligibility for Agentic-Foundation readiness analysis (issue #44).
6834
+ `ineligible` repos (no supported stack) render read-only/orange in the AF list with
6835
+ no analyze/score/fix actions. Mixed monorepos with a supported secondary stack are
6836
+ `eligible`. Distinct from `ineligibleReason`, which reflects the structural sync gate.
6837
+ eligibilityReason:
6838
+ type: string
6839
+ nullable: true
6840
+ description: >
6841
+ Human-readable explanation when `eligibilityStatus` is `ineligible`
6842
+ (e.g. "This repository's primary language (Python) is not supported in v1").
6843
+ primaryStack:
6844
+ type: string
6845
+ nullable: true
6846
+ description: >
6847
+ Dominant supported stack (by GitHub language bytes), one of
6848
+ backend_jvm | ios_app | web_spa | backend_go. Null for ineligible repos.
6849
+ secondaryStack:
6850
+ type: string
6851
+ nullable: true
6852
+ description: Second supported stack for a multi-stack repo, or null.
6853
+ supportedStacks:
6854
+ type: array
6855
+ nullable: true
6856
+ items:
6857
+ type: string
6858
+ description: >
6859
+ All supported stacks detected for the repo (ordered, primary first). Empty/null
6860
+ when no supported stack is present. Drives multi-stack scanning and the orange
6861
+ mixed-monorepo box in the AF UI.
6862
+
6863
+ RepoEligibilityConfigDto:
6864
+ type: object
6865
+ description: Resolved repo-sync eligibility gate (defaults or effective). All fields present.
6866
+ required: [excludeArchived, excludeForks, maxRepoSizeKb, maxReposPerWorkspace]
6867
+ properties:
6868
+ excludeArchived:
6869
+ type: boolean
6870
+ description: Skip archived repos during GitHub repo sync.
6871
+ excludeForks:
6872
+ type: boolean
6873
+ description: Skip forked repos. Forks are included by default.
6874
+ maxRepoSizeKb:
6875
+ type: integer
6876
+ description: Max repo size in KB (GitHub-reported). 0 = no limit.
6877
+ maxReposPerWorkspace:
6878
+ type: integer
6879
+ description: Max repos materialized per workspace per sync. 0 = no limit.
6880
+
6881
+ RepoEligibilityOverridesDto:
6882
+ type: object
6883
+ additionalProperties: false
6884
+ description: >
6885
+ Per-workspace overrides for the repo-sync eligibility gate. Any field present wins over the
6886
+ global default; omit a field to inherit the default. An empty object clears all overrides.
6887
+ properties:
6888
+ excludeArchived:
6889
+ type: boolean
6890
+ nullable: true
6891
+ excludeForks:
6892
+ type: boolean
6893
+ nullable: true
6894
+ maxRepoSizeKb:
6895
+ type: integer
6896
+ minimum: 0
6897
+ nullable: true
6898
+ maxReposPerWorkspace:
6899
+ type: integer
6900
+ minimum: 0
6901
+ nullable: true
6902
+
6903
+ WorkspaceRepoEligibilityDto:
6904
+ type: object
6905
+ required: [defaults, overrides, effective, canEditUnrestricted]
6906
+ properties:
6907
+ defaults:
6908
+ $ref: "#/components/schemas/RepoEligibilityConfigDto"
6909
+ overrides:
6910
+ $ref: "#/components/schemas/RepoEligibilityOverridesDto"
6911
+ effective:
6912
+ $ref: "#/components/schemas/RepoEligibilityConfigDto"
6913
+ canEditUnrestricted:
6914
+ type: boolean
6915
+ description: True when the caller is a platform admin (may set any value, incl. raising caps).
6707
6916
 
6708
6917
  GithubMissingPermissionDto:
6709
6918
  type: object
@@ -7731,6 +7940,33 @@ components:
7731
7940
  nullable: true
7732
7941
  enum: [github_removed, installation_disconnected, installation_replaced, superseded]
7733
7942
  description: Why the repo was archived. Only present when `archivedAt` is set.
7943
+ eligibilityStatus:
7944
+ type: string
7945
+ enum: [eligible, ineligible]
7946
+ nullable: true
7947
+ description: >
7948
+ Language-based eligibility for Agentic-Foundation analysis (#44). `ineligible` repos
7949
+ (no v1-supported stack) render read-only/orange in the AF list with no analyze/score/fix
7950
+ actions; the server also rejects analyze requests for them. Null until the first
7951
+ sync/scan computes it.
7952
+ eligibilityReason:
7953
+ type: string
7954
+ nullable: true
7955
+ description: Human-readable explanation when `eligibilityStatus` is `ineligible`.
7956
+ primaryStack:
7957
+ type: string
7958
+ nullable: true
7959
+ description: Dominant supported stack — backend_jvm | ios_app | web_spa | backend_go. Null when ineligible/uncomputed.
7960
+ secondaryStack:
7961
+ type: string
7962
+ nullable: true
7963
+ description: Second supported stack for a multi-stack repo, or null.
7964
+ supportedStacks:
7965
+ type: array
7966
+ nullable: true
7967
+ items:
7968
+ type: string
7969
+ description: All supported stacks detected (ordered, primary first). Empty/null when none.
7734
7970
 
7735
7971
  RepoReadinessScoreDetailDto:
7736
7972
  type: object
@@ -8805,18 +9041,29 @@ components:
8805
9041
  - readiness.scan_completed
8806
9042
  - readiness.scan_failed
8807
9043
  - readiness.scan_partial
8808
- - config.cursor.added
8809
- - config.cursor.updated
8810
- - config.cursor.removed
8811
- - config.cursor.platform_key_enabled
8812
- - config.cursor.platform_key_disabled
8813
- - config.claude.added
8814
- - config.claude.updated
8815
- - config.claude.removed
8816
- - config.agent_execution.provider_changed
9044
+ - integrations.agent_execution.provider_changed
9045
+ - integrations.repo_eligibility.overrides_changed
9046
+ - integrations.cursor.platform_key_enabled
9047
+ - integrations.cursor.platform_key_disabled
8817
9048
  - member.invited
8818
9049
  - member.role_changed
8819
9050
  - member.removed
9051
+ - repo.sync_skipped
9052
+ - integrations.cursor.execution_key.added
9053
+ - integrations.cursor.execution_key.updated
9054
+ - integrations.cursor.execution_key.removed
9055
+ - integrations.cursor.execution_key.check_failed
9056
+ - integrations.cursor.admin_key.added
9057
+ - integrations.cursor.admin_key.updated
9058
+ - integrations.cursor.admin_key.removed
9059
+ - integrations.claude.execution_key.added
9060
+ - integrations.claude.execution_key.updated
9061
+ - integrations.claude.execution_key.removed
9062
+ - integrations.claude.execution_key.check_failed
9063
+ - integrations.claude.admin_key.added
9064
+ - integrations.claude.admin_key.updated
9065
+ - integrations.claude.admin_key.removed
9066
+ - readiness.scan_precheck_failed
8820
9067
 
8821
9068
  ActivityLogActorDto:
8822
9069
  type: object
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkai/tai-api-contract",
3
- "version": "2.30.1",
3
+ "version": "2.31.0-pr.731.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1530,6 +1530,30 @@ export interface paths {
1530
1530
  patch?: never;
1531
1531
  trace?: never;
1532
1532
  };
1533
+ "/workspaces/{workspaceId}/repo-eligibility": {
1534
+ parameters: {
1535
+ query?: never;
1536
+ header?: never;
1537
+ path?: never;
1538
+ cookie?: never;
1539
+ };
1540
+ /**
1541
+ * Get repo-sync eligibility gate (defaults + per-workspace overrides)
1542
+ * @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.
1543
+ */
1544
+ get: operations["getWorkspaceRepoEligibility"];
1545
+ /**
1546
+ * Set per-workspace repo-sync eligibility overrides
1547
+ * @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.
1548
+ */
1549
+ put: operations["putWorkspaceRepoEligibility"];
1550
+ post?: never;
1551
+ delete?: never;
1552
+ options?: never;
1553
+ head?: never;
1554
+ patch?: never;
1555
+ trace?: never;
1556
+ };
1533
1557
  "/workspaces/{workspaceId}/readiness/cursor-key-usage": {
1534
1558
  parameters: {
1535
1559
  query?: never;
@@ -2732,6 +2756,56 @@ export interface components {
2732
2756
  * @description Last push or metadata update from GitHub when available.
2733
2757
  */
2734
2758
  updatedAt?: string | null;
2759
+ /** @description True when the repository is archived (read-only on GitHub). */
2760
+ archived?: boolean | null;
2761
+ /** @description True when the repository is a fork of another repository. */
2762
+ fork?: boolean | null;
2763
+ /** @description True when the repository is disabled on GitHub. */
2764
+ disabled?: boolean | null;
2765
+ /** @description Repository size in KB as reported by GitHub. */
2766
+ size?: number | null;
2767
+ /** @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. */
2768
+ readOnly?: boolean | null;
2769
+ /** @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"). */
2770
+ ineligibleReason?: string | null;
2771
+ /**
2772
+ * @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.
2773
+ * @enum {string|null}
2774
+ */
2775
+ eligibilityStatus?: "eligible" | "ineligible" | null;
2776
+ /** @description Human-readable explanation when `eligibilityStatus` is `ineligible` (e.g. "This repository's primary language (Python) is not supported in v1"). */
2777
+ eligibilityReason?: string | null;
2778
+ /** @description Dominant supported stack (by GitHub language bytes), one of backend_jvm | ios_app | web_spa | backend_go. Null for ineligible repos. */
2779
+ primaryStack?: string | null;
2780
+ /** @description Second supported stack for a multi-stack repo, or null. */
2781
+ secondaryStack?: string | null;
2782
+ /** @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. */
2783
+ supportedStacks?: string[] | null;
2784
+ };
2785
+ /** @description Resolved repo-sync eligibility gate (defaults or effective). All fields present. */
2786
+ RepoEligibilityConfigDto: {
2787
+ /** @description Skip archived repos during GitHub repo sync. */
2788
+ excludeArchived: boolean;
2789
+ /** @description Skip forked repos. Forks are included by default. */
2790
+ excludeForks: boolean;
2791
+ /** @description Max repo size in KB (GitHub-reported). 0 = no limit. */
2792
+ maxRepoSizeKb: number;
2793
+ /** @description Max repos materialized per workspace per sync. 0 = no limit. */
2794
+ maxReposPerWorkspace: number;
2795
+ };
2796
+ /** @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. */
2797
+ RepoEligibilityOverridesDto: {
2798
+ excludeArchived?: boolean | null;
2799
+ excludeForks?: boolean | null;
2800
+ maxRepoSizeKb?: number | null;
2801
+ maxReposPerWorkspace?: number | null;
2802
+ };
2803
+ WorkspaceRepoEligibilityDto: {
2804
+ defaults: components["schemas"]["RepoEligibilityConfigDto"];
2805
+ overrides: components["schemas"]["RepoEligibilityOverridesDto"];
2806
+ effective: components["schemas"]["RepoEligibilityConfigDto"];
2807
+ /** @description True when the caller is a platform admin (may set any value, incl. raising caps). */
2808
+ canEditUnrestricted: boolean;
2735
2809
  };
2736
2810
  GithubMissingPermissionDto: {
2737
2811
  /** @description GitHub App permission key (e.g. contents, pull_requests). */
@@ -3224,6 +3298,19 @@ export interface components {
3224
3298
  * @enum {string|null}
3225
3299
  */
3226
3300
  archivedReason?: "github_removed" | "installation_disconnected" | "installation_replaced" | "superseded" | null;
3301
+ /**
3302
+ * @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.
3303
+ * @enum {string|null}
3304
+ */
3305
+ eligibilityStatus?: "eligible" | "ineligible" | null;
3306
+ /** @description Human-readable explanation when `eligibilityStatus` is `ineligible`. */
3307
+ eligibilityReason?: string | null;
3308
+ /** @description Dominant supported stack — backend_jvm | ios_app | web_spa | backend_go. Null when ineligible/uncomputed. */
3309
+ primaryStack?: string | null;
3310
+ /** @description Second supported stack for a multi-stack repo, or null. */
3311
+ secondaryStack?: string | null;
3312
+ /** @description All supported stacks detected (ordered, primary first). Empty/null when none. */
3313
+ supportedStacks?: string[] | null;
3227
3314
  };
3228
3315
  /** @description Single-repo detail response. Identical to RepoReadinessScoreDto except dimensions use DimensionScoreDetailDto (criteriaDetails required per dimension). */
3229
3316
  RepoReadinessScoreDetailDto: {
@@ -3685,7 +3772,7 @@ export interface components {
3685
3772
  * @description Type of workspace lifecycle event.
3686
3773
  * @enum {string}
3687
3774
  */
3688
- 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";
3775
+ 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";
3689
3776
  ActivityLogActorDto: {
3690
3777
  /** Format: uuid */
3691
3778
  userId: string;
@@ -4056,6 +4143,9 @@ export type CreateWorkspaceBodyDto = components['schemas']['CreateWorkspaceBodyD
4056
4143
  export type CompanyProfileDto = components['schemas']['CompanyProfileDto'];
4057
4144
  export type GithubAccountDto = components['schemas']['GithubAccountDto'];
4058
4145
  export type GithubInstalledRepoDto = components['schemas']['GithubInstalledRepoDto'];
4146
+ export type RepoEligibilityConfigDto = components['schemas']['RepoEligibilityConfigDto'];
4147
+ export type RepoEligibilityOverridesDto = components['schemas']['RepoEligibilityOverridesDto'];
4148
+ export type WorkspaceRepoEligibilityDto = components['schemas']['WorkspaceRepoEligibilityDto'];
4059
4149
  export type GithubMissingPermissionDto = components['schemas']['GithubMissingPermissionDto'];
4060
4150
  export type GithubInstallationSummaryDto = components['schemas']['GithubInstallationSummaryDto'];
4061
4151
  export type GithubPendingApprovalDto = components['schemas']['GithubPendingApprovalDto'];
@@ -7241,6 +7331,10 @@ export interface operations {
7241
7331
  offset?: components["parameters"]["PaginationOffset"];
7242
7332
  /** @description Sort direction. */
7243
7333
  order?: components["parameters"]["PaginationOrder"];
7334
+ /** @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. */
7335
+ sort?: "when" | "who" | "what" | "why" | "where";
7336
+ /** @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. */
7337
+ productArea?: "integration" | "agentic_foundation" | "workspace_team" | "all";
7244
7338
  /** @description Filter to a specific event type. */
7245
7339
  eventType?: components["schemas"]["ActivityLogEventTypeDto"];
7246
7340
  /** @description Filter to events performed by a specific user (UUID). */
@@ -8129,6 +8223,80 @@ export interface operations {
8129
8223
  403: components["responses"]["Forbidden"];
8130
8224
  };
8131
8225
  };
8226
+ getWorkspaceRepoEligibility: {
8227
+ parameters: {
8228
+ query?: never;
8229
+ header?: never;
8230
+ path: {
8231
+ workspaceId: components["parameters"]["WorkspaceId"];
8232
+ };
8233
+ cookie?: never;
8234
+ };
8235
+ requestBody?: never;
8236
+ responses: {
8237
+ /** @description Effective repo-eligibility configuration */
8238
+ 200: {
8239
+ headers: {
8240
+ [name: string]: unknown;
8241
+ };
8242
+ content: {
8243
+ "application/json": components["schemas"]["WorkspaceRepoEligibilityDto"];
8244
+ };
8245
+ };
8246
+ 401: components["responses"]["Unauthorized"];
8247
+ 403: components["responses"]["Forbidden"];
8248
+ };
8249
+ };
8250
+ putWorkspaceRepoEligibility: {
8251
+ parameters: {
8252
+ query?: never;
8253
+ header?: never;
8254
+ path: {
8255
+ workspaceId: components["parameters"]["WorkspaceId"];
8256
+ };
8257
+ cookie?: never;
8258
+ };
8259
+ requestBody: {
8260
+ content: {
8261
+ "application/json": {
8262
+ overrides: components["schemas"]["RepoEligibilityOverridesDto"];
8263
+ };
8264
+ };
8265
+ };
8266
+ responses: {
8267
+ /** @description Overrides saved */
8268
+ 200: {
8269
+ headers: {
8270
+ [name: string]: unknown;
8271
+ };
8272
+ content: {
8273
+ "application/json": {
8274
+ overrides: components["schemas"]["RepoEligibilityOverridesDto"];
8275
+ effective: components["schemas"]["RepoEligibilityConfigDto"];
8276
+ };
8277
+ };
8278
+ };
8279
+ /** @description Invalid request body */
8280
+ 400: {
8281
+ headers: {
8282
+ [name: string]: unknown;
8283
+ };
8284
+ content: {
8285
+ "application/json": components["schemas"]["ErrorMessageDto"];
8286
+ };
8287
+ };
8288
+ 401: components["responses"]["Unauthorized"];
8289
+ /** @description Forbidden, or a workspace-admin value exceeds a platform limit (`repo_eligibility_bound_exceeded`) */
8290
+ 403: {
8291
+ headers: {
8292
+ [name: string]: unknown;
8293
+ };
8294
+ content: {
8295
+ "application/json": components["schemas"]["ErrorMessageDto"];
8296
+ };
8297
+ };
8298
+ };
8299
+ };
8132
8300
  getCursorKeyUsage: {
8133
8301
  parameters: {
8134
8302
  query?: never;