@thinkai/tai-api-contract 2.29.0 → 3.1.0-pr.731.2

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.
@@ -855,6 +855,50 @@ export interface paths {
855
855
  patch?: never;
856
856
  trace?: never;
857
857
  };
858
+ "/workspaces/{workspaceId}/integrations/github-actions": {
859
+ parameters: {
860
+ query?: never;
861
+ header?: never;
862
+ path?: never;
863
+ cookie?: never;
864
+ };
865
+ /**
866
+ * GitHub Actions CI integration status for workspace
867
+ * @description Returns whether the workspace has explicitly enabled GitHub Actions CI metrics. Requires GitHub App (source control) to be connected; does not use workspace `sources` PATs. When GitHub is not connected, returns 200 with `githubConnected: false` and `enabled: false`.
868
+ */
869
+ get: operations["getWorkspaceGithubActionsIntegrationStatus"];
870
+ put?: never;
871
+ post?: never;
872
+ /**
873
+ * Disable GitHub Actions CI integration
874
+ * @description Disables GitHub Actions CI opt-in for the workspace. Does not disconnect GitHub source control. Idempotent: returns 204 when already disabled.
875
+ */
876
+ delete: operations["deleteWorkspaceGithubActionsIntegration"];
877
+ options?: never;
878
+ head?: never;
879
+ patch?: never;
880
+ trace?: never;
881
+ };
882
+ "/workspaces/{workspaceId}/integrations/github-actions/enable": {
883
+ parameters: {
884
+ query?: never;
885
+ header?: never;
886
+ path?: never;
887
+ cookie?: never;
888
+ };
889
+ get?: never;
890
+ put?: never;
891
+ /**
892
+ * Enable GitHub Actions CI integration
893
+ * @description Opts the workspace into GitHub Actions CI metrics using the existing GitHub App installation (no separate OAuth or PAT). Returns `outcome: needs_github` when source control is not connected, or `outcome: permissions_missing` when the installation lacks Actions read permission.
894
+ */
895
+ post: operations["postWorkspaceGithubActionsIntegrationEnable"];
896
+ delete?: never;
897
+ options?: never;
898
+ head?: never;
899
+ patch?: never;
900
+ trace?: never;
901
+ };
858
902
  "/integrations/github/webhook": {
859
903
  parameters: {
860
904
  query?: never;
@@ -1485,6 +1529,30 @@ export interface paths {
1485
1529
  patch?: never;
1486
1530
  trace?: never;
1487
1531
  };
1532
+ "/workspaces/{workspaceId}/repo-eligibility": {
1533
+ parameters: {
1534
+ query?: never;
1535
+ header?: never;
1536
+ path?: never;
1537
+ cookie?: never;
1538
+ };
1539
+ /**
1540
+ * Get repo-sync eligibility gate (defaults + per-workspace overrides)
1541
+ * @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.
1542
+ */
1543
+ get: operations["getWorkspaceRepoEligibility"];
1544
+ /**
1545
+ * Set per-workspace repo-sync eligibility overrides
1546
+ * @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.
1547
+ */
1548
+ put: operations["putWorkspaceRepoEligibility"];
1549
+ post?: never;
1550
+ delete?: never;
1551
+ options?: never;
1552
+ head?: never;
1553
+ patch?: never;
1554
+ trace?: never;
1555
+ };
1488
1556
  "/workspaces/{workspaceId}/readiness/cursor-key-usage": {
1489
1557
  parameters: {
1490
1558
  query?: never;
@@ -2687,6 +2755,56 @@ export interface components {
2687
2755
  * @description Last push or metadata update from GitHub when available.
2688
2756
  */
2689
2757
  updatedAt?: string | null;
2758
+ /** @description True when the repository is archived (read-only on GitHub). */
2759
+ archived?: boolean | null;
2760
+ /** @description True when the repository is a fork of another repository. */
2761
+ fork?: boolean | null;
2762
+ /** @description True when the repository is disabled on GitHub. */
2763
+ disabled?: boolean | null;
2764
+ /** @description Repository size in KB as reported by GitHub. */
2765
+ size?: number | null;
2766
+ /** @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. */
2767
+ readOnly?: boolean | null;
2768
+ /** @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"). */
2769
+ ineligibleReason?: string | null;
2770
+ /**
2771
+ * @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.
2772
+ * @enum {string|null}
2773
+ */
2774
+ eligibilityStatus?: "eligible" | "ineligible" | null;
2775
+ /** @description Human-readable explanation when `eligibilityStatus` is `ineligible` (e.g. "This repository's primary language (Python) is not supported in v1"). */
2776
+ eligibilityReason?: string | null;
2777
+ /** @description Dominant supported stack (by GitHub language bytes), one of backend_jvm | ios_app | web_spa | backend_go. Null for ineligible repos. */
2778
+ primaryStack?: string | null;
2779
+ /** @description Second supported stack for a multi-stack repo, or null. */
2780
+ secondaryStack?: string | null;
2781
+ /** @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. */
2782
+ supportedStacks?: string[] | null;
2783
+ };
2784
+ /** @description Resolved repo-sync eligibility gate (defaults or effective). All fields present. */
2785
+ RepoEligibilityConfigDto: {
2786
+ /** @description Skip archived repos during GitHub repo sync. */
2787
+ excludeArchived: boolean;
2788
+ /** @description Skip forked repos. Forks are included by default. */
2789
+ excludeForks: boolean;
2790
+ /** @description Max repo size in KB (GitHub-reported). 0 = no limit. */
2791
+ maxRepoSizeKb: number;
2792
+ /** @description Max repos materialized per workspace per sync. 0 = no limit. */
2793
+ maxReposPerWorkspace: number;
2794
+ };
2795
+ /** @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. */
2796
+ RepoEligibilityOverridesDto: {
2797
+ excludeArchived?: boolean | null;
2798
+ excludeForks?: boolean | null;
2799
+ maxRepoSizeKb?: number | null;
2800
+ maxReposPerWorkspace?: number | null;
2801
+ };
2802
+ WorkspaceRepoEligibilityDto: {
2803
+ defaults: components["schemas"]["RepoEligibilityConfigDto"];
2804
+ overrides: components["schemas"]["RepoEligibilityOverridesDto"];
2805
+ effective: components["schemas"]["RepoEligibilityConfigDto"];
2806
+ /** @description True when the caller is a platform admin (may set any value, incl. raising caps). */
2807
+ canEditUnrestricted: boolean;
2690
2808
  };
2691
2809
  GithubMissingPermissionDto: {
2692
2810
  /** @description GitHub App permission key (e.g. contents, pull_requests). */
@@ -2728,6 +2846,42 @@ export interface components {
2728
2846
  */
2729
2847
  pendingSince: string;
2730
2848
  };
2849
+ GithubActionsWorkflowPreviewDto: {
2850
+ /** @description Approximate workflow count from recent API sample (best effort). */
2851
+ workflows?: number;
2852
+ /** @description Workflow runs in the trailing 7 days from sample repo (best effort). */
2853
+ runsThisWeek?: number;
2854
+ };
2855
+ GithubActionsIntegrationStatusDto: {
2856
+ /** @description True when the workspace admin explicitly enabled GitHub Actions CI. */
2857
+ enabled: boolean;
2858
+ /** @description True when at least one GitHub App VCS installation is linked. */
2859
+ githubConnected: boolean;
2860
+ /** @description False when GitHub App installation lacks Actions read permission. */
2861
+ permissionsOk: boolean;
2862
+ /** @description Alias for `!permissionsOk` when GitHub is connected. */
2863
+ permissionsUpgradeRequired?: boolean;
2864
+ missingPermissions?: components["schemas"]["GithubMissingPermissionDto"][];
2865
+ /**
2866
+ * Format: uri
2867
+ * @description GitHub installation settings URL for permission approval.
2868
+ */
2869
+ manageUrl?: string | null;
2870
+ /**
2871
+ * Format: date-time
2872
+ * @description Last productivity ingest timestamp when CI is enabled.
2873
+ */
2874
+ lastSyncAt?: string | null;
2875
+ workflowPreview?: components["schemas"]["GithubActionsWorkflowPreviewDto"] | null;
2876
+ /** @description Last enable or status error message when applicable. */
2877
+ error?: string | null;
2878
+ };
2879
+ GithubActionsEnableResponseDto: {
2880
+ /** @enum {string} */
2881
+ outcome: "enabled" | "needs_github" | "permissions_missing" | "error";
2882
+ status?: components["schemas"]["GithubActionsIntegrationStatusDto"] | null;
2883
+ error?: string | null;
2884
+ };
2731
2885
  GithubInstallationStatusDto: {
2732
2886
  installed: boolean;
2733
2887
  installations: components["schemas"]["GithubInstallationSummaryDto"][];
@@ -3143,6 +3297,19 @@ export interface components {
3143
3297
  * @enum {string|null}
3144
3298
  */
3145
3299
  archivedReason?: "github_removed" | "installation_disconnected" | "installation_replaced" | "superseded" | null;
3300
+ /**
3301
+ * @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.
3302
+ * @enum {string|null}
3303
+ */
3304
+ eligibilityStatus?: "eligible" | "ineligible" | null;
3305
+ /** @description Human-readable explanation when `eligibilityStatus` is `ineligible`. */
3306
+ eligibilityReason?: string | null;
3307
+ /** @description Dominant supported stack — backend_jvm | ios_app | web_spa | backend_go. Null when ineligible/uncomputed. */
3308
+ primaryStack?: string | null;
3309
+ /** @description Second supported stack for a multi-stack repo, or null. */
3310
+ secondaryStack?: string | null;
3311
+ /** @description All supported stacks detected (ordered, primary first). Empty/null when none. */
3312
+ supportedStacks?: string[] | null;
3146
3313
  };
3147
3314
  /** @description Single-repo detail response. Identical to RepoReadinessScoreDto except dimensions use DimensionScoreDetailDto (criteriaDetails required per dimension). */
3148
3315
  RepoReadinessScoreDetailDto: {
@@ -3604,7 +3771,7 @@ export interface components {
3604
3771
  * @description Type of workspace lifecycle event.
3605
3772
  * @enum {string}
3606
3773
  */
3607
- 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";
3774
+ 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";
3608
3775
  ActivityLogActorDto: {
3609
3776
  /** Format: uuid */
3610
3777
  userId: string;
@@ -3689,18 +3856,30 @@ export interface components {
3689
3856
  };
3690
3857
  HrisTriggerSyncResultDto: {
3691
3858
  /** @enum {string} */
3692
- status: "ok" | "skipped" | "error";
3693
- /** @description Stable machine-readable code (e.g. 'no_personio_source', 'hris_sync_failed'). */
3859
+ status: "ok" | "skipped" | "error" | "partial";
3860
+ /** @description Stable machine-readable code (e.g. 'no_hris_source', 'hris_sync_failed'). */
3694
3861
  code?: string;
3695
- /** @description Number of employees synced (present when status = 'ok'). */
3862
+ /** @description Employees synced across successful providers (when status = ok or partial). */
3696
3863
  employeeCount?: number;
3697
- /** @description Number of absence records synced (present when status = 'ok'). */
3864
+ /** @description Absence rows synced across successful providers. */
3698
3865
  absenceCount?: number;
3699
- /** @description Wall-clock duration of the sync in milliseconds (present when status = 'ok'). */
3866
+ /** @description Wall-clock duration of the sync in milliseconds. */
3700
3867
  durationMs?: number;
3701
- /** @description Machine-readable reason for a skipped sync (e.g. 'no_personio_source'). */
3868
+ /** @description Machine-readable reason for a skipped sync (e.g. 'no_hris_source'). */
3702
3869
  reason?: string;
3703
- /** @description Error message when status = 'error'. */
3870
+ /** @description Error message when status = error, or first provider failure when partial. */
3871
+ error?: string;
3872
+ /** @description Per-provider sync outcomes when one or more HRIS sources are configured. */
3873
+ providers?: components["schemas"]["HrisProviderSyncResultDto"][];
3874
+ };
3875
+ HrisProviderSyncResultDto: {
3876
+ /** @description HRIS provider identifier (personio, zenhr, …). */
3877
+ provider: string;
3878
+ /** @enum {string} */
3879
+ status: "ok" | "error";
3880
+ employeeCount?: number;
3881
+ absenceCount?: number;
3882
+ durationMs?: number;
3704
3883
  error?: string;
3705
3884
  };
3706
3885
  ActivityLogPageDto: components["schemas"]["PageMetaDto"] & {
@@ -3963,9 +4142,15 @@ export type CreateWorkspaceBodyDto = components['schemas']['CreateWorkspaceBodyD
3963
4142
  export type CompanyProfileDto = components['schemas']['CompanyProfileDto'];
3964
4143
  export type GithubAccountDto = components['schemas']['GithubAccountDto'];
3965
4144
  export type GithubInstalledRepoDto = components['schemas']['GithubInstalledRepoDto'];
4145
+ export type RepoEligibilityConfigDto = components['schemas']['RepoEligibilityConfigDto'];
4146
+ export type RepoEligibilityOverridesDto = components['schemas']['RepoEligibilityOverridesDto'];
4147
+ export type WorkspaceRepoEligibilityDto = components['schemas']['WorkspaceRepoEligibilityDto'];
3966
4148
  export type GithubMissingPermissionDto = components['schemas']['GithubMissingPermissionDto'];
3967
4149
  export type GithubInstallationSummaryDto = components['schemas']['GithubInstallationSummaryDto'];
3968
4150
  export type GithubPendingApprovalDto = components['schemas']['GithubPendingApprovalDto'];
4151
+ export type GithubActionsWorkflowPreviewDto = components['schemas']['GithubActionsWorkflowPreviewDto'];
4152
+ export type GithubActionsIntegrationStatusDto = components['schemas']['GithubActionsIntegrationStatusDto'];
4153
+ export type GithubActionsEnableResponseDto = components['schemas']['GithubActionsEnableResponseDto'];
3969
4154
  export type GithubInstallationStatusDto = components['schemas']['GithubInstallationStatusDto'];
3970
4155
  export type GithubInstallUrlRequestDto = components['schemas']['GithubInstallUrlRequestDto'];
3971
4156
  export type GithubInstallUrlResponseDto = components['schemas']['GithubInstallUrlResponseDto'];
@@ -4068,6 +4253,7 @@ export type WorkspaceAbsenceListDto = components['schemas']['WorkspaceAbsenceLis
4068
4253
  export type HrisSyncStatusDto = components['schemas']['HrisSyncStatusDto'];
4069
4254
  export type HrisSyncStatusListDto = components['schemas']['HrisSyncStatusListDto'];
4070
4255
  export type HrisTriggerSyncResultDto = components['schemas']['HrisTriggerSyncResultDto'];
4256
+ export type HrisProviderSyncResultDto = components['schemas']['HrisProviderSyncResultDto'];
4071
4257
  export type ActivityLogPageDto = components['schemas']['ActivityLogPageDto'];
4072
4258
  export type ReadinessTokenUsageRowDto = components['schemas']['ReadinessTokenUsageRowDto'];
4073
4259
  export type ReadinessTokenUsageByDimensionRowDto = components['schemas']['ReadinessTokenUsageByDimensionRowDto'];
@@ -6315,6 +6501,112 @@ export interface operations {
6315
6501
  };
6316
6502
  };
6317
6503
  };
6504
+ getWorkspaceGithubActionsIntegrationStatus: {
6505
+ parameters: {
6506
+ query?: never;
6507
+ header?: never;
6508
+ path: {
6509
+ workspaceId: components["parameters"]["WorkspaceId"];
6510
+ };
6511
+ cookie?: never;
6512
+ };
6513
+ requestBody?: never;
6514
+ responses: {
6515
+ /** @description GitHub Actions integration status */
6516
+ 200: {
6517
+ headers: {
6518
+ [name: string]: unknown;
6519
+ };
6520
+ content: {
6521
+ "application/json": components["schemas"]["GithubActionsIntegrationStatusDto"];
6522
+ };
6523
+ };
6524
+ 401: components["responses"]["Unauthorized"];
6525
+ 403: components["responses"]["Forbidden"];
6526
+ /** @description Workspace does not exist or malformed workspaceId */
6527
+ 404: {
6528
+ headers: {
6529
+ [name: string]: unknown;
6530
+ };
6531
+ content: {
6532
+ "application/json": components["schemas"]["ErrorMessageDto"];
6533
+ };
6534
+ };
6535
+ };
6536
+ };
6537
+ deleteWorkspaceGithubActionsIntegration: {
6538
+ parameters: {
6539
+ query?: never;
6540
+ header?: never;
6541
+ path: {
6542
+ workspaceId: components["parameters"]["WorkspaceId"];
6543
+ };
6544
+ cookie?: never;
6545
+ };
6546
+ requestBody?: never;
6547
+ responses: {
6548
+ /** @description GitHub Actions integration disabled or was already absent */
6549
+ 204: {
6550
+ headers: {
6551
+ [name: string]: unknown;
6552
+ };
6553
+ content?: never;
6554
+ };
6555
+ 401: components["responses"]["Unauthorized"];
6556
+ 403: components["responses"]["Forbidden"];
6557
+ /** @description Workspace does not exist or malformed workspaceId */
6558
+ 404: {
6559
+ headers: {
6560
+ [name: string]: unknown;
6561
+ };
6562
+ content: {
6563
+ "application/json": components["schemas"]["ErrorMessageDto"];
6564
+ };
6565
+ };
6566
+ };
6567
+ };
6568
+ postWorkspaceGithubActionsIntegrationEnable: {
6569
+ parameters: {
6570
+ query?: never;
6571
+ header?: never;
6572
+ path: {
6573
+ workspaceId: components["parameters"]["WorkspaceId"];
6574
+ };
6575
+ cookie?: never;
6576
+ };
6577
+ requestBody?: never;
6578
+ responses: {
6579
+ /** @description Enable result */
6580
+ 200: {
6581
+ headers: {
6582
+ [name: string]: unknown;
6583
+ };
6584
+ content: {
6585
+ "application/json": components["schemas"]["GithubActionsEnableResponseDto"];
6586
+ };
6587
+ };
6588
+ 401: components["responses"]["Unauthorized"];
6589
+ 403: components["responses"]["Forbidden"];
6590
+ /** @description Workspace does not exist or malformed workspaceId */
6591
+ 404: {
6592
+ headers: {
6593
+ [name: string]: unknown;
6594
+ };
6595
+ content: {
6596
+ "application/json": components["schemas"]["ErrorMessageDto"];
6597
+ };
6598
+ };
6599
+ /** @description GitHub App not configured or smoke test failed */
6600
+ 503: {
6601
+ headers: {
6602
+ [name: string]: unknown;
6603
+ };
6604
+ content: {
6605
+ "application/json": components["schemas"]["ErrorMessageDto"];
6606
+ };
6607
+ };
6608
+ };
6609
+ };
6318
6610
  postGithubWebhook: {
6319
6611
  parameters: {
6320
6612
  query?: never;
@@ -7038,6 +7330,10 @@ export interface operations {
7038
7330
  offset?: components["parameters"]["PaginationOffset"];
7039
7331
  /** @description Sort direction. */
7040
7332
  order?: components["parameters"]["PaginationOrder"];
7333
+ /** @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. */
7334
+ sort?: "when" | "who" | "what" | "why" | "where";
7335
+ /** @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. */
7336
+ productArea?: "integration" | "agentic_foundation" | "workspace_team" | "all";
7041
7337
  /** @description Filter to a specific event type. */
7042
7338
  eventType?: components["schemas"]["ActivityLogEventTypeDto"];
7043
7339
  /** @description Filter to events performed by a specific user (UUID). */
@@ -7926,6 +8222,80 @@ export interface operations {
7926
8222
  403: components["responses"]["Forbidden"];
7927
8223
  };
7928
8224
  };
8225
+ getWorkspaceRepoEligibility: {
8226
+ parameters: {
8227
+ query?: never;
8228
+ header?: never;
8229
+ path: {
8230
+ workspaceId: components["parameters"]["WorkspaceId"];
8231
+ };
8232
+ cookie?: never;
8233
+ };
8234
+ requestBody?: never;
8235
+ responses: {
8236
+ /** @description Effective repo-eligibility configuration */
8237
+ 200: {
8238
+ headers: {
8239
+ [name: string]: unknown;
8240
+ };
8241
+ content: {
8242
+ "application/json": components["schemas"]["WorkspaceRepoEligibilityDto"];
8243
+ };
8244
+ };
8245
+ 401: components["responses"]["Unauthorized"];
8246
+ 403: components["responses"]["Forbidden"];
8247
+ };
8248
+ };
8249
+ putWorkspaceRepoEligibility: {
8250
+ parameters: {
8251
+ query?: never;
8252
+ header?: never;
8253
+ path: {
8254
+ workspaceId: components["parameters"]["WorkspaceId"];
8255
+ };
8256
+ cookie?: never;
8257
+ };
8258
+ requestBody: {
8259
+ content: {
8260
+ "application/json": {
8261
+ overrides: components["schemas"]["RepoEligibilityOverridesDto"];
8262
+ };
8263
+ };
8264
+ };
8265
+ responses: {
8266
+ /** @description Overrides saved */
8267
+ 200: {
8268
+ headers: {
8269
+ [name: string]: unknown;
8270
+ };
8271
+ content: {
8272
+ "application/json": {
8273
+ overrides: components["schemas"]["RepoEligibilityOverridesDto"];
8274
+ effective: components["schemas"]["RepoEligibilityConfigDto"];
8275
+ };
8276
+ };
8277
+ };
8278
+ /** @description Invalid request body */
8279
+ 400: {
8280
+ headers: {
8281
+ [name: string]: unknown;
8282
+ };
8283
+ content: {
8284
+ "application/json": components["schemas"]["ErrorMessageDto"];
8285
+ };
8286
+ };
8287
+ 401: components["responses"]["Unauthorized"];
8288
+ /** @description Forbidden, or a workspace-admin value exceeds a platform limit (`repo_eligibility_bound_exceeded`) */
8289
+ 403: {
8290
+ headers: {
8291
+ [name: string]: unknown;
8292
+ };
8293
+ content: {
8294
+ "application/json": components["schemas"]["ErrorMessageDto"];
8295
+ };
8296
+ };
8297
+ };
8298
+ };
7929
8299
  getCursorKeyUsage: {
7930
8300
  parameters: {
7931
8301
  query?: never;
@@ -8766,7 +9136,7 @@ export interface operations {
8766
9136
  };
8767
9137
  requestBody?: never;
8768
9138
  responses: {
8769
- /** @description Sync completed successfully */
9139
+ /** @description Sync completed successfully for all configured HRIS providers */
8770
9140
  200: {
8771
9141
  headers: {
8772
9142
  [name: string]: unknown;
@@ -8777,7 +9147,16 @@ export interface operations {
8777
9147
  * "status": "ok",
8778
9148
  * "employeeCount": 42,
8779
9149
  * "absenceCount": 7,
8780
- * "durationMs": 1234
9150
+ * "durationMs": 1234,
9151
+ * "providers": [
9152
+ * {
9153
+ * "provider": "personio",
9154
+ * "status": "ok",
9155
+ * "employeeCount": 42,
9156
+ * "absenceCount": 7,
9157
+ * "durationMs": 1234
9158
+ * }
9159
+ * ]
8781
9160
  * }
8782
9161
  */
8783
9162
  "application/json": components["schemas"]["HrisTriggerSyncResultDto"];
@@ -8794,14 +9173,14 @@ export interface operations {
8794
9173
  /**
8795
9174
  * @example {
8796
9175
  * "status": "skipped",
8797
- * "code": "no_personio_source",
8798
- * "reason": "no_personio_source"
9176
+ * "code": "no_hris_source",
9177
+ * "reason": "no_hris_source"
8799
9178
  * }
8800
9179
  */
8801
9180
  "application/json": components["schemas"]["HrisTriggerSyncResultDto"];
8802
9181
  };
8803
9182
  };
8804
- /** @description Sync failed (Personio API error, decryption failure, etc.) */
9183
+ /** @description Sync failed for one or more HRIS providers */
8805
9184
  500: {
8806
9185
  headers: {
8807
9186
  [name: string]: unknown;
@@ -8811,7 +9190,7 @@ export interface operations {
8811
9190
  * @example {
8812
9191
  * "status": "error",
8813
9192
  * "code": "hris_sync_failed",
8814
- * "error": "Personio employees API 401"
9193
+ * "error": "ZenHR token refresh failed (401)"
8815
9194
  * }
8816
9195
  */
8817
9196
  "application/json": components["schemas"]["HrisTriggerSyncResultDto"];