Documentation

    Documentation

    Documentation

    Ring Platform Logo

    Завантаження документації...

    Підготовка контенту платформи Ring

    Ring Platform Logo

    Завантаження документації...

    Підготовка контенту платформи Ring

    Ring Platform Logo

    Завантаження документації...

    Підготовка контенту платформи Ring

    1. /
    2. /Admin API

    Updated Jul 7, 20265 min listen

    1. /
    2. /Admin API

    Updated Jul 7, 20265 min listen

    1. /
    2. /Admin API

    Updated Jul 7, 20265 min listen

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

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Architecture
    Data Model
    Real Time
    Discovery Mutation Sync
    Security
    Backend Services
    k8s-postgres-fcm Mode
    Firebase Integration
    Features
    Authentication
    Email AI-CRM
    Entities
    Opportunities
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Tunnel Protocol
    Wallet & Credit System
    Multi-Vendor Store
    Referral Codes (Refcodes)
    Affiliate & Referral Enablement
    Payments Overview
    PaymentConductor
    SubscriptionConductor
    VideoConductor
    News Module - Digital Newspaper Experience
    Member Blogs
    Public Profile Pages
    Username Reservation System
    Scientific Editor
    Locale System
    Security & Compliance
    NFT Marketplace
    Token Staking System
    Performance Optimization Patterns
    Mobile Experience
    Wallet
    Wallet Security Tips
    API
    Authentication
    Email AI-CRM API
    Entities
    Opportunities
    Messaging API
    Notifications API
    Wallet API
    Store API
    Admin API
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Branding
    Themes
    Web3
    Token launch jurisdictions
    Deployment
    Self-hosted deployment
    Vercel
    Docker
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Development
    Local Setup
    Code Structure
    Documentation components
    Community tooling
    Ring MCP Server
    Generative Images (ImageConductor)
    Autonomous Newsroom (Grok)
    OSS vs enterprise
    Whitelabel Navigation
    Best Practices
    Workflow
    Code Style
    Performance
    Testing
    Deployment
    Debugging
    Contributing
    MCP
    ring-image-create
    ring-video-create
    Examples
    Quick Start
    White Label
    Real World
    Integrations
    Ethereum wallets (Wagmi v3)

    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)

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

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Architecture
    Data Model
    Real Time
    Discovery Mutation Sync
    Security
    Backend Services
    k8s-postgres-fcm Mode
    Firebase Integration
    Features
    Authentication
    Email AI-CRM
    Entities
    Opportunities
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Tunnel Protocol
    Wallet & Credit System
    Multi-Vendor Store
    Referral Codes (Refcodes)
    Affiliate & Referral Enablement
    Payments Overview
    PaymentConductor
    SubscriptionConductor
    VideoConductor
    News Module - Digital Newspaper Experience
    Member Blogs
    Public Profile Pages
    Username Reservation System
    Scientific Editor
    Locale System
    Security & Compliance
    NFT Marketplace
    Token Staking System
    Performance Optimization Patterns
    Mobile Experience
    Wallet
    Wallet Security Tips
    API
    Authentication
    Email AI-CRM API
    Entities
    Opportunities
    Messaging API
    Notifications API
    Wallet API
    Store API
    Admin API
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Branding
    Themes
    Web3
    Token launch jurisdictions
    Deployment
    Self-hosted deployment
    Vercel
    Docker
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Development
    Local Setup
    Code Structure
    Documentation components
    Community tooling
    Ring MCP Server
    Generative Images (ImageConductor)
    Autonomous Newsroom (Grok)
    OSS vs enterprise
    Whitelabel Navigation
    Best Practices
    Workflow
    Code Style
    Performance
    Testing
    Deployment
    Debugging
    Contributing
    MCP
    ring-image-create
    ring-video-create
    Examples
    Quick Start
    White Label
    Real World
    Integrations
    Ethereum wallets (Wagmi v3)

    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)

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

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Architecture
    Data Model
    Real Time
    Discovery Mutation Sync
    Security
    Backend Services
    k8s-postgres-fcm Mode
    Firebase Integration
    Features
    Authentication
    Email AI-CRM
    Entities
    Opportunities
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Tunnel Protocol
    Wallet & Credit System
    Multi-Vendor Store
    Referral Codes (Refcodes)
    Affiliate & Referral Enablement
    Payments Overview
    PaymentConductor
    SubscriptionConductor
    VideoConductor
    News Module - Digital Newspaper Experience
    Member Blogs
    Public Profile Pages
    Username Reservation System
    Scientific Editor
    Locale System
    Security & Compliance
    NFT Marketplace
    Token Staking System
    Performance Optimization Patterns
    Mobile Experience
    Wallet
    Wallet Security Tips
    API
    Authentication
    Email AI-CRM API
    Entities
    Opportunities
    Messaging API
    Notifications API
    Wallet API
    Store API
    Admin API
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Branding
    Themes
    Web3
    Token launch jurisdictions
    Deployment
    Self-hosted deployment
    Vercel
    Docker
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Development
    Local Setup
    Code Structure
    Documentation components
    Community tooling
    Ring MCP Server
    Generative Images (ImageConductor)
    Autonomous Newsroom (Grok)
    OSS vs enterprise
    Whitelabel Navigation
    Best Practices
    Workflow
    Code Style
    Performance
    Testing
    Deployment
    Debugging
    Contributing
    MCP
    ring-image-create
    ring-video-create
    Examples
    Quick Start
    White Label
    Real World
    Integrations
    Ethereum wallets (Wagmi v3)

    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)
    Docs
    API
    Docs
    API
    Docs
    API

    Admin API

    Filter with Founder / Developer in the docs sidebar. Legacy copy claimed 12 endpoints, fabricated GET /api/admin/users list/search, GET /api/admin/analytics, IP whitelisting, and admin-only rate limits — none verified in this tree. Below matches app/api/admin/**/route.ts as of v1.6.4.

    Admin routes power the Admin console (/admin/*): user roles, entity moderation, verification desk, store order status, platform branding/AI settings, ProcessConductor pipelines, Web3 desk tools, and Email AI-CRM. All browser calls use Auth.js session cookies on the same origin — see API reference.

    Access tiers

    GuardRolesTypical routes
    isPlatformAdmin()admin, superadminUsers, orders, moderation, verification queue
    isSuperadmin() / requireSuperadminApi()superadmin onlyPlatform settings, processes, Web3 desk, branding save
    Service-layer checksAdmin in domain serviceEntity moderation queue, verification actions
    requireEmailAdmin()Platform admin + email CRM/api/admin/email/*

    SSOT: features/auth/user-role.ts — lowercase roles (visitor … superadmin).

    What operators control via Admin API

    These HTTP handlers back buttons in the admin UI — you rarely call them manually unless automating ops.

    User desk

    View one user, change role, manual verification badge, delete account (not self).

    Trust & safety

    Entity report queue, block entity, KYC verification procedures (approve / reject / request-info).

    Store ERP

    Advance order status: new → paid → processing → shipped → completed / canceled.

    Email AI-CRM

    Auth pattern

    Admin route handler

    There is no verified global admin rate-limit middleware in app/api/admin/*. Add edge rate limits in your reverse proxy if needed.

    Route inventory (verified)

    Users & roles

    MethodPathAuthNotes
    GET/api/admin/users/[id]Platform adminSingle user JSONB doc; passwords stripped
    DELETE/api/admin/users/[id]Platform adminCannot delete self
    PUT/api/admin/users/[id]/rolePlatform adminBody: { "role": "member" }
    PUT/api/admin/users/[id]/verification

    Related documentation

    API index

    Session auth model and domain map.

    Email AI-CRM API

    All /api/admin/email/* routes.

    Security model

    RBAC layers and confidential tiers.

    Monitoring

    Admin analytics and error ingest.

    Wallet API — oracle

    Admin API

    Filter with Founder / Developer in the docs sidebar. Legacy copy claimed 12 endpoints, fabricated GET /api/admin/users list/search, GET /api/admin/analytics, IP whitelisting, and admin-only rate limits — none verified in this tree. Below matches app/api/admin/**/route.ts as of v1.6.4.

    Admin routes power the Admin console (/admin/*): user roles, entity moderation, verification desk, store order status, platform branding/AI settings, ProcessConductor pipelines, Web3 desk tools, and Email AI-CRM. All browser calls use Auth.js session cookies on the same origin — see API reference.

    Access tiers

    GuardRolesTypical routes
    isPlatformAdmin()admin, superadminUsers, orders, moderation, verification queue
    isSuperadmin() / requireSuperadminApi()superadmin onlyPlatform settings, processes, Web3 desk, branding save
    Service-layer checksAdmin in domain serviceEntity moderation queue, verification actions
    requireEmailAdmin()Platform admin + email CRM/api/admin/email/*

    SSOT: features/auth/user-role.ts — lowercase roles (visitor … superadmin).

    What operators control via Admin API

    These HTTP handlers back buttons in the admin UI — you rarely call them manually unless automating ops.

    User desk

    View one user, change role, manual verification badge, delete account (not self).

    Trust & safety

    Entity report queue, block entity, KYC verification procedures (approve / reject / request-info).

    Store ERP

    Advance order status: new → paid → processing → shipped → completed / canceled.

    Email AI-CRM

    Auth pattern

    Admin route handler

    There is no verified global admin rate-limit middleware in app/api/admin/*. Add edge rate limits in your reverse proxy if needed.

    Route inventory (verified)

    Users & roles

    MethodPathAuthNotes
    GET/api/admin/users/[id]Platform adminSingle user JSONB doc; passwords stripped
    DELETE/api/admin/users/[id]Platform adminCannot delete self
    PUT/api/admin/users/[id]/rolePlatform adminBody: { "role": "member" }
    PUT/api/admin/users/[id]/verification

    Related documentation

    API index

    Session auth model and domain map.

    Email AI-CRM API

    All /api/admin/email/* routes.

    Security model

    RBAC layers and confidential tiers.

    Monitoring

    Admin analytics and error ingest.

    Wallet API — oracle

    Admin API

    Filter with Founder / Developer in the docs sidebar. Legacy copy claimed 12 endpoints, fabricated GET /api/admin/users list/search, GET /api/admin/analytics, IP whitelisting, and admin-only rate limits — none verified in this tree. Below matches app/api/admin/**/route.ts as of v1.6.4.

    Admin routes power the Admin console (/admin/*): user roles, entity moderation, verification desk, store order status, platform branding/AI settings, ProcessConductor pipelines, Web3 desk tools, and Email AI-CRM. All browser calls use Auth.js session cookies on the same origin — see API reference.

    Access tiers

    GuardRolesTypical routes
    isPlatformAdmin()admin, superadminUsers, orders, moderation, verification queue
    isSuperadmin() / requireSuperadminApi()superadmin onlyPlatform settings, processes, Web3 desk, branding save
    Service-layer checksAdmin in domain serviceEntity moderation queue, verification actions
    requireEmailAdmin()Platform admin + email CRM/api/admin/email/*

    SSOT: features/auth/user-role.ts — lowercase roles (visitor … superadmin).

    What operators control via Admin API

    These HTTP handlers back buttons in the admin UI — you rarely call them manually unless automating ops.

    User desk

    View one user, change role, manual verification badge, delete account (not self).

    Trust & safety

    Entity report queue, block entity, KYC verification procedures (approve / reject / request-info).

    Store ERP

    Advance order status: new → paid → processing → shipped → completed / canceled.

    Email AI-CRM

    Auth pattern

    Admin route handler

    There is no verified global admin rate-limit middleware in app/api/admin/*. Add edge rate limits in your reverse proxy if needed.

    Route inventory (verified)

    Users & roles

    MethodPathAuthNotes
    GET/api/admin/users/[id]Platform adminSingle user JSONB doc; passwords stripped
    DELETE/api/admin/users/[id]Platform adminCannot delete self
    PUT/api/admin/users/[id]/rolePlatform adminBody: { "role": "member" }
    PUT/api/admin/users/[id]/verification

    Related documentation

    API index

    Session auth model and domain map.

    Email AI-CRM API

    All /api/admin/email/* routes.

    Security model

    RBAC layers and confidential tiers.

    Monitoring

    Admin analytics and error ingest.

    Wallet API — oracle

    Threads, drafts, tasks, analytics — separate admin email namespace.

    Platform analytics

    Dashboard at /admin/analytics — not a monolithic /api/admin/analytics route.

    Typical operator scenarios

    • Promote a member to confidential — admin UI → PUT /api/admin/users/{id}/role or legacy POST /api/admin/set-user-role.
    • Clear verification backlog — /admin/verification → POST /api/admin/verification/procedures/{n}/{action} (approve, reject, request-info, under-review).
    • Pause an abusive entity — moderation queue → POST /api/admin/entity-moderation/block with entityId + reason.
    • Rebrand clone colors — superadmin settings form → POST /api/admin/whitelabel/save (redirects to admin settings).
    • Set RING/USD oracle rate — Web3 desk → POST /api/admin/web3/settings with { "ringPerUsd": "..." }; persisted in platform_settings web3 namespace.

    Superadmin-only changes (AI keys, branding JSON, manual pipeline runs, RING oracle rate) affect every user — restrict superadmin role count on production clones.

    Admin manual verification
    Body: { "isVerified": true, ... }
    POST/api/admin/set-user-rolePlatform adminLegacy: { "uid", "role" }; blocks admin self-demotion

    Not implemented: GET /api/admin/users list/search — use Admin UI server loaders or DatabaseService in custom tooling.

    Moderation & verification

    MethodPathNotes
    GET/api/admin/entity-moderation{ items: EntityModerationQueueItem[] }
    POST/api/admin/entity-moderation/block{ entityId, reason }
    GET/api/admin/verification/queue{ success, queue }
    POST/api/admin/verification/procedures/[procedureNumber]/[action]approve | reject | request-info | under-review

    Store

    MethodPathBody
    POST/api/admin/orders/[id]/status{ "status": "processing" } — enum: new, paid, processing, shipped, completed, canceled

    Platform settings (superadmin)

    MethodPathNotes
    GET/api/admin/platform-settings?namespace=ai|brandingRead namespace
    PUT/api/admin/platform-settingsJSON body: { namespace, data, secrets? }
    POST/api/admin/whitelabel/saveForm POST → branding colors → redirect
    POST/api/admin/saveLegacy branding save (JSON redirect)

    Persistence (verified): features/admin/platform-settings/platform-settings-service.ts reads and writes the platform_settings collection through db() from @/lib/database — not a private pg.Pool. Namespaces ai and branding use readDoc / updateDoc / createDoc with in-process namespace cache (platform-settings-cache.ts).

    EnvEffect
    PLATFORM_SETTINGS_DISABLE_DB=trueReads return defaults / null; writes throw — use for CI or env-only clones

    importPlatformSettingsFromEnv() seeds ai and branding from env + ring-config.json on first boot when DB rows are missing.

    ProcessConductor (superadmin)

    MethodPathNotes
    GET/api/admin/processesLists pipelines
    POST/api/admin/processes/[id]/runManual pipeline trigger
    GET/api/admin/processes/[id]/historyRun history

    Cron equivalents use /api/cron/* + CRON_SECRET — see ProcessConductor docs in Monitoring.

    Web3 desk (superadmin)

    MethodPathNotes
    GET/api/admin/web3/settingsOracle rate, desk config, audit log, gas reserve
    POST/api/admin/web3/settings{ "ringPerUsd": "..." }
    GET/api/admin/web3/gas-reserveSolana fee-payer balance

    Oracle persistence: features/wallet/services/ring-token-oracle.ts stores ringPerUsd and audit rows in platform_settings doc id web3 via the same db() API. When PLATFORM_SETTINGS_DISABLE_DB=true, reads fall back to RING_ORACLE_DEFAULT_RATE (or 100) and writes are blocked.

    Email AI-CRM (platform admin)

    Full route table: Email AI-CRM API — threads, drafts, tasks, contacts, GET /api/admin/email/analytics?range=7d.

    Maintenance (superadmin, use with care)

    MethodPathPurpose
    POST/api/admin/migrate-usersOne-off user migration helper — not for routine ops

    Analytics (not under /api/admin)

    MethodPathAuth
    GET/api/analytics/platform-statsPlatform admin
    GET/api/analytics/web-vitals?scope=platformPlatform admin
    GET/api/analytics/errorsPlatform admin

    UI: /admin/analytics → getPlatformAnalytics() (features/analytics/services/get-platform-analytics.ts).

    Example — change role

    1. 1

      Authenticate as admin in browser

      Sign in with an admin or superadmin account.

    2. 2

      PUT role

    3. 3

      Verify

      Re-fetch user or open Admin → Users; role is lowercase in users.data.role.

    Member-facing desk quotes; admin rate via Web3 desk above.

    Threads, drafts, tasks, analytics — separate admin email namespace.

    Platform analytics

    Dashboard at /admin/analytics — not a monolithic /api/admin/analytics route.

    Typical operator scenarios

    • Promote a member to confidential — admin UI → PUT /api/admin/users/{id}/role or legacy POST /api/admin/set-user-role.
    • Clear verification backlog — /admin/verification → POST /api/admin/verification/procedures/{n}/{action} (approve, reject, request-info, under-review).
    • Pause an abusive entity — moderation queue → POST /api/admin/entity-moderation/block with entityId + reason.
    • Rebrand clone colors — superadmin settings form → POST /api/admin/whitelabel/save (redirects to admin settings).
    • Set RING/USD oracle rate — Web3 desk → POST /api/admin/web3/settings with { "ringPerUsd": "..." }; persisted in platform_settings web3 namespace.

    Superadmin-only changes (AI keys, branding JSON, manual pipeline runs, RING oracle rate) affect every user — restrict superadmin role count on production clones.

    Admin manual verification
    Body: { "isVerified": true, ... }
    POST/api/admin/set-user-rolePlatform adminLegacy: { "uid", "role" }; blocks admin self-demotion

    Not implemented: GET /api/admin/users list/search — use Admin UI server loaders or DatabaseService in custom tooling.

    Moderation & verification

    MethodPathNotes
    GET/api/admin/entity-moderation{ items: EntityModerationQueueItem[] }
    POST/api/admin/entity-moderation/block{ entityId, reason }
    GET/api/admin/verification/queue{ success, queue }
    POST/api/admin/verification/procedures/[procedureNumber]/[action]approve | reject | request-info | under-review

    Store

    MethodPathBody
    POST/api/admin/orders/[id]/status{ "status": "processing" } — enum: new, paid, processing, shipped, completed, canceled

    Platform settings (superadmin)

    MethodPathNotes
    GET/api/admin/platform-settings?namespace=ai|brandingRead namespace
    PUT/api/admin/platform-settingsJSON body: { namespace, data, secrets? }
    POST/api/admin/whitelabel/saveForm POST → branding colors → redirect
    POST/api/admin/saveLegacy branding save (JSON redirect)

    Persistence (verified): features/admin/platform-settings/platform-settings-service.ts reads and writes the platform_settings collection through db() from @/lib/database — not a private pg.Pool. Namespaces ai and branding use readDoc / updateDoc / createDoc with in-process namespace cache (platform-settings-cache.ts).

    EnvEffect
    PLATFORM_SETTINGS_DISABLE_DB=trueReads return defaults / null; writes throw — use for CI or env-only clones

    importPlatformSettingsFromEnv() seeds ai and branding from env + ring-config.json on first boot when DB rows are missing.

    ProcessConductor (superadmin)

    MethodPathNotes
    GET/api/admin/processesLists pipelines
    POST/api/admin/processes/[id]/runManual pipeline trigger
    GET/api/admin/processes/[id]/historyRun history

    Cron equivalents use /api/cron/* + CRON_SECRET — see ProcessConductor docs in Monitoring.

    Web3 desk (superadmin)

    MethodPathNotes
    GET/api/admin/web3/settingsOracle rate, desk config, audit log, gas reserve
    POST/api/admin/web3/settings{ "ringPerUsd": "..." }
    GET/api/admin/web3/gas-reserveSolana fee-payer balance

    Oracle persistence: features/wallet/services/ring-token-oracle.ts stores ringPerUsd and audit rows in platform_settings doc id web3 via the same db() API. When PLATFORM_SETTINGS_DISABLE_DB=true, reads fall back to RING_ORACLE_DEFAULT_RATE (or 100) and writes are blocked.

    Email AI-CRM (platform admin)

    Full route table: Email AI-CRM API — threads, drafts, tasks, contacts, GET /api/admin/email/analytics?range=7d.

    Maintenance (superadmin, use with care)

    MethodPathPurpose
    POST/api/admin/migrate-usersOne-off user migration helper — not for routine ops

    Analytics (not under /api/admin)

    MethodPathAuth
    GET/api/analytics/platform-statsPlatform admin
    GET/api/analytics/web-vitals?scope=platformPlatform admin
    GET/api/analytics/errorsPlatform admin

    UI: /admin/analytics → getPlatformAnalytics() (features/analytics/services/get-platform-analytics.ts).

    Example — change role

    1. 1

      Authenticate as admin in browser

      Sign in with an admin or superadmin account.

    2. 2

      PUT role

    3. 3

      Verify

      Re-fetch user or open Admin → Users; role is lowercase in users.data.role.

    Member-facing desk quotes; admin rate via Web3 desk above.

    Threads, drafts, tasks, analytics — separate admin email namespace.

    Platform analytics

    Dashboard at /admin/analytics — not a monolithic /api/admin/analytics route.

    Typical operator scenarios

    • Promote a member to confidential — admin UI → PUT /api/admin/users/{id}/role or legacy POST /api/admin/set-user-role.
    • Clear verification backlog — /admin/verification → POST /api/admin/verification/procedures/{n}/{action} (approve, reject, request-info, under-review).
    • Pause an abusive entity — moderation queue → POST /api/admin/entity-moderation/block with entityId + reason.
    • Rebrand clone colors — superadmin settings form → POST /api/admin/whitelabel/save (redirects to admin settings).
    • Set RING/USD oracle rate — Web3 desk → POST /api/admin/web3/settings with { "ringPerUsd": "..." }; persisted in platform_settings web3 namespace.

    Superadmin-only changes (AI keys, branding JSON, manual pipeline runs, RING oracle rate) affect every user — restrict superadmin role count on production clones.

    Admin manual verification
    Body: { "isVerified": true, ... }
    POST/api/admin/set-user-rolePlatform adminLegacy: { "uid", "role" }; blocks admin self-demotion

    Not implemented: GET /api/admin/users list/search — use Admin UI server loaders or DatabaseService in custom tooling.

    Moderation & verification

    MethodPathNotes
    GET/api/admin/entity-moderation{ items: EntityModerationQueueItem[] }
    POST/api/admin/entity-moderation/block{ entityId, reason }
    GET/api/admin/verification/queue{ success, queue }
    POST/api/admin/verification/procedures/[procedureNumber]/[action]approve | reject | request-info | under-review

    Store

    MethodPathBody
    POST/api/admin/orders/[id]/status{ "status": "processing" } — enum: new, paid, processing, shipped, completed, canceled

    Platform settings (superadmin)

    MethodPathNotes
    GET/api/admin/platform-settings?namespace=ai|brandingRead namespace
    PUT/api/admin/platform-settingsJSON body: { namespace, data, secrets? }
    POST/api/admin/whitelabel/saveForm POST → branding colors → redirect
    POST/api/admin/saveLegacy branding save (JSON redirect)

    Persistence (verified): features/admin/platform-settings/platform-settings-service.ts reads and writes the platform_settings collection through db() from @/lib/database — not a private pg.Pool. Namespaces ai and branding use readDoc / updateDoc / createDoc with in-process namespace cache (platform-settings-cache.ts).

    EnvEffect
    PLATFORM_SETTINGS_DISABLE_DB=trueReads return defaults / null; writes throw — use for CI or env-only clones

    importPlatformSettingsFromEnv() seeds ai and branding from env + ring-config.json on first boot when DB rows are missing.

    ProcessConductor (superadmin)

    MethodPathNotes
    GET/api/admin/processesLists pipelines
    POST/api/admin/processes/[id]/runManual pipeline trigger
    GET/api/admin/processes/[id]/historyRun history

    Cron equivalents use /api/cron/* + CRON_SECRET — see ProcessConductor docs in Monitoring.

    Web3 desk (superadmin)

    MethodPathNotes
    GET/api/admin/web3/settingsOracle rate, desk config, audit log, gas reserve
    POST/api/admin/web3/settings{ "ringPerUsd": "..." }
    GET/api/admin/web3/gas-reserveSolana fee-payer balance

    Oracle persistence: features/wallet/services/ring-token-oracle.ts stores ringPerUsd and audit rows in platform_settings doc id web3 via the same db() API. When PLATFORM_SETTINGS_DISABLE_DB=true, reads fall back to RING_ORACLE_DEFAULT_RATE (or 100) and writes are blocked.

    Email AI-CRM (platform admin)

    Full route table: Email AI-CRM API — threads, drafts, tasks, contacts, GET /api/admin/email/analytics?range=7d.

    Maintenance (superadmin, use with care)

    MethodPathPurpose
    POST/api/admin/migrate-usersOne-off user migration helper — not for routine ops

    Analytics (not under /api/admin)

    MethodPathAuth
    GET/api/analytics/platform-statsPlatform admin
    GET/api/analytics/web-vitals?scope=platformPlatform admin
    GET/api/analytics/errorsPlatform admin

    UI: /admin/analytics → getPlatformAnalytics() (features/analytics/services/get-platform-analytics.ts).

    Example — change role

    1. 1

      Authenticate as admin in browser

      Sign in with an admin or superadmin account.

    2. 2

      PUT role

    3. 3

      Verify

      Re-fetch user or open Admin → Users; role is lowercase in users.data.role.

    Member-facing desk quotes; admin rate via Web3 desk above.