feat: 添加版本和构建时间变量 fix: 修正短信队列类型注释错误 style: 清理未使用的代码和测试文件 docs: 更新安装文档中的下载链接 chore: 迁移数据库脚本添加日志和订阅配置
168 lines
5.3 KiB
Plaintext
168 lines
5.3 KiB
Plaintext
syntax = "v1"
|
|
|
|
info (
|
|
title: "Marketing API"
|
|
desc: "API for ppanel"
|
|
author: "Tension"
|
|
email: "tension@ppanel.com"
|
|
version: "0.0.1"
|
|
)
|
|
|
|
type (
|
|
CreateBatchSendEmailTaskRequest {
|
|
Subject string `json:"subject"`
|
|
Content string `json:"content"`
|
|
Scope int8 `json:"scope"`
|
|
RegisterStartTime int64 `json:"register_start_time,omitempty"`
|
|
RegisterEndTime int64 `json:"register_end_time,omitempty"`
|
|
Additional string `json:"additional,omitempty"`
|
|
Scheduled int64 `json:"scheduled,omitempty"`
|
|
Interval uint8 `json:"interval,omitempty"`
|
|
Limit uint64 `json:"limit,omitempty"`
|
|
}
|
|
BatchSendEmailTask {
|
|
Id int64 `json:"id"`
|
|
Subject string `json:"subject"`
|
|
Content string `json:"content"`
|
|
Recipients string `json:"recipients"`
|
|
Scope int8 `json:"scope"`
|
|
RegisterStartTime int64 `json:"register_start_time"`
|
|
RegisterEndTime int64 `json:"register_end_time"`
|
|
Additional string `json:"additional"`
|
|
Scheduled int64 `json:"scheduled"`
|
|
Interval uint8 `json:"interval"`
|
|
Limit uint64 `json:"limit"`
|
|
Status uint8 `json:"status"`
|
|
Errors string `json:"errors"`
|
|
Total uint64 `json:"total"`
|
|
Current uint64 `json:"current"`
|
|
CreatedAt int64 `json:"created_at"`
|
|
UpdatedAt int64 `json:"updated_at"`
|
|
}
|
|
GetBatchSendEmailTaskListRequest {
|
|
Page int `form:"page"`
|
|
Size int `form:"size"`
|
|
Scope *int8 `form:"scope,omitempty"`
|
|
Status *uint8 `form:"status,omitempty"`
|
|
}
|
|
GetBatchSendEmailTaskListResponse {
|
|
Total int64 `json:"total"`
|
|
List []BatchSendEmailTask `json:"list"`
|
|
}
|
|
StopBatchSendEmailTaskRequest {
|
|
Id int64 `json:"id"`
|
|
}
|
|
GetPreSendEmailCountRequest {
|
|
Scope int8 `json:"scope"`
|
|
RegisterStartTime int64 `json:"register_start_time,omitempty"`
|
|
RegisterEndTime int64 `json:"register_end_time,omitempty"`
|
|
}
|
|
GetPreSendEmailCountResponse {
|
|
Count int64 `json:"count"`
|
|
}
|
|
GetBatchSendEmailTaskStatusRequest {
|
|
Id int64 `json:"id"`
|
|
}
|
|
GetBatchSendEmailTaskStatusResponse {
|
|
Status uint8 `json:"status"`
|
|
Current int64 `json:"current"`
|
|
Total int64 `json:"total"`
|
|
Errors string `json:"errors"`
|
|
}
|
|
CreateQuotaTaskRequest {
|
|
Subscribers []int64 `json:"subscribers"`
|
|
IsActive *bool `json:"is_active"`
|
|
StartTime int64 `json:"start_time"`
|
|
EndTime int64 `json:"end_time"`
|
|
ResetTraffic bool `json:"reset_traffic"`
|
|
Days uint64 `json:"days"`
|
|
GiftType uint8 `json:"gift_type"`
|
|
GiftValue uint64 `json:"gift_value"`
|
|
}
|
|
QuotaTask {
|
|
Id int64 `json:"id"`
|
|
Subscribers []int64 `json:"subscribers"`
|
|
IsActive *bool `json:"is_active"`
|
|
StartTime int64 `json:"start_time"`
|
|
EndTime int64 `json:"end_time"`
|
|
ResetTraffic bool `json:"reset_traffic"`
|
|
Days uint64 `json:"days"`
|
|
GiftType uint8 `json:"gift_type"`
|
|
GiftValue uint64 `json:"gift_value"`
|
|
Objects []int64 `json:"objects"` // UserSubscribe IDs
|
|
Status uint8 `json:"status"`
|
|
Total int64 `json:"total"`
|
|
Current int64 `json:"current"`
|
|
Errors string `json:"errors"`
|
|
CreatedAt int64 `json:"created_at"`
|
|
UpdatedAt int64 `json:"updated_at"`
|
|
}
|
|
QueryQuotaTaskPreCountRequest {
|
|
Subscribers []int64 `json:"subscribers"`
|
|
IsActive *bool `json:"is_active"`
|
|
StartTime int64 `json:"start_time"`
|
|
EndTime int64 `json:"end_time"`
|
|
}
|
|
QueryQuotaTaskPreCountResponse {
|
|
Count int64 `json:"count"`
|
|
}
|
|
QueryQuotaTaskListRequest {
|
|
Page int `form:"page"`
|
|
Size int `form:"size"`
|
|
Status *uint8 `form:"status,omitempty"`
|
|
}
|
|
QueryQuotaTaskListResponse {
|
|
Total int64 `json:"total"`
|
|
List []QuotaTask `json:"list"`
|
|
}
|
|
QueryQuotaTaskStatusRequest {
|
|
Id int64 `json:"id"`
|
|
}
|
|
QueryQuotaTaskStatusResponse {
|
|
Status uint8 `json:"status"`
|
|
Current int64 `json:"current"`
|
|
Total int64 `json:"total"`
|
|
Errors string `json:"errors"`
|
|
}
|
|
)
|
|
|
|
@server (
|
|
prefix: v1/admin/marketing
|
|
group: admin/marketing
|
|
middleware: AuthMiddleware
|
|
)
|
|
service ppanel {
|
|
@doc "Create a batch send email task"
|
|
@handler CreateBatchSendEmailTask
|
|
post /email/batch/send (CreateBatchSendEmailTaskRequest)
|
|
|
|
@doc "Get batch send email task list"
|
|
@handler GetBatchSendEmailTaskList
|
|
get /email/batch/list (GetBatchSendEmailTaskListRequest) returns (GetBatchSendEmailTaskListResponse)
|
|
|
|
@doc "Stop a batch send email task"
|
|
@handler StopBatchSendEmailTask
|
|
post /email/batch/stop (StopBatchSendEmailTaskRequest)
|
|
|
|
@doc "Get pre-send email count"
|
|
@handler GetPreSendEmailCount
|
|
post /email/batch/pre-send-count (GetPreSendEmailCountRequest) returns (GetPreSendEmailCountResponse)
|
|
|
|
@doc "Get batch send email task status"
|
|
@handler GetBatchSendEmailTaskStatus
|
|
post /email/batch/status (GetBatchSendEmailTaskStatusRequest) returns (GetBatchSendEmailTaskStatusResponse)
|
|
|
|
@doc "Create a quota task"
|
|
@handler CreateQuotaTask
|
|
post /quota/create (CreateQuotaTaskRequest)
|
|
|
|
@doc "Query quota task pre-count"
|
|
@handler QueryQuotaTaskPreCount
|
|
post /quota/pre-count (QueryQuotaTaskPreCountRequest) returns (QueryQuotaTaskPreCountResponse)
|
|
|
|
@doc "Query quota task list"
|
|
@handler QueryQuotaTaskList
|
|
get /quota/list (QueryQuotaTaskListRequest) returns (QueryQuotaTaskListResponse)
|
|
}
|
|
|