跳到主要内容
Skip to content

Table of Contents


File Upload

Overview

FastapiAdmin uses a unified upload architecture. All file uploads are handled through a single interface, supporting classified storage for different file types.

Upload Types

TypePath ParameterStorage DirectoryUsage
fileupload_type=fileupload/file/YYYY/MM/DD/General file upload (default)
avatarupload_type=avatarupload/avatar/YYYY/MM/DD/User avatar upload
paramupload_type=paramupload/param/YYYY/MM/DD/Parameter config file upload
resourceupload_type=resourceupload/resource/[target_path]/YYYY/MM/DD/Monitor resource files, supports custom directory

Unified Upload Interface

Endpoint: /api/v1/common/file/upload

Method: POST

Content-Type: multipart/form-data

Permission: module_common:file:upload

Request Parameters:

ParameterTypeLocationRequiredDescription
fileUploadFileBodyYesFile to upload
upload_typestringQueryNoUpload type, default file
target_pathstringFormNoTarget directory path, only for resource type

Response Example:

json
{
  "code": 0,
  "msg": "File uploaded successfully",
  "data": {
    "file_path": "/app/uploads/resource/images/2024/01/15/abc123.png",
    "file_name": "abc123.png",
    "origin_name": "original-file.png",
    "file_url": "http://localhost:8000/app/uploads/resource/images/2024/01/15/abc123.png"
  }
}

Resource Upload Interface

Endpoint: /api/v1/monitor/resource/upload

Method: POST

Content-Type: multipart/form-data

Permission: module_monitor:resource:upload

Request Parameters:

ParameterTypeLocationRequiredDescription
fileUploadFileBodyYesFile to upload
target_pathstringFormNoTarget directory path

Note: This interface is a shortcut to the unified upload interface, internally calls the unified upload with resource type.

Frontend Examples

General File Upload

typescript
import { request } from "@utils";

async function uploadFile(file: File) {
  const formData = new FormData();
  formData.append("file", file);

  const response = await request<ApiResponse<UploadFilePath>>({
    url: "/common/file/upload",
    method: "post",
    data: formData,
    headers: { "Content-Type": "multipart/form-data" },
  });

  return response.data.data;
}

Avatar Upload

typescript
import { UserAPI } from "@api/module_system/user";

async function uploadAvatar(file: File) {
  const formData = new FormData();
  formData.append("file", file);

  const response = await UserAPI.uploadCurrentUserAvatar(formData);
  return response.data.data;
}

Parameter Config Upload

typescript
import { uploadFile } from "@api/module_system/params";

async function uploadParamConfig(file: File) {
  const formData = new FormData();
  formData.append("file", file);

  const response = await uploadFile(formData);
  return response.data.data;
}

Resource File Upload (with Directory)

typescript
import { ResourceAPI } from "@api/module_monitor/resource";

async function uploadResource(file: File, targetPath: string) {
  const formData = new FormData();
  formData.append("file", file);
  formData.append("target_path", targetPath);

  const response = await ResourceAPI.uploadFile(formData);
  return response.data.data;
}

// Example: Upload to images directory
await uploadResource(file, "images");

// Example: Upload to nested/path directory
await uploadResource(file, "nested/path");

Security Features

  1. Filename Sanitization: Automatically sanitizes dangerous characters from filenames
  2. Path Traversal Protection: Detects and blocks path traversal attacks like ../
  3. File Type Validation: Dual validation based on MIME type and extension
  4. File Size Limit: Configurable single file size limit
  5. Content Detection: Validates file authenticity through file header bytes

Directory Structure

upload/
├── file/           # General files
│   └── YYYY/MM/DD/
├── avatar/         # Avatars
│   └── YYYY/MM/DD/
├── param/          # Parameter configs
│   └── YYYY/MM/DD/
└── resource/       # Monitor resources
    ├── images/
    ├── documents/
    └── YYYY/MM/DD/

Resource Management

Overview

The resource management module provides complete management capabilities for the upload/resource directory, including file browsing, upload, download, delete, move, copy, rename, and directory creation.

Function List

FunctionMethodEndpointDescription
Browse DirectorylistResourceGET /api/v1/monitor/resource/listBrowse specified directory
Upload FileuploadFilePOST /api/v1/monitor/resource/uploadUpload to specified directory
Download FiledownloadFileGET /api/v1/monitor/resource/downloadDownload file
Delete ResourcedeleteResourceDELETE /api/v1/monitor/resource/deleteDelete file or directory
Move ResourcemoveResourcePOST /api/v1/monitor/resource/moveMove file or directory
Copy ResourcecopyResourcePOST /api/v1/monitor/resource/copyCopy file or directory
Rename ResourcerenameResourcePOST /api/v1/monitor/resource/renameRename file or directory
Create DirectorycreateDirectoryPOST /api/v1/monitor/resource/create-dirCreate new directory
Export ListexportResourcePOST /api/v1/monitor/resource/exportExport resource list

Directory Browsing

Endpoint: GET /api/v1/monitor/resource/list

Permission: module_monitor:resource:list

Query Parameters:

