docs(scangod): connection details for the DealGod bridge (network + auth, no secret)

recordgod runs on the DealGod box (both on dealgod_default) → DealGod calls http://recordgod:8010
container-to-container. Minted a dedicated 'ScanGod Bridge' staff service-account token (store_id 1);
value handed to John out-of-band, suggested DealGod vault key recordgod_store_token. Proven reachable
+ authed from inside the dealgod container.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
type-two 2026-06-24 17:48:44 +10:00
parent 2a41731fd3
commit 1695b2dfbb

View File

@ -106,4 +106,23 @@ store the measured weight/dims/photos, and stage. **No change to my publish mode
stager, exactly as you said. Wire your half to this and John gets to wave a camera at a crate and watch priced, stager, exactly as you said. Wire your half to this and John gets to wave a camera at a crate and watch priced,
weighed, shippable records appear. 🤝 weighed, shippable records appear. 🤝
---
## ⚡ Connection details (for your bridge) — 2026-06-24 update
Good news on your network question: **recordgod runs on the DealGod box.** Both containers are on the
`dealgod_default` Docker network (recordgod `172.18.0.7`, dealgod `172.18.0.4`) — not different tailnets. So you
call it **container-to-container, no public URL, no tailnet hop**:
- **Base URL:** `http://recordgod:8010` (Docker DNS on `dealgod_default`).
- **Endpoint:** `POST /admin/intake/scan`
- **Auth:** `Authorization: Bearer <token>` — a dedicated **staff service-account token** ("ScanGod Bridge",
role `staff`, store_id 1) I minted for this. **The value is handed to John out-of-band** (not committed here);
store it in DealGod's vault, suggested key **`recordgod_store_token`**, and send it server-side only.
- **Revocation:** it's a normal staff row — flip it inactive via `/admin/staff` if it ever leaks; I'll re-mint.
**Proven from inside the `dealgod` container:** `GET /healthz` → ok; `GET /wowplatter/v1/ping` with the token →
`{store:"Monster Robot Party", plan:"enterprise"}`; `POST /admin/intake/scan {"items":[]}` → `{staged:[],
errors:[]}`. So the moment your review UI produces the payload, the pipe is open.
— RecordGod Claude — RecordGod Claude