protocol api + doc