Tenant

Represents an isolated organizational workspace in a multi-tenant system, providing complete data segregation and independent configuration for each customer or client organization. A Tenant is the foundational unit for multi-tenancy, ensuring that users, data, permissions, and settings for one tenant are completely isolated from others. Tenants enable SaaS platforms to serve multiple customers from a single application instance while maintaining security boundaries, customization capabilities, and billing independence. Each tenant can have its own branding, authentication rules, feature configurations, subscription plans, and user management. The entity supports hierarchical tenants (parent-child relationships), tenant lifecycle management (trial, active, suspended), and serves as the anchor point for all tenant-scoped data across B2B SaaS platforms, enterprise applications, and multi-organization systems.

10 properties
Schema

Properties

PropertyTypeModeDescriptionRequired
namestring
stored

Display name of the tenant

Example: "ACME Corporation"

Required
slugstring
stored

URL-friendly unique identifier for the tenant (used in subdomains, URLs, etc.)

Example: "acme-corp"

Required
organizationOrganization
stored

Reference to the Organization entity representing the business entity behind this tenant (optional - some tenants may not have a formal organization)

Optional
statusstring
stored

Current operational status of the tenant

Values: trial, active, suspended, cancelled, expired

Example: "active"

Required
parentTenantTenant
stored

Parent tenant for hierarchical multi-tenancy (enables sub-tenants, franchises, departments)

Optional
typestring
stored

Type or tier of tenant

Values: enterprise, business, team, individual, sandbox

Example: "business"

Optional
accessDecisionStrategyAccessDecisionStrategy
stored

Strategy for combining voter decisions to make final access control decisions for this tenant (defaults to platform default if not specified)

Optional
metadatajson
stored

Additional tenant-specific metadata and custom fields

Optional
isActiveboolean
calculated

Whether this tenant is currently active and operational

Optional
isTrialboolean
calculated

Whether this tenant is in trial status

Optional

Examples

Example 1

{
  "@type": "Tenant",
  "name": "ACME Corporation",
  "slug": "acme-corp",
  "organization": {
    "@type": "Organization",
    "name": "ACME Corporation",
    "legalName": "ACME Corporation Inc."
  },
  "status": "active",
  "type": "enterprise"
}

Example 2

{
  "@type": "Tenant",
  "name": "TechStart Inc",
  "slug": "techstart",
  "status": "trial",
  "type": "business"
}

Example 3

{
  "@type": "Tenant",
  "name": "ACME - Marketing Division",
  "slug": "acme-marketing",
  "parentTenant": {
    "@type": "Tenant",
    "slug": "acme-corp",
    "name": "ACME Corporation"
  },
  "status": "active",
  "type": "team",
  "metadata": {
    "division": "Marketing",
    "region": "EMEA"
  }
}

Example 4

{
  "@type": "Tenant",
  "name": "John Doe Sandbox",
  "slug": "john-sandbox",
  "status": "active",
  "type": "sandbox",
  "metadata": {
    "purpose": "development",
    "expiresAfterDays": 30
  }
}