@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
@@ -0,0 +1,39 @@
1
+ import type { Endpoint } from "../endpoint.js";
2
+ import type { ApiError } from "../result.js";
3
+ import type { AuthSuccess, PasskeyItem, WebAuthnCeremonyStart } from "../types.js";
4
+ /**
5
+ * WebAuthn ceremonies are two round-trips: `start` returns the options
6
+ * JSON for `navigator.credentials.create()/get()` plus an opaque
7
+ * `challenge` handle; `finish` echoes the handle with the credential
8
+ * the browser produced (serialised with base64url fields — see the
9
+ * webauthn helpers in `@nexys/user-management-web`).
10
+ */
11
+ export declare const passkeyRegisterStart: Endpoint<void, WebAuthnCeremonyStart, ApiError>;
12
+ export declare const passkeyRegisterFinish: Endpoint<{
13
+ challenge: string;
14
+ response: Record<string, unknown>;
15
+ name?: string;
16
+ }, {
17
+ id: string;
18
+ }, ApiError>;
19
+ /**
20
+ * Anonymous. With `email`, `allowCredentials` is scoped to that user's
21
+ * authenticators; without it the browser offers discoverable
22
+ * credentials.
23
+ */
24
+ export declare const passkeySignInStart: Endpoint<{
25
+ email?: string;
26
+ }, WebAuthnCeremonyStart, ApiError>;
27
+ export declare const passkeySignInFinish: Endpoint<{
28
+ challenge: string;
29
+ response: Record<string, unknown>;
30
+ }, AuthSuccess, ApiError>;
31
+ export declare const listPasskeys: Endpoint<void, {
32
+ passkeys: PasskeyItem[];
33
+ }, ApiError>;
34
+ export declare const deleteOwnPasskey: Endpoint<{
35
+ id: string;
36
+ }, {
37
+ ok: true;
38
+ }, ApiError>;
39
+ //# sourceMappingURL=passkeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passkeys.d.ts","sourceRoot":"","sources":["../../src/endpoints/passkeys.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,EACV,WAAW,EACX,WAAW,EACX,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAErB;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,IAAI,EAAE,qBAAqB,EAAE,QAAQ,CAKhF,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAC1C;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EACd,QAAQ,CAOT,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CACvC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAClB,qBAAqB,EACrB,QAAQ,CAOT,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CACxC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EACxD,WAAW,EACX,QAAQ,CAOT,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE;IAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;CAAE,EAAE,QAAQ,CAK9E,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EAAE,QAAQ,CAK7E,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { parseApiError } from "../result.js";
2
+ /**
3
+ * WebAuthn ceremonies are two round-trips: `start` returns the options
4
+ * JSON for `navigator.credentials.create()/get()` plus an opaque
5
+ * `challenge` handle; `finish` echoes the handle with the credential
6
+ * the browser produced (serialised with base64url fields — see the
7
+ * webauthn helpers in `@nexys/user-management-web`).
8
+ */
9
+ export const passkeyRegisterStart = {
10
+ method: "POST",
11
+ path: () => "/api/auth/passkey/register/start",
12
+ parseOutput: (data) => data,
13
+ parseError: parseApiError,
14
+ };
15
+ export const passkeyRegisterFinish = {
16
+ method: "POST",
17
+ path: () => "/api/auth/passkey/register/finish",
18
+ body: (input) => input,
19
+ parseOutput: (data) => data,
20
+ parseError: parseApiError,
21
+ };
22
+ /**
23
+ * Anonymous. With `email`, `allowCredentials` is scoped to that user's
24
+ * authenticators; without it the browser offers discoverable
25
+ * credentials.
26
+ */
27
+ export const passkeySignInStart = {
28
+ method: "POST",
29
+ path: () => "/api/auth/passkey/sign-in/start",
30
+ body: (input) => input,
31
+ parseOutput: (data) => data,
32
+ parseError: parseApiError,
33
+ };
34
+ export const passkeySignInFinish = {
35
+ method: "POST",
36
+ path: () => "/api/auth/passkey/sign-in/finish",
37
+ body: (input) => input,
38
+ parseOutput: (data) => data,
39
+ parseError: parseApiError,
40
+ };
41
+ export const listPasskeys = {
42
+ method: "GET",
43
+ path: () => "/api/auth/passkey/list",
44
+ parseOutput: (data) => data,
45
+ parseError: parseApiError,
46
+ };
47
+ export const deleteOwnPasskey = {
48
+ method: "DELETE",
49
+ path: (input) => `/api/auth/passkey/${input.id}`,
50
+ parseOutput: () => ({ ok: true }),
51
+ parseError: parseApiError,
52
+ };
53
+ //# sourceMappingURL=passkeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passkeys.js","sourceRoot":"","sources":["../../src/endpoints/passkeys.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAO7C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoD;IACnF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,kCAAkC;IAC9C,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAA6B;IACpD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAI9B;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,CAAC,IAAsB;IAC7C,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAI3B;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,iCAAiC;IAC7C,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAA6B;IACpD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAI5B;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,MAAM,CAAC,MAAM,YAAY,GAA0D;IACjF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,GAAG,EAAE,CAAC,wBAAwB;IACpC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAmC;IAC1D,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAqD;IAChF,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,KAAK,CAAC,EAAE,EAAE;IAChD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,UAAU,EAAE,aAAa;CAC1B,CAAC"}
@@ -0,0 +1,69 @@
1
+ import type { Endpoint } from "../endpoint.js";
2
+ import type { ApiError } from "../result.js";
3
+ import type { ProjectRow, TenancyMode, TenantRow } from "../types.js";
4
+ /**
5
+ * Projects — isolated user-management spaces. One account can run
6
+ * several independent products, each as its own project with its own
7
+ * tenancy configuration:
8
+ *
9
+ * - `tenancyMode` — `"multi"` (any number of tenants) or `"single"`
10
+ * (exactly one; a second create returns `409 single_tenant_limit`).
11
+ * - `allowTenantCreation` — when true, any authenticated user may
12
+ * create a tenant inside the project (self-serve).
13
+ * - `allowSignup` — when true, project-scoped sign-up
14
+ * (`signUp` with a `projectId`) is open.
15
+ */
16
+ export declare const createProject: Endpoint<{
17
+ name: string;
18
+ slug?: string;
19
+ tenancyMode?: TenancyMode;
20
+ allowTenantCreation?: boolean;
21
+ allowSignup?: boolean;
22
+ metadata?: Record<string, unknown> | null;
23
+ }, ProjectRow, ApiError>;
24
+ /** The caller's projects, tenant counts included (superadmin sees all). */
25
+ export declare const listProjects: Endpoint<void, {
26
+ projects: ProjectRow[];
27
+ }, ApiError>;
28
+ export declare const getProject: Endpoint<{
29
+ projectId: string;
30
+ }, ProjectRow, ApiError>;
31
+ /**
32
+ * Update project settings. Omitted fields keep their current value;
33
+ * `metadata: null` clears the blob. Narrowing `tenancyMode` to
34
+ * `"single"` is refused (`409 project_has_multiple_tenants`) while the
35
+ * project holds more than one tenant. Owner or superadmin only.
36
+ */
37
+ export declare const updateProject: Endpoint<{
38
+ projectId: string;
39
+ name?: string;
40
+ slug?: string;
41
+ tenancyMode?: TenancyMode;
42
+ allowTenantCreation?: boolean;
43
+ allowSignup?: boolean;
44
+ metadata?: Record<string, unknown> | null;
45
+ }, ProjectRow, ApiError>;
46
+ /** Delete a project and every tenant inside it (cascade). */
47
+ export declare const deleteProject: Endpoint<{
48
+ projectId: string;
49
+ }, {
50
+ ok: true;
51
+ id: string;
52
+ }, ApiError>;
53
+ /** Tenants inside a project, member counts included. Owner or superadmin. */
54
+ export declare const listProjectTenants: Endpoint<{
55
+ projectId: string;
56
+ }, {
57
+ tenants: TenantRow[];
58
+ }, ApiError>;
59
+ /**
60
+ * Create a tenant inside a project; the caller becomes its owner. The
61
+ * project owner (or a superadmin) always may; other authenticated users
62
+ * need the project's `allowTenantCreation` setting.
63
+ */
64
+ export declare const createProjectTenant: Endpoint<{
65
+ projectId: string;
66
+ name: string;
67
+ slug?: string;
68
+ }, TenantRow, ApiError>;
69
+ //# sourceMappingURL=projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/endpoints/projects.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,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAClC;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C,EACD,UAAU,EACV,QAAQ,CAOT,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE;IAAE,QAAQ,EAAE,UAAU,EAAE,CAAA;CAAE,EAAE,QAAQ,CAK7E,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,UAAU,EAAE,QAAQ,CAK5E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAClC;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C,EACD,UAAU,EACV,QAAQ,CAOT,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,aAAa,EAAE,QAAQ,CAClC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EACxB,QAAQ,CAMT,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CACvC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EACrB;IAAE,OAAO,EAAE,SAAS,EAAE,CAAA;CAAE,EACxB,QAAQ,CAMT,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CACxC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAClD,SAAS,EACT,QAAQ,CAOT,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { parseApiError } from "../result.js";
2
+ /**
3
+ * Projects — isolated user-management spaces. One account can run
4
+ * several independent products, each as its own project with its own
5
+ * tenancy configuration:
6
+ *
7
+ * - `tenancyMode` — `"multi"` (any number of tenants) or `"single"`
8
+ * (exactly one; a second create returns `409 single_tenant_limit`).
9
+ * - `allowTenantCreation` — when true, any authenticated user may
10
+ * create a tenant inside the project (self-serve).
11
+ * - `allowSignup` — when true, project-scoped sign-up
12
+ * (`signUp` with a `projectId`) is open.
13
+ */
14
+ export const createProject = {
15
+ method: "POST",
16
+ path: () => "/api/projects",
17
+ body: (input) => input,
18
+ parseOutput: (data) => data,
19
+ parseError: parseApiError,
20
+ };
21
+ /** The caller's projects, tenant counts included (superadmin sees all). */
22
+ export const listProjects = {
23
+ method: "GET",
24
+ path: () => "/api/projects",
25
+ parseOutput: (data) => data,
26
+ parseError: parseApiError,
27
+ };
28
+ export const getProject = {
29
+ method: "GET",
30
+ path: (input) => `/api/projects/${encodeURIComponent(input.projectId)}`,
31
+ parseOutput: (data) => data,
32
+ parseError: parseApiError,
33
+ };
34
+ /**
35
+ * Update project settings. Omitted fields keep their current value;
36
+ * `metadata: null` clears the blob. Narrowing `tenancyMode` to
37
+ * `"single"` is refused (`409 project_has_multiple_tenants`) while the
38
+ * project holds more than one tenant. Owner or superadmin only.
39
+ */
40
+ export const updateProject = {
41
+ method: "PATCH",
42
+ path: (input) => `/api/projects/${encodeURIComponent(input.projectId)}`,
43
+ body: ({ projectId: _projectId, ...rest }) => rest,
44
+ parseOutput: (data) => data,
45
+ parseError: parseApiError,
46
+ };
47
+ /** Delete a project and every tenant inside it (cascade). */
48
+ export const deleteProject = {
49
+ method: "DELETE",
50
+ path: (input) => `/api/projects/${encodeURIComponent(input.projectId)}`,
51
+ parseOutput: (data) => data,
52
+ parseError: parseApiError,
53
+ };
54
+ /** Tenants inside a project, member counts included. Owner or superadmin. */
55
+ export const listProjectTenants = {
56
+ method: "GET",
57
+ path: (input) => `/api/projects/${encodeURIComponent(input.projectId)}/tenants`,
58
+ parseOutput: (data) => data,
59
+ parseError: parseApiError,
60
+ };
61
+ /**
62
+ * Create a tenant inside a project; the caller becomes its owner. The
63
+ * project owner (or a superadmin) always may; other authenticated users
64
+ * need the project's `allowTenantCreation` setting.
65
+ */
66
+ export const createProjectTenant = {
67
+ method: "POST",
68
+ path: (input) => `/api/projects/${encodeURIComponent(input.projectId)}/tenants`,
69
+ body: ({ projectId: _projectId, ...rest }) => rest,
70
+ parseOutput: (data) => data,
71
+ parseError: parseApiError,
72
+ };
73
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/endpoints/projects.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,aAAa,GAWtB;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,eAAe;IAC3B,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAkB;IACzC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,YAAY,GAAyD;IAChF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,GAAG,EAAE,CAAC,eAAe;IAC3B,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAkC;IACzD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAA0D;IAC/E,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;IACvE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAkB;IACzC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAYtB;IACF,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;IACvE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI;IAClD,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAkB;IACzC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAItB;IACF,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;IACvE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAgC;IACvD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAI3B;IACF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU;IAC/E,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAgC;IACvD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAI5B;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU;IAC/E,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI;IAClD,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAiB;IACxC,UAAU,EAAE,aAAa;CAC1B,CAAC"}
@@ -1,28 +1,49 @@
1
1
  import type { Endpoint } from "../endpoint.js";
