syntax = "v1"

info(
    title: "store link"
    desc: "存算联动服务"
    author: "tzwang"
    email: "tzwang@qq.com"
)

type (
    UploadLinkImageReq {
        PartId int64 `json:"partId"`
        FilePath string `json:"filePath"`
    }

    UploadLinkImageResp {
        Success bool `json:"success"`
        Image *ImageSl `json:"image"`
        ErrorMsg string `json:"errorMsg"`
    }

    ImageSl {
        ImageId string `json:"imageId"`
        ImageName string `json:"imageName"`
        ImageStatus string `json:"imageStatus"`
    }

    GetLinkImageListReq {
        PartId int64 `json:"partId"`
    }

    GetLinkImageListResp {
        Success bool `json:"success"`
        Images []*ImageSl `json:"images"`
        ErrorMsg string `json:"errorMsg"`
    }

    DeleteLinkImageReq {
        PartId int64 `json:"partId"`
        ImageId string `json:"imageId"`
    }

    DeleteLinkImageResp {
        Success bool `json:"success"`
        ErrorMsg string `json:"errorMsg"`
    }

    SubmitLinkTaskReq {
        PartId int64 `json:"partId"`
        ImageId string `json:"imageId,optional"`
        Cmd string `json:"cmd,optional"`
        Params []*ParamSl `json:"params,optional"`
        Envs []*EnvSl `json:"envs,optional"`
        ResourceId string `json:"resourceId,optional"`
    }

    EnvSl {
        Key string `json:"key"`
        Val string `json:"value"`
    }

    ParamSl {
        Key string `json:"key"`
        Val string `json:"value"`
    }

    SubmitLinkTaskResp {
        Success bool `json:"success"`
        TaskId string `json:"taskId"`
        ErrorMsg string `json:"errorMsg"`
    }

    GetLinkTaskReq {
        PartId int64 `json:"partId"`
        TaskId string `json:"taskId"`
    }

    GetLinkTaskResp {
        Success bool `json:"success"`
        Task *TaskSl `json:"task"`
        ErrorMsg string `json:"errorMsg"`
    }

    DeleteLinkTaskReq {
        PartId int64 `json:"partId"`
        TaskId string `json:"taskId"`
    }

    DeleteLinkTaskResp {
        Success bool `json:"success"`
        ErrorMsg string `json:"errorMsg"`
    }

    TaskSl {
        TaskId string `json:"taskId"`
        TaskName string `json:"taskName"`
        TaskStatus string `json:"TaskStatus"`
        StartedAt int64 `json:"startedAt"`
        CompletedAt int64 `json:"completedAt"`
    }

    GetParticipantsReq {

    }

    GetParticipantsResp {
        Success bool `json:"success"`
        Participants []*ParticipantSl `json:"participant"`
    }

    GetResourceSpecsReq {
        PartId int64 `json:"partId"`
    }

    GetResourceSpecsResp {
        Success bool `json:"success"`
        ResourceSpecs []*ResourceSpecSl `json:"resourceSpecs"`
        ErrorMsg string `json:"errorMsg"`
    }

    ResourceSpecSl {
        ParticipantId int64 `json:"participantId"`
        ParticipantName string `json:"participantName"`
        SpecName string `json:"specName"`
        SpecId string `json:"specId"`
        specPrice float64 `json:"specPrice"`
    }

    ParticipantSl {
        ParticipantId int64 `json:"id"`
        ParticipantName string `json:"name"`
        ParticipantType string `json:"type"`
    }
)