Admin API#

Quản trị hệ thống. Tất cả endpoints yêu cầu JWT + permission tương ứng.

Base URL: https://apitest.likepion.com/api/v1/admin Auth: JWT Token + Permission (Authorization: Bearer <token>)


Users (users.*)#

POST /users — Tạo user #

Request:

{
  "name": "User Name",          // required, min=2, max=100
  "email": "user@example.com",  // required, email
  "password": "secret123",      // required, min=8, max=128
  "role": "user",               // required, oneof: admin, user
  "status": "active"            // required, oneof: active, pending, suspended
}

Response (201):

{
  "success": true,
  "data": {
    "id": "uuid",
    "name": "User Name",
    "email": "user@example.com",
    "role": {"name": "User", "slug": "user"},
    "status": "active",
    "credits": 0,
    "credits_used": 0,
    "credits_deposited": 0,
    "credits_expires_at": null,
    "created_at": "2025-06-01T00:00:00Z"
  }
}

PUT /users/:id — Cập nhật user #

Request: Giống create, password optional (bỏ trống = không đổi).

GET /users — Danh sách #

Query: page, limit, search, status, role, sort (name/email/status/credits/created_at), order (asc/desc), credits_min, credits_max, date_from, date_to

DELETE /users/:id #

POST /users/:id/credits/add — Thêm credits #

Request:

{
  "amount": 500,                   // required, >0
  "reason": "Manual top-up"        // required, min=1, max=500
}

Response:

{
  "success": true,
  "data": {
    "message": "credits added",
    "credits": 1500,
    "credits_used": 500,
    "credits_deposited": 2000,
    "credits_expires_at": "2026-01-01T00:00:00Z"
  }
}

POST /users/:id/credits/deduct — Trừ credits #

Request giống /credits/add.

PUT /users/:id/credits/extend — Gia hạn #

Request:

{
  "expires_at": "2026-06-01T00:00:00Z",   // required, RFC3339
  "reason": "Extension for VIP"            // required
}

GET /users/:id/api-keys | DELETE /users/:id/api-keys/:keyId#

GET /users/:id/activities | GET /users/:id/credits/history#

POST /users/:id/impersonate — Giả mạo user #


Roles & Permissions (roles.*)#

POST /roles #

Request:

{
  "name": "Editor",
  "slug": "editor",
  "description": "Content editor role"
}

PUT /roles/:id/permissions — Gán permissions #

Request:

{
  "permissions": ["uuid-1", "uuid-2"]
}

POST /permissions #

Request:

{
  "name": "View Backlinks",
  "slug": "backlink.view",
  "group": "backlink"
}
MethodPathMô tả
GET/rolesDanh sách roles
PUT/roles/:idCập nhật role
DELETE/roles/:idXóa role
GET/permissionsDanh sách permissions
PUT/permissions/:idCập nhật
DELETE/permissions/:idXóa

Servers (server.*)#

POST /servers — Tạo server #

Request:

{
  "name": "Server 01",         // required, max=100
  "ip": "192.168.1.100",       // required, max=45
  "service": "tool",           // required, max=100
  "priority": 5,               // min=1, max=10
  "region": "VN",              // max=50
  "max_threads": 20            // min=1, max=64
}

Response (201): Full server object (tự động tạo api_key):

{
  "success": true,
  "data": {
    "id": "uuid",
    "name": "Server 01",
    "ip": "192.168.1.100",
    "api_key": "sk-xxxxxxxxxxxx",
    "api_key_prefix": "sk-xxxx",
    "service": "tool",
    "priority": 5,
    "region": "VN",
    "max_threads": 20,
    "status": "offline",
    "cpu_usage": 0,
    "ram_usage": 0,
    "disk_usage": 0,
    "active_threads": 0,
    "active_tasks": 0,
    "created_at": "2025-06-01T00:00:00Z"
  }
}

PUT /servers/:id — Cập nhật (partial update) #

Request: Tất cả optional:

{
  "name": "Server 01 Updated",
  "ip": "10.0.0.1",
  "service": "assign",
  "priority": 8,
  "region": "US",
  "max_threads": 32,
  "status": "online"           // oneof: online, offline, maintenance, die
}

GET /servers — Danh sách #

Query: page, limit, search, status, service, sort, order, inactive_minutes

GET /servers/:id — Chi tiết | DELETE /servers/:id — Xóa#

POST /servers/:id/regenerate-key — Tạo lại API key #

