Registering a route under wp/v2 puts it in core’s namespace, where a future core route can collide with it and where nothing signals that it is yours.
// no
register_rest_route( 'wp/v2', '/stock', array( /* ... */ ) );
// yes: vendor namespace, explicit version
register_rest_route( 'shop/v1', '/stock', array( /* ... */ ) );
The version in the namespace rather than in the path is the WordPress convention and it is the useful shape: shop/v2 can exist alongside shop/v1 with entirely different route definitions, which a path segment inside one namespace makes awkward. Pick the vendor prefix once — it appears in every client that ever calls the site and cannot be changed afterwards.