@bpoullio1
Do you know where you saw the exclude ? I mentioned it in the first thread as a "if exclude was there, it would make life easier." As far as I know, the conditional portion of that sentence is false.
I did a search through the source code for :exclude, which is how parameters are most likely to show up. For the migrations, the only place it showed up was for vericite_settings. Definitely not what we're looking for here.
The select only works under certain conditions. According to the source, it needs to have a migration_type of 'course_copy_importer' to read what's supplied under select. Otherwise, it will most likely use copy instead. What Canvas does is to start the migration and then come back with a PUT to update it and specify the content.
I figure out a lot of the API call stuff by going to the browser's developer tools (F12) and the Network tab. I set Canvas up to do what I want to emulate, then clear out all the stuff in the network tab, and then click the button for Canvas to do it's thing. The first new entry is what the web interface is sending back to the server and so that's what I try to mimic. You can also often filter by the XHR requests to cut down on the noise.
The Headers tab (in Chrome) is what you're after. The general section has the URL and then there is a Request Headers section that shows what was sent to the server.
In the case of a redirect or page refresh, I tell the developer tools to use persistent logs (the wording varies) so that it won't disappear when the page loads.