What does it take to programmatically create a notebook, add code cells to it, and execute them. Is there an API / SDK like solution?