What are the constraints for 'id' member?

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.