Add a transaction API (bug 925159)