@syndew/oluso-admin-ui 0.0.0-stage → 0.0.1

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 (56) hide show
  1. package/README.md +6 -2
  2. package/fesm2022/syndew-oluso-admin-ui-entitlements-page.component-BeZtIUnk.mjs +149 -0
  3. package/fesm2022/syndew-oluso-admin-ui-entitlements-page.component-BeZtIUnk.mjs.map +1 -0
  4. package/fesm2022/syndew-oluso-admin-ui-license-status-page.component-JQmj_qhz.mjs +205 -0
  5. package/fesm2022/syndew-oluso-admin-ui-license-status-page.component-JQmj_qhz.mjs.map +1 -0
  6. package/fesm2022/syndew-oluso-admin-ui-platform-clients-page.component-ab3WDRsI.mjs +80 -0
  7. package/fesm2022/syndew-oluso-admin-ui-platform-clients-page.component-ab3WDRsI.mjs.map +1 -0
  8. package/fesm2022/syndew-oluso-admin-ui-search-results-page.component-EH82yuW3.mjs +543 -0
  9. package/fesm2022/syndew-oluso-admin-ui-search-results-page.component-EH82yuW3.mjs.map +1 -0
  10. package/fesm2022/syndew-oluso-admin-ui-syndew-oluso-admin-ui-BVs_bAxm.mjs +22987 -0
  11. package/fesm2022/syndew-oluso-admin-ui-syndew-oluso-admin-ui-BVs_bAxm.mjs.map +1 -0
  12. package/fesm2022/syndew-oluso-admin-ui-team-detail-page.component-CjrQ89qU.mjs +566 -0
  13. package/fesm2022/syndew-oluso-admin-ui-team-detail-page.component-CjrQ89qU.mjs.map +1 -0
  14. package/fesm2022/syndew-oluso-admin-ui-unauthorized-page.component-CWYFN6mp.mjs +73 -0
  15. package/fesm2022/syndew-oluso-admin-ui-unauthorized-page.component-CWYFN6mp.mjs.map +1 -0
  16. package/fesm2022/syndew-oluso-admin-ui-webhook-detail-page.component-Bh5dZwt-.mjs +728 -0
  17. package/fesm2022/syndew-oluso-admin-ui-webhook-detail-page.component-Bh5dZwt-.mjs.map +1 -0
  18. package/fesm2022/syndew-oluso-admin-ui.mjs +3 -0
  19. package/fesm2022/syndew-oluso-admin-ui.mjs.map +1 -0
  20. package/help/en/admin.api-scopes.detail.md +43 -0
  21. package/help/en/admin.api-scopes.md +37 -0
  22. package/help/en/admin.audit-logs.md +44 -0
  23. package/help/en/admin.clients.create.md +60 -0
  24. package/help/en/admin.clients.detail.md +61 -0
  25. package/help/en/admin.clients.md +48 -0
  26. package/help/en/admin.dashboard.md +28 -0
  27. package/help/en/admin.experience.journeys.builder.md +115 -0
  28. package/help/en/admin.experience.journeys.md +54 -0
  29. package/help/en/admin.experience.plugins.md +83 -0
  30. package/help/en/admin.experience.submissions.md +71 -0
  31. package/help/en/admin.feedback.detail.md +36 -0
  32. package/help/en/admin.feedback.md +42 -0
  33. package/help/en/admin.grants.md +42 -0
  34. package/help/en/admin.identity-providers.detail.md +46 -0
  35. package/help/en/admin.identity-providers.md +39 -0
  36. package/help/en/admin.identity-resources.md +47 -0
  37. package/help/en/admin.module-seats.md +45 -0
  38. package/help/en/admin.organizations.detail.md +51 -0
  39. package/help/en/admin.organizations.md +38 -0
  40. package/help/en/admin.platform.clients.create.md +34 -0
  41. package/help/en/admin.platform.clients.detail.md +28 -0
  42. package/help/en/admin.platform.clients.md +38 -0
  43. package/help/en/admin.resources.detail.md +44 -0
  44. package/help/en/admin.resources.md +43 -0
  45. package/help/en/admin.roles.md +33 -0
  46. package/help/en/admin.settings.license.md +39 -0
  47. package/help/en/admin.settings.md +70 -0
  48. package/help/en/admin.signing-keys.md +47 -0
  49. package/help/en/admin.tenants.detail.md +58 -0
  50. package/help/en/admin.tenants.md +46 -0
  51. package/help/en/admin.users.detail.md +41 -0
  52. package/help/en/admin.users.md +56 -0
  53. package/help/en/admin.webhooks.detail.md +41 -0
  54. package/help/en/admin.webhooks.md +37 -0
  55. package/package.json +32 -3
  56. package/types/syndew-oluso-admin-ui.d.ts +5786 -0
