Seems to me like the way to go about this is to create one mother child grabber... (okay that sounded weird

) that is highly flexible. Perhaps getDocumentChildren would be good for this since it is already pretty flexible. Then have the other API functions merely fill in some of the parameter blanks for you.
The multiple parents thing could be handled by chaning there where clause from
WHERE sc.parent = X
to
WHERE sc.parent IN(<array of ids)>
It would work with ONE id (for backwards compatibility) as well as multiple.
As of right now it doesn’t look like there is an "access" parameter, but seems like that could be added too.
It already allows for custom fields. Sort fields and directions
can be done too... with a workaround I’ve used a couple times. Basically if you have multiple sort fields and directions, you put everything but the last sord dir in the $sort parameter:
$sort="field1 ASC, field2 DESC, field3 ASC, field4" $dir="ASC"
Limits are provided for already.
Depth... now that is a trick. Seems like recursion within the snippet using this function would be the way to go here.
Custom where clauses already allowed.
In short
So it seems to me like we’re "almost" there with the current getDocumentChildren API function. A little tweaking of that one and we’d be in business. And again, other get_____Children() functions could simply have some of the parameters built in and then call the getDocumentChildren function.