@acorex-platform/module-security-management-client 0.0.58 → 0.0.60

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 (61) hide show
  1. package/fesm2022/{acorex-platform-module-security-management-client-acorex-platform-module-security-management-client-BSGZRsGz.mjs → acorex-platform-module-security-management-client-acorex-platform-module-security-management-client-B61j_cJF.mjs} +212 -13
  2. package/fesm2022/acorex-platform-module-security-management-client-acorex-platform-module-security-management-client-B61j_cJF.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-security-management-client-approve-join-request.command-BSvK59LV.mjs +322 -0
  4. package/fesm2022/acorex-platform-module-security-management-client-approve-join-request.command-BSvK59LV.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-device-sessions.mjs +21 -2
  6. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-device-sessions.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-users.mjs +173 -14
  8. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-users.mjs.map +1 -1
  9. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-B4oiF8FO.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-JP3zTrun.mjs} +10 -10
  10. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-B4oiF8FO.mjs.map → acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-JP3zTrun.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-device-sessions.entity-CU-5X-qu.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-device-sessions.entity-lwQtCJoy.mjs} +23 -4
  12. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-device-sessions.entity-lwQtCJoy.mjs.map +1 -0
  13. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-identity-provider.entity-Bld1buTd.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-identity-provider.entity-DZfizo-n.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-identity-provider.entity-Bld1buTd.mjs.map → acorex-platform-module-security-management-client-contracts-entity-catalog-identity-provider.entity-DZfizo-n.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-policy.entity-DZVzHzVM.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-policy.entity-Dkl_6Iio.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-policy.entity-DZVzHzVM.mjs.map → acorex-platform-module-security-management-client-contracts-entity-catalog-policy.entity-Dkl_6Iio.mjs.map} +1 -1
  17. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-profile.entity-BCy5fNc9.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-profile.entity-Ddbd-rAG.mjs} +2 -2
  18. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-profile.entity-BCy5fNc9.mjs.map → acorex-platform-module-security-management-client-contracts-entity-catalog-profile.entity-Ddbd-rAG.mjs.map} +1 -1
  19. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-role-permission.entity-DcvYjfZm.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-role-permission.entity-WCgik8MV.mjs} +2 -2
  20. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-role-permission.entity-DcvYjfZm.mjs.map → acorex-platform-module-security-management-client-contracts-entity-catalog-role-permission.entity-WCgik8MV.mjs.map} +1 -1
  21. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-roles.entity-lNKDIDry.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-roles.entity-CRZftClq.mjs} +2 -2
  22. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-roles.entity-lNKDIDry.mjs.map → acorex-platform-module-security-management-client-contracts-entity-catalog-roles.entity-CRZftClq.mjs.map} +1 -1
  23. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-user-role.entity-DKII6o5N.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-user-role.entity-9QpoRCOF.mjs} +2 -2
  24. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-user-role.entity-DKII6o5N.mjs.map → acorex-platform-module-security-management-client-contracts-entity-catalog-user-role.entity-9QpoRCOF.mjs.map} +1 -1
  25. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-user-two-factor.entity-ge21b3mE.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-user-two-factor.entity-C34VzcYk.mjs} +2 -2
  26. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-user-two-factor.entity-ge21b3mE.mjs.map → acorex-platform-module-security-management-client-contracts-entity-catalog-user-two-factor.entity-C34VzcYk.mjs.map} +1 -1
  27. package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-CJ7x5rjC.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-DuC5cfIb.mjs} +175 -16
  28. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-DuC5cfIb.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog.mjs +1 -1
  30. package/fesm2022/acorex-platform-module-security-management-client-contracts.mjs +342 -4
  31. package/fesm2022/acorex-platform-module-security-management-client-contracts.mjs.map +1 -1
  32. package/fesm2022/acorex-platform-module-security-management-client-create-user-in-tenant.command-BFnZRmh9.mjs +376 -0
  33. package/fesm2022/acorex-platform-module-security-management-client-create-user-in-tenant.command-BFnZRmh9.mjs.map +1 -0
  34. package/fesm2022/{acorex-platform-module-security-management-client-index-DKk9lEIl.mjs → acorex-platform-module-security-management-client-index-B6qo6qLT.mjs} +5 -156
  35. package/fesm2022/acorex-platform-module-security-management-client-index-B6qo6qLT.mjs.map +1 -0
  36. package/fesm2022/acorex-platform-module-security-management-client-invite-user.command-ClQ6WxxN.mjs +370 -0
  37. package/fesm2022/acorex-platform-module-security-management-client-invite-user.command-ClQ6WxxN.mjs.map +1 -0
  38. package/fesm2022/acorex-platform-module-security-management-client-reject-join-request.command-B3kiok6b.mjs +76 -0
  39. package/fesm2022/acorex-platform-module-security-management-client-reject-join-request.command-B3kiok6b.mjs.map +1 -0
  40. package/fesm2022/{acorex-platform-module-security-management-client-reset-two-factor.command-psTDKoNf.mjs → acorex-platform-module-security-management-client-reset-two-factor.command-C27mUZ1-.mjs} +7 -2
  41. package/fesm2022/acorex-platform-module-security-management-client-reset-two-factor.command-C27mUZ1-.mjs.map +1 -0
  42. package/fesm2022/{acorex-platform-module-security-management-client-send-password-reset-email.command-CoQgWdya.mjs → acorex-platform-module-security-management-client-send-password-reset-email.command-DFxm2T_x.mjs} +7 -2
  43. package/fesm2022/acorex-platform-module-security-management-client-send-password-reset-email.command-DFxm2T_x.mjs.map +1 -0
  44. package/fesm2022/acorex-platform-module-security-management-client-settings.provider-CwDiU-C8.mjs +54 -0
  45. package/fesm2022/acorex-platform-module-security-management-client-settings.provider-CwDiU-C8.mjs.map +1 -0
  46. package/fesm2022/acorex-platform-module-security-management-client-user-role-grant.service-6U17jzjq.mjs +231 -0
  47. package/fesm2022/acorex-platform-module-security-management-client-user-role-grant.service-6U17jzjq.mjs.map +1 -0
  48. package/fesm2022/acorex-platform-module-security-management-client.mjs +1 -1
  49. package/i18n/en-AU/security-management.json +91 -4
  50. package/i18n/en-US/security-management.json +91 -4
  51. package/i18n/fa-IR/security-management.json +91 -4
  52. package/package.json +1 -1
  53. package/types/acorex-platform-module-security-management-client-contracts.d.ts +288 -8
  54. package/fesm2022/acorex-platform-module-security-management-client-acorex-platform-module-security-management-client-BSGZRsGz.mjs.map +0 -1
  55. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-device-sessions.entity-CU-5X-qu.mjs.map +0 -1
  56. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-CJ7x5rjC.mjs.map +0 -1
  57. package/fesm2022/acorex-platform-module-security-management-client-index-DKk9lEIl.mjs.map +0 -1
  58. package/fesm2022/acorex-platform-module-security-management-client-invite-user.command-kFXjLdxy.mjs +0 -143
  59. package/fesm2022/acorex-platform-module-security-management-client-invite-user.command-kFXjLdxy.mjs.map +0 -1
  60. package/fesm2022/acorex-platform-module-security-management-client-reset-two-factor.command-psTDKoNf.mjs.map +0 -1
  61. package/fesm2022/acorex-platform-module-security-management-client-send-password-reset-email.command-CoQgWdya.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { AXPContextDefinition, AXPModuleManifest, AXPExpression } from '@acorex-platform/framework-shared/core';
