Is there a python binding for Undo/Redo?
Yes, absolutely.

bpy.ops.ed.undo()
bpy.ops.ed.redo()


More operators of that kind here: https://docs.blender.org/api/2.79/bpy.ops.ed.html?highlight=undo#bpy.ops.ed.undo_redo