syntax = "v1"

info (
	title: "websocket"// TODO: add title
	desc: // TODO: add description
	author: ""
	email: ""
)

import "basic.api"
service websocket {
	//websocket数据交互
	@handler DataTransferHandler
	get /api/websocket/data_transfer(request) returns (response);
	//云渲染完了通知接口
	@handler RenderNotifyHandler
	post /api/websocket/render_notify(RenderNotifyReq) returns (response);
	//第三方登录通知接口
	@handler ThirdPartyLoginNotifyHandler
	post /api/websocket/third_party_login_notify(ThirdPartyLoginNotifyReq) returns (response);
}

//websocket数据交互
type DataTransferData {
	T string      `json:"t"` //消息类型
	D interface{} `json:"d"` //传递的消息
}
type RenderImageReqMsg { //websocket接受要云渲染处理的数据
	ProductIds       []int64 `json:"product_ids"`                //产品 id
	TemplateTagId    int64   `json:"template_tag_id"`            //模板标签id
	LogoId           int64   `json:"logo_id"`                    //logoid
	AlgorithmVersion string  `json:"algorithm_version,optional"` //算法版本
}
type RenderImageRspMsg { //websocket发送渲染完的数据
	ProductId        int64  `json:"product_id"`                 //产品 id
	TemplateTagId    int64  `json:"template_tag_id"`            //模板标签id
	AlgorithmVersion string `json:"algorithm_version,optional"` //算法版本
	LogoId           int64  `json:"logo_id"`                    //logoid
	Image            string `json:"image"`                      //渲染后的图片
}
type ThirdPartyLoginRspMsg { //websocket三方登录的通知数据
	Token string `json:"token"`
}
//渲染完了通知接口
type RenderNotifyReq {
	Sign string     `json:"sign"`
	Time int64      `json:"time"`
	Info NotifyInfo `json:"info"`
}
type NotifyInfo {
	ProductId        int64  `json:"product_id"`                 //产品id
	TemplateTagId    int64  `json:"template_tag_id"`            //模板标签id
	AlgorithmVersion string `json:"algorithm_version,optional"` //算法版本
	LogoId           int64  `json:"logo_id"`                    //logoid
	Image            string `json:"image"`
}
//第三方登录通知接口
type ThirdPartyLoginNotifyReq {
	Sign string                `json:"sign"`
	Time int64                 `json:"time"`
	Info ThirdPartyLoginNotify `json:"info"`
}
type ThirdPartyLoginNotify {
	WebsocketId uint64 `json:"websocket_id"`
	Token       string `json:"token"`
}