60 lines
1.5 KiB
Plaintext
60 lines
1.5 KiB
Plaintext
syntax = "v1"
|
||
|
||
type (
|
||
JobPublic {
|
||
Id string `json:"id"`
|
||
TemplateType string `json:"template_type"`
|
||
Status string `json:"status"`
|
||
ProgressSummary string `json:"progress_summary"`
|
||
ProgressPercent int `json:"progress_percent"`
|
||
Error string `json:"error,optional"`
|
||
// 業務關聯(例:threads 帳號 id、人設 id)
|
||
RefId string `json:"ref_id,optional"`
|
||
// 任務 payload JSON(例:{"username":"x"})
|
||
Payload string `json:"payload,optional"`
|
||
// 排程執行時間 unix ns;0=立刻可領
|
||
RunAfter int64 `json:"run_after,optional"`
|
||
CreatedAt int64 `json:"created_at"`
|
||
UpdatedAt int64 `json:"updated_at"`
|
||
CompletedAt int64 `json:"completed_at,optional"`
|
||
}
|
||
|
||
JobListData {
|
||
List []JobPublic `json:"list"`
|
||
}
|
||
|
||
JobIdPath {
|
||
Id string `path:"id"`
|
||
}
|
||
)
|
||
|
||
@server (
|
||
jwt: Auth
|
||
group: jobs
|
||
prefix: /api/v1/jobs
|
||
middleware: AuthJWT
|
||
)
|
||
service gateway {
|
||
@handler ListJobs
|
||
get / returns (JobListData)
|
||
|
||
@handler GetJob
|
||
get /:id (JobIdPath) returns (JobPublic)
|
||
|
||
// 手動刪除任務(執行中不可刪;終態/已排程可刪)
|
||
@handler DeleteJob
|
||
delete /:id (JobIdPath) returns (OkData)
|
||
}
|
||
|
||
// 管理員:產生 demo/測試任務(由 demo-worker 消費)
|
||
@server (
|
||
jwt: Auth
|
||
group: jobs
|
||
prefix: /api/v1/jobs
|
||
middleware: AuthJWT,AdminAuth
|
||
)
|
||
service gateway {
|
||
@handler StartDemoJob
|
||
post /demo returns (JobPublic)
|
||
}
|