2
2
  import type { ApiError } from "../result.js";
3
- import type { FullOrganization, Invitation, MemberDetail, MyTenant, RoleRow, TenantRole, TenantRow, UserStatus } from "../types.js";
4
- export type CheckTenantResponse = {
5
- exists: false;
6
- } | {
7
- exists: true;
8
- id: string;
9
- name: string;
10
- slug: string;
11
- };
12
- /** Public — no auth required. Check if a tenant exists by slug/name. */
13
- export declare const checkTenant: Endpoint<{
14
- name: string;
15
- }, CheckTenantResponse, ApiError>;
16
- export declare const listMyTenants: Endpoint<void, {
17
- tenants: MyTenant[];
18
- }, ApiError>;
3
+ import type { FullOrganization, Invitation, Member, MyTenantPermissions, RoleRow, TenantRole, TenantRow } from "../types.js";
19
4
  export declare const adminListTenants: Endpoint<void, {
20
5
  tenants: TenantRow[];
21
6
  }, ApiError>;
22
7
  export declare const createTenant: Endpoint<{
23
8
  name: string;
24
9
  slug?: string;
10
+ /**
11
+ * Attach the tenant to a project, gated by the project's settings
12
+ * (`allowTenantCreation`, `tenancyMode`).
13
+ */
14
+ projectId?: string;
25
15
  }, TenantRow, ApiError>;
