69 lines
2.7 KiB
Plaintext
69 lines
2.7 KiB
Plaintext
syntax = "v1"
|
||
|
||
type (
|
||
SettingPath {
|
||
Scope string `path:"scope" validate:"required,oneof=user account system"` // 設定範圍,可選 user / account / system
|
||
ScopeID string `path:"scope_id" validate:"required"` // 範圍 ID,例如 user_id、account_id 或 global
|
||
Page int64 `form:"page,optional"` // 頁碼,從 1 開始
|
||
PageSize int64 `form:"pageSize,optional"` // 每頁筆數,server 會限制最大值
|
||
}
|
||
|
||
SettingKeyPath {
|
||
Scope string `path:"scope" validate:"required,oneof=user account system"` // 設定範圍,可選 user / account / system
|
||
ScopeID string `path:"scope_id" validate:"required"` // 範圍 ID,例如 user_id、account_id 或 global
|
||
Key string `path:"key" validate:"required"` // 設定 key,例如 ai.default
|
||
}
|
||
|
||
SettingUpsertReq {
|
||
Scope string `path:"scope" validate:"required,oneof=user account system"` // 設定範圍,可選 user / account / system
|
||
ScopeID string `path:"scope_id" validate:"required"` // 範圍 ID,例如 user_id、account_id 或 global
|
||
Key string `path:"key" validate:"required"` // 設定 key,例如 ai.default
|
||
Value map[string]interface{} `json:"value" validate:"required"` // 設定內容 JSON object
|
||
Version int `json:"version,optional"` // schema version,未帶入時預設 1
|
||
}
|
||
|
||
SettingData {
|
||
ID string `json:"id"`
|
||
Scope string `json:"scope"`
|
||
ScopeID string `json:"scope_id"`
|
||
Key string `json:"key"`
|
||
Value map[string]interface{} `json:"value"`
|
||
Version int `json:"version"`
|
||
CreateAt int64 `json:"create_at"`
|
||
UpdateAt int64 `json:"update_at"`
|
||
}
|
||
|
||
SettingListData {
|
||
Pagination PaginationData `json:"pagination"`
|
||
List []SettingData `json:"list"`
|
||
}
|
||
|
||
PaginationData {
|
||
Total int64 `json:"total"`
|
||
Page int64 `json:"page"`
|
||
PageSize int64 `json:"pageSize"`
|
||
TotalPages int64 `json:"totalPages"`
|
||
}
|
||
)
|
||
|
||
@server(
|
||
group: setting
|
||
prefix: /api/v1/settings
|
||
middleware: AuthJWT
|
||
tags: "Setting - General"
|
||
summary: "Manage settings by scope, scope_id, and key. Requires Bearer JWT."
|
||
)
|
||
service gateway {
|
||
@handler listSettings
|
||
get /:scope/:scope_id (SettingPath) returns (SettingListData)
|
||
|
||
@handler getSetting
|
||
get /:scope/:scope_id/:key (SettingKeyPath) returns (SettingData)
|
||
|
||
@handler upsertSetting
|
||
put /:scope/:scope_id/:key (SettingUpsertReq) returns (SettingData)
|
||
|
||
@handler deleteSetting
|
||
delete /:scope/:scope_id/:key (SettingKeyPath)
|
||
}
|