add donate api with tests