@nexys/user-management-client 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +19 -0
  2. package/dist/endpoints/admin-users.d.ts +53 -23
  3. package/dist/endpoints/admin-users.d.ts.map +1 -1
  4. package/dist/endpoints/admin-users.js +56 -23
  5. package/dist/endpoints/admin-users.js.map +1 -1
  6. package/dist/endpoints/api-tokens.d.ts +23 -0
  7. package/dist/endpoints/api-tokens.d.ts.map +1 -0
  8. package/dist/endpoints/api-tokens.js +28 -0
  9. package/dist/endpoints/api-tokens.js.map +1 -0
  10. package/dist/endpoints/auth.d.ts +50 -7
  11. package/dist/endpoints/auth.d.ts.map +1 -1
  12. package/dist/endpoints/auth.js +33 -4
  13. package/dist/endpoints/auth.js.map +1 -1
  14. package/dist/endpoints/index.d.ts +4 -0
  15. package/dist/endpoints/index.d.ts.map +1 -1
  16. package/dist/endpoints/index.js +4 -0
  17. package/dist/endpoints/index.js.map +1 -1
  18. package/dist/endpoints/me.d.ts +14 -1
  19. package/dist/endpoints/me.d.ts.map +1 -1
  20. package/dist/endpoints/me.js +11 -0
  21. package/dist/endpoints/me.js.map +1 -1
  22. package/dist/endpoints/passkeys.d.ts +39 -0
  23. package/dist/endpoints/passkeys.d.ts.map +1 -0
  24. package/dist/endpoints/passkeys.js +53 -0
  25. package/dist/endpoints/passkeys.js.map +1 -0
  26. package/dist/endpoints/projects.d.ts +69 -0
  27. package/dist/endpoints/projects.d.ts.map +1 -0
  28. package/dist/endpoints/projects.js +73 -0
  29. package/dist/endpoints/projects.js.map +1 -0
  30. package/dist/endpoints/tenants.d.ts +72 -103
  31. package/dist/endpoints/tenants.d.ts.map +1 -1
  32. package/dist/endpoints/tenants.js +64 -82
  33. package/dist/endpoints/tenants.js.map +1 -1
  34. package/dist/endpoints/two-factor.d.ts +50 -0
  35. package/dist/endpoints/two-factor.d.ts.map +1 -0
  36. package/dist/endpoints/two-factor.js +64 -0
  37. package/dist/endpoints/two-factor.js.map +1 -0
  38. package/dist/index.d.ts +1 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/types.d.ts +128 -44
  43. package/dist/types.d.ts.map +1 -1
  44. package/dist/types.js +1 -1
  45. package/dist/types.js.map +1 -1
  46. package/package.json +7 -2
  47. package/src/endpoint.test.ts +158 -0
  48. package/src/endpoint.ts +123 -0
  49. package/src/endpoints/admin-audit.ts +60 -0
  50. package/src/endpoints/admin-keys.ts +37 -0
  51. package/src/endpoints/admin-users.ts +172 -0
  52. package/src/endpoints/api-tokens.ts +37 -0
  53. package/src/endpoints/auth.ts +203 -0
  54. package/src/endpoints/health.ts +50 -0
  55. package/src/endpoints/index.ts +12 -0
  56. package/src/endpoints/me.ts +79 -0
  57. package/src/endpoints/passkeys.ts +77 -0
  58. package/src/endpoints/projects.ts +117 -0
  59. package/src/endpoints/refresh-tokens.ts +25 -0
  60. package/src/endpoints/tenants.ts +313 -0
  61. package/src/endpoints/two-factor.ts +84 -0
  62. package/src/index.ts +26 -0
  63. package/src/result.ts +39 -0
  64. package/src/types.ts +285 -0
@@ -1,27 +1,37 @@
1
1
  import { parseApiError } from "../result.js";
