To the OP: I would suggest normalising the protocol. Your examples show that you retain the case from the raw data:
"protocol": "HTTP"
"protocol": "https"
As it stands, users will end up normalising by themselves and you can save them the effort. FWIW this part is typically called the scheme, not protocol (e.g. Perl has `URI::Find::Schemeless` which performs a similar task) URI = scheme:[//authority]path[?query][#fragment]
See https://tools.ietf.org/html/rfc3986#section-3To that end, you might also want to consider adding support for fragments. :)