{
	"$schema": "node_modules/wrangler/config-schema.json",
	"name": "api",
	"main": "src/api.app.ts",
	"compatibility_date": "2026-06-16",
	"compatibility_flags": ["nodejs_compat"],
	// Shared `recflare` DB. Created manually with `wrangler d1 create recflare`; its
	// id lives in RECFLARE_D1 (see .env) and the "local" placeholder below is
	// spliced out at deploy time. The `api` worker owns the `relationships` table
	// (schema/migration here); its own migrations_table keeps history separate from
	// the other workers' migrations on the shared database.
	"d1_databases": [
		{
			"binding": "DB",
			"database_name": "recflare",
			"database_id": "local",
			"migrations_dir": "migrations",
			"migrations_table": "d1_migrations_api"
		}
	],
	// Image bucket shared with the `img` worker (which serves objects back by key).
	// Saved-image uploads are written here. The `recflare-cdn` bucket (owned by the
	// `cdn` worker, written by `storage`) is bound read-only alongside it, to hash an
	// invention's uploaded data blob for its `BlobHash`.
	"r2_buckets": [
		{
			"binding": "IMAGES",
			"bucket_name": "recflare-img"
		},
		{
			"binding": "CDN_ASSETS",
			"bucket_name": "recflare-cdn"
		}
	],
	// Per-player settings KV, owned by the `playersettings` worker. Read AND written here,
	// for the photo-tagging preference (`/api/players/v1/playerPhotoTaggingSetting`), which
	// is one key in that same bag rather than storage of its own. The "local" id placeholder
	// is replaced with the real id from RECFLARE_KV at deploy time.
	"kv_namespaces": [
		{
			"binding": "RECFLARE_PLAYER_SETTINGS",
			"id": "local"
		}
	],
	// Cross-worker binding to the SignalR notifications hub DO (owned/migrated by
	// the `notify` worker). We only invoke its RPC methods; no migration here.
	"durable_objects": {
		"bindings": [
			{
				"name": "RECFLARE_NOTIFICATIONS_HUB",
				"class_name": "NotificationsHub",
				"script_name": "notify"
			}
		]
	},
	"logpush": false,
	// Shared Secrets Store holding the HS256 JWT signing key. Every worker binds the
	// same store as JWT_SECRET so tokens signed by `auth` verify here. The "local"
	// store_id placeholder is replaced with RECFLARE_SECRETS_STORE at deploy time.
	"secrets_store_secrets": [
		{
			"binding": "JWT_SECRET",
			"store_id": "local",
			"secret_name": "JWT_SECRET"
		}
	],
	"upload_source_maps": true,
	"observability": {
		"logs": {
			"enabled": true,
			"head_sampling_rate": 1 // 100%
		}
	},
	"vars": {
		"ENVIRONMENT": "development", // overridden during deployment
		"SENTRY_RELEASE": "unknown", // overridden during deployment
		"DOMAIN": "rec.example.com" // base domain; overridden during deployment
	}
}
