Skip to content

feat: add verified custom API domains - #3801

Open
heathermhuang wants to merge 20 commits into
Wei-Shaw:mainfrom
heathermhuang:codex/verified-custom-domains
Open

heathermhuang wants to merge 20 commits into
Wei-Shaw:mainfrom
heathermhuang:codex/verified-custom-domains

Conversation

@heathermhuang

@heathermhuang heathermhuang commented Jul 7, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Add verified inbound custom API domains for user-owned and shared endpoints. Existing endpoint-display settings do not provide ownership verification, per-domain authorization or operator lifecycle controls.

  • Store domain ownership, TXT verification details, status and access grants; provide user and admin management screens.
  • Verify TXT ownership before activation and provide the configured gateway CNAME target. TLS and proxy provisioning remain the operator's responsibility.
  • Keep API-key authentication authoritative and enforce domain access for registered custom hosts; record domain context in usage logs. Unknown hosts retain the existing gateway behavior.
  • Support owner, selected-user and all-user grants, plus administrative disable/enable/delete controls.
  • Preserve administrative disables during owner verification, including verification already in flight. Conditional database writes update verification fields without overwriting concurrent access changes.
  • Prevent owners from deleting a disabled record to re-register its hostname; administrators can explicitly enable or release it.
  • Preserve valid client request IDs and generated Ent/Wire integration included in this branch.

Verification

  • Regression tests cover create → verify → admin disable → owner verify/delete, explicit admin re-enable, and a disable during both successful and unsuccessful DNS verification.
  • Repository tests prove stale verification cannot overwrite a disable and cannot overwrite concurrent access changes.
  • Existing ownership, grant isolation, host routing, usage-log and frontend tests remain in place.
  • Full backend unit/integration suites and Go lint pass locally; generated Ent/Wire output was verified during the rebase.
  • Full upstream CI: unit and integration suites, frontend checks, Go lint, security scans, shell checks and CLA.

Current reviewed head: 6cfaf2b5298ad7ff036610e4601e5a768124a934. TLS provisioning and production rollout are separate operational steps.

Fixes #3720

@heathermhuang
heathermhuang force-pushed the codex/verified-custom-domains branch 6 times, most recently from 2cc8581 to 59e3cd6 Compare July 9, 2026 10:13
@heathermhuang
heathermhuang marked this pull request as ready for review July 9, 2026 10:27
@heathermhuang
heathermhuang force-pushed the codex/verified-custom-domains branch 2 times, most recently from 6a9b9a2 to 03b70cf Compare July 13, 2026 04:47
@heathermhuang
heathermhuang force-pushed the codex/verified-custom-domains branch 2 times, most recently from 8de38e6 to 154d7a1 Compare July 23, 2026 01:34
@heathermhuang
heathermhuang force-pushed the codex/verified-custom-domains branch from 154d7a1 to 5cc55df Compare July 29, 2026 02:01
@github-actions

github-actions Bot commented Aug 12, 2026 •

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA. ✅
Posted by the CLA Assistant Lite bot.

@puppywang

puppywang commented Aug 12, 2026 via email

Copy link
Copy Markdown
Contributor

@heathermhuang heathermhuang reopened this Aug 12, 2026
@heathermhuang
heathermhuang force-pushed the codex/verified-custom-domains branch from bb36bf3 to 91daee6 Compare August 13, 2026 00:46
@heathermhuang
heathermhuang force-pushed the codex/verified-custom-domains branch 3 times, most recently from 3a22d19 to 8c563a6 Compare August 27, 2026 12:25
@heathermhuang
heathermhuang force-pushed the codex/verified-custom-domains branch from 8c563a6 to d4af7fe Compare August 30, 2026 03:04
@heathermhuang
heathermhuang force-pushed the codex/verified-custom-domains branch from d4af7fe to 4204979 Compare September 12, 2026 03:57
@heathermhuang

heathermhuang commented Sep 12, 2026 •

Copy link
Copy Markdown
Contributor Author

Update: the administrative-disable finding is fixed in 6cfaf2b52, and the full upstream CI suite passes on that head.

Owner verification preserves administrative disables. Conditional database updates also prevent an in-flight verification from overwriting a later disable or concurrent access changes. Owners cannot delete a disabled record to re-register it; an administrator must explicitly enable or release it. Regression tests cover the original bypass, both DNS outcomes during a concurrent disable, database persistence and explicit re-enable.

@Wei-Shaw could you review the updated ownership and lifecycle implementation? Verified inbound domains still add useful white-label and tenant endpoint controls beyond endpoint-display settings. The earlier authorization blocker has been addressed, and the description now documents the proxy/TLS boundary and current verification.

@heathermhuang
heathermhuang force-pushed the codex/verified-custom-domains branch from 6cfaf2b to a4dda7f Compare October 6, 2026 08:28
@heathermhuang
heathermhuang force-pushed the codex/verified-custom-domains branch from a4dda7f to fefb358 Compare October 15, 2026 12:27
@heathermhuang
heathermhuang force-pushed the codex/verified-custom-domains branch from fefb358 to 45c7631 Compare October 15, 2026 13:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: support verified custom domains for user-owned API base URLs and endpoint isolation

2 participants