NessGate

The NessGate Specification

Version 1 · Effective September 8, 2026

NessGate resolves one thing:

verified domain  →  the URL where that domain's owner
                    publishes official machine-readable JSON

Like DNS, NessGate is a neutral pointer system. The data itself always lives on the company's own domain, under the company's control, in any JSON structure the company chooses. NessGate v1 imposes no schema, and the stability guarantees below protect that choice.

1. Resolution

GET https://nessgate.com/resolve/{domain}
FieldTypeMeaning
domainstringThe normalized domain that was queried.
json_urlstring · nullThe HTTPS URL registered by the verified domain owner, or null.
verifiedbooleantrue iff the domain has a current, ownership-verified listing.
verified_atstringDate (YYYY-MM-DD) ownership was last proven. Present when verified is true.

Status codes: 200 registered · 404 not registered (body still returned with verified: false) · 400 invalid domain · 503 registry temporarily unavailable (never reported as "not registered").

Normalization: input is lowercased; scheme, path, query, port, trailing dots, and a leading www. are stripped. Internationalized domains use their ASCII/punycode form. Responses are cacheable for 60 seconds.

The full registry is available at GET /registry.json as an array of {"domain", "json_url", "verified_at"} objects.

2. Registered URL rules

3. Verification

Every write (register, update, delete) requires proving control of the domain via a one-time challenge code, formatted:

nessgate-verification={code}

The code is accepted from any one of:

MethodLocation
Well-known filehttps://{domain}/.well-known/nessgate-verification.txt
DNS TXT record_nessgate.{domain}
JSON fieldtop-level "nessgate_verification" in the registered JSON — only when that JSON is hosted on the apex domain itself

4. Verification lifetime

A verification is valid for 365 days from the date ownership was last proven (exposed as verified_at). After that, the listing expires: the domain resolves as not registered until the owner renews by completing the registration flow again. Domains change hands; a serious trust registry does not say "verified" forever.

5. Stability guarantees

The v1 contract is stable. Specifically:

6. Machine endpoints

/resolve/{domain}Resolution API (CORS open, no auth)
/registry.jsonFull registry dump
/openapi.jsonOpenAPI 3.0 description of this API
/llms.txtGuidance for AI agents
/sitemap.xml, /robots.txtCrawler discovery
/.well-known/security.txtSecurity contact (RFC 9116)