@crowi/api-contract 2.0.0-alpha.15 → 2.0.0-alpha.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -80,6 +80,8 @@ __export(index_exports, {
80
80
  CommentInvalidRequestErrorSchema: () => CommentInvalidRequestErrorSchema,
81
81
  CommentNotFoundErrorSchema: () => CommentNotFoundErrorSchema,
82
82
  CommentSchema: () => CommentSchema,
83
+ CompleteProviderLinkConflictErrorSchema: () => CompleteProviderLinkConflictErrorSchema,
84
+ CompleteProviderLinkResponseSchema: () => CompleteProviderLinkResponseSchema,
83
85
  ConfigReadinessIssueSchema: () => ConfigReadinessIssueSchema,
84
86
  ConfigReadinessResponseSchema: () => ConfigReadinessResponseSchema,
85
87
  ConfirmEmailChangeRequestSchema: () => ConfirmEmailChangeRequestSchema,
@@ -92,8 +94,6 @@ __export(index_exports, {
92
94
  CreateAdminResponseSchema: () => CreateAdminResponseSchema,
93
95
  CreateDraftRequestSchema: () => CreateDraftRequestSchema,
94
96
  CreateDraftResponseSchema: () => CreateDraftResponseSchema,
95
- CreateLinkGrantRequestSchema: () => CreateLinkGrantRequestSchema,
96
- CreateLinkGrantResponseSchema: () => CreateLinkGrantResponseSchema,
97
97
  CreatePageRequestSchema: () => CreatePageRequestSchema,
98
98
  CrowiCodeSidecarSchema: () => CrowiCodeSidecarSchema,
99
99
  CrowiDiagramNodeSchema: () => CrowiDiagramNodeSchema,
@@ -184,6 +184,8 @@ __export(index_exports, {
184
184
  LanguageSchema: () => LanguageSchema,
185
185
  LikerSchema: () => LikerSchema,
186
186
  LikersResponseSchema: () => LikersResponseSchema,
187
+ LinkCompletionCodeSchema: () => LinkCompletionCodeSchema,
188
+ LinkCompletionConsumedErrorSchema: () => LinkCompletionConsumedErrorSchema,
187
189
  LinkedAuthProviderListResponseSchema: () => LinkedAuthProviderListResponseSchema,
188
190
  ListAccessTokensResponseSchema: () => ListAccessTokensResponseSchema,
189
191
  ListAdminUsersRequestSchema: () => ListAdminUsersRequestSchema,
@@ -248,6 +250,7 @@ __export(index_exports, {
248
250
  PasswordErrorResponseSchema: () => PasswordErrorResponseSchema,
249
251
  PasswordUpdateSuccessSchema: () => PasswordUpdateSuccessSchema,
250
252
  PastAttachmentUsageSchema: () => PastAttachmentUsageSchema,
253
+ PendingLinkCompletionResponseSchema: () => PendingLinkCompletionResponseSchema,
251
254
  PendingUsersCountResponseSchema: () => PendingUsersCountResponseSchema,
252
255
  PictureUploadResponseSchema: () => PictureUploadResponseSchema,
253
256
  PluginAdminPlacementSchema: () => PluginAdminPlacementSchema,
@@ -327,6 +330,7 @@ __export(index_exports, {
327
330
  ShikiTokenLinesSchema: () => ShikiTokenLinesSchema,
328
331
  ShikiTokenSchema: () => ShikiTokenSchema,
329
332
  ShikiTokenStyleSchema: () => ShikiTokenStyleSchema,
333
+ StartProviderLinkResponseSchema: () => StartProviderLinkResponseSchema,
330
334
  StorageDriverEntrySchema: () => StorageDriverEntrySchema,
331
335
  SuccessResponseSchema: () => SuccessResponseSchema,
332
336
  ThemeSchema: () => ThemeSchema,
@@ -415,10 +419,10 @@ __export(index_exports, {
415
419
  clearRenderCachePluginRoute: () => clearRenderCachePluginRoute,
416
420
  clientInfoRoute: () => clientInfoRoute,
417
421
  commentRoutes: () => commentRoutes,
422
+ completeProviderLinkRoute: () => completeProviderLinkRoute,
418
423
  confirmEmailChangeRoute: () => confirmEmailChangeRoute,
419
424
  createAccessTokenRoute: () => createAccessTokenRoute,
420
425
  createAdminRoute: () => createAdminRoute,
421
- createAuthProviderLinkGrantRoute: () => createAuthProviderLinkGrantRoute,
422
426
  createClient: () => createClient,
423
427
  createDraftRoute: () => createDraftRoute,
424
428
  createPageRoute: () => createPageRoute,
@@ -456,6 +460,7 @@ __export(index_exports, {
456
460
  getPluginReadinessRoute: () => getPluginReadinessRoute,
457
461
  getPresenceTokenRoute: () => getPresenceTokenRoute,
458
462
  getProfileRoute: () => getProfileRoute,
463
+ getProviderLinkCompletionRoute: () => getProviderLinkCompletionRoute,
459
464
  getRevisionRoute: () => getRevisionRoute,
460
465
  getRevisionsRoute: () => getRevisionsRoute,
461
466
  getSearchStatusRoute: () => getSearchStatusRoute,
@@ -529,6 +534,7 @@ __export(index_exports, {
529
534
  setPageGrantRoute: () => setPageGrantRoute,
530
535
  setWatchStatusRoute: () => setWatchStatusRoute,
531
536
  startFederatedProviderRoute: () => startFederatedProviderRoute,
537
+ startProviderLinkRoute: () => startProviderLinkRoute,
532
538
  stripKnownHtmlTags: () => stripKnownHtmlTags,
533
539
  submitFederatedRegistrationRoute: () => submitFederatedRegistrationRoute,
534
540
  suspendUserRoute: () => suspendUserRoute,
@@ -672,6 +678,11 @@ var ERROR_CODES = [
672
678
  // --- federated sign-in (RFC-0014) ---
673
679
  "FEDERATED_HANDOFF_INVALID",
674
680
  "FEDERATED_HANDOFF_CONSUMED",
681
+ // --- federated account linking (RFC-0014 §5.4) ---
682
+ "FEDERATED_IDENTITY_IN_USE",
683
+ "FEDERATED_LINK_AUTH_STATE_CHANGED",
684
+ "FEDERATED_LINK_NOT_LINKED",
685
+ "LINK_COMPLETION_CONSUMED",
675
686
  // --- admin subsystems ---
676
687
  "ENCRYPTION_NOT_CONFIGURED",
677
688
  "MAIL_FROM_NOT_CONFIGURED",
@@ -6617,12 +6628,28 @@ var FederatedHandoffResponseSchema = TokenAuthResponseSchema;
6617
6628
  var LinkedAuthProviderListResponseSchema = import_zod_openapi66.z.object({
6618
6629
  identities: import_zod_openapi66.z.array(import_zod_openapi66.z.object({ provider: import_zod_openapi66.z.string() }))
6619
6630
  });
6620
- var CreateLinkGrantRequestSchema = import_zod_openapi66.z.object({
6621
- /** RFC 7638 thumbprint of the P-256 public key this browser will use at `/start` — binds the grant to this browser (AC-2). */
6622
- handoffChallenge: import_zod_openapi66.z.string().min(1)
6631
+ var LinkCompletionCodeSchema = import_zod_openapi66.z.string().regex(/^[A-Za-z0-9_-]{43}$/, "must be a 43-character base64url completion code");
6632
+ var StartProviderLinkResponseSchema = import_zod_openapi66.z.object({
6633
+ authorizationUrl: import_zod_openapi66.z.string().url()
6623
6634
  });
6624
- var CreateLinkGrantResponseSchema = import_zod_openapi66.z.object({
6625
- linkGrant: import_zod_openapi66.z.string()
6635
+ var PendingLinkCompletionResponseSchema = import_zod_openapi66.z.object({
6636
+ provider: import_zod_openapi66.z.string(),
6637
+ accountLabel: import_zod_openapi66.z.string().optional()
6638
+ });
6639
+ var CompleteProviderLinkResponseSchema = import_zod_openapi66.z.object({
6640
+ result: import_zod_openapi66.z.literal("linked")
6641
+ });
6642
+ var LinkCompletionConsumedErrorSchema = ApiErrorSchema.extend({
6643
+ error: import_zod_openapi66.z.object({
6644
+ code: import_zod_openapi66.z.literal("LINK_COMPLETION_CONSUMED"),
6645
+ message: import_zod_openapi66.z.string()
6646
+ })
6647
+ });
6648
+ var CompleteProviderLinkConflictErrorSchema = ApiErrorSchema.extend({
6649
+ error: import_zod_openapi66.z.object({
6650
+ code: import_zod_openapi66.z.enum(["FEDERATED_IDENTITY_IN_USE", "FEDERATED_LINK_AUTH_STATE_CHANGED", "FEDERATED_LINK_NOT_LINKED"]),
6651
+ message: import_zod_openapi66.z.string()
6652
+ })
6626
6653
  });
6627
6654
  var UnlinkAuthProviderErrorSchema = import_zod_openapi66.z.object({
6628
6655
  error: import_zod_openapi66.z.object({
@@ -6653,7 +6680,7 @@ var startFederatedProviderRoute = (0, import_zod_openapi67.createRoute)({
6653
6680
  method: "get",
6654
6681
  path: "/auth/providers/{name}/start",
6655
6682
  tags: ["federatedAuth"],
6656
- summary: "Top-level navigation that redirects the browser to the named provider",
6683
+ summary: "Top-level navigation that redirects the browser to the named provider (public sign-in ONLY)",
6657
6684
  request: {
6658
6685
  params: import_zod_openapi67.z.object({ name: import_zod_openapi67.z.string() }),
6659
6686
  query: import_zod_openapi67.z.object({
@@ -6661,31 +6688,13 @@ var startFederatedProviderRoute = (0, import_zod_openapi67.createRoute)({
6661
6688
  /** base64url(JSON) of the sender's P-256 public JWK. */
6662
6689
  handoff_jwk: import_zod_openapi67.z.string().min(1),
6663
6690
  /** base64url ES256 signature over the start canonical message. */
6664
- handoff_proof: import_zod_openapi67.z.string().min(1),
6665
- /**
6666
- * RFC-0014 phase 3 — `'1'` switches this start into LINK mode: the
6667
- * request must carry a web-session JWT, and the flow attaches the
6668
- * resulting identity to that session's user instead of signing
6669
- * anyone in. Absent (the ordinary sign-in start) the route stays
6670
- * fully public.
6671
- */
6672
- link: import_zod_openapi67.z.literal("1").optional(),
6673
- /** The opaque id from `POST /auth/providers/{name}/link-grants`. Required when `link=1`, ignored otherwise. */
6674
- link_grant: import_zod_openapi67.z.string().min(1).optional()
6691
+ handoff_proof: import_zod_openapi67.z.string().min(1)
6675
6692
  })
6676
6693
  },
6677
6694
  responses: {
6678
6695
  302: { description: "Redirect to the provider authorization endpoint" },
6679
6696
  400: {
6680
- description: "Malformed continue / sender proof, or an invalid/expired/mismatched link grant",
6681
- content: { "application/json": { schema: ApiErrorSchema } }
6682
- },
6683
- 401: {
6684
- description: "link=1 without a web-session JWT \u2014 never downgraded to the public sign-in start",
6685
- content: { "application/json": { schema: ApiErrorSchema } }
6686
- },
6687
- 403: {
6688
- description: "link=1 with a non-web credential (PAT / OAuth access token)",
6697
+ description: "Malformed continue / sender proof, OR a raw `link` query key is present (any value) \u2014 the retired link-via-GET flow is gone entirely; a raw `link` key is always rejected rather than silently downgraded to public sign-in.",
6689
6698
  content: { "application/json": { schema: ApiErrorSchema } }
6690
6699
  },
6691
6700
  404: {
@@ -6718,32 +6727,113 @@ var listLinkedAuthProvidersRoute = (0, import_zod_openapi67.createRoute)({
6718
6727
  }
6719
6728
  }
6720
6729
  });
6721
- var createAuthProviderLinkGrantRoute = (0, import_zod_openapi67.createRoute)({
6730
+ var startProviderLinkRoute = (0, import_zod_openapi67.createRoute)({
6722
6731
  method: "post",
6723
- path: "/auth/providers/{name}/link-grants",
6732
+ path: "/auth/providers/{name}/link-start",
6724
6733
  tags: ["federatedAuth"],
6725
- summary: "Mint a short-lived, opaque grant that authorizes ONE link start for the current web session",
6734
+ summary: "Mint an IdP authorization URL + flow-specific state cookie for the current web session (stage 1 of 3)",
6726
6735
  request: {
6727
- params: import_zod_openapi67.z.object({ name: import_zod_openapi67.z.string() }),
6728
- body: { content: { "application/json": { schema: CreateLinkGrantRequestSchema } } }
6736
+ params: import_zod_openapi67.z.object({ name: import_zod_openapi67.z.string() })
6729
6737
  },
6730
6738
  responses: {
6731
6739
  200: {
6732
- description: "Opaque single-use grant id",
6733
- content: { "application/json": { schema: CreateLinkGrantResponseSchema } }
6740
+ description: "Authorization URL to navigate the browser to. Sets a flow-specific, 300s state cookie.",
6741
+ content: { "application/json": { schema: StartProviderLinkResponseSchema } }
6742
+ },
6743
+ 400: {
6744
+ description: "The signed link-state cookie value would exceed its per-cookie byte limit, or the aggregate Cookie-header admission budget cannot be satisfied even after pruning \u2014 no Set-Cookie or authorizationUrl is returned.",
6745
+ content: { "application/json": { schema: ApiErrorSchema } }
6734
6746
  },
6735
6747
  401: {
6736
- description: "Authentication required",
6748
+ description: "Authentication required (credential missing/invalid \u2014 resolved by middleware before this route's own validation)",
6737
6749
  content: { "application/json": { schema: AuthenticationRequiredErrorSchema } }
6738
6750
  },
6739
6751
  403: {
6740
- description: "Non-web credential (PAT / OAuth access token)",
6752
+ description: "Non-web credential (PAT / OAuth access token) \u2014 linking is a session-level account change",
6741
6753
  content: { "application/json": { schema: ApiErrorSchema } }
6742
6754
  },
6743
6755
  404: {
6744
6756
  description: "Unknown, unconfigured, or credential-kind provider",
6745
6757
  content: { "application/json": { schema: ApiErrorSchema } }
6746
6758
  },
6759
+ 500: {
6760
+ description: "Internal server error (e.g. a declared multi-instance topology with no reachable Redis)",
6761
+ content: { "application/json": { schema: InternalServerErrorSchema } }
6762
+ }
6763
+ }
6764
+ });
6765
+ var getProviderLinkCompletionRoute = (0, import_zod_openapi67.createRoute)({
6766
+ method: "get",
6767
+ path: "/auth/providers/{name}/link-completions/{code}",
6768
+ tags: ["federatedAuth"],
6769
+ summary: "Read a pending link completion's confirmation details (stage 3a \u2014 non-destructive)",
6770
+ request: {
6771
+ params: import_zod_openapi67.z.object({ name: import_zod_openapi67.z.string(), code: LinkCompletionCodeSchema })
6772
+ },
6773
+ responses: {
6774
+ 200: {
6775
+ description: "Pending, unconsumed completion bound to the caller \u2014 provider label fallback + optional display-only accountLabel",
6776
+ content: { "application/json": { schema: PendingLinkCompletionResponseSchema } }
6777
+ },
6778
+ 400: {
6779
+ description: "Authenticated but `{code}` fails the 43-character base64url shape (VALIDATION_ERROR)",
6780
+ content: { "application/json": { schema: ValidationErrorSchema } }
6781
+ },
6782
+ 401: {
6783
+ description: "Authentication required \u2014 resolved by middleware before this route's own `{code}` shape validation, so an unauthenticated + malformed code is still 401, never 400",
6784
+ content: { "application/json": { schema: AuthenticationRequiredErrorSchema } }
6785
+ },
6786
+ 403: {
6787
+ description: "Non-web credential (PAT / OAuth access token)",
6788
+ content: { "application/json": { schema: ApiErrorSchema } }
6789
+ },
6790
+ 404: {
6791
+ description: "Never-issued, expired, retention-expired, or bound to a different user/provider/authVersion \u2014 all collapse to the same generic NOT_FOUND (no result-unknown code exists)",
6792
+ content: { "application/json": { schema: ApiErrorSchema } }
6793
+ },
6794
+ 409: {
6795
+ description: "The caller's own completion was already consumed",
6796
+ content: { "application/json": { schema: LinkCompletionConsumedErrorSchema } }
6797
+ },
6798
+ 500: {
6799
+ description: "Internal server error",
6800
+ content: { "application/json": { schema: InternalServerErrorSchema } }
6801
+ }
6802
+ }
6803
+ });
6804
+ var completeProviderLinkRoute = (0, import_zod_openapi67.createRoute)({
6805
+ method: "post",
6806
+ path: "/auth/providers/{name}/link-completions/{code}",
6807
+ tags: ["federatedAuth"],
6808
+ summary: "Atomically consume a link completion code and insert the identity (stage 3b \u2014 terminal)",
6809
+ request: {
6810
+ params: import_zod_openapi67.z.object({ name: import_zod_openapi67.z.string(), code: LinkCompletionCodeSchema })
6811
+ },
6812
+ responses: {
6813
+ 200: {
6814
+ description: "Linked (fresh winner OR an already-consumed replay that resolves to the same owner) \u2014 the same body either way",
6815
+ content: { "application/json": { schema: CompleteProviderLinkResponseSchema } }
6816
+ },
6817
+ 400: {
6818
+ description: "Authenticated but `{code}` fails the 43-character base64url shape (VALIDATION_ERROR)",
6819
+ content: { "application/json": { schema: ValidationErrorSchema } }
6820
+ },
6821
+ 401: {
6822
+ description: "Authentication required \u2014 resolved by middleware before this route's own `{code}` shape validation, so an unauthenticated + malformed code is still 401, never 400",
6823
+ content: { "application/json": { schema: AuthenticationRequiredErrorSchema } }
6824
+ },
6825
+ 403: {
6826
+ description: "Non-web credential (PAT / OAuth access token)",
6827
+ content: { "application/json": { schema: ApiErrorSchema } }
6828
+ },
6829
+ 404: {
6830
+ description: "Never-issued, expired, retention-expired, or bound to a different user/provider \u2014 all collapse to the same generic NOT_FOUND",
6831
+ content: { "application/json": { schema: ApiErrorSchema } }
6832
+ },
6833
+ 409: {
6834
+ description: "FEDERATED_IDENTITY_IN_USE (provider account owned by someone else, or this user already has a different account of this provider), FEDERATED_LINK_AUTH_STATE_CHANGED (fresh User re-read found the session inactive or authVersion changed since link-start), or FEDERATED_LINK_NOT_LINKED (an already-consumed replay whose original insert has not landed) \u2014 no other conflict code exists.",
6835
+ content: { "application/json": { schema: CompleteProviderLinkConflictErrorSchema } }
6836
+ },
6747
6837
  500: {
6748
6838
  description: "Internal server error",
6749
6839
  content: { "application/json": { schema: InternalServerErrorSchema } }
@@ -6797,7 +6887,7 @@ var callbackFederatedProviderRoute = (0, import_zod_openapi67.createRoute)({
6797
6887
  },
6798
6888
  responses: {
6799
6889
  302: {
6800
- description: "Redirect to the trusted web login/complete page on success, or back to the trusted web /login on failure"
6890
+ description: "Ordinary sign-in: redirect to the trusted web login/complete page on success, or back to the trusted web /login on failure. Link flow (query `state` in the reserved crowilnk_ namespace): success redirects to `/me?provider=<name>&link_completion=<code>` (provider + completion code ONLY); failure redirects to `/me?provider=<name>&link=link_failed` (provider + the generic marker ONLY \u2014 never a completion code, never accountLabel, never the underlying reason)."
6801
6891
  },
6802
6892
  404: {
6803
6893
  description: "Unknown or unconfigured provider (also used when trusted origins cannot be resolved)",
@@ -6842,7 +6932,9 @@ var federatedAuthRoutes = {
6842
6932
  callbackFederatedProviderRoute,
6843
6933
  federatedHandoffRoute,
6844
6934
  listLinkedAuthProvidersRoute,
6845
- createAuthProviderLinkGrantRoute,
6935
+ startProviderLinkRoute,
6936
+ getProviderLinkCompletionRoute,
6937
+ completeProviderLinkRoute,
6846
6938
  unlinkAuthProviderRoute
6847
6939
  };
6848
6940
 
@@ -7778,7 +7870,7 @@ var lateContractApp = new import_zod_openapi79.OpenAPIHono().openapi(draftRoutes
7778
7870
  var adminSettingsContractApp = new import_zod_openapi79.OpenAPIHono().openapi(adminAppRoutes.getAppSettingsRoute, (c) => c.json(stubGetAppSettings, 200)).openapi(adminAppRoutes.updateAppSettingsRoute, (c) => c.json(stubUpdateAppSettings, 200)).openapi(adminAuthRoutes.getAuthSettingsRoute, (c) => c.json(stubAuthSettings, 200)).openapi(adminAuthRoutes.updateAuthSettingsRoute, (c) => c.json(stubAuthSettings, 200)).openapi(adminSecurityRoutes.getSecuritySettingsRoute, (c) => c.json(stubSecuritySettings, 200)).openapi(adminSecurityRoutes.updateSecuritySettingsRoute, (c) => c.json(stubSecuritySettings, 200)).openapi(adminMailRoutes.getMailSettingsRoute, (c) => c.json(stubMailSettings, 200)).openapi(adminMailRoutes.updateMailSettingsRoute, (c) => c.json(stubUpdateMailSettings, 200)).openapi(adminMailRoutes.sendTestMailRoute, (c) => c.json(stubSendTestMail, 200)).openapi(adminStorageRoutes.getStorageStatusRoute, (c) => c.json(stubStorageStatus, 200)).openapi(adminSearchRoutes.getSearchStatusRoute, (c) => c.json(stubSearchStatus, 200));
7779
7871
  var adminUsersPluginsContractApp = new import_zod_openapi79.OpenAPIHono().openapi(adminUsersRoutes.listUsersRoute, (c) => c.json(stubListAdminUsers, 200)).openapi(adminUsersRoutes.searchUsersByEmailRoute, (c) => c.json(stubSearchAdminUsersByEmail, 200)).openapi(adminUsersRoutes.pendingUsersCountRoute, (c) => c.json(stubPendingUsersCount, 200)).openapi(adminUsersRoutes.inviteUsersRoute, (c) => c.json(stubInviteUsers, 200)).openapi(adminUsersRoutes.editUserRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.makeAdminRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.removeFromAdminRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.activateUserRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.suspendUserRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.resetPasswordRoute, (c) => c.json(stubResetPassword, 200)).openapi(adminUsersRoutes.resendInviteRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.updateUserEmailRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.unlinkUserIdentityRoute, (c) => c.json(stubUnlinkUserIdentity, 200)).openapi(adminUsersRoutes.deleteUserRoute, (c) => c.json(stubDeleteAdminUser, 200)).openapi(adminPluginsRoutes.listPluginsRoute, (c) => c.json(stubListPlugins, 200)).openapi(adminPluginsRoutes.getPluginConfigRoute, (c) => c.json(stubPluginConfig, 200)).openapi(adminPluginsRoutes.updatePluginConfigRoute, (c) => c.json(stubUpdatePluginConfig, 200)).openapi(adminPluginsRoutes.getPluginReadinessRoute, (c) => c.json(stubPluginReadiness, 200)).openapi(adminPluginsRoutes.clearRenderCacheAllRoute, (c) => c.json(stubClearRenderCache, 200)).openapi(adminPluginsRoutes.clearRenderCachePluginRoute, (c) => c.json(stubClearRenderCache, 200));
7780
7872
  var oauthContractApp = new import_zod_openapi79.OpenAPIHono().openapi(oauthRoutes.authorizeRoute, (c) => c.json(stubAuthorize, 200)).openapi(oauthRoutes.tokenRoute, (c) => c.json(stubToken, 200)).openapi(oauthRoutes.revokeRoute, (c) => c.json(stubRevoke, 200)).openapi(oauthRoutes.discoveryRoute, (c) => c.json(stubDiscovery, 200)).openapi(oauthRoutes.deviceAuthorizeRoute, (c) => c.json(stubDeviceAuthorize, 200)).openapi(oauthRoutes.deviceInfoRoute, (c) => c.json(stubDeviceInfo, 200)).openapi(oauthRoutes.deviceVerifyRoute, (c) => c.json(stubDeviceVerify, 200)).openapi(oauthRoutes.clientInfoRoute, (c) => c.json(stubClientInfo, 200));
7781
- var federatedAuthContractApp = new import_zod_openapi79.OpenAPIHono().openapi(federatedAuthRoutes.listFederatedProvidersRoute, (c) => c.json(stubProviderList, 200)).openapi(federatedAuthRoutes.startFederatedProviderRoute, (c) => c.redirect("", 302)).openapi(federatedAuthRoutes.callbackFederatedProviderRoute, (c) => c.redirect("", 302)).openapi(federatedAuthRoutes.federatedHandoffRoute, (c) => c.json(stubTokens, 200)).openapi(federatedAuthRoutes.listLinkedAuthProvidersRoute, (c) => c.json({ identities: [] }, 200)).openapi(federatedAuthRoutes.createAuthProviderLinkGrantRoute, (c) => c.json({ linkGrant: "" }, 200)).openapi(federatedAuthRoutes.unlinkAuthProviderRoute, (c) => c.body(null, 204));
7873
+ var federatedAuthContractApp = new import_zod_openapi79.OpenAPIHono().openapi(federatedAuthRoutes.listFederatedProvidersRoute, (c) => c.json(stubProviderList, 200)).openapi(federatedAuthRoutes.startFederatedProviderRoute, (c) => c.redirect("", 302)).openapi(federatedAuthRoutes.callbackFederatedProviderRoute, (c) => c.redirect("", 302)).openapi(federatedAuthRoutes.federatedHandoffRoute, (c) => c.json(stubTokens, 200)).openapi(federatedAuthRoutes.listLinkedAuthProvidersRoute, (c) => c.json({ identities: [] }, 200)).openapi(federatedAuthRoutes.startProviderLinkRoute, (c) => c.json({ authorizationUrl: "" }, 200)).openapi(federatedAuthRoutes.getProviderLinkCompletionRoute, (c) => c.json({ provider: "" }, 200)).openapi(federatedAuthRoutes.completeProviderLinkRoute, (c) => c.json({ result: "linked" }, 200)).openapi(federatedAuthRoutes.unlinkAuthProviderRoute, (c) => c.body(null, 204));
7782
7874
  var federatedRegistrationContractApp = new import_zod_openapi79.OpenAPIHono().openapi(federatedRegistrationRoutes.getFederatedRegistrationRoute, (c) => c.json(stubFederatedRegistrationSnapshot, 200)).openapi(federatedRegistrationRoutes.submitFederatedRegistrationRoute, (c) => c.json({ status: "approval_required" }, 200)).openapi(federatedRegistrationRoutes.logoutFederatedRegistrationRoute, (c) => c.body(null, 204));
7783
7875
  var createClient = (baseUrl, options = {}) => (0, import_client.hc)(baseUrl, {
7784
7876
  headers: options.headers,
@@ -8052,6 +8144,8 @@ var WS_CLOSE_CODES = {
8052
8144
  CommentInvalidRequestErrorSchema,
8053
8145
  CommentNotFoundErrorSchema,
8054
8146
  CommentSchema,
8147
+ CompleteProviderLinkConflictErrorSchema,
8148
+ CompleteProviderLinkResponseSchema,
8055
8149
  ConfigReadinessIssueSchema,
8056
8150
  ConfigReadinessResponseSchema,
8057
8151
  ConfirmEmailChangeRequestSchema,
@@ -8064,8 +8158,6 @@ var WS_CLOSE_CODES = {
8064
8158
  CreateAdminResponseSchema,
8065
8159
  CreateDraftRequestSchema,
8066
8160
  CreateDraftResponseSchema,
8067
- CreateLinkGrantRequestSchema,
8068
- CreateLinkGrantResponseSchema,
8069
8161
  CreatePageRequestSchema,
8070
8162
  CrowiCodeSidecarSchema,
8071
8163
  CrowiDiagramNodeSchema,
@@ -8156,6 +8248,8 @@ var WS_CLOSE_CODES = {
8156
8248
  LanguageSchema,
8157
8249
  LikerSchema,
8158
8250
  LikersResponseSchema,
8251
+ LinkCompletionCodeSchema,
8252
+ LinkCompletionConsumedErrorSchema,
8159
8253
  LinkedAuthProviderListResponseSchema,
8160
8254
  ListAccessTokensResponseSchema,
8161
8255
  ListAdminUsersRequestSchema,
@@ -8220,6 +8314,7 @@ var WS_CLOSE_CODES = {
8220
8314
  PasswordErrorResponseSchema,
8221
8315
  PasswordUpdateSuccessSchema,
8222
8316
  PastAttachmentUsageSchema,
8317
+ PendingLinkCompletionResponseSchema,
8223
8318
  PendingUsersCountResponseSchema,
8224
8319
  PictureUploadResponseSchema,
8225
8320
  PluginAdminPlacementSchema,
@@ -8299,6 +8394,7 @@ var WS_CLOSE_CODES = {
8299
8394
  ShikiTokenLinesSchema,
8300
8395
  ShikiTokenSchema,
8301
8396
  ShikiTokenStyleSchema,
8397
+ StartProviderLinkResponseSchema,
8302
8398
  StorageDriverEntrySchema,
8303
8399
  SuccessResponseSchema,
8304
8400
  ThemeSchema,
@@ -8387,10 +8483,10 @@ var WS_CLOSE_CODES = {
8387
8483
  clearRenderCachePluginRoute,
8388
8484
  clientInfoRoute,
8389
8485
  commentRoutes,
8486
+ completeProviderLinkRoute,
8390
8487
  confirmEmailChangeRoute,
8391
8488
  createAccessTokenRoute,
8392
8489
  createAdminRoute,
8393
- createAuthProviderLinkGrantRoute,
8394
8490
  createClient,
8395
8491
  createDraftRoute,
8396
8492
  createPageRoute,
@@ -8428,6 +8524,7 @@ var WS_CLOSE_CODES = {
8428
8524
  getPluginReadinessRoute,
8429
8525
  getPresenceTokenRoute,
8430
8526
  getProfileRoute,
8527
+ getProviderLinkCompletionRoute,
8431
8528
  getRevisionRoute,
8432
8529
  getRevisionsRoute,
8433
8530
  getSearchStatusRoute,
@@ -8501,6 +8598,7 @@ var WS_CLOSE_CODES = {
8501
8598
  setPageGrantRoute,
8502
8599
  setWatchStatusRoute,
8503
8600
  startFederatedProviderRoute,
8601
+ startProviderLinkRoute,
8504
8602
  stripKnownHtmlTags,
8505
8603
  submitFederatedRegistrationRoute,
8506
8604
  suspendUserRoute,