@absolutejs/auth 0.56.2 → 0.56.3

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.
Files changed (174) hide show
  1. package/dist/cli/migrate.js.map +1 -1
  2. package/dist/index.js +15 -1
  3. package/dist/index.js.map +4 -4
  4. package/dist/oidc/index.js +5 -1
  5. package/dist/oidc/index.js.map +3 -3
  6. package/dist/server.js +15 -1
  7. package/dist/server.js.map +4 -4
  8. package/package.json +1 -1
  9. package/dist/abuse/captcha.d.ts +0 -11
  10. package/dist/abuse/config.d.ts +0 -29
  11. package/dist/actions.d.ts +0 -27
  12. package/dist/agents/config.d.ts +0 -44
  13. package/dist/agents/context.d.ts +0 -46
  14. package/dist/agents/principal.d.ts +0 -4
  15. package/dist/agents/registration.d.ts +0 -162
  16. package/dist/agents/routes.d.ts +0 -321
  17. package/dist/agents/types.d.ts +0 -129
  18. package/dist/apikeys/config.d.ts +0 -64
  19. package/dist/apikeys/routes.d.ts +0 -83
  20. package/dist/apikeys/types.d.ts +0 -53
  21. package/dist/audit/config.d.ts +0 -9
  22. package/dist/audit/export.d.ts +0 -2
  23. package/dist/audit/inMemoryAuditStore.d.ts +0 -2
  24. package/dist/audit/integrity.d.ts +0 -19
  25. package/dist/audit/postgresAuditStore.d.ts +0 -116
  26. package/dist/audit/siem.d.ts +0 -11
  27. package/dist/audit/types.d.ts +0 -19
  28. package/dist/audit/wrap.d.ts +0 -9
  29. package/dist/authContext.d.ts +0 -193
  30. package/dist/authorization/config.d.ts +0 -19
  31. package/dist/authorization/protectPermission.d.ts +0 -52
  32. package/dist/compliance/cipher.d.ts +0 -11
  33. package/dist/compliance/config.d.ts +0 -18
  34. package/dist/compliance/redaction.d.ts +0 -8
  35. package/dist/compliance/routes.d.ts +0 -89
  36. package/dist/constants.d.ts +0 -10
  37. package/dist/credentials/backgroundOps.d.ts +0 -45
  38. package/dist/credentials/config.d.ts +0 -68
  39. package/dist/credentials/emailValidation.d.ts +0 -9
  40. package/dist/credentials/emailVerification.d.ts +0 -83
  41. package/dist/credentials/import.d.ts +0 -34
  42. package/dist/credentials/inMemoryCredentialStore.d.ts +0 -2
  43. package/dist/credentials/legacyHashers.d.ts +0 -3
  44. package/dist/credentials/login.d.ts +0 -76
  45. package/dist/credentials/passwordPolicy.d.ts +0 -15
  46. package/dist/credentials/passwordReset.d.ts +0 -87
  47. package/dist/credentials/postgresCredentialStore.d.ts +0 -235
  48. package/dist/credentials/register.d.ts +0 -54
  49. package/dist/credentials/routes.d.ts +0 -201
  50. package/dist/credentials/types.d.ts +0 -26
  51. package/dist/crypto.d.ts +0 -32
  52. package/dist/errors.d.ts +0 -12
  53. package/dist/federation/tokenStore.d.ts +0 -29
  54. package/dist/htmx/configuredRoutes.d.ts +0 -542
  55. package/dist/htmx/renderers.d.ts +0 -8
  56. package/dist/htmx/routes.d.ts +0 -514
  57. package/dist/htmx/types.d.ts +0 -129
  58. package/dist/linkedProviders/inMemoryStores.d.ts +0 -9
  59. package/dist/linkedProviders/neonStores.d.ts +0 -484
  60. package/dist/linkedProviders/oauthAccountResolver.d.ts +0 -28
  61. package/dist/linkedProviders/oauthResolver.d.ts +0 -9
  62. package/dist/linkedProviders/resolver.d.ts +0 -22
  63. package/dist/lockout/config.d.ts +0 -17
  64. package/dist/lockout/inMemoryLockoutStore.d.ts +0 -2
  65. package/dist/lockout/postgresLockoutStore.d.ts +0 -71
  66. package/dist/lockout/redisLockoutStore.d.ts +0 -3
  67. package/dist/lockout/types.d.ts +0 -12
  68. package/dist/mfa/backupCodes.d.ts +0 -5
  69. package/dist/mfa/challenge.d.ts +0 -70
  70. package/dist/mfa/config.d.ts +0 -50
  71. package/dist/mfa/gate.d.ts +0 -2
  72. package/dist/mfa/inMemoryMfaStore.d.ts +0 -2
  73. package/dist/mfa/management.d.ts +0 -106
  74. package/dist/mfa/postgresMfaStore.d.ts +0 -206
  75. package/dist/mfa/rotation.d.ts +0 -17
  76. package/dist/mfa/routes.d.ts +0 -234
  77. package/dist/mfa/secret.d.ts +0 -2
  78. package/dist/mfa/sms.d.ts +0 -105
  79. package/dist/mfa/totp.d.ts +0 -91
  80. package/dist/mfa/types.d.ts +0 -23
  81. package/dist/oidc/clientAuth.d.ts +0 -19
  82. package/dist/oidc/config.d.ts +0 -296
  83. package/dist/oidc/dpop.d.ts +0 -23
  84. package/dist/oidc/inMemoryVciStores.d.ts +0 -3
  85. package/dist/oidc/jar.d.ts +0 -14
  86. package/dist/oidc/keys.d.ts +0 -35
  87. package/dist/oidc/logout.d.ts +0 -38
  88. package/dist/oidc/mtls.d.ts +0 -11
  89. package/dist/oidc/par.d.ts +0 -28
  90. package/dist/oidc/registration.d.ts +0 -138
  91. package/dist/oidc/routes.d.ts +0 -569
  92. package/dist/oidc/types.d.ts +0 -145
  93. package/dist/oidc/userinfo.d.ts +0 -21
  94. package/dist/oidc/vci.d.ts +0 -159
  95. package/dist/oidc/vciRoutes.d.ts +0 -92
  96. package/dist/organizations/config.d.ts +0 -46
  97. package/dist/organizations/operations.d.ts +0 -39
  98. package/dist/organizations/routes.d.ts +0 -299
  99. package/dist/organizations/types.d.ts +0 -45
  100. package/dist/passwordless/config.d.ts +0 -43
  101. package/dist/passwordless/routes.d.ts +0 -163
  102. package/dist/passwordless/types.d.ts +0 -9
  103. package/dist/pluginIdentity.d.ts +0 -2
  104. package/dist/portal/config.d.ts +0 -34
  105. package/dist/portal/operations.d.ts +0 -10
  106. package/dist/portal/routes.d.ts +0 -160
  107. package/dist/portal/types.d.ts +0 -16
  108. package/dist/providers/clients.d.ts +0 -1818
  109. package/dist/providersFromEnv.d.ts +0 -19
  110. package/dist/roles/config.d.ts +0 -27
  111. package/dist/roles/operations.d.ts +0 -8
  112. package/dist/roles/routes.d.ts +0 -106
  113. package/dist/roles/types.d.ts +0 -14
  114. package/dist/routes/authorize.d.ts +0 -102
  115. package/dist/routes/callback.d.ts +0 -64
  116. package/dist/routes/profile.d.ts +0 -70
  117. package/dist/routes/protectRoute.d.ts +0 -51
  118. package/dist/routes/refresh.d.ts +0 -74
  119. package/dist/routes/revoke.d.ts +0 -73
  120. package/dist/routes/sessions.d.ts +0 -103
  121. package/dist/routes/signout.d.ts +0 -70
  122. package/dist/routes/stepUp.d.ts +0 -48
  123. package/dist/routes/userStatus.d.ts +0 -72
  124. package/dist/scim/config.d.ts +0 -57
  125. package/dist/scim/extensions.d.ts +0 -30
  126. package/dist/scim/inMemoryScimTokenStore.d.ts +0 -2
  127. package/dist/scim/routes.d.ts +0 -366
  128. package/dist/scim/serialize.d.ts +0 -83
  129. package/dist/scim/types.d.ts +0 -54
  130. package/dist/session/access.d.ts +0 -33
  131. package/dist/session/anonymous.d.ts +0 -12
  132. package/dist/session/cleanup.d.ts +0 -45
  133. package/dist/session/impersonation.d.ts +0 -34
  134. package/dist/session/inMemoryStore.d.ts +0 -7
  135. package/dist/session/multiSession.d.ts +0 -27
  136. package/dist/session/neonStore.d.ts +0 -513
  137. package/dist/session/promote.d.ts +0 -23
  138. package/dist/session/redisStore.d.ts +0 -6
  139. package/dist/session/sessionsConfig.d.ts +0 -9
  140. package/dist/session/state.d.ts +0 -33
  141. package/dist/session/types.d.ts +0 -21
  142. package/dist/session/userSessions.d.ts +0 -19
  143. package/dist/sso/config.d.ts +0 -149
  144. package/dist/sso/discoveryRoute.d.ts +0 -63
  145. package/dist/sso/oidcRoutes.d.ts +0 -98
  146. package/dist/sso/samlRoutes.d.ts +0 -179
  147. package/dist/sso/types.d.ts +0 -53
  148. package/dist/stores/postgres.d.ts +0 -5
  149. package/dist/stores/redis.d.ts +0 -5
  150. package/dist/telemetry/tracing.d.ts +0 -15
  151. package/dist/tenancy.d.ts +0 -9
  152. package/dist/typeGuards.d.ts +0 -6
  153. package/dist/typebox.d.ts +0 -4
  154. package/dist/types.d.ts +0 -421
  155. package/dist/utils.d.ts +0 -45
  156. package/dist/vault/config.d.ts +0 -20
  157. package/dist/vault/inMemoryVaultStore.d.ts +0 -2
  158. package/dist/vault/postgresVaultStore.d.ts +0 -86
  159. package/dist/vault/types.d.ts +0 -14
  160. package/dist/vc/inMemoryVpStores.d.ts +0 -2
  161. package/dist/vc/openid4vp.d.ts +0 -82
  162. package/dist/vc/postgresVcStores.d.ts +0 -300
  163. package/dist/vc/sdJwt.d.ts +0 -37
  164. package/dist/vc/statusList.d.ts +0 -29
  165. package/dist/vc/statusListRoutes.d.ts +0 -63
  166. package/dist/vc/vpRoutes.d.ts +0 -120
  167. package/dist/webauthn/adapter.d.ts +0 -59
  168. package/dist/webauthn/config.d.ts +0 -36
  169. package/dist/webauthn/routes.d.ts +0 -155
  170. package/dist/webauthn/types.d.ts +0 -17
  171. package/dist/webhooks/config.d.ts +0 -34
  172. package/dist/webhooks/dispatcher.d.ts +0 -3
  173. package/dist/webhooks/sign.d.ts +0 -11
  174. package/dist/webhooks/types.d.ts +0 -25