ParameterTypeRequiredDescription
pathstringNoDirectory path, default root
include_hiddenbooleanNoInclude hidden files, default false
page_nointegerNoPage number, default 1
page_sizeintegerNoPage size, default 20

Response Example:

json
{
  "code": 0,
  "msg": "Directory listed successfully",
  "data": {
    "path": "/upload/resource",
    "name": "resource",
    "items": [
      {
        "name": "images",
        "is_file": false,
        "is_dir": true,
        "size": null,
        "created_time": "2024-01-15T10:30:00",
        "modified_time": "2024-01-15T10:30:00",
        "is_hidden": false
      },
      {
        "name": "logo.svg",
        "is_file": true,
        "is_dir": false,
        "size": 12345,
        "created_time": "2024-01-15T10:30:00",
        "modified_time": "2024-01-15T10:30:00",
        "is_hidden": false,
        "file_url": "http://localhost:8000/app/uploads/resource/logo.svg"
      }
    ],
    "total_files": 10,
    "total_dirs": 5,
    "total_size": 1024000
  }
}

Delete Resource

Endpoint: DELETE /api/v1/monitor/resource/delete

Permission: module_monitor:resource:delete

Request Body: string[] - File path array

Example:

json
["upload/resource/images/logo.svg", "upload/resource/documents"]

Move Resource

Endpoint: POST /api/v1/monitor/resource/move

Permission: module_monitor:resource:move

Request Body:

json
{
  "source_path": "upload/resource/images/logo.svg",
  "target_path": "upload/resource/backup/logo.svg",
  "overwrite": false
}

Copy Resource

Endpoint: POST /api/v1/monitor/resource/copy

Permission: module_monitor:resource:copy

Request Body:

json
{
  "source_path": "upload/resource/images/logo.svg",
  "target_path": "upload/resource/images/logo_copy.svg",
  "overwrite": false
}

Rename Resource

Endpoint: POST /api/v1/monitor/resource/rename

Permission: module_monitor:resource:rename

Request Body:

json
{
  "old_path": "upload/resource/images/logo.svg",
  "new_name": "logo_new.svg"
}

Create Directory

Endpoint: POST /api/v1/monitor/resource/create-dir

Permission: module_monitor:resource:create-dir

Request Body:

json
{
  "parent_path": "upload/resource/images",
  "dir_name": "screenshots"
}

Health Check

Overview

Health check endpoints provide real-time monitoring of application status, supporting three-level health checks.

Check Types

TypeEndpointUsageDependencies
Basic CheckGET /healthLoad balancer probeNone
Readiness CheckGET /health/readyK8s readinessProbeDatabase, Redis
Liveness CheckGET /health/liveK8s livenessProbeNone

Basic Health Check

Endpoint: GET /api/v1/common/health

Permission: None

Response Example:

json
{
  "code": 0,
  "msg": "Healthy",
  "data": {
    "status": "ok",
    "timestamp": "2024-01-15T10:30:00",
    "version": "1.0.0"
  }
}

Readiness Check

Endpoint: GET /api/v1/common/health/ready

Permission: None

Description: Checks if all dependencies (database, Redis) are ready, used to determine if the application can receive traffic.

Response Example:

json
{
  "code": 0,
  "msg": "Dependencies ready",
  "data": {
    "status": "ready",
    "timestamp": "2024-01-15T10:30:00",
    "version": "1.0.0",
    "uptime_seconds": 3600.5,
    "dependencies": {
      "database": {
        "status": "up",
        "latency_ms": 5.23
      },
      "redis": {
        "status": "up",
        "latency_ms": 1.12
      }
    },
    "disk_usage": {
      "total": 500000000000,
      "used": 250000000000,
      "free": 250000000000,
      "percent": 50.0
    }
  }
}

Failure Response (HTTP 503):

json
{
  "code": 503,
  "msg": "Dependencies not ready",
  "data": {
    "status": "not_ready",
    "timestamp": "2024-01-15T10:30:00",
    "version": "1.0.0",
    "uptime_seconds": 3600.5,
    "dependencies": {
      "database": {
        "status": "down",
        "latency_ms": null
      },
      "redis": {
        "status": "up",
        "latency_ms": 1.12
      }
    },
    "disk_usage": {
      "total": 500000000000,
      "used": 250000000000,
      "free": 250000000000,
      "percent": 50.0
    }
  }
}

Liveness Check

Endpoint: GET /api/v1/common/health/live

Permission: None

Response Example:

json
{
  "code": 0,
  "msg": "Alive",
  "data": {
    "status": "alive",
    "timestamp": "2024-01-15T10:30:00",
    "uptime_seconds": 3600.5
  }
}

Metrics

Overview

FastapiAdmin integrates Prometheus metrics collection, exposing HTTP request metrics through the /metrics endpoint.

Metrics Endpoint

Endpoint: GET /api/v1/common/metrics

Format: Prometheus text format

Available Metrics

Metric NameTypeDescription
http_requests_totalCounterTotal HTTP requests
http_request_duration_secondsHistogramHTTP request latency (seconds)
http_request_size_bytesHistogramHTTP request size (bytes)
http_response_size_bytesHistogramHTTP response size (bytes)
http_requests_in_progressGaugeNumber of in-progress HTTP requests

