API v2 - actually let's just extend foreman's constraints since they're
the same