@thinkai/tai-api-contract 2.67.0 → 2.68.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  openapi: 3.0.3
2
2
  info:
3
3
  title: ThinkAI API
4
- version: 2.67.0
4
+ version: 2.68.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}/...`.
@@ -7223,6 +7223,183 @@ paths:
7223
7223
  "403":
7224
7224
  $ref: "#/components/responses/Forbidden"
7225
7225
 
7226
+ /workspaces/{workspaceId}/integrations/zelt/authorize-url:
7227
+ post:
7228
+ tags: [HRIS, Integrations]
7229
+ summary: Start Zelt OAuth authorize
7230
+ operationId: postWorkspaceZeltAuthorizeUrl
7231
+ description: >
7232
+ Mints OAuth state with pending Client ID/Secret and returns the Zelt authorize URL.
7233
+ Workspace **admin** only. No branch selection (company-scoped partner API).
7234
+ parameters:
7235
+ - $ref: "#/components/parameters/WorkspaceId"
7236
+ requestBody:
7237
+ required: true
7238
+ content:
7239
+ application/json:
7240
+ schema:
7241
+ $ref: "#/components/schemas/ZeltAuthorizeUrlRequestDto"
7242
+ responses:
7243
+ "200":
7244
+ description: Authorize URL and opaque state
7245
+ content:
7246
+ application/json:
7247
+ schema:
7248
+ $ref: "#/components/schemas/ZeltAuthorizeUrlResponseDto"
7249
+ example:
7250
+ url: "https://go.zelt.app/oauth/authorize?client_id=example&redirect_uri=https%3A%2F%2Fapi.example.com%2Fintegrations%2Fzelt%2Foauth%2Fcallback&response_type=code&state=example-state&scope=user.basicInfo%3Aread"
7251
+ state: "example-state"
7252
+ "400":
7253
+ description: Invalid request body or return path
7254
+ content:
7255
+ application/json:
7256
+ schema:
7257
+ $ref: "#/components/schemas/ErrorMessageDto"
7258
+ "401":
7259
+ $ref: "#/components/responses/Unauthorized"
7260
+ "403":
7261
+ $ref: "#/components/responses/Forbidden"
7262
+ "503":
7263
+ description: API public origin is not configured
7264
+ content:
7265
+ application/json:
7266
+ schema:
7267
+ $ref: "#/components/schemas/ErrorMessageDto"
7268
+ example:
7269
+ error: api_public_origin_not_configured
7270
+
7271
+ /workspaces/{workspaceId}/integrations/zelt/reauthorize-url:
7272
+ post:
7273
+ tags: [HRIS, Integrations]
7274
+ summary: Start Zelt OAuth reauthorize from stored credentials
7275
+ operationId: postWorkspaceZeltReauthorizeUrl
7276
+ description: >
7277
+ Starts Zelt OAuth using credentials already stored on the workspace source
7278
+ (no Client Secret in the request body). Workspace **admin** only.
7279
+ parameters:
7280
+ - $ref: "#/components/parameters/WorkspaceId"
7281
+ requestBody:
7282
+ required: false
7283
+ content:
7284
+ application/json:
7285
+ schema:
7286
+ $ref: "#/components/schemas/ZeltReauthorizeUrlRequestDto"
7287
+ responses:
7288
+ "200":
7289
+ description: Authorize URL and opaque state
7290
+ content:
7291
+ application/json:
7292
+ schema:
7293
+ $ref: "#/components/schemas/ZeltAuthorizeUrlResponseDto"
7294
+ "400":
7295
+ description: Invalid return path
7296
+ content:
7297
+ application/json:
7298
+ schema:
7299
+ $ref: "#/components/schemas/ErrorMessageDto"
7300
+ "401":
7301
+ $ref: "#/components/responses/Unauthorized"
7302
+ "403":
7303
+ $ref: "#/components/responses/Forbidden"
7304
+ "404":
7305
+ description: Zelt is not connected for this workspace
7306
+ content:
7307
+ application/json:
7308
+ schema:
7309
+ $ref: "#/components/schemas/ErrorMessageDto"
7310
+ example:
7311
+ error: zelt_not_connected
7312
+ "503":
7313
+ description: API public origin is not configured
7314
+ content:
7315
+ application/json:
7316
+ schema:
7317
+ $ref: "#/components/schemas/ErrorMessageDto"
7318
+ example:
7319
+ error: api_public_origin_not_configured
7320
+
7321
+ /workspaces/{workspaceId}/integrations/zelt/reconnect:
7322
+ post:
7323
+ tags: [HRIS, Integrations]
7324
+ summary: Attempt silent Zelt reconnect
7325
+ operationId: reconnectWorkspaceZelt
7326
+ description: >
7327
+ Attempts a silent token refresh and users ping using stored Zelt OAuth credentials.
7328
+ Returns `{ ok: true }` when the connection is restored without user interaction.
7329
+ Returns `{ ok: false, oauthRequired: true }` when stored credentials exist but refresh
7330
+ failed with an OAuth re-authorization error; the SPA should start Zelt OAuth next.
7331
+ Returns `503` with `zelt_sync_in_progress` when an HRIS sync or OAuth refresh is already
7332
+ in progress for this workspace (retry shortly).
7333
+ parameters:
7334
+ - $ref: "#/components/parameters/WorkspaceId"
7335
+ responses:
7336
+ "200":
7337
+ description: Silent reconnect succeeded or OAuth is required
7338
+ content:
7339
+ application/json:
7340
+ schema:
7341
+ $ref: "#/components/schemas/ZeltReconnectResultDto"
7342
+ examples:
7343
+ ok:
7344
+ value: { ok: true }
7345
+ oauth_required:
7346
+ value:
7347
+ ok: false
7348
+ oauthRequired: true
7349
+ error: zelt_oauth_required
7350
+ "401":
7351
+ $ref: "#/components/responses/Unauthorized"
7352
+ "403":
7353
+ $ref: "#/components/responses/Forbidden"
7354
+ "404":
7355
+ description: Zelt is not connected for this workspace
7356
+ content:
7357
+ application/json:
7358
+ schema:
7359
+ $ref: "#/components/schemas/ErrorMessageDto"
7360
+ example:
7361
+ error: zelt_not_connected
7362
+ "502":
7363
+ description: Zelt refresh or users ping failed for a non-OAuth reason
7364
+ content:
7365
+ application/json:
7366
+ schema:
7367
+ $ref: "#/components/schemas/ErrorMessageDto"
7368
+ example:
7369
+ error: zelt_reconnect_failed
7370
+ "503":
7371
+ description: HRIS sync/OAuth refresh already in progress
7372
+ content:
7373
+ application/json:
7374
+ schema:
7375
+ $ref: "#/components/schemas/ErrorMessageDto"
7376
+ example:
7377
+ error: zelt_sync_in_progress
7378
+
7379
+ /integrations/zelt/oauth/callback:
7380
+ get:
7381
+ tags: [HRIS, Integrations]
7382
+ summary: Zelt OAuth callback
7383
+ operationId: getZeltOauthCallback
7384
+ description: >
7385
+ Public browser redirect target after Zelt authorization. Exchanges the code,
7386
+ stores the encrypted `zelt` workspace source, emits `integrations.zelt.added` on
7387
+ first connect, and redirects the SPA with `?zelt=connected|error`.
7388
+ parameters:
7389
+ - name: code
7390
+ in: query
7391
+ schema: { type: string }
7392
+ - name: state
7393
+ in: query
7394
+ required: true
7395
+ schema: { type: string }
7396
+ - name: error
7397
+ in: query
7398
+ schema: { type: string }
7399
+ responses:
7400
+ "302":
7401
+ description: Redirect to SPA return path with zelt status query params
7402
+
7226
7403
  /workspaces/{workspaceId}/integrations/zenhr/reconnect:
7227
7404
  post:
7228
7405
  tags: [HRIS, Integrations]
@@ -14403,6 +14580,9 @@ components:
14403
14580
  - hris.zenhr.sync_started
14404
14581
  - hris.zenhr.sync_completed
14405
14582
  - hris.zenhr.sync_failed
14583
+ - hris.zelt.sync_started
14584
+ - hris.zelt.sync_completed
14585
+ - hris.zelt.sync_failed
14406
14586
  - hris.sync_started
14407
14587
  - hris.sync_completed
14408
14588
  - hris.sync_failed
@@ -14442,6 +14622,8 @@ components:
14442
14622
  - integrations.grafana.removed
14443
14623
  - integrations.grafana.sync_completed
14444
14624
  - integrations.grafana.sync_failed
14625
+ - integrations.zelt.added
14626
+ - integrations.zelt.removed
14445
14627
 
14446
14628
  ActivityLogActorDto:
14447
14629
  type: object
@@ -14599,6 +14781,56 @@ components:
14599
14781
  enum: [zenhr_oauth_required]
14600
14782
  description: Machine-readable code when ok=false and oauthRequired=true.
14601
14783
 
14784
+ ZeltAuthorizeUrlRequestDto:
14785
+ type: object
14786
+ required: [clientId, clientSecret]
14787
+ properties:
14788
+ clientId:
14789
+ type: string
14790
+ clientSecret:
14791
+ type: string
14792
+ baseUrl:
14793
+ type: string
14794
+ description: Defaults to `https://go.zelt.app` when omitted.
14795
+ appName:
14796
+ type: string
14797
+ description: Optional OAuth `app` query param when required by the tenant.
14798
+ returnPath:
14799
+ type: string
14800
+ description: SPA path to return to after OAuth (must start with `/`).
14801
+
14802
+ ZeltReauthorizeUrlRequestDto:
14803
+ type: object
14804
+ properties:
14805
+ returnPath:
14806
+ type: string
14807
+
14808
+ ZeltAuthorizeUrlResponseDto:
14809
+ type: object
14810
+ required: [url, state]
14811
+ properties:
14812
+ url:
14813
+ type: string
14814
+ format: uri
14815
+ state:
14816
+ type: string
14817
+
14818
+ ZeltReconnectResultDto:
14819
+ type: object
14820
+ required: [ok]
14821
+ properties:
14822
+ ok:
14823
+ type: boolean
14824
+ oauthRequired:
14825
+ type: boolean
14826
+ description: >
14827
+ When true with ok=false, stored credentials exist but refresh failed with an OAuth
14828
+ re-authorization error; the SPA should start Zelt OAuth next.
14829
+ error:
14830
+ type: string
14831
+ enum: [zelt_oauth_required]
14832
+ description: Machine-readable code when ok=false and oauthRequired=true.
14833
+
14602
14834
  ZenHrBranchDto:
