@crowi/api-contract 2.0.0-alpha.12 → 2.0.0-alpha.13
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/generated/openapi.d.mts +903 -13
- package/dist/generated/openapi.d.ts +903 -13
- package/dist/generated/openapi.js.map +1 -1
- package/dist/index.d.mts +5083 -1296
- package/dist/index.d.ts +5083 -1296
- package/dist/index.js +554 -83
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +517 -73
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -105,8 +105,12 @@ var ERROR_CODES = [
|
|
|
105
105
|
"INVALID_CREDENTIALS",
|
|
106
106
|
"REFRESH_TOKEN_REQUIRED",
|
|
107
107
|
"REGISTRATION_CLOSED",
|
|
108
|
+
// --- federated sign-in (RFC-0014) ---
|
|
109
|
+
"FEDERATED_HANDOFF_INVALID",
|
|
110
|
+
"FEDERATED_HANDOFF_CONSUMED",
|
|
108
111
|
// --- admin subsystems ---
|
|
109
112
|
"ENCRYPTION_NOT_CONFIGURED",
|
|
113
|
+
"MAIL_FROM_NOT_CONFIGURED",
|
|
110
114
|
"MAIL_TEST_FAILED",
|
|
111
115
|
"PLUGIN_NOT_FOUND",
|
|
112
116
|
"PLUGIN_CONFIG_VALIDATION_FAILED"
|
|
@@ -387,10 +391,16 @@ var SendTestMailResponseSchema = z5.object({
|
|
|
387
391
|
to: z5.string()
|
|
388
392
|
});
|
|
389
393
|
var SendTestMailErrorSchema = z5.object({
|
|
390
|
-
error: z5.
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
+
error: z5.discriminatedUnion("code", [
|
|
395
|
+
z5.object({
|
|
396
|
+
code: z5.literal("MAIL_FROM_NOT_CONFIGURED"),
|
|
397
|
+
message: z5.literal("The mail sender address is not configured.")
|
|
398
|
+
}),
|
|
399
|
+
z5.object({
|
|
400
|
+
code: z5.literal("MAIL_TEST_FAILED"),
|
|
401
|
+
message: z5.enum(["Failed to send the test email. Check the active mail sender configuration.", "No email address on the calling user"])
|
|
402
|
+
})
|
|
403
|
+
])
|
|
394
404
|
});
|
|
395
405
|
var MailSettingsValidationErrorSchema = z5.object({
|
|
396
406
|
bodyResult: z5.object({
|
|
@@ -503,7 +513,7 @@ var sendTestMailRoute = createRoute3({
|
|
|
503
513
|
content: { "application/json": { schema: AdminRequiredErrorSchema } }
|
|
504
514
|
},
|
|
505
515
|
502: {
|
|
506
|
-
description: "Test mail dispatch failed (
|
|
516
|
+
description: "Test mail dispatch failed (mail dispatch failure \u2014 e.g. sender/transport error, or the mail sender address is not configured)",
|
|
507
517
|
content: { "application/json": { schema: SendTestMailErrorSchema } }
|
|
508
518
|
}
|
|
509
519
|
}
|
|
@@ -653,13 +663,16 @@ var PluginReadinessFieldSchema = z6.object({
|
|
|
653
663
|
name: z6.string(),
|
|
654
664
|
configured: z6.literal(false)
|
|
655
665
|
});
|
|
656
|
-
var
|
|
657
|
-
name
|
|
658
|
-
|
|
666
|
+
var ConfigReadinessIssueSchema = z6.object({
|
|
667
|
+
/** Stable id — `plugin:<name>` or a core declaration id (e.g. `core:mail`). */
|
|
668
|
+
id: z6.string(),
|
|
669
|
+
source: z6.enum(["plugin", "core"]),
|
|
670
|
+
label: z6.string(),
|
|
671
|
+
href: z6.string(),
|
|
659
672
|
fields: z6.array(PluginReadinessFieldSchema)
|
|
660
673
|
});
|
|
661
|
-
var
|
|
662
|
-
issues: z6.array(
|
|
674
|
+
var ConfigReadinessResponseSchema = z6.object({
|
|
675
|
+
issues: z6.array(ConfigReadinessIssueSchema)
|
|
663
676
|
});
|
|
664
677
|
|
|
665
678
|
// src/contracts/admin/plugins.ts
|
|
@@ -797,11 +810,11 @@ var getPluginReadinessRoute = createRoute4({
|
|
|
797
810
|
path: "/admin/plugins/readiness",
|
|
798
811
|
tags: ["admin.plugins"],
|
|
799
812
|
security: [{ bearerAuth: [] }],
|
|
800
|
-
summary: "List active plugins missing required readiness
|
|
813
|
+
summary: "List active plugins and core config missing required readiness fields",
|
|
801
814
|
responses: {
|
|
802
815
|
200: {
|
|
803
|
-
description: "Readiness issues for active plugins (empty when everything is configured)",
|
|
804
|
-
content: { "application/json": { schema:
|
|
816
|
+
description: "Readiness issues for active plugins and core config (empty when everything is configured)",
|
|
817
|
+
content: { "application/json": { schema: ConfigReadinessResponseSchema } }
|
|
805
818
|
},
|
|
806
819
|
401: {
|
|
807
820
|
description: "Authentication required",
|
|
@@ -3518,6 +3531,19 @@ var UserProfileResponseSchema = z31.object({
|
|
|
3518
3531
|
introduction: z31.string().optional(),
|
|
3519
3532
|
hasPassword: z31.boolean(),
|
|
3520
3533
|
createdAt: z31.string(),
|
|
3534
|
+
/**
|
|
3535
|
+
* True when the account has at least one linked federated identity
|
|
3536
|
+
* (`UserIdentity` row). The email address on a federated account is
|
|
3537
|
+
* fixed to the value the identity provider verified — `PUT /me`
|
|
3538
|
+
* refuses a change and returns `EMAIL_LOCKED_BY_FEDERATED_IDENTITY`
|
|
3539
|
+
* when this is true and a different email is submitted. The web uses
|
|
3540
|
+
* this to disable the email field and point to the Security tab.
|
|
3541
|
+
*
|
|
3542
|
+
* Always reflects the account's current state — on `GET /me` and on
|
|
3543
|
+
* every 200 from `PUT /me`, including a `PUT` that changed only name /
|
|
3544
|
+
* lang.
|
|
3545
|
+
*/
|
|
3546
|
+
federated: z31.boolean(),
|
|
3521
3547
|
/**
|
|
3522
3548
|
* True when the profile update requested a new email that is awaiting
|
|
3523
3549
|
* confirmation: the stored `email` is unchanged and a confirmation
|
|
@@ -5887,23 +5913,404 @@ var tokenAuthRoutes = {
|
|
|
5887
5913
|
tokenMeRoute
|
|
5888
5914
|
};
|
|
5889
5915
|
|
|
5916
|
+
// src/contracts/federated-auth.ts
|
|
5917
|
+
import { createRoute as createRoute29, z as z53 } from "@hono/zod-openapi";
|
|
5918
|
+
|
|
5919
|
+
// src/schemas/federated-auth.ts
|
|
5920
|
+
import { z as z52 } from "@hono/zod-openapi";
|
|
5921
|
+
var FederatedProviderSchema = z52.object({
|
|
5922
|
+
name: z52.string(),
|
|
5923
|
+
buttonLabel: z52.string(),
|
|
5924
|
+
iconUrl: z52.string().optional()
|
|
5925
|
+
});
|
|
5926
|
+
var ProviderListResponseSchema = z52.object({
|
|
5927
|
+
providers: z52.array(FederatedProviderSchema)
|
|
5928
|
+
});
|
|
5929
|
+
var SenderPublicJwkSchema = z52.object({
|
|
5930
|
+
kty: z52.literal("EC"),
|
|
5931
|
+
crv: z52.literal("P-256"),
|
|
5932
|
+
x: z52.string(),
|
|
5933
|
+
y: z52.string()
|
|
5934
|
+
});
|
|
5935
|
+
var SenderProofSchema = z52.object({
|
|
5936
|
+
publicJwk: SenderPublicJwkSchema,
|
|
5937
|
+
/** base64url ES256 signature over the canonical handoff message. */
|
|
5938
|
+
signature: z52.string()
|
|
5939
|
+
});
|
|
5940
|
+
var FederatedHandoffRequestSchema = z52.object({
|
|
5941
|
+
code: z52.string(),
|
|
5942
|
+
proof: SenderProofSchema
|
|
5943
|
+
});
|
|
5944
|
+
var FederatedHandoffResponseSchema = TokenAuthResponseSchema;
|
|
5945
|
+
var LinkedAuthProviderListResponseSchema = z52.object({
|
|
5946
|
+
identities: z52.array(z52.object({ provider: z52.string() }))
|
|
5947
|
+
});
|
|
5948
|
+
var CreateLinkGrantRequestSchema = z52.object({
|
|
5949
|
+
/** RFC 7638 thumbprint of the P-256 public key this browser will use at `/start` — binds the grant to this browser (AC-2). */
|
|
5950
|
+
handoffChallenge: z52.string().min(1)
|
|
5951
|
+
});
|
|
5952
|
+
var CreateLinkGrantResponseSchema = z52.object({
|
|
5953
|
+
linkGrant: z52.string()
|
|
5954
|
+
});
|
|
5955
|
+
var UnlinkAuthProviderErrorSchema = z52.object({
|
|
5956
|
+
error: z52.object({
|
|
5957
|
+
code: z52.enum(["FEDERATED_UNLINK_DISABLED", "PASSWORD_REQUIRED"]),
|
|
5958
|
+
message: z52.string()
|
|
5959
|
+
})
|
|
5960
|
+
});
|
|
5961
|
+
|
|
5962
|
+
// src/contracts/federated-auth.ts
|
|
5963
|
+
var ContinuePathSchema = z53.string().regex(/^\/(?!\/)[^\\\x00-\x1F\x7F]*$/, 'continue must be a local path starting with a single "/" and contain no backslash or control characters').max(2e3, "continue must be at most 2000 characters");
|
|
5964
|
+
var listFederatedProvidersRoute = createRoute29({
|
|
5965
|
+
method: "get",
|
|
5966
|
+
path: "/auth/providers",
|
|
5967
|
+
tags: ["federatedAuth"],
|
|
5968
|
+
summary: "List enabled OAuth2/OIDC federated sign-in providers",
|
|
5969
|
+
responses: {
|
|
5970
|
+
200: {
|
|
5971
|
+
description: "Enabled providers, in name order",
|
|
5972
|
+
content: { "application/json": { schema: ProviderListResponseSchema } }
|
|
5973
|
+
},
|
|
5974
|
+
500: {
|
|
5975
|
+
description: "Internal server error",
|
|
5976
|
+
content: { "application/json": { schema: InternalServerErrorSchema } }
|
|
5977
|
+
}
|
|
5978
|
+
}
|
|
5979
|
+
});
|
|
5980
|
+
var startFederatedProviderRoute = createRoute29({
|
|
5981
|
+
method: "get",
|
|
5982
|
+
path: "/auth/providers/{name}/start",
|
|
5983
|
+
tags: ["federatedAuth"],
|
|
5984
|
+
summary: "Top-level navigation that redirects the browser to the named provider",
|
|
5985
|
+
request: {
|
|
5986
|
+
params: z53.object({ name: z53.string() }),
|
|
5987
|
+
query: z53.object({
|
|
5988
|
+
continue: ContinuePathSchema,
|
|
5989
|
+
/** base64url(JSON) of the sender's P-256 public JWK. */
|
|
5990
|
+
handoff_jwk: z53.string().min(1),
|
|
5991
|
+
/** base64url ES256 signature over the start canonical message. */
|
|
5992
|
+
handoff_proof: z53.string().min(1),
|
|
5993
|
+
/**
|
|
5994
|
+
* RFC-0014 phase 3 — `'1'` switches this start into LINK mode: the
|
|
5995
|
+
* request must carry a web-session JWT, and the flow attaches the
|
|
5996
|
+
* resulting identity to that session's user instead of signing
|
|
5997
|
+
* anyone in. Absent (the ordinary sign-in start) the route stays
|
|
5998
|
+
* fully public.
|
|
5999
|
+
*/
|
|
6000
|
+
link: z53.literal("1").optional(),
|
|
6001
|
+
/** The opaque id from `POST /auth/providers/{name}/link-grants`. Required when `link=1`, ignored otherwise. */
|
|
6002
|
+
link_grant: z53.string().min(1).optional()
|
|
6003
|
+
})
|
|
6004
|
+
},
|
|
6005
|
+
responses: {
|
|
6006
|
+
302: { description: "Redirect to the provider authorization endpoint" },
|
|
6007
|
+
400: {
|
|
6008
|
+
description: "Malformed continue / sender proof, or an invalid/expired/mismatched link grant",
|
|
6009
|
+
content: { "application/json": { schema: ApiErrorSchema } }
|
|
6010
|
+
},
|
|
6011
|
+
401: {
|
|
6012
|
+
description: "link=1 without a web-session JWT \u2014 never downgraded to the public sign-in start",
|
|
6013
|
+
content: { "application/json": { schema: ApiErrorSchema } }
|
|
6014
|
+
},
|
|
6015
|
+
403: {
|
|
6016
|
+
description: "link=1 with a non-web credential (PAT / OAuth access token)",
|
|
6017
|
+
content: { "application/json": { schema: ApiErrorSchema } }
|
|
6018
|
+
},
|
|
6019
|
+
404: {
|
|
6020
|
+
description: "Unknown, unconfigured, or credential-kind provider",
|
|
6021
|
+
content: { "application/json": { schema: ApiErrorSchema } }
|
|
6022
|
+
},
|
|
6023
|
+
500: {
|
|
6024
|
+
description: "Internal server error",
|
|
6025
|
+
content: { "application/json": { schema: InternalServerErrorSchema } }
|
|
6026
|
+
}
|
|
6027
|
+
}
|
|
6028
|
+
});
|
|
6029
|
+
var listLinkedAuthProvidersRoute = createRoute29({
|
|
6030
|
+
method: "get",
|
|
6031
|
+
path: "/auth/providers/identities",
|
|
6032
|
+
tags: ["federatedAuth"],
|
|
6033
|
+
summary: "List the provider slugs the current user has linked",
|
|
6034
|
+
responses: {
|
|
6035
|
+
200: {
|
|
6036
|
+
description: "Linked provider slugs, in name order",
|
|
6037
|
+
content: { "application/json": { schema: LinkedAuthProviderListResponseSchema } }
|
|
6038
|
+
},
|
|
6039
|
+
401: {
|
|
6040
|
+
description: "Authentication required",
|
|
6041
|
+
content: { "application/json": { schema: AuthenticationRequiredErrorSchema } }
|
|
6042
|
+
},
|
|
6043
|
+
500: {
|
|
6044
|
+
description: "Internal server error",
|
|
6045
|
+
content: { "application/json": { schema: InternalServerErrorSchema } }
|
|
6046
|
+
}
|
|
6047
|
+
}
|
|
6048
|
+
});
|
|
6049
|
+
var createAuthProviderLinkGrantRoute = createRoute29({
|
|
6050
|
+
method: "post",
|
|
6051
|
+
path: "/auth/providers/{name}/link-grants",
|
|
6052
|
+
tags: ["federatedAuth"],
|
|
6053
|
+
summary: "Mint a short-lived, opaque grant that authorizes ONE link start for the current web session",
|
|
6054
|
+
request: {
|
|
6055
|
+
params: z53.object({ name: z53.string() }),
|
|
6056
|
+
body: { content: { "application/json": { schema: CreateLinkGrantRequestSchema } } }
|
|
6057
|
+
},
|
|
6058
|
+
responses: {
|
|
6059
|
+
200: {
|
|
6060
|
+
description: "Opaque single-use grant id",
|
|
6061
|
+
content: { "application/json": { schema: CreateLinkGrantResponseSchema } }
|
|
6062
|
+
},
|
|
6063
|
+
401: {
|
|
6064
|
+
description: "Authentication required",
|
|
6065
|
+
content: { "application/json": { schema: AuthenticationRequiredErrorSchema } }
|
|
6066
|
+
},
|
|
6067
|
+
403: {
|
|
6068
|
+
description: "Non-web credential (PAT / OAuth access token)",
|
|
6069
|
+
content: { "application/json": { schema: ApiErrorSchema } }
|
|
6070
|
+
},
|
|
6071
|
+
404: {
|
|
6072
|
+
description: "Unknown, unconfigured, or credential-kind provider",
|
|
6073
|
+
content: { "application/json": { schema: ApiErrorSchema } }
|
|
6074
|
+
},
|
|
6075
|
+
500: {
|
|
6076
|
+
description: "Internal server error",
|
|
6077
|
+
content: { "application/json": { schema: InternalServerErrorSchema } }
|
|
6078
|
+
}
|
|
6079
|
+
}
|
|
6080
|
+
});
|
|
6081
|
+
var unlinkAuthProviderRoute = createRoute29({
|
|
6082
|
+
method: "delete",
|
|
6083
|
+
path: "/auth/providers/{name}/identity",
|
|
6084
|
+
tags: ["federatedAuth"],
|
|
6085
|
+
summary: "Disconnect the current user's identity for this provider",
|
|
6086
|
+
request: {
|
|
6087
|
+
params: z53.object({ name: z53.string() })
|
|
6088
|
+
},
|
|
6089
|
+
responses: {
|
|
6090
|
+
204: { description: "Identity removed" },
|
|
6091
|
+
401: {
|
|
6092
|
+
description: "Authentication required",
|
|
6093
|
+
content: { "application/json": { schema: AuthenticationRequiredErrorSchema } }
|
|
6094
|
+
},
|
|
6095
|
+
403: {
|
|
6096
|
+
description: "Non-web credential (PAT / OAuth access token)",
|
|
6097
|
+
content: { "application/json": { schema: ApiErrorSchema } }
|
|
6098
|
+
},
|
|
6099
|
+
404: {
|
|
6100
|
+
description: "No identity linked for this provider",
|
|
6101
|
+
content: { "application/json": { schema: ApiErrorSchema } }
|
|
6102
|
+
},
|
|
6103
|
+
409: {
|
|
6104
|
+
description: "Refused: password auth is disabled instance-wide, or this user has no password set",
|
|
6105
|
+
content: { "application/json": { schema: UnlinkAuthProviderErrorSchema } }
|
|
6106
|
+
},
|
|
6107
|
+
500: {
|
|
6108
|
+
description: "Internal server error",
|
|
6109
|
+
content: { "application/json": { schema: InternalServerErrorSchema } }
|
|
6110
|
+
}
|
|
6111
|
+
}
|
|
6112
|
+
});
|
|
6113
|
+
var callbackFederatedProviderRoute = createRoute29({
|
|
6114
|
+
method: "get",
|
|
6115
|
+
path: "/auth/providers/{name}/callback",
|
|
6116
|
+
tags: ["federatedAuth"],
|
|
6117
|
+
summary: "Provider redirect target; completes the OAuth2/OIDC exchange",
|
|
6118
|
+
request: {
|
|
6119
|
+
params: z53.object({ name: z53.string() }),
|
|
6120
|
+
query: z53.object({
|
|
6121
|
+
code: z53.string().optional(),
|
|
6122
|
+
state: z53.string().optional(),
|
|
6123
|
+
error: z53.string().optional()
|
|
6124
|
+
})
|
|
6125
|
+
},
|
|
6126
|
+
responses: {
|
|
6127
|
+
302: {
|
|
6128
|
+
description: "Redirect to the trusted web login/complete page on success, or back to the trusted web /login on failure"
|
|
6129
|
+
},
|
|
6130
|
+
404: {
|
|
6131
|
+
description: "Unknown or unconfigured provider (also used when trusted origins cannot be resolved)",
|
|
6132
|
+
content: { "application/json": { schema: ApiErrorSchema } }
|
|
6133
|
+
},
|
|
6134
|
+
500: {
|
|
6135
|
+
description: "Internal server error",
|
|
6136
|
+
content: { "application/json": { schema: InternalServerErrorSchema } }
|
|
6137
|
+
}
|
|
6138
|
+
}
|
|
6139
|
+
});
|
|
6140
|
+
var federatedHandoffRoute = createRoute29({
|
|
6141
|
+
method: "post",
|
|
6142
|
+
path: "/auth/handoff",
|
|
6143
|
+
tags: ["federatedAuth"],
|
|
6144
|
+
summary: "Exchange a sender-constrained federated handoff code for session tokens",
|
|
6145
|
+
request: {
|
|
6146
|
+
body: { content: { "application/json": { schema: FederatedHandoffRequestSchema } } }
|
|
6147
|
+
},
|
|
6148
|
+
responses: {
|
|
6149
|
+
200: {
|
|
6150
|
+
description: "Session tokens \u2014 same shape as POST /auth/login",
|
|
6151
|
+
content: { "application/json": { schema: FederatedHandoffResponseSchema } }
|
|
6152
|
+
},
|
|
6153
|
+
401: {
|
|
6154
|
+
description: "Invalid / expired handoff code, or sender proof did not verify",
|
|
6155
|
+
content: { "application/json": { schema: ApiErrorSchema } }
|
|
6156
|
+
},
|
|
6157
|
+
409: {
|
|
6158
|
+
description: "Handoff code already consumed",
|
|
6159
|
+
content: { "application/json": { schema: ApiErrorSchema } }
|
|
6160
|
+
},
|
|
6161
|
+
500: {
|
|
6162
|
+
description: "Internal server error",
|
|
6163
|
+
content: { "application/json": { schema: InternalServerErrorSchema } }
|
|
6164
|
+
}
|
|
6165
|
+
}
|
|
6166
|
+
});
|
|
6167
|
+
var federatedAuthRoutes = {
|
|
6168
|
+
listFederatedProvidersRoute,
|
|
6169
|
+
startFederatedProviderRoute,
|
|
6170
|
+
callbackFederatedProviderRoute,
|
|
6171
|
+
federatedHandoffRoute,
|
|
6172
|
+
listLinkedAuthProvidersRoute,
|
|
6173
|
+
createAuthProviderLinkGrantRoute,
|
|
6174
|
+
unlinkAuthProviderRoute
|
|
6175
|
+
};
|
|
6176
|
+
|
|
6177
|
+
// src/contracts/federated-registration.ts
|
|
6178
|
+
import { createRoute as createRoute30, z as z55 } from "@hono/zod-openapi";
|
|
6179
|
+
|
|
6180
|
+
// src/schemas/federated-registration.ts
|
|
6181
|
+
import { z as z54 } from "@hono/zod-openapi";
|
|
6182
|
+
var FederatedRegistrationSnapshotSchema = z54.object({
|
|
6183
|
+
/** IdP-verified email, prefilled read-only on the registration screen. */
|
|
6184
|
+
email: z54.string().email(),
|
|
6185
|
+
/** Driver slug, e.g. `'google'`. */
|
|
6186
|
+
provider: z54.string(),
|
|
6187
|
+
/** Human-friendly provider name (the driver's `buttonLabel`), e.g. `'Google'`. */
|
|
6188
|
+
providerLabel: z54.string(),
|
|
6189
|
+
/**
|
|
6190
|
+
* This grant's registration has already been submitted and is waiting
|
|
6191
|
+
* for an administrator (Restricted mode). The screen must show that
|
|
6192
|
+
* state instead of the username form.
|
|
6193
|
+
*
|
|
6194
|
+
* Deliberately narrow: it is not a general status field, and it never
|
|
6195
|
+
* distinguishes unknown / expired / cancelled / completed grants (those
|
|
6196
|
+
* are all the same 404 — AC-2). It exists because a submitted
|
|
6197
|
+
* registration is still readable by its own grant, and re-offering an
|
|
6198
|
+
* editable username there invites a change that cannot be applied — the
|
|
6199
|
+
* second submit is refused and the typed value silently discarded.
|
|
6200
|
+
*/
|
|
6201
|
+
approvalPending: z54.boolean()
|
|
6202
|
+
});
|
|
6203
|
+
var FederatedRegistrationSubmitRequestSchema = z54.object({
|
|
6204
|
+
username: UsernameSchema
|
|
6205
|
+
});
|
|
6206
|
+
var FederatedRegistrationActiveResultSchema = z54.object({
|
|
6207
|
+
status: z54.literal("active"),
|
|
6208
|
+
code: z54.string()
|
|
6209
|
+
});
|
|
6210
|
+
var FederatedRegistrationApprovalResultSchema = z54.object({
|
|
6211
|
+
status: z54.literal("approval_required")
|
|
6212
|
+
});
|
|
6213
|
+
var FederatedRegistrationResultSchema = z54.discriminatedUnion("status", [
|
|
6214
|
+
FederatedRegistrationActiveResultSchema,
|
|
6215
|
+
FederatedRegistrationApprovalResultSchema
|
|
6216
|
+
]);
|
|
6217
|
+
|
|
6218
|
+
// src/contracts/federated-registration.ts
|
|
6219
|
+
var TokenParamSchema = z55.object({ token: z55.string().min(1) });
|
|
6220
|
+
var getFederatedRegistrationRoute = createRoute30({
|
|
6221
|
+
method: "get",
|
|
6222
|
+
path: "/auth/federated-registration/{token}",
|
|
6223
|
+
tags: ["federatedRegistration"],
|
|
6224
|
+
summary: "Read-only snapshot (email/provider/providerLabel) for a pending federated registration",
|
|
6225
|
+
request: {
|
|
6226
|
+
params: TokenParamSchema
|
|
6227
|
+
},
|
|
6228
|
+
responses: {
|
|
6229
|
+
200: {
|
|
6230
|
+
description: "Pending registration snapshot",
|
|
6231
|
+
content: { "application/json": { schema: FederatedRegistrationSnapshotSchema } }
|
|
6232
|
+
},
|
|
6233
|
+
404: {
|
|
6234
|
+
description: "Grant is unknown, expired, or cancelled",
|
|
6235
|
+
content: { "application/json": { schema: ApiErrorSchema } }
|
|
6236
|
+
},
|
|
6237
|
+
500: {
|
|
6238
|
+
description: "Internal server error",
|
|
6239
|
+
content: { "application/json": { schema: InternalServerErrorSchema } }
|
|
6240
|
+
}
|
|
6241
|
+
}
|
|
6242
|
+
});
|
|
6243
|
+
var submitFederatedRegistrationRoute = createRoute30({
|
|
6244
|
+
method: "post",
|
|
6245
|
+
path: "/auth/federated-registration/{token}",
|
|
6246
|
+
tags: ["federatedRegistration"],
|
|
6247
|
+
summary: "Submit the chosen username; provisions the User (JIT) and activates or queues approval",
|
|
6248
|
+
request: {
|
|
6249
|
+
params: TokenParamSchema,
|
|
6250
|
+
body: { content: { "application/json": { schema: FederatedRegistrationSubmitRequestSchema } } }
|
|
6251
|
+
},
|
|
6252
|
+
responses: {
|
|
6253
|
+
200: {
|
|
6254
|
+
description: "Open: account is active \u2014 a Phase 1 handoff code, redeemed via POST /auth/handoff. Restricted: awaiting admin approval.",
|
|
6255
|
+
content: { "application/json": { schema: FederatedRegistrationResultSchema } }
|
|
6256
|
+
},
|
|
6257
|
+
400: {
|
|
6258
|
+
description: "Username fails the shared username contract",
|
|
6259
|
+
content: { "application/json": { schema: ApiErrorSchema } }
|
|
6260
|
+
},
|
|
6261
|
+
404: {
|
|
6262
|
+
description: "Grant is unknown, expired, or cancelled",
|
|
6263
|
+
content: { "application/json": { schema: ApiErrorSchema } }
|
|
6264
|
+
},
|
|
6265
|
+
409: {
|
|
6266
|
+
description: "Username/email already taken, or the identity is already linked to a different user",
|
|
6267
|
+
content: { "application/json": { schema: ApiErrorSchema } }
|
|
6268
|
+
},
|
|
6269
|
+
500: {
|
|
6270
|
+
description: "Internal server error",
|
|
6271
|
+
content: { "application/json": { schema: InternalServerErrorSchema } }
|
|
6272
|
+
}
|
|
6273
|
+
}
|
|
6274
|
+
});
|
|
6275
|
+
var logoutFederatedRegistrationRoute = createRoute30({
|
|
6276
|
+
method: "post",
|
|
6277
|
+
path: "/auth/federated-registration/{token}/logout",
|
|
6278
|
+
tags: ["federatedRegistration"],
|
|
6279
|
+
summary: "Cancel a pending federated registration and invalidate the grant",
|
|
6280
|
+
request: {
|
|
6281
|
+
params: TokenParamSchema
|
|
6282
|
+
},
|
|
6283
|
+
responses: {
|
|
6284
|
+
204: { description: "Grant cancelled (or was already inactive) \u2014 idempotent" },
|
|
6285
|
+
500: {
|
|
6286
|
+
description: "Internal server error",
|
|
6287
|
+
content: { "application/json": { schema: InternalServerErrorSchema } }
|
|
6288
|
+
}
|
|
6289
|
+
}
|
|
6290
|
+
});
|
|
6291
|
+
var federatedRegistrationRoutes = {
|
|
6292
|
+
getFederatedRegistrationRoute,
|
|
6293
|
+
submitFederatedRegistrationRoute,
|
|
6294
|
+
logoutFederatedRegistrationRoute
|
|
6295
|
+
};
|
|
6296
|
+
|
|
5890
6297
|
// src/contracts/invite-accept.ts
|
|
5891
|
-
import { createRoute as
|
|
6298
|
+
import { createRoute as createRoute31 } from "@hono/zod-openapi";
|
|
5892
6299
|
|
|
5893
6300
|
// src/schemas/invite-accept.ts
|
|
5894
|
-
import { z as
|
|
5895
|
-
var InviteAcceptRequestSchema =
|
|
5896
|
-
token:
|
|
6301
|
+
import { z as z56 } from "@hono/zod-openapi";
|
|
6302
|
+
var InviteAcceptRequestSchema = z56.object({
|
|
6303
|
+
token: z56.string(),
|
|
5897
6304
|
username: UsernameSchema,
|
|
5898
|
-
name:
|
|
5899
|
-
password:
|
|
6305
|
+
name: z56.string().min(1),
|
|
6306
|
+
password: z56.string().min(6)
|
|
5900
6307
|
});
|
|
5901
|
-
var InvitePreviewResponseSchema =
|
|
5902
|
-
email:
|
|
6308
|
+
var InvitePreviewResponseSchema = z56.object({
|
|
6309
|
+
email: z56.string().email()
|
|
5903
6310
|
});
|
|
5904
6311
|
|
|
5905
6312
|
// src/contracts/invite-accept.ts
|
|
5906
|
-
var invitePreviewRoute =
|
|
6313
|
+
var invitePreviewRoute = createRoute31({
|
|
5907
6314
|
method: "get",
|
|
5908
6315
|
path: "/invite/accept",
|
|
5909
6316
|
tags: ["inviteAccept"],
|
|
@@ -5930,7 +6337,7 @@ var invitePreviewRoute = createRoute29({
|
|
|
5930
6337
|
}
|
|
5931
6338
|
}
|
|
5932
6339
|
});
|
|
5933
|
-
var acceptInviteRoute =
|
|
6340
|
+
var acceptInviteRoute = createRoute31({
|
|
5934
6341
|
method: "post",
|
|
5935
6342
|
path: "/invite/accept",
|
|
5936
6343
|
tags: ["inviteAccept"],
|
|
@@ -5973,23 +6380,23 @@ var inviteAcceptRoutes = {
|
|
|
5973
6380
|
};
|
|
5974
6381
|
|
|
5975
6382
|
// src/contracts/password-reset.ts
|
|
5976
|
-
import { createRoute as
|
|
6383
|
+
import { createRoute as createRoute32 } from "@hono/zod-openapi";
|
|
5977
6384
|
|
|
5978
6385
|
// src/schemas/password-reset.ts
|
|
5979
|
-
import { z as
|
|
5980
|
-
var ForgotPasswordRequestSchema =
|
|
5981
|
-
email:
|
|
6386
|
+
import { z as z57 } from "@hono/zod-openapi";
|
|
6387
|
+
var ForgotPasswordRequestSchema = z57.object({
|
|
6388
|
+
email: z57.string().email()
|
|
5982
6389
|
});
|
|
5983
|
-
var ForgotPasswordResponseSchema =
|
|
5984
|
-
ok:
|
|
6390
|
+
var ForgotPasswordResponseSchema = z57.object({
|
|
6391
|
+
ok: z57.literal(true)
|
|
5985
6392
|
});
|
|
5986
|
-
var ResetPasswordRequestSchema =
|
|
5987
|
-
token:
|
|
5988
|
-
password:
|
|
6393
|
+
var ResetPasswordRequestSchema = z57.object({
|
|
6394
|
+
token: z57.string(),
|
|
6395
|
+
password: z57.string().min(6)
|
|
5989
6396
|
});
|
|
5990
6397
|
|
|
5991
6398
|
// src/contracts/password-reset.ts
|
|
5992
|
-
var forgotPasswordRoute =
|
|
6399
|
+
var forgotPasswordRoute = createRoute32({
|
|
5993
6400
|
method: "post",
|
|
5994
6401
|
path: "/auth/forgot-password",
|
|
5995
6402
|
tags: ["passwordReset"],
|
|
@@ -6014,7 +6421,7 @@ var forgotPasswordRoute = createRoute30({
|
|
|
6014
6421
|
}
|
|
6015
6422
|
}
|
|
6016
6423
|
});
|
|
6017
|
-
var validateResetTokenRoute =
|
|
6424
|
+
var validateResetTokenRoute = createRoute32({
|
|
6018
6425
|
method: "get",
|
|
6019
6426
|
path: "/auth/reset-password",
|
|
6020
6427
|
tags: ["passwordReset"],
|
|
@@ -6037,7 +6444,7 @@ var validateResetTokenRoute = createRoute30({
|
|
|
6037
6444
|
}
|
|
6038
6445
|
}
|
|
6039
6446
|
});
|
|
6040
|
-
var selfResetPasswordRoute =
|
|
6447
|
+
var selfResetPasswordRoute = createRoute32({
|
|
6041
6448
|
method: "post",
|
|
6042
6449
|
path: "/auth/reset-password",
|
|
6043
6450
|
tags: ["passwordReset"],
|
|
@@ -6077,19 +6484,19 @@ var passwordResetRoutes = {
|
|
|
6077
6484
|
};
|
|
6078
6485
|
|
|
6079
6486
|
// src/contracts/activation.ts
|
|
6080
|
-
import { createRoute as
|
|
6487
|
+
import { createRoute as createRoute33 } from "@hono/zod-openapi";
|
|
6081
6488
|
|
|
6082
6489
|
// src/schemas/activation.ts
|
|
6083
|
-
import { z as
|
|
6084
|
-
var ActivateRequestSchema =
|
|
6085
|
-
token:
|
|
6490
|
+
import { z as z58 } from "@hono/zod-openapi";
|
|
6491
|
+
var ActivateRequestSchema = z58.object({
|
|
6492
|
+
token: z58.string()
|
|
6086
6493
|
});
|
|
6087
|
-
var ActivateValidationResponseSchema =
|
|
6088
|
-
ok:
|
|
6494
|
+
var ActivateValidationResponseSchema = z58.object({
|
|
6495
|
+
ok: z58.literal(true)
|
|
6089
6496
|
});
|
|
6090
6497
|
|
|
6091
6498
|
// src/contracts/activation.ts
|
|
6092
|
-
var validateActivationTokenRoute =
|
|
6499
|
+
var validateActivationTokenRoute = createRoute33({
|
|
6093
6500
|
method: "get",
|
|
6094
6501
|
path: "/auth/activate",
|
|
6095
6502
|
tags: ["activation"],
|
|
@@ -6112,7 +6519,7 @@ var validateActivationTokenRoute = createRoute31({
|
|
|
6112
6519
|
}
|
|
6113
6520
|
}
|
|
6114
6521
|
});
|
|
6115
|
-
var activateAccountRoute =
|
|
6522
|
+
var activateAccountRoute = createRoute33({
|
|
6116
6523
|
method: "post",
|
|
6117
6524
|
path: "/auth/activate",
|
|
6118
6525
|
tags: ["activation"],
|
|
@@ -6147,21 +6554,21 @@ var activationRoutes = {
|
|
|
6147
6554
|
};
|
|
6148
6555
|
|
|
6149
6556
|
// src/contracts/email-change.ts
|
|
6150
|
-
import { createRoute as
|
|
6557
|
+
import { createRoute as createRoute34 } from "@hono/zod-openapi";
|
|
6151
6558
|
|
|
6152
6559
|
// src/schemas/email-change.ts
|
|
6153
|
-
import { z as
|
|
6154
|
-
var ConfirmEmailChangeRequestSchema =
|
|
6155
|
-
token:
|
|
6560
|
+
import { z as z59 } from "@hono/zod-openapi";
|
|
6561
|
+
var ConfirmEmailChangeRequestSchema = z59.object({
|
|
6562
|
+
token: z59.string()
|
|
6156
6563
|
});
|
|
6157
|
-
var ConfirmEmailChangeResponseSchema =
|
|
6158
|
-
ok:
|
|
6564
|
+
var ConfirmEmailChangeResponseSchema = z59.object({
|
|
6565
|
+
ok: z59.literal(true),
|
|
6159
6566
|
/** The newly-confirmed email address. */
|
|
6160
|
-
email:
|
|
6567
|
+
email: z59.string().email()
|
|
6161
6568
|
});
|
|
6162
6569
|
|
|
6163
6570
|
// src/contracts/email-change.ts
|
|
6164
|
-
var validateEmailChangeTokenRoute =
|
|
6571
|
+
var validateEmailChangeTokenRoute = createRoute34({
|
|
6165
6572
|
method: "get",
|
|
6166
6573
|
path: "/auth/confirm-email-change",
|
|
6167
6574
|
tags: ["emailChange"],
|
|
@@ -6184,7 +6591,7 @@ var validateEmailChangeTokenRoute = createRoute32({
|
|
|
6184
6591
|
}
|
|
6185
6592
|
}
|
|
6186
6593
|
});
|
|
6187
|
-
var confirmEmailChangeRoute =
|
|
6594
|
+
var confirmEmailChangeRoute = createRoute34({
|
|
6188
6595
|
method: "post",
|
|
6189
6596
|
path: "/auth/confirm-email-change",
|
|
6190
6597
|
tags: ["emailChange"],
|
|
@@ -6223,9 +6630,9 @@ var emailChangeRoutes = {
|
|
|
6223
6630
|
};
|
|
6224
6631
|
|
|
6225
6632
|
// src/contracts/user.ts
|
|
6226
|
-
import { createRoute as
|
|
6227
|
-
var UsernameParamSchema =
|
|
6228
|
-
var getUserPageRoute =
|
|
6633
|
+
import { createRoute as createRoute35, z as z60 } from "@hono/zod-openapi";
|
|
6634
|
+
var UsernameParamSchema = z60.object({ username: z60.string() });
|
|
6635
|
+
var getUserPageRoute = createRoute35({
|
|
6229
6636
|
method: "get",
|
|
6230
6637
|
path: "/user/{username}",
|
|
6231
6638
|
tags: ["user"],
|
|
@@ -6253,7 +6660,7 @@ var getUserPageRoute = createRoute33({
|
|
|
6253
6660
|
}
|
|
6254
6661
|
}
|
|
6255
6662
|
});
|
|
6256
|
-
var getUserBookmarksRoute =
|
|
6663
|
+
var getUserBookmarksRoute = createRoute35({
|
|
6257
6664
|
method: "get",
|
|
6258
6665
|
path: "/user/{username}/bookmarks",
|
|
6259
6666
|
tags: ["user"],
|
|
@@ -6282,7 +6689,7 @@ var getUserBookmarksRoute = createRoute33({
|
|
|
6282
6689
|
}
|
|
6283
6690
|
}
|
|
6284
6691
|
});
|
|
6285
|
-
var getUserPagesRoute =
|
|
6692
|
+
var getUserPagesRoute = createRoute35({
|
|
6286
6693
|
method: "get",
|
|
6287
6694
|
path: "/user/{username}/pages",
|
|
6288
6695
|
tags: ["user"],
|
|
@@ -6311,7 +6718,7 @@ var getUserPagesRoute = createRoute33({
|
|
|
6311
6718
|
}
|
|
6312
6719
|
}
|
|
6313
6720
|
});
|
|
6314
|
-
var getUserSubpagesRoute =
|
|
6721
|
+
var getUserSubpagesRoute = createRoute35({
|
|
6315
6722
|
method: "get",
|
|
6316
6723
|
path: "/user/{username}/subpages",
|
|
6317
6724
|
tags: ["user"],
|
|
@@ -6348,7 +6755,7 @@ var getUserSubpagesRoute = createRoute33({
|
|
|
6348
6755
|
}
|
|
6349
6756
|
}
|
|
6350
6757
|
});
|
|
6351
|
-
var listMembersRoute =
|
|
6758
|
+
var listMembersRoute = createRoute35({
|
|
6352
6759
|
method: "get",
|
|
6353
6760
|
path: "/users",
|
|
6354
6761
|
tags: ["user"],
|
|
@@ -6394,6 +6801,13 @@ var stubTokens = {
|
|
|
6394
6801
|
expiresIn: 0,
|
|
6395
6802
|
user: stubUser
|
|
6396
6803
|
};
|
|
6804
|
+
var stubProviderList = { providers: [] };
|
|
6805
|
+
var stubFederatedRegistrationSnapshot = {
|
|
6806
|
+
email: "stub@example.com",
|
|
6807
|
+
provider: "",
|
|
6808
|
+
providerLabel: "",
|
|
6809
|
+
approvalPending: false
|
|
6810
|
+
};
|
|
6397
6811
|
var stubProfile = {
|
|
6398
6812
|
id: "",
|
|
6399
6813
|
username: "",
|
|
@@ -6403,7 +6817,8 @@ var stubProfile = {
|
|
|
6403
6817
|
theme: "system",
|
|
6404
6818
|
image: null,
|
|
6405
6819
|
hasPassword: false,
|
|
6406
|
-
createdAt: ""
|
|
6820
|
+
createdAt: "",
|
|
6821
|
+
federated: false
|
|
6407
6822
|
};
|
|
6408
6823
|
var stubAccessToken = {
|
|
6409
6824
|
id: "",
|
|
@@ -6684,25 +7099,27 @@ var lateContractApp = new OpenAPIHono().openapi(draftRoutes.createDraftRoute, (c
|
|
|
6684
7099
|
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));
|
|
6685
7100
|
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));
|
|
6686
7101
|
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));
|
|
7102
|
+
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));
|
|
7103
|
+
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));
|
|
6687
7104
|
var createClient = (baseUrl, options = {}) => hc(baseUrl, {
|
|
6688
7105
|
headers: options.headers,
|
|
6689
7106
|
fetch: options.fetch
|
|
6690
7107
|
});
|
|
6691
7108
|
|
|
6692
7109
|
// src/schemas/mail-token.ts
|
|
6693
|
-
import { z as
|
|
6694
|
-
var MailTokenPurposeSchema =
|
|
6695
|
-
var MailTokenPayloadSchema =
|
|
7110
|
+
import { z as z61 } from "@hono/zod-openapi";
|
|
7111
|
+
var MailTokenPurposeSchema = z61.enum(["invite", "activate", "reset", "email-change"]);
|
|
7112
|
+
var MailTokenPayloadSchema = z61.object({
|
|
6696
7113
|
purpose: MailTokenPurposeSchema,
|
|
6697
|
-
userId:
|
|
7114
|
+
userId: z61.string(),
|
|
6698
7115
|
/** Target address. For `email-change` this is the NEW address. */
|
|
6699
|
-
email:
|
|
7116
|
+
email: z61.string().email(),
|
|
6700
7117
|
/**
|
|
6701
7118
|
* For `email-change`: the account's email at issue time. The confirm
|
|
6702
7119
|
* endpoint rejects the token unless it still matches, making the token
|
|
6703
7120
|
* single-use (a stale token cannot revert a later change).
|
|
6704
7121
|
*/
|
|
6705
|
-
fromEmail:
|
|
7122
|
+
fromEmail: z61.string().email().optional(),
|
|
6706
7123
|
/**
|
|
6707
7124
|
* For `reset`: the account's `passwordResetGeneration` at issue time.
|
|
6708
7125
|
* Consuming the link increments that counter, so the token only matches
|
|
@@ -6711,7 +7128,7 @@ var MailTokenPayloadSchema = z57.object({
|
|
|
6711
7128
|
* schema because the other purposes don't carry it (and links minted
|
|
6712
7129
|
* before the claim existed simply no longer match).
|
|
6713
7130
|
*/
|
|
6714
|
-
resetGeneration:
|
|
7131
|
+
resetGeneration: z61.number().int().nonnegative().optional(),
|
|
6715
7132
|
/**
|
|
6716
7133
|
* For `email-change`: the account's `authVersion` at issue time. The
|
|
6717
7134
|
* confirm endpoint requires it to still match, so a pending address change
|
|
@@ -6723,7 +7140,7 @@ var MailTokenPayloadSchema = z57.object({
|
|
|
6723
7140
|
* semantics wanted are exactly "the session that asked for this is gone",
|
|
6724
7141
|
* and that is what every bump of it already means.
|
|
6725
7142
|
*/
|
|
6726
|
-
authVersion:
|
|
7143
|
+
authVersion: z61.number().int().nonnegative().optional(),
|
|
6727
7144
|
/**
|
|
6728
7145
|
* For `email-change`: the account's `emailChangeGeneration` at issue time.
|
|
6729
7146
|
* Requesting a change increments it, so asking for a different address
|
|
@@ -6735,10 +7152,10 @@ var MailTokenPayloadSchema = z57.object({
|
|
|
6735
7152
|
* Optional in the schema for the same reason as the others — links minted
|
|
6736
7153
|
* before the claim existed simply no longer match.
|
|
6737
7154
|
*/
|
|
6738
|
-
emailChangeGeneration:
|
|
7155
|
+
emailChangeGeneration: z61.number().int().nonnegative().optional(),
|
|
6739
7156
|
// iat / exp are injected and verified by the JWT layer.
|
|
6740
|
-
iat:
|
|
6741
|
-
exp:
|
|
7157
|
+
iat: z61.number().optional(),
|
|
7158
|
+
exp: z61.number().optional()
|
|
6742
7159
|
});
|
|
6743
7160
|
|
|
6744
7161
|
// src/util/html-elements.ts
|
|
@@ -6953,6 +7370,8 @@ export {
|
|
|
6953
7370
|
CommentInvalidRequestErrorSchema,
|
|
6954
7371
|
CommentNotFoundErrorSchema,
|
|
6955
7372
|
CommentSchema,
|
|
7373
|
+
ConfigReadinessIssueSchema,
|
|
7374
|
+
ConfigReadinessResponseSchema,
|
|
6956
7375
|
ConfirmEmailChangeRequestSchema,
|
|
6957
7376
|
ConfirmEmailChangeResponseSchema,
|
|
6958
7377
|
ConflictErrorSchema,
|
|
@@ -6963,6 +7382,8 @@ export {
|
|
|
6963
7382
|
CreateAdminResponseSchema,
|
|
6964
7383
|
CreateDraftRequestSchema,
|
|
6965
7384
|
CreateDraftResponseSchema,
|
|
7385
|
+
CreateLinkGrantRequestSchema,
|
|
7386
|
+
CreateLinkGrantResponseSchema,
|
|
6966
7387
|
CreatePageRequestSchema,
|
|
6967
7388
|
CrowiCodeSidecarSchema,
|
|
6968
7389
|
CrowiDiagramNodeSchema,
|
|
@@ -6998,6 +7419,14 @@ export {
|
|
|
6998
7419
|
EditAdminUserRequestSchema,
|
|
6999
7420
|
EncryptionNotConfiguredErrorSchema,
|
|
7000
7421
|
ErrorCodeSchema,
|
|
7422
|
+
FederatedHandoffRequestSchema,
|
|
7423
|
+
FederatedHandoffResponseSchema,
|
|
7424
|
+
FederatedProviderSchema,
|
|
7425
|
+
FederatedRegistrationActiveResultSchema,
|
|
7426
|
+
FederatedRegistrationApprovalResultSchema,
|
|
7427
|
+
FederatedRegistrationResultSchema,
|
|
7428
|
+
FederatedRegistrationSnapshotSchema,
|
|
7429
|
+
FederatedRegistrationSubmitRequestSchema,
|
|
7001
7430
|
ForbiddenErrorSchema,
|
|
7002
7431
|
ForgotPasswordRequestSchema,
|
|
7003
7432
|
ForgotPasswordResponseSchema,
|
|
@@ -7039,6 +7468,7 @@ export {
|
|
|
7039
7468
|
LanguageSchema,
|
|
7040
7469
|
LikerSchema,
|
|
7041
7470
|
LikersResponseSchema,
|
|
7471
|
+
LinkedAuthProviderListResponseSchema,
|
|
7042
7472
|
ListAccessTokensResponseSchema,
|
|
7043
7473
|
ListAdminUsersRequestSchema,
|
|
7044
7474
|
ListAdminUsersResponseSchema,
|
|
@@ -7111,8 +7541,6 @@ export {
|
|
|
7111
7541
|
PluginInfoSchema,
|
|
7112
7542
|
PluginNotFoundErrorSchema,
|
|
7113
7543
|
PluginReadinessFieldSchema,
|
|
7114
|
-
PluginReadinessIssueSchema,
|
|
7115
|
-
PluginReadinessResponseSchema,
|
|
7116
7544
|
PresenceClientMessageSchema,
|
|
7117
7545
|
PresenceCommentChangedMessageSchema,
|
|
7118
7546
|
PresenceHeartbeatMessageSchema,
|
|
@@ -7125,6 +7553,7 @@ export {
|
|
|
7125
7553
|
PreviewPageRequestSchema,
|
|
7126
7554
|
PreviewPageResponseSchema,
|
|
7127
7555
|
ProfileErrorResponseSchema,
|
|
7556
|
+
ProviderListResponseSchema,
|
|
7128
7557
|
RENDERED_AST_NODE_DEFS,
|
|
7129
7558
|
RecentlyViewedPagesResponseSchema,
|
|
7130
7559
|
ReencryptResponseSchema,
|
|
@@ -7173,6 +7602,8 @@ export {
|
|
|
7173
7602
|
SendTestMailErrorSchema,
|
|
7174
7603
|
SendTestMailRequestSchema,
|
|
7175
7604
|
SendTestMailResponseSchema,
|
|
7605
|
+
SenderProofSchema,
|
|
7606
|
+
SenderPublicJwkSchema,
|
|
7176
7607
|
SensitiveConfigEntrySchema,
|
|
7177
7608
|
ServiceUnavailableErrorSchema,
|
|
7178
7609
|
SetPageGrantRequestSchema,
|
|
@@ -7193,6 +7624,7 @@ export {
|
|
|
7193
7624
|
TokenRequestSchema,
|
|
7194
7625
|
TokenResponseSchema,
|
|
7195
7626
|
UPLOAD_ALLOWED_MIME,
|
|
7627
|
+
UnlinkAuthProviderErrorSchema,
|
|
7196
7628
|
UpdateAdminUserEmailRequestSchema,
|
|
7197
7629
|
UpdateAppSettingsRequestSchema,
|
|
7198
7630
|
UpdateAppSettingsResponseSchema,
|
|
@@ -7256,6 +7688,7 @@ export {
|
|
|
7256
7688
|
autocompleteUsersRoute,
|
|
7257
7689
|
backlinkRoutes,
|
|
7258
7690
|
bookmarkRoutes,
|
|
7691
|
+
callbackFederatedProviderRoute,
|
|
7259
7692
|
cancelDraftRoute,
|
|
7260
7693
|
claimPageLinkAccessRoute,
|
|
7261
7694
|
clearRenderCacheAllRoute,
|
|
@@ -7265,6 +7698,7 @@ export {
|
|
|
7265
7698
|
confirmEmailChangeRoute,
|
|
7266
7699
|
createAccessTokenRoute,
|
|
7267
7700
|
createAdminRoute,
|
|
7701
|
+
createAuthProviderLinkGrantRoute,
|
|
7268
7702
|
createClient,
|
|
7269
7703
|
createDraftRoute,
|
|
7270
7704
|
createPageRoute,
|
|
@@ -7280,6 +7714,9 @@ export {
|
|
|
7280
7714
|
draftRoutes,
|
|
7281
7715
|
editUserRoute,
|
|
7282
7716
|
emailChangeRoutes,
|
|
7717
|
+
federatedAuthRoutes,
|
|
7718
|
+
federatedHandoffRoute,
|
|
7719
|
+
federatedRegistrationRoutes,
|
|
7283
7720
|
forgotPasswordRoute,
|
|
7284
7721
|
getAppInfoRoute,
|
|
7285
7722
|
getAppSettingsRoute,
|
|
@@ -7289,6 +7726,7 @@ export {
|
|
|
7289
7726
|
getBacklinksRoute,
|
|
7290
7727
|
getBookmarkRoute,
|
|
7291
7728
|
getCryptoStatusRoute,
|
|
7729
|
+
getFederatedRegistrationRoute,
|
|
7292
7730
|
getInstallerStatusRoute,
|
|
7293
7731
|
getLikersRoute,
|
|
7294
7732
|
getMailSettingsRoute,
|
|
@@ -7322,6 +7760,8 @@ export {
|
|
|
7322
7760
|
listAttachmentsRoute,
|
|
7323
7761
|
listCommentsRoute,
|
|
7324
7762
|
listDraftsRoute,
|
|
7763
|
+
listFederatedProvidersRoute,
|
|
7764
|
+
listLinkedAuthProvidersRoute,
|
|
7325
7765
|
listMembersRoute,
|
|
7326
7766
|
listMyBookmarksRoute,
|
|
7327
7767
|
listNotificationsRoute,
|
|
@@ -7330,6 +7770,7 @@ export {
|
|
|
7330
7770
|
listPluginsRoute,
|
|
7331
7771
|
listRevisionsRoute,
|
|
7332
7772
|
listUsersRoute,
|
|
7773
|
+
logoutFederatedRegistrationRoute,
|
|
7333
7774
|
makeAdminRoute,
|
|
7334
7775
|
markAllAsReadRoute,
|
|
7335
7776
|
meRoutes,
|
|
@@ -7366,7 +7807,9 @@ export {
|
|
|
7366
7807
|
sendTestMailRoute,
|
|
7367
7808
|
setPageGrantRoute,
|
|
7368
7809
|
setWatchStatusRoute,
|
|
7810
|
+
startFederatedProviderRoute,
|
|
7369
7811
|
stripKnownHtmlTags,
|
|
7812
|
+
submitFederatedRegistrationRoute,
|
|
7370
7813
|
suspendUserRoute,
|
|
7371
7814
|
tokenAuthRoutes,
|
|
7372
7815
|
tokenLoginRoute,
|
|
@@ -7376,6 +7819,7 @@ export {
|
|
|
7376
7819
|
tokenRegisterRoute,
|
|
7377
7820
|
tokenRoute,
|
|
7378
7821
|
unlikePageRoute,
|
|
7822
|
+
unlinkAuthProviderRoute,
|
|
7379
7823
|
unwrapRenderedAst,
|
|
7380
7824
|
updateAppSettingsRoute,
|
|
7381
7825
|
updateAuthSettingsRoute,
|