User Management

User authentication and identity management - users, sessions, 2FA, password policies, notifications, and OAuth integration

Schema NameDescriptionProperties
ApiKey
Represents an API key for programmatic access to the system. API keys allow applications, scripts, or services to authenticate without using username/password combinations. They're essential for machine-to-machine communication, continuous integration, automated scripts, and third-party integrations. Each API key has a unique identifier, can be restricted by IP address or domain, has configurable permissions, and includes rate limiting to prevent abuse. API keys can be revoked instantly if compromised, and their usage is tracked for security auditing. Unlike user sessions, API keys don't expire automatically but can have validity periods set. They're typically used in HTTP headers or query parameters for authentication.
19
ApiKeyAllowedOrigin
Manages Cross-Origin Resource Sharing (CORS) settings for API keys used in web browsers. When JavaScript running on a website tries to call your API, browsers enforce the same-origin policy for security - requests are blocked unless explicitly allowed. This entity defines which websites can use each API key from browser-based JavaScript, preventing unauthorized sites from making API calls even if they somehow obtain a valid key. Each origin entry includes the protocol, domain, and port (like https://app.example.com) that's permitted to use the API key. The entity also configures which HTTP methods are allowed, what headers can be sent, and how long browsers should cache these permissions. This is critical for public API keys that are embedded in client-side code, as they're visible to anyone viewing the page source. By restricting origins, you ensure that even exposed keys can only be used from your authorized domains. The system can allow all subdomains with a single rule, making it easier to manage multi-tenant applications. CORS preflight responses use this data to tell browsers whether to allow the actual API request.
14
ApiKeyIpRestriction
Controls network access for API keys by defining IP address whitelists and blacklists. This security layer ensures that even if an API key is compromised, it can only be used from pre-approved network locations. Organizations use this to restrict API access to their office networks, data centers, or specific cloud services. The entity supports both individual IP addresses and CIDR notation for entire network ranges, making it flexible enough for various network architectures. Restrictions can be set as 'allow' (whitelist) or 'deny' (blacklist), with the ability to combine both for complex access policies. For example, you might allow an entire corporate network range but deny specific compromised machines within it. This is particularly important for high-privilege API keys that can modify critical data. The system typically checks these restrictions on every API request, comparing the source IP against all active rules for that key. Cloud services often require this feature to ensure customer API keys can only be used from their documented IP ranges, preventing unauthorized access even if credentials leak.
12
ApiKeyPermission
Junction table that links API keys to specific permissions, implementing fine-grained access control for programmatic access. While API key scopes define broad categories of access (like 'users:read'), permissions represent specific, granular rights within the system (like 'can_view_user_emails' or 'can_export_data'). This many-to-many relationship allows flexible permission assignment where the same permission can be granted to multiple API keys, and each key can have multiple permissions. This entity tracks not just what permissions are granted, but also who granted them, when they become effective, and when they expire. Temporary permissions are useful for time-limited access, like giving a contractor's API key elevated permissions only during their project. The system evaluates these permissions on every API request, combining them with scopes to determine if an action is allowed. This dual-layer approach (scopes + permissions) provides both simplicity for common cases and flexibility for complex authorization requirements. It's particularly useful when different API keys need slightly different access to the same resources.
14
ApiKeyScope
Defines the specific permissions and access boundaries for API keys using OAuth-style scope patterns. Scopes are a way to limit what an API key can do in your system, following the principle of least privilege - each key should only have the minimum permissions needed for its task. This entity breaks down scopes into resource and action pairs, like 'users:read' or 'orders:write', making it clear what operations are allowed on which resources. This granular control is essential for security when providing API access to third-party developers, automated scripts, or microservices. Each scope can include additional constraints in JSON format, such as limiting access to specific record IDs, IP ranges, or time windows. The system can combine multiple scopes to create precise permission sets - for example, an e-commerce integration might have 'products:read', 'inventory:write', and 'orders:create' but not 'users:delete'. Scopes make it easy to audit what each API key can access and quickly revoke specific permissions without regenerating the entire key. This pattern is widely used in modern APIs like GitHub, Google, and Stripe to provide secure, controlled access.
12
LoginHistory
Comprehensive audit trail of all login attempts to the system. This entity records every single attempt to access an account, whether successful or failed, providing crucial security information for detecting unauthorized access attempts, brute force attacks, and unusual login patterns. It captures detailed information about each attempt including the IP address, device information, geographic location, and the reason for any failures. Security teams use this data to identify compromised accounts, detect attacks in progress, and help users understand who has accessed their account. It's also valuable for compliance requirements that mandate authentication auditing. Failed attempts can trigger security alerts or automatic account locks.
14
OAuthProvider
Manages third-party authentication providers that allow users to sign in using their existing accounts from services like Google, Facebook, GitHub, or corporate systems like Active Directory. OAuth providers eliminate the need for users to create and remember yet another password by leveraging their existing trusted accounts. This entity stores the configuration needed to connect to each provider, including client credentials, endpoints, and permission scopes. It handles the complex OAuth flow, storing tokens securely and managing token refresh when they expire. Each provider can be configured with specific permissions (scopes) that determine what information the application can access from the user's third-party account. This is essential for 'Sign in with Google' buttons, enterprise Single Sign-On (SSO), and social login features that reduce friction during user registration and improve security by delegating authentication to established providers.
19
PasswordHistory
Maintains a historical record of all passwords a user has previously used to prevent password reuse and enhance security. This entity is crucial for enforcing password policies that require users to create unique passwords rather than cycling through the same few passwords repeatedly. When a user attempts to change their password, the system checks this history to ensure the new password hasn't been used recently. The number of passwords to remember is configurable through the password policy - for example, preventing reuse of the last 12 passwords. Each entry stores only the hashed version of the historical password, never the actual password text, maintaining security even for old passwords. The entity tracks when each password was in use, who initiated the change, and why it was changed (expired, user-initiated, admin reset, or compromised). This historical data is valuable for security audits, helping identify patterns like users who frequently reset passwords (which might indicate account sharing) or detecting potential security incidents when multiple accounts change passwords simultaneously.
11
PasswordPolicy
Defines the rules and requirements for user passwords to ensure account security. This entity allows organizations to enforce their security standards by setting minimum password complexity requirements, expiration rules, and usage restrictions. Password policies can vary by user group - for example, administrators might need stronger passwords than regular users. The policy checks for common weaknesses like dictionary words, sequential characters, or passwords that are too similar to the username. It can enforce regular password changes, prevent reuse of recent passwords, and require specific character combinations (uppercase, lowercase, numbers, symbols). The entity also defines account lockout rules after failed attempts and can integrate with external password breach databases to prevent use of compromised passwords. This is crucial for meeting security compliance requirements like PCI DSS, HIPAA, or SOC 2, which often mandate specific password policies.
26
RateLimitConfig
Defines rate limiting rules to prevent API abuse and ensure fair resource usage across all consumers. Rate limiting is essential for protecting your API from being overwhelmed by too many requests, whether from legitimate heavy users, misbehaving scripts, or malicious attacks. This entity stores configurable limits that can be applied at different granularities - per user, per API key, or per IP address. Limits can be set for various time windows (requests per second, minute, hour, or day) allowing both burst tolerance and sustained usage control. For example, an API might allow 100 requests per minute with a burst of 10 requests per second. The entity supports different scopes, so you can have global limits, endpoint-specific limits, or even different limits for read versus write operations. Priority levels ensure that premium customers or critical services get higher limits. Rate limits are crucial for maintaining service stability, preventing any single consumer from monopolizing resources, and providing predictable performance for all users. They also help control costs in cloud environments where you pay for compute resources.
17
RateLimitState
Tracks the real-time state of rate limits for active API consumers, maintaining counters and timestamps for enforcement decisions. While RateLimitConfig defines the rules, this entity stores the actual runtime data - how many requests have been made, when the current window started, and when it will reset. This separation allows for efficient, high-performance rate limiting even at massive scale. The entity implements various algorithms like token bucket (where tokens regenerate over time) or sliding window (tracking exact request times). For the token bucket algorithm, it tracks available tokens and when they were last refilled. The system updates this state on every API request, using optimistic locking to handle concurrent requests safely. When limits are exceeded, the isThrottled flag is set, and the system can return appropriate HTTP 429 (Too Many Requests) responses with headers indicating when the client can retry. This real-time tracking is typically implemented in fast storage like Redis for production systems, but this entity provides the persistent record for debugging, analytics, and system recovery after restarts.
18
SecurityQuestion
Manages security questions and answers used as a backup authentication method for account recovery. Security questions provide an additional layer of identity verification when users forget their password or need to prove their identity from an unrecognized device. This entity stores both predefined questions (like 'What was your first pet's name?') and allows custom questions that users can create themselves. The answers are always stored in hashed format, never in plain text, to protect against data breaches. Security questions are particularly useful as a fallback when other recovery methods (email, phone) are unavailable. They work by asking personal questions that ideally only the account owner would know the answer to. The system typically requires users to answer multiple questions correctly to prevent guessing attacks. While not as secure as modern methods like SMS or authenticator apps, security questions remain popular because they don't require external devices or services, making them accessible to all users regardless of their technical capabilities.
19
TrustedDevice
Manages devices that users have marked as trusted to bypass two-factor authentication requirements. When a user successfully logs in with 2FA from a device, they can choose to 'Remember this device' or 'Trust this device for 30 days', which creates a trusted device record. This significantly improves user experience by not requiring 2FA on every login from frequently-used devices like their personal laptop or phone, while still maintaining security on unknown devices. The system creates a unique fingerprint for each device using various characteristics like browser type, operating system, screen resolution, and installed plugins - making it difficult for attackers to impersonate a trusted device. Trust can be time-limited (expires after 30 days) or revoked manually by the user or automatically if suspicious activity is detected. Users can view and manage all their trusted devices from their security settings, seeing details like when each device was last used and from what location. This feature balances security with usability, similar to how banks remember your computer but still require extra verification from new devices.
22
TwoFactorAuth
Manages two-factor authentication (2FA) methods for enhanced account security. This entity stores configuration for various 2FA methods like SMS codes, authenticator apps (Google Authenticator, Authy), email codes, or hardware keys. Each user can have multiple 2FA methods configured, with one marked as primary. When 2FA is enabled, users must provide both their password and a second factor to log in. This dramatically increases account security by requiring something the user knows (password) and something they have (phone, hardware key). The entity tracks verification status, failed attempts, and can temporarily lock 2FA after too many failures to prevent brute force attacks.
21
TwoFactorBackupCode
Stores emergency backup codes that users can use to access their account when their primary two-factor authentication method is unavailable. These are typically 8-10 digit codes generated when 2FA is first enabled, and users are instructed to print or save them somewhere safe. Each code can only be used once - after being used, it's permanently invalidated to prevent reuse. Backup codes are the safety net for 2FA, preventing users from being permanently locked out if they lose their phone, authenticator app breaks, or hardware key is damaged. They're particularly critical for traveling users who might not have SMS access, or during phone number changes. The system typically generates 10-20 codes at once, and users can regenerate a new set if they run low. Each code is stored as a hash for security, and the system tracks which codes have been used, when, and from what IP address. This helps detect if backup codes have been compromised. Some systems alert users when backup codes are running low or have been used, as usage often indicates the primary 2FA method has failed.
12
User
Represents a user account in the system. This is the central entity that uniquely identifies every person who has access to the application. It stores basic identity information like username and email, along with language and timezone preferences. Sensitive information like passwords are stored separately in UserAuthentication for security reasons. Each user can have multiple active sessions, multiple two-factor authentication methods, and can create API keys for programmatic access. The user entity tracks the lifecycle of an account from registration through activation, suspension, and eventual deletion. It's the main reference point for all user-related operations in the system.
20
UserActivityLog
Comprehensive audit trail that records every significant action performed by users in the system. This entity serves as the forensic backbone for security monitoring, compliance reporting, and user behavior analysis. It captures not just what happened, but the full context - who did it, when, from where, what changed, and whether it succeeded or failed. Every login attempt, password change, profile update, permission modification, and data access is logged with enough detail to reconstruct events during security incidents. The log includes both successful and failed actions, which is crucial for detecting attack patterns like credential stuffing or privilege escalation attempts. Risk scoring helps identify suspicious activities automatically, while the preserved old and new values enable rollback capabilities. This audit trail is essential for compliance with regulations like GDPR, HIPAA, and SOX that require detailed activity logs. It's also valuable for user support, helping administrators understand what a user did before encountering an issue. The logs are typically retained for extended periods (years for compliance) and can be analyzed to detect insider threats, unusual access patterns, or systemic security issues.
19
UserAuthentication
Stores and manages all authentication credentials and security settings for a user account. This entity is the vault for sensitive authentication data, keeping passwords securely hashed and tracking login security metrics. It handles password management including expiration policies, change requirements, and history to prevent reuse. The entity monitors failed login attempts to detect and prevent brute force attacks by automatically locking accounts after suspicious activity. It maintains the last successful login details for security auditing and tracks overall account activity. By separating authentication data from the main User entity, the system ensures that sensitive credentials can be protected with stricter access controls and encryption. This is critical for maintaining account security and meeting compliance requirements for credential storage.
18
UserEmail
Manages multiple email addresses for a single user account, supporting various use cases like work emails, personal emails, and recovery addresses. Modern users often have multiple email addresses they use for different purposes - this entity allows them to associate all these addresses with their account while maintaining one as primary. Each email can serve different functions: the primary email for login and important notifications, secondary emails for specific types of communications, recovery emails for account access issues, and notification-only emails for subscriptions or alerts. The entity tracks verification status for each email independently, as users must prove ownership before an email can be used for authentication or sensitive operations. This multi-email support is essential for professional users who might change jobs but want to maintain account access, or for users who want different notification types sent to different addresses (bills to personal email, newsletters to a dedicated inbox). The system ensures email uniqueness across all users - no two accounts can claim the same email address. When users change their primary email, the old one can be retained as secondary for account recovery purposes, providing a safety net against account lockouts.
20
UserManagementSequence
Provides atomic sequence generation for creating unique identifiers across the user management system, ensuring no duplicates even under high concurrency. This entity implements database sequences at the application level, critical for generating unique values like user IDs, session tokens, or invoice numbers in distributed systems where auto-increment fields aren't reliable. Each sequence maintains a current value and increment step, with atomic operations guaranteeing that no two requests get the same value even when thousands of requests arrive simultaneously. The entity supports different sequence strategies: monotonic increasing (like traditional auto-increment), cyclic (wrapping around after reaching max value), and cached sequences for performance (pre-allocating blocks of numbers). Caching is particularly important for high-throughput systems - instead of hitting the database for every ID, the application can reserve a block of 100 IDs and distribute them from memory. This entity also handles overflow scenarios, supports custom formatting (like adding prefixes or padding), and maintains audit information about sequence usage. It's essential for maintaining referential integrity and ensuring unique constraints are never violated, especially in systems that need to generate IDs across multiple application servers or during database migrations.
20
UserManagementTransaction
Manages complex, multi-step operations in user management as atomic transactions, ensuring data consistency and enabling rollback capabilities. Many user operations involve multiple related changes - for example, user registration might create a user record, set up authentication, send verification emails, create default preferences, and assign initial roles. This entity wraps all these steps into a single transaction that either completely succeeds or completely fails, preventing partial states that could leave the system inconsistent. Each transaction records its type (registration, password change, account deletion), current state (pending, in progress, committed, rolled back), and all operations performed. The checkpoint data allows the system to rollback changes if something fails midway through. This is particularly important for operations that interact with external systems - if sending a welcome email fails, the entire registration can be rolled back. The entity supports different isolation levels for concurrent operations and includes retry logic for transient failures. It provides an audit trail of complex operations and helps diagnose issues when multi-step processes fail. This transactional approach is essential for maintaining data integrity in distributed systems where operations might span multiple services or databases.
20
UserMetadata
Provides a flexible key-value storage system for user-specific data that doesn't fit into the standard user schema. This entity acts as an extension mechanism, allowing applications to store custom attributes, feature flags, integration data, or any additional information about users without modifying the core database schema. It's particularly useful for storing data from third-party integrations (like CRM IDs, external system references), A/B testing flags, user-specific feature toggles, custom profile fields that vary by deployment, or temporary data during migrations. Each metadata entry can be typed (string, number, boolean, JSON) to ensure proper handling, encrypted for sensitive data, and indexed for searchability. The category field helps organize related metadata, making it easier to retrieve all settings for a specific feature or integration. This pattern provides unlimited extensibility while maintaining database performance, as only frequently accessed metadata needs to be indexed. It's commonly used for multi-tenant applications where different customers need different user attributes, or for gradually rolling out features by storing beta access flags.
17
UserNotification
Manages notifications and alerts sent to users within the application. This entity handles all types of user communications including system alerts, security warnings, updates about their account, and activity notifications. Notifications can be delivered through multiple channels (in-app, email, SMS, push) and have different priority levels. They track whether a user has read or dismissed them, support action buttons for quick responses, and can expire after a certain time. This is essential for keeping users informed about important events, required actions, or changes that affect them. The system uses this to ensure users never miss critical information while avoiding notification fatigue.
19
UserPreference
Stores personalized settings and preferences for each user's experience in the application. This entity allows users to customize how the application looks, behaves, and communicates with them. Preferences can range from UI themes and layout choices to notification settings, privacy options, and feature toggles. Each preference is stored as a key-value pair, making the system extensible - new preferences can be added without changing the database schema. The entity supports different data types (boolean, string, number, JSON) and can organize preferences into categories like 'appearance', 'notifications', or 'privacy'. Default values ensure new users get a sensible starting configuration, while user-specific values override these defaults. This personalization improves user satisfaction by letting each person tailor the application to their needs and working style.
13
UserSession
Represents an active user session in the system. When a user logs in successfully, a session is created to track their activity and maintain their authenticated state. Sessions are the bridge between a user's login credentials and their ability to access protected resources. Each session has a unique token, tracks the device and location information, and has an expiration time for security. Multiple sessions can exist for the same user (like being logged in on phone and laptop simultaneously). Sessions are essential for features like 'remember me', activity tracking, and the ability to remotely log out devices. When a user logs out or their session expires, it gets marked as inactive.
16

Access Control

Complete access control system with RBAC, ABAC, permissions, policies, audit, and fine-grained security - roles, permissions, policies, delegation, and data-level security

Schema NameDescriptionProperties
ACLEntry
Defines access control list entries that specify precise permissions for principals on specific resources, implementing discretionary access control (DAC) at the most granular level. ACL entries are the building blocks of resource-centric security, where each resource (file, folder, database, API endpoint) maintains a list of who can do what with it. Unlike role-based permissions that apply broadly, ACL entries provide fine-grained control for specific resource instances. Each entry defines a principal (user, group, or service), the resource they can access, and exactly what operations are allowed or denied. This is essential for implementing ownership models where resource creators control access, handling exceptions to broader policies, and managing shared resources with complex permission requirements. ACL entries support inheritance from parent resources (folders passing permissions to files), explicit deny rules that override allows, and conditional access based on resource state or context. They can specify different permissions for different aspects of a resource - for example, allowing read of metadata but not content, or permitting updates to certain fields only. The system evaluates ACL entries in a specific order, considering inheritance, explicit entries, and deny-before-allow rules. This granular control is crucial for compliance scenarios requiring proof of exactly who had access to specific data at specific times.
30
AccessAuditLog
Comprehensive audit trail of all access control decisions and security events in the system, providing forensic evidence for security investigations, compliance reporting, and behavioral analysis. This entity records every authorization attempt, whether successful or failed, capturing the complete context: who tried to access what, when, from where, why it was allowed or denied, and which policies were evaluated. Unlike general activity logs, this focuses specifically on access control events like permission checks, role changes, policy violations, and authentication events. Each entry includes the decision path showing which rules, roles, and permissions were evaluated, making it possible to understand exactly why access was granted or denied. This is crucial for debugging permission problems ('Why can't user X access resource Y?'), investigating breaches ('Who accessed sensitive data last month?'), and proving compliance ('Show all access to patient records'). The log captures risk indicators like unusual access patterns, privilege escalations, or access from new locations. It supports real-time alerting for high-risk events and provides data for machine learning models that detect anomalous behavior. Retention policies ensure logs are kept as long as required by regulations while managing storage costs. The immutable nature of these logs makes them admissible as evidence in legal proceedings.
30
AccessContext
Captures the complete environmental and situational context in which an access request occurs, providing crucial information for context-aware authorization decisions. This entity represents the 'circumstances' of access - not just who wants what, but when, where, how, and under what conditions. It includes technical context (IP address, device, browser), temporal context (time of day, day of week, timezone), geographic context (location, jurisdiction), behavioral context (access patterns, risk indicators), and business context (project phase, emergency status). Modern zero-trust architectures use this rich context to make dynamic authorization decisions - the same user might be granted access from the office during business hours but denied from an unknown location at midnight. The context enables adaptive security where access requirements change based on threat level, implements conditional access policies ('require MFA from untrusted networks'), and supports compliance requirements ('EU data only accessible from EU locations'). It captures session information, authentication strength, device trust level, and network security posture. The entity also tracks anomalies and risk signals that might indicate compromised credentials or insider threats. This contextual awareness transforms static permission checks into dynamic, risk-based access decisions that adapt to changing security landscapes and business needs.
31
AccessControlSequence
Orchestrates complex, multi-step authorization workflows where access decisions require sequential evaluation of multiple policies, conditions, and approvals in a specific order. This entity represents authorization chains that cannot be evaluated in parallel - each step depends on the outcome of previous steps, creating sophisticated decision trees. For example, accessing classified documents might require: first checking security clearance, then verifying need-to-know, then checking time-window restrictions, then obtaining supervisor approval, and finally logging the access attempt. Each step in the sequence can have different evaluation criteria, different fallback behaviors, and different side effects. The sequence supports branching logic where different paths are taken based on intermediate results, loops for retry scenarios, and rollback capabilities if later steps fail. It enables progressive authorization where initial steps grant partial access and subsequent steps unlock additional capabilities. The entity tracks sequence execution state, allowing long-running authorization processes that span multiple user sessions or require human intervention. Sequences can be templated for common scenarios (onboarding workflow, privileged access elevation), dynamically generated based on risk assessment, or manually configured for special cases. This sequential processing is essential for implementing complex compliance requirements, multi-party approval processes, and adaptive security protocols that adjust based on accumulating evidence of legitimacy or risk.
30
AccessControlTransaction
Ensures atomic, consistent access control changes by grouping related permission modifications into transactional units that either completely succeed or completely fail. This entity addresses the critical challenge of maintaining authorization integrity when multiple interdependent changes must occur together - like rotating roles during organizational restructuring, migrating permissions between systems, or implementing new compliance policies. Each transaction encapsulates a series of access control operations (grant, revoke, modify) with ACID properties: Atomicity ensures all changes apply or none do, Consistency maintains valid permission states throughout, Isolation prevents concurrent transactions from interfering, and Durability ensures completed changes persist. Transactions support complex scenarios like swapping user roles (must revoke old before granting new), cascading permission updates (parent change affects all children), and compensating transactions (automatic rollback operations). The entity tracks transaction state through phases: planning (validating changes), execution (applying changes), verification (confirming success), and commitment (making permanent). It handles distributed transactions across multiple systems, two-phase commit protocols for coordination, and saga patterns for long-running operations. Transaction logs provide audit trails for compliance, enable point-in-time recovery for access control state, and support what-if analysis for proposed changes. This transactional approach is essential for maintaining security during bulk permission updates, preventing privilege escalation during transitions, and ensuring zero-downtime access control migrations.
31
AccessPolicy
Defines high-level security policies that govern access control decisions across the entire system, implementing policy-based access control (PBAC) on top of role and permission-based systems. Access policies are rules that apply globally or to specific contexts, enforcing organizational security requirements like 'all financial data requires MFA' or 'contractors cannot access customer PII'. These policies act as an additional layer above RBAC, allowing dynamic, attribute-based decisions. Policies can be preventive (blocking access even if permissions exist) or permissive (granting access in specific situations). They evaluate multiple factors including user attributes (department, clearance level), resource attributes (classification, owner), environmental context (time, location, threat level), and action context (sensitivity, risk). Policies support complex boolean logic, combining multiple conditions with AND/OR operators. They can enforce compliance requirements ('GDPR data can only be accessed from EU locations'), implement zero-trust principles ('verify device trust before allowing access'), or handle break-glass scenarios ('allow emergency access with heavy auditing'). The entity includes policy versioning for change tracking, testing capabilities to validate policies before activation, and conflict resolution when multiple policies apply. This is essential for large enterprises with complex compliance requirements and dynamic security needs.
27
AccessRequest
Manages formal requests for access to resources, roles, or permissions that require approval, implementing a complete workflow from request submission through review to final grant or denial. This entity handles scenarios where users need access beyond their current permissions - requesting a new role, access to sensitive data, temporary elevated privileges, or entry to restricted systems. Each request captures comprehensive justification including business need, duration required, specific resources needed, and risk acknowledgment. The approval workflow can be simple (single manager) or complex (multiple stakeholders, security review, legal sign-off), with configurable routing based on request type, risk level, and resource sensitivity. The entity tracks the complete lifecycle: draft, submitted, under review, approved/denied, provisioned, and expired. It supports emergency requests that bypass normal workflows with heavy auditing, time-boxed access that automatically expires, and conditional approvals with specific constraints. Requests can include attestations where requesters confirm understanding of policies, accept liability, or complete required training. The system handles delegation where managers can request on behalf of their teams, bulk requests for multiple users, and recurring requests for periodic access needs. This formal process is essential for compliance with regulations requiring documented access approval, maintaining zero-standing privileges, and providing evidence of proper authorization during audits.
38
ApprovalDecision
Records decisions made on access requests, permission changes, and policy exceptions, capturing the complete decision-making process including approver rationale, conditions, and stipulations. This entity goes beyond simple approve/deny to document the nuanced decisions made in complex authorization scenarios - conditional approvals with restrictions, time-limited grants with review requirements, or partial approvals for subset of requested permissions. Each decision captures the approver's identity, their authority level, the basis for their decision (policy compliance, business need, risk assessment), and any concerns or observations. Decisions can include stipulations like 'approved for 30 days pending security training' or 'denied but can resubmit with manager endorsement'. The entity supports multi-stage approval workflows where each approver adds their decision to build consensus, escalation paths where initial denials can be overridden, and delegation where approvers pass decisions to others. It maintains decision history for audit trails, precedent analysis for consistency, and machine learning to improve future decision-making. Decisions can trigger automated actions like permission provisioning, notification sending, or follow-up scheduling. This comprehensive decision recording is essential for regulatory compliance, demonstrating due diligence in access control, and continuous improvement of authorization processes through decision analytics.
31
DataFilter
Defines row-level and attribute-based filtering rules that restrict which data records a user can access within their permitted resources, implementing fine-grained data access control beyond simple resource permissions. While permissions determine if a user can access a database or API, data filters determine which specific records they see - a manager might have 'read employees' permission but filters ensure they only see their direct reports. This entity enables multi-tenant isolation (customers see only their data), hierarchical visibility (see only your department's data), temporal filtering (hide records older than X), and conditional exposure (show salary only for employees below your level). Filters use expressions that evaluate against record attributes, user properties, and contextual factors. They support complex boolean logic combining multiple conditions with AND/OR/NOT operators. Filters can be positive (defining what to include) or negative (defining what to exclude), with precedence rules for conflicts. They enable dynamic data masking where sensitive fields are hidden or redacted based on viewer privileges. The entity handles filter composition when users have multiple roles, each contributing different filters. This is essential for regulatory compliance (GDPR's data minimization), implementing Chinese walls in financial services, and maintaining data confidentiality in shared systems while allowing necessary access for business operations.
28
DelegatedPermission
Enables temporary transfer of permissions from one user to another, supporting scenarios like vacation coverage, emergency access, and task delegation. This entity manages the complex process of permission delegation where a user (delegator) temporarily grants some or all of their permissions to another user (delegate). This is essential for business continuity - when a manager goes on vacation, they can delegate approval permissions to their deputy. The delegation can be partial (only specific permissions) or complete (all permissions), time-bounded (active only during specific dates), and conditional (only for certain resources or contexts). The system tracks the delegation chain to prevent recursive delegations and maintains audit trails showing who used delegated permissions and when. Delegations can require approval from security teams or higher management, especially for sensitive permissions. The entity handles automatic activation and deactivation based on schedules, sends notifications when delegations are used, and can instantly revoke delegations if misuse is detected. This is critical for maintaining operational flexibility while preserving security and accountability, as all actions taken with delegated permissions are traceable back to both the delegate and the original permission holder.
28
FieldRestriction
Controls access to specific fields within data records, implementing column-level security that determines which attributes users can see, modify, or interact with regardless of their access to the parent record. This granular control is essential when users need access to records but shouldn't see all fields - for example, HR staff might access employee records but not see salary information, or customer service reps might view orders but not credit card details. Field restrictions support various protection levels: complete hiding (field doesn't exist), masking (showing '****' instead of values), redaction (showing partial data like last 4 digits), transformation (showing ranges instead of exact values), and read-only (visible but not editable). The entity handles field dependencies where restricting one field affects others, inheritance where child objects inherit parent field restrictions, and conditional restrictions based on field values or user context. It enables compliance with privacy regulations requiring data minimization, implements need-to-know principles for sensitive attributes, and supports dynamic schemas where different users see different views of the same data. Field restrictions can be temporary (hiding data during blackout periods), progressive (revealing more fields as trust increases), or contextual (showing fields only in certain workflows). This field-level security is crucial for multi-tenant SaaS applications, healthcare systems protecting patient data, and financial systems managing sensitive financial information.
29
Permission
Represents a specific authorization to perform an action on a resource within the system. Permissions are the atomic units of access control - the smallest, indivisible rights that can be granted or denied. Each permission typically follows the pattern of 'resource:action' like 'users:delete' or 'reports:view', making it clear what operation is allowed on which entity. Permissions can be simple (binary yes/no) or complex with conditions and constraints. For example, 'documents:edit' might include conditions like 'only documents you created' or 'only during business hours'. The system evaluates permissions at runtime to make access decisions, checking if the current user has the required permission through their roles, groups, or direct assignment. Permissions are versioned to track changes over time, which is crucial for audit trails and compliance. They can be tagged for organization (like 'dangerous', 'pii_access', 'financial') helping administrators understand the risk level. Modern systems might have hundreds or thousands of granular permissions, providing precise control over every feature and data element. This granularity is essential for implementing the principle of least privilege and meeting regulatory requirements like GDPR or HIPAA.
24
PermissionAttribute
Defines metadata and properties associated with permissions that influence their behavior, evaluation, and management within the access control system. Permission attributes are key-value pairs that enrich permissions with additional context beyond simple grant/deny - they specify quality of service parameters, risk indicators, compliance tags, and operational constraints. These attributes enable fine-tuning of permission behavior: setting expiration dates, defining usage quotas, specifying required authentication strength, or marking permissions as high-risk. Attributes support permission classification for governance (marking permissions as 'financial', 'personal_data', 'system_critical'), automated policy application (all 'financial' permissions require MFA), and compliance mapping (permissions tagged 'gdpr_relevant' need special handling). They enable permission lifecycle management with attributes like 'deprecated', 'experimental', or 'migration_required'. The entity handles inherited attributes from parent permissions, computed attributes derived from usage patterns, and dynamic attributes that change based on context. Attributes influence runtime behavior - a permission with 'require_justification' attribute prompts users for reasons, while 'notify_on_use' triggers alerts. This metadata layer transforms simple permissions into rich, self-describing capabilities that adapt to organizational needs, support automated governance, and enable sophisticated permission analytics.
30
PermissionCondition
Defines conditional logic that must be satisfied for permissions to be valid, implementing dynamic authorization where access rights change based on runtime conditions. Unlike static permissions that are always active, conditional permissions adapt to circumstances - a user might have 'approve expenses' permission but only for amounts under $5000, only during business hours, or only for their direct reports. This entity captures complex boolean expressions, mathematical comparisons, temporal constraints, and business rules that gate permission activation. Conditions can evaluate user attributes (seniority level, certifications), resource properties (document state, data classification), environmental factors (time, location, threat level), and business context (project phase, audit mode). The entity supports nested conditions with AND/OR/NOT logic, mathematical operations for numerical comparisons, string matching with regex patterns, and date arithmetic for temporal rules. Conditions can reference external services for dynamic evaluation ('check with risk scoring API'), aggregate functions ('user has approved less than 10 items today'), and historical data ('user has not failed audit in past year'). This conditional approach enables least-privilege access that automatically adjusts to risk, implements separation of duties (can't approve what you created), and enforces business policies (no changes during freeze periods) without constant manual permission updates.
25
PermissionConditionLink
Associates conditions with permissions, roles, or policies, creating dynamic authorization rules where access rights are contingent upon runtime condition evaluation. This junction entity bridges static permission definitions with dynamic conditions, enabling context-aware access control. Rather than granting permissions unconditionally, this link makes them dependent on specific circumstances being met. For example, linking 'delete_records' permission with 'business_hours' condition ensures deletion only occurs during monitored times. The entity supports multiple conditions per permission with complex boolean combinations (ALL must pass, ANY can pass, custom logic), weighted conditions where some are more important than others, and fallback chains where alternative conditions apply if primary ones fail. It handles condition precedence, determining which conditions to evaluate first for performance optimization, and short-circuit evaluation to skip unnecessary checks. The link can be temporary (conditions only apply during specific periods), progressive (different conditions at different trust levels), or contextual (different conditions in different environments). This mechanism enables sophisticated scenarios like escalating approval requirements based on risk, time-based permission activation for temporary access, and compliance rules that overlay business permissions. The entity maintains evaluation history for audit purposes and performance metrics for optimization.
27
PermissionDependency
Defines relationships and prerequisites between permissions, establishing a dependency graph that ensures permissions are granted in proper order and with necessary prerequisites. This entity captures the complex interdependencies where certain permissions require others to function properly - you can't have 'approve_documents' without 'read_documents', or 'delete_database' without 'modify_database'. Dependencies can be hard requirements (permission won't work without prerequisite), soft recommendations (permission works better with prerequisite), or mutual exclusions (permissions that conflict). The entity supports transitive dependencies where A requires B requires C, circular dependency detection to prevent infinite loops, and conditional dependencies that apply only in certain contexts. It enables permission bundles where granting one permission automatically grants required dependencies, permission hierarchies where higher-level permissions include lower-level ones, and safety checks that prevent dangerous permission combinations. Dependencies can be temporal (permission A must be held for X days before getting B), sequential (must use A before being granted B), or concurrent (must have A while using B). This dependency management is crucial for maintaining system integrity, implementing progressive trust models where users gain permissions over time, and ensuring compliance with security policies that mandate certain permission combinations. The entity helps administrators understand permission relationships and prevents configuration errors.
27
PolicyObligation
Defines mandatory actions that must be performed when a policy decision is made, ensuring that access control decisions are accompanied by necessary security, compliance, or operational activities. Obligations are the 'must-do' requirements triggered by policy evaluation - when access is granted, specific actions like logging, encryption, notification, or data masking must occur. Unlike the access decision itself (permit/deny), obligations are post-decision requirements that enforce additional controls. For example, accessing sensitive data might obligate the system to create detailed audit logs, send notifications to data owners, or apply encryption to responses. Obligations can be conditional based on the decision outcome - different obligations for permit versus deny. They support compliance requirements like GDPR's notification obligations for data breaches or HIPAA's audit requirements for patient record access. The entity tracks obligation fulfillment to ensure all required actions complete successfully - if an obligation fails, the entire access might be revoked. Obligations can be chained (one triggering another), time-bound (must complete within X seconds), or compensating (alternative actions if primary fails). This mechanism transforms simple yes/no access decisions into complex, auditable, compliant operations that meet regulatory and business requirements while maintaining security posture.
24
PolicyRule
Represents individual rules within an access policy, providing granular conditions and actions that compose complex policy logic. While an AccessPolicy defines the overall security requirement, PolicyRules are the building blocks that implement specific checks and decisions. Each rule evaluates a specific condition (like 'user is contractor' or 'time is outside business hours') and specifies what should happen when that condition is met. Rules can be combined using boolean logic (AND, OR, NOT) to create sophisticated policies. For example, a policy preventing data exfiltration might have rules checking data volume, destination, time of day, and user history. Rules support various evaluation methods including simple comparisons, regex patterns, mathematical operations, and even external service calls for dynamic decisions. They can trigger multiple actions like logging, notifications, step-up authentication, or access denial. The entity includes rule versioning to track changes, testing capabilities to validate logic, and performance metrics to identify slow-evaluating rules. Rules can be shared across policies for consistency and can be temporarily disabled for troubleshooting. This granular approach allows security teams to build precise, maintainable policies that can adapt to evolving threats and compliance requirements without complete rewrites.
30
PolicySet
Groups related access policies into cohesive sets that can be managed, deployed, and evaluated together, providing organizational structure for complex policy landscapes. Policy sets are containers that bundle policies sharing common purposes, compliance requirements, or organizational scope - like 'GDPR Compliance Policies' or 'Financial Data Protection'. This hierarchical organization allows policy administrators to manage hundreds of policies efficiently, deploy entire policy frameworks at once, and ensure comprehensive coverage without gaps or conflicts. Each set can contain other sets (nested hierarchy), individual policies, and rules, with sophisticated combination algorithms determining how multiple policies interact. The entity supports different policy combination methods: permit-overrides (any allow wins), deny-overrides (any deny wins), first-applicable (stop at first match), or consensus-based. Policy sets can be versioned as a unit, enabling rollback of entire policy frameworks if issues arise. They support staged deployment where sets are tested in non-production before enterprise-wide activation. The entity handles policy inheritance where child organizations inherit parent policy sets but can add local policies. This is essential for multi-tenant systems where base policies apply to all while allowing customization, regulatory compliance where entire frameworks must be adopted together, and enterprise governance where consistent policy application across divisions is required.
28
PrincipalTrust
Quantifies and tracks the trustworthiness of security principals (users, services, devices) through continuous assessment of behavior, compliance, and risk indicators, enabling dynamic trust-based access control. This entity implements zero-trust principles where trust is never assumed but continuously earned and verified. Trust scores are calculated from multiple factors: authentication strength (password, MFA, biometrics), behavioral patterns (typical vs anomalous activity), compliance status (training completed, policies acknowledged), historical reliability (past violations, successful operations), and environmental context (device security, network location). Trust levels dynamically adjust based on positive signals (successful verifications, consistent behavior) and negative signals (failed attempts, policy violations, suspicious patterns). The entity enables trust-based authorization where higher trust unlocks more privileges, trust degradation where violations reduce access progressively, and trust recovery where good behavior restores standing. It supports trust federation where external trust assessments are incorporated, trust inheritance where new principals inherit baseline trust from their organization, and trust delegation where trusted principals can vouch for others. Trust scores influence various security decisions: required authentication strength, permission activation, audit intensity, and session duration. This continuous trust assessment is essential for adaptive security that responds to changing risk, insider threat detection through trust anomalies, and compliance with zero-trust architectures.
29
ResourcePermission
Defines the permission model for different types of resources in the system, establishing what operations are possible on each resource type and how permissions are inherited, delegated, and combined. This entity acts as a template that describes all possible permissions for resource categories like 'documents', 'databases', or 'apis', serving as the blueprint for access control decisions. It defines not just CRUD operations but complex, resource-specific actions like 'publish', 'archive', 'approve', or 'rollback'. Each resource type can have its own permission hierarchy where having 'manage' permission might automatically grant 'write' and 'read'. The entity specifies ownership models (who gets what permissions when creating a resource), inheritance rules (how folder permissions flow to files), and aggregation patterns (how multiple permissions combine). It handles resource lifecycle permissions, defining who can transition resources between states like draft → review → published. The entity also defines permission dependencies (you need 'read' to have 'write'), mutual exclusions (can't have both 'approve' and 'submit'), and contextual variations (different permissions in different environments). This is essential for building flexible yet consistent authorization across diverse resource types while maintaining principle of least privilege. It enables features like temporary access elevation, permission templates for common scenarios, and automated permission assignment based on resource characteristics.
32
ResourceTag
Attaches metadata labels to resources that drive access control decisions, enabling attribute-based access control (ABAC) where permissions are determined by matching tags between users, resources, and policies. Resource tags are key-value pairs that describe characteristics like classification level, data sensitivity, project ownership, compliance scope, or business criticality. Unlike traditional access control that explicitly lists who can access what, tag-based control uses tag matching rules - a user with 'department:finance' tag can access resources tagged 'visibility:finance'. This approach dramatically simplifies permission management for large-scale systems where explicitly maintaining access lists becomes impractical. Tags support hierarchical relationships (parent tags imply child tags), tag inheritance (resources inherit parent folder tags), and tag propagation (tags flow through data lineage). The entity enables dynamic authorization that automatically adjusts as tags change, policy-driven access where rules reference tags instead of specific resources, and compliance enforcement where regulatory tags trigger specific controls. Tags can be system-generated (auto-classification), user-applied (manual labeling), or inherited (from containers). They support multi-dimensional classification where resources have multiple tag types (sensitivity, project, owner, retention), enabling complex access decisions based on tag combinations. This tagging system is essential for cloud resource management, data governance, regulatory compliance, and implementing scalable access control in dynamic environments where resources are constantly created and modified.
30
Role
Defines a named collection of permissions that can be assigned to users or groups, implementing Role-Based Access Control (RBAC) in the system. Roles are the cornerstone of scalable permission management - instead of assigning individual permissions to thousands of users, you create roles like 'Editor', 'Manager', or 'Admin' and assign appropriate permissions to each role. Users then inherit all permissions from their assigned roles. This dramatically simplifies access management, especially in large organizations where many people have similar job functions. Roles can be hierarchical, where a 'Senior Manager' role might inherit all permissions from 'Manager' plus additional elevated privileges. System roles (like 'Super Admin') are built-in and protected from modification, while custom roles can be created to match specific organizational needs. Each role has a priority level to resolve conflicts when a user has multiple roles with contradicting permissions. Roles can be scoped to specific contexts - for example, someone might be an 'Admin' for one department but 'Viewer' for another. This entity makes it easy to implement least-privilege access, conduct access reviews, and maintain compliance with security policies by providing a clear, auditable structure for who can do what in the system.
23
RolePermission
Maps permissions to roles, defining what actions each role is authorized to perform in the system. This junction table is the heart of RBAC, translating high-level roles into specific, actionable permissions. When a user is assigned the 'Editor' role, this entity defines that editors can 'create:articles', 'edit:articles', 'publish:articles' but not 'delete:articles'. The relationship can be additive (granting permissions) or subtractive (explicitly denying permissions even if inherited from parent roles). This allows fine-tuning of roles - for example, a 'Junior Admin' role might inherit from 'Admin' but have certain dangerous permissions explicitly removed. The entity tracks who granted each permission to the role and when, providing accountability for permission changes. It supports conditional permissions where the same role might have different permissions based on context (time of day, location, resource attributes). Permission changes to roles immediately affect all users with that role, making it efficient to manage access for large groups. The entity maintains history even after permissions are revoked from roles, essential for compliance audits asking 'What could this role do last quarter?'
24
SecurityPrincipal
Represents any entity that can be authenticated and authorized in the system, providing a unified abstraction for users, service accounts, API clients, and automated systems. A security principal is anything that can have permissions and make requests - it could be a human user, a microservice, an IoT device, a scheduled job, or an external system. This abstraction allows the access control system to treat all these entities consistently while maintaining their unique characteristics. Each principal has credentials for authentication (passwords, certificates, keys), attributes for authorization decisions (clearance level, department, trust score), and a security context that defines their capabilities. Service principals enable machine-to-machine authentication without user involvement, essential for automated workflows and microservices. System principals represent internal components that need controlled access to resources. External principals handle third-party integrations with limited, scoped access. The entity tracks the principal's lifecycle from creation through various trust states to eventual deactivation. It maintains security posture information like last security review, compliance status, and risk assessments. This unified approach simplifies access control policies - a single policy can apply to users, services, and systems without separate implementations. It's fundamental for zero-trust architectures where every request must be authenticated and authorized regardless of source.
34
UserGroup
Represents a collection of users who share common access requirements, organizational structure, or functional responsibilities. Groups provide an additional layer of access management between individual users and roles, making it easier to manage permissions for teams, departments, or projects. Instead of assigning roles to each user individually, you assign roles to a group, and all group members inherit those roles. Groups can be hierarchical - a 'Company' group might contain 'Department' groups, which contain 'Team' groups. Members inherit permissions from all their parent groups. Groups can be static (manually managed membership) or dynamic (automatically populated based on user attributes like department or location). They're essential for modeling real-world organizational structures in the access control system. Groups can have their own permissions independent of roles, useful for resource ownership (like 'Marketing Team owns marketing folders'). They support temporary membership for contractors or project-based work, and can enforce approval workflows for joining sensitive groups. This entity is crucial for scalable access management in large organizations where managing individual user permissions would be impractical.
24
UserGroupMember
Manages the membership of users within groups, tracking who belongs to which group, their role within the group, and the complete lifecycle of their membership. This junction table goes beyond simple user-to-group mapping by recording how users joined (invitation, request, automatic), who approved their membership, when they joined and will leave, and what special roles they have within the group (owner, moderator, member). It handles complex membership scenarios like temporary project assignments where a consultant joins for 3 months, or rotating leadership where the 'team lead' role passes between members monthly. The entity tracks membership status changes, from pending approval through active membership to eventual departure, maintaining history for audit purposes. It supports group-specific roles that are different from system-wide roles - someone might be a 'Viewer' globally but an 'Admin' within their department group. The entity also manages membership inheritance in hierarchical groups and handles conflicts when users belong to multiple groups with different permission sets. This detailed tracking is essential for compliance reporting ('Who had access to financial data last quarter?') and security investigations ('Which groups was this user part of when the breach occurred?').
27
UserGroupPermission
Grants specific permissions directly to groups without using roles, providing fine-grained control for group-specific access needs. While roles bundle multiple permissions, sometimes groups need individual permissions that don't fit into existing roles. This entity allows granting permissions like 'edit team wiki' or 'access project dashboard' directly to a group. All group members inherit these permissions automatically. This is useful for resource ownership - the 'Marketing Team' group might have 'full control' permission on marketing folders, or the 'Security Team' might have 'audit log access' without needing a special role. The entity supports conditional permissions based on context (time, location, resource attributes) and can override role-based permissions when needed. For example, a group might be denied a specific dangerous permission even if their roles would normally grant it. The system tracks permission inheritance through group hierarchies and resolves conflicts using priority levels. This direct permission assignment is essential for implementing resource-based access control where groups own and manage specific assets. It also enables quick, temporary permission grants for urgent situations without creating throwaway roles.
28
UserGroupRole
Assigns roles to entire groups, enabling efficient permission management at scale by granting the same role to all group members simultaneously. This entity implements group-level role assignments where every member of a group automatically receives specific roles. For example, assigning the 'Financial Analyst' role to the 'Finance Department' group means all finance team members inherit that role without individual assignments. This dramatically simplifies administration - when someone joins the finance team, they automatically get all finance-related roles. The entity supports conditional assignments where roles might only apply during certain hours or from specific locations. It handles role inheritance through group hierarchies - if 'Company' group has 'Basic Employee' role, all subgroups inherit it. The system tracks who assigned roles to groups and why, maintaining accountability for bulk permission changes. Temporary role assignments are supported for project groups that need elevated permissions for limited periods. The entity also manages precedence when users belong to multiple groups with conflicting roles, using priority levels to resolve conflicts. This is essential for large organizations where managing individual role assignments would be impractical, and for ensuring consistent permissions across teams.
27
UserRole
Links users to their assigned roles, forming the core relationship in Role-Based Access Control (RBAC). This junction table manages which roles each user has, when they were granted, by whom, and when they expire. A single user can have multiple roles, and the same role can be assigned to many users, creating a many-to-many relationship. This entity goes beyond simple linking by tracking the complete lifecycle of role assignments including the reason for granting, approval chains, activation dates, and expiration. Temporary role assignments are common for contractors or for elevated privileges during emergencies. The entity supports role delegation, where a manager can grant their roles to subordinates temporarily. It also handles contextual roles - a user might be an 'Admin' for Project A but only a 'Viewer' for Project B. The system evaluates all active user roles to determine the complete set of permissions. Historical records are maintained even after roles expire or are revoked, providing an audit trail for compliance. This is critical for answering questions like 'Who had admin access last month?' during security investigations.
26

Knowledge Management

Document management, knowledge bases, categories, and search functionality

Schema NameDescriptionProperties
Article
Knowledge base article or help documentation
0
Attachment
File attachment linked to documents or records
0
Comment
Comment or annotation on a document or article
0
Document
A document or file in the knowledge base
0
DocumentCategory
Category or classification for organizing documents
0
DocumentTag
Tag for categorizing and searching documents and content. Extends Tag with document-specific properties.
3
Folder
Folder for organizing documents hierarchically
0
Search
Search query and results tracking
0
Version
Document version history tracking
0

Foundation & Shared Domains

Support Types

Supporting data types and utilities - addresses, measurements, values

Schema NameDescriptionProperties
ContactPoint
A contact point for a person or organization - phone, email, fax, etc. Based on FHIR ContactPoint and common ERP patterns
7
Identifier
A unique identifier issued by a specific system for organizations or persons - business IDs, tax numbers, social security numbers, passport numbers, etc. Supports all country-specific identification systems
8
LanguageProficiency
Language proficiency - represents a person's ability in a specific language
7
OnlinePresence
Online presence point for an organization or person - website, social media profiles, online platforms
6
PostalAddress
Physical mailing address with optional geographic coordinates
10

Reference Data

Standardized reference data - countries, languages, currencies, genders, etc.

Schema NameDescriptionProperties
Country
Country reference data with ISO codes
8
Currency
Currency reference data with ISO codes and country association
6
DocumentType
Type of commercial document with business rules and properties
6
Gender
Gender identity reference data
3
Language
Language reference data with ISO codes
4
MaritalStatus
Marital status reference data
3
PaymentTerm
Payment terms and conditions reference data
4
UnitOfMeasure
Unit of measure reference data - supports UN/CEFACT codes and common business units
5

Core Business Entities

Fundamental business entities - people and organizations

Schema NameDescriptionProperties
BusinessActivity
A business activity, industry sector, or line of business for an organization. Represents what the organization does commercially
6
Department
An organizational unit or division within an organization
0
Employee
A person employed by an organization - extends Person with employment-related information
0
Location
A physical location or facility - office, warehouse, store, building, room, etc.
0
Organization
An organization such as a company, business, institution, healthcare facility, or any formal business entity
21
OrganizationContact
A professional contact within an organization (sales rep, manager, support agent, etc.) - extends Person with organizational role and context
6
Person
An individual person - the base entity for representing human beings in any business context
18

Transverse Entities

Universal entities that apply across all domains - audit trails, external references, consents, and cross-cutting concerns

Schema NameDescriptionProperties
ChangeHistory
Universal audit trail tracking all field-level modifications with before/after values for any entity type. Supports regulatory compliance (GDPR Article 30, SOX, HIPAA) across all business entities.
10
Consent
Universal consent tracking entity for all types of consent (marketing, GDPR, cookies, medical, data processing, etc.) with full audit trail. Base entity that can be extended for specific consent types.
16
ExternalReference
Universal reference to records in external systems (Salesforce, SAP, Shopify, Stripe, QuickBooks, etc.) for integration purposes across all entity types
11
Tag
Universal tag base entity with properties common to all tag types (CustomerTag, ProductTag, DocumentTag, etc.). Contains tag metadata like name, color, icon, category.
8