@@ -1,21 +0,0 @@
1
- import type { OidcProviderConfig } from './config';
2
- export type UserInfoResult = {
3
- body: Record<string, unknown> & {
4
- sub: string;
5
- };
6
- ok: true;
7
- } | {
8
- body: {
9
- error: string;
10
- error_description?: string;
11
- };
12
- error: 'invalid_request' | 'invalid_token';
13
- ok: false;
14
- };
15
- export declare const readUserInfoBearer: (authorization: string | undefined) => string | undefined;
16
- export declare const fetchUserInfo: <UserType>({ config, now, token }: {
17
- config: OidcProviderConfig<UserType>;
18
- now?: number;
19
- token: string | undefined;
20
- }) => Promise<UserInfoResult>;
21
- export declare const userInfoChallengeHeader: (error: "invalid_request" | "invalid_token") => string;
@@ -1,159 +0,0 @@
1
- import type { RouteString } from '../types';
2
- import { type SigningKey } from './keys';
3
- export declare const PRE_AUTHORIZED_CODE_GRANT = "urn:ietf:params:oauth:grant-type:pre-authorized_code";
4
- export type CredentialConfiguration = {
5
- format: 'vc+sd-jwt';
6
- id: string;
7
- display?: Array<{
8
- locale?: string;
9
- name: string;
10
- }>;
11
- order?: string[];
12
- claims?: Record<string, {
13
- display?: Array<{
14
- locale?: string;
15
- name: string;
16
- }>;
17
- }>;
18
- vct: string;
19
- };
20
- export type CredentialOffer = {
21
- clientId: string;
22
- configurationId: string;
23
- createdAt: number;
24
- expiresAt: number;
25
- preAuthorizedCodeHash: string;
26
- redeemed: boolean;
27
- userId: string;
28
- };
29
- export type CredentialOfferStore = {
30
- consumeOffer: (preAuthorizedCodeHash: string) => Promise<CredentialOffer | undefined>;
31
- saveOffer: (offer: CredentialOffer) => Promise<void>;
32
- };
33
- export type CredentialNonceRecord = {
34
- expiresAt: number;
35
- nonceHash: string;
36
- };
37
- export type CredentialNonceStore = {
38
- consumeNonce: (nonceHash: string) => Promise<CredentialNonceRecord | undefined>;
39
- saveNonce: (record: CredentialNonceRecord) => Promise<void>;
40
- };
41
- export type VciConfig = {
42
- accessTokenTtlMs?: number;
43
- credentialConfigurations: CredentialConfiguration[];
44
- credentialNonceStore?: CredentialNonceStore;
45
- credentialOfferStore: CredentialOfferStore;
46
- nonceTtlMs?: number;
47
- offerTtlMs?: number;
48
- resolveCredentialClaims: (context: {
49
- configurationId: string;
50
- userId: string;
51
- }) => Promise<Record<string, unknown>> | Record<string, unknown>;
52
- resolveProtectedClaims?: (context: {
53
- configurationId: string;
54
- userId: string;
55
- }) => Promise<Record<string, unknown>> | Record<string, unknown>;
56
- signingKey?: SigningKey;
57
- vciRoute?: RouteString;
58
- };
59
- export declare const DEFAULT_VCI_ROUTE: RouteString;
60
- export declare const createCredentialOffer: ({ clientId, configurationId, now, store, ttlMs, userId }: {
61
- clientId: string;
62
- configurationId: string;
63
- now?: number;
64
- store: CredentialOfferStore;
65
- ttlMs?: number;
66
- userId: string;
67
- }) => Promise<{
68
- offer: CredentialOffer;
69
- preAuthorizedCode: string;
70
- }>;
71
- export type PreAuthExchangeResult = {
72
- error: 'expired_token' | 'invalid_grant';
73
- ok: false;
74
- } | {
75
- access_token: string;
76
- c_nonce?: string;
77
- c_nonce_expires_in?: number;
78
- expires_in: number;
79
- ok: true;
80
- token_type: 'Bearer';
81
- };
82
- export declare const exchangePreAuthorizedCode: ({ config, issuer, now, preAuthorizedCode, signingKey }: {
83
- config: VciConfig;
84
- issuer: string;
85
- now?: number;
86
- preAuthorizedCode: string;
87
- signingKey: SigningKey;
88
- }) => Promise<{
89
- error: "expired_token" | "invalid_grant";
90
- ok: false;
91
- } | {
92
- access_token: string;
93
- c_nonce?: string;
94
- c_nonce_expires_in?: number;
95
- expires_in: number;
96
- ok: true;
97
- token_type: "Bearer";
98
- }>;
99
- export type CredentialIssueInput = {
100
- accessToken: string;
101
- proofJwt?: string;
102
- requestedFormat?: 'vc+sd-jwt';
103
- };
104
- export type CredentialIssueResult = {
105
- credential: string;
106
- format: 'vc+sd-jwt';
107
- ok: true;
108
- } | {
109
- error: 'invalid_credential_request' | 'invalid_proof' | 'invalid_token' | 'unsupported_credential_format';
110
- ok: false;
111
- };
112
- export declare const buildIssuerMetadata: ({ config, issuer, vciRoute }: {
113
- config: VciConfig;
114
- issuer: string;
115
- vciRoute: RouteString;
116
- }) => {
117
- credential_configurations_supported: {
118
- [k: string]: {
119
- claims: Record<string, {
120
- display?: Array<{
121
- locale?: string;
122
- name: string;
123
- }>;
124
- }> | undefined;
125
- credential_signing_alg_values_supported: string[];
126
- cryptographic_binding_methods_supported: string[];
127
- display: {
128
- locale?: string;
129
- name: string;
130
- }[] | undefined;
131
- format: "vc+sd-jwt";
132
- order: string[] | undefined;
133
- proof_types_supported: {
134
- jwt: {
135
- proof_signing_alg_values_supported: string[];
136
- };
137
- };
138
- vct: string;
139
- };
140
- };
141
- credential_endpoint: string;
142
- credential_issuer: string;
143
- nonce_endpoint: string | undefined;
144
- token_endpoint: string;
145
- };
146
- export declare const issueCredential: ({ config, input, issuer, now, signingKey }: {
147
- config: VciConfig;
148
- input: CredentialIssueInput;
149
- issuer: string;
150
- now?: number;
151
- signingKey: SigningKey;
152
- }) => Promise<{
153
- credential: string;
154
- format: "vc+sd-jwt";
155
- ok: true;
156
- } | {
157
- error: "invalid_credential_request" | "invalid_proof" | "invalid_token" | "unsupported_credential_format";
158
- ok: false;
159
- }>;
@@ -1,92 +0,0 @@
1
- import { Elysia } from 'elysia';
2
- import type { SigningKey } from './keys';
3
- import { type VciConfig } from './vci';
4
- export declare const vciRoutes: ({ issuerUrl, signingKey, vciConfig }: {
5
- issuerUrl: string;
6
- signingKey: SigningKey;
7
- vciConfig: VciConfig;
8
- }) => Elysia<"", {
9
- decorator: {};
10
- store: {};
11
- derive: {};
12
- resolve: {};
13
- }, {
14
- typebox: {};
15
- error: {};
16
- }, {
17
- schema: {};
18
- standaloneSchema: {};
19
- macro: {};
20
- macroFn: {};
21
- parser: {};
22
- response: {};
23
- }, {
24
- ".well-known": {
25
- "openid-credential-issuer": {
26
- get: {
27
- body: unknown;
28
- params: {};
29
- query: unknown;
30
- headers: unknown;
31
- response: {
32
- 200: Response;
33
- };
34
- };
35
- };
36
- };
37
- } & {
38
- [x: string]: {
39
- credential: {
40
- post: {
41
- body: {
42
- format?: "vc+sd-jwt" | undefined;
43
- proof?: {
44
- jwt: string;
45
- proof_type: "jwt";
46
- } | undefined;
47
- };
48
- params: {};
49
- query: unknown;
50
- headers: unknown;
51
- response: {
52
- 200: Response;
53
- 422: {
54
- type: "validation";
55
- on: string;
56
- summary?: string;
57
- message?: string;
58
- found?: unknown;
59
- property?: string;
60
- expected?: string;
61
- };
62
- };
63
- };
64
- };
65
- };
66
- } & {
67
- [x: string]: {
68
- nonce: {
69
- post: {
70
- body: unknown;
71
- params: {};
72
- query: unknown;
73
- headers: unknown;
74
- response: {
75
- 200: Response;
76
- };
77
- };
78
- };
79
- };
80
- }, {
81
- derive: {};
82
- resolve: {};
83
- schema: {};
84
- standaloneSchema: {};
85
- response: {};
86
- }, {
87
- derive: {};
88
- resolve: {};
89
- schema: {};
90
- standaloneSchema: {};
91
- response: {};
92
- }>;
@@ -1,46 +0,0 @@
1
- import type { AuditEmitter } from '../audit/config';
2
- import type { AuthSessionStore } from '../session/types';
3
- import type { OrganizationId } from '../tenancy';
4
- import type { RouteString } from '../types';
5
- import type { OrganizationMembership, OrganizationStore } from './types';
6
- export declare const DEFAULT_INVITATION_TTL_MS: number;
7
- export declare const DEFAULT_ORGANIZATIONS_ROUTE: RouteString;
8
- export declare const DEFAULT_OWNER_ROLES: string[];
9
- export type OrganizationInvitationMessage = {
10
- email: string;
11
- expiresAt: number;
12
- inviterUserId?: string;
13
- organizationId: OrganizationId;
14
- token: string;
15
- };
16
- export type OrganizationsConfig<UserType> = {
17
- getUserId: (user: UserType) => string;
18
- organizationStore: OrganizationStore;
19
- canCreateOrganization?: (user: UserType) => boolean | Promise<boolean>;
20
- canManageMembers?: (context: {
21
- membership?: OrganizationMembership;
22
- organizationId: OrganizationId;
23
- user: UserType;
24
- }) => boolean | Promise<boolean>;
25
- invitationDurationMs?: number;
26
- onMembershipAdded?: (context: {
27
- organizationId: OrganizationId;
28
- roles: string[];
29
- userId: string;
30
- }) => void | Promise<void>;
31
- onMembershipRemoved?: (context: {
32
- organizationId: OrganizationId;
33
- userId: string;
34
- }) => void | Promise<void>;
35
- onOrganizationCreated?: (context: {
36
- organizationId: OrganizationId;
37
- ownerUserId: string;
38
- }) => void | Promise<void>;
39
- onSendInvitation?: (message: OrganizationInvitationMessage) => void | Promise<void>;
40
- organizationsRoute?: RouteString;
41
- ownerRoles?: string[];
42
- };
43
- export type OrganizationsRouteProps<UserType> = OrganizationsConfig<UserType> & {
44
- authSessionStore?: AuthSessionStore<UserType>;
45
- emit?: AuditEmitter;
46
- };
@@ -1,39 +0,0 @@
1
- import type { OrganizationId } from '../tenancy';
2
- import type { Organization, OrganizationInvitation, OrganizationMembership, OrganizationStore } from './types';
3
- export declare const acceptInvitation: ({ organizationStore, token, userId }: {
4
- organizationStore: OrganizationStore;
5
- token: string;
6
- userId: string;
7
- }) => Promise<OrganizationMembership | undefined>;
8
- export declare const autoAssignOrgsByEmail: ({ email, getOrgsForDomain, organizationStore, roles, userId }: {
9
- email: string;
10
- getOrgsForDomain: (domain: string) => Promise<OrganizationId[]> | OrganizationId[];
11
- organizationStore: OrganizationStore;
12
- roles?: string[];
13
- userId: string;
14
- }) => Promise<string[]>;
15
- export declare const createOrganization: ({ metadata, name, organizationStore, ownerRoles, ownerUserId }: {
16
- metadata?: Record<string, unknown>;
17
- name: string;
18
- organizationStore: OrganizationStore;
19
- ownerRoles?: string[];
20
- ownerUserId: string;
21
- }) => Promise<Organization>;
22
- export declare const inviteToOrganization: ({ email, invitationDurationMs, inviterUserId, organizationId, organizationStore, roles }: {
23
- email: string;
24
- invitationDurationMs?: number;
25
- inviterUserId?: string;
26
- organizationId: OrganizationId;
27
- organizationStore: OrganizationStore;
28
- roles?: string[];
29
- }) => Promise<{
30
- invitation: OrganizationInvitation;
31
- token: string;
32
- }>;
33
- export declare const listUserOrganizations: ({ organizationStore, userId }: {
34
- organizationStore: OrganizationStore;
35
- userId: string;
36
- }) => Promise<{
37
- membership: OrganizationMembership;
38
- organization: Organization | undefined;
39
- }[]>;
@@ -1,299 +0,0 @@
1
- import { Elysia } from 'elysia';
2
- import type { SessionRecord } from '../types';
3
- import { type OrganizationsRouteProps } from './config';
4
- export declare const organizationRoutes: <UserType>({ authSessionStore, canCreateOrganization, canManageMembers, emit, getUserId, invitationDurationMs, onMembershipAdded, onMembershipRemoved, onOrganizationCreated, onSendInvitation, organizationsRoute, organizationStore, ownerRoles }: OrganizationsRouteProps<UserType>) => Elysia<"", {
5
- decorator: {};
6
- store: {
7
- session: SessionRecord<UserType>;
8
- unregisteredSession: import("..").UnregisteredSessionRecord;
9
- };
10
- derive: {};
11
- resolve: {};
12
- }, {
13
- typebox: {};
14
- error: {};
15
- }, {
16
- schema: {};
17
- standaloneSchema: {};
18
- macro: {};
19
- macroFn: {};
20
- parser: {};
21
- response: {};
22
- }, {
23
- [x: string]: {
24
- get: {
25
- body: unknown;
26
- params: {};
27
- query: unknown;
28
- headers: unknown;
29
- response: {
30
- 401: "Authentication required";
31
- 200: {
32
- readonly organizations: {
33
- membership: import("./types").OrganizationMembership;
34
- organization: import("./types").Organization | undefined;
35
- }[];
36
- };
37
- 422: {
38
- type: "validation";
39
- on: string;
40
- summary?: string;
41
- message?: string;
42
- found?: unknown;
43
- property?: string;
44
- expected?: string;
45
- };
46
- };
47
- };
48
- };
49
- } & {
50
- [x: string]: {
51
- post: {
52
- body: {
53
- metadata?: {} | undefined;
54
- name: string;
55
- };
56
- params: {};
57
- query: unknown;
58
- headers: unknown;
59
- response: {
60
- 401: "Authentication required";
61
- 403: "Cannot create organizations";
62
- 200: {
63
- readonly organization: import("./types").Organization;
64
- };
65
- 422: {
66
- type: "validation";
67
- on: string;
68
- summary?: string;
69
- message?: string;
70
- found?: unknown;
71
- property?: string;
72
- expected?: string;
73
- };
74
- };
75
- };
76
- };
77
- } & {
78
- [x: string]: {
79
- ":organizationId": {
80
- invitations: {
81
- post: {
82
- body: {
83
- roles?: string[] | undefined;
84
- email: string;
85
- };
86
- params: {
87
- organizationId: string;
88
- };
89
- query: unknown;
90
- headers: unknown;
91
- response: {
92
- 401: "Authentication required";
93
- 403: "Cannot manage members";
94
- 200: {
95
- readonly invitationId: string;
96
- readonly token: string;
97
- };
98
- 422: {
99
- type: "validation";
100
- on: string;
101
- summary?: string;
102
- message?: string;
103
- found?: unknown;
104
- property?: string;
105
- expected?: string;
106
- };
107
- };
108
- };
109
- };
110
- };
111
- };
112
- } & {
113
- [x: string]: {
114
- ":organizationId": {
115
- invitations: {
116
- get: {
117
- body: unknown;
118
- params: {
119
- organizationId: string;
120
- };
121
- query: unknown;
122
- headers: unknown;
123
- response: {
124
- 401: "Authentication required";
125
- 403: "Cannot manage members";
126
- 200: {
127
- readonly invitations: {
128
- email: string;
129
- expiresAt: number;
130
- invitationId: string;
131
- roles: string[];
132
- state: import("./types").InvitationState;
133
- }[];
134
- };
135
- 422: {
136
- type: "validation";
137
- on: string;
138
- summary?: string;
139
- message?: string;
140
- found?: unknown;
141
- property?: string;
142
- expected?: string;
143
- };
144
- };
145
- };
146
- };
147
- };
148
- };
149
- } & {
150
- [x: string]: {
151
- ":organizationId": {
152
- invitations: {
153
- ":invitationId": {
154
- delete: {
155
- body: unknown;
156
- params: {
157
- organizationId: string;
158
- invitationId: string;
159
- };
160
- query: unknown;
161
- headers: unknown;
162
- response: {
163
- 401: "Authentication required";
164
- 403: "Cannot manage members";
165
- 404: "Invitation not found";
166
- 200: {
167
- readonly revoked: string;
168
- };
169
- 422: {
170
- type: "validation";
171
- on: string;
172
- summary?: string;
173
- message?: string;
174
- found?: unknown;
175
- property?: string;
176
- expected?: string;
177
- };
178
- };
179
- };
180
- };
181
- };
182
- };
183
- };
184
- } & {
185
- [x: string]: {
186
- invitations: {
187
- accept: {
188
- post: {
189
- body: {
190
- token: string;
191
- };
192
- params: {};
193
- query: unknown;
194
- headers: unknown;
195
- response: {
196
- 400: "Invalid or expired invitation";
197
- 401: "Authentication required";
198
- 200: {
199
- readonly organizationId: string;
200
- readonly roles: string[];
201
- };
202
- 422: {
203
- type: "validation";
204
- on: string;
205
- summary?: string;
206
- message?: string;
207
- found?: unknown;
208
- property?: string;
209
- expected?: string;
210
- };
211
- };
212
- };
213
- };
214
- };
215
- };
216
- } & {
217
- [x: string]: {
218
- ":organizationId": {
219
- members: {
220
- get: {
221
- body: unknown;
222
- params: {
223
- organizationId: string;
224
- };
225
- query: unknown;
226
- headers: unknown;
227
- response: {
228
- 401: "Authentication required";
229
- 403: "Not a member";
230
- 200: {
231
- readonly members: import("./types").OrganizationMembership[];
232
- };
233
- 422: {
234
- type: "validation";
235
- on: string;
236
- summary?: string;
237
- message?: string;
238
- found?: unknown;
239
- property?: string;
240
- expected?: string;
241
- };
242
- };
243
- };
244
- };
245
- };
246
- };
247
- } & {
248
- [x: string]: {
249
- ":organizationId": {
250
- members: {
251
- ":userId": {
252
- delete: {
253
- body: unknown;
254
- params: {
255
- userId: string;
256
- organizationId: string;
257
- };
258
- query: unknown;
259
- headers: unknown;
260
- response: {
261
- 401: "Authentication required";
262
- 403: "Cannot manage members";
263
- 200: {
264
- readonly removed: string;
265
- };
266
- 422: {
267
- type: "validation";
268
- on: string;
269
- summary?: string;
270
- message?: string;
271
- found?: unknown;
272
- property?: string;
273
- expected?: string;
274
- };
275
- };
276
- };
277
- };
278
- };
279
- };
280
- };
281
- }, {
282
- derive: {};
283
- resolve: {};
284
- schema: {};
285
- standaloneSchema: {};
286
- response: {};
287
- }, {
288
- derive: {};
289
- resolve: {};
290
- schema: {};
291
- standaloneSchema: {};
292
- response: {};
293
- } & {
294
- derive: {};
295
- resolve: {};
296
- schema: {};
297
- standaloneSchema: {};
298
- response: {};
299
- }>;
@@ -1,45 +0,0 @@
1
- import type { OrganizationId } from '../tenancy';
2
- export type Organization = {
3
- createdAt: number;
4
- metadata?: Record<string, unknown>;
5
- name: string;
6
- organizationId: OrganizationId;
7
- updatedAt: number;
8
- };
9
- export type MembershipStatus = 'active' | 'suspended';
10
- export type OrganizationMembership = {
11
- createdAt: number;
12
- organizationId: OrganizationId;
13
- roles: string[];
14
- status: MembershipStatus;
15
- updatedAt: number;
16
- userId: string;
17
- };
18
- export type InvitationState = 'accepted' | 'pending' | 'revoked';
19
- export type OrganizationInvitation = {
20
- acceptedAt?: number;
21
- createdAt: number;
22
- email: string;
23
- expiresAt: number;
24
- invitationId: string;
25
- inviterUserId?: string;
26
- organizationId: OrganizationId;
27
- roles: string[];
28
- state: InvitationState;
29
- tokenHash: string;
30
- };
31
- export type OrganizationStore = {
32
- deleteOrganization: (organizationId: OrganizationId) => Promise<void>;
33
- getInvitation: (invitationId: string) => Promise<OrganizationInvitation | undefined>;
34
- getInvitationByTokenHash: (tokenHash: string) => Promise<OrganizationInvitation | undefined>;
35
- getMembership: (organizationId: OrganizationId, userId: string) => Promise<OrganizationMembership | undefined>;
36
- getOrganization: (organizationId: OrganizationId) => Promise<Organization | undefined>;
37
- listInvitationsByOrganization: (organizationId: OrganizationId) => Promise<OrganizationInvitation[]>;
38
- listMembershipsByOrganization: (organizationId: OrganizationId) => Promise<OrganizationMembership[]>;
39
- listMembershipsByUser: (userId: string) => Promise<OrganizationMembership[]>;
40
- listOrganizations: () => Promise<Organization[]>;
41
- removeMembership: (organizationId: OrganizationId, userId: string) => Promise<void>;
42
- saveInvitation: (invitation: OrganizationInvitation) => Promise<void>;
43
- saveMembership: (membership: OrganizationMembership) => Promise<void>;
44
- saveOrganization: (organization: Organization) => Promise<void>;
45
- };