External facing chron jobs

We want to enable users to do reporting from our system on a periodic schedule. So in this specific scenario, temporal will be used on a periodic basis, but defined by an external user (not us). What is the best practice of using temporal to solve this problem?

How your users interact with your application (who controls the api to start workflow executions)?
Do they control when periodic execution stops? Do they control its cancellation/termination?

With cron, you define the cron schedule in WorkflowOptions as configuration so it could be passed in as data input from user. Another way if you need more control is to implement periodic execution with updatable timers, within your workflow code, see samples here (Go), here (Java) and here (TypeScript).