{
  "schema_version": "1.2.0",
  "canonical": "https://approximated.app/guides/examples/nuxt--v4.json",
  "example": {
    "id": "nuxt--v4",
    "framework": "Nuxt",
    "edition": "v4",
    "edition_status": "current",
    "guide": "https://approximated.app/guides/nuxt-custom-domains-guide/",
    "version_url": "https://approximated.app/guides/nuxt-custom-domains-guide/v4/",
    "source_file": "src/guides/nuxt-custom-domains-guide/index.html",
    "edition_source": "src/_partials/guide-editions/nuxt/v4.html",
    "upstream_repository": "https://github.com/Approximated-Inc/nuxt-custom-domains-example",
    "upstream_exists": true,
    "published": null,
    "prepared_at": "2026-09-09",
    "publication_status": "local_draft",
    "last_reviewed": "2026-09-09",
    "review_scope": "A clean pinned-container target passed Nuxt typecheck, the production build, and 29 behavioral tests in 2.675 seconds. Coverage includes hostname and literal-IP validation; two-tenant, unknown, unconfirmed, failed, pending, disconnected, TLS-pending, and removal-pending routing; opposing apx_hit/is_resolving signals; optional and invalid monitoring fields; exact confirmed create identity; conflict fail-closed refresh/removal; stale refresh; failed delete retention; replacement-safe delayed 404 cleanup; real provider HTTP paths, methods, api-key, envelopes, plain-text deletion, errors, and timeouts; signed tenant authorization; exact-origin JSON fixture login; hostile-Origin login rejection without cookies; missing-token and hostile-Origin authenticated CSRF negatives with no provider or database side effects; outer tenant response Cache-Control and Vary headers; and real Nitro HTTP lifecycle behavior. The final loopback-bound runtime smoke returned 200 for Northwind, 200 for Contoso, and 404 for an unknown Host, with private, no-store and Vary: Host on tenant pages; hostile-Origin login returned 403 without Set-Cookie. September 9 provider-mode follow-up: 34 tests, typecheck, and the Nuxt 4.5.2 production build passed offline on Node 24.20.0. Production-server tests verified both tenant pages, unknown-host 404, cache headers, and explicit loopback provider transport.",
    "runtime_test_status": "passed_local",
    "upstream_revision": "06adf0410fa038f6f9be32eb587e3ade4458fb06",
    "tested_versions": {
      "node": "24.20.0",
      "node_container": "node:24.20.0-bookworm-slim@sha256:ba849c60be29959425b8734d57b8b4b7d56f98edd9504c9af091d5281095a71e",
      "npm": "11.19.0",
      "nuxt": "4.5.2",
      "nitro": "2.13.4",
      "vite": "8.2.2",
      "vue": "3.5.42",
      "vue_router": "5.3.1",
      "types_node": "24.13.3",
      "typescript": "6.0.3",
      "vue_tsc": "3.3.11",
      "sqlite": "3.53.4"
    },
    "test_commands": [
      "docker build --target verify -t nuxt-custom-domains-example:test .",
      "cp .env.example .env",
      "docker build -t nuxt-custom-domains-example:local .",
      "docker run --rm --name nuxt-guide-smoke --env-file .env -p 127.0.0.1:3087:3087 nuxt-custom-domains-example:local",
      "curl -H 'Host: northwind.localhost' http://127.0.0.1:3087/",
      "curl -H 'Host: contoso.localhost' http://127.0.0.1:3087/",
      "curl -i -H 'Host: unknown.localhost' http://127.0.0.1:3087/"
    ],
    "api_contract_revision": "99f0de6b74f4a88a7c5674d86c852036f22dcd13",
    "api_paths": [
      "/api/vhosts",
      "/api/vhosts/{id}"
    ],
    "not_tested": [
      "No live Approximated API credentials or service requests were used.",
      "Public DNS propagation, certificate issuance, and requests through live hosting infrastructure were not exercised.",
      "No production reverse proxy, forwarded-host configuration, managed database, background job system, or deployment was exercised.",
      "Node 22 and Node 26 were not run; the verified target is Node 24.20.0 LTS.",
      "TypeScript 7.0.2 was not usable with vue-tsc 3.3.11 because TypeScript 7 does not export the typescript/lib/tsc subpath that vue-tsc loads.",
      "The provider-independent walkthrough snippets are illustrative; companion runtime results do not verify every guide snippet."
    ],
    "direct_resource": "https://approximated.app/guides/examples/nuxt--v4.json",
    "snippet_count": 9,
    "snippets": [
      {
        "id": "nuxt--v4--snippet-1-javascript",
        "language": "javascript",
        "sha256": "4a777ff6687be9f54348fc164fffcfb0956e77b4836aed4db5ab72ac6126408f"
      },
      {
        "id": "nuxt--v4--snippet-2-bash",
        "language": "bash",
        "sha256": "1f377d3a0854587c492603cef6ae0e3612a93751734e66809d2dc2516a3657ab"
      },
      {
        "id": "nuxt--v4--snippet-3-sql",
        "language": "sql",
        "sha256": "7e19225e91ceed8a30976229bdd665dea6217a9439f8db5fd612224eb252e739"
      },
      {
        "id": "nuxt--v4--snippet-4-javascript",
        "language": "javascript",
        "sha256": "8b6ef3542a4b010b948de2def0eb77981955b12178e7448e5d1ddd622b8a3ec5"
      },
      {
        "id": "nuxt--v4--snippet-5-javascript",
        "language": "javascript",
        "sha256": "daf855abf31cc2d6b319f538cff8a809d857fa2e4a300ad1ac3e2c50336c6a47"
      },
      {
        "id": "nuxt--v4--snippet-6-html",
        "language": "html",
        "sha256": "48eff30919475231acf68bcf7235f3cb2197d9bac50be53f3c731bddcb26da7d"
      },
      {
        "id": "nuxt--v4--snippet-7-javascript",
        "language": "javascript",
        "sha256": "ab11058b562d124eb2134e4aa8de1cd99dd5b7b5d4258382f42d7d05b1e373c1"
      },
      {
        "id": "nuxt--v4--snippet-8-javascript",
        "language": "javascript",
        "sha256": "5b75ce0c722e7e9a96858e43a750b25970e94ba81604ffb528ad7a3d1ce37331"
      },
      {
        "id": "nuxt--v4--snippet-9-bash",
        "language": "bash",
        "sha256": "57506ad76d59c0e75b630861a8f36524f2eeb474845c1628e18f4329f552c376"
      }
    ],
    "sources": [
      {
        "url": "https://www.npmjs.com/package/nuxt",
        "title": "Nuxt package on npm"
      },
      {
        "url": "https://nuxt.com/blog/v4-5",
        "title": "Nuxt 4.5 release"
      },
      {
        "url": "https://nuxt.com/docs/4.x/guide/directory-structure/server",
        "title": "Nuxt server directory"
      },
      {
        "url": "https://nodejs.org/en/download/archive/v24.20.0",
        "title": "Node.js 24.20.0 archive"
      },
      {
        "url": "https://nodejs.org/docs/latest-v24.x/api/sqlite.html",
        "title": "Node.js 24 SQLite documentation"
      },
      {
        "url": "https://www.npmjs.com/package/typescript",
        "title": "TypeScript package on npm"
      },
      {
        "url": "https://www.npmjs.com/package/vue-tsc",
        "title": "vue-tsc package on npm"
      },
      {
        "url": "https://approximated.app/openapi.yaml",
        "title": "Approximated public OpenAPI contract"
      },
      {
        "url": "https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html",
        "title": "A, AAAA, and CNAME records and apex restrictions"
      },
      {
        "url": "https://developers.cloudflare.com/dns/cname-flattening/",
        "title": "Provider-specific CNAME flattening at the apex"
      },
      {
        "url": "https://approximated.app/docs/#how-approximated-works",
        "title": "Approximated routing, certificates, and dedicated IPv4"
      },
      {
        "url": "https://approximated.app/docs/#edge-verify",
        "title": "Form bot protection with Edge Verify"
      },
      {
        "url": "https://approximated.app/docs/#edge-sequences",
        "title": "Request rules and rate limiting with Edge Sequences"
      },
      {
        "url": "https://approximated.app/docs/#dns-widget",
        "title": "DNS onboarding widget and provider-specific support"
      },
      {
        "url": "https://approximated.app/docs/#webhook-events-virtual-host-monitor-updated",
        "title": "Domain monitoring status webhooks"
      }
    ],
    "walkthrough": {
      "provider_independent": true,
      "optional_integration_anchor": "bonus-approximated",
      "code_scope": "Main walkthrough snippets illustrate adding custom domains to an existing app. They are not a complete standalone application or a copy of the companion implementation.",
      "runtime_verification_scope": "Recorded runtime versions, commands, and results apply to the companion repository implementation. They do not imply that every illustrative guide snippet was executed.",
      "domain_connection_policy": {
        "txt_challenge_required": false,
        "dns_check_in_main": "A brief recommendation to check that DNS points directly or indirectly to the app or its receiving service.",
        "automated_dns_checks": "Explained in the optional Approximated bonus, alongside HTTPS readiness."
      }
    },
    "companion_provider_mode": {
      "default": "auto",
      "api_key_environment_variable": "NUXT_APPROXIMATED_API_KEY",
      "without_key": "local mock",
      "with_key": "real Approximated API at https://cloud.approximated.app",
      "explicit_mock_override": "NUXT_PROVIDER_MODE=mock",
      "verification": {
        "date": "2026-09-09",
        "summary": "34 tests, typecheck, and the Nuxt 4.5.2 production build passed offline on Node 24.20.0. Production-server tests verified both tenant pages, unknown-host 404, cache headers, and explicit loopback provider transport.",
        "live_api_used": false
      }
    },
    "publication_evidence": {
      "type": "public_companion_git_tag",
      "published_at": "2026-09-09",
      "repository": "https://github.com/Approximated-Inc/nuxt-custom-domains-example",
      "revision": "06adf0410fa038f6f9be32eb587e3ade4458fb06",
      "tag": "guide-nuxt4-r1",
      "tag_url": "https://github.com/Approximated-Inc/nuxt-custom-domains-example/tree/guide-nuxt4-r1",
      "anonymous_clone_verified_at": "2026-09-09",
      "scope": "Companion source publication and anonymous HTTPS clone verified. This does not establish guide deployment or live API, DNS, or HTTPS acceptance."
    }
  }
}
