There doesn’t appear to be anything in the spec that requires “id” values be mapped into URLs, though the examples happen to do so. Is there a need to specify any constraints on the IDs?
For something like the top-level API entry point discussed in How to handle multiple endpoints/links, it even seems reasonable to use an empty string as the ID.