160 lines
5.0 KiB
Markdown
160 lines
5.0 KiB
Markdown
|
|
# Eventify Command Center - API & Database Specification
|
||
|
|
|
||
|
|
This document outlines the required API endpoints and Database schema to support the current features of the Eventify Command Center (Admin Panel).
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🏗 Database Schema
|
||
|
|
|
||
|
|
### 1. User Management (RBAC)
|
||
|
|
|
||
|
|
**`admin_users`** (Internal Staff)
|
||
|
|
| Column | Type | Description |
|
||
|
|
| :--- | :--- | :--- |
|
||
|
|
| `id` | UUID | Primary Key |
|
||
|
|
| `email` | VARCHAR | Unique email |
|
||
|
|
| `password_hash` | VARCHAR | Hashed password |
|
||
|
|
| `full_name` | VARCHAR | Display name |
|
||
|
|
| `role_id` | UUID | FK to `roles` |
|
||
|
|
| `status` | ENUM | 'Active', 'Inactive' |
|
||
|
|
| `last_active_at` | TIMESTAMP | Last login time |
|
||
|
|
|
||
|
|
**`roles`**
|
||
|
|
| Column | Type | Description |
|
||
|
|
| :--- | :--- | :--- |
|
||
|
|
| `id` | UUID | Primary Key |
|
||
|
|
| `name` | VARCHAR | e.g. "Super Admin", "Content Moderator" |
|
||
|
|
| `description` | TEXT | |
|
||
|
|
| `is_system` | BOOLEAN | If true, cannot be deleted |
|
||
|
|
|
||
|
|
**`permissions`**
|
||
|
|
| Column | Type | Description |
|
||
|
|
| :--- | :--- | :--- |
|
||
|
|
| `id` | VARCHAR | Primary Key (e.g. `manage_partners`) |
|
||
|
|
| `name` | VARCHAR | Human readable name |
|
||
|
|
| `group` | VARCHAR | e.g. "Finance", "Users" |
|
||
|
|
|
||
|
|
**`role_permissions`** (Junction Table)
|
||
|
|
| Column | Type | Description |
|
||
|
|
| :--- | :--- | :--- |
|
||
|
|
| `role_id` | UUID | FK to `roles` |
|
||
|
|
| `permission_id` | VARCHAR | FK to `permissions` |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2. Partner Management
|
||
|
|
|
||
|
|
**`partners`** (Organizations)
|
||
|
|
| Column | Type | Description |
|
||
|
|
| :--- | :--- | :--- |
|
||
|
|
| `id` | UUID | Primary Key |
|
||
|
|
| `name` | VARCHAR | Business Name |
|
||
|
|
| `type` | ENUM | 'Venue', 'Promoter', 'Sponsor', 'Vendor' |
|
||
|
|
| `status` | ENUM | 'Active', 'Invited', 'Suspended' |
|
||
|
|
| `logo_url` | VARCHAR | |
|
||
|
|
| `verification_status` | ENUM | 'Pending', 'Verified', 'Rejected' |
|
||
|
|
| `total_revenue` | DECIMAL | Cache field for performance |
|
||
|
|
| `open_balance` | DECIMAL | Amount owed to/by partner |
|
||
|
|
| `joined_at` | TIMESTAMP | |
|
||
|
|
|
||
|
|
**`partner_contacts`**
|
||
|
|
| Column | Type | Description |
|
||
|
|
| :--- | :--- | :--- |
|
||
|
|
| `id` | UUID | Primary Key |
|
||
|
|
| `partner_id` | UUID | FK to `partners` |
|
||
|
|
| `name` | VARCHAR | |
|
||
|
|
| `email` | VARCHAR | |
|
||
|
|
| `phone` | VARCHAR | |
|
||
|
|
| `is_primary` | BOOLEAN | |
|
||
|
|
|
||
|
|
**`partner_documents`** (KYC)
|
||
|
|
| Column | Type | Description |
|
||
|
|
| :--- | :--- | :--- |
|
||
|
|
| `id` | UUID | Primary Key |
|
||
|
|
| `partner_id` | UUID | FK to `partners` |
|
||
|
|
| `type` | ENUM | 'Company_Reg', 'PAN', 'Cheque', 'Other' |
|
||
|
|
| `file_url` | VARCHAR | S3/Blob URL |
|
||
|
|
| `status` | ENUM | 'Pending', 'Verified', 'Rejected' |
|
||
|
|
| `uploaded_at` | TIMESTAMP | |
|
||
|
|
| `verified_at` | TIMESTAMP | |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 3. End Users (B2C)
|
||
|
|
|
||
|
|
**`end_users`**
|
||
|
|
| Column | Type | Description |
|
||
|
|
| :--- | :--- | :--- |
|
||
|
|
| `id` | UUID | Primary Key |
|
||
|
|
| `email` | VARCHAR | |
|
||
|
|
| `phone` | VARCHAR | |
|
||
|
|
| `full_name` | VARCHAR | |
|
||
|
|
| `status` | ENUM | 'Active', 'Banned' |
|
||
|
|
| `total_spent` | DECIMAL | Lifetime value |
|
||
|
|
| `created_at` | TIMESTAMP | |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 4. Operations & Logs
|
||
|
|
|
||
|
|
**`audit_logs`**
|
||
|
|
| Column | Type | Description |
|
||
|
|
| :--- | :--- | :--- |
|
||
|
|
| `id` | UUID | Primary Key |
|
||
|
|
| `actor_id` | UUID | FK to `admin_users` |
|
||
|
|
| `action` | VARCHAR | e.g. "APPROVED_KYC" |
|
||
|
|
| `target_resource` | VARCHAR | e.g. "partner_123" |
|
||
|
|
| `details` | JSONB | Metadata about changes |
|
||
|
|
| `created_at` | TIMESTAMP | |
|
||
|
|
|
||
|
|
**`notifications`**
|
||
|
|
| Column | Type | Description |
|
||
|
|
| :--- | :--- | :--- |
|
||
|
|
| `id` | UUID | Primary Key |
|
||
|
|
| `recipient_id` | UUID | FK to `admin_users` |
|
||
|
|
| `type` | ENUM | 'Critical', 'Info', 'Success' |
|
||
|
|
| `title` | VARCHAR | |
|
||
|
|
| `message` | TEXT | |
|
||
|
|
| `is_read` | BOOLEAN | |
|
||
|
|
| `created_at` | TIMESTAMP | |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔌 API Endpoints
|
||
|
|
|
||
|
|
### Authentication
|
||
|
|
- `POST /api/v1/auth/login` - Admin login (returns JWT)
|
||
|
|
- `POST /api/v1/auth/logout` - Invalidate session
|
||
|
|
- `GET /api/v1/auth/me` - Get current admin profile & permissions
|
||
|
|
|
||
|
|
### Dashboard
|
||
|
|
- `GET /api/v1/dashboard/metrics` - Aggregate stats (revenue, active partners, etc.)
|
||
|
|
- `GET /api/v1/dashboard/revenue-chart` - Data for the main revenue graph
|
||
|
|
- `GET /api/v1/dashboard/activity` - Recent system activity feed
|
||
|
|
|
||
|
|
### Partner Management
|
||
|
|
- `GET /api/v1/partners` - List partners (Supports filtering by status, type, search)
|
||
|
|
- `POST /api/v1/partners` - Invite/Create new partner
|
||
|
|
- `GET /api/v1/partners/:id` - Get full partner profile
|
||
|
|
- `GET /api/v1/partners/:id/documents` - List KYC documents
|
||
|
|
- `PATCH /api/v1/partners/:id/status` - Suspend/Activate partner
|
||
|
|
- `POST /api/v1/partners/:id/kyc/review` - Approve/Reject specific documents
|
||
|
|
|
||
|
|
### User Management (Command Center)
|
||
|
|
- **Internal Team**
|
||
|
|
- `GET /api/v1/admin/users` - List internal staff
|
||
|
|
- `POST /api/v1/admin/users` - Create staff account
|
||
|
|
- `PATCH /api/v1/admin/users/:id/role` - Assign role
|
||
|
|
- `DELETE /api/v1/admin/users/:id` - Revoke access
|
||
|
|
- **Roles & Permissions**
|
||
|
|
- `GET /api/v1/admin/roles` - List available roles
|
||
|
|
- `PUT /api/v1/admin/roles/:id/permissions` - Update permission matrix for a role
|
||
|
|
- **End Users**
|
||
|
|
- `GET /api/v1/users` - List B2C users
|
||
|
|
- `POST /api/v1/users/:id/ban` - Ban a user
|
||
|
|
- `POST /api/v1/users/:id/reset-2fa` - Reset 2FA
|
||
|
|
|
||
|
|
### Financials (Placeholder)
|
||
|
|
- `GET /api/v1/financials/entries` - List ledger entries
|
||
|
|
- `POST /api/v1/financials/payouts` - Trigger batch payouts
|