But the documentation seems to suggest that you can either specify the path to /dev/serial/by-id/ OR do as above and specify the vendor and device id.
Firstly is this valid?
Secondly, are there other udev attributes are available for distinguishing a device.
I cannot get the slot in the gadget to come up at all from snap interfaces command e.g. in the gadget snap:
Actually solved this by not using the /dev/serial/by-id path which is actually a simlink to the actual dev file. I ended up using the /dev/ttyACM0 as the path which was the target of the simlink, and surprise, the interfaces appeared!
Which tutorial are you referencing? Your slots look a bit different than those used in this one, for example (notice the /dev/serial-port-<whatever> pattern):
The slots below worked, which are where the simlinks in /dev/serial/by-id/* pointed to. Unfortunately I expect to run into issues with getting the devices correct.
Its a problem with our usb setup, in that multiple ports are comming from the single usb device, such that the product-id, vendor-id, and usb-id are all the same. The only difference between devices is the ATTR{bInterfaceNumber}, which is why I was hoping that any general usb-attribute could be used in declaring slots.