16
+ /**
17
+ * Update tenant name/slug/logo and the per-tenant `metadata` settings
18
+ * blob. Omitted fields keep their current value; `metadata: null`
19
+ * clears the blob. Requires org owner/admin (or a superadmin).
20
+ */
21
+ export declare const updateTenant: Endpoint<{
22
+ organizationId: string;
23
+ data: {
24
+ name?: string;
25
+ slug?: string;
26
+ logo?: string | null;
27
+ metadata?: Record<string, unknown> | null;
28
+ };
29
+ }, {
30
+ id: string;
31
+ name: string;
32
+ slug: string;
33
+ logo: string | null;
34
+ metadata: Record<string, unknown> | null;
35
+ }, ApiError>;
36
+ /**
37
+ * Owner self-service tenant delete. Cascades members, invitations, and
38
+ * roles. Requires the caller to be the org owner (or a superadmin). For
39
+ * the superadmin system-wide path see {@link adminDeleteTenant}.
40
+ */
41
+ export declare const deleteTenant: Endpoint<{
42
+ organizationId: string;
43
+ }, {
44
+ ok: true;
45
+ id: string;
46
+ }, ApiError>;
26
47
  export declare const setActiveTenant: Endpoint<{
27
48
  organizationId: string | null;
28
49
  }, {
@@ -52,6 +73,17 @@ export declare const updateMemberRole: Endpoint<{
52
73
  }, {
53
74
  ok: true;
54
75
  }, ApiError>;
76
+ /**
77
+ * Direct member assignment — no invitation round-trip. The target
78
+ * user must already exist (lookup by userId or email); requires
79
+ * tenant owner/admin or a superadmin.
80
+ */
81
+ export declare const addMember: Endpoint<{
82
+ organizationId: string;
83
+ role: TenantRole;
84
+ userId?: string;
85
+ email?: string;
86
+ }, Member, ApiError>;
55
87
  export declare const removeMember: Endpoint<{
56
88
  memberId: string;
57
89
  organizationId: string;
@@ -63,11 +95,6 @@ export declare const adminDeleteTenant: Endpoint<{
63
95
  }, {
64
96
  ok: true;
65
97
  }, ApiError>;
66
- export declare const deleteTenant: Endpoint<{
67
- id: string;
68
- }, {
69
- ok: true;
70
- }, ApiError>;
71
98
  export declare const listTenantRoles: Endpoint<{
72
99
  orgId: string;
73
100
  }, {
@@ -77,6 +104,18 @@ export declare const createTenantRole: Endpoint<{
77
104
  orgId: string;
78
105
  name: string;
79
106
  description?: string;
107
+ permissions?: string[];
108
+ }, RoleRow, ApiError>;
109
+ /**
110
+ * Update a role's name/description and, when `permissions` is present,
111
+ * replace its permission set wholesale.
112
+ */
113
+ export declare const updateTenantRole: Endpoint<{
114
+ orgId: string;
115
+ roleId: string;
116
+ name?: string;
117
+ description?: string;
118
+ permissions?: string[];
80
119
  }, RoleRow, ApiError>;
81
120
  export declare const deleteTenantRole: Endpoint<{
82
121
  orgId: string;
@@ -84,101 +123,31 @@ export declare const deleteTenantRole: Endpoint<{
84
123
  }, {
85
124
  ok: true;
86
125
  }, ApiError>;
87
- export declare const addTenantMember: Endpoint<{
88
- orgId: string;
89
- email: string;
90
- role?: TenantRole;
91
- }, {
92
- id: string;
93
- userId: string;
94
- email: string;
95
- name: string;
96
- role: TenantRole;
97
- }, ApiError>;
98
- export declare const getTenantMember: Endpoint<{
99
- orgId: string;
100
- userId: string;
101
- }, MemberDetail, ApiError>;
102
- export declare const getTenantMemberRoles: Endpoint<{
126
+ /** Custom roles assigned to one member (with their permissions). */
127
+ export declare const listMemberRoles: Endpoint<{
103
128
  orgId: string;
104
- userId: string;
129
+ memberId: string;
105
130
  }, {
106
131
  roles: RoleRow[];
107
132
  }, ApiError>;
108
- export declare const getTenantMemberPermissions: Endpoint<{
133
+ export declare const assignMemberRole: Endpoint<{
109
134
  orgId: string;
110
- userId: string;
111
- }, {
112
- permissions: string[];
113
- }, ApiError>;
114
- export declare const getTenantMemberAuthMethods: Endpoint<{
115
- orgId: string;
116
- userId: string;
117
- }, {
118
- methods: {
119
- provider: string;
120
- createdAt: string;
121
- }[];
122
- }, ApiError>;
123
- export declare const assignTenantMemberRole: Endpoint<{
124
- orgId: string;
125
- userId: string;
135
+ memberId: string;
126
136
  roleId: string;
127
137
  }, {
128
138
  ok: true;
129
- }, ApiError>;
130
- export declare const unassignTenantMemberRole: Endpoint<{
131
- orgId: string;
132
- userId: string;
133
139
  roleId: string;
134
- }, {
135
- ok: true;
136
- }, ApiError>;
137
- export declare const updateMemberStatus: Endpoint<{
138
- orgId: string;
139
- userId: string;
140
- status: UserStatus;
141
- }, {
142
- ok: true;
143
- status: UserStatus;
144
- }, ApiError>;
145
- export declare const addMemberAuthMethod: Endpoint<{
146
- orgId: string;
147
- userId: string;
148
- provider: string;
149
- accountId?: string;
150
- password?: string;
151
- }, {
152
- ok: true;
153
- id: string;
140
+ memberId: string;
154
141
  }, ApiError>;
155
- export declare const removeMemberAuthMethod: Endpoint<{
142
+ export declare const removeMemberRole: Endpoint<{
156
143
  orgId: string;
157
- userId: string;
158
- methodId: string;
144
+ memberId: string;
145
+ roleId: string;
159
146
  }, {
160
147
  ok: true;
161
148
  }, ApiError>;
162
- export interface RefreshTokenInfo {
163
- id: string;
164
- ipAddress: string | null;
165
- userAgent: string | null;
166
- createdAt: string;
167
- expiresAt: string;
168
- revokedAt: string | null;
169
- lastUsedAt: string | null;
170
- }
171
- export declare const listMemberTokens: Endpoint<{
172
- orgId: string;
173
- userId: string;
174
- }, {
175
- tokens: RefreshTokenInfo[];
176
- }, ApiError>;
177
- export declare const revokeMemberToken: Endpoint<{
149
+ /** The caller's own effective role/permissions inside a tenant. */
150
+ export declare const myTenantPermissions: Endpoint<{
178
151
  orgId: string;
179
- userId: string;
180
- tokenId: string;
181
- }, {
182
- ok: true;
183
- }, ApiError>;
152
+ }, MyTenantPermissions, ApiError>;
184
153
  //# sourceMappingURL=tenants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tenants.d.ts","sourceRoot":"","sources":["../../src/endpoints/tenants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tenants.d.ts","sourceRoot":"","sources":["../../src/endpoints/tenants.ts"],"names":[],"mappings":"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"}