Package API#

API quản lý gói dịch vụ.

Base URL: https://app.socialking.vn/api/v1


1. Danh sách gói dịch vụ#

GET /package/get-all #

Auth: Bearer Token (JWT)

Query Parameters:

ParamTypeDefaultMô tả
_pagenumber1Trang
_limitnumber20Items/trang
_orderstringdescasc | desc
_searchstring-Tìm kiếm
is_activeboolean-Filter active/inactive

Response (200):

{
  "success": true,
  "data": {
    "packages": [
      {
        "id": "uuid-string",
        "name": "Gói Pro",
        "slug": "goi-pro",
        "description": "Gói dịch vụ chuyên nghiệp",
        "price": 500000,
        "is_active": true,
        "sort_order": 1
      }
    ],
    "total": 5,
    "page": 1
  }
}

2. Chi tiết gói (Manager)#

GET /package/get-by-id/:id #

Auth: Bearer Token (JWT) + Permission manager_package:read

URL Params: id (UUID)


3. Tạo gói (Manager)#

POST /package/create #

Auth: Bearer Token (JWT) + Permission manager_package:create

Request Body:

{
  "name": "Gói Premium",
  "slug": "goi-premium",
  "description": "Gói dịch vụ cao cấp",
  "price": 1000000,
  "is_active": true,
  "sort_order": 0
}
FieldTypeRequiredValidation
namestringYes2-100 ký tự
slugstringNo2-100 ký tự, lowercase, alphanumeric + hyphen
descriptionstringNoMax 500 ký tự, nullable
pricenumberYes0-999.999.999.999
is_activebooleanNoDefault true
sort_ordernumberNo>= 0, default 0

4. Cập nhật gói (Manager)#

PUT /package/update/:id #

Auth: Bearer Token (JWT) + Permission manager_package:update

URL Params: id (UUID)


5. Xóa gói (Manager)#

DELETE /package/delete/:id #

Auth: Bearer Token (JWT) + Permission manager_package:delete


6. Xóa nhiều gói (Manager)#

DELETE /package/delete-bulk #

Auth: Bearer Token (JWT) + Permission manager_package:delete

Request Body:

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

7. Mua gói dịch vụ#

POST /package/buy #

Auth: Bearer Token (JWT)

Rate Limit: 10 req/sec

Request Body:

{
  "packageId": "uuid-package-id",
  "quantity": 1
}
FieldTypeRequiredValidation
packageIdUUIDYesPackage ID
quantitynumberNoDefault 1

Response (200):

{
  "success": true,
  "message": "Package purchased",
  "data": {
    "packageId": "uuid-string",
    "quantity": 1,
    "totalPrice": 500000,
    "transactionId": "uuid-string",
    "newBalance": 1000000
  }
}