@@ -0,0 +1,38 @@
1
+ ---
2
+ title: Organizations
3
+ relatedTopics:
4
+ - Tenants | admin.tenants
5
+ - Users | admin.users
6
+ - Platform Clients | admin.platform.clients
7
+ ---
8
+
9
+ Organizations are the top-level grouping in a multi-tenant deployment. Each organization can have its own tenants, members, and feature entitlements. This page is only visible to Super Admins.
10
+
11
+ ## Organization List
12
+
13
+ The table shows all organizations with:
14
+
15
+ - **Name** — organization name and description
16
+ - **Slug** — the URL-friendly identifier
17
+ - **Tenants** — how many tenants belong to this organization
18
+ - **Status** — Enabled or Disabled
19
+ - **Created** — when the organization was created
20
+
21
+ Use the search bar to filter by name. Click a row to open the organization's detail page.
22
+
23
+ ## Creating an Organization
24
+
25
+ Click **Add Organization** and provide:
26
+
27
+ - **Name** (required) — display name for the organization
28
+ - **Slug** (required) — unique URL identifier (lowercase, hyphens allowed)
29
+ - **Description** — optional summary
30
+ - **Website URL** — the organization's website
31
+ - **Max Members** — limit on how many users can be added as members
32
+ - **Max Tenants** — limit on how many tenants this organization can create
33
+
34
+ ## Tips
35
+
36
+ - Each organization operates independently — users, clients, and data are isolated between organizations
37
+ - Disabling an organization does not delete its tenants or data, but prevents access
38
+ - Use the settings icon on each row to jump directly to the organization's detail page
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: Create Platform Client
3
+ relatedTopics:
4
+ - Platform Clients | admin.platform.clients
5
+ - Create Client | admin.clients.create
6
+ - Clients | admin.clients
7
+ ---
8
+
9
+ Register a new platform-level OAuth 2.0 client. Platform clients operate across all tenants, making them suitable for admin dashboards, shared services, and internal tooling.
10
+
11
+ ## Form Sections
12
+
13
+ The creation form has the same sections as a regular client:
14
+
15
+ 1. **Basic** — Client ID (required, unique), Client Name, Description, Client URI, Logo URI, Enabled
16
+ 2. **Authentication** — Grant types (Authorization Code, Client Credentials, etc.), security settings (require secret, require PKCE)
17
+ 3. **URIs & CORS** — Redirect URIs, post-logout redirect URIs, CORS origins
18
+ 4. **Scopes** — Which scopes this client can request (openid, profile, email, custom scopes)
19
+ 5. **Access Control** — Required permission, allowed roles, allowed users, identity provider restrictions
20
+
21
+ ## Recommended Setup
22
+
23
+ For a typical admin portal or internal tool:
24
+
25
+ - **Grant Type:** Authorization Code
26
+ - **Require PKCE:** Yes
27
+ - **Scopes:** `openid profile email`
28
+ - **Redirect URI:** Your application's callback URL
29
+
30
+ ## Tips
31
+
32
+ - The Client ID cannot be changed after creation — choose a descriptive, stable identifier
33
+ - Platform clients appear on all tenants' login screens if no identity provider restrictions are set
34
+ - See the Client Details help for a full explanation of each configuration tab
@@ -0,0 +1,28 @@
1
+ ---
2
+ title: Platform Client Details
3
+ relatedTopics:
4
+ - Platform Clients | admin.platform.clients
5
+ - Client Details | admin.clients.detail
6
+ ---
7
+
8
+ View and edit a platform-level OAuth 2.0 client. The configuration tabs are identical to tenant-scoped clients — see the Client Details help for a full explanation of each section.
9
+
10
+ ## Tabs
11
+
12
+ - **Basic** — Client ID (read-only), name, description, URIs, enabled status
13
+ - **Authentication** — Grant types, PKCE settings, client secrets management
14
+ - **URIs & CORS** — Redirect URIs, post-logout URIs, allowed CORS origins
15
+ - **Scopes** — Allowed scopes for this client
16
+ - **Access Control** — Permission requirements, role and user restrictions, identity provider restrictions
17
+ - **Tokens** — Access token, identity token, and authorization code lifetimes
18
+ - **Logout** — Front-channel and back-channel logout URIs
19
+ - **Claims & Properties** — Custom client claims, properties, and claim prefix settings
20
+ - **Advanced** — SSO settings, UI flow, device flow, PAR, and additional security options (JAR, DPoP, JWT ID)
21
+
22
+ ## Client Secrets
23
+
24
+ Manage secrets in the **Authentication** tab. Secrets are hashed on creation and cannot be viewed again — copy the value immediately when generating a new one.
25
+
26
+ ## Key Difference from Tenant Clients
27
+
28
+ The only difference is scope: platform clients are available across all tenants. All configuration options, token behavior, and security settings work the same way.
@@ -0,0 +1,38 @@
1
+ ---
2
+ title: Platform Clients
3
+ relatedTopics:
4
+ - Clients | admin.clients
5
+ - Organizations | admin.organizations
6
+ ---
7
+
8
+ Platform clients are system-level OAuth 2.0 applications that operate across all tenants and organizations. Unlike regular tenant-scoped clients, platform clients are available globally. This page is only visible to Super Admins.
9
+
10
+ ## Client List
11
+
12
+ The table shows all platform clients with:
13
+
14
+ - **Client ID** — the unique OAuth identifier
15
+ - **Name** — display name of the client
16
+ - **Status** — Enabled or Disabled
17
+ - **Grant Types** — which OAuth 2.0 flows the client supports
18
+ - **Created** — when the client was registered
19
+
20
+ Click **Edit** to open the client detail page, or **Delete** to remove it.
21
+
22
+ ## Creating a Platform Client
23
+
24
+ Click **Add Platform Client** to open the client creation form. The form is the same as for regular clients but the client will be registered at the platform level rather than scoped to a single tenant.
25
+
26
+ ## Platform vs Tenant Clients
27
+
28
+ | | Platform Clients | Tenant Clients |
29
+ |---|---|---|
30
+ | **Scope** | Available across all tenants | Scoped to a single tenant |
31
+ | **Managed by** | Super Admins only | Tenant admins |
32
+ | **Use case** | Admin portals, shared services, internal tools | Customer-facing apps, third-party integrations |
33
+ | **Visibility** | This page | Clients page |
34
+
35
+ ## Tips
36
+
37
+ - Use platform clients for applications that need to authenticate users across multiple tenants (e.g., the admin portal itself)
38
+ - Platform clients follow the same configuration options as regular clients — grant types, scopes, URIs, etc.
@@ -0,0 +1,44 @@
1
+ ---
2
+ title: Resource Details
3
+ relatedTopics:
4
+ - Resources | admin.resources
5
+ - API Scopes | admin.api-scopes
6
+ - Clients | admin.clients
7
+ ---
8
+
9
+ View and edit the full configuration of a protected resource.
10
+
11
+ ## Basic Information
12
+
13
+ - **Resource URI** — the unique API identifier (read-only after creation)
14
+ - **Display Name** — label shown on consent screens
15
+ - **Description** — context for administrators
16
+ - **Status** — Enabled or Disabled
17
+
18
+ ## Settings
19
+
20
+ - **Show in Discovery Document** — include this resource in the `.well-known/openid-configuration` response so clients can discover it
21
+ - **Created / Updated** — timestamps
22
+
23
+ ## Allowed Scopes
24
+
25
+ The API scopes associated with this resource. When a client requests a token for this resource, only these scopes can be granted.
26
+
27
+ Click **Add Scope** to associate an existing API scope with this resource. The modal shows all unassigned scopes — select one or more and save.
28
+
29
+ Remove a scope by clicking the remove button next to it. This does not delete the scope itself, only the association.
30
+
31
+ ## User Claims
32
+
33
+ Claims included in access tokens when this resource is the audience. For example, a user management API might include `role` and `department` claims.
34
+
35
+ Click **Edit Claims** to:
36
+
37
+ - Add custom claim types by name
38
+ - Remove existing claims
39
+ - Pick from common suggestions: `sub`, `email`, `name`, `role`, `preferred_username`, etc.
40
+
41
+ ## Tips
42
+
43
+ - Scopes and claims work together — scopes control what the client is allowed to do, claims provide identity context
44
+ - A scope can be shared across multiple resources if the same permission applies to several APIs
@@ -0,0 +1,43 @@
1
+ ---
2
+ title: Resources
3
+ relatedTopics:
4
+ - API Scopes | admin.api-scopes
5
+ - Clients | admin.clients
6
+ ---
7
+
8
+ Resources represent protected APIs that clients can request access to. They follow the OAuth 2.0 Resource Indicators specification (RFC 8707), allowing clients to specify which API they intend to call when requesting tokens.
9
+
10
+ ## Resource List
11
+
12
+ The table shows all registered resources with:
13
+
14
+ - **Resource URI** — the unique identifier for the API (e.g., `https://api.example.com`)
15
+ - **Display Name** — a human-readable label
16
+ - **Status** — Enabled or Disabled
17
+ - **Scopes** — how many API scopes are associated with this resource
18
+ - **Created** — when the resource was registered
19
+
20
+ Click a row to view or edit the resource's details.
21
+
22
+ ## Creating a Resource
23
+
24
+ Click **Add Resource** and provide:
25
+
26
+ - **Resource URI** (required) — the API's base URI, used as the `resource` parameter in OAuth requests
27
+ - **Display Name** — shown on consent screens and in the admin UI
28
+ - **Description** — additional context for administrators
29
+ - **Enabled** — whether clients can request this resource
30
+ - **Show in Discovery** — include in the `.well-known/openid-configuration` response
31
+
32
+ ## How Resources Work
33
+
34
+ 1. Register the resource with its URI
35
+ 2. Associate API scopes with the resource
36
+ 3. Clients include `resource=https://api.example.com` in their token request
37
+ 4. The issued access token is audience-restricted to that resource
38
+
39
+ ## Tips
40
+
41
+ - Each resource should represent a distinct API or microservice
42
+ - The resource URI should match the audience (`aud`) claim your API validates
43
+ - Associate scopes to control fine-grained permissions within each resource
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: Roles & Permissions
3
+ relatedTopics:
4
+ - Users | admin.users
5
+ - Grants | admin.grants
6
+ ---
7
+
8
+ Roles define sets of permissions that control what users can see and do in the admin portal. Assign roles to users to grant them the appropriate level of access.
9
+
10
+ ## Built-in Roles
11
+
12
+ - **SuperAdmin** - full access to all platform features across all organizations
13
+ - **OrgAdmin** - full access within a single organization
14
+ - **Custom roles** - create your own with fine-grained permissions
15
+
16
+ ## Creating a Role
17
+
18
+ Click **Add Role** and:
19
+
20
+ 1. Give the role a descriptive **Name** (e.g., "Team Manager", "Report Viewer")
21
+ 2. Select the **Permissions** this role should grant
22
+ 3. Save the role
23
+
24
+ ## Permission Categories
25
+
26
+ Permissions are organized by module:
27
+
28
+ - **Core** - users, clients, resources, roles, settings
29
+ - Each enabled module contributes its own permission category for its features and records
30
+
31
+ ## Assigning Roles
32
+
33
+ Navigate to a user's detail page and add roles in the **Roles** section. Users can hold multiple roles; their effective permissions are the union of all assigned role permissions.
@@ -0,0 +1,39 @@
1
+ ---
2
+ title: License
3
+ relatedTopics:
4
+ - Settings | admin.settings
5
+ - Module Seats | admin.module-seats
6
+ - Subscription | admin.billing.subscriptions
7
+ ---
8
+
9
+ View and manage the license key that activates your tenant's enabled modules and feature flags.
10
+
11
+ ## License Status
12
+
13
+ The page displays the current license state:
14
+
15
+ - **Tier** — the plan associated with the licence (e.g. Starter, Pro, Enterprise)
16
+ - **Issued** — date the license was generated
17
+ - **Expires** — expiry date, with warning indicators as the date approaches
18
+ - **Modules** — list of modules unlocked by this license
19
+ - **Seat caps** — per-module seat limits where applicable
20
+
21
+ ## Updating the License
22
+
23
+ Paste a new license key into the **License Key** field and click **Apply**. The key is validated server-side before being stored. If valid:
24
+
25
+ - New modules become visible in navigation immediately
26
+ - Seat caps update to the new tier
27
+ - Expiry warnings are recalculated
28
+
29
+ If invalid, the existing license remains active and an error explains why (expired, signature mismatch, wrong tenant ID, malformed).
30
+
31
+ ## Removing a License
32
+
33
+ Clearing the field and saving reverts to the default trial/free tier. Any modules outside that tier are hidden until a valid licence is reapplied.
34
+
35
+ ## Tips
36
+
37
+ - Keep your license key in a password manager — it's a one-time issuance from the platform owner.
38
+ - Set a calendar reminder a month before expiry to request a renewal key from your account manager.
39
+ - If a module disappears from navigation, check this page first — an expired or downgraded license is the most common cause.
@@ -0,0 +1,70 @@
1
+ ---
2
+ title: Settings
3
+ relatedTopics:
4
+ - Signing Keys | admin.signing-keys
5
+ - Clients | admin.clients
6
+ ---
7
+
8
+ Configure platform-wide settings for authentication, tokens, security, and CORS. Changes are saved per-tenant.
9
+
10
+ ## General
11
+
12
+ - **Use Journey-Based Flow** — switch between the journey builder UI and standalone login/register pages
13
+ - **Allow Self Registration** — let users create their own accounts
14
+ - **Require Email Verification** — new users must verify their email before they can sign in
15
+ - **Require Terms Acceptance** — show a terms checkbox during registration
16
+ - **Terms of Service / Privacy Policy URLs** — links shown on the registration page
17
+ - **Allowed Email Domains** — restrict self-registration to specific domains (comma-separated)
18
+
19
+ ## Tokens
20
+
21
+ Default lifetimes applied to new clients. Individual clients can override these values.
22
+
23
+ | Setting | Default | Description |
24
+ |---|---|---|
25
+ | **Access Token Lifetime** | 3600s (1 hour) | How long access tokens are valid |
26
+ | **Identity Token Lifetime** | 300s (5 minutes) | How long ID tokens are valid |
27
+ | **Refresh Token Lifetime** | 2592000s (30 days) | How long refresh tokens can be used |
28
+
29
+ ## Security
30
+
31
+ - **Require HTTPS** — reject non-TLS requests
32
+ - **Emit Static Claims** — include standard claims in all tokens
33
+ - **Enable Backchannel Logout** — support server-to-server logout notifications
34
+
35
+ ## CORS
36
+
37
+ Control which origins can make cross-origin requests to the token and authorization endpoints.
38
+
39
+ - **Allow All Origins** — accept requests from any origin (not recommended for production)
40
+ - **Allowed Origins** — comma-separated list of permitted origins
41
+
42
+ ## Dynamic Client Registration
43
+
44
+ Enable RFC 7591 for programmatic client registration:
45
+
46
+ - **Enable DCR** — turn on the registration endpoint
47
+ - **Allow Open Registration** — anyone can register clients without an initial access token
48
+ - **Require PKCE** — dynamically registered clients must use PKCE
49
+ - **Allowed Scopes / Grant Types** — restrict what registered clients can request
50
+
51
+
52
+ ## WhatsApp
53
+
54
+ Connects the organisation's WhatsApp Business number (Meta Cloud API) for every module that sends notifications. Credentials are stored encrypted.
55
+
56
+ - **Setup** — phone number ID, access token, WhatsApp Business Account ID (for templates), app secret (for webhooks) and a default country used to complete local phone numbers. **Test connection** calls Meta with your credentials and records the verified name and number.
57
+ - **Webhook** — paste the callback URL and verify token into Meta's app configuration and subscribe to the *messages* field. Inbound messages open the 24-hour reply window, STOP and START replies update consent, and delivery receipts (sent, delivered, read, failed) update the notification log.
58
+ - **Templates** — Meta only accepts free-form text within 24 hours of a person's last message; anything the organisation starts must use an approved template. Sync templates here, then pick them in a workflow's Send WhatsApp step.
59
+ - **Contacts & consent** — every number messaged or received appears with its consent state and whether its reply window is open. Opted-out numbers are never messaged until they opt back in (by replying START or by an administrator).
60
+ - **Send a test** — sends one template or text message with the saved credentials.
61
+
62
+ ## Business verification
63
+
64
+ Shown when the business verification module is installed. Configures the providers the **Business Verification** journey step uses. Needs the *Manage business verification providers* permission.
65
+
66
+ - **Providers** — Dojah (App ID and secret key) and Youverify (API secret key). Choose Sandbox while testing (test data, not billed) or Live. Secrets are stored encrypted, never shown again, and cleared when you switch environment. **Test saved credentials** calls the provider's free endpoint (Dojah's wallet balance, Youverify's supported countries); it never buys a lookup.
67
+ - **Hosted verification (Dojah)** — for the step's *hosted* mode, also save the public key, the EasyOnboard widget ID of your KYB flow and the webhook secret, and give Dojah the **Webhook URL** shown on the provider (subscribe the *kyc_widget* service to it). The URL is on this organisation's own domain.
68
+ - **Country routing** — which enabled provider verifies businesses in each country. There is no fallback: a country without a provider can't be verified.
69
+ - **Reuse registry results** — within this many days, verifying the same registration number again reuses the earlier registry result instead of paying for a new lookup. 0 always looks up again.
70
+
@@ -0,0 +1,47 @@
1
+ ---
2
+ title: Signing Keys
3
+ relatedTopics:
4
+ - Settings | admin.settings
5
+ - Clients | admin.clients
6
+ ---
7
+
8
+ Manage the cryptographic keys used to sign tokens (JWTs). Proper key management ensures that tokens cannot be forged and that key rotation happens without downtime.
9
+
10
+ ## Key Table
11
+
12
+ Each key shows:
13
+
14
+ - **Name / Key ID** — identifier and optional client assignment
15
+ - **Type / Algorithm** — RSA, EC, or Symmetric with the specific algorithm and key size
16
+ - **Status** — Active (can sign), Retired (verify only), or Expired
17
+ - **Expires** — expiration date, with a warning for keys expiring soon
18
+ - **Usage** — how many signatures the key has produced and when it was last used
19
+
20
+ ## Key Actions
21
+
22
+ - **Generate Key** — create a new signing key with a chosen algorithm, key size, and lifetime
23
+ - **Rotate Keys** — retire the current active key and activate the next one
24
+ - **Revoke** — immediately retire an active key (requires a reason)
25
+ - **Delete** — permanently remove an inactive key
26
+
27
+ ## Automatic Rotation
28
+
29
+ Click **Rotation Settings** to configure automatic key rotation:
30
+
31
+ - **Key Lifetime** — how long a key stays active before rotation
32
+ - **Rotation Lead Time** — how far in advance to generate the next key
33
+ - **Grace Period** — how long retired keys continue to validate existing tokens
34
+ - **Maximum Keys** — limit on how many keys are retained
35
+
36
+ ## How Rotation Works
37
+
38
+ 1. A new key is generated before the active key expires (lead time)
39
+ 2. The old key is retired — it can still verify tokens but no longer signs new ones
40
+ 3. After the grace period, the retired key can be safely deleted
41
+ 4. Clients that cache the JWKS document will pick up new keys on their next refresh
42
+
43
+ ## Tips
44
+
45
+ - Always keep at least one active key — without it, no tokens can be issued
46
+ - RSA 2048+ or EC P-256 are recommended for production
47
+ - The JWKS endpoint (`.well-known/jwks`) automatically publishes all active and retired keys
@@ -0,0 +1,58 @@
1
+ ---
2
+ title: Tenant Settings
3
+ relatedTopics:
4
+ - Tenants | admin.tenants
5
+ - Settings | admin.settings
6
+ ---
7
+
8
+ Configure a tenant's identity policies, password requirements, and enabled features. Changes here apply only to this specific tenant.
9
+
10
+ ## General
11
+
12
+ ### Tenant Details
13
+
14
+ - **Name** and **Display Name** — how the tenant appears in the UI
15
+ - **Description** — optional context
16
+ - **Custom Domain** — vanity domain for this tenant's login pages
17
+ - **Enabled** — toggle the tenant on or off
18
+ - **Hide Embed Branding** — remove platform branding from hosted pages
19
+
20
+ ### Password Requirements
21
+
22
+ Control the complexity rules for user passwords:
23
+
24
+ - **Min / Max Length** — character count bounds
25
+ - **Required Unique Characters** — minimum distinct characters
26
+ - **Require Digit** — at least one number
27
+ - **Require Lowercase / Uppercase** — case requirements
28
+ - **Require Special Character** — at least one symbol
29
+
30
+ ### Password Lifecycle
31
+
32
+ - **Password History Count** — how many previous passwords to remember (prevents reuse)
33
+ - **Password Expiration Days** — force password changes after N days (0 = never)
34
+
35
+ ### Account Lockout
36
+
37
+ - **Max Failed Attempts** — lock the account after this many consecutive failures
38
+ - **Lockout Duration** — how long the lockout lasts (in minutes)
39
+ - **Block Common Passwords** — reject passwords found in common breach lists
40
+
41
+ ### Custom Validation
42
+
43
+ - **Custom Regex Pattern** — an additional regex that passwords must match
44
+ - **Custom Error Message** — shown to users when the regex fails
45
+
46
+ Use **Reset to Defaults** to revert all password and lockout settings, or **Save Settings** to apply changes.
47
+
48
+ ## Features
49
+
50
+ A grid of feature toggles controlling which modules are available in this tenant. Features must first be enabled at the organization level before they can be activated here.
51
+
52
+ Each card shows the feature name, description, and a toggle switch.
53
+
54
+ ## Tips
55
+
56
+ - Password policies apply to new passwords only — existing passwords are not retroactively validated
57
+ - Lockout protects against brute-force attacks without requiring MFA
58
+ - The custom regex is useful for industry-specific compliance (e.g., requiring passwords to contain no part of the username)
@@ -0,0 +1,46 @@
1
+ ---
2
+ title: Tenants
3
+ relatedTopics:
4
+ - Organizations | admin.organizations
5
+ - Settings | admin.settings
6
+ ---
7
+
8
+ Tenants provide data isolation within an organization. Each tenant has its own users, clients, settings, and feature set. This page is visible to Organization Admins.
9
+
10
+ ## Tenants Tab
11
+
12
+ The table lists all tenants in your organization:
13
+
14
+ - **Name**: the tenant's display name
15
+ - **Identifier**: the unique slug used in URLs and API requests
16
+ - **Environment**: Development, Staging, or Production
17
+ - **Status**: Enabled or Disabled
18
+ - **Created**: when the tenant was created
19
+
20
+ Use the search bar to filter by name. Click the settings icon to open a tenant's configuration page.
21
+
22
+ ### Creating a Tenant
23
+
24
+ Click **Add Tenant** and provide:
25
+
26
+ - **Name** and **Display Name**
27
+ - **Identifier** (required): unique slug, cannot be changed later
28
+ - **Environment**: Development, Staging, or Production
29
+ - **Description**
30
+ - **Custom Domain**: optional vanity domain for this tenant. It's added to the tenant's **Domains** for verification; add the DNS TXT record shown there and verify it before the domain is used.
31
+
32
+ The new tenant gets its Administrator and User roles. If setting it up fails, nothing is left behind and you see the reason. Assign someone the Administrator role from the organisation's members.
33
+
34
+ ## Settings Tab
35
+
36
+ Organization-level settings shared across all tenants:
37
+
38
+ - **Name** and **Slug** (read-only)
39
+ - **Description**: update the organization's description
40
+ - **Website URL**: the organization's website
41
+
42
+ ## Tips
43
+
44
+ - Use the Environment field to distinguish between dev, staging, and production tenants
45
+ - Each tenant is fully isolated: users in one tenant cannot access another unless explicitly granted access
46
+ - Disabling a tenant blocks all logins without deleting data
@@ -0,0 +1,41 @@
1
+ ---
2
+ title: User Details
3
+ relatedTopics:
4
+ - Users | admin.users
5
+ - Roles & Permissions | admin.roles
6
+ ---
7
+
8
+ View and manage all aspects of a user account. The detail page is organized into tabs.
9
+
10
+ ## Profile
11
+
12
+ Core identity information: username, email, first name, last name, display name, phone number, and timestamps for creation, last update, and last login. A checkmark next to the email or phone indicates it has been verified.
13
+
14
+ ## Security
15
+
16
+ Account security status and actions:
17
+
18
+ - **Account Status** — Active or Disabled
19
+ - **Lockout Status** — whether the account is currently locked, with an **Unlock** button
20
+ - **Failed Login Attempts** — count of consecutive failures
21
+ - **Reset Password** — set a new password for the user
22
+
23
+ ## Roles
24
+
25
+ Lists all roles assigned to the user as badges. Click **Manage Roles** to add or remove roles from a checkbox list. A user's effective permissions are the union of all assigned roles.
26
+
27
+ ## Sessions
28
+
29
+ Active authentication sessions for this user. Each row shows the client, IP address, user agent, and expiration time. You can revoke individual sessions or use **Revoke All** to terminate every active session.
30
+
31
+ ## MFA
32
+
33
+ Multi-factor authentication status. If MFA is enabled, you can **Reset MFA** to clear the user's authenticator registration, requiring them to re-enroll on next login.
34
+
35
+ ## Claims
36
+
37
+ Custom claims attached to the user's identity. These are included in tokens issued for this user. Use **Add Claim** to create new type/value pairs. Common claims include `department`, `employee_id`, or `cost_center`.
38
+
39
+ ## External Logins
40
+
41
+ Linked external authentication providers (Google, Microsoft, GitHub, etc.). You can remove a linked provider, which will prevent the user from signing in with that provider until they re-link it.
@@ -0,0 +1,56 @@
1
+ ---
2
+ title: Users
3
+ relatedTopics:
4
+ - Roles & Permissions | admin.roles
5
+ - Grants | admin.grants
6
+ - Settings | admin.settings
7
+ ---
8
+
9
+ Manage user accounts across your identity platform. From here you can create, edit, disable, and delete users, as well as manage their roles and credentials.
10
+
11
+ ## User List
12
+
13
+ The table shows all registered users with:
14
+
15
+ - **User**: avatar, display name, and username
16
+ - **Email**: address with a verification indicator
17
+ - **Status**: Active or Disabled, with a Locked badge if the account is locked out
18
+ - **Roles**: assigned roles (shows the first two, with a +N count for additional)
19
+ - **Last Login**: the most recent authentication timestamp
20
+
21
+ Click any row to open the user's detail page.
22
+
23
+ ## Creating a User
24
+
25
+ Click **Add User** and fill in:
26
+
27
+ - **Email** (required)
28
+ - **Username** (required)
29
+ - **Password**: either **Email an invite** (the default), which emails the user a link to set their own password, or **Set a password now**
30
+ - **First Name** and **Last Name**
31
+ - **Phone Number**
32
+ - **Active**: whether the account is immediately usable
33
+ - **Email Verified**: skip the email verification step
34
+
35
+ ### Invites
36
+
37
+ An invite email comes from your organisation and carries a link to set a password on your organisation's own sign-in page. The email says how long the link lasts: your tenant's account-link lifetime (24 hours unless you've changed it). The password must meet your tenant's password policy, and the page shows its rules.
38
+
39
+ If the email can't be sent (for example, email isn't set up), the user is still created and you're told why. Until the user sets a password, **Resend invite** in their row sends a fresh link.
40
+
41
+ ## Quick Actions
42
+
43
+ Each row has action buttons for common operations without opening the detail page:
44
+
45
+ - **Edit**: update the user's profile
46
+ - **Manage Roles**: assign or remove roles
47
+ - **Reset Password**: set a new password
48
+ - **Resend invite**: send the set-password invite again (only for users who haven't set a password yet)
49
+ - **Unlock**: clear a locked account (only appears if locked)
50
+ - **Delete**: permanently remove the user
51
+
52
+ ## Tips
53
+
54
+ - Use the search bar to find users by name or email
55
+ - Disabling a user prevents login without deleting their account or data
56
+ - Locked accounts are typically caused by too many failed login attempts. Use the Unlock action or configure lockout policy in Settings
@@ -0,0 +1,41 @@
1
+ ---
2
+ title: Webhook
3
+ relatedTopics:
4
+ - Webhooks | admin.webhooks
5
+ - Clients | admin.clients
6
+ - Signing Keys | admin.signing-keys
7
+ ---
8
+
9
+ Create or edit one webhook endpoint. Existing endpoints have two tabs: **Settings** and **Deliveries**.
10
+
11
+ ## Basics
12
+
13
+ The name, an optional description, the URL that receives the POST requests, and whether the endpoint is active. Turn an endpoint off to pause deliveries without losing its configuration.
14
+
15
+ ## Events
16
+
17
+ Events are grouped by module. Search by name or event type, and use the checkbox on a group to select or clear all of its events. Restricted events need the permission they name; without it you can't subscribe to them.
18
+
19
+ ## Authentication
20
+
21
+ How each delivery proves it comes from Oluṣọ:
22
+
23
+ - **HMAC signature (shared secret)** - each delivery is signed with a `whsec_` secret in the `X-Webhook-Signature` header. The secret is shown once, when the webhook is created or the secret is rotated.
24
+ - **Signed by this tenant's issuer (no shared secret)** - each delivery carries a short-lived token signed with this tenant's issuer key. The receiver checks it against the issuer's public keys (its JWKS); nothing secret is shared. The page shows the JWKS URL to give the receiver.
25
+ - **Static credential** - a fixed bearer token, username and password (Basic), or API key (`X-API-Key`), for receivers that only check a header. Deliveries are also HMAC signed. Credentials are stored encrypted and never shown again; leave the field blank to keep the current one.
26
+
27
+ ## Owning client
28
+
29
+ The client this endpoint belongs to. Events this client causes itself (for example comments it writes through the Service API) are not sent back to it when **Skip own client events** is on. With issuer-signed delivery, the token names this client as its subject.
30
+
31
+ ## Sensitive data
32
+
33
+ When the selected events include restricted ones, their confidential fields are withheld unless you authorise the endpoint. Authorising needs each restricted event's permission and records your name and the time.
34
+
35
+ ## Headers and version
36
+
37
+ Extra headers sent with every delivery. Headers the delivery sets itself (such as `Authorization` and the `X-Webhook-` headers) can't be overridden. Don't put secrets in custom headers.
38
+
39
+ ## Deliveries
40
+
41
+ Delivery counts, the recent delivery history, and a retry button for failed deliveries. Use **Send test event** to try the endpoint.