{
  "AllowedHosts": "example.com",
  "ConnectionStrings": {
    "ApplicationDatabase": "",
    "ApplicationSqlServer": ""
  },
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "Microsoft.AspNetCore": "Warning",
        "System": "Warning"
      }
    },
    "WriteTo": [
      {
        "Name": "Console"
      },
      {
        "Name": "File",
        "Args": {
          "path": "Logs/application-web-.log",
          "rollingInterval": "Day",
          "retainedFileCountLimit": 30,
          "fileSizeLimitBytes": 10485760,
          "rollOnFileSizeLimit": true,
          "shared": true,
          "flushToDiskInterval": "00:00:01"
        }
      }
    ]
  },
  "ProjectTemplate": {
    "ForwardedHeaders": {
      "Enabled": true,
      "Headers": [
        "XForwardedFor",
        "XForwardedProto"
      ],
      "ForwardLimit": 1,
      "RequireHeaderSymmetry": false,
      "ClearKnownNetworksAndProxies": false,
      "KnownProxies": [
        "10.0.0.10"
      ],
      "KnownNetworks": [
        "10.0.0.0/24"
      ],
      "AllowedHosts": [
        "example.com"
      ]
    },
    "SecurityHeaders": {
      "Enabled": true,
      "EnableContentSecurityPolicy": true,
      "EnablePermissionsPolicy": true,
      "EnableCrossOriginHeaders": true,
      "ContentSecurityPolicy": "default-src 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; form-action 'self'; img-src 'self' data:; script-src 'self'; style-src 'self';",
      "PermissionsPolicy": "camera=(), microphone=(), geolocation=(), payment=(), usb=(), fullscreen=(self)",
      "ExcludedPathPrefixes": [
        "/health",
        "/metrics"
      ]
    },
    "RateLimiting": {
      "Enabled": true,
      "UseGlobalLimiter": true,
      "GlobalFixedWindow": {
        "PermitLimit": 60,
        "WindowSeconds": 60,
        "QueueLimit": 0
      },
      "FixedWindowPolicy": {
        "PermitLimit": 60,
        "WindowSeconds": 60,
        "QueueLimit": 0
      },
      "ConcurrencyPolicy": {
        "PermitLimit": 10,
        "QueueLimit": 0
      }
    },
    "RequestLogging": {
      "Enabled": true,
      "IncludeQueryString": false,
      "IncludeUserName": true,
      "IncludeRemoteIpAddress": true
    },
    "OpenTelemetry": {
      "Enabled": true,
      "ServiceName": "ProjectTemplate.Web",
      "EnableTracing": true,
      "EnableMetrics": true,
      "Otlp": {
        "Enabled": false,
        "Endpoint": "",
        "Protocol": "Grpc"
      }
    },
    "Authentication": {
      "Providers": {
        "OpenIdConnect": {
          "Enabled": false,
          "Authority": "https://identity.example.com",
          "ClientId": "",
          "ClientSecret": ""
        },
        "Microsoft": {
          "Enabled": false,
          "ClientId": "",
          "ClientSecret": ""
        },
        "Google": {
          "Enabled": false,
          "ClientId": "",
          "ClientSecret": ""
        },
        "GitHub": {
          "Enabled": false,
          "ClientId": "",
          "ClientSecret": ""
        }
      }
    },
    "DataAccess": {
      "Provider": "SqlServer",
      "ConnectionStringName": "ApplicationSqlServer"
    }
  }
}
