Some functions have different argument definitions depending on the presence/absence or value of another supplied argument (a control argument).
Usually, the names of the available arguments will differ, but it is also possible that some arguments will have the same names but different dependies depending on the control argument.
For example, telecoms.cart.checkout has a different list of required arguments
depending on the supplied value of the pay_method argument. If pay_method is set
to stored_card then a paymentcardID argument will be required, whereas for example
if pay_method is set to interactive, then quite a few more arguments are then
required for the cardolder's name, address etc, callback URLs and other things.
You can tell whether a function has a variable argument definition by looking at the response from calling
argdef. If the response contains an altsyntax section, the function
has variable arg definitions. The altsyntax section shows a list of control arguments and the
types of rules applicable.