Documentation

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Features
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Payments Overview
    Public Pools & DAO Jars
    WayForPay Payment Integration
    Wallet & Credit System
    WalletConductor
    Affiliate & Referral Enablement
    Referral Codes (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Token Staking System
    Owner Project Lab
    Entities
    Opportunities
    Real-Time Messaging
    Ring Tasks
    WebRTC Calls & STUNner TURN
    Peer Games
    News Module
    Member Blogs
    Public Profile Pages
    Profile Account Widgets
    Ring File Cabinet
    Username Reservation System
    Scientific Editor
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Email AI-CRM
    Ring Mailer & RingdomX Mail
    Tunnel Protocol
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Security & Compliance
    Admin console
    Admin Wiki
    Manage via Telegram
    Locale System
    Mobile Experience
    Performance Optimization Patterns
    Examples
    Quick Start
    Basic Setup
    White Label
    Custom Branding
    Web3 Integration
    Real World
    Advanced Features
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Vertical Presets (SSOT)
    Ringization playbook
    Branding
    Themes
    Features
    Localization
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Project configuration
    Public environment variables
    Order Lab secrets
    WalletConnect Project ID (Reown Cloud)
    Supported services
    NODUS wiki (project knowledge)
    Configuration playbook
    Web3
    Token launch jurisdictions
    Wallet
    Wallet Security Tips
    Integrations
    Ethereum wallets (Wagmi v3)
    RingFileBase (object storage API)
    Ring CDN (RingFileBase edge)
    Deployment
    Self-hosted deployment
    Vercel Deployment
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Architecture
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    PaymentConductor architecture
    WalletConductor architecture
    Backend Services
    Firebase Integration
    Development
    Ring MCP Server

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Features
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Payments Overview
    Public Pools & DAO Jars
    WayForPay Payment Integration
    Wallet & Credit System
    WalletConductor
    Affiliate & Referral Enablement
    Referral Codes (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Token Staking System
    Owner Project Lab
    Entities
    Opportunities
    Real-Time Messaging
    Ring Tasks
    WebRTC Calls & STUNner TURN
    Peer Games
    News Module
    Member Blogs
    Public Profile Pages
    Profile Account Widgets
    Ring File Cabinet
    Username Reservation System
    Scientific Editor
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Email AI-CRM
    Ring Mailer & RingdomX Mail
    Tunnel Protocol
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Security & Compliance
    Admin console
    Admin Wiki
    Manage via Telegram
    Locale System
    Mobile Experience
    Performance Optimization Patterns
    Examples
    Quick Start
    Basic Setup
    White Label
    Custom Branding
    Web3 Integration
    Real World
    Advanced Features
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Vertical Presets (SSOT)
    Ringization playbook
    Branding
    Themes
    Features
    Localization
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Project configuration
    Public environment variables
    Order Lab secrets
    WalletConnect Project ID (Reown Cloud)
    Supported services
    NODUS wiki (project knowledge)
    Configuration playbook
    Web3
    Token launch jurisdictions
    Wallet
    Wallet Security Tips
    Integrations
    Ethereum wallets (Wagmi v3)
    RingFileBase (object storage API)
    Ring CDN (RingFileBase edge)
    Deployment
    Self-hosted deployment
    Vercel Deployment
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Architecture
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    PaymentConductor architecture
    WalletConductor architecture
    Backend Services
    Firebase Integration
    Development
    Ring MCP Server

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Features
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Payments Overview
    Public Pools & DAO Jars
    WayForPay Payment Integration
    Wallet & Credit System
    WalletConductor
    Affiliate & Referral Enablement
    Referral Codes (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Token Staking System
    Owner Project Lab
    Entities
    Opportunities
    Real-Time Messaging
    Ring Tasks
    WebRTC Calls & STUNner TURN
    Peer Games
    News Module
    Member Blogs
    Public Profile Pages
    Profile Account Widgets
    Ring File Cabinet
    Username Reservation System
    Scientific Editor
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Email AI-CRM
    Ring Mailer & RingdomX Mail
    Tunnel Protocol
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Security & Compliance
    Admin console
    Admin Wiki
    Manage via Telegram
    Locale System
    Mobile Experience
    Performance Optimization Patterns
    Examples
    Quick Start
    Basic Setup
    White Label
    Custom Branding
    Web3 Integration
    Real World
    Advanced Features
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Vertical Presets (SSOT)
    Ringization playbook
    Branding
    Themes
    Features
    Localization
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Project configuration
    Public environment variables
    Order Lab secrets
    WalletConnect Project ID (Reown Cloud)
    Supported services
    NODUS wiki (project knowledge)
    Configuration playbook
    Web3
    Token launch jurisdictions
    Wallet
    Wallet Security Tips
    Integrations
    Ethereum wallets (Wagmi v3)
    RingFileBase (object storage API)
    Ring CDN (RingFileBase edge)
    Deployment
    Self-hosted deployment
    Vercel Deployment
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Architecture
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    PaymentConductor architecture
    WalletConductor architecture
    Backend Services
    Firebase Integration
    Development
    Ring MCP Server

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)
    Ring Platform Logo

    Loading documentation...

    Preparing Ring Platform content

    Ring Platform Logo

    Loading documentation...

    Preparing Ring Platform content

    Ring Platform Logo

    Loading documentation...

    Preparing Ring Platform content

    Entities

    Entities are the organization profiles at the center of Ring’s product loop: discover or create a profile, invite members, post opportunities, optionally activate a store, and keep discovery fresh after every mutation.

    Use Founder / Developer tabs in the docs sidebar to filter this page. Sidebar article visibility is controlled by lib/docs/audience-curated-docs.ts (Layer1); this page is curated for both audiences.

    Entities are not a business-directory page bolted on later — they are the primary organization record that opportunities, vendor stores, verification procedures, and Tunnel discovery hang off.

    ConcernWhat Ring ships
    Industry catalogVertical preset via ring-config entities.preset (platform = 26 types; agricultural = alternate catalog)
    Visibilitypublic · subscriber · member · confidential (+ isConfidential flag)
    VerificationQueue statuses none → pending / under_review → verified / rejected via POST /api/entities/{id}/verify
    TeamaddedBy owner + members[] user IDs; invite by existing-user email
    FreshnesssyncEntityDiscovery() — cache tags, revalidatePath, Tunnel entity:*
    Data planePostgreSQL JSONB through DatabaseService; UI reads SerializedEntity (ISO dates)

    Why entities matter for your clone

    Your settlers and operators need a trusted organization surface: who we are, which industry we claim, who can see us, and how we collaborate. Entities give each organization that surface without a separate CRM.

    Create & showcase

    Members create profiles at /entities/add; public and role-gated listings at /entities.

    My Entities desk

    /entities/my tabs: All (owned), Store (owned + storeActivated), Member of.

    Opportunities

    Jobs and partnerships attach to an entity — verified presence improves trust in matching.

    Store activation

    Implementation

    Product loop

    Module map (Layer1 ring/web)

    AreaPath
    Types / SerializedEntityfeatures/entities/types/index.ts
    Presets (platform / agricultural)features/entities/presets/ + getEntityTypes()
    DB mappingfeatures/entities/lib/entity-db-mapper.ts
    Permissions / visibilityfeatures/entities/lib/entity-permissions.ts, entity-visibility-filter.ts
    Mutation syncfeatures/entities/lib/entity-mutation-sync.ts → lib/discovery/sync-discovery.ts
    Create / update / delete

    Frequently asked questions

    Impact

    Will every clone show the same 26 industries?

    No. The active catalog comes from entities.preset. Default platform ships 26 industry ids (technologySoftware … other). agricultural swaps in a wellness/farm vertical catalog. Clones can overlay presets via ringdom-clone-build.

    Do entities replace LinkedIn company pages?

    They are Ring’s native org graph for discovery, opportunities, store, and confidential desks — not a LinkedIn sync product.

    Ops

    Who can create an entity?

    Authenticated users with member privileges (or platform admin / confidential role mapping). Confidential entities require confidential access (canCreateEntity).

    How do I delete safely?

    DELETE /api/entities/{id} with JSON { "confirm": true }, or the UI delete flow under /entities/[id]/delete. Missing confirm returns 400.

    Why is My Entities empty for store?

    The Store tab only lists entities where addedBy === currentUser and storeActivated === true. Activate the vendor store first.

    Does verification auto-approve?

    No. requestEntityVerification opens/submits a verification_procedures record (entity_identity) and sets entity verificationStatus to pending. Review is an ops/admin workflow.

    Related documentation

    Related documentation

    Entities

    Next-step: REST/MCP contract detail for the same CRUD, invite, verify, and analytics routes.

    Discovery Mutation Sync

    Depends-on: how syncEntityDiscovery invalidates caches and publishes Tunnel entity:* events.

    Opportunities

    Same-workflow: opportunities attach to entities as organizationId / members post from entity context.

    Multi-Vendor Store

    Next-step: activate storeActivated on an entity and operate the multi-vendor marketplace.

    Entities

    Entities are the organization profiles at the center of Ring’s product loop: discover or create a profile, invite members, post opportunities, optionally activate a store, and keep discovery fresh after every mutation.

    Use Founder / Developer tabs in the docs sidebar to filter this page. Sidebar article visibility is controlled by lib/docs/audience-curated-docs.ts (Layer1); this page is curated for both audiences.

    Entities are not a business-directory page bolted on later — they are the primary organization record that opportunities, vendor stores, verification procedures, and Tunnel discovery hang off.

    ConcernWhat Ring ships
    Industry catalogVertical preset via ring-config entities.preset (platform = 26 types; agricultural = alternate catalog)
    Visibilitypublic · subscriber · member · confidential (+ isConfidential flag)
    VerificationQueue statuses none → pending / under_review → verified / rejected via POST /api/entities/{id}/verify
    TeamaddedBy owner + members[] user IDs; invite by existing-user email
    FreshnesssyncEntityDiscovery() — cache tags, revalidatePath, Tunnel entity:*
    Data planePostgreSQL JSONB through DatabaseService; UI reads SerializedEntity (ISO dates)

    Why entities matter for your clone

    Your settlers and operators need a trusted organization surface: who we are, which industry we claim, who can see us, and how we collaborate. Entities give each organization that surface without a separate CRM.

    Create & showcase

    Members create profiles at /entities/add; public and role-gated listings at /entities.

    My Entities desk

    /entities/my tabs: All (owned), Store (owned + storeActivated), Member of.

    Opportunities

    Jobs and partnerships attach to an entity — verified presence improves trust in matching.

    Store activation

    Implementation

    Product loop

    Module map (Layer1 ring/web)

    AreaPath
    Types / SerializedEntityfeatures/entities/types/index.ts
    Presets (platform / agricultural)features/entities/presets/ + getEntityTypes()
    DB mappingfeatures/entities/lib/entity-db-mapper.ts
    Permissions / visibilityfeatures/entities/lib/entity-permissions.ts, entity-visibility-filter.ts
    Mutation syncfeatures/entities/lib/entity-mutation-sync.ts → lib/discovery/sync-discovery.ts
    Create / update / delete

    Frequently asked questions

    Impact

    Will every clone show the same 26 industries?

    No. The active catalog comes from entities.preset. Default platform ships 26 industry ids (technologySoftware … other). agricultural swaps in a wellness/farm vertical catalog. Clones can overlay presets via ringdom-clone-build.

    Do entities replace LinkedIn company pages?

    They are Ring’s native org graph for discovery, opportunities, store, and confidential desks — not a LinkedIn sync product.

    Ops

    Who can create an entity?

    Authenticated users with member privileges (or platform admin / confidential role mapping). Confidential entities require confidential access (canCreateEntity).

    How do I delete safely?

    DELETE /api/entities/{id} with JSON { "confirm": true }, or the UI delete flow under /entities/[id]/delete. Missing confirm returns 400.

    Why is My Entities empty for store?

    The Store tab only lists entities where addedBy === currentUser and storeActivated === true. Activate the vendor store first.

    Does verification auto-approve?

    No. requestEntityVerification opens/submits a verification_procedures record (entity_identity) and sets entity verificationStatus to pending. Review is an ops/admin workflow.

    Related documentation

    Related documentation

    Entities

    Next-step: REST/MCP contract detail for the same CRUD, invite, verify, and analytics routes.

    Discovery Mutation Sync

    Depends-on: how syncEntityDiscovery invalidates caches and publishes Tunnel entity:* events.

    Opportunities

    Same-workflow: opportunities attach to entities as organizationId / members post from entity context.

    Multi-Vendor Store

    Next-step: activate storeActivated on an entity and operate the multi-vendor marketplace.

    Entities

    Entities are the organization profiles at the center of Ring’s product loop: discover or create a profile, invite members, post opportunities, optionally activate a store, and keep discovery fresh after every mutation.

    Use Founder / Developer tabs in the docs sidebar to filter this page. Sidebar article visibility is controlled by lib/docs/audience-curated-docs.ts (Layer1); this page is curated for both audiences.

    Entities are not a business-directory page bolted on later — they are the primary organization record that opportunities, vendor stores, verification procedures, and Tunnel discovery hang off.

    ConcernWhat Ring ships
    Industry catalogVertical preset via ring-config entities.preset (platform = 26 types; agricultural = alternate catalog)
    Visibilitypublic · subscriber · member · confidential (+ isConfidential flag)
    VerificationQueue statuses none → pending / under_review → verified / rejected via POST /api/entities/{id}/verify
    TeamaddedBy owner + members[] user IDs; invite by existing-user email
    FreshnesssyncEntityDiscovery() — cache tags, revalidatePath, Tunnel entity:*
    Data planePostgreSQL JSONB through DatabaseService; UI reads SerializedEntity (ISO dates)

    Why entities matter for your clone

    Your settlers and operators need a trusted organization surface: who we are, which industry we claim, who can see us, and how we collaborate. Entities give each organization that surface without a separate CRM.

    Create & showcase

    Members create profiles at /entities/add; public and role-gated listings at /entities.

    My Entities desk

    /entities/my tabs: All (owned), Store (owned + storeActivated), Member of.

    Opportunities

    Jobs and partnerships attach to an entity — verified presence improves trust in matching.

    Store activation

    Implementation

    Product loop

    Module map (Layer1 ring/web)

    AreaPath
    Types / SerializedEntityfeatures/entities/types/index.ts
    Presets (platform / agricultural)features/entities/presets/ + getEntityTypes()
    DB mappingfeatures/entities/lib/entity-db-mapper.ts
    Permissions / visibilityfeatures/entities/lib/entity-permissions.ts, entity-visibility-filter.ts
    Mutation syncfeatures/entities/lib/entity-mutation-sync.ts → lib/discovery/sync-discovery.ts
    Create / update / delete

    Frequently asked questions

    Impact

    Will every clone show the same 26 industries?

    No. The active catalog comes from entities.preset. Default platform ships 26 industry ids (technologySoftware … other). agricultural swaps in a wellness/farm vertical catalog. Clones can overlay presets via ringdom-clone-build.

    Do entities replace LinkedIn company pages?

    They are Ring’s native org graph for discovery, opportunities, store, and confidential desks — not a LinkedIn sync product.

    Ops

    Who can create an entity?

    Authenticated users with member privileges (or platform admin / confidential role mapping). Confidential entities require confidential access (canCreateEntity).

    How do I delete safely?

    DELETE /api/entities/{id} with JSON { "confirm": true }, or the UI delete flow under /entities/[id]/delete. Missing confirm returns 400.

    Why is My Entities empty for store?

    The Store tab only lists entities where addedBy === currentUser and storeActivated === true. Activate the vendor store first.

    Does verification auto-approve?

    No. requestEntityVerification opens/submits a verification_procedures record (entity_identity) and sets entity verificationStatus to pending. Review is an ops/admin workflow.

    Related documentation

    Related documentation

    Entities

    Next-step: REST/MCP contract detail for the same CRUD, invite, verify, and analytics routes.

    Discovery Mutation Sync

    Depends-on: how syncEntityDiscovery invalidates caches and publishes Tunnel entity:* events.

    Opportunities

    Same-workflow: opportunities attach to entities as organizationId / members post from entity context.

    Multi-Vendor Store

    Next-step: activate storeActivated on an entity and operate the multi-vendor marketplace.

    An entity can become a vendor; store metrics appear on entity analytics for owners/members.

    Typical scenarios

    • Local business ring — SMBs create public entities, invite staff, post local opportunities.
    • Confidential partner desk — elevated roles create visibility: confidential entities for restricted collaboration (/confidential/entities).
    • Vendor onboarding — entity owner activates store; My Entities Store tab surfaces those profiles.
    • Vertical clone — set entities.preset to agricultural (or a clone overlay preset) so industry pickers match the niche instead of the default 26 platform industries.

    Platform verification is a review queue, not a marketing badge ladder. Owners/admins request review; platform staff resolve via verification procedures (subjectType: entity_identity).

    Operator checklist

    1. Confirm clone entities.preset in ring-config.json (empire org overlay uses platform).
    2. Ensure creators have member (or higher) platform role — confidential create needs confidential access.
    3. Walk /entities/add → profile → optional verify + invite → post first opportunity.
    4. Use /entities/my to separate owned, store-enabled, and membership views.
    features/entities/services/create-entity.ts, update-entity.ts, delete-entity.ts
    Invite / verify / analyticsinvite-entity-member.ts, request-entity-verification.ts, get-entity-analytics.ts
    My Entities viewsfeatures/entities/lib/my-entities-views.ts (all | store | member)
    Server Actionsapp/_actions/entities.ts
    Ownership gatefeatures/entities/lib/assert-entity-owner.ts (addedBy or platform admin)

    Empire overlay (ring-platform-org) does not fork entity services in web/ for this feature — compose Layer1; locales/config may overlay via merge.

    App routes

    RoutePurpose
    /[locale]/entitiesDiscovery list
    /[locale]/entities/addCreate form
    /[locale]/entities/myOwned / store / member tabs
    /[locale]/entities/[id]Showcase / detail
    /[locale]/entities/[id]/editEdit
    /[locale]/entities/[id]/deleteDelete confirm UI
    /[locale]/confidential/entitiesConfidential listing
    /[locale]/entities/status/[action]/[status]Status feedback page

    REST surface

    MethodPathNotes
    GET/api/entitiesList / query
    POST/api/entities/createCreate
    GET/api/entities/{id}Detail
    PUT/api/entities/{id}Full update
    PATCH/api/entities/{id}Partial (Zod entityPatchSchema)
    DELETE/api/entities/{id}Body { "confirm": true } required
    POST/api/entities/{id}/verifyQueue verification
    POST/api/entities/{id}/inviteInvite existing user by email
    GET/api/entities/{id}/analyticsOwner / member / platform admin
    POST/api/entities/uploadAuthenticated media upload

    MCP mirrors: /api/mcp/v1/entities, /api/mcp/v1/entities/search, /api/mcp/v1/entities/{id}.

    Visibility ladder

    Discovery filters use platform roles (visitor → admin). Confidential rows require hasConfidentialAccess. Setting visibility: confidential or isConfidential: true on create/update is gated the same way.

    Create via service

    1. 1

      Authenticate as a user who may create entities (canCreateEntity — member+; confidential create needs confidential access).

    2. 2

      Call the service (or POST /api/entities/create). Required shape centers on name, type, descriptions, addedBy, locale, location, visibility, members, opportunities.

    3. 3

      After mutations, rely on syncEntityDiscovery — do not invent a separate search-index table; PostgreSQL JSONB is SSOT.

    Invite & verify

    Invite role (OWNER | ADMIN | MEMBER) is validated and shown in the notification copy. Persistence today appends the invitee to members[]. Manage gates (assertEntityOwnerOrAdmin) still key off addedBy or platform admin — do not assume invite ADMIN grants entity-admin APIs until a member-role store lands.

    Analytics payload

    GET /api/entities/{id}/analytics returns EntityAnalytics: member count, opportunity id list length, linked opportunities (organizationId count), verification / moderation fields, optional storeMetrics / storeVerification, and generatedAt.

    Security

    See-also: role ladder and confidential access patterns that gate entity visibility.

    First Success Validation

    Prerequisite: first clone walkthrough before creating production entity profiles.

    An entity can become a vendor; store metrics appear on entity analytics for owners/members.

    Typical scenarios

    • Local business ring — SMBs create public entities, invite staff, post local opportunities.
    • Confidential partner desk — elevated roles create visibility: confidential entities for restricted collaboration (/confidential/entities).
    • Vendor onboarding — entity owner activates store; My Entities Store tab surfaces those profiles.
    • Vertical clone — set entities.preset to agricultural (or a clone overlay preset) so industry pickers match the niche instead of the default 26 platform industries.

    Platform verification is a review queue, not a marketing badge ladder. Owners/admins request review; platform staff resolve via verification procedures (subjectType: entity_identity).

    Operator checklist

    1. Confirm clone entities.preset in ring-config.json (empire org overlay uses platform).
    2. Ensure creators have member (or higher) platform role — confidential create needs confidential access.
    3. Walk /entities/add → profile → optional verify + invite → post first opportunity.
    4. Use /entities/my to separate owned, store-enabled, and membership views.
    features/entities/services/create-entity.ts, update-entity.ts, delete-entity.ts
    Invite / verify / analyticsinvite-entity-member.ts, request-entity-verification.ts, get-entity-analytics.ts
    My Entities viewsfeatures/entities/lib/my-entities-views.ts (all | store | member)
    Server Actionsapp/_actions/entities.ts
    Ownership gatefeatures/entities/lib/assert-entity-owner.ts (addedBy or platform admin)

    Empire overlay (ring-platform-org) does not fork entity services in web/ for this feature — compose Layer1; locales/config may overlay via merge.

    App routes

    RoutePurpose
    /[locale]/entitiesDiscovery list
    /[locale]/entities/addCreate form
    /[locale]/entities/myOwned / store / member tabs
    /[locale]/entities/[id]Showcase / detail
    /[locale]/entities/[id]/editEdit
    /[locale]/entities/[id]/deleteDelete confirm UI
    /[locale]/confidential/entitiesConfidential listing
    /[locale]/entities/status/[action]/[status]Status feedback page

    REST surface

    MethodPathNotes
    GET/api/entitiesList / query
    POST/api/entities/createCreate
    GET/api/entities/{id}Detail
    PUT/api/entities/{id}Full update
    PATCH/api/entities/{id}Partial (Zod entityPatchSchema)
    DELETE/api/entities/{id}Body { "confirm": true } required
    POST/api/entities/{id}/verifyQueue verification
    POST/api/entities/{id}/inviteInvite existing user by email
    GET/api/entities/{id}/analyticsOwner / member / platform admin
    POST/api/entities/uploadAuthenticated media upload

    MCP mirrors: /api/mcp/v1/entities, /api/mcp/v1/entities/search, /api/mcp/v1/entities/{id}.

    Visibility ladder

    Discovery filters use platform roles (visitor → admin). Confidential rows require hasConfidentialAccess. Setting visibility: confidential or isConfidential: true on create/update is gated the same way.

    Create via service

    1. 1

      Authenticate as a user who may create entities (canCreateEntity — member+; confidential create needs confidential access).

    2. 2

      Call the service (or POST /api/entities/create). Required shape centers on name, type, descriptions, addedBy, locale, location, visibility, members, opportunities.

    3. 3

      After mutations, rely on syncEntityDiscovery — do not invent a separate search-index table; PostgreSQL JSONB is SSOT.

    Invite & verify

    Invite role (OWNER | ADMIN | MEMBER) is validated and shown in the notification copy. Persistence today appends the invitee to members[]. Manage gates (assertEntityOwnerOrAdmin) still key off addedBy or platform admin — do not assume invite ADMIN grants entity-admin APIs until a member-role store lands.

    Analytics payload

    GET /api/entities/{id}/analytics returns EntityAnalytics: member count, opportunity id list length, linked opportunities (organizationId count), verification / moderation fields, optional storeMetrics / storeVerification, and generatedAt.

    Security

    See-also: role ladder and confidential access patterns that gate entity visibility.

    First Success Validation

    Prerequisite: first clone walkthrough before creating production entity profiles.

    An entity can become a vendor; store metrics appear on entity analytics for owners/members.

    Typical scenarios

    • Local business ring — SMBs create public entities, invite staff, post local opportunities.
    • Confidential partner desk — elevated roles create visibility: confidential entities for restricted collaboration (/confidential/entities).
    • Vendor onboarding — entity owner activates store; My Entities Store tab surfaces those profiles.
    • Vertical clone — set entities.preset to agricultural (or a clone overlay preset) so industry pickers match the niche instead of the default 26 platform industries.

    Platform verification is a review queue, not a marketing badge ladder. Owners/admins request review; platform staff resolve via verification procedures (subjectType: entity_identity).

    Operator checklist

    1. Confirm clone entities.preset in ring-config.json (empire org overlay uses platform).
    2. Ensure creators have member (or higher) platform role — confidential create needs confidential access.
    3. Walk /entities/add → profile → optional verify + invite → post first opportunity.
    4. Use /entities/my to separate owned, store-enabled, and membership views.
    features/entities/services/create-entity.ts, update-entity.ts, delete-entity.ts
    Invite / verify / analyticsinvite-entity-member.ts, request-entity-verification.ts, get-entity-analytics.ts
    My Entities viewsfeatures/entities/lib/my-entities-views.ts (all | store | member)
    Server Actionsapp/_actions/entities.ts
    Ownership gatefeatures/entities/lib/assert-entity-owner.ts (addedBy or platform admin)

    Empire overlay (ring-platform-org) does not fork entity services in web/ for this feature — compose Layer1; locales/config may overlay via merge.

    App routes

    RoutePurpose
    /[locale]/entitiesDiscovery list
    /[locale]/entities/addCreate form
    /[locale]/entities/myOwned / store / member tabs
    /[locale]/entities/[id]Showcase / detail
    /[locale]/entities/[id]/editEdit
    /[locale]/entities/[id]/deleteDelete confirm UI
    /[locale]/confidential/entitiesConfidential listing
    /[locale]/entities/status/[action]/[status]Status feedback page

    REST surface

    MethodPathNotes
    GET/api/entitiesList / query
    POST/api/entities/createCreate
    GET/api/entities/{id}Detail
    PUT/api/entities/{id}Full update
    PATCH/api/entities/{id}Partial (Zod entityPatchSchema)
    DELETE/api/entities/{id}Body { "confirm": true } required
    POST/api/entities/{id}/verifyQueue verification
    POST/api/entities/{id}/inviteInvite existing user by email
    GET/api/entities/{id}/analyticsOwner / member / platform admin
    POST/api/entities/uploadAuthenticated media upload

    MCP mirrors: /api/mcp/v1/entities, /api/mcp/v1/entities/search, /api/mcp/v1/entities/{id}.

    Visibility ladder

    Discovery filters use platform roles (visitor → admin). Confidential rows require hasConfidentialAccess. Setting visibility: confidential or isConfidential: true on create/update is gated the same way.

    Create via service

    1. 1

      Authenticate as a user who may create entities (canCreateEntity — member+; confidential create needs confidential access).

    2. 2

      Call the service (or POST /api/entities/create). Required shape centers on name, type, descriptions, addedBy, locale, location, visibility, members, opportunities.

    3. 3

      After mutations, rely on syncEntityDiscovery — do not invent a separate search-index table; PostgreSQL JSONB is SSOT.

    Invite & verify

    Invite role (OWNER | ADMIN | MEMBER) is validated and shown in the notification copy. Persistence today appends the invitee to members[]. Manage gates (assertEntityOwnerOrAdmin) still key off addedBy or platform admin — do not assume invite ADMIN grants entity-admin APIs until a member-role store lands.

    Analytics payload

    GET /api/entities/{id}/analytics returns EntityAnalytics: member count, opportunity id list length, linked opportunities (organizationId count), verification / moderation fields, optional storeMetrics / storeVerification, and generatedAt.

    Security

    See-also: role ladder and confidential access patterns that gate entity visibility.

    First Success Validation

    Prerequisite: first clone walkthrough before creating production entity profiles.

    1. Docs
    2. /Features
    3. /Entities

    Updated Aug 12, 20266 min listen

    1. Docs
    2. /Features
    3. /Entities

    Updated Aug 12, 20266 min listen

    1. Docs
    2. /Features
    3. /Entities

    Updated Aug 12, 20266 min listen