diff --git a/apis/admin/ads.api b/apis/admin/ads.api index 1fe750c..6ddbf2f 100644 --- a/apis/admin/ads.api +++ b/apis/admin/ads.api @@ -75,5 +75,4 @@ service ppanel { @doc "Get Ads Detail" @handler GetAdsDetail get /detail (GetAdsDetailRequest) returns (Ads) -} - +} \ No newline at end of file diff --git a/apis/admin/announcement.api b/apis/admin/announcement.api index 03d7082..3ced177 100644 --- a/apis/admin/announcement.api +++ b/apis/admin/announcement.api @@ -72,5 +72,4 @@ service ppanel { @doc "Get announcement" @handler GetAnnouncement get /detail (GetAnnouncementRequest) returns (Announcement) -} - +} \ No newline at end of file diff --git a/apis/admin/auth.api b/apis/admin/auth.api index 4161cb5..64c4a9c 100644 --- a/apis/admin/auth.api +++ b/apis/admin/auth.api @@ -26,16 +26,14 @@ type ( List []AuthMethodConfig `json:"list"` } - TestSmsSendRequest { - AreaCode string `json:"area_code" validate:"required"` + AreaCode string `json:"area_code" validate:"required"` Telephone string `json:"telephone" validate:"required"` } // Test email smtp request TestEmailSendRequest { Email string `json:"email" validate:"required"` } - ) @server ( @@ -56,7 +54,6 @@ service ppanel { @handler UpdateAuthMethodConfig put /config (UpdateAuthMethodConfigRequest) returns (AuthMethodConfig) - @doc "Test sms send" @handler TestSmsSend post /test_sms_send (TestSmsSendRequest) @@ -72,5 +69,4 @@ service ppanel { @doc "Get email support platform" @handler GetEmailPlatform get /email_platform returns (PlatformResponse) -} - +} \ No newline at end of file diff --git a/apis/admin/console.api b/apis/admin/console.api index c20bb14..c208852 100644 --- a/apis/admin/console.api +++ b/apis/admin/console.api @@ -84,5 +84,4 @@ service ppanel { @doc "Query ticket wait reply" @handler QueryTicketWaitReply get /ticket returns (TicketWaitRelpyResponse) -} - +} \ No newline at end of file diff --git a/apis/admin/coupon.api b/apis/admin/coupon.api index 92516aa..4aa4f1e 100644 --- a/apis/admin/coupon.api +++ b/apis/admin/coupon.api @@ -21,8 +21,8 @@ type ( ExpireTime int64 `json:"expire_time" validate:"required"` UserLimit int64 `json:"user_limit,omitempty"` Subscribe []int64 `json:"subscribe,omitempty"` - UsedCount int64 `json:"used_count,omitempty"` - Enable *bool `json:"enable,omitempty"` + UsedCount int64 `json:"used_count,omitempty"` + Enable *bool `json:"enable,omitempty"` } UpdateCouponRequest { Id int64 `json:"id" validate:"required"` @@ -35,8 +35,8 @@ type ( ExpireTime int64 `json:"expire_time" validate:"required"` UserLimit int64 `json:"user_limit,omitempty"` Subscribe []int64 `json:"subscribe,omitempty"` - UsedCount int64 `json:"used_count,omitempty"` - Enable *bool `json:"enable,omitempty"` + UsedCount int64 `json:"used_count,omitempty"` + Enable *bool `json:"enable,omitempty"` } DeleteCouponRequest { Id int64 `json:"id" validate:"required"` @@ -81,5 +81,4 @@ service ppanel { @doc "Get coupon list" @handler GetCouponList get /list (GetCouponListRequest) returns (GetCouponListResponse) -} - +} \ No newline at end of file diff --git a/apis/admin/device.api b/apis/admin/device.api index 1e5fb59..ad9107e 100644 --- a/apis/admin/device.api +++ b/apis/admin/device.api @@ -1,13 +1,9 @@ syntax = "v1" info( - title: "Device API" - desc: "API for ppanel" - author: "Tension" - email: "tension@ppanel.com" - version: "0.0.1" -) - -type ( - + title: "Device API" + desc: "API for ppanel" + author: "Tension" + email: "tension@ppanel.com" + version: "0.0.1" ) \ No newline at end of file diff --git a/apis/admin/log.api b/apis/admin/log.api index 12fc312..5635649 100644 --- a/apis/admin/log.api +++ b/apis/admin/log.api @@ -36,5 +36,4 @@ service ppanel { @doc "Get message log list" @handler GetMessageLogList get /message/list (GetMessageLogListRequest) returns (GetMessageLogListResponse) -} - +} \ No newline at end of file diff --git a/apis/admin/order.api b/apis/admin/order.api index 0d49074..eac0510 100644 --- a/apis/admin/order.api +++ b/apis/admin/order.api @@ -64,5 +64,4 @@ service ppanel { @doc "Update order status" @handler UpdateOrderStatus put /status (UpdateOrderStatusRequest) -} - +} \ No newline at end of file diff --git a/apis/admin/payment.api b/apis/admin/payment.api index b689398..d4da90a 100644 --- a/apis/admin/payment.api +++ b/apis/admin/payment.api @@ -77,5 +77,4 @@ service ppanel { @doc "Get supported payment platform" @handler GetPaymentPlatform get /platform returns (PlatformResponse) -} - +} \ No newline at end of file diff --git a/apis/admin/server.api b/apis/admin/server.api index 38f2b38..d0050f5 100644 --- a/apis/admin/server.api +++ b/apis/admin/server.api @@ -14,7 +14,7 @@ type ( GetNodeServerListRequest { Page int `form:"page" validate:"required"` Size int `form:"size" validate:"required"` - Tags string `form:"tags,omitempty"` + Tags string `form:"tags,omitempty"` GroupId int64 `form:"group_id,omitempty"` Search string `form:"search,omitempty"` } @@ -88,14 +88,14 @@ type ( } CreateRuleGroupRequest { Name string `json:"name" validate:"required"` - Icon string `json:"icon"` + Icon string `json:"icon"` Tags []string `json:"tags"` Rules string `json:"rules"` Enable bool `json:"enable"` } UpdateRuleGroupRequest { Id int64 `json:"id" validate:"required"` - Icon string `json:"icon"` + Icon string `json:"icon"` Name string `json:"name" validate:"required"` Tags []string `json:"tags"` Rules string `json:"rules"` @@ -186,5 +186,4 @@ service ppanel { @doc "Get rule group list" @handler GetRuleGroupList get /rule_group_list returns (GetRuleGroupResponse) -} - +} \ No newline at end of file diff --git a/apis/admin/subscribe.api b/apis/admin/subscribe.api index d95ab39..0055c62 100644 --- a/apis/admin/subscribe.api +++ b/apis/admin/subscribe.api @@ -34,50 +34,50 @@ type ( Ids []int64 `json:"ids" validate:"required"` } CreateSubscribeRequest { - Name string `json:"name" validate:"required"` - Description string `json:"description"` - UnitPrice int64 `json:"unit_price"` - UnitTime string `json:"unit_time"` - Discount []SubscribeDiscount `json:"discount"` - Replacement int64 `json:"replacement"` - Inventory int64 `json:"inventory"` - Traffic int64 `json:"traffic"` - SpeedLimit int64 `json:"speed_limit"` - DeviceLimit int64 `json:"device_limit"` - Quota int64 `json:"quota"` - GroupId int64 `json:"group_id"` - ServerGroup []int64 `json:"server_group"` - Server []int64 `json:"server"` - Show *bool `json:"show"` - Sell *bool `json:"sell"` - DeductionRatio int64 `json:"deduction_ratio"` - AllowDeduction *bool `json:"allow_deduction"` - ResetCycle int64 `json:"reset_cycle"` - RenewalReset *bool `json:"renewal_reset"` + Name string `json:"name" validate:"required"` + Description string `json:"description"` + UnitPrice int64 `json:"unit_price"` + UnitTime string `json:"unit_time"` + Discount []SubscribeDiscount `json:"discount"` + Replacement int64 `json:"replacement"` + Inventory int64 `json:"inventory"` + Traffic int64 `json:"traffic"` + SpeedLimit int64 `json:"speed_limit"` + DeviceLimit int64 `json:"device_limit"` + Quota int64 `json:"quota"` + GroupId int64 `json:"group_id"` + ServerGroup []int64 `json:"server_group"` + Server []int64 `json:"server"` + Show *bool `json:"show"` + Sell *bool `json:"sell"` + DeductionRatio int64 `json:"deduction_ratio"` + AllowDeduction *bool `json:"allow_deduction"` + ResetCycle int64 `json:"reset_cycle"` + RenewalReset *bool `json:"renewal_reset"` } UpdateSubscribeRequest { - Id int64 `json:"id" validate:"required"` - Name string `json:"name" validate:"required"` - Description string `json:"description"` - UnitPrice int64 `json:"unit_price"` - UnitTime string `json:"unit_time"` - Discount []SubscribeDiscount `json:"discount"` - Replacement int64 `json:"replacement"` - Inventory int64 `json:"inventory"` - Traffic int64 `json:"traffic"` - SpeedLimit int64 `json:"speed_limit"` - DeviceLimit int64 `json:"device_limit"` - Quota int64 `json:"quota"` - GroupId int64 `json:"group_id"` - ServerGroup []int64 `json:"server_group"` - Server []int64 `json:"server"` - Show *bool `json:"show"` - Sell *bool `json:"sell"` - Sort int64 `json:"sort"` - DeductionRatio int64 `json:"deduction_ratio"` - AllowDeduction *bool `json:"allow_deduction"` - ResetCycle int64 `json:"reset_cycle"` - RenewalReset *bool `json:"renewal_reset"` + Id int64 `json:"id" validate:"required"` + Name string `json:"name" validate:"required"` + Description string `json:"description"` + UnitPrice int64 `json:"unit_price"` + UnitTime string `json:"unit_time"` + Discount []SubscribeDiscount `json:"discount"` + Replacement int64 `json:"replacement"` + Inventory int64 `json:"inventory"` + Traffic int64 `json:"traffic"` + SpeedLimit int64 `json:"speed_limit"` + DeviceLimit int64 `json:"device_limit"` + Quota int64 `json:"quota"` + GroupId int64 `json:"group_id"` + ServerGroup []int64 `json:"server_group"` + Server []int64 `json:"server"` + Show *bool `json:"show"` + Sell *bool `json:"sell"` + Sort int64 `json:"sort"` + DeductionRatio int64 `json:"deduction_ratio"` + AllowDeduction *bool `json:"allow_deduction"` + ResetCycle int64 `json:"reset_cycle"` + RenewalReset *bool `json:"renewal_reset"` } SubscribeSortRequest { Sort []SortItem `json:"sort"` @@ -90,14 +90,14 @@ type ( } SubscribeItem { - Subscribe + Subscribe - Sold int64 `json:"sold"` + Sold int64 `json:"sold"` } GetSubscribeListResponse { List []SubscribeItem `json:"list"` - Total int64 `json:"total"` + Total int64 `json:"total"` } DeleteSubscribeRequest { Id int64 `json:"id" validate:"required"` @@ -160,5 +160,4 @@ service ppanel { @doc "Subscribe sort" @handler SubscribeSort post /sort (SubscribeSortRequest) -} - +} \ No newline at end of file diff --git a/apis/admin/system.api b/apis/admin/system.api index 09323c3..c985636 100644 --- a/apis/admin/system.api +++ b/apis/admin/system.api @@ -201,5 +201,4 @@ service ppanel { @doc "Update Verify Code Config" @handler UpdateVerifyCodeConfig put /verify_code_config (VerifyCodeConfig) -} - +} \ No newline at end of file diff --git a/apis/admin/ticket.api b/apis/admin/ticket.api index 59ae897..16deb4a 100644 --- a/apis/admin/ticket.api +++ b/apis/admin/ticket.api @@ -12,14 +12,14 @@ import "../types.api" type ( UpdateTicketStatusRequest { - Id int64 `json:"id" validate:"required"` + Id int64 `json:"id" validate:"required"` Status *uint8 `json:"status" validate:"required"` } GetTicketListRequest { Page int64 `form:"page"` Size int64 `form:"size"` UserId int64 `form:"user_id,omitempty"` - Status *uint8 `form:"status,omitempty"` + Status *uint8 `form:"status,omitempty"` Search string `form:"search,omitempty"` } GetTicketListResponse { @@ -58,5 +58,4 @@ service ppanel { @doc "Create ticket follow" @handler CreateTicketFollow post /follow (CreateTicketFollowRequest) -} - +} \ No newline at end of file diff --git a/apis/admin/tool.api b/apis/admin/tool.api index f54ee61..1cf3fdf 100644 --- a/apis/admin/tool.api +++ b/apis/admin/tool.api @@ -1,33 +1,33 @@ syntax = "v1" info( - title: "Tools Api" - desc: "API for ppanel" - author: "Tension" - email: "tension@ppanel.com" - version: "0.0.1" + title: "Tools Api" + desc: "API for ppanel" + author: "Tension" + email: "tension@ppanel.com" + version: "0.0.1" ) import "../types.api" type ( - LogResponse { - List interface{} `json:"list"` - } + LogResponse { + List interface{} `json:"list"` + } ) @server ( - prefix: v1/admin/tool - group: admin/tool - middleware: AuthMiddleware + prefix: v1/admin/tool + group: admin/tool + middleware: AuthMiddleware ) service ppanel { - @doc "Get System Log" - @handler GetSystemLog - get /log returns (LogResponse) + @doc "Get System Log" + @handler GetSystemLog + get /log returns (LogResponse) - @doc "Restart System" - @handler RestartSystem - get /restart -} + @doc "Restart System" + @handler RestartSystem + get /restart +} \ No newline at end of file diff --git a/apis/admin/user.api b/apis/admin/user.api index 92149fd..dff6513 100644 --- a/apis/admin/user.api +++ b/apis/admin/user.api @@ -274,5 +274,4 @@ service ppanel { @doc "Get user login logs" @handler GetUserLoginLogs get /login/logs (GetUserLoginLogsRequest) returns (GetUserLoginLogsResponse) -} - +} \ No newline at end of file diff --git a/apis/app/announcement.api b/apis/app/announcement.api index 2decd09..d716c90 100644 --- a/apis/app/announcement.api +++ b/apis/app/announcement.api @@ -10,7 +10,6 @@ info ( import "../types.api" - @server ( prefix: v1/app/announcement group: app/announcement @@ -20,5 +19,4 @@ service ppanel { @doc "Query announcement" @handler QueryAnnouncement get /list (QueryAnnouncementRequest) returns (QueryAnnouncementResponse) -} - +} \ No newline at end of file diff --git a/apis/app/auth.api b/apis/app/auth.api index 453af93..0166c08 100644 --- a/apis/app/auth.api +++ b/apis/app/auth.api @@ -1,104 +1,103 @@ syntax = "v1" info( - title: "App Auth Api" - desc: "API for ppanel" - author: "Tension" - email: "tension@ppanel.com" - version: "0.0.1" + title: "App Auth Api" + desc: "API for ppanel" + author: "Tension" + email: "tension@ppanel.com" + version: "0.0.1" ) import ( - "../types.api" + "../types.api" ) type ( - AppAuthCheckRequest { - Method string `json:"method" validate:"required" validate:"required,oneof=device email mobile"` - Account string `json:"account"` - Identifier string `json:"identifier" validate:"required"` - UserAgent string `json:"user_agent" validate:"required,oneof=windows mac linux android ios harmony"` - AreaCode string `json:"area_code"` - } - AppAuthCheckResponse { - Status bool - } - AppAuthRequest { - Method string `json:"method" validate:"required" validate:"required,oneof=device email mobile"` - Account string `json:"account"` - Password string `json:"password"` - Identifier string `json:"identifier" validate:"required"` - UserAgent string `json:"user_agent" validate:"required,oneof=windows mac linux android ios harmony"` - Code string `json:"code"` - Invite string `json:"invite"` - AreaCode string `json:"area_code"` - CfToken string `json:"cf_token,optional"` - } - AppAuthRespone { - Token string `json:"token"` - } - AppSendCodeRequest { - Method string `json:"method" validate:"required" validate:"required,oneof=email mobile"` - Account string `json:"account"` - AreaCode string `json:"area_code"` - CfToken string `json:"cf_token,optional"` - } - AppSendCodeRespone { - Status bool `json:"status"` - Code string `json:"code,omitempty"` - } - AppConfigRequest { - UserAgent string `json:"user_agent" validate:"required,oneof=windows mac linux android ios harmony"` - } - AppConfigResponse { - EncryptionKey string `json:"encryption_key"` - EncryptionMethod string `json:"encryption_method"` - Domains []string `json:"domains"` - StartupPicture string `json:"startup_picture"` - StartupPictureSkipTime int64 `json:"startup_picture_skip_time"` - Application AppInfo `json:"applications"` - OfficialEmail string `json:"official_email"` - OfficialWebsite string `json:"official_website"` - OfficialTelegram string `json:"official_telegram"` - OfficialTelephone string `json:"official_telephone"` - InvitationLink string `json:"invitation_link"` - KrWebsiteId string `json:"kr_website_id"` - } - AppInfo { - Id int64 `json:"id"` - Name string `json:"name"` - Description string `json:"description"` - Url string `json:"url"` - Version string `json:"version"` - VersionDescription string `json:"version_description"` - IsDefault bool `json:"is_default"` - } + AppAuthCheckRequest { + Method string `json:"method" validate:"required" validate:"required,oneof=device email mobile"` + Account string `json:"account"` + Identifier string `json:"identifier" validate:"required"` + UserAgent string `json:"user_agent" validate:"required,oneof=windows mac linux android ios harmony"` + AreaCode string `json:"area_code"` + } + AppAuthCheckResponse { + Status bool + } + AppAuthRequest { + Method string `json:"method" validate:"required" validate:"required,oneof=device email mobile"` + Account string `json:"account"` + Password string `json:"password"` + Identifier string `json:"identifier" validate:"required"` + UserAgent string `json:"user_agent" validate:"required,oneof=windows mac linux android ios harmony"` + Code string `json:"code"` + Invite string `json:"invite"` + AreaCode string `json:"area_code"` + CfToken string `json:"cf_token,optional"` + } + AppAuthRespone { + Token string `json:"token"` + } + AppSendCodeRequest { + Method string `json:"method" validate:"required" validate:"required,oneof=email mobile"` + Account string `json:"account"` + AreaCode string `json:"area_code"` + CfToken string `json:"cf_token,optional"` + } + AppSendCodeRespone { + Status bool `json:"status"` + Code string `json:"code,omitempty"` + } + AppConfigRequest { + UserAgent string `json:"user_agent" validate:"required,oneof=windows mac linux android ios harmony"` + } + AppConfigResponse { + EncryptionKey string `json:"encryption_key"` + EncryptionMethod string `json:"encryption_method"` + Domains []string `json:"domains"` + StartupPicture string `json:"startup_picture"` + StartupPictureSkipTime int64 `json:"startup_picture_skip_time"` + Application AppInfo `json:"applications"` + OfficialEmail string `json:"official_email"` + OfficialWebsite string `json:"official_website"` + OfficialTelegram string `json:"official_telegram"` + OfficialTelephone string `json:"official_telephone"` + InvitationLink string `json:"invitation_link"` + KrWebsiteId string `json:"kr_website_id"` + } + AppInfo { + Id int64 `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + Url string `json:"url"` + Version string `json:"version"` + VersionDescription string `json:"version_description"` + IsDefault bool `json:"is_default"` + } ) @server( - prefix: v1/app/auth - group: app/auth - middleware: AppMiddleware + prefix: v1/app/auth + group: app/auth + middleware: AppMiddleware ) service ppanel { - @doc "Check Account" - @handler Check - post /check (AppAuthCheckRequest) returns (AppAuthCheckResponse) + @doc "Check Account" + @handler Check + post /check (AppAuthCheckRequest) returns (AppAuthCheckResponse) - @doc "Login" - @handler Login - post /login (AppAuthRequest) returns (AppAuthRespone) + @doc "Login" + @handler Login + post /login (AppAuthRequest) returns (AppAuthRespone) - @doc "Register" - @handler Register - post /register (AppAuthRequest) returns (AppAuthRespone) + @doc "Register" + @handler Register + post /register (AppAuthRequest) returns (AppAuthRespone) - @doc "Reset Password" - @handler ResetPassword - post /reset_password (AppAuthRequest) returns (AppAuthRespone) - - @doc "GetAppConfig" - @handler GetAppConfig - post /config (AppConfigRequest) returns (AppConfigResponse) -} + @doc "Reset Password" + @handler ResetPassword + post /reset_password (AppAuthRequest) returns (AppAuthRespone) + @doc "GetAppConfig" + @handler GetAppConfig + post /config (AppConfigRequest) returns (AppConfigResponse) +} \ No newline at end of file diff --git a/apis/app/document.api b/apis/app/document.api index 6cc4c71..a4c21e5 100644 --- a/apis/app/document.api +++ b/apis/app/document.api @@ -1,27 +1,27 @@ syntax = "v1" info( - title: "Document API" - desc: "API for ppanel" - author: "Tension" - email: "tension@ppanel.com" - version: "0.0.1" + title: "Document API" + desc: "API for ppanel" + author: "Tension" + email: "tension@ppanel.com" + version: "0.0.1" ) import "../types.api" @server ( - prefix: v1/app/document - group: app/document - middleware: AppMiddleware,AuthMiddleware + prefix: v1/app/document + group: app/document + middleware: AppMiddleware,AuthMiddleware ) service ppanel { - @doc "Get document list" - @handler QueryDocumentList - get /list returns (QueryDocumentListResponse) + @doc "Get document list" + @handler QueryDocumentList + get /list returns (QueryDocumentListResponse) - @doc "Get document detail" - @handler QueryDocumentDetail - get /detail (QueryDocumentDetailRequest) returns (Document) + @doc "Get document detail" + @handler QueryDocumentDetail + get /detail (QueryDocumentDetailRequest) returns (Document) } \ No newline at end of file diff --git a/apis/app/node.api b/apis/app/node.api index b2434b2..c503e21 100644 --- a/apis/app/node.api +++ b/apis/app/node.api @@ -1,49 +1,44 @@ syntax = "v1" - info( - title: "App Node Api" - desc: "API for ppanel" - author: "Tension" - email: "tension@ppanel.com" - version: "0.0.1" + title: "App Node Api" + desc: "API for ppanel" + author: "Tension" + email: "tension@ppanel.com" + version: "0.0.1" ) import "../types.api" -type( +type ( + AppRuleGroupListResponse { + Total int64 `json:"total"` + List []ServerRuleGroup `json:"list"` + } + AppUserSubscbribeNodeRequest { + Id int64 `form:"id" validate:"required"` + } - AppRuleGroupListResponse { - Total int64 `json:"total"` - List []ServerRuleGroup `json:"list"` - } - - AppUserSubscbribeNodeRequest { - Id int64 `form:"id" validate:"required"` - } - - AppUserSubscbribeNodeResponse{ - List []AppUserSubscbribeNode `json:"list"` - } + AppUserSubscbribeNodeResponse { + List []AppUserSubscbribeNode `json:"list"` + } ) @server ( - prefix: v1/app/node - group: app/node - middleware: AppMiddleware,AuthMiddleware + prefix: v1/app/node + group: app/node + middleware: AppMiddleware,AuthMiddleware ) service ppanel { + @doc "Get Node list" + @handler GetNodeList + get /list (AppUserSubscbribeNodeRequest) returns(AppUserSubscbribeNodeResponse) - - @doc "Get Node list" - @handler GetNodeList - get /list (AppUserSubscbribeNodeRequest) returns(AppUserSubscbribeNodeResponse) - - @doc "Get rule group list" - @handler GetRuleGroupList - get /rule_group_list returns (AppRuleGroupListResponse) + @doc "Get rule group list" + @handler GetRuleGroupList + get /rule_group_list returns (AppRuleGroupListResponse) } \ No newline at end of file diff --git a/apis/app/order.api b/apis/app/order.api index 959ff40..7586e01 100644 --- a/apis/app/order.api +++ b/apis/app/order.api @@ -12,7 +12,6 @@ import ( "../types.api" ) - @server ( prefix: v1/app/order group: app/order @@ -54,5 +53,4 @@ service ppanel { @doc "Get order list" @handler QueryOrderList get /list (QueryOrderListRequest) returns (QueryOrderListResponse) -} - +} \ No newline at end of file diff --git a/apis/app/payment.api b/apis/app/payment.api index 9769a47..219089a 100644 --- a/apis/app/payment.api +++ b/apis/app/payment.api @@ -19,5 +19,4 @@ service ppanel { @doc "Get available payment methods" @handler GetAvailablePaymentMethods get /methods returns (GetAvailablePaymentMethodsResponse) -} - +} \ No newline at end of file diff --git a/apis/app/subscribe.api b/apis/app/subscribe.api index 0a4a05a..8d05149 100644 --- a/apis/app/subscribe.api +++ b/apis/app/subscribe.api @@ -1,75 +1,70 @@ syntax = "v1" info( - title: "Subscribe API" - desc: "API for ppanel" - author: "Tension" - email: "tension@ppanel.com" - version: "0.0.1" + title: "Subscribe API" + desc: "API for ppanel" + author: "Tension" + email: "tension@ppanel.com" + version: "0.0.1" ) import "../types.api" - type ( - QueryUserSubscribeResp { - Data []UserSubscribeData `json:"data"` - } + QueryUserSubscribeResp { + Data []UserSubscribeData `json:"data"` + } - UserSubscribeData { - SubscribeId int64 `json:"subscribe_id"` - UserSubscribeId int64 `json:"user_subscribe_id"` - } + UserSubscribeData { + SubscribeId int64 `json:"subscribe_id"` + UserSubscribeId int64 `json:"user_subscribe_id"` + } + UserSubscribeResetPeriodRequest { + UserSubscribeId int64 `json:"user_subscribe_id"` + } - UserSubscribeResetPeriodRequest { - UserSubscribeId int64 `json:"user_subscribe_id"` - } + UserSubscribeResetPeriodResponse { + Status bool `json:"status"` + } - UserSubscribeResetPeriodResponse { - Status bool `json:"status"` - } + AppUserSubscribeRequest { + ContainsNodes *bool `form:"contains_nodes"` + } - AppUserSubscribeRequest { - ContainsNodes *bool `form:"contains_nodes"` - } - - AppUserSubscbribeResponse { - List []AppUserSubcbribe `json:"list"` - } + AppUserSubscbribeResponse { + List []AppUserSubcbribe `json:"list"` + } ) @server( - prefix: v1/app/subscribe - group: app/subscribe - middleware: AppMiddleware,AuthMiddleware + prefix: v1/app/subscribe + group: app/subscribe + middleware: AppMiddleware,AuthMiddleware ) - service ppanel { - @doc "Get subscribe list" - @handler QuerySubscribeList - get /list returns (QuerySubscribeListResponse) + @doc "Get subscribe list" + @handler QuerySubscribeList + get /list returns (QuerySubscribeListResponse) - @doc "Get subscribe group list" - @handler QuerySubscribeGroupList - get /group/list returns (QuerySubscribeGroupListResponse) + @doc "Get subscribe group list" + @handler QuerySubscribeGroupList + get /group/list returns (QuerySubscribeGroupListResponse) - @doc "Get application config" - @handler QueryApplicationConfig - get /application/config returns (ApplicationResponse) + @doc "Get application config" + @handler QueryApplicationConfig + get /application/config returns (ApplicationResponse) - @doc "Get Already subscribed to package" - @handler QueryUserAlreadySubscribe - get /user/already_subscribe returns (QueryUserSubscribeResp) + @doc "Get Already subscribed to package" + @handler QueryUserAlreadySubscribe + get /user/already_subscribe returns (QueryUserSubscribeResp) + @doc "Get Available subscriptions for users" + @handler QueryUserAvailableUserSubscribe + get /user/available_subscribe (AppUserSubscribeRequest) returns (AppUserSubscbribeResponse) - @doc "Get Available subscriptions for users" - @handler QueryUserAvailableUserSubscribe - get /user/available_subscribe (AppUserSubscribeRequest) returns (AppUserSubscbribeResponse) - - @doc "Reset user subscription period" - @handler ResetUserSubscribePeriod - post /reset/period (UserSubscribeResetPeriodRequest) returns (UserSubscribeResetPeriodResponse) -} - + @doc "Reset user subscription period" + @handler ResetUserSubscribePeriod + post /reset/period (UserSubscribeResetPeriodRequest) returns (UserSubscribeResetPeriodResponse) +} \ No newline at end of file diff --git a/apis/app/user.api b/apis/app/user.api index 67fb380..f85a81c 100644 --- a/apis/app/user.api +++ b/apis/app/user.api @@ -15,9 +15,9 @@ import ( type ( UserInfoResponse { Id int64 `json:"id"` - Balance int64 `json:"balance"` + Balance int64 `json:"balance"` Email string `json:"email"` - RefererId int64 `json:"referer_id"` + RefererId int64 `json:"referer_id"` ReferCode string `json:"refer_code"` Avatar string `json:"avatar"` AreaCode string `json:"area_code"` @@ -34,21 +34,21 @@ type ( Code string `json:"code"` } - GetUserOnlineTimeStatisticsResponse{ - WeeklyStats []WeeklyStat`json:"weekly_stats"` - ConnectionRecords ConnectionRecords`json:"connection_records"` + GetUserOnlineTimeStatisticsResponse { + WeeklyStats []WeeklyStat `json:"weekly_stats"` + ConnectionRecords ConnectionRecords `json:"connection_records"` } - WeeklyStat{ - Day int `json:"day"` - DayName string `json:"day_name"` - Hours float64 `json:"hours"` + WeeklyStat { + Day int `json:"day"` + DayName string `json:"day_name"` + Hours float64 `json:"hours"` + } + ConnectionRecords { + CurrentContinuousDays int64 `json:"current_continuous_days"` + HistoryContinuousDays int64 `json:"history_continuous_days"` + LongestSingleConnection int64 `json:"longest_single_connection"` } - ConnectionRecords{ - CurrentContinuousDays int64 `json:"current_continuous_days"` - HistoryContinuousDays int64 `json:"history_continuous_days"` - LongestSingleConnection int64 `json:"longest_single_connection"` - } ) @server ( @@ -74,7 +74,7 @@ service ppanel { get /subscribe/traffic_logs (GetUserSubscribeTrafficLogsRequest) returns (GetUserSubscribeTrafficLogsResponse) @doc "Get user online time total" - @handler GetUserOnlineTimeStatistics + @handler GetUserOnlineTimeStatistics get /online_time/statistics returns (GetUserOnlineTimeStatisticsResponse) @doc "Query User Affiliate List" @@ -85,6 +85,4 @@ service ppanel { @handler QueryUserAffiliate get /affiliate/count returns (QueryUserAffiliateCountResponse) - -} - +} \ No newline at end of file diff --git a/apis/app/ws.api b/apis/app/ws.api index a3a26be..410b4ed 100644 --- a/apis/app/ws.api +++ b/apis/app/ws.api @@ -1,23 +1,21 @@ syntax = "v1" info( - title: "App Heartbeat Api" - desc: "API for ppanel" - author: "Tension" - email: "tension@ppanel.com" - version: "0.0.1" + title: "App Heartbeat Api" + desc: "API for ppanel" + author: "Tension" + email: "tension@ppanel.com" + version: "0.0.1" ) - @server( - prefix: v1/app/ws - group: app/ws - middleware: AuthMiddleware + prefix: v1/app/ws + group: app/ws + middleware: AuthMiddleware ) - service ppanel { - @doc "App heartbeat" - @handler AppWs - get /:userid/:identifier + @doc "App heartbeat" + @handler AppWs + get /:userid/:identifier } \ No newline at end of file diff --git a/apis/auth/auth.api b/apis/auth/auth.api index 22dbe10..fcb3ec0 100644 --- a/apis/auth/auth.api +++ b/apis/auth/auth.api @@ -11,11 +11,11 @@ info ( type ( // User login request UserLoginRequest { - Email string `json:"email" validate:"required"` - Password string `json:"password" validate:"required"` - IP string `header:"X-Original-Forwarded-For"` + Email string `json:"email" validate:"required"` + Password string `json:"password" validate:"required"` + IP string `header:"X-Original-Forwarded-For"` UserAgent string `header:"User-Agent"` - CfToken string `json:"cf_token,optional"` + CfToken string `json:"cf_token,optional"` } // Check user is exist request CheckUserRequest { @@ -23,32 +23,32 @@ type ( } // User login response CheckUserResponse { - exist bool `json:"exist"` + Exist bool `json:"exist"` } // User login response UserRegisterRequest { - Email string `json:"email" validate:"required"` - Password string `json:"password" validate:"required"` - Invite string `json:"invite,optional"` - Code string `json:"code,optional"` - IP string `header:"X-Original-Forwarded-For"` + Email string `json:"email" validate:"required"` + Password string `json:"password" validate:"required"` + Invite string `json:"invite,optional"` + Code string `json:"code,optional"` + IP string `header:"X-Original-Forwarded-For"` UserAgent string `header:"User-Agent"` - CfToken string `json:"cf_token,optional"` + CfToken string `json:"cf_token,optional"` } // User login response ResetPasswordRequest { - Email string `json:"email" validate:"required"` - Password string `json:"password" validate:"required"` - Code string `json:"code,optional"` - IP string `header:"X-Original-Forwarded-For"` + Email string `json:"email" validate:"required"` + Password string `json:"password" validate:"required"` + Code string `json:"code,optional"` + IP string `header:"X-Original-Forwarded-For"` UserAgent string `header:"User-Agent"` - CfToken string `json:"cf_token,optional"` + CfToken string `json:"cf_token,optional"` } LoginResponse { Token string `json:"token"` } OAthLoginRequest { - Method string `json:"method" validate:"required"` // google, facebook, apple, telegram, github etc. + Method string `json:"method" validate:"required"` // google, facebook, apple, telegram, github etc. Redirect string `json:"redirect"` } OAuthLoginResponse { @@ -56,7 +56,7 @@ type ( } OAuthLoginGetTokenRequest { - Method string `json:"method" validate:"required"` // google, facebook, apple, telegram, github etc. + Method string `json:"method" validate:"required"` // google, facebook, apple, telegram, github etc. Callback interface{} `json:"callback" validate:"required"` } @@ -76,7 +76,7 @@ type ( } // User login response TelephoneCheckUserResponse { - exist bool `json:"exist"` + Exist bool `json:"exist"` } // User login response TelephoneRegisterRequest { @@ -103,7 +103,7 @@ type ( State string `form:"state"` } GoogleLoginCallbackRequest { - Code string `form:"code"` + Code string `form:"code"` State string `form:"state"` } ) @@ -162,5 +162,4 @@ service ppanel { @doc "Apple Login Callback" @handler AppleLoginCallback post /callback/apple (AppleLoginCallbackRequest) -} - +} \ No newline at end of file diff --git a/apis/common.api b/apis/common.api index 545c3c9..b453863 100644 --- a/apis/common.api +++ b/apis/common.api @@ -70,14 +70,14 @@ type ( List []Ads `json:"list"` } CheckVerificationCodeRequest { - Method string `json:"method" validate:"required,oneof=email mobile"` + Method string `json:"method" validate:"required,oneof=email mobile"` Account string `json:"account" validate:"required"` - Code string `json:"code" validate:"required"` - Type uint8 `json:"type" validate:"required"` + Code string `json:"code" validate:"required"` + Type uint8 `json:"type" validate:"required"` } - CheckVerificationCodeRespone{ - Status bool `json:"status"` + CheckVerificationCodeRespone { + Status bool `json:"status"` } ) @@ -121,5 +121,4 @@ service ppanel { @doc "Check verification code" @handler CheckVerificationCode post /check_verification_code (CheckVerificationCodeRequest) returns (CheckVerificationCodeRespone) -} - +} \ No newline at end of file diff --git a/apis/node/node.api b/apis/node/node.api index 8195854..eef6027 100644 --- a/apis/node/node.api +++ b/apis/node/node.api @@ -44,9 +44,9 @@ type ( ServerCommon } GetServerConfigResponse { - Basic ServerBasic `json:"basic"` - Protocol string `json:"protocol"` - Config interface{} `json:"config"` + Basic ServerBasic `json:"basic"` + Protocol string `json:"protocol"` + Config interface{} `json:"config"` } ServerBasic { PushInterval int64 `json:"push_interval"` @@ -60,8 +60,8 @@ type ( ServerUser { Id int64 `json:"id"` UUID string `json:"uuid"` - SpeedLimit int64 `json:"speed_limit"` - DeviceLimit int64 `json:"device_limit"` + SpeedLimit int64 `json:"speed_limit"` + DeviceLimit int64 `json:"device_limit"` } GetServerUserListRequest { ServerCommon @@ -117,5 +117,4 @@ service ppanel { @doc "Push online users" @handler PushOnlineUsers post /online (OnlineUsersRequest) -} - +} \ No newline at end of file diff --git a/apis/public/announcement.api b/apis/public/announcement.api index 664ac4c..251288e 100644 --- a/apis/public/announcement.api +++ b/apis/public/announcement.api @@ -10,7 +10,6 @@ info ( import "../types.api" - @server ( prefix: v1/public/announcement group: public/announcement @@ -20,5 +19,4 @@ service ppanel { @doc "Query announcement" @handler QueryAnnouncement get /list (QueryAnnouncementRequest) returns (QueryAnnouncementResponse) -} - +} \ No newline at end of file diff --git a/apis/public/document.api b/apis/public/document.api index 41d7291..beef557 100644 --- a/apis/public/document.api +++ b/apis/public/document.api @@ -1,28 +1,27 @@ syntax = "v1" info( - title: "Document API" - desc: "API for ppanel" - author: "Tension" - email: "tension@ppanel.com" - version: "0.0.1" + title: "Document API" + desc: "API for ppanel" + author: "Tension" + email: "tension@ppanel.com" + version: "0.0.1" ) import "../types.api" - @server ( - prefix: v1/public/document - group: public/document - middleware: AuthMiddleware + prefix: v1/public/document + group: public/document + middleware: AuthMiddleware ) service ppanel { - @doc "Get document list" - @handler QueryDocumentList - get /list returns (QueryDocumentListResponse) + @doc "Get document list" + @handler QueryDocumentList + get /list returns (QueryDocumentListResponse) - @doc "Get document detail" - @handler QueryDocumentDetail - get /detail (QueryDocumentDetailRequest) returns (Document) + @doc "Get document detail" + @handler QueryDocumentDetail + get /detail (QueryDocumentDetailRequest) returns (Document) } \ No newline at end of file diff --git a/apis/public/order.api b/apis/public/order.api index 0db556f..0111102 100644 --- a/apis/public/order.api +++ b/apis/public/order.api @@ -47,5 +47,4 @@ service ppanel { @doc "Get order list" @handler QueryOrderList get /list (QueryOrderListRequest) returns (QueryOrderListResponse) -} - +} \ No newline at end of file diff --git a/apis/public/payment.api b/apis/public/payment.api index 247f9d4..dbb3e7e 100644 --- a/apis/public/payment.api +++ b/apis/public/payment.api @@ -10,7 +10,6 @@ info ( import "../types.api" - @server ( prefix: v1/public/payment group: public/payment @@ -20,5 +19,4 @@ service ppanel { @doc "Get available payment methods" @handler GetAvailablePaymentMethods get /methods returns (GetAvailablePaymentMethodsResponse) -} - +} \ No newline at end of file diff --git a/apis/public/portal.api b/apis/public/portal.api index 3130b70..11fc8de 100644 --- a/apis/public/portal.api +++ b/apis/public/portal.api @@ -19,7 +19,7 @@ type ( SubscribeId int64 `json:"subscribe_id"` Quantity int64 `json:"quantity"` Coupon string `json:"coupon,omitempty"` - InviteCode string `json:"invite_code,omitempty"` + InviteCode string `json:"invite_code,omitempty"` TurnstileToken string `json:"turnstile_token,omitempty"` } PortalPurchaseResponse { @@ -29,7 +29,7 @@ type ( List []Subscribe `json:"list"` } PrePurchaseOrderRequest { - Payment int64 `json:"payment,omitempty"` + Payment int64 `json:"payment,omitempty"` SubscribeId int64 `json:"subscribe_id"` Quantity int64 `json:"quantity"` Coupon string `json:"coupon,omitempty"` @@ -92,5 +92,4 @@ service ppanel { @doc "Purchase Checkout" @handler PurchaseCheckout post /order/checkout (CheckoutOrderRequest) returns (CheckoutOrderResponse) -} - +} \ No newline at end of file diff --git a/apis/public/subscribe.api b/apis/public/subscribe.api index 98fd2c2..53bf015 100644 --- a/apis/public/subscribe.api +++ b/apis/public/subscribe.api @@ -9,7 +9,7 @@ info ( ) import "../types.api" - + @server ( prefix: v1/public/subscribe group: public/subscribe @@ -27,5 +27,4 @@ service ppanel { @doc "Get application config" @handler QueryApplicationConfig get /application/config returns (ApplicationResponse) -} - +} \ No newline at end of file diff --git a/apis/public/ticket.api b/apis/public/ticket.api index b5a846b..d942e30 100644 --- a/apis/public/ticket.api +++ b/apis/public/ticket.api @@ -11,10 +11,9 @@ info ( import "../types.api" type ( - GetUserTicketListResponse { - Total int64 `json:"total"` - List []Ticket `json:"list"` + Total int64 `json:"total"` + List []Ticket `json:"list"` } CreateUserTicketRequest { Title string `json:"title"` @@ -34,10 +33,10 @@ type ( Status *uint8 `json:"status" validate:"required"` } CreateUserTicketFollowRequest { - TicketId int64 `json:"ticket_id"` - From string `json:"from"` - Type uint8 `json:"type"` - Content string `json:"content"` + TicketId int64 `json:"ticket_id"` + From string `json:"from"` + Type uint8 `json:"type"` + Content string `json:"content"` } ) @@ -66,5 +65,4 @@ service ppanel { @doc "Create ticket" @handler CreateUserTicket post / (CreateUserTicketRequest) -} - +} \ No newline at end of file diff --git a/apis/public/user.api b/apis/public/user.api index a2c5a53..7309188 100644 --- a/apis/public/user.api +++ b/apis/public/user.api @@ -95,22 +95,22 @@ type ( GetSubscribeLogResponse { List []UserSubscribeLog `json:"list"` - Total int64 `json:"total"` + Total int64 `json:"total"` } - UpdateBindMobileRequest{ - AreaCode string `json:"area_code" validate:"required"` - Mobile string `json:"mobile" validate:"required"` - Code string `json:"code" validate:"required"` + UpdateBindMobileRequest { + AreaCode string `json:"area_code" validate:"required"` + Mobile string `json:"mobile" validate:"required"` + Code string `json:"code" validate:"required"` } - UpdateBindEmailRequest{ - Email string `json:"email" validate:"required"` + UpdateBindEmailRequest { + Email string `json:"email" validate:"required"` } VerifyEmailRequest { - Email string `json:"email" validate:"required"` - Code string `json:"code" validate:"required"` + Email string `json:"email" validate:"required"` + Code string `json:"code" validate:"required"` } ) @@ -207,5 +207,4 @@ service ppanel { @doc "Update Bind Email" @handler UpdateBindEmail put /bind_email (UpdateBindEmailRequest) -} - +} \ No newline at end of file diff --git a/apis/swagger_app.api b/apis/swagger_app.api index c4ff674..2a0a5c5 100644 --- a/apis/swagger_app.api +++ b/apis/swagger_app.api @@ -1,21 +1,21 @@ syntax = "v1" info( - title: "App API" - desc: "API for ppanel" - author: "Tension" - email: "tension@ppanel.com" - version: "0.0.1" + title: "App API" + desc: "API for ppanel" + author: "Tension" + email: "tension@ppanel.com" + version: "0.0.1" ) import ( - "./app/auth.api" - "./app/user.api" - "./app/node.api" - "./app/ws.api" - "./app/order.api" - "./app/announcement.api" - "./app/payment.api" - "./app/document.api" - "./app/subscribe.api" + "./app/auth.api" + "./app/user.api" + "./app/node.api" + "./app/ws.api" + "./app/order.api" + "./app/announcement.api" + "./app/payment.api" + "./app/document.api" + "./app/subscribe.api" ) \ No newline at end of file diff --git a/apis/swagger_common.api b/apis/swagger_common.api index 518b655..3d7165d 100644 --- a/apis/swagger_common.api +++ b/apis/swagger_common.api @@ -1,14 +1,14 @@ syntax = "v1" info( - title: "common API" - desc: "API for ppanel" - author: "Tension" - email: "tension@ppanel.com" - version: "0.0.1" + title: "common API" + desc: "API for ppanel" + author: "Tension" + email: "tension@ppanel.com" + version: "0.0.1" ) import ( - "./common.api" - "./auth/auth.api" + "./common.api" + "./auth/auth.api" ) \ No newline at end of file diff --git a/apis/swagger_node.api b/apis/swagger_node.api index 6a2ec35..fe9242b 100644 --- a/apis/swagger_node.api +++ b/apis/swagger_node.api @@ -1,11 +1,11 @@ syntax = "v1" info( - title: "Node API" - desc: "API for ppanel" - author: "Tension" - email: "tension@ppanel.com" - version: "0.0.1" + title: "Node API" + desc: "API for ppanel" + author: "Tension" + email: "tension@ppanel.com" + version: "0.0.1" ) import "./node/node.api" \ No newline at end of file diff --git a/apis/swagger_user.api b/apis/swagger_user.api index bd27b82..4c91862 100644 --- a/apis/swagger_user.api +++ b/apis/swagger_user.api @@ -1,19 +1,19 @@ syntax = "v1" info( - title: "User API" - desc: "API for ppanel" - author: "Tension" - email: "tension@ppanel.com" - version: "0.0.1" + title: "User API" + desc: "API for ppanel" + author: "Tension" + email: "tension@ppanel.com" + version: "0.0.1" ) import ( - "./public/user.api" - "./public/subscribe.api" - "./public/order.api" - "./public/announcement.api" - "./public/ticket.api" - "./public/payment.api" - "./public/document.api" - "./public/portal.api" + "./public/user.api" + "./public/subscribe.api" + "./public/order.api" + "./public/announcement.api" + "./public/ticket.api" + "./public/payment.api" + "./public/document.api" + "./public/portal.api" ) \ No newline at end of file diff --git a/apis/types.api b/apis/types.api index e06c984..b24c445 100644 --- a/apis/types.api +++ b/apis/types.api @@ -426,7 +426,7 @@ type ( Subscribe Subscribe `json:"subscribe"` StartTime int64 `json:"start_time"` ExpireTime int64 `json:"expire_time"` - FinishedAt int64 `json:"finished_at"` + FinishedAt int64 `json:"finished_at"` ResetTime int64 `json:"reset_time"` Traffic int64 `json:"traffic"` Download int64 `json:"download"` @@ -505,7 +505,7 @@ type ( } ServerRuleGroup { Id int64 `json:"id"` - Icon string `json:"icon"` + Icon string `json:"icon"` Name string `json:"name" validate:"required"` Tags []string `json:"tags"` Rules string `json:"rules"` @@ -557,8 +557,8 @@ type ( //public order PurchaseOrderRequest { SubscribeId int64 `json:"subscribe_id"` - Quantity int64 `json:"quantity" validate:"required,gt=0"` - Payment int64 `json:"payment,omitempty"` + Quantity int64 `json:"quantity" validate:"required,gt=0"` + Payment int64 `json:"payment,omitempty"` Coupon string `json:"coupon,omitempty"` } PreOrderResponse { @@ -713,38 +713,37 @@ type ( TotalCommission int64 `json:"total_commission"` } - AppUserSubcbribe{ - Id int64 `json:"id"` - Name string `json:"name"` - Upload int64 `json:"upload"` - Traffic int64 `json:"traffic"` - Download int64 `json:"download"` - DeviceLimit int64 `json:"device_limit"` - StartTime string `json:"start_time"` - ExpireTime string `json:"expire_time"` - List []AppUserSubscbribeNode `json:"list"` + AppUserSubcbribe { + Id int64 `json:"id"` + Name string `json:"name"` + Upload int64 `json:"upload"` + Traffic int64 `json:"traffic"` + Download int64 `json:"download"` + DeviceLimit int64 `json:"device_limit"` + StartTime string `json:"start_time"` + ExpireTime string `json:"expire_time"` + List []AppUserSubscbribeNode `json:"list"` } - AppUserSubscbribeNode{ - Id int64 `json:"id"` - Name string `json:"name"` - Uuid string `json:"uuid"` - Protocol string `json:"protocol"` - RelayMode string `json:"relay_mode"` - RelayNode string `json:"relay_node"` - ServerAddr string `json:"server_addr"` - SpeedLimit int `json:"speed_limit"` - Tags []string `json:"tags"` - Traffic int64 `json:"traffic"` - TrafficRatio float64 `json:"traffic_ratio"` - Upload int64 `json:"upload"` - Config string `json:"config"` - Country string `json:"country"` - City string `json:"city"` - Latitude string `json:"latitude"` - Longitude string `json:"longitude"` - CreatedAt int64 `json:"created_at"` - Download int64 `json:"download"` + AppUserSubscbribeNode { + Id int64 `json:"id"` + Name string `json:"name"` + Uuid string `json:"uuid"` + Protocol string `json:"protocol"` + RelayMode string `json:"relay_mode"` + RelayNode string `json:"relay_node"` + ServerAddr string `json:"server_addr"` + SpeedLimit int `json:"speed_limit"` + Tags []string `json:"tags"` + Traffic int64 `json:"traffic"` + TrafficRatio float64 `json:"traffic_ratio"` + Upload int64 `json:"upload"` + Config string `json:"config"` + Country string `json:"country"` + City string `json:"city"` + Latitude string `json:"latitude"` + Longitude string `json:"longitude"` + CreatedAt int64 `json:"created_at"` + Download int64 `json:"download"` } -) - +) \ No newline at end of file