@syndew/oluso-admin-ui 0.0.0-stage → 1.30.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.
- package/LICENSE +76 -0
- package/README.md +29 -2
- package/fesm2022/syndew-oluso-admin-ui-entitlements-page.component-BeZtIUnk.mjs +149 -0
- package/fesm2022/syndew-oluso-admin-ui-entitlements-page.component-BeZtIUnk.mjs.map +1 -0
- package/fesm2022/syndew-oluso-admin-ui-license-status-page.component-JQmj_qhz.mjs +205 -0
- package/fesm2022/syndew-oluso-admin-ui-license-status-page.component-JQmj_qhz.mjs.map +1 -0
- package/fesm2022/syndew-oluso-admin-ui-platform-clients-page.component-ab3WDRsI.mjs +80 -0
- package/fesm2022/syndew-oluso-admin-ui-platform-clients-page.component-ab3WDRsI.mjs.map +1 -0
- package/fesm2022/syndew-oluso-admin-ui-search-results-page.component-EH82yuW3.mjs +543 -0
- package/fesm2022/syndew-oluso-admin-ui-search-results-page.component-EH82yuW3.mjs.map +1 -0
- package/fesm2022/syndew-oluso-admin-ui-syndew-oluso-admin-ui-BVs_bAxm.mjs +22987 -0
- package/fesm2022/syndew-oluso-admin-ui-syndew-oluso-admin-ui-BVs_bAxm.mjs.map +1 -0
- package/fesm2022/syndew-oluso-admin-ui-team-detail-page.component-CjrQ89qU.mjs +566 -0
- package/fesm2022/syndew-oluso-admin-ui-team-detail-page.component-CjrQ89qU.mjs.map +1 -0
- package/fesm2022/syndew-oluso-admin-ui-unauthorized-page.component-CWYFN6mp.mjs +73 -0
- package/fesm2022/syndew-oluso-admin-ui-unauthorized-page.component-CWYFN6mp.mjs.map +1 -0
- package/fesm2022/syndew-oluso-admin-ui-webhook-detail-page.component-Bh5dZwt-.mjs +728 -0
- package/fesm2022/syndew-oluso-admin-ui-webhook-detail-page.component-Bh5dZwt-.mjs.map +1 -0
- package/fesm2022/syndew-oluso-admin-ui.mjs +3 -0
- package/fesm2022/syndew-oluso-admin-ui.mjs.map +1 -0
- package/help/en/admin.api-scopes.detail.md +43 -0
- package/help/en/admin.api-scopes.md +37 -0
- package/help/en/admin.audit-logs.md +44 -0
- package/help/en/admin.clients.create.md +60 -0
- package/help/en/admin.clients.detail.md +61 -0
- package/help/en/admin.clients.md +48 -0
- package/help/en/admin.dashboard.md +28 -0
- package/help/en/admin.experience.journeys.builder.md +115 -0
- package/help/en/admin.experience.journeys.md +54 -0
- package/help/en/admin.experience.plugins.md +83 -0
- package/help/en/admin.experience.submissions.md +71 -0
- package/help/en/admin.feedback.detail.md +36 -0
- package/help/en/admin.feedback.md +42 -0
- package/help/en/admin.grants.md +42 -0
- package/help/en/admin.identity-providers.detail.md +46 -0
- package/help/en/admin.identity-providers.md +39 -0
- package/help/en/admin.identity-resources.md +47 -0
- package/help/en/admin.module-seats.md +45 -0
- package/help/en/admin.organizations.detail.md +51 -0
- package/help/en/admin.organizations.md +38 -0
- package/help/en/admin.platform.clients.create.md +34 -0
- package/help/en/admin.platform.clients.detail.md +28 -0
- package/help/en/admin.platform.clients.md +38 -0
- package/help/en/admin.resources.detail.md +44 -0
- package/help/en/admin.resources.md +43 -0
- package/help/en/admin.roles.md +33 -0
- package/help/en/admin.settings.license.md +39 -0
- package/help/en/admin.settings.md +70 -0
- package/help/en/admin.signing-keys.md +47 -0
- package/help/en/admin.tenants.detail.md +58 -0
- package/help/en/admin.tenants.md +46 -0
- package/help/en/admin.users.detail.md +41 -0
- package/help/en/admin.users.md +56 -0
- package/help/en/admin.webhooks.detail.md +41 -0
- package/help/en/admin.webhooks.md +37 -0
- package/package.json +51 -3
- 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.
|