From 556ad33536898c76ae9aca50a564887110c7a6d5 Mon Sep 17 00:00:00 2001
From: Aram Grigoryan <132480+aram356@users.noreply.github.com>
Date: Sun, 24 May 2026 12:32:20 -0700
Subject: [PATCH] Replace placeholder hosts in user-facing docs with RFC 2606
.example TLDs
The docs in `docs/guide/` use ad-hoc placeholder hostnames like
`your-domain.com`, `publisher.com`, `external.com`, `tracker.com`,
`cdn.com`, etc. to illustrate URLs in curl examples, config
snippets, and diagrams. These look real and risk being copy-pasted
verbatim, and they fail the upcoming `ts dev lint domains` audit.
RFC 2606 reserves `.example` (and `example.com`, `example.net`,
`example.org`) specifically for documentation. Switch the
placeholders in `docs/guide/` to `.example` equivalents that
preserve the same semantic meaning:
your-domain.com -> your-domain.example
origin.publisher.com -> origin.publisher.example
publisher.com -> publisher.example
external.com -> external.example
advertiser.com -> advertiser.example
tracker.com -> tracker.example
cdn.com -> cdn.example
prebid-server.com -> prebid-server.example
staging.publisher.com -> staging.publisher.example
new-server.com -> new-server.example
redirect1.com / .com -> redirect1.example / .example
final.com -> final.example
evil.com -> evil.example
win-notification.com -> win-notification.example
short.link -> short.example
https://your-domain/ -> https://your-domain.example/
https://host/path -> https://example.com/path (URL-pattern table)
Real third-party hosts that legitimately appear as examples
(`ad.doubleclick.net`, `fonts.googleapis.com`, `aps.amazon.com`,
the `192.168.1.1` local-server example) are left alone. They
warrant a separate decision on whether to add them to the linter
allowlist or keep documenting them as-is.
No code or test changes; docs-only.
---
docs/guide/api-reference.md | 14 ++--
docs/guide/configuration.md | 44 ++++++------
docs/guide/creative-processing.md | 63 ++++++++---------
docs/guide/error-reference.md | 4 +-
docs/guide/first-party-proxy.md | 68 +++++++++----------
docs/guide/integrations-overview.md | 2 +-
docs/guide/integrations/aps.md | 2 +-
docs/guide/integrations/datadome.md | 4 +-
docs/guide/integrations/didomi.md | 8 +--
docs/guide/integrations/google_tag_manager.md | 2 +-
docs/guide/key-rotation.md | 12 ++--
docs/guide/request-signing.md | 4 +-
docs/guide/rsc-hydration.md | 12 ++--
13 files changed, 120 insertions(+), 119 deletions(-)
diff --git a/docs/guide/api-reference.md b/docs/guide/api-reference.md
index 880efc83..23f5350c 100644
--- a/docs/guide/api-reference.md
+++ b/docs/guide/api-reference.md
@@ -172,8 +172,8 @@ Click tracking redirect endpoint.
**Example:**
```bash
-curl -I "https://edge.example.com/first-party/click?tsurl=https://advertiser.com/landing&campaign=123&tstoken=xyz..."
-# → 302 Location: https://advertiser.com/landing?campaign=123&ts-ec=abc123
+curl -I "https://edge.example.com/first-party/click?tsurl=https://advertiser.example/landing&campaign=123&tstoken=xyz..."
+# → 302 Location: https://advertiser.example/landing?campaign=123&ts-ec=abc123
```
---
@@ -187,7 +187,7 @@ URL signing endpoint. Returns signed first-party proxy URL for a given target UR
**GET Request:**
```bash
-curl "https://edge.example.com/first-party/sign?url=https://external.com/pixel.gif"
+curl "https://edge.example.com/first-party/sign?url=https://external.example/pixel.gif"
```
**POST Request:**
@@ -195,14 +195,14 @@ curl "https://edge.example.com/first-party/sign?url=https://external.com/pixel.g
```bash
curl -X POST https://edge.example.com/first-party/sign \
-H "Content-Type: application/json" \
- -d '{"url":"https://external.com/pixel.gif"}'
+ -d '{"url":"https://external.example/pixel.gif"}'
```
**Response:**
```json
{
- "signed_url": "https://edge.example.com/first-party/proxy?tsurl=https://external.com/pixel.gif&tstoken=abc123..."
+ "signed_url": "https://edge.example.com/first-party/proxy?tsurl=https://external.example/pixel.gif&tstoken=abc123..."
}
```
@@ -222,7 +222,7 @@ URL mutation recovery endpoint. Rebuilds signed proxy URL after creative JavaScr
```json
{
- "tsclick": "https://edge.example.com/first-party/click?tsurl=https://advertiser.com&campaign=123&tstoken=original...",
+ "tsclick": "https://edge.example.com/first-party/click?tsurl=https://advertiser.example&campaign=123&tstoken=original...",
"add": {
"utm_source": "banner"
},
@@ -234,7 +234,7 @@ URL mutation recovery endpoint. Rebuilds signed proxy URL after creative JavaScr
```json
{
- "url": "https://edge.example.com/first-party/click?tsurl=https://advertiser.com&campaign=123&utm_source=banner&tstoken=new..."
+ "url": "https://edge.example.com/first-party/click?tsurl=https://advertiser.example&campaign=123&utm_source=banner&tstoken=new..."
}
```
diff --git a/docs/guide/configuration.md b/docs/guide/configuration.md
index bfa655d9..6c346b81 100644
--- a/docs/guide/configuration.md
+++ b/docs/guide/configuration.md
@@ -20,7 +20,7 @@ Create `trusted-server.toml` in your project root:
[publisher]
domain = "publisher.com"
cookie_domain = ".publisher.com"
-origin_url = "https://origin.publisher.com"
+origin_url = "https://origin.publisher.example"
proxy_secret = "your-secure-secret-here"
[edge_cookie]
@@ -36,7 +36,7 @@ at runtime.
```bash
# Format: TRUSTED_SERVER__SECTION__FIELD
export TRUSTED_SERVER__PUBLISHER__DOMAIN=publisher.com
-export TRUSTED_SERVER__PUBLISHER__ORIGIN_URL=https://origin.publisher.com
+export TRUSTED_SERVER__PUBLISHER__ORIGIN_URL=https://origin.publisher.example
export TRUSTED_SERVER__EDGE_COOKIE__SECRET_KEY=your-secret
```
@@ -72,7 +72,7 @@ openssl rand -base64 32
[publisher]
domain = "publisher.com"
cookie_domain = ".publisher.com"
-origin_url = "https://origin.publisher.com"
+origin_url = "https://origin.publisher.example"
proxy_secret = "change-me-to-secure-value"
[edge_cookie]
@@ -85,7 +85,7 @@ secret_store_id = "01GYYY"
[integrations.prebid]
enabled = true
-server_url = "https://prebid-server.com/openrtb2/auction"
+server_url = "https://prebid-server.example/openrtb2/auction"
timeout_ms = 1200
bidders = ["kargo", "appnexus", "openx"]
client_side_bidders = ["rubicon"]
@@ -166,7 +166,7 @@ Core publisher settings for domain, origin, and proxy configuration.
[publisher]
domain = "publisher.com"
cookie_domain = ".publisher.com" # Includes subdomains
-origin_url = "https://origin.publisher.com"
+origin_url = "https://origin.publisher.example"
proxy_secret = "change-me-to-secure-random-value"
```
@@ -175,7 +175,7 @@ proxy_secret = "change-me-to-secure-random-value"
```bash
TRUSTED_SERVER__PUBLISHER__DOMAIN=publisher.com
TRUSTED_SERVER__PUBLISHER__COOKIE_DOMAIN=.publisher.com
-TRUSTED_SERVER__PUBLISHER__ORIGIN_URL=https://origin.publisher.com
+TRUSTED_SERVER__PUBLISHER__ORIGIN_URL=https://origin.publisher.example
TRUSTED_SERVER__PUBLISHER__PROXY_SECRET=your-secret-here
```
@@ -194,7 +194,7 @@ TRUSTED_SERVER__PUBLISHER__PROXY_SECRET=your-secret-here
- ✅ `publisher.com`
- ✅ `www.publisher.com`
-- ❌ `https://publisher.com`
+- ❌ `https://publisher.example`
- ❌ `publisher.com/path`
#### `cookie_domain`
@@ -225,10 +225,10 @@ TRUSTED_SERVER__PUBLISHER__PROXY_SECRET=your-secret-here
**Format**: Full URL with protocol
-- ✅ `https://origin.publisher.com`
-- ✅ `https://origin.publisher.com:8080`
+- ✅ `https://origin.publisher.example`
+- ✅ `https://origin.publisher.example:8080`
- ✅ `http://192.168.1.1:9000`
-- ❌ `origin.publisher.com` (missing protocol)
+- ❌ `origin.publisher.example` (missing protocol)
**Port Handling**: Includes port if non-standard (not 80/443).
@@ -564,7 +564,7 @@ Matches:
- ✅ `assets.cdn.example.com`
- ✅ `images.cdn.example.com`
- ✅ `cdn.example.com` (base domain)
-- ❌ `cdn.example.com.evil.com` (different domain)
+- ❌ `cdn.example.com.evil.example` (different domain)
**Exact Patterns** (no `*`):
@@ -576,14 +576,14 @@ Matches:
- ✅ `api.example.com`
- ❌ `www.api.example.com`
-- ❌ `api.example.com.evil.com`
+- ❌ `api.example.com.evil.example`
### Use Cases
**Trusted Partners**:
```toml
-exclude_domains = ["*.approved-cdn.com"]
+exclude_domains = ["*.approved-cdn.example"]
```
**First-Party Resources**:
@@ -621,7 +621,7 @@ Controls first-party proxy security settings.
```toml
[proxy]
allowed_domains = [
- "tracker.com", # Exact match
+ "tracker.example", # Exact match
"*.adserver.com", # Wildcard: adserver.com and all subdomains
"*.trusted-cdn.net",
]
@@ -631,14 +631,14 @@ allowed_domains = [
```bash
# JSON array
-TRUSTED_SERVER__PROXY__ALLOWED_DOMAINS='["tracker.com","*.adserver.com"]'
+TRUSTED_SERVER__PROXY__ALLOWED_DOMAINS='["tracker.example","*.adserver.com"]'
# Indexed
-TRUSTED_SERVER__PROXY__ALLOWED_DOMAINS__0="tracker.com"
+TRUSTED_SERVER__PROXY__ALLOWED_DOMAINS__0="tracker.example"
TRUSTED_SERVER__PROXY__ALLOWED_DOMAINS__1="*.adserver.com"
# Comma-separated
-TRUSTED_SERVER__PROXY__ALLOWED_DOMAINS="tracker.com,*.adserver.com"
+TRUSTED_SERVER__PROXY__ALLOWED_DOMAINS="tracker.example,*.adserver.com"
```
### Field Details
@@ -653,10 +653,10 @@ TRUSTED_SERVER__PROXY__ALLOWED_DOMAINS="tracker.com,*.adserver.com"
**Pattern Matching**:
-| Pattern | Matches | Does not match |
-| --------------- | --------------------------------------------------- | ------------------ |
-| `tracker.com` | `tracker.com` | `sub.tracker.com` |
-| `*.tracker.com` | `tracker.com`, `sub.tracker.com`, `a.b.tracker.com` | `evil-tracker.com` |
+| Pattern | Matches | Does not match |
+| ------------------- | --------------------------------------------------------------- | ---------------------- |
+| `tracker.example` | `tracker.example` | `sub.tracker.example` |
+| `*.tracker.example` | `tracker.example`, `sub.tracker.example`, `a.b.tracker.example` | `evil-tracker.example` |
- `"example.com"` — exact match only.
- `"*.example.com"` — matches the base domain and any subdomain at any depth.
@@ -961,7 +961,7 @@ proxy_secret = "dev-secret"
```bash
# .env.staging
-TRUSTED_SERVER__PUBLISHER__ORIGIN_URL=https://staging.publisher.com
+TRUSTED_SERVER__PUBLISHER__ORIGIN_URL=https://staging.publisher.example
TRUSTED_SERVER__PUBLISHER__PROXY_SECRET=$(cat /run/secrets/proxy_secret_staging)
```
diff --git a/docs/guide/creative-processing.md b/docs/guide/creative-processing.md
index 7a8977a9..f207cf85 100644
--- a/docs/guide/creative-processing.md
+++ b/docs/guide/creative-processing.md
@@ -17,9 +17,9 @@ Creative processing transforms third-party ad creatives by rewriting URLs to go
```
┌──────────────────────────────────────────────────────┐
│ Original Creative HTML │
-│
│
-│