syntax = "v1"

info(
    title: "Admin 角色API权限管理"
    desc: "管理员角色API权限管理接口"
    author: "team"
    version: "v1"
)

type (
    // 获取角色API权限列表请求
    AdminGetRoleApiListReq {
        RoleId int64 `path:"role_id"`
    }

    // 获取角色API权限列表响应
    AdminGetRoleApiListResp {
        Items []AdminRoleApiInfo `json:"items"`
    }

    // 角色API权限信息
    AdminRoleApiInfo {
        Id          int64  `json:"id"`
        RoleId      int64  `json:"role_id"`
        ApiId       int64  `json:"api_id"`
        ApiName     string `json:"api_name"`
        ApiCode     string `json:"api_code"`
        Method      string `json:"method"`
        Url         string `json:"url"`
        Status      int64  `json:"status"`
        Description string `json:"description"`
    }

    // 分配角色API权限请求
    AdminAssignRoleApiReq {
        RoleId int64   `json:"role_id"`
        ApiIds []int64 `json:"api_ids"`
    }

    // 分配角色API权限响应
    AdminAssignRoleApiResp {
        Success bool `json:"success"`
    }

    // 移除角色API权限请求
    AdminRemoveRoleApiReq {
        RoleId int64   `json:"role_id"`
        ApiIds []int64 `json:"api_ids"`
    }

    // 移除角色API权限响应
    AdminRemoveRoleApiResp {
        Success bool `json:"success"`
    }

    // 更新角色API权限请求
    AdminUpdateRoleApiReq {
        RoleId int64   `json:"role_id"`
        ApiIds []int64 `json:"api_ids"`
    }

    // 更新角色API权限响应
    AdminUpdateRoleApiResp {
        Success bool `json:"success"`
    }

    // 获取所有API列表（用于权限分配）
    AdminGetAllApiListReq {
        Status int64 `form:"status,optional,default=1"`
    }

    // 获取所有API列表响应
    AdminGetAllApiListResp {
        Items []AdminRoleApiInfo `json:"items"`
    }
)

@server (
    prefix: api/v1
    group:  admin_role_api
    middleware: AdminAuthInterceptor
)
service main {
    // 获取角色API权限列表
    @handler AdminGetRoleApiList
    get /admin/role/:role_id/api/list (AdminGetRoleApiListReq) returns (AdminGetRoleApiListResp)

    // 分配角色API权限
    @handler AdminAssignRoleApi
    post /admin/role/api/assign (AdminAssignRoleApiReq) returns (AdminAssignRoleApiResp)

    // 移除角色API权限
    @handler AdminRemoveRoleApi
    post /admin/role/api/remove (AdminRemoveRoleApiReq) returns (AdminRemoveRoleApiResp)

    // 更新角色API权限
    @handler AdminUpdateRoleApi
    put /admin/role/api/update (AdminUpdateRoleApiReq) returns (AdminUpdateRoleApiResp)

    // 获取所有API列表（用于权限分配）
    @handler AdminGetAllApiList
    get /admin/api/all (AdminGetAllApiListReq) returns (AdminGetAllApiListResp)
}
