thoughts for solve the question
add more api for outside calling