GET /servers/:id/logs | /servers/:id/activities | /servers/:id/tools#

Server Docs#

MethodPathMô tả
GET/servers/docsDanh sách docs
GET/servers/docs/:idChi tiết
POST/servers/docsTạo
PUT/servers/docs/:idCập nhật
DELETE/servers/docs/:idXóa

Billing Admin (billing.*)#

GET /orders — Danh sách đơn hàng #

Query: page, limit, search, status, payment_method, package, sort, order, date_from (YYYY-MM-DD), date_to

GET /orders/stats — Thống kê #

Query: date_from, date_to (YYYY-MM-DD)

Response:

{
  "success": true,
  "data": {
    "total_revenue": 5000000,
    "total_completed": 50,
    "total_pending": 5,
    "total_cancelled": 3,
    "total_refunded": 1
  }
}

POST /orders/:id/approve | /reject | /refund#

Request:

{
  "note": "Đã xác nhận thanh toán"    // optional
}

Approve response: {"message": "order approved", "credits_added": 500} Reject response: {"message": "order rejected"} Refund response: {"message": "order refunded", "credits_deducted": 500}

Packages CRUD#

POST /packages:

{
  "name": "Pro Package",         // required, max=100
  "slug": "pro-package",         // required, max=100
  "description": "Pro features",
  "price": 500000,               // required, >0
  "credits": 2500,               // required, >0
  "duration_days": 30,           // required, >0
  "features": ["Feature 1"],
  "type": "monthly",
  "is_popular": true,
  "sort_order": 2,
  "status": "active"
}

Vouchers CRUD#

POST /vouchers:

{
  "code": "SALE50",                     // required, max=50
  "discount_type": "percent",           // required, oneof: percent, fixed
  "discount_value": 50,                 // required, >0
  "max_uses": 100,                      // required, >0
  "min_order_amount": 100000,
  "applicable_packages": ["uuid-1"],
  "expires_at": "2025-12-31",           // format: YYYY-MM-DD
  "status": "active"
}

GET /transactions #

Query: page, limit, search, type, service, date_from, date_to


MethodPathMô tả
GET/backlink-linksTất cả links
GET/backlinksDanh sách requests
GET/backlinks/:idChi tiết
DELETE/backlinks/:idXóa
GET/backlinks/:id/linksLinks trong request
PUT/backlinks/:id/emailĐổi email
GET/backlink-groupsTất cả groups
GET/backlink-groups/:idChi tiết group
DELETE/backlink-groups/:idXóa group
GET/backlink-groups/:id/accountsAccounts
DELETE/backlink-accounts/:idXóa account

Sites (resources.sites.*)#

POST /sites:

{
  "name": "Example Site",       // required
  "url": "https://example.com", // required
  "types": ["entity", "social"],// required, min 1
  "captcha_type": "recaptcha",
  "category": "blog",
  "is_active": true,
  "sort_order": 1
}

PUT /sites/:id: Partial update (pointer fields).

GET /sites: Query page, limit, search, type, status, is_active

Response item bao gồm thêm: usage_count, success_count, error_count.


CMS Admin#

Case Studies, Pages, Tools (casestudy.*, page.*, tool.*)#

CRUD chuẩn: GET (list), POST (create), PUT /:id (update), DELETE /:id.

MethodPathMô tả
GET/galleryDanh sách
POST/gallery/uploadUpload ảnh
DELETE/gallery/:idXóa
POST/gallery/bulk-deleteXóa nhiều

Resources#

AI Prompts, Serper Keys, Gmail (resources.*)#

CRUD chuẩn cho mỗi resource. Gmail có thêm POST /resources/gmail/auto-create.

Payment Methods (paymentmethod.*)#

CRUD + PATCH /payment-methods/:id/toggle (bật/tắt).


Settings (settings.*)#

GET /settings?group=brand — Lấy settings #

Response:

{"success": true, "data": {"logo": "/uploads/brand/logo.png", "site_name": "LIKEPION"}}

PUT /settings/:group — Lưu settings #

Request: map[string]string

{
  "site_name": "LIKEPION",
  "primary_color": "#1890ff"
}

POST /settings/upload — Upload brand asset #

Form: type (logo/favicon), file (file upload)

POST /settings/test-notification #

Request:

{
  "channel": "telegram"    // oneof: smtp, telegram, gchat, zalo
}

Action Logs#

GET /action-logs (users.view) #

Danh sách action logs toàn hệ thống.