{
  "schema_version": "1.2.0",
  "canonical": "https://approximated.app/guides/examples/laravel--v13.json",
  "example": {
    "id": "laravel--v13",
    "framework": "Laravel",
    "edition": "v13",
    "edition_status": "current",
    "guide": "https://approximated.app/guides/laravel-custom-domains-guide/",
    "version_url": "https://approximated.app/guides/laravel-custom-domains-guide/v13/",
    "source_file": "src/guides/laravel-custom-domains-guide/index.html",
    "edition_source": "src/_partials/guide-editions/laravel/v13.html",
    "upstream_repository": "https://github.com/Approximated-Inc/laravel-custom-domains-example",
    "upstream_exists": true,
    "published": null,
    "prepared_at": "2026-09-09",
    "publication_status": "local_draft",
    "last_reviewed": "2026-09-09",
    "review_scope": "Composer validation passed. PHPUnit passed 17 tests and 95 assertions on PHP 8.5.10. A fresh migration and seed passed. Loopback HTTP smoke returned 200 for isolated Alpha and Beta tenant hosts with Vary: Host, 404 for an unknown host, and 200 with both tenant choices and CSRF markup for the local control fixture. Docker published only 127.0.0.1:8084. September 9 provider-mode follow-up: 22 tests and 105 assertions passed in PHP 8.5.10, including five provider-selection cases. Forced-local startup smoke served Alpha Studio (200) and rejected an unknown hostname (404).",
    "runtime_test_status": "passed_local",
    "upstream_revision": "5778aaa3a347ed9354302bc2601865e164dbbc96",
    "tested_versions": {
      "php": "8.5.10",
      "laravel_framework": "13.31.0",
      "laravel_application_skeleton": "13.10.1",
      "composer": "2.9.2",
      "phpunit": "12.5.35",
      "sqlite": "3.46.1"
    },
    "test_commands": [
      "docker compose build",
      "docker compose run --rm app composer validate --strict",
      "docker compose run --rm app php -r 'echo PHP_VERSION, \"\\n\", SQLite3::version()[\"versionString\"], \"\\n\";'",
      "docker compose run --rm app vendor/bin/phpunit",
      "docker compose run --rm app composer setup",
      "docker compose up -d app",
      "curl --resolve alpha.test:8084:127.0.0.1 http://alpha.test:8084/",
      "curl --resolve beta.test:8084:127.0.0.1 http://beta.test:8084/",
      "curl --resolve unknown.test:8084:127.0.0.1 -i http://unknown.test:8084/",
      "curl --resolve control.test:8084:127.0.0.1 http://control.test:8084/fixture-login"
    ],
    "api_contract_revision": "99f0de6b74f4a88a7c5674d86c852036f22dcd13",
    "api_paths": [
      "/api/vhosts",
      "/api/vhosts/{id}"
    ],
    "not_tested": [
      "Live Approximated API requests",
      "Public DNS propagation",
      "Public TLS issuance or renewal",
      "Production tenant authentication",
      "Browser visual QA of the marketing page",
      "The provider-independent walkthrough snippets are illustrative; companion runtime results do not verify every guide snippet."
    ],
    "direct_resource": "https://approximated.app/guides/examples/laravel--v13.json",
    "snippet_count": 13,
    "snippets": [
      {
        "id": "laravel--v13--snippet-1-php",
        "language": "php",
        "sha256": "9a515968484322be19b54b626548abdd058af35c00a61e3979f9a7d1c9f31981"
      },
      {
        "id": "laravel--v13--snippet-2-php",
        "language": "php",
        "sha256": "89c5304c57474dde3a6bf2934bbd9a634a093a661c63c6773f52501bfcf39b89"
      },
      {
        "id": "laravel--v13--snippet-3-php",
        "language": "php",
        "sha256": "bcbeb367d281df0118394d76f7cdb01e2baf5c30a0f8a82a94cd3181fcad0c24"
      },
      {
        "id": "laravel--v13--snippet-4-html",
        "language": "html",
        "sha256": "eb7dfdfcac1f80e07e14867c4b860d5ea2ec98f6cc5c0ae05eed8073ea60d084"
      },
      {
        "id": "laravel--v13--snippet-5-bash",
        "language": "bash",
        "sha256": "ed7a9c2e60a9defc461233d577ed6d75a0b35fe92670de01cd0ac67701b4bccc"
      },
      {
        "id": "laravel--v13--snippet-6-php",
        "language": "php",
        "sha256": "a236250982894f328dfbba5044fc7592352f8a6618e703ad246013a7b91fce48"
      },
      {
        "id": "laravel--v13--snippet-7-php",
        "language": "php",
        "sha256": "43337a395949080732f05288b2b9ccf8e382ff1fe58b72a35755b8696dda3d58"
      },
      {
        "id": "laravel--v13--snippet-8-bash",
        "language": "bash",
        "sha256": "b575ebf89c5d2e0ab93e02f10d21bb60d5d0f098ac4ec73b25d5fea91e568939"
      },
      {
        "id": "laravel--v13--snippet-9-php",
        "language": "php",
        "sha256": "f9df1d240ea11a39dff89cdd39d00a11d3207c00eb49855eaf0c203ccc9c0be6"
      },
      {
        "id": "laravel--v13--snippet-10-php",
        "language": "php",
        "sha256": "e53b40d42c0149ab816277bcee41e34cb537b2813e75c021c0338f66e1dd0e60"
      },
      {
        "id": "laravel--v13--snippet-11-php",
        "language": "php",
        "sha256": "5268d1822110baba08b37c8f04f2efcffac7d6d5746c9d528c9f9dd01f3ec44a"
      },
      {
        "id": "laravel--v13--snippet-12-php",
        "language": "php",
        "sha256": "9b3824aa3490fefce8fed5fdc80e46e8dee691aad708c407230eed5829890059"
      },
      {
        "id": "laravel--v13--snippet-13-bash",
        "language": "bash",
        "sha256": "09a0dd39de6a17f5bb5029f2d3dcc41e1fc4e552e702ca472b218bb7a3cb1612"
      }
    ],
    "sources": [
      {
        "url": "https://github.com/laravel/framework/releases/tag/v13.31.0",
        "title": "Laravel Framework v13.31.0 release"
      },
      {
        "url": "https://github.com/laravel/laravel/releases/tag/v13.10.1",
        "title": "Laravel application v13.10.1 release"
      },
      {
        "url": "https://laravel.com/docs/13.x/releases",
        "title": "Laravel 13 release notes"
      },
      {
        "url": "https://www.php.net/archive/2026.php",
        "title": "PHP 2026 release archive"
      },
      {
        "url": "https://laravel.com/docs/13.x/routing",
        "title": "Laravel 13 routing documentation"
      },
      {
        "url": "https://laravel.com/docs/13.x/csrf",
        "title": "Laravel 13 CSRF documentation"
      },
      {
        "url": "https://approximated.app/docs/#virtual-hosts-api",
        "title": "Approximated virtual-host documentation"
      },
      {
        "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": "APPROXIMATED_API_KEY",
      "without_key": "local mock",
      "with_key": "real Approximated API at https://cloud.approximated.app",
      "explicit_mock_override": "PROVIDER_MODE=local",
      "verification": {
        "date": "2026-09-09",
        "summary": "22 tests and 105 assertions passed in PHP 8.5.10, including five provider-selection cases. Forced-local startup smoke served Alpha Studio (200) and rejected an unknown hostname (404).",
        "live_api_used": false
      }
    },
    "publication_evidence": {
      "type": "public_companion_git_tag",
      "published_at": "2026-09-09",
      "repository": "https://github.com/Approximated-Inc/laravel-custom-domains-example",
      "revision": "5778aaa3a347ed9354302bc2601865e164dbbc96",
      "tag": "guide-laravel13-r1",
      "tag_url": "https://github.com/Approximated-Inc/laravel-custom-domains-example/tree/guide-laravel13-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.",
      "previous_edition_tag": "guide-legacy-2026-09"
    }
  }
}