2
- /** Public no auth required. Check if a tenant exists by slug/name. */
3
- export const checkTenant = {
2
+ export const adminListTenants = {
4
3
  method: "GET",
5
- path: () => "/api/tenants/check",
6
- query: (input) => ({ name: input.name }),
4
+ path: () => "/api/admin/tenants",
7
5
  parseOutput: (data) => data,
8
6
  parseError: parseApiError,
9
7
  };
10
- export const listMyTenants = {
11
- method: "GET",
12
- path: () => "/api/auth/organization/list",
8
+ export const createTenant = {
9
+ method: "POST",
10
+ path: () => "/api/auth/organization/create",
11
+ body: (input) => input,
13
12
  parseOutput: (data) => data,
14
13
  parseError: parseApiError,
15
14
  };
16
- export const adminListTenants = {
17
- method: "GET",
18
- path: () => "/api/admin/tenants",
15
+ /**
16
+ * Update tenant name/slug/logo and the per-tenant `metadata` settings
17
+ * blob. Omitted fields keep their current value; `metadata: null`
18
+ * clears the blob. Requires org owner/admin (or a superadmin).
19
+ */
20
+ export const updateTenant = {
21
+ method: "POST",
22
+ path: () => "/api/auth/organization/update",
23
+ body: (input) => input,
19
24
  parseOutput: (data) => data,
20
25
  parseError: parseApiError,
21
26
  };
22
- export const createTenant = {
27
+ /**
28
+ * Owner self-service tenant delete. Cascades members, invitations, and
29
+ * roles. Requires the caller to be the org owner (or a superadmin). For
30
+ * the superadmin system-wide path see {@link adminDeleteTenant}.
31
+ */
32
+ export const deleteTenant = {
23
33
  method: "POST",
24
- path: () => "/api/auth/organization/create",
34
+ path: () => "/api/auth/organization/delete",
25
35
  body: (input) => input,
26
36
  parseOutput: (data) => data,
27
37
  parseError: parseApiError,
@@ -61,6 +71,18 @@ export const updateMemberRole = {
61
71
  parseOutput: () => ({ ok: true }),
62
72
  parseError: parseApiError,
63
73
  };
74
+ /**
75
+ * Direct member assignment — no invitation round-trip. The target
76
+ * user must already exist (lookup by userId or email); requires
77
+ * tenant owner/admin or a superadmin.
78
+ */
79
+ export const addMember = {
80
+ method: "POST",
81
+ path: () => "/api/auth/organization/add-member",
82
+ body: (input) => input,
83
+ parseOutput: (data) => data,
84
+ parseError: parseApiError,
85
+ };
64
86
  export const removeMember = {
65
87
  method: "POST",
66
88
  path: () => "/api/auth/organization/remove-member",
@@ -74,12 +96,6 @@ export const adminDeleteTenant = {
74
96
  parseOutput: () => ({ ok: true }),
75
97
  parseError: parseApiError,
76
98
  };
77
- export const deleteTenant = {
78
- method: "DELETE",
79
- path: (input) => `/api/tenants/${input.id}`,
80
- parseOutput: () => ({ ok: true }),
81
- parseError: parseApiError,
82
- };
83
99
  export const listTenantRoles = {
84
100
  method: "GET",
85
101
  path: (input) => `/api/tenants/${input.orgId}/roles`,
@@ -89,94 +105,60 @@ export const listTenantRoles = {
89
105
  export const createTenantRole = {
90
106
  method: "POST",
91
107
  path: (input) => `/api/tenants/${input.orgId}/roles`,
92
- body: (input) => ({ name: input.name, description: input.description }),
108
+ body: (input) => ({
109
+ name: input.name,
110
+ description: input.description,
111
+ permissions: input.permissions,
112
+ }),
93
113
  parseOutput: (data) => data,
94
114
  parseError: parseApiError,
95
115
  };
96
- export const deleteTenantRole = {
97
- method: "DELETE",
116
+ /**
117
+ * Update a role's name/description and, when `permissions` is present,
118
+ * replace its permission set wholesale.
119
+ */
120
+ export const updateTenantRole = {
121
+ method: "PATCH",
98
122
  path: (input) => `/api/tenants/${input.orgId}/roles/${input.roleId}`,
99
- parseOutput: () => ({ ok: true }),
100
- parseError: parseApiError,
101
- };
102
- export const addTenantMember = {
103
- method: "POST",
104
- path: (input) => `/api/tenants/${input.orgId}/members`,
105
- body: (input) => ({ email: input.email, role: input.role ?? "member" }),
106
- parseOutput: (data) => data,
107
- parseError: parseApiError,
108
- };
109
- export const getTenantMember = {
110
- method: "GET",
111
- path: (input) => `/api/tenants/${input.orgId}/members/${input.userId}`,
112
- parseOutput: (data) => data,
113
- parseError: parseApiError,
114
- };
115
- export const getTenantMemberRoles = {
116
- method: "GET",
117
- path: (input) => `/api/tenants/${input.orgId}/members/${input.userId}/roles`,
118
- parseOutput: (data) => data,
119
- parseError: parseApiError,
120
- };
121
- export const getTenantMemberPermissions = {
122
- method: "GET",
123
- path: (input) => `/api/tenants/${input.orgId}/members/${input.userId}/permissions`,
124
- parseOutput: (data) => data,
125
- parseError: parseApiError,
126
- };
127
- export const getTenantMemberAuthMethods = {
128
- method: "GET",
129
- path: (input) => `/api/tenants/${input.orgId}/members/${input.userId}/auth-methods`,
123
+ body: (input) => ({
124
+ name: input.name,
125
+ description: input.description,
126
+ permissions: input.permissions,
127
+ }),
130
128
  parseOutput: (data) => data,
131
129
  parseError: parseApiError,
132
130
  };
133
- export const assignTenantMemberRole = {
134
- method: "POST",
135
- path: (input) => `/api/tenants/${input.orgId}/members/${input.userId}/roles`,
136
- body: (input) => ({ roleId: input.roleId }),
137
- parseOutput: () => ({ ok: true }),
138
- parseError: parseApiError,
139
- };
140
- export const unassignTenantMemberRole = {
131
+ export const deleteTenantRole = {
141
132
  method: "DELETE",
142
- path: (input) => `/api/tenants/${input.orgId}/members/${input.userId}/roles/${input.roleId}`,
133
+ path: (input) => `/api/tenants/${input.orgId}/roles/${input.roleId}`,
143
134
  parseOutput: () => ({ ok: true }),
144
135
  parseError: parseApiError,
145
136
  };
146
- export const updateMemberStatus = {
147
- method: "PATCH",
148
- path: (input) => `/api/tenants/${input.orgId}/members/${input.userId}/status`,
149
- body: (input) => ({ status: input.status }),
137
+ /** Custom roles assigned to one member (with their permissions). */
138
+ export const listMemberRoles = {
139
+ method: "GET",
140
+ path: (input) => `/api/tenants/${input.orgId}/members/${input.memberId}/roles`,
150
141
  parseOutput: (data) => data,
151
142
  parseError: parseApiError,
152
143
  };
153
- export const addMemberAuthMethod = {
144
+ export const assignMemberRole = {
154
145
  method: "POST",
155
- path: (input) => `/api/tenants/${input.orgId}/members/${input.userId}/auth-methods`,
156
- body: (input) => ({
157
- provider: input.provider,
158
- ...(input.accountId ? { accountId: input.accountId } : {}),
159
- ...(input.password ? { password: input.password } : {}),
160
- }),
146
+ path: (input) => `/api/tenants/${input.orgId}/members/${input.memberId}/roles`,
147
+ body: (input) => ({ roleId: input.roleId }),
161
148
  parseOutput: (data) => data,
162
149
  parseError: parseApiError,
163
150
  };
164
- export const removeMemberAuthMethod = {
151
+ export const removeMemberRole = {
165
152
  method: "DELETE",
166
- path: (input) => `/api/tenants/${input.orgId}/members/${input.userId}/auth-methods/${input.methodId}`,
153
+ path: (input) => `/api/tenants/${input.orgId}/members/${input.memberId}/roles/${input.roleId}`,
167
154
  parseOutput: () => ({ ok: true }),
168
155
  parseError: parseApiError,
169
156
  };
170
- export const listMemberTokens = {
157
+ /** The caller's own effective role/permissions inside a tenant. */
158
+ export const myTenantPermissions = {
171
159
  method: "GET",
172
- path: (input) => `/api/tenants/${input.orgId}/members/${input.userId}/tokens`,
160
+ path: (input) => `/api/tenants/${input.orgId}/permissions/me`,
173
161
  parseOutput: (data) => data,
174
162
  parseError: parseApiError,
175
163
  };
176
- export const revokeMemberToken = {
177
- method: "DELETE",
178
- path: (input) => `/api/tenants/${input.orgId}/members/${input.userId}/tokens/${input.tokenId}`,
179
- parseOutput: () => ({ ok: true }),
180
- parseError: parseApiError,
181
- };
182
164
  //# sourceMappingURL=tenants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tenants.js","sourceRoot":"","sources":["../../src/endpoints/tenants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAgB7C,wEAAwE;AACxE,MAAM,CAAC,MAAM,WAAW,GAIpB;IACF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,GAAG,EAAE,CAAC,oBAAoB;IAChC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IACxC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAA2B;IAClD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAsD;IAC9E,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,GAAG,EAAE,CAAC,6BAA6B;IACzC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAA+B;IACtD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAuD;IAClF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,GAAG,EAAE,CAAC,oBAAoB;IAChC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAgC;IACvD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAIrB;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,+BAA+B;IAC3C,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAiB;IACxC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAIxB;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,mCAAmC;IAC/C,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CACpB,IAA4D;IAC9D,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAItB;IACF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,GAAG,EAAE,CAAC,8CAA8C;IAC1D,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;IAC5D,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAwB;IAC/C,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAIrB;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,sCAAsC;IAClD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAkB;IACzC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAIzB;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,0CAA0C;IACtD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CACpB,IAAsE;IACxE,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAIzB;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,2CAA2C;IACvD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAIrB;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,sCAAsC;IAClD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAI1B;IACF,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,KAAK,CAAC,EAAE,EAAE;IACjD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAIrB;IACF,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,KAAK,CAAC,EAAE,EAAE;IAC3C,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAIxB;IACF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,KAAK,CAAC,KAAK,QAAQ;IACpD,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAA4B;IACnD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAIzB;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,KAAK,CAAC,KAAK,QAAQ;IACpD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;IACvE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAe;IACtC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAIzB;IACF,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,KAAK,CAAC,KAAK,UAAU,KAAK,CAAC,MAAM,EAAE;IACpE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAIxB;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,KAAK,CAAC,KAAK,UAAU;IACtD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;IACvE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CACpB,IAMC;IACH,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAIxB;IACF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,MAAM,EAAE;IACtE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAoB;IAC3C,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAI7B;IACF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,gBAAgB,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,MAAM,QAAQ;IAC7D,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAA4B;IACnD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAInC;IACF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,gBAAgB,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,MAAM,cAAc;IACnE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAiC;IACxD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAInC;IACF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,gBAAgB,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,MAAM,eAAe;IACpE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CACpB,IAA8D;IAChE,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAI/B;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,gBAAgB,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,MAAM,QAAQ;IAC7D,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IAC3C,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAIjC;IACF,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,gBAAgB,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,MAAM,UAAU,KAAK,CAAC,MAAM,EAAE;IAC7E,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAI3B;IACF,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,gBAAgB,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,MAAM,SAAS;IAC9D,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IAC3C,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAwC;IAC/D,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAI5B;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,gBAAgB,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,MAAM,eAAe;IACpE,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAC;IACF,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAgC;IACvD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAI/B;IACF,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,gBAAgB,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,MAAM,iBAAiB,KAAK,CAAC,QAAQ,EAAE;IACtF,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAYF,MAAM,CAAC,MAAM,gBAAgB,GAIzB;IACF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,gBAAgB,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,MAAM,SAAS;IAC9D,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAsC;IAC7D,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAI1B;IACF,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,gBAAgB,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC,OAAO,EAAE;IAC/E,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,UAAU,EAAE,aAAa;CAC1B,CAAC"}
1
+ {"version":3,"file":"tenants.js","sourceRoot":"","sources":["../../src/endpoints/tenants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { Endpoint } from "../endpoint.js";
2
+ import type { ApiError } from "../result.js";
3
+ import type { AuthSuccess, TwoFactorEnableResponse } from "../types.js";
4
+ /**
5
+ * Start TOTP enrolment (cookie-auth). Returns the secret, the
6
+ * `otpauth://` URI to render as a QR, and 10 single-use backup codes
7
+ * that are shown exactly once. Enrolment isn't active until
8
+ * {@link twoFactorConfirm} verifies the first code.
9
+ */
10
+ export declare const twoFactorEnable: Endpoint<void, TwoFactorEnableResponse, ApiError>;
11
+ export declare const twoFactorConfirm: Endpoint<{
12
+ code: string;
13
+ }, {
14
+ ok: true;
15
+ }, ApiError>;
16
+ /** Requires a current TOTP code; wipes the secret + backup codes. */
17
+ export declare const twoFactorDisable: Endpoint<{
18
+ code: string;
19
+ }, {
20
+ ok: true;
21
+ }, ApiError>;
22
+ /**
23
+ * Complete a password sign-in that returned a
24
+ * {@link TwoFactorChallenge}: `token` is the challenge token, `code`
25
+ * the current TOTP code. Sets the session cookie on success.
26
+ */
27
+ export declare const verifyTotp: Endpoint<{
28
+ token: string;
29
+ code: string;
30
+ }, AuthSuccess, ApiError>;
31
+ /**
32
+ * Step-up re-verification for an already authenticated caller (cookie
33
+ * or bearer). Answers whether `code` is a current TOTP code for the
34
+ * caller without touching sessions or tokens — resource servers use it
35
+ * to gate sensitive actions (payments, key exports) on a fresh second
36
+ * factor. `enabled: false` means the caller has no verified TOTP
37
+ * enrolment (and `valid` is then always false).
38
+ */
39
+ export declare const twoFactorStepUp: Endpoint<{
40
+ code: string;
41
+ }, {
42
+ enabled: boolean;
43
+ valid: boolean;
44
+ }, ApiError>;
45
+ /** Like {@link verifyTotp} but consumes a single-use backup code. */
46
+ export declare const verifyBackupCode: Endpoint<{
47
+ token: string;
48
+ code: string;
49
+ }, AuthSuccess, ApiError>;
50
+ //# sourceMappingURL=two-factor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"two-factor.d.ts","sourceRoot":"","sources":["../../src/endpoints/two-factor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,IAAI,EAAE,uBAAuB,EAAE,QAAQ,CAK7E,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EAAE,QAAQ,CAM/E,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EAAE,QAAQ,CAM/E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,QAAQ,CAC/B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC/B,WAAW,EACX,QAAQ,CAOT,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CACpC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAChB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EACpC,QAAQ,CAOT,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CACrC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC/B,WAAW,EACX,QAAQ,CAOT,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { parseApiError } from "../result.js";
2
+ /**
3
+ * Start TOTP enrolment (cookie-auth). Returns the secret, the
4
+ * `otpauth://` URI to render as a QR, and 10 single-use backup codes
5
+ * that are shown exactly once. Enrolment isn't active until
6
+ * {@link twoFactorConfirm} verifies the first code.
7
+ */
8
+ export const twoFactorEnable = {
9
+ method: "POST",
10
+ path: () => "/api/auth/two-factor/enable",
11
+ parseOutput: (data) => data,
12
+ parseError: parseApiError,
13
+ };
14
+ export const twoFactorConfirm = {
15
+ method: "POST",
16
+ path: () => "/api/auth/two-factor/confirm",
17
+ body: (input) => input,
18
+ parseOutput: () => ({ ok: true }),
19
+ parseError: parseApiError,
20
+ };
21
+ /** Requires a current TOTP code; wipes the secret + backup codes. */
22
+ export const twoFactorDisable = {
23
+ method: "POST",
24
+ path: () => "/api/auth/two-factor/disable",
25
+ body: (input) => input,
26
+ parseOutput: () => ({ ok: true }),
27
+ parseError: parseApiError,
28
+ };
29
+ /**
30
+ * Complete a password sign-in that returned a
31
+ * {@link TwoFactorChallenge}: `token` is the challenge token, `code`
32
+ * the current TOTP code. Sets the session cookie on success.
33
+ */
34
+ export const verifyTotp = {
35
+ method: "POST",
36
+ path: () => "/api/auth/two-factor/verify-totp",
37
+ body: (input) => input,
38
+ parseOutput: (data) => data,
39
+ parseError: parseApiError,
40
+ };
41
+ /**
42
+ * Step-up re-verification for an already authenticated caller (cookie
43
+ * or bearer). Answers whether `code` is a current TOTP code for the
44
+ * caller without touching sessions or tokens — resource servers use it
45
+ * to gate sensitive actions (payments, key exports) on a fresh second
46
+ * factor. `enabled: false` means the caller has no verified TOTP
47
+ * enrolment (and `valid` is then always false).
48
+ */
49
+ export const twoFactorStepUp = {
50
+ method: "POST",
51
+ path: () => "/api/me/two-factor/step-up",
52
+ body: (input) => input,
53
+ parseOutput: (data) => data,
54
+ parseError: parseApiError,
55
+ };
56
+ /** Like {@link verifyTotp} but consumes a single-use backup code. */
57
+ export const verifyBackupCode = {
58
+ method: "POST",
59
+ path: () => "/api/auth/two-factor/verify-backup-code",
60
+ body: (input) => input,
61
+ parseOutput: (data) => data,
62
+ parseError: parseApiError,
63
+ };
64
+ //# sourceMappingURL=two-factor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"two-factor.js","sourceRoot":"","sources":["../../src/endpoints/two-factor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAsD;IAChF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,6BAA6B;IACzC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAA+B;IACtD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAuD;IAClF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,8BAA8B;IAC1C,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,qEAAqE;AACrE,MAAM,CAAC,MAAM,gBAAgB,GAAuD;IAClF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,8BAA8B;IAC1C,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAInB;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,kCAAkC;IAC9C,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAmB;IAC1C,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAIxB;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,4BAA4B;IACxC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAA4C;IACnE,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,qEAAqE;AACrE,MAAM,CAAC,MAAM,gBAAgB,GAIzB;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,yCAAyC;IACrD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAmB;IAC1C,UAAU,EAAE,aAAa;CAC1B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,4 +2,5 @@ export { createClient, type ClientConfig, type Endpoint, type EndpointError, typ
2
2
  export { err, ok, parseApiError, type ApiError, type NetworkError, type Result, } from "./result.js";
3
3
  export * from "./endpoints/index.js";
4
4
  export type * from "./types.js";
5
+ export { isTwoFactorChallenge } from "./types.js";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,QAAQ,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,GAAG,EACH,EAAE,EACF,aAAa,EACb,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,MAAM,GACZ,MAAM,aAAa,CAAC;AAGrB,cAAc,sBAAsB,CAAC;AAGrC,mBAAmB,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,QAAQ,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,GAAG,EACH,EAAE,EACF,aAAa,EACb,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,MAAM,GACZ,MAAM,aAAa,CAAC;AAGrB,cAAc,sBAAsB,CAAC;AAGrC,mBAAmB,YAAY,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -3,4 +3,5 @@ export { createClient, } from "./endpoint.js";
3
3
  export { err, ok, parseApiError, } from "./result.js";
4
4
  // Endpoints — all named exports, grouped by domain
5
5
  export * from "./endpoints/index.js";
6
+ export { isTwoFactorChallenge } from "./types.js";
6
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,OAAO,EACL,YAAY,GAQb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,GAAG,EACH,EAAE,EACF,aAAa,GAId,MAAM,aAAa,CAAC;AAErB,mDAAmD;AACnD,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,OAAO,EACL,YAAY,GAQb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,GAAG,EACH,EAAE,EACF,aAAa,GAId,MAAM,aAAa,CAAC;AAErB,mDAAmD;AACnD,cAAc,sBAAsB,CAAC;AAIrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC"}
package/dist/types.d.ts CHANGED
@@ -39,6 +39,62 @@ export interface AuthSuccess {
39
39
  user: SessionUser;
40
40
  session?: SessionRow;
41
41
  }
42
+ /**
43
+ * Password sign-in for a 2FA-enrolled user returns this instead of
44
+ * {@link AuthSuccess}; complete the flow with `verifyTotp` or
45
+ * `verifyBackupCode`, echoing the token back.
46
+ */
47
+ export interface TwoFactorChallenge {
48
+ twoFactorRequired: true;
49
+ twoFactorToken: string;
50
+ }
51
+ export type SignInResult = AuthSuccess | TwoFactorChallenge;
52
+ export declare const isTwoFactorChallenge: (r: SignInResult) => r is TwoFactorChallenge;
53
+ export interface TwoFactorEnableResponse {
54
+ /** Base32 TOTP secret, for manual authenticator entry. */
55
+ secret: string;
56
+ /** `otpauth://totp/...` URI — render as a QR code. */
57
+ uri: string;
58
+ /** 10 single-use backup codes, shown exactly once. */
59
+ backupCodes: string[];
60
+ }
61
+ export interface ApiTokenRow {
62
+ id: string;
63
+ name: string | null;
64
+ /** Display prefix of the plaintext ("um_a1b2c"). */
65
+ start: string | null;
66
+ status: "active" | "revoked" | "expired" | (string & {});
67
+ createdAt: string;
68
+ expiresAt: string | null;
69
+ revokedAt: string | null;
70
+ lastUsedAt: string | null;
71
+ }
72
+ export interface ApiTokenCreated {
73
+ id: string;
74
+ /** The full plaintext token — shown exactly once, never stored. */
75
+ token: string;
76
+ name: string;
77
+ start: string;
78
+ expiresAt: string | null;
79
+ }
80
+ export interface PasskeyItem {
81
+ id: string;
82
+ name: string | null;
83
+ createdAt: string | null;
84
+ deviceType: string;
85
+ backedUp: boolean;
86
+ transports: string | null;
87
+ }
88
+ /**
89
+ * WebAuthn ceremony start: `options` is the standard
90
+ * `PublicKeyCredential{Creation,Request}Options` JSON (base64url
91
+ * fields) for the browser; `challenge` is the opaque server handle to
92
+ * echo back on finish.
93
+ */
94
+ export interface WebAuthnCeremonyStart {
95
+ challenge: string;
96
+ options: Record<string, unknown>;
97
+ }
42
98
  export interface MeResponse {
43
99
  user: {
44
100
  id: string;
@@ -80,15 +136,44 @@ export interface RefreshToken {
80
136
  }
81
137
  export interface AdminUserRow {
82
138
  id: string;
139
+ /** Display name — kept in sync with first/last when those are set. */
83
140
  name: string;
141
+ firstName: string | null;
142
+ lastName: string | null;
84
143
  email: string;
85
144
  role: UserRole;
86
145
  status: UserStatus;
87
146
  type: UserType;
147
+ /** Linked auth providers — "credential" plus any social ids. */
148
+ providers: string[];
88
149
  deletedAt: string | null;
89
150
  createdAt: string;
90
151
  updatedAt: string;
91
152
  }
153
+ export interface AuthAccount {
154
+ id: string;
155
+ providerId: string;
156
+ createdAt: string;
157
+ }
158
+ export interface AuthPasskey {
159
+ id: string;
160
+ name: string | null;
161
+ deviceType: string;
162
+ createdAt: string | null;
163
+ }
164
+ export interface AuthMethodsResponse {
165
+ accounts: AuthAccount[];
166
+ passkeys: AuthPasskey[];
167
+ twoFactorEnabled: boolean;
168
+ }
169
+ export interface UserMembership {
170
+ memberId: string;
171
+ organizationId: string;
172
+ organizationName: string;
173
+ organizationSlug: string;
174
+ role: TenantRole;
175
+ createdAt: string;
176
+ }
92
177
  export interface AdminUserListResponse {
93
178
  total: number;
94
179
  rows: AdminUserRow[];
@@ -97,79 +182,78 @@ export interface TenantRow {
97
182
  id: string;
98
183
  name: string;
99
184
  slug: string;
185
+ /** Project the tenant lives in; null for legacy tenants. */
186
+ projectId?: string | null;
100
187
  createdAt: string;
101
188
  memberCount: number;
102
189
  }
190
+ export type TenancyMode = "multi" | "single";
191
+ export interface ProjectRow {
192
+ id: string;
193
+ name: string;
194
+ slug: string;
195
+ ownerUserId: string;
196
+ tenancyMode: TenancyMode;
197
+ allowTenantCreation: boolean;
198
+ allowSignup: boolean;
199
+ metadata: Record<string, unknown> | null;
200
+ tenantCount?: number;
201
+ createdAt: string;
202
+ updatedAt: string;
203
+ }
103
204
  export interface Member {
104
205
  id: string;
105
206
  organizationId: string;
106
207
  userId: string;
107
208
  role: TenantRole;
108
- userName: string;
109
- userEmail: string;
209
+ /** Custom tenant roles assigned to this member. */
210
+ roles?: MemberRoleRef[];
110
211
  createdAt: string;
212
+ user: {
213
+ name: string;
214
+ email: string;
215
+ image: string | null;
216
+ };
217
+ }
218
+ export interface MemberRoleRef {
219
+ id: string;
220
+ name: string;
111
221
  }
112
222
  export interface FullOrganization {
113
223
  id: string;
114
224
  name: string;
115
225
  slug: string;
226
+ logo?: string | null;
227
+ /** Per-tenant settings blob; null when unset. */
228
+ metadata?: Record<string, unknown> | null;
116
229
  members: Member[];
230
+ invitations: Invitation[];
117
231
  }
118
232
  export interface Invitation {
119
233
  id: string;
120
234
  email: string;
121
235
  role: TenantRole;
122
- status: "pending" | "accepted" | "rejected" | "expired";
236
+ status: "pending" | "accepted" | "rejected" | "expired" | (string & {});
123
237
  organizationId: string;
124
- }
125
- export interface MemberDetail {
126
- id: string;
127
- name: string;
128
- email: string;
129
- emailVerified: boolean;
130
- role: TenantRole;
131
- status: UserStatus;
132
- createdAt: string;
133
- memberSince: string;
238
+ expiresAt?: string;
239
+ createdAt?: string;
134
240
  }
135
241
  export interface RoleRow {
136
242
  id: string;
137
243
  name: string;
138
244
  description: string | null;
245
+ /** Permission strings granted by this role (e.g. `invoices:read`). */
246
+ permissions: string[];
139
247
  createdAt: string;
140
248
  updatedAt: string;
141
249
  }
142
- export interface MyTenant {
143
- id: string;
144
- name: string;
145
- slug: string;
146
- role: TenantRole;
147
- createdAt: string;
148
- }
149
- export interface AuthMethod {
150
- provider: string;
151
- createdAt: string;
152
- }
153
- export interface AdminUserDetail {
154
- id: string;
155
- name: string;
156
- email: string;
157
- emailVerified: boolean;
158
- role: UserRole;
159
- status: UserStatus;
160
- type: UserType;
161
- banned: boolean;
162
- twoFactorEnabled: boolean;
163
- authMethods: AuthMethod[];
164
- deletedAt: string | null;
165
- createdAt: string;
166
- updatedAt: string;
167
- }
168
- export interface UserRoleRow {
169
- id: string;
170
- name: string;
171
- description: string | null;
172
- assigned: boolean;
250
+ export interface MyTenantPermissions {
251
+ /** Built-in membership role; null for a non-member superadmin. */
252
+ role: TenantRole | null;
253
+ /** Names of assigned custom roles. */
254
+ roles: string[];
255
+ /** Union of permissions granted by those roles, sorted. */
256
+ permissions: string[];
173
257
  }
174
258
  export interface ApiErrorBody {
175
259
  code?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}