14603
14835
  type: object
14604
14836
  required: [id, name]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkai/tai-api-contract",
3
- "version": "2.67.0",
3
+ "version": "2.68.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -2890,6 +2890,86 @@ export interface paths {
2890
2890
  patch?: never;
2891
2891
  trace?: never;
2892
2892
  };
2893
+ "/workspaces/{workspaceId}/integrations/zelt/authorize-url": {
2894
+ parameters: {
2895
+ query?: never;
2896
+ header?: never;
2897
+ path?: never;
2898
+ cookie?: never;
2899
+ };
2900
+ get?: never;
2901
+ put?: never;
2902
+ /**
2903
+ * Start Zelt OAuth authorize
2904
+ * @description Mints OAuth state with pending Client ID/Secret and returns the Zelt authorize URL. Workspace **admin** only. No branch selection (company-scoped partner API).
2905
+ */
2906
+ post: operations["postWorkspaceZeltAuthorizeUrl"];
2907
+ delete?: never;
2908
+ options?: never;
2909
+ head?: never;
2910
+ patch?: never;
2911
+ trace?: never;
2912
+ };
2913
+ "/workspaces/{workspaceId}/integrations/zelt/reauthorize-url": {
2914
+ parameters: {
2915
+ query?: never;
2916
+ header?: never;
2917
+ path?: never;
2918
+ cookie?: never;
2919
+ };
2920
+ get?: never;
2921
+ put?: never;
2922
+ /**
2923
+ * Start Zelt OAuth reauthorize from stored credentials
2924
+ * @description Starts Zelt OAuth using credentials already stored on the workspace source (no Client Secret in the request body). Workspace **admin** only.
2925
+ */
2926
+ post: operations["postWorkspaceZeltReauthorizeUrl"];
2927
+ delete?: never;
2928
+ options?: never;
2929
+ head?: never;
2930
+ patch?: never;
2931
+ trace?: never;
2932
+ };
2933
+ "/workspaces/{workspaceId}/integrations/zelt/reconnect": {
2934
+ parameters: {
2935
+ query?: never;
2936
+ header?: never;
2937
+ path?: never;
2938
+ cookie?: never;
2939
+ };
2940
+ get?: never;
2941
+ put?: never;
2942
+ /**
2943
+ * Attempt silent Zelt reconnect
2944
+ * @description Attempts a silent token refresh and users ping using stored Zelt OAuth credentials. Returns `{ ok: true }` when the connection is restored without user interaction. Returns `{ ok: false, oauthRequired: true }` when stored credentials exist but refresh failed with an OAuth re-authorization error; the SPA should start Zelt OAuth next. Returns `503` with `zelt_sync_in_progress` when an HRIS sync or OAuth refresh is already in progress for this workspace (retry shortly).
2945
+ */
2946
+ post: operations["reconnectWorkspaceZelt"];
2947
+ delete?: never;
2948
+ options?: never;
2949
+ head?: never;
2950
+ patch?: never;
2951
+ trace?: never;
2952
+ };
2953
+ "/integrations/zelt/oauth/callback": {
2954
+ parameters: {
2955
+ query?: never;
2956
+ header?: never;
2957
+ path?: never;
2958
+ cookie?: never;
2959
+ };
2960
+ /**
2961
+ * Zelt OAuth callback
2962
+ * @description Public browser redirect target after Zelt authorization. Exchanges the code, stores the encrypted `zelt` workspace source, emits `integrations.zelt.added` on first connect, and redirects the SPA with `?zelt=connected|error`.
2963
+ */
2964
+ get: operations["getZeltOauthCallback"];
2965
+ put?: never;
2966
+ post?: never;
2967
+ delete?: never;
2968
+ options?: never;
2969
+ head?: never;
2970
+ patch?: never;
2971
+ trace?: never;
2972
+ };
2893
2973
  "/workspaces/{workspaceId}/integrations/zenhr/reconnect": {
2894
2974
  parameters: {
2895
2975
  query?: never;
@@ -6112,7 +6192,7 @@ export interface components {
6112
6192
  * @description Type of workspace lifecycle event.
6113
6193
  * @enum {string}
6114
6194
  */
6115
- 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.repo_eligibility.languages_refresh_requested" | "integrations.cursor.platform_key_enabled" | "integrations.cursor.platform_key_disabled" | "member.invited" | "member.role_changed" | "member.removed" | "hris.personio.sync_started" | "hris.personio.sync_completed" | "hris.personio.sync_failed" | "hris.zenhr.sync_started" | "hris.zenhr.sync_completed" | "hris.zenhr.sync_failed" | "hris.sync_started" | "hris.sync_completed" | "hris.sync_failed" | "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" | "integrations.claude.analytics_key.added" | "integrations.claude.analytics_key.updated" | "integrations.claude.analytics_key.removed" | "readiness.scan_precheck_failed" | "productivity.ingest.completed" | "productivity.ingest.failed" | "productivity.ingest.skipped" | "productivity.ingest.repo_skipped" | "productivity.ingest.coverage_gap_detected" | "integrations.newrelic.added" | "integrations.newrelic.removed" | "integrations.newrelic.sync_completed" | "integrations.newrelic.sync_failed" | "integrations.prometheus.added" | "integrations.prometheus.removed" | "integrations.prometheus.sync_completed" | "integrations.prometheus.sync_failed" | "integrations.grafana.added" | "integrations.grafana.removed" | "integrations.grafana.sync_completed" | "integrations.grafana.sync_failed";
6195
+ 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.repo_eligibility.languages_refresh_requested" | "integrations.cursor.platform_key_enabled" | "integrations.cursor.platform_key_disabled" | "member.invited" | "member.role_changed" | "member.removed" | "hris.personio.sync_started" | "hris.personio.sync_completed" | "hris.personio.sync_failed" | "hris.zenhr.sync_started" | "hris.zenhr.sync_completed" | "hris.zenhr.sync_failed" | "hris.zelt.sync_started" | "hris.zelt.sync_completed" | "hris.zelt.sync_failed" | "hris.sync_started" | "hris.sync_completed" | "hris.sync_failed" | "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" | "integrations.claude.analytics_key.added" | "integrations.claude.analytics_key.updated" | "integrations.claude.analytics_key.removed" | "readiness.scan_precheck_failed" | "productivity.ingest.completed" | "productivity.ingest.failed" | "productivity.ingest.skipped" | "productivity.ingest.repo_skipped" | "productivity.ingest.coverage_gap_detected" | "integrations.newrelic.added" | "integrations.newrelic.removed" | "integrations.newrelic.sync_completed" | "integrations.newrelic.sync_failed" | "integrations.prometheus.added" | "integrations.prometheus.removed" | "integrations.prometheus.sync_completed" | "integrations.prometheus.sync_failed" | "integrations.grafana.added" | "integrations.grafana.removed" | "integrations.grafana.sync_completed" | "integrations.grafana.sync_failed" | "integrations.zelt.added" | "integrations.zelt.removed";
6116
6196
  ActivityLogActorDto: {
6117
6197
  /** Format: uuid */
6118
6198
  userId: string;
@@ -6205,6 +6285,34 @@ export interface components {
6205
6285
  */
6206
6286
  error?: "zenhr_oauth_required";
6207
6287
  };
6288
+ ZeltAuthorizeUrlRequestDto: {
6289
+ clientId: string;
6290
+ clientSecret: string;
6291
+ /** @description Defaults to `https://go.zelt.app` when omitted. */
6292
+ baseUrl?: string;
6293
+ /** @description Optional OAuth `app` query param when required by the tenant. */
6294
+ appName?: string;
6295
+ /** @description SPA path to return to after OAuth (must start with `/`). */
6296
+ returnPath?: string;
6297
+ };
6298
+ ZeltReauthorizeUrlRequestDto: {
6299
+ returnPath?: string;
6300
+ };
6301
+ ZeltAuthorizeUrlResponseDto: {
6302
+ /** Format: uri */
6303
+ url: string;
6304
+ state: string;
6305
+ };
6306
+ ZeltReconnectResultDto: {
6307
+ ok: boolean;
6308
+ /** @description When true with ok=false, stored credentials exist but refresh failed with an OAuth re-authorization error; the SPA should start Zelt OAuth next. */
6309
+ oauthRequired?: boolean;
6310
+ /**
6311
+ * @description Machine-readable code when ok=false and oauthRequired=true.
6312
+ * @enum {string}
6313
+ */
6314
+ error?: "zelt_oauth_required";
6315
+ };
6208
6316
  ZenHrBranchDto: {
6209
6317
  id: string;
6210
6318
  name: string;
@@ -6983,6 +7091,10 @@ export type WorkspaceAbsenceListDto = components['schemas']['WorkspaceAbsenceLis
6983
7091
  export type HrisSyncStatusDto = components['schemas']['HrisSyncStatusDto'];
6984
7092
  export type HrisSyncStatusListDto = components['schemas']['HrisSyncStatusListDto'];
6985
7093
  export type ZenHrReconnectResultDto = components['schemas']['ZenHrReconnectResultDto'];
7094
+ export type ZeltAuthorizeUrlRequestDto = components['schemas']['ZeltAuthorizeUrlRequestDto'];
7095
+ export type ZeltReauthorizeUrlRequestDto = components['schemas']['ZeltReauthorizeUrlRequestDto'];
7096
+ export type ZeltAuthorizeUrlResponseDto = components['schemas']['ZeltAuthorizeUrlResponseDto'];
7097
+ export type ZeltReconnectResultDto = components['schemas']['ZeltReconnectResultDto'];
6986
7098
  export type ZenHrBranchDto = components['schemas']['ZenHrBranchDto'];
6987
7099
  export type ZenHrBranchesListDto = components['schemas']['ZenHrBranchesListDto'];
6988
7100
  export type ZenHrBranchSelectionDto = components['schemas']['ZenHrBranchSelectionDto'];
@@ -14529,6 +14641,216 @@ export interface operations {
14529
14641
  403: components["responses"]["Forbidden"];
14530
14642
  };
14531
14643
  };
14644
+ postWorkspaceZeltAuthorizeUrl: {
14645
+ parameters: {
14646
+ query?: never;
14647
+ header?: never;
14648
+ path: {
14649
+ workspaceId: components["parameters"]["WorkspaceId"];
14650
+ };
14651
+ cookie?: never;
14652
+ };
14653
+ requestBody: {
14654
+ content: {
14655
+ "application/json": components["schemas"]["ZeltAuthorizeUrlRequestDto"];
14656
+ };
14657
+ };
14658
+ responses: {
14659
+ /** @description Authorize URL and opaque state */
14660
+ 200: {
14661
+ headers: {
14662
+ [name: string]: unknown;
14663
+ };
14664
+ content: {
14665
+ /**
14666
+ * @example {
14667
+ * "url": "https://go.zelt.app/oauth/authorize?client_id=example&redirect_uri=https%3A%2F%2Fapi.example.com%2Fintegrations%2Fzelt%2Foauth%2Fcallback&response_type=code&state=example-state&scope=user.basicInfo%3Aread",
14668
+ * "state": "example-state"
14669
+ * }
14670
+ */
14671
+ "application/json": components["schemas"]["ZeltAuthorizeUrlResponseDto"];
14672
+ };
14673
+ };
14674
+ /** @description Invalid request body or return path */
14675
+ 400: {
14676
+ headers: {
14677
+ [name: string]: unknown;
14678
+ };
14679
+ content: {
14680
+ "application/json": components["schemas"]["ErrorMessageDto"];
14681
+ };
14682
+ };
14683
+ 401: components["responses"]["Unauthorized"];
14684
+ 403: components["responses"]["Forbidden"];
14685
+ /** @description API public origin is not configured */
14686
+ 503: {
14687
+ headers: {
14688
+ [name: string]: unknown;
14689
+ };
14690
+ content: {
14691
+ /**
14692
+ * @example {
14693
+ * "error": "api_public_origin_not_configured"
14694
+ * }
14695
+ */
14696
+ "application/json": components["schemas"]["ErrorMessageDto"];
14697
+ };
14698
+ };
14699
+ };
14700
+ };
14701
+ postWorkspaceZeltReauthorizeUrl: {
14702
+ parameters: {
14703
+ query?: never;
14704
+ header?: never;
14705
+ path: {
14706
+ workspaceId: components["parameters"]["WorkspaceId"];
14707
+ };
14708
+ cookie?: never;
14709
+ };
14710
+ requestBody?: {
14711
+ content: {
14712
+ "application/json": components["schemas"]["ZeltReauthorizeUrlRequestDto"];
14713
+ };
14714
+ };
14715
+ responses: {
14716
+ /** @description Authorize URL and opaque state */
14717
+ 200: {
14718
+ headers: {
14719
+ [name: string]: unknown;
14720
+ };
14721
+ content: {
14722
+ "application/json": components["schemas"]["ZeltAuthorizeUrlResponseDto"];
14723
+ };
14724
+ };
14725
+ /** @description Invalid return path */
14726
+ 400: {
14727
+ headers: {
14728
+ [name: string]: unknown;
14729
+ };
14730
+ content: {
14731
+ "application/json": components["schemas"]["ErrorMessageDto"];
14732
+ };
14733
+ };
14734
+ 401: components["responses"]["Unauthorized"];
14735
+ 403: components["responses"]["Forbidden"];
14736
+ /** @description Zelt is not connected for this workspace */
14737
+ 404: {
14738
+ headers: {
14739
+ [name: string]: unknown;
14740
+ };
14741
+ content: {
14742
+ /**
14743
+ * @example {
14744
+ * "error": "zelt_not_connected"
14745
+ * }
14746
+ */
14747
+ "application/json": components["schemas"]["ErrorMessageDto"];
14748
+ };
14749
+ };
14750
+ /** @description API public origin is not configured */
14751
+ 503: {
14752
+ headers: {
14753
+ [name: string]: unknown;
14754
+ };
14755
+ content: {
14756
+ /**
14757
+ * @example {
14758
+ * "error": "api_public_origin_not_configured"
14759
+ * }
14760
+ */
14761
+ "application/json": components["schemas"]["ErrorMessageDto"];
14762
+ };
14763
+ };
14764
+ };
14765
+ };
14766
+ reconnectWorkspaceZelt: {
14767
+ parameters: {
14768
+ query?: never;
14769
+ header?: never;
14770
+ path: {
14771
+ workspaceId: components["parameters"]["WorkspaceId"];
14772
+ };
14773
+ cookie?: never;
14774
+ };
14775
+ requestBody?: never;
14776
+ responses: {
14777
+ /** @description Silent reconnect succeeded or OAuth is required */
14778
+ 200: {
14779
+ headers: {
14780
+ [name: string]: unknown;
14781
+ };
14782
+ content: {
14783
+ "application/json": components["schemas"]["ZeltReconnectResultDto"];
14784
+ };
14785
+ };
14786
+ 401: components["responses"]["Unauthorized"];
14787
+ 403: components["responses"]["Forbidden"];
14788
+ /** @description Zelt is not connected for this workspace */
14789
+ 404: {
14790
+ headers: {
14791
+ [name: string]: unknown;
14792
+ };
14793
+ content: {
14794
+ /**
14795
+ * @example {
14796
+ * "error": "zelt_not_connected"
14797
+ * }
14798
+ */
14799
+ "application/json": components["schemas"]["ErrorMessageDto"];
14800
+ };
14801
+ };
14802
+ /** @description Zelt refresh or users ping failed for a non-OAuth reason */
14803
+ 502: {
14804
+ headers: {
14805
+ [name: string]: unknown;
14806
+ };
14807
+ content: {
14808
+ /**
14809
+ * @example {
14810
+ * "error": "zelt_reconnect_failed"
14811
+ * }
14812
+ */
14813
+ "application/json": components["schemas"]["ErrorMessageDto"];
14814
+ };
14815
+ };
14816
+ /** @description HRIS sync/OAuth refresh already in progress */
14817
+ 503: {
14818
+ headers: {
14819
+ [name: string]: unknown;
14820
+ };
14821
+ content: {
14822
+ /**
14823
+ * @example {
14824
+ * "error": "zelt_sync_in_progress"
14825
+ * }
14826
+ */
14827
+ "application/json": components["schemas"]["ErrorMessageDto"];
14828
+ };
14829
+ };
14830
+ };
14831
+ };
14832
+ getZeltOauthCallback: {
14833
+ parameters: {
14834
+ query: {
14835
+ code?: string;
14836
+ state: string;
14837
+ error?: string;
14838
+ };
14839
+ header?: never;
14840
+ path?: never;
14841
+ cookie?: never;
14842
+ };
14843
+ requestBody?: never;
14844
+ responses: {
14845
+ /** @description Redirect to SPA return path with zelt status query params */
14846
+ 302: {
14847
+ headers: {
14848
+ [name: string]: unknown;
14849
+ };
14850
+ content?: never;
14851
+ };
14852
+ };
14853
+ };
14532
14854
  reconnectWorkspaceZenHr: {
14533
14855
  parameters: {
14534
14856
  query?: never;