RDAP Core Specifications
The RDAP (Registration Data Access Protocol) is defined by a series of IETF RFCs that replace the legacy WHOIS protocol with a modern, structured, and RESTful alternative.RFC 7480 - HTTP Usage in RDAP
Link: https://tools.ietf.org/html/rfc7480 Status: Standards Track (March 2015) Purpose: Defines how HTTP is used as the transport protocol for RDAP.Key Requirements
Key Requirements
- Content Type: Responses MUST use
application/rdap+jsonorapplication/json - HTTP Methods: RDAP uses GET for queries (read-only protocol)
- Status Codes: Standard HTTP status codes (200 OK, 404 Not Found, 400 Bad Request, etc.)
- HTTPS: RDAP servers SHOULD use HTTPS for security
- Redirects: Clients MUST follow HTTP redirects (301, 302, 307, 308)
- User-Agent: Clients SHOULD identify themselves
RFC 7482 - RDAP Query Format
Link: https://tools.ietf.org/html/rfc7482 Status: Standards Track (March 2015) Purpose: Specifies the query path segments and URL structure for RDAP requests.Query Types and Paths
Query Types and Paths
Supported query types:
Search queries:
| Resource Type | Path Segment | Example |
|---|---|---|
| Domain | /domain/{domain} | /domain/example.com |
| IPv4 Address | /ip/{address} | /ip/192.0.2.1 |
| IPv6 Address | /ip/{address} | /ip/2001:db8::1 |
| IPv4 Network | /ip/{cidr} | /ip/192.0.2.0/24 |
| IPv6 Network | /ip/{cidr} | /ip/2001:db8::/32 |
| AS Number | /autnum/{number} | /autnum/15169 |
| Entity | /entity/{handle} | /entity/ABC123 |
| Nameserver | /nameserver/{name} | /nameserver/ns1.example.com |
/domains?name=example*- Domain search/entities?fn=John*- Entity search by name/nameservers?name=ns*.example.com- Nameserver search
RFC 7483 - JSON Responses for RDAP
Link: https://tools.ietf.org/html/rfc7483 Status: Standards Track (March 2015) Purpose: Defines the JSON data structures for RDAP responses.Response Object Types
Response Object Types
Core object classes:
-
Domain Object - Represents a DNS domain name registration
objectClassName: “domain”- Fields:
ldhName,unicodeName,status,nameservers,secureDNS,entities,events
-
Entity Object - Represents a person, organization, or role
objectClassName: “entity”- Fields:
handle,vcardArray,roles,publicIds,entities
-
Nameserver Object - DNS nameserver information
objectClassName: “nameserver”- Fields:
ldhName,unicodeName,ipAddresses
-
Autnum Object - Autonomous System Number
objectClassName: “autnum”- Fields:
startAutnum,endAutnum,name,type,status,country
-
IP Network Object - IP address range
objectClassName: “ip network”- Fields:
startAddress,endAddress,ipVersion,name,type,country,parentHandle
status- Array of status values (active, locked, transfer prohibited, etc.)events- Array of event objects (registration, expiration, last changed)links- Array of related resources and alternate representationsnotices- Array of informational messagesremarks- Array of additional comments
RFC 7484 - Finding the Authoritative RDAP Service
Link: https://tools.ietf.org/html/rfc7484 Status: Standards Track (March 2015) Purpose: Describes bootstrap mechanisms for discovering authoritative RDAP servers.Bootstrap Service Discovery
Bootstrap Service Discovery
IANA Bootstrap Registries:IANA maintains JSON files mapping resource ranges to RDAP servers:Implementation:
-
DNS Bootstrap (
dns.json)- Maps TLDs to RDAP servers
- Example:
.com→https://rdap.verisign.com/com/v1/
-
AS Number Bootstrap (
asn.json)- Maps AS number ranges to RIR RDAP servers
- Example:
AS15169→https://rdap.arin.net/registry
-
IPv4 Bootstrap (
ipv4.json)- Maps IPv4 CIDR ranges to RIR RDAP servers
- Example:
8.0.0.0/8→https://rdap.arin.net/registry
-
IPv6 Bootstrap (
ipv6.json)- Maps IPv6 CIDR ranges to RIR RDAP servers
- Example:
2001:db8::/32→https://rdap.arin.net/registry
TLD Override ExtensionThis client extends RFC 7484 by supporting a local
tlds.json file for ccTLDs and other TLDs not in IANA bootstrap. This is checked before IANA bootstrap for faster lookups and support for emerging TLDs.Contact Data Standards
RFC 6350 - vCard Format Specification
Link: https://tools.ietf.org/html/rfc6350 Status: Standards Track (August 2011) Purpose: Defines the vCard format for representing contact information.vCard in RDAP
vCard in RDAP
RDAP uses vCard 4.0 for entity contact data. Contact information is embedded in JSON as a Implementation:
vcardArray.vCard properties used in RDAP:fn- Formatted name (full name)n- Name components (surname, given name, etc.)org- Organizationadr- Address (street, locality, region, postal code, country)tel- Telephone numberemail- Email addresstitle- Job titlerole- Role or occupationlang- Language preference
RFC 7095 - jCard: JSON Representation of vCard
Link: https://tools.ietf.org/html/rfc7095 Status: Standards Track (January 2014) Purpose: Defines JSON format for vCard data (jCard), which RDAP uses for contact information.jCard Structure
jCard Structure
jCard represents vCard properties as JSON arrays:Examples:Complete jCard object:The client parses jCard arrays and provides convenient accessor methods for common properties.
Related Standards
DNSSEC in RDAP
Related RFC: RFC 4034 - Resource Records for DNS Security Extensions RDAP domain objects includesecureDNS field for DNSSEC information:
Status Values
Related: EPP Status Codes (derived from RFC 5731) Common RDAP status values:active- Object is activeinactive- Object is not activelocked- Changes prohibitedpending create- Create operation pendingpending delete- Delete operation pendingpending transfer- Transfer operation pendingclient delete prohibited- Client-set delete protectionclient transfer prohibited- Client-set transfer protectionclient update prohibited- Client-set update protectionserver delete prohibited- Server-set delete protectionserver transfer prohibited- Server-set transfer protectionserver update prohibited- Server-set update protection
Compliance Summary
RFC ComplianceThis RDAP client implements:
- ✅ RFC 7480 - HTTP transport with proper headers and status handling
- ✅ RFC 7482 - All query path formats (domain, IP, AS, entity, nameserver)
- ✅ RFC 7483 - Complete JSON response parsing for all object types
- ✅ RFC 7484 - Bootstrap service discovery with caching
- ✅ RFC 6350 - vCard 4.0 contact data
- ✅ RFC 7095 - jCard JSON representation
- TLD override system for ccTLDs
- Multi-layer queries (registry + registrar)
- IPv6 CIDR retry logic
- Shorthand IP normalization
Additional Resources
- IANA RDAP Bootstrap Service: https://data.iana.org/rdap/
- RDAP Working Group: https://datatracker.ietf.org/wg/weirds/
- RDAP Pilot Program: https://www.icann.org/rdap