2
- import { AXPEntityModel, AXPEntity } from '@acorex-platform/framework-shared/entity';
2
+ import { AXPEntityModel, AXPEntity, AXPEntityAction } from '@acorex-platform/framework-shared/entity';
3
3
 
4
4
  declare const AXM_SECURITY_CONTEXT_DEFINITIONS: AXPContextDefinition[];
5
5
 
@@ -236,13 +236,29 @@ interface AXMUserInvitationInfo {
236
236
  sentAt: string;
237
237
  invitedByUserId: string;
238
238
  applicationIds?: string[];
239
- /** Always `invite` for rows created/updated by Invite (not create-in-tenant). */
240
- source: 'invite';
239
+ /** Role ids selected at invite time (flat union; mirrored onto scoped UserRole). */
240
+ roleIds?: string[];
241
+ /** TM Tenant Users: roles grouped by application (optional audit / accept helper). */
242
+ applicationRoleAssignments?: Array<{
243
+ applicationId: string;
244
+ roleIds: string[];
245
+ }>;
246
+ /**
247
+ * `invite` = admin sent; `join-request` = user requested membership from waiting room;
248
+ * `tenant-request` = user requested creation of a new tenant (public form).
249
+ */
250
+ source: AXMMembershipInvitationSource;
241
251
  /** Set when the invitee accepts; distinguishes accepted invite from create-in-tenant. */
242
252
  acceptedAt?: string;
243
253
  }
254
+ type AXMMembershipInvitationSource = 'invite' | 'join-request' | 'tenant-request';
255
+ declare const AXM_MEMBERSHIP_INVITATION_SOURCE: {
256
+ readonly Invite: "invite";
257
+ readonly JoinRequest: "join-request";
258
+ readonly TenantRequest: "tenant-request";
259
+ };
244
260
  /** How a User identity row was created (directory provenance). */
245
- type AXMUserCreatedVia = 'invite' | 'create-in-tenant' | 'register' | 'seed' | 'idp';
261
+ type AXMUserCreatedVia = 'invite' | 'create-in-tenant' | 'register' | 'seed' | 'idp' | 'tenant-request';
246
262
  /**
247
263
  * In-app inbox definition for membership invites to users who already have a tenant.
248
264
  * Inbox row action opens the auth waiting room (Approve/Decline live there).
@@ -251,17 +267,97 @@ declare const AXM_MEMBERSHIP_INVITATION_NOTIFICATION_DEFINITION_KEY: "security-m
251
267
  /** Query `source` value when opening waiting room from a membership-invite notification. */
252
268
  declare const AXM_MEMBERSHIP_INVITE_WAITING_ROOM_SOURCE: "membership-invite";
253
269
 
270
+ /** Invite surface that decides which Role catalog rows are selectable. */
271
+ type AXMInviteRoleAssignmentMode = 'application' | 'tenant';
272
+ interface AXMInviteRoleScopeContext {
273
+ tenantId: string;
274
+ /** Required for application-mode filtering. */
275
+ applicationId?: string;
276
+ }
277
+ interface AXMInviteRoleScopeInfo {
278
+ tenantId?: string;
279
+ applicationId?: string;
280
+ }
281
+ declare function readInviteRoleScopeInfo(role: {
282
+ scopeInfo?: unknown;
283
+ } | null | undefined): AXMInviteRoleScopeInfo;
284
+ /**
285
+ * Whether a Role catalog row may appear in the invite roles multi-select.
286
+ *
287
+ * UI-only selection filter (does not change Role / RLS):
288
+ * - Application invite / per-app repeater row → current-tenant + that application overlays only
289
+ * - Tenant invite → current-tenant-wide rows only (no applicationId, no other-app overlays)
290
+ */
291
+ declare function isRoleAssignableForInvite(role: {
292
+ scopeInfo?: unknown;
293
+ stateInfo?: unknown;
294
+ } | null | undefined, mode: AXMInviteRoleAssignmentMode, context: AXMInviteRoleScopeContext): boolean;
295
+ /**
296
+ * TM Tenant Users invite repeater only: overlay for current tenant + the
297
+ * application chosen on that row. Independent of {@link isRoleAssignableForInvite}
298
+ * so Security → Users invite can change without affecting this picker.
299
+ */
300
+ declare function isRoleAssignableForTenantUserInviteRow(role: {
301
+ scopeInfo?: unknown;
302
+ stateInfo?: unknown;
303
+ } | null | undefined, context: AXMInviteRoleScopeContext): boolean;
304
+
305
+ /** One TM invite repeater row: application + multi-select roles for that app. */
306
+ interface AXMInviteApplicationRoleAssignment {
307
+ applicationId: string;
308
+ roleIds: string[];
309
+ }
310
+ /**
311
+ * Submit-time merge for the TM invite repeater.
312
+ * Duplicate applications (same app on two rows, different role picks) become one assignment
313
+ * with the union of role ids. Empty application rows are dropped. Do not unique the dropdown
314
+ * instead — the UI may repeat an application.
315
+ */
316
+ declare function normalizeInviteApplicationRoleAssignments(rows: unknown): AXMInviteApplicationRoleAssignment[];
317
+ declare function flattenInviteApplicationRoleAssignments(assignments: readonly AXMInviteApplicationRoleAssignment[]): {
318
+ applicationIds: string[];
319
+ roleIds: string[];
320
+ };
321
+
322
+ /** One TM create-in-tenant repeater row: application + multi-select roles for that app. */
323
+ interface AXMCreateApplicationRoleAssignment {
324
+ applicationId: string;
325
+ roleIds: string[];
326
+ }
327
+ /**
328
+ * Submit-time merge for the TM create-in-tenant repeater.
329
+ * Duplicate applications (same app on two rows, different role picks) become one assignment
330
+ * with the union of role ids. Empty application rows are dropped.
331
+ */
332
+ declare function normalizeCreateApplicationRoleAssignments(rows: unknown): AXMCreateApplicationRoleAssignment[];
333
+ declare function flattenCreateApplicationRoleAssignments(assignments: readonly AXMCreateApplicationRoleAssignment[]): {
334
+ applicationIds: string[];
335
+ roleIds: string[];
336
+ };
337
+
254
338
  declare const AXMSecurityManagementServerCommands: {
255
339
  readonly SendPasswordResetEmail: "SecurityManagement:Server:SendPasswordResetEmail";
256
340
  readonly CompletePasswordReset: "SecurityManagement:Server:CompletePasswordReset";
257
341
  readonly ChangeOwnPassword: "SecurityManagement:Server:ChangeOwnPassword";
342
+ readonly GetOwnPasswordStatus: "SecurityManagement:Server:GetOwnPasswordStatus";
258
343
  readonly InviteUser: "SecurityManagement:Server:InviteUser";
344
+ /** Tenant-subscribed applications for TM invite picker (ADR-TEN-001 D-05). */
345
+ readonly ListTenantEntitledApplications: "SecurityManagement:Server:ListTenantEntitledApplications";
346
+ /** Per-app Role overlays for TM invite repeater (bypasses app-catalog list isolation). */
347
+ readonly ListInviteAssignableRoles: "SecurityManagement:Server:ListInviteAssignableRoles";
259
348
  readonly ResendInvitation: "SecurityManagement:Server:ResendInvitation";
260
349
  readonly CancelInvitation: "SecurityManagement:Server:CancelInvitation";
261
350
  readonly AcceptInvitation: "SecurityManagement:Server:AcceptInvitation";
262
351
  readonly ListMyPendingInvitations: "SecurityManagement:Server:ListMyPendingInvitations";
263
352
  readonly DeclineInvitation: "SecurityManagement:Server:DeclineInvitation";
264
353
  readonly AcceptMyInvitation: "SecurityManagement:Server:AcceptMyInvitation";
354
+ readonly LookupTenantByUniqueName: "SecurityManagement:Server:LookupTenantByUniqueName";
355
+ readonly RequestTenantMembership: "SecurityManagement:Server:RequestTenantMembership";
356
+ readonly ListMyJoinRequests: "SecurityManagement:Server:ListMyJoinRequests";
357
+ readonly CancelMyJoinRequest: "SecurityManagement:Server:CancelMyJoinRequest";
358
+ readonly ApproveJoinRequest: "SecurityManagement:Server:ApproveJoinRequest";
359
+ readonly RejectJoinRequest: "SecurityManagement:Server:RejectJoinRequest";
360
+ readonly CreateUserInTenant: "SecurityManagement:Server:CreateUserInTenant";
265
361
  readonly StartTwoFactorEnrollment: "SecurityManagement:Server:StartTwoFactorEnrollment";
266
362
  readonly ConfirmTwoFactorEnrollment: "SecurityManagement:Server:ConfirmTwoFactorEnrollment";
267
363
  readonly DisableTwoFactor: "SecurityManagement:Server:DisableTwoFactor";
@@ -282,10 +378,13 @@ declare const AXM_CHANGE_OWN_PASSWORD_ERROR_CODES: {
282
378
  declare const AXM_USER_SEND_PASSWORD_RESET_COMMAND = "SecurityManagement:User:SendPasswordResetEmail";
283
379
  /** Client/UI action key (confirm dialog → server admin reset 2FA). */
284
380
  declare const AXM_USER_RESET_TWO_FACTOR_COMMAND = "SecurityManagement:User:ResetTwoFactor";
285
- /** Client/UI action keys for invite flows. */
381
+ /** Client/UI action keys for invite / create-in-tenant flows. */
286
382
  declare const AXM_USER_INVITE_COMMAND = "SecurityManagement:User:Invite";
287
383
  declare const AXM_USER_RESEND_INVITATION_COMMAND = "SecurityManagement:User:ResendInvitation";
288
384
  declare const AXM_USER_CANCEL_INVITATION_COMMAND = "SecurityManagement:User:CancelInvitation";
385
+ declare const AXM_USER_APPROVE_JOIN_REQUEST_COMMAND = "SecurityManagement:User:ApproveJoinRequest";
386
+ declare const AXM_USER_REJECT_JOIN_REQUEST_COMMAND = "SecurityManagement:User:RejectJoinRequest";
387
+ declare const AXM_USER_CREATE_IN_TENANT_COMMAND = "SecurityManagement:User:CreateInTenant";
289
388
  interface AXMSendPasswordResetEmailInput {
290
389
  /** Admin path: target user id. */
291
390
  userId?: string;
@@ -299,20 +398,66 @@ interface AXMCompletePasswordResetInput {
299
398
  newPassword: string;
300
399
  }
301
400
  interface AXMChangeOwnPasswordInput {
302
- currentPassword: string;
401
+ /** Required when the account already has a password; omit/empty when setting the first password. */
402
+ currentPassword?: string;
303
403
  newPassword: string;
304
404
  }
305
405
  interface AXMChangeOwnPasswordResult {
306
406
  passwordChangedAt: string;
307
407
  }
408
+ interface AXMGetOwnPasswordStatusResult {
409
+ /** True when the signed-in user has a non-empty stored password credential. */
410
+ hasPassword: boolean;
411
+ }
308
412
  interface AXMInviteUserInput {
309
413
  email: string;
310
414
  displayName?: string;
311
415
  applicationIds?: string[];
416
+ /**
417
+ * Role ids to assign on invite (scoped UserRole grant).
418
+ * Application invite → app-scoped grant; tenant invite without per-app rows → tenant-wide grant.
419
+ */
420
+ roleIds?: string[];
421
+ /**
422
+ * TM Tenant Users repeater: roles per selected application.
423
+ * When present, server upserts a UserRole grant per application (not one tenant-wide grant).
424
+ */
425
+ applicationRoleAssignments?: Array<{
426
+ applicationId: string;
427
+ roleIds: string[];
428
+ }>;
429
+ /**
430
+ * True when invite is from Tenant Users (tenant-membership) with multi-app UI.
431
+ * Server SoT with session edition feature — not Application.code === 'TM'.
432
+ */
433
+ tenantMembershipInvite?: boolean;
312
434
  /** Client sets true after warning that the identity already exists. */
313
435
  confirmExisting?: boolean;
314
436
  webOrigin?: string;
315
437
  }
438
+ /** One selectable application for TM invite (tenant subscription entitlement). */
439
+ interface AXMTenantEntitledApplicationItem {
440
+ id: string;
441
+ /** Raw MLS / string title — client resolves for display. */
442
+ title: unknown;
443
+ }
444
+ interface AXMListTenantEntitledApplicationsResult {
445
+ items: AXMTenantEntitledApplicationItem[];
446
+ }
447
+ /** One Role overlay selectable on a TM invite repeater row. */
448
+ interface AXMInviteAssignableRoleItem {
449
+ id: string;
450
+ title: unknown;
451
+ name?: string;
452
+ applicationId: string;
453
+ }
454
+ interface AXMListInviteAssignableRolesInput {
455
+ /** When set, only overlays for this application (current tenant). */
456
+ applicationId?: string;
457
+ }
458
+ interface AXMListInviteAssignableRolesResult {
459
+ items: AXMInviteAssignableRoleItem[];
460
+ }
316
461
  interface AXMInviteUserResult {
317
462
  userId: string;
318
463
  tenantUserId: string;
@@ -349,6 +494,8 @@ interface AXMPendingInvitationItem {
349
494
  tenantUserId: string;
350
495
  tenantId: string;
351
496
  tenantTitle?: string;
497
+ /** Tenant branding logo URL / storage id when available. */
498
+ tenantLogo?: string;
352
499
  invitedByUserId?: string;
353
500
  expiresAt?: string;
354
501
  sentAt?: string;
@@ -364,6 +511,98 @@ interface AXMAcceptMyInvitationInput {
364
511
  interface AXMDeclineInvitationInput {
365
512
  tenantUserId: string;
366
513
  }
514
+ /** Stable codes for waiting-room join-by-unique-name (client maps to i18n). */
515
+ declare const AXM_JOIN_REQUEST_ERROR_CODES: {
516
+ readonly NotSignedIn: "JOIN_REQUEST_NOT_SIGNED_IN";
517
+ readonly InvalidInput: "JOIN_REQUEST_INVALID_INPUT";
518
+ readonly TenantNotFound: "JOIN_REQUEST_TENANT_NOT_FOUND";
519
+ readonly AlreadyMember: "JOIN_REQUEST_ALREADY_MEMBER";
520
+ readonly InvitePending: "JOIN_REQUEST_INVITE_PENDING";
521
+ readonly RequestNotFound: "JOIN_REQUEST_NOT_FOUND";
522
+ readonly NotPending: "JOIN_REQUEST_NOT_PENDING";
523
+ };
524
+ interface AXMLookupTenantByUniqueNameInput {
525
+ /** Tenant unique `name` or display `title` (any locale). Case-insensitive exact match. */
526
+ uniqueName: string;
527
+ }
528
+ interface AXMLookupTenantByUniqueNameItem {
529
+ id: string;
530
+ /** Stored unique name with original casing. */
531
+ name: string;
532
+ }
533
+ interface AXMLookupTenantByUniqueNameResult {
534
+ /** Present only when the name/title matches exactly one active tenant. */
535
+ item?: AXMLookupTenantByUniqueNameItem | null;
536
+ }
537
+ interface AXMRequestTenantMembershipInput {
538
+ /** Tenant unique `name` or display `title` (any locale). Case-insensitive exact match. */
539
+ uniqueName: string;
540
+ }
541
+ interface AXMRequestTenantMembershipResult {
542
+ tenantUserId: string;
543
+ tenantId: string;
544
+ tenantName: string;
545
+ }
546
+ interface AXMJoinRequestItem {
547
+ tenantUserId: string;
548
+ tenantId: string;
549
+ tenantName?: string;
550
+ tenantTitle?: string;
551
+ /** Tenant branding logo URL / storage id when available. */
552
+ tenantLogo?: string;
553
+ sentAt?: string;
554
+ expiresAt?: string;
555
+ }
556
+ interface AXMListMyJoinRequestsResult {
557
+ items: AXMJoinRequestItem[];
558
+ }
559
+ interface AXMCancelMyJoinRequestInput {
560
+ tenantUserId: string;
561
+ }
562
+ interface AXMApproveJoinRequestInput {
563
+ tenantUserId?: string;
564
+ userId?: string;
565
+ /** Product / app-scoped approve: roles for the current session application. */
566
+ roleIds?: string[];
567
+ applicationIds?: string[];
568
+ /** TM Tenant Users: per-application role rows (same shape as invite). */
569
+ applicationRoleAssignments?: Array<{
570
+ applicationId: string;
571
+ roleIds: string[];
572
+ }>;
573
+ /**
574
+ * When true, allow multi-application assignment (TM Tenant Users + edition feature).
575
+ * Mirrors invite `tenantMembershipInvite`.
576
+ */
577
+ tenantMembershipApprove?: boolean;
578
+ }
579
+ interface AXMRejectJoinRequestInput {
580
+ tenantUserId?: string;
581
+ userId?: string;
582
+ }
583
+ interface AXMCreateUserInTenantInput {
584
+ email?: string;
585
+ username?: string;
586
+ displayName?: string;
587
+ password?: string;
588
+ applicationIds?: string[];
589
+ /** Product Users create: roles for the current session application. */
590
+ roleIds?: string[];
591
+ /** TM Tenant Users create: per-application role rows (merged client-side before submit). */
592
+ applicationRoleAssignments?: Array<{
593
+ applicationId: string;
594
+ roleIds: string[];
595
+ }>;
596
+ /**
597
+ * When true, allow multi-application assignment (TM Tenant Users + edition feature).
598
+ * Parallel to invite `tenantMembershipInvite`; Create path only.
599
+ */
600
+ tenantMembershipCreate?: boolean;
601
+ }
602
+ interface AXMCreateUserInTenantResult {
603
+ userId: string;
604
+ tenantUserId: string;
605
+ }
367
606
  /** Stable codes for two-factor self-service and login challenge (client maps to i18n). */
368
607
  declare const AXM_TWO_FACTOR_ERROR_CODES: {
369
608
  readonly NotSignedIn: "TWO_FACTOR_NOT_SIGNED_IN";
@@ -437,6 +676,39 @@ interface AXMVerifyTwoFactorLoginInput {
437
676
  rememberMe?: boolean;
438
677
  }
439
678
 
679
+ /** Platform settings owned by Security Management. */
680
+ declare const AXMSecurityManagementSettings: {
681
+ /**
682
+ * Which Users-list add actions are available.
683
+ * `create` and `invite` are primary. `both` shows them as secondary actions.
684
+ */
685
+ readonly UserProvisioningMode: "SecurityManagement:Setting:User.ProvisioningMode";
686
+ };
687
+ declare const AXMUserProvisioningMode: {
688
+ readonly Create: "create";
689
+ readonly Invite: "invite";
690
+ readonly Both: "both";
691
+ };
692
+ type AXMUserProvisioningMode = (typeof AXMUserProvisioningMode)[keyof typeof AXMUserProvisioningMode];
693
+ /** Used when the platform setting has not been saved yet. */
694
+ declare const AXM_USER_PROVISIONING_MODE_DEFAULT: "both";
695
+
696
+ /**
697
+
698
+ * Explicit DeviceSessions admin operation scope (ADR-TEN-001 D-07).
699
+
700
+ * Selected by the calling surface (menu/view), not by Application.code / TM ids.
701
+
702
+ */
703
+ type AXPDeviceSessionAdminScope = 'tenant' | 'application';
704
+ /** Query `params` key and HTTP header value for admin scope. */
705
+ declare const AXP_DEVICE_SESSION_ADMIN_SCOPE_PARAM = "deviceSessionAdminScope";
706
+ /** HTTP header (lowercase) carrying the same scope for getOne/update/delete. */
707
+ declare const AXP_DEVICE_SESSION_ADMIN_SCOPE_HEADER = "x-axp-device-session-admin-scope";
708
+ /** Entity list view name for TM → Tenant Sessions. */
709
+ declare const AXP_DEVICE_SESSION_TENANT_SESSIONS_VIEW = "tenant-sessions";
710
+ declare function normalizeDeviceSessionAdminScope(value: unknown): AXPDeviceSessionAdminScope;
711
+
440
712
  declare enum AXMSessionStatusTypes {
441
713
  revoked = "revoked",
442
714
  expired = "expired",
@@ -668,5 +940,13 @@ interface AXMSecurityManagementUsersEntityModel extends AXPEntityModel<string> {
668
940
  passwordReset?: AXMUserPasswordResetInfo | null;
669
941
  }
670
942
 
671
- export { AXMSecurityManagementServerCommands, AXMSessionStatusTypes, AXMUserAccessState, AXMUserEffectiveState, AXM_ACCEPT_INVITATION_ERROR_CODES, AXM_CHANGE_OWN_PASSWORD_ERROR_CODES, AXM_IDENTITY_PROVIDER_PROTOCOL, AXM_MEMBERSHIP_INVITATION_NOTIFICATION_DEFINITION_KEY, AXM_MEMBERSHIP_INVITE_WAITING_ROOM_SOURCE, AXM_SECURITY_CONTEXT_DEFINITIONS, AXM_TWO_FACTOR_ERROR_CODES, AXM_USER_ACCESS_STATE_DEFINITION_KEY, AXM_USER_CANCEL_INVITATION_COMMAND, AXM_USER_EFFECTIVE_STATE_DEFINITION_KEY, AXM_USER_INVITE_COMMAND, AXM_USER_RESEND_INVITATION_COMMAND, AXM_USER_RESET_TWO_FACTOR_COMMAND, AXM_USER_SEND_PASSWORD_RESET_COMMAND, AXPAdministrationPermissionKeys, AXPSecurityManagementFeatureKeys, AXPSecurityManagementMenuKeys, AXPSecurityManagementPermissionKeys, ROLE_PERMISSIONS_PAGE_COMPONENT_KEY, RootConfig, SecurityManagementManifest, USER_ROLES_PAGE_COMPONENT_KEY, resolveAXMUserEffectiveState, userTwoFactorFactory };
672
- export type { AXMAcceptInvitationInput, AXMAcceptInvitationPreviewResult, AXMAcceptInvitationReason, AXMAcceptMyInvitationInput, AXMAdminResetTwoFactorInput, AXMAdminResetTwoFactorResult, AXMCancelInvitationInput, AXMChangeOwnPasswordInput, AXMChangeOwnPasswordResult, AXMCompletePasswordResetInput, AXMConfirmTwoFactorEnrollmentInput, AXMConfirmTwoFactorEnrollmentResult, AXMDeclineInvitationInput, AXMDisableTwoFactorInput, AXMDisableTwoFactorResult, AXMGenerateTwoFactorRecoveryCodesInput, AXMGenerateTwoFactorRecoveryCodesResult, AXMGetTwoFactorStatusResult, AXMIdentityProviderEntityModel, AXMIdentityProviderProtocol, AXMInviteUserInput, AXMInviteUserResult, AXMListMyPendingInvitationsResult, AXMPendingInvitationItem, AXMPolicyEffect, AXMPolicyEffectRule, AXMPolicyScope, AXMResendInvitationInput, AXMSecurityManagementDeviceSessionsEntityModel, AXMSecurityManagementPolicyEntityModel, AXMSecurityManagementProfileEntityModel, AXMSecurityManagementRolePermissionEntityModel, AXMSecurityManagementRolesEntityModel, AXMSecurityManagementUserRoleEntityModel, AXMSecurityManagementUserTwoFactorEntityModel, AXMSecurityManagementUsersEntityModel, AXMSendPasswordResetEmailInput, AXMStartTwoFactorEnrollmentInput, AXMStartTwoFactorEnrollmentResult, AXMUserCreatedVia, AXMUserInvitationInfo, AXMUserPasswordResetInfo, AXMUserTwoFactorMethod, AXMUserTwoFactorRecoveryCode, AXMVerifyTwoFactorLoginInput };
943
+ /** Type-level Invite / Create actions, including the legacy Create dropdown. */
944
+ declare function isUserProvisioningListAction(action: AXPEntityAction): boolean;
945
+ /**
946
+ * Users list add actions driven by the platform provisioning setting.
947
+ * Create-only and invite-only stay primary. Both are secondary menu items.
948
+ */
949
+ declare function userProvisioningListActions(): AXPEntityAction[];
950
+
951
+ export { AXMSecurityManagementServerCommands, AXMSecurityManagementSettings, AXMSessionStatusTypes, AXMUserAccessState, AXMUserEffectiveState, AXMUserProvisioningMode, AXM_ACCEPT_INVITATION_ERROR_CODES, AXM_CHANGE_OWN_PASSWORD_ERROR_CODES, AXM_IDENTITY_PROVIDER_PROTOCOL, AXM_JOIN_REQUEST_ERROR_CODES, AXM_MEMBERSHIP_INVITATION_NOTIFICATION_DEFINITION_KEY, AXM_MEMBERSHIP_INVITATION_SOURCE, AXM_MEMBERSHIP_INVITE_WAITING_ROOM_SOURCE, AXM_SECURITY_CONTEXT_DEFINITIONS, AXM_TWO_FACTOR_ERROR_CODES, AXM_USER_ACCESS_STATE_DEFINITION_KEY, AXM_USER_APPROVE_JOIN_REQUEST_COMMAND, AXM_USER_CANCEL_INVITATION_COMMAND, AXM_USER_CREATE_IN_TENANT_COMMAND, AXM_USER_EFFECTIVE_STATE_DEFINITION_KEY, AXM_USER_INVITE_COMMAND, AXM_USER_PROVISIONING_MODE_DEFAULT, AXM_USER_REJECT_JOIN_REQUEST_COMMAND, AXM_USER_RESEND_INVITATION_COMMAND, AXM_USER_RESET_TWO_FACTOR_COMMAND, AXM_USER_SEND_PASSWORD_RESET_COMMAND, AXPAdministrationPermissionKeys, AXPSecurityManagementFeatureKeys, AXPSecurityManagementMenuKeys, AXPSecurityManagementPermissionKeys, AXP_DEVICE_SESSION_ADMIN_SCOPE_HEADER, AXP_DEVICE_SESSION_ADMIN_SCOPE_PARAM, AXP_DEVICE_SESSION_TENANT_SESSIONS_VIEW, ROLE_PERMISSIONS_PAGE_COMPONENT_KEY, RootConfig, SecurityManagementManifest, USER_ROLES_PAGE_COMPONENT_KEY, flattenCreateApplicationRoleAssignments, flattenInviteApplicationRoleAssignments, isRoleAssignableForInvite, isRoleAssignableForTenantUserInviteRow, isUserProvisioningListAction, normalizeCreateApplicationRoleAssignments, normalizeDeviceSessionAdminScope, normalizeInviteApplicationRoleAssignments, readInviteRoleScopeInfo, resolveAXMUserEffectiveState, userProvisioningListActions, userTwoFactorFactory };
952
+ export type { AXMAcceptInvitationInput, AXMAcceptInvitationPreviewResult, AXMAcceptInvitationReason, AXMAcceptMyInvitationInput, AXMAdminResetTwoFactorInput, AXMAdminResetTwoFactorResult, AXMApproveJoinRequestInput, AXMCancelInvitationInput, AXMCancelMyJoinRequestInput, AXMChangeOwnPasswordInput, AXMChangeOwnPasswordResult, AXMCompletePasswordResetInput, AXMConfirmTwoFactorEnrollmentInput, AXMConfirmTwoFactorEnrollmentResult, AXMCreateApplicationRoleAssignment, AXMCreateUserInTenantInput, AXMCreateUserInTenantResult, AXMDeclineInvitationInput, AXMDisableTwoFactorInput, AXMDisableTwoFactorResult, AXMGenerateTwoFactorRecoveryCodesInput, AXMGenerateTwoFactorRecoveryCodesResult, AXMGetOwnPasswordStatusResult, AXMGetTwoFactorStatusResult, AXMIdentityProviderEntityModel, AXMIdentityProviderProtocol, AXMInviteApplicationRoleAssignment, AXMInviteAssignableRoleItem, AXMInviteRoleAssignmentMode, AXMInviteRoleScopeContext, AXMInviteRoleScopeInfo, AXMInviteUserInput, AXMInviteUserResult, AXMJoinRequestItem, AXMListInviteAssignableRolesInput, AXMListInviteAssignableRolesResult, AXMListMyJoinRequestsResult, AXMListMyPendingInvitationsResult, AXMListTenantEntitledApplicationsResult, AXMLookupTenantByUniqueNameInput, AXMLookupTenantByUniqueNameItem, AXMLookupTenantByUniqueNameResult, AXMMembershipInvitationSource, AXMPendingInvitationItem, AXMPolicyEffect, AXMPolicyEffectRule, AXMPolicyScope, AXMRejectJoinRequestInput, AXMRequestTenantMembershipInput, AXMRequestTenantMembershipResult, AXMResendInvitationInput, AXMSecurityManagementDeviceSessionsEntityModel, AXMSecurityManagementPolicyEntityModel, AXMSecurityManagementProfileEntityModel, AXMSecurityManagementRolePermissionEntityModel, AXMSecurityManagementRolesEntityModel, AXMSecurityManagementUserRoleEntityModel, AXMSecurityManagementUserTwoFactorEntityModel, AXMSecurityManagementUsersEntityModel, AXMSendPasswordResetEmailInput, AXMStartTwoFactorEnrollmentInput, AXMStartTwoFactorEnrollmentResult, AXMTenantEntitledApplicationItem, AXMUserCreatedVia, AXMUserInvitationInfo, AXMUserPasswordResetInfo, AXMUserTwoFactorMethod, AXMUserTwoFactorRecoveryCode, AXMVerifyTwoFactorLoginInput, AXPDeviceSessionAdminScope };