Configuration

Metrics collection is automatically configured in app/scripts/init_app.py, no manual configuration required.

Default Excluded Endpoints:

  • /metrics - Metrics endpoint itself
  • /health - Health check
  • /health/live - Liveness check
  • /health/ready - Readiness check
  • /docs - API docs
  • /redoc - ReDoc
  • /openapi.json - OpenAPI spec
  • /static/* - Static files
  • /favicon.ico - Favicon

Grafana Configuration Example

yaml
# Prometheus datasource config
apiVersion: 1
datasources:
  - name: Prometheus
    type: prometheus
    url: http://prometheus:9090
    access: proxy

# HTTP request rate panel
- title: HTTP Request Rate
  type: graph
  targets:
    - expr: rate(http_requests_total[5m])
      legendFormat: "{{handler}} - {{method}}"

# Request latency panel
- title: HTTP Request Latency
  type: graph
  targets:
    - expr: histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))
      legendFormat: "p95 - {{handler}}"

Cache Management

Overview

Cache management module provides Redis cache monitoring and management, including cache information query, cache key management, and cache clearing.

Core Endpoints

FunctionMethodEndpointPermission
Get Cache Monitor InfogetCacheInfoGET /api/v1/monitor/cache/infomodule_monitor:cache:query
Get Cache Name ListgetCacheNamesGET /api/v1/monitor/cache/get/namesmodule_monitor:cache:query
Get Cache Key ListgetCacheKeysGET /api/v1/monitor/cache/get/keys/{cache_name}module_monitor:cache:query
Get Cache ValuegetCacheValueGET /api/v1/monitor/cache/get/value/{cache_name}/{cache_key}module_monitor:cache:query
Clear Cache By NameclearCacheByNameDELETE /api/v1/monitor/cache/delete/name/{cache_name}module_monitor:cache:delete
Clear Cache By KeyclearCacheByKeyDELETE /api/v1/monitor/cache/delete/key/{cache_key}module_monitor:cache:delete
Clear All CacheclearAllCacheDELETE /api/v1/monitor/cache/delete/allmodule_monitor:cache:delete

Response Data Structure

typescript
interface CacheMonitorSchema {
  command_stats: Array<{
    name: string;    // Command name
    value: string;   // Call count
  }>;
  db_size: number;   // Total keys in Redis
  info: object;      // Redis server info
}

interface CacheInfoSchema {
  cache_key: string;      // Cache key
  cache_name: string;     // Cache name
  cache_value: any;       // Cache value
  remark: string | null; // Remark
}

Frontend Examples

typescript
// Get cache monitor info
const cacheInfo = await CacheAPI.getCacheInfo();

// Get cache name list
const cacheNames = await CacheAPI.getCacheNames();

// Get keys for specified cache name
const keys = await CacheAPI.getCacheKeys('captcha');

// Clear all cache
await CacheAPI.clearAllCache();

Online User Management

Overview

Online user management module provides monitoring and management of currently online users, supporting viewing online user list, forced logout, and clearing all online users.

Core Endpoints

FunctionMethodEndpointPermission
Get Online User ListgetOnlineListGET /api/v1/monitor/online/listmodule_monitor:online:query
Force OfflineforceOfflineDELETE /api/v1/monitor/online/deletemodule_monitor:online:delete
Clear All OnlineclearAllOnlineDELETE /api/v1/monitor/online/clearmodule_monitor:online:delete

Frontend Examples

typescript
// Get online user list
const onlineUsers = await OnlineAPI.getOnlineList({ page_no: 1, page_size: 10 });

// Force offline specified user
await OnlineAPI.forceOffline('session-id-xxx');

// Clear all online users (use with caution)
await OnlineAPI.clearAllOnline();

Server Monitoring

Overview

Server monitoring module provides real-time monitoring of server system resources, including CPU, memory, disk, network usage.

Core Endpoints

FunctionMethodEndpointPermission
Get Server InfogetServerInfoGET /api/v1/monitor/server/infomodule_monitor:server:query

Response Data Structure

typescript
interface ServerMonitorSchema {
  cpu: {
    percent: number;      // CPU usage (%)
    cores: number;       // CPU cores
  };
  memory: {
    total: number;       // Total memory (bytes)
    used: number;        // Used memory (bytes)
    free: number;        // Free memory (bytes)
    percent: number;     // Memory usage (%)
  };
  disk: {
    total: number;        // Total disk (bytes)
    used: number;         // Used (bytes)
    free: number;         // Free (bytes)
    percent: number;      // Usage (%)
  };
  network: {
    bytes_sent: number;   // Bytes sent
    bytes_recv: number;   // Bytes received
  };
  uptime: number;          // Server uptime (seconds)
}

Authentication System

Overview

FastapiAdmin provides a complete user authentication system, including user login, token management, captcha, and tenant switching.

Login Flow

  1. Get Captcha (optional): Call /captcha to get captcha image
  2. User Login: Call /login with username, password, and captcha
  3. Get Tenant List: After successful login, return user's associated tenants
  4. Select Tenant: Call /select-tenant to select working tenant
  5. Get User Info: Call /current/info to get current user details

Core Endpoints

FunctionMethodEndpointDescription
Get CaptchagetCaptchaGET /api/v1/system/auth/captchaGet captcha image
User LoginloginPOST /api/v1/system/auth/loginUser authentication
LogoutlogoutPOST /api/v1/system/auth/logoutClear token
Refresh TokenrefreshPOST /api/v1/system/auth/refreshRefresh access token
Get Tenant ListgetTenantsGET /api/v1/system/auth/tenantsGet user's associated tenants
Select TenantselectTenantPOST /api/v1/system/auth/select-tenantSwitch tenant context
Get User InfogetCurrentUserInfoGET /api/v1/system/user/current/infoGet current user details

Frontend Examples

typescript
import { AuthAPI } from "@api/module_system/auth";
import { UserAPI } from "@api/module_system/user";

// 1. Get captcha
async function getCaptcha() {
  const response = await AuthAPI.getCaptcha();
  return response.data.data;
}

// 2. User login
async function login(username: string, password: string, captchaKey: string, captcha: string) {
  const response = await AuthAPI.login({
    username,
    password,
    captcha_key: captchaKey,
    captcha: captcha,
    login_type: "password",
  });
  return response.data.data;
}

// 3. Select tenant
async function selectTenant(tenantId: number) {
  const response = await AuthAPI.selectTenant({ tenant_id: tenantId });
  return response.data.data;
}

// 4. Get user info
async function getUserInfo() {
  const response = await UserAPI.getCurrentUserInfo();
  return response.data.data;
}

Token Management

  • Access Token: Validity configured by ACCESS_TOKEN_EXPIRE_MINUTES, used for API authentication
  • Refresh Token: Longer validity, used to refresh access token
  • Session ID: Uniquely identifies user session, stored in Redis

Plugin Market

Overview

FastapiAdmin provides a plugin market feature, supporting plugin installation, uninstallation, enable/disable operations.

Core Endpoints

FunctionMethodEndpointPermissionDescription
Plugin MarketplacemarketplaceGET /api/v1/system/plugin/marketplaceTenant UserGet available plugins
My PluginsmyPluginsGET /api/v1/system/plugin/myTenant UserGet installed plugins
Install PlugininstallPOST /api/v1/system/plugin/installTenant UserInstall plugin
Uninstall PluginuninstallPOST /api/v1/system/plugin/uninstallTenant UserUninstall plugin
Toggle StatustogglePOST /api/v1/system/plugin/toggleTenant UserEnable/disable plugin

Plugin Status

Status CodeMarketplace MeaningMy Plugins Meaning
0Plugin availableEnabled
1Plugin unavailableDisabled

Frontend Examples

typescript
import PluginAPI, { type PluginTable } from "@api/module_application/plugin";

// Get marketplace list
async function getMarketplace(category?: string) {
  const response = await PluginAPI.marketplace(
    { page_no: 1, page_size: 10 },
    category
  );
  return response.data.data;
}

// Install plugin
async function installPlugin(pluginId: number) {
  await PluginAPI.install(pluginId);
}

// Toggle plugin status
async function togglePlugin(pluginId: number) {
  await PluginAPI.toggle(pluginId);
}

Scheduled Tasks

Overview

FastapiAdmin provides APScheduler-based scheduled task management, supporting task creation, modification, deletion, pause, resume, and immediate execution.

Core Endpoints

FunctionMethodEndpointDescription
Get Scheduler StatusgetSchedulerStatusGET /api/v1/task/cronjob/job/scheduler/statusGet scheduler running status
Get Task ListgetSchedulerJobsGET /api/v1/task/cronjob/job/scheduler/jobsGet all tasks
Start SchedulerstartSchedulerPOST /api/v1/task/cronjob/job/scheduler/startStart scheduler
Pause SchedulerpauseSchedulerPOST /api/v1/task/cronjob/job/scheduler/pausePause scheduler
Resume SchedulerresumeSchedulerPOST /api/v1/task/cronjob/job/scheduler/resumeResume scheduler
Shutdown SchedulershutdownSchedulerPOST /api/v1/task/cronjob/job/scheduler/shutdownShutdown scheduler
Pause TaskpauseJobPOST /api/v1/task/cronjob/job/task/pause/{jobId}Pause specified task
Resume TaskresumeJobPOST /api/v1/task/cronjob/job/task/resume/{jobId}Resume specified task
Run NowrunJobNowPOST /api/v1/task/cronjob/job/task/run/{jobId}Execute task immediately
Remove TaskremoveJobDELETE /api/v1/task/cronjob/job/task/remove/{jobId}Remove task
Get LogsgetJobLogListGET /api/v1/task/cronjob/job/log/listGet task execution logs
Sync JobssyncJobsToDbPOST /api/v1/task/cronjob/job/scheduler/syncSync tasks to database

Scheduler Status

typescript
interface SchedulerStatus {
  status: string;        // running, paused, shutdown
  is_running: boolean;   // Is running
  job_count: number;     // Task count
}

Frontend Examples

typescript
import JobAPI from "@api/module_task/cronjob/job";

// Get scheduler status
async function getStatus() {
  const response = await JobAPI.getSchedulerStatus();
  return response.data.data;
}

// Start scheduler
async function startScheduler() {
  await JobAPI.startScheduler();
}

// Pause task
async function pauseTask(jobId: string) {
  await JobAPI.pauseJob(jobId);
}

// Run task immediately
async function runNow(jobId: string) {
  await JobAPI.runJobNow(jobId);
}

AI Chat

Overview

FastapiAdmin integrates AI chat functionality, supporting session creation, message sending, and history retrieval.

Core Endpoints

FunctionMethodEndpointDescription
Session ListgetSessionListGET /api/v1/ai/chat/listGet paginated session list
Create SessioncreateSessionPOST /api/v1/ai/chat/createCreate new session
Update SessionupdateSessionPUT /api/v1/ai/chat/update/{id}Update session title
Delete SessiondeleteSessionDELETE /api/v1/ai/chat/deleteDelete session
AI ChatchatPOST /api/v1/ai/chat/ai-chatSend message and get AI reply
Session DetailgetSessionDetailGET /api/v1/ai/chat/detail/{sessionId}Get session details and messages

Data Structure

typescript
interface ChatSession {
  session_id: string;
  id: string;
  title: string | null;
  agent_id: string | null;
  team_id: string | null;
  workflow_id: string | null;
  created_time: string | null;
  updated_time: string | null;
}

interface ChatMessage {
  id: string;
  session_id: string;
  role: string;           // user, assistant
  content: string;
  created_time: string;
}

Frontend Examples

typescript
import ChatAPI from "@api/module_ai/chat";

// Get session list
async function getSessions() {
  const response = await ChatAPI.getSessionList({ page_no: 1, page_size: 10 });
  return response.data.data;
}

// Create session
async function createSession() {
  const response = await ChatAPI.createSession({ title: "New Chat" });
  return response.data.data;
}

// Send message
async function sendMessage(sessionId: string, content: string) {
  const response = await ChatAPI.chat({
    session_id: sessionId,
    message: content,
  });
  return response.data.data;
}

User Management

Overview

User management module provides complete user CRUD operations, including user creation, query, update, deletion, password reset, status management, role assignment, and avatar upload.

Core Endpoints

FunctionMethodEndpointPermissionDescription
User ListlistUserGET /api/v1/system/user/listmodule_system:user:queryGet paginated user list
User DetaildetailUserGET /api/v1/system/user/detail/{id}module_system:user:detailGet user details
Create UsercreateUserPOST /api/v1/system/user/createmodule_system:user:createCreate new user
Update UserupdateUserPUT /api/v1/system/user/update/{id}module_system:user:updateUpdate user
Delete UserdeleteUserDELETE /api/v1/system/user/deletemodule_system:user:deleteDelete users
Reset PasswordresetPasswordPUT /api/v1/system/user/password/reset/{id}module_system:user:updateReset user password
Toggle StatustoggleStatusPUT /api/v1/system/user/status/{id}module_system:user:updateEnable/disable user
Assign RolesassignRolesPUT /api/v1/system/user/roles/{id}module_system:user:updateAssign roles to user
Upload AvataruploadAvatarPOST /api/v1/system/user/avatar/uploadLogin UserUpload user avatar
Get Current UsergetCurrentUserInfoGET /api/v1/system/user/current/infoLogin UserGet current user info
Update Current UserupdateCurrentUserInfoPUT /api/v1/system/user/current/updateLogin UserUpdate current user info
Change PasswordchangePasswordPUT /api/v1/system/user/current/passwordLogin UserChange own password

Frontend Examples

typescript
import UserAPI from "@api/module_system/user";

// Get user list
async function getUsers() {
  const response = await UserAPI.listUser({
    page_no: 1,
    page_size: 10,
    username: "admin",
  });
  return response.data.data;
}

// Create user
async function createUser() {
  const response = await UserAPI.createUser({
    username: "newuser",
    nickname: "New User",
    email: "newuser@example.com",
    phone: "13800138000",
    dept_id: 1,
    position_ids: [1, 2],
    role_ids: [1],
    password: "password123",
  });
  return response.data.data;
}

// Upload avatar
async function uploadAvatar(file: File) {
  const formData = new FormData();
  formData.append("file", file);
  const response = await UserAPI.uploadCurrentUserAvatar(formData);
  return response.data.data;
}

Role Management

Overview

Role management module provides role CRUD operations, supporting role creation, permission configuration, status management.

Core Endpoints

FunctionMethodEndpointPermissionDescription
Role ListlistRoleGET /api/v1/system/role/listmodule_system:role:queryGet paginated role list
Role DetaildetailRoleGET /api/v1/system/role/detail/{id}module_system:role:detailGet role details
Create RolecreateRolePOST /api/v1/system/role/createmodule_system:role:createCreate new role
Update RoleupdateRolePUT /api/v1/system/role/update/{id}module_system:role:updateUpdate role
Delete RoledeleteRoleDELETE /api/v1/system/role/deletemodule_system:role:deleteDelete roles
Toggle StatustoggleStatusPUT /api/v1/system/role/status/{id}module_system:role:updateEnable/disable role
Get Role MenugetRoleMenuGET /api/v1/system/role/{id}/menumodule_system:role:queryGet role's menu permissions
Set Role MenusetRoleMenuPUT /api/v1/system/role/{id}/menumodule_system:role:updateSet role's menu permissions
Get Role Data ScopegetDataScopeGET /api/v1/system/role/{id}/data_scopemodule_system:role:queryGet role's data scope
Set Role Data ScopesetDataScopePUT /api/v1/system/role/{id}/data_scopemodule_system:role:updateSet role's data scope

Frontend Examples

typescript
import RoleAPI from "@api/module_system/role";

// Get role list
async function getRoles() {
  const response = await RoleAPI.listRole({ page_no: 1, page_size: 10 });
  return response.data.data;
}

// Create role
async function createRole() {
  const response = await RoleAPI.createRole({
    name: "Admin",
    code: "admin",
    sort: 1,
    data_scope: "custom",
    dept_ids: [1, 2, 3],
    remark: "Administrator role",
  });
  return response.data.data;
}

// Set role menu permissions
async function setMenus(roleId: number, menuIds: number[]) {
  await RoleAPI.setRoleMenu(roleId, { menu_ids: menuIds });
}

Department Management

Overview

Department management module provides department tree operations, supporting department creation, query, update, deletion, and status management.

Core Endpoints

FunctionMethodEndpointPermissionDescription
Department TreetreeDepartmentGET /api/v1/system/dept/treemodule_system:dept:queryGet department tree
Department ListlistDepartmentGET /api/v1/system/dept/listmodule_system:dept:queryGet department list
Department DetaildetailDepartmentGET /api/v1/system/dept/detail/{id}module_system:dept:detailGet department details
Create DepartmentcreateDepartmentPOST /api/v1/system/dept/createmodule_system:dept:createCreate new department
Update DepartmentupdateDepartmentPUT /api/v1/system/dept/update/{id}module_system:dept:updateUpdate department
Delete DepartmentdeleteDepartmentDELETE /api/v1/system/dept/deletemodule_system:dept:deleteDelete departments
Toggle StatustoggleStatusPUT /api/v1/system/dept/status/{id}module_system:dept:updateEnable/disable department

Department Tree Response Example

json
{
  "code": 0,
  "msg": "success",
  "data": [
    {
      "id": 1,
      "name": "Headquarters",
      "parent_id": 0,
      "sort": 1,
      "leader": "John Doe",
      "phone": "13800138000",
      "email": "john@company.com",
      "status": "0",
      "children": [
        {
          "id": 2,
          "name": "Technology Department",
          "parent_id": 1,
          "sort": 1,
          "children": []
        }
      ]
    }
  ]
}

Frontend Examples

typescript
import DeptAPI from "@api/module_system/dept";

// Get department tree
async function getDeptTree() {
  const response = await DeptAPI.treeDepartment({});
  return response.data.data;
}

// Create department
async function createDept() {
  const response = await DeptAPI.createDepartment({
    name: "New Department",
    parent_id: 1,
    sort: 1,
    leader: "Jane Doe",
    phone: "13900139000",
    email: "jane@company.com",
  });
  return response.data.data;
}

Overview

Menu management module provides menu CRUD operations, supporting menu creation, permission configuration, and status management.

TypeValueDescription
1DirectoryDirectory
2MenuMenu
3ButtonButton
4External LinkExternal Link

Core Endpoints

FunctionMethodEndpointPermissionDescription
Menu TreegetMenuTreeGET /api/v1/system/menu/treemodule_system:menu:queryGet menu tree
Menu ListlistMenuGET /api/v1/system/menu/listmodule_system:menu:queryGet menu list
Menu DetaildetailMenuGET /api/v1/system/menu/detail/{id}module_system:menu:detailGet menu details
Create MenucreateMenuPOST /api/v1/system/menu/createmodule_system:menu:createCreate new menu
Update MenuupdateMenuPUT /api/v1/system/menu/update/{id}module_system:menu:updateUpdate menu
Delete MenudeleteMenuDELETE /api/v1/system/menu/deletemodule_system:menu:deleteDelete menus
Toggle StatustoggleStatusPUT /api/v1/system/menu/status/{id}module_system:menu:updateEnable/disable menu

Frontend Examples

typescript
import MenuAPI from "@api/module_system/menu";

// Get menu tree
const menuTree = await MenuAPI.getMenuTree({});

// Create menu
await MenuAPI.createMenu({
  name: 'System Management',
  path: '/system',
  component: 'Layout',
  type: 1,
  parent_id: 0,
  order: 1,
  status: '0',
  icon: 'system'
});

Dictionary Management

Overview

Dictionary management module provides system dictionary type and data management, supporting dictionary CRUD and cache synchronization.

Core Endpoints

Dictionary Type

FunctionMethodEndpointPermission
Get Dictionary Type ListlistDictTypeGET /api/v1/system/dict/type/listmodule_system:dict_type:query
Get Dictionary Type DetaildetailDictTypeGET /api/v1/system/dict/type/detail/{id}module_system:dict_type:detail
Create Dictionary TypecreateDictTypePOST /api/v1/system/dict/type/createmodule_system:dict_type:create
Update Dictionary TypeupdateDictTypePUT /api/v1/system/dict/type/update/{id}module_system:dict_type:update
Delete Dictionary TypedeleteDictTypeDELETE /api/v1/system/dict/type/deletemodule_system:dict_type:delete

Dictionary Data

FunctionMethodEndpointPermission
Get Dictionary Data ListlistDictDataGET /api/v1/system/dict/data/listmodule_system:dict_data:query
Get Dictionary Data DetaildetailDictDataGET /api/v1/system/dict/data/detail/{id}module_system:dict_data:detail
Create Dictionary DatacreateDictDataPOST /api/v1/system/dict/data/createmodule_system:dict_data:create
Update Dictionary DataupdateDictDataPUT /api/v1/system/dict/data/update/{id}module_system:dict_data:update
Delete Dictionary DatadeleteDictDataDELETE /api/v1/system/dict/data/deletemodule_system:dict_data:delete
Get Dictionary Data By TypegetDictDataByTypeGET /api/v1/system/dict/data/info/{dict_type}Public

Frontend Examples

typescript
// Get dictionary type list
const dictTypes = await DictAPI.listDictType({ page_no: 1, page_size: 10 });

// Get dictionary data by type (for dropdown selections)
const statusOptions = await DictAPI.getDictDataByType('sys_user_status');

Log Management

Overview

Log management module provides operation log query, detail viewing, and export functionality.

Core Endpoints

FunctionMethodEndpointPermission
Get Log ListlistLogGET /api/v1/system/log/listmodule_system:log:query
Get Log DetaildetailLogGET /api/v1/system/log/detail/{id}module_system:log:detail
Delete LogdeleteLogDELETE /api/v1/system/log/deletemodule_system:log:delete
Export LogexportLogPOST /api/v1/system/log/exportmodule_system:log:export

Frontend Examples

typescript
// Query logs
const logs = await LogAPI.listLog({
  page_no: 1,
  page_size: 20,
  start_time: '2024-01-01',
  end_time: '2024-01-31'
});

// Export logs
const response = await LogAPI.exportLog({
  start_time: '2024-01-01',
  end_time: '2024-01-31'
});

Notice Management

Overview

Notice management module provides announcement management, supporting announcement creation, query, update, deletion, and status management.

Core Endpoints

FunctionMethodEndpointPermission
Get Notice ListlistNoticeGET /api/v1/system/notice/listmodule_system:notice:query
Get Notice DetaildetailNoticeGET /api/v1/system/notice/detail/{id}module_system:notice:detail
Create NoticecreateNoticePOST /api/v1/system/notice/createmodule_system:notice:create
Update NoticeupdateNoticePUT /api/v1/system/notice/update/{id}module_system:notice:update
Delete NoticedeleteNoticeDELETE /api/v1/system/notice/deletemodule_system:notice:delete
Get Available NoticesgetAvailableNoticeGET /api/v1/system/notice/availableLogin User
Get Notification PanelgetNotificationPanelGET /api/v1/system/notice/panelLogin User

Frontend Examples

typescript
// Get available notices (for homepage display)
const notices = await NoticeAPI.getAvailableNotice();

// Get notification panel data (for bell icon)
const panelData = await NoticeAPI.getNotificationPanel();

Parameter Configuration

Overview

Parameter configuration module provides system parameter management, supporting parameter CRUD and cache synchronization.

Core Endpoints

FunctionMethodEndpointPermission
Get Parameter ListlistParamsGET /api/v1/system/param/listmodule_system:param:query
Get Parameter DetaildetailParamsGET /api/v1/system/param/detail/{id}module_system:param:detail
Get Parameter By KeygetParamsByKeyGET /api/v1/system/param/key/{config_key}module_system:param:query
Get Parameter ValuegetParamsValueGET /api/v1/system/param/value/{config_key}module_system:param:query
Create ParametercreateParamsPOST /api/v1/system/param/createmodule_system:param:create
Update ParameterupdateParamsPUT /api/v1/system/param/update/{id}module_system:param:update
Delete ParameterdeleteParamsDELETE /api/v1/system/param/deletemodule_system:param:delete
Get Init ParametersgetInitParamsGET /api/v1/system/param/infoPublic

Frontend Examples

typescript
// Get init parameters (for system startup)
const configParams = await ParamsAPI.getInitParams();

// Get parameter value by key
const maxUploadSize = await ParamsAPI.getParamsValue('sys.max_upload_size');

Position Management

Overview

Position management module provides position management, supporting position CRUD and status management.

Core Endpoints

FunctionMethodEndpointPermission
Get Position ListlistPositionGET /api/v1/system/position/listmodule_system:position:query
Get Position DetaildetailPositionGET /api/v1/system/position/detail/{id}module_system:position:detail
Create PositioncreatePositionPOST /api/v1/system/position/createmodule_system:position:create
Update PositionupdatePositionPUT /api/v1/system/position/update/{id}module_system:position:update
Delete PositiondeletePositionDELETE /api/v1/system/position/deletemodule_system:position:delete

Frontend Examples

typescript
// Get position list
const positions = await PositionAPI.listPosition({ page_no: 1, page_size: 10 });

// Create position
await PositionAPI.createPosition({
  name: 'Senior Developer',
  code: 'senior_dev',
  order: 1,
  status: '0'
});

Tenant Management

Overview

Tenant management module provides multi-tenant architecture support, including tenant CRUD, user management, quota management, config management, and menu permissions.

Core Endpoints

Basic Tenant Operations

FunctionMethodEndpointPermission
Get Tenant ListlistTenantGET /api/v1/system/tenant/listmodule_system:tenant:query
Get Tenant DetaildetailTenantGET /api/v1/system/tenant/detail/{id}module_system:tenant:query
Create TenantcreateTenantPOST /api/v1/system/tenant/createmodule_system:tenant:create
Update TenantupdateTenantPUT /api/v1/system/tenant/update/{id}module_system:tenant:update
Delete TenantdeleteTenantDELETE /api/v1/system/tenant/deletemodule_system:tenant:delete
Toggle Tenant StatustoggleTenantStatusPUT /api/v1/system/tenant/status/{id}module_system:tenant:patch

Tenant User Management

FunctionMethodEndpointPermission
Get Tenant UsersgetTenantUsersGET /api/v1/system/tenant/{id}/usersmodule_system:tenant:query
Add Tenant UseraddTenantUserPOST /api/v1/system/tenant/{id}/usersmodule_system:tenant:create
Remove Tenant UserremoveTenantUserDELETE /api/v1/system/tenant/{id}/users/{uid}module_system:tenant:delete

Tenant Quota Management

FunctionMethodEndpointPermission
Get Tenant QuotagetTenantQuotaGET /api/v1/system/tenant/{id}/quotamodule_system:tenant:query
Update Tenant QuotaupdateTenantQuotaPUT /api/v1/system/tenant/{id}/quotamodule_system:tenant:update

Tenant Config Management

FunctionMethodEndpointPermission
Get Tenant ConfiggetTenantConfigGET /api/v1/system/tenant/{id}/configmodule_system:tenant:query
Update Tenant ConfigupdateTenantConfigPUT /api/v1/system/tenant/{id}/configmodule_system:tenant:update

Tenant Menu Permissions

FunctionMethodEndpointPermission
Get Tenant MenusgetTenantMenusGET /api/v1/system/tenant/{id}/menusmodule_system:tenant:query
Set Tenant MenussetTenantMenusPUT /api/v1/system/tenant/{id}/menusmodule_system:tenant:update

Frontend Examples

typescript
// Create tenant
const tenant = await TenantAPI.createTenant({
  name: 'Example Tenant',
  code: 'example_tenant',
  admin_name: 'Administrator',
  admin_account: 'admin',
  admin_password: 'password'
});

// Add user to tenant
await TenantAPI.addTenantUser(tenant.id, { user_id: 123 });

// Set tenant quota
await TenantAPI.updateTenantQuota(tenant.id, {
  user_limit: 100,
  storage_limit: 1024 * 1024 * 1024 // 1GB
});

Ticket Management

Overview

Ticket management module provides ticket creation, query, update, and deletion, supporting ticket workflow management.

Core Endpoints

FunctionMethodEndpointPermission
Get Ticket ListlistTicketGET /api/v1/system/ticket/listmodule_ticket:ticket:query
Get Ticket DetaildetailTicketGET /api/v1/system/ticket/detail/{id}module_ticket:ticket:query
Create TicketcreateTicketPOST /api/v1/system/ticket/createmodule_ticket:ticket:create
Update TicketupdateTicketPUT /api/v1/system/ticket/update/{id}module_ticket:ticket:update
Delete TicketdeleteTicketDELETE /api/v1/system/ticket/deletemodule_ticket:ticket:delete

Frontend Examples

typescript
// Create ticket
await TicketAPI.createTicket({
  title: 'System Bug Report',
  content: 'Login page not loading properly',
  priority: 'high',
  type: 'bug'
});

// Get ticket list
const tickets = await TicketAPI.listTicket({ page_no: 1, page_size: 10 });

Best Practices

1. File Upload

  • ✅ Use unified upload interface for all file uploads
  • ✅ Validate file type and size on client before uploading
  • ✅ Use target_path parameter to organize file structure
  • ✅ Avoid special characters and Chinese in filenames

2. Resource Management

  • ✅ Regularly clean up unused files
  • ✅ Use directory structure to organize different types of resources
  • ✅ Confirm files are not referenced by other resources before deletion

3. Monitoring & Operations

  • ✅ Configure K8s probes to use /health/ready and /health/live
  • ✅ Use Prometheus to collect /metrics data
  • ✅ Set reasonable alert thresholds