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

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.mjs CHANGED
@@ -1047,7 +1047,7 @@ var adminStorageRoutes = {
1047
1047
  };
1048
1048
 
1049
1049
  // src/contracts/admin/users.ts
1050
- import { createRoute as createRoute8 } from "@hono/zod-openapi";
1050
+ import { createRoute as createRoute8, z as z14 } from "@hono/zod-openapi";
1051
1051
 
1052
1052
  // src/schemas/admin/users.ts
1053
1053
  import { z as z13 } from "@hono/zod-openapi";
@@ -1101,8 +1101,11 @@ var ListAdminUsersRequestSchema = z13.object({
1101
1101
  page: z13.coerce.number().int().min(1).optional().default(1),
1102
1102
  limit: z13.coerce.number().int().min(1).max(100).optional().default(50)
1103
1103
  });
1104
+ var AdminUserListItemSchema = UserPublicSchema.extend({
1105
+ linkedProviders: z13.array(z13.string())
1106
+ });
1104
1107
  var ListAdminUsersResponseSchema = z13.object({
1105
- users: z13.array(UserPublicSchema),
1108
+ users: z13.array(AdminUserListItemSchema),
1106
1109
  pager: AdminPagerSchema
1107
1110
  });
1108
1111
  var SearchAdminUsersByEmailRequestSchema = z13.object({
@@ -1137,8 +1140,7 @@ var InviteUsersResponseSchema = z13.object({
1137
1140
  results: z13.array(InvitedUserResultSchema)
1138
1141
  });
1139
1142
  var EditAdminUserRequestSchema = z13.object({
1140
- name: z13.string().min(1),
1141
- email: z13.string().email()
1143
+ name: z13.string().min(1)
1142
1144
  });
1143
1145
  var AdminUserMutationResponseSchema = z13.object({
1144
1146
  user: UserPublicSchema
@@ -1150,6 +1152,32 @@ var ResetPasswordResponseSchema = z13.object({
1150
1152
  var UpdateAdminUserEmailRequestSchema = z13.object({
1151
1153
  email: z13.string().email()
1152
1154
  });
1155
+ var EmailLockedByFederatedIdentityErrorSchema = z13.object({
1156
+ error: z13.object({
1157
+ code: z13.literal("EMAIL_LOCKED_BY_FEDERATED_IDENTITY"),
1158
+ message: z13.string()
1159
+ })
1160
+ });
1161
+ var AdminUserIdentityParamSchema = AdminUserIdParamSchema.extend({
1162
+ provider: z13.string()
1163
+ });
1164
+ var UnlinkUserIdentityResponseSchema = z13.object({
1165
+ user: UserPublicSchema,
1166
+ passwordIssued: z13.boolean(),
1167
+ newPassword: z13.string().optional()
1168
+ });
1169
+ var UnlinkUserIdentityNotFoundErrorSchema = z13.object({
1170
+ error: z13.object({
1171
+ code: z13.enum(["NOT_FOUND", "NOT_LINKED"]),
1172
+ message: z13.string()
1173
+ })
1174
+ });
1175
+ var UnlinkUserIdentityConflictErrorSchema = z13.object({
1176
+ error: z13.object({
1177
+ code: z13.enum(["CANNOT_UNLINK_SELF", "PASSWORD_AUTH_DISABLED"]),
1178
+ message: z13.string()
1179
+ })
1180
+ });
1153
1181
  var DeleteAdminUserResponseSchema = z13.object({
1154
1182
  deletedId: z13.string()
1155
1183
  });
@@ -1253,7 +1281,7 @@ var editUserRoute = createRoute8({
1253
1281
  path: "/admin/users/{id}",
1254
1282
  tags: ["admin.users"],
1255
1283
  security: [{ bearerAuth: [] }],
1256
- summary: "Update a user's name and email",
1284
+ summary: "Update a user's name (email changes go through PUT /admin/users/{id}/email)",
1257
1285
  request: {
1258
1286
  params: AdminUserIdParamSchema,
1259
1287
  body: {
@@ -1281,10 +1309,6 @@ var editUserRoute = createRoute8({
1281
1309
  description: "User not found",
1282
1310
  content: { "application/json": { schema: NotFoundErrorSchema } }
1283
1311
  },
1284
- 409: {
1285
- description: "Email already in use by another user",
1286
- content: { "application/json": { schema: ConflictErrorSchema } }
1287
- },
1288
1312
  500: {
1289
1313
  description: "Internal server error",
1290
1314
  content: { "application/json": { schema: InternalServerErrorSchema } }
@@ -1545,8 +1569,48 @@ var updateUserEmailRoute = createRoute8({
1545
1569
  content: { "application/json": { schema: NotFoundErrorSchema } }
1546
1570
  },
1547
1571
  409: {
1548
- description: "Email already in use by another user",
1549
- content: { "application/json": { schema: ConflictErrorSchema } }
1572
+ description: "Email already in use by another user, or locked by a linked federated identity",
1573
+ content: { "application/json": { schema: z14.union([ConflictErrorSchema, EmailLockedByFederatedIdentityErrorSchema]) } }
1574
+ },
1575
+ 500: {
1576
+ description: "Internal server error",
1577
+ content: { "application/json": { schema: InternalServerErrorSchema } }
1578
+ }
1579
+ }
1580
+ });
1581
+ var unlinkUserIdentityRoute = createRoute8({
1582
+ method: "delete",
1583
+ path: "/admin/users/{id}/identities/{provider}",
1584
+ tags: ["admin.users"],
1585
+ security: [{ bearerAuth: [] }],
1586
+ summary: "Unlink a user's federated identity for a provider (admin-initiated)",
1587
+ request: {
1588
+ params: AdminUserIdentityParamSchema
1589
+ },
1590
+ responses: {
1591
+ 200: {
1592
+ description: "Identity removed; passwordIssued/newPassword report whether a password was generated",
1593
+ content: { "application/json": { schema: UnlinkUserIdentityResponseSchema } }
1594
+ },
1595
+ 400: {
1596
+ description: "Invalid id",
1597
+ content: { "application/json": { schema: ValidationErrorSchema } }
1598
+ },
1599
+ 401: {
1600
+ description: "Authentication required",
1601
+ content: { "application/json": { schema: AuthenticationRequiredErrorSchema } }
1602
+ },
1603
+ 403: {
1604
+ description: "Admin permission required",
1605
+ content: { "application/json": { schema: AdminRequiredErrorSchema } }
1606
+ },
1607
+ 404: {
1608
+ description: "User not found, or the user has no identity for this provider",
1609
+ content: { "application/json": { schema: UnlinkUserIdentityNotFoundErrorSchema } }
1610
+ },
1611
+ 409: {
1612
+ description: "Refused: the target is the operating admin themself, or password auth is disabled instance-wide",
1613
+ content: { "application/json": { schema: UnlinkUserIdentityConflictErrorSchema } }
1550
1614
  },
1551
1615
  500: {
1552
1616
  description: "Internal server error",
@@ -1631,6 +1695,7 @@ var adminUsersRoutes = {
1631
1695
  resetPasswordRoute,
1632
1696
  resendInviteRoute,
1633
1697
  updateUserEmailRoute,
1698
+ unlinkUserIdentityRoute,
1634
1699
  pendingUsersCountRoute,
1635
1700
  deleteUserRoute
1636
1701
  };
@@ -7101,6 +7166,7 @@ var stubSearchAdminUsersByEmail = { users: [] };
7101
7166
  var stubInviteUsers = { results: [] };
7102
7167
  var stubAdminUserMutation = { user: stubUserPublic };
7103
7168
  var stubResetPassword = { user: stubUserPublic, newPassword: "" };
7169
+ var stubUnlinkUserIdentity = { user: stubUserPublic, passwordIssued: false };
7104
7170
  var stubDeleteAdminUser = { deletedId: "" };
7105
7171
  var stubPendingUsersCount = { count: 0 };
7106
7172
  var stubListPlugins = { plugins: [] };
@@ -7146,7 +7212,7 @@ var bookmarkBacklinkCommentRevisionChain = new OpenAPIHono().openapi(bookmarkRou
7146
7212
  var pageChain = new OpenAPIHono().openapi(pageRoutes.getPageRoute, (c) => c.json(stubPageWithRevision, 200)).openapi(pageRoutes.listPagesRoute, (c) => c.json(stubListPages, 200)).openapi(pageRoutes.listPageChildrenRoute, (c) => c.json(stubListPageChildren, 200)).openapi(pageRoutes.createPageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.updatePageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.setPageGrantRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.seenPageRoute, (c) => c.json(stubSeenUsers, 200)).openapi(pageRoutes.getSeenUsersRoute, (c) => c.json(stubSeenUsers, 200)).openapi(pageRoutes.likePageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.unlikePageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.claimPageLinkAccessRoute, (c) => c.json({ ...stubPageWithRevision, granted: false }, 200)).openapi(pageRoutes.getWatchStatusRoute, (c) => c.json(stubWatchStatus, 200)).openapi(pageRoutes.setWatchStatusRoute, (c) => c.json(stubWatchStatus, 200)).openapi(pageRoutes.deletePageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.revertDeletedPageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.revertToRevisionRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.renamePageRoute, (c) => c.json({ ...stubPageResponse, renamed_count: 1 }, 200)).openapi(pageRoutes.renameSubtreeRoute, (c) => c.json({ renamed_count: 0 }, 200)).openapi(pagePreviewRoutes.previewPageRoute, (c) => c.json(stubPreview, 200)).openapi(pageCollabRoutes.getYjsTokenRoute, (c) => c.json(stubWsToken, 200)).openapi(presenceRoutes.getPresenceTokenRoute, (c) => c.json(stubPresenceToken, 200)).openapi(presenceRoutes.getLikersRoute, (c) => c.json(stubLikers, 200));
7147
7213
  var lateContractApp = new OpenAPIHono().openapi(draftRoutes.createDraftRoute, (c) => c.json(stubCreateDraft, 201)).openapi(draftRoutes.listDraftsRoute, (c) => c.json(stubListDrafts, 200)).openapi(draftRoutes.cancelDraftRoute, (c) => c.json(stubCreateDraft, 200)).openapi(autocompleteRoutes.autocompleteUsersRoute, (c) => c.json(stubAutocomplete, 200)).openapi(autocompleteRoutes.autocompletePagesRoute, (c) => c.json(stubAutocomplete, 200)).openapi(attachmentRoutes.getAttachmentUsageRoute, (c) => c.json(stubAttachmentUsage, 200)).openapi(attachmentRoutes.listAttachmentsRoute, (c) => c.json(stubListAttachments, 200)).openapi(attachmentRoutes.addAttachmentRoute, (c) => c.json(stubAddAttachment, 200)).openapi(attachmentRoutes.uploadAttachmentRoute, (c) => c.json(stubUploadAttachment, 200)).openapi(attachmentRoutes.getAttachmentMetaRoute, (c) => c.json(stubAttachmentMeta, 200)).openapi(attachmentRoutes.removeAttachmentRoute, (c) => c.json(stubRemoveAttachment, 200)).openapi(attachmentRoutes.getUploadPolicyRoute, (c) => c.json(stubUploadPolicy, 200)).openapi(searchRoutes.searchPagesRoute, (c) => c.json(stubSearchPages, 200)).openapi(adminCryptoRoutes.getCryptoStatusRoute, (c) => c.json(stubCryptoStatus, 200)).openapi(adminCryptoRoutes.reencryptAllRoute, (c) => c.json(stubReencrypt, 200)).openapi(notificationRoutes.listNotificationsRoute, (c) => c.json(stubListNotifications, 200)).openapi(notificationRoutes.markAllAsReadRoute, (c) => c.json(stubMarkAllAsRead, 200)).openapi(notificationRoutes.getNotificationsTokenRoute, (c) => c.json(stubNotificationsToken, 200)).openapi(notificationRoutes.getUnreadCountRoute, (c) => c.json(stubNotificationStatus, 200)).openapi(notificationRoutes.openNotificationRoute, (c) => c.json(stubOpenNotification, 200));
7148
7214
  var adminSettingsContractApp = new 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));
7149
- var adminUsersPluginsContractApp = new 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.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));
7215
+ var adminUsersPluginsContractApp = new 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));
7150
7216
  var oauthContractApp = new 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));
7151
7217
  var federatedAuthContractApp = new 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));
7152
7218
  var federatedRegistrationContractApp = new 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));
@@ -7384,6 +7450,8 @@ export {
7384
7450
  AdminRequiredErrorSchema,
7385
7451
  AdminSidebarSection,
7386
7452
  AdminUserIdParamSchema,
7453
+ AdminUserIdentityParamSchema,
7454
+ AdminUserListItemSchema,
7387
7455
  AdminUserMutationResponseSchema,
7388
7456
  ApiErrorSchema,
7389
7457
  AppInfoResponseSchema,
@@ -7467,6 +7535,7 @@ export {
7467
7535
  DraftSummarySchema,
7468
7536
  ERROR_CODES,
7469
7537
  EditAdminUserRequestSchema,
7538
+ EmailLockedByFederatedIdentityErrorSchema,
7470
7539
  EncryptionNotConfiguredErrorSchema,
7471
7540
  ErrorCodeSchema,
7472
7541
  FRONTMATTER_MAX_ENTRIES,
@@ -7679,6 +7748,9 @@ export {
7679
7748
  TokenResponseSchema,
7680
7749
  UPLOAD_ALLOWED_MIME,
7681
7750
  UnlinkAuthProviderErrorSchema,
7751
+ UnlinkUserIdentityConflictErrorSchema,
7752
+ UnlinkUserIdentityNotFoundErrorSchema,
7753
+ UnlinkUserIdentityResponseSchema,
7682
7754
  UpdateAdminUserEmailRequestSchema,
7683
7755
  UpdateAppSettingsRequestSchema,
7684
7756
  UpdateAppSettingsResponseSchema,
@@ -7876,6 +7948,7 @@ export {
7876
7948
  tokenRoute,
7877
7949
  unlikePageRoute,
7878
7950
  unlinkAuthProviderRoute,
7951
+ unlinkUserIdentityRoute,
7879
7952
  unwrapRenderedAst,
7880
7953
  updateAppSettingsRoute,
7881
7954
  updateAuthSettingsRoute,