Admin API - Container Diagram
This diagram shows the high-level containers and how they interact within the Admin Provisioning system.
Admin Provisioning System - Container Level
Container Descriptions
Admin API
- Technology: Node.js with Express framework
- Purpose: Central API for administrative operations
- Responsibilities:
- Law firm CRUD operations
- Lawyer provisioning (auth users + profiles + licenses)
- RBAC management via Logto
- Resource access grant management
- Support access session management
- User search and capability aggregation
Auth Middleware
- Technology: JWT validation middleware
- Purpose: Secures admin endpoints
- Responsibilities:
- Validates bearer tokens from requests
- Verifies tokens with Logto
- Enforces admin-level permissions
- Extracts admin user context
Logto SDK Client
- Technology: Logto Management API SDK for Node.js
- Purpose: Integration layer with Logto platform
- Responsibilities:
- Organization management (create, list, sync)
- Member management (add, remove, invite)
- Org role assignment and updates
- List available org roles
- Sync organization data locally
Application Database
- Technology: PostgreSQL
- Schema Tables:
LAW_FIRMS: Firm metadata, Logto org ID mappingAUTH_USERS: User accounts synced with LogtoFIRM_USER_PROFILES: User profiles within firms, with functional roles arrayPROFESSIONAL_CREDENTIALS: Professional credentials (bar licenses, notary, etc.) - replaces LAWYER_LICENSESRESOURCE_ACCESS_GRANTS: Fine-grained access controlLOGTO_ORGS_MIRROR: Local cache of Logto organizationsLOGTO_ORG_MEMBERS_MIRROR: Local cache of org membershipsSUPPORT_ACCESS_SESSIONS: Active act-as sessions
Integration Patterns
Dual RBAC Model
- Logto-managed: Organizations, members, and org roles
- App-managed: Optional fine-grained resource access grants
Sync Strategy
- Admin API syncs Logto organizations and memberships to local mirrors
- Local mirrors provide faster queries and offline resilience
- Sync triggered on-demand via API endpoint
Support Access Flow
- Support staff calls
POST /admin/support-access/requests - Admin API creates session record with expiration
- Returns short-lived delegated JWT token
- Token allows support staff to act as target user
- Session can be revoked via
DELETE /admin/support-access/sessions/{id}
API Version History
v1.0.0
- Basic law firm and lawyer provisioning
- Logto organization management
- Resource access grants
v1.2.0
- Added
GET /admin/auth-usersfor user search - Added
GET /admin/law-firms/{lawFirmId}/users/{userId}/resource-policies - Added
GET /admin/law-firms/{lawFirmId}/users/{userId}/capabilities
v1.3.0 (Current)
- Generic User Provisioning (Role/Credential-Driven):
POST /admin/law-firms/{lawFirmId}/users- Generic user provisioningPOST /admin/law-firms/{lawFirmId}/users/{userId}/credentials- Add credentialGET /admin/law-firms/{lawFirmId}/users/{userId}/credentials- List credentialsDELETE /admin/law-firms/{lawFirmId}/users/{userId}/credentials/{credentialId}- Remove credentialGET /admin/law-firms/{lawFirmId}/profiles- List profiles (filterable by role/credential)
- Support Access (Act-As):
POST /admin/support-access/requestsGET /admin/support-access/sessionsGET /admin/support-access/sessions/{id}DELETE /admin/support-access/sessions/{id}