type (
	Response {
		Data interface{} `json:"data"`
		Code int         `json:"code"`
	}

	PasswordRequest {
		Password string `json:"password"`
	}
	CreateJupyterInfo {
		Password     string `json:"password"`
		Workspace    string `json:"workspace"`
		Image        string `json:"image"`
		Tag          string `json:"tag"`
		BaseUrl      string `json:"base_url"`
		Host         string `json:"host"`
		Path         string `json:"path"`
		PathType     string `json:"path_type"`
		ReleaseName  string `json:"release_name"`
		Namespace    string `json:"namespace"`
		Chart        string `json:"chart"`
		IngressClass string `json:"ingress_class" default:""`
	}
	DeleteJupyterInfo {
		ReleaseName string `json:"release_name"`
		Namespace   string `json:"namespace"`
	}

	ReleaseInfo {
		Namespace string `json:"namespace"`
		Filter    string `json:"filter"`
	}
	ReleaseStatus {
		Namespace    string `json:"namespace"`
		Name         string `json:"name"`
		Revision     string `json:"revision"`
		Updated      string `json:"updated"`
		Status       string `json:"status"`
		Chart        string `json:"chart"`
		ChartVersion string `json:"chart_version"`
		AppVersion   string `json:"app_version"`
	}
)

service jupyter-api {
	@handler GreetHandler
	get /helm/ping returns (Response)
}

service jupyter-api {
	@handler PasswordHandler
	get /helm/password (PasswordRequest) returns (Response)
}

service jupyter-api {
	@doc(
		summary: 启动/创建jupyterlab服务
	)
	@handler StartOpHandler
	post /helm/ops/start (CreateJupyterInfo) returns (Response)
	
	@doc(
		summary: 停止jupyterlab服务
	)
	@handler StopOpHandler
	post /helm/ops/stop (DeleteJupyterInfo) returns (Response)
	
	@doc(
		summary: 更新jupyterlab服务
	)
	@handler UpgradeOpHandler
	post /helm/ops/upgrade (CreateJupyterInfo) returns (Response)
	
	@doc(
		summary: 查看release状态
	)
	@handler StatusOpHandler
	post /helm/ops/status (ReleaseInfo) returns (Response)
}