Content can be moved between projects by the Tableau Server admin.
If the data sources are different between the two. The workbook will need to be updated to point to the new data source. Which can be down in a programtic fashion as outlined here : https://tableauandbehold.com/2016/07/22/programmatically-changing-an-existing-data-source-including-extracts/
Additional information can be found in the Tableau Rest API documentation: https://onlinehelp.tableau.com/current/api/rest_api/en-us/help.htm#REST/rest_api_ref.htm
Hope this helps!