{
    "ok": true,
    "service": "coin-backend",
    "routes": [
        "POST /api/coin/analyze",
        "POST /api/coin/analyze?dry_run=1",
        "POST /api/tcg/analyze",
        "POST /api/tcg/analyze?dry_run=1",
        "POST /api/sport/analyze",
        "POST /api/sport/analyze?dry_run=1",
        "POST /api/antique/analyze",
        "POST /api/antique/analyze?dry_run=1",
        "POST /api/plant/analyze",
        "POST /api/plant/analyze?dry_run=1",
        "POST /api/rock/analyze",
        "POST /api/rock/analyze?dry_run=1",
        "POST /api/stamp/analyze",
        "POST /api/stamp/analyze?dry_run=1",
        "POST /api/mushroom/analyze",
        "POST /api/mushroom/analyze?dry_run=1",
        "POST /api/whiskey/analyze",
        "POST /api/whiskey/analyze?dry_run=1",
        "POST /api/food/analyze",
        "POST /api/food/analyze?dry_run=1",
        "POST /api/notely/analyze",
        "POST /api/notely/analyze?dry_run=1",
        "POST /api/v1/mascots/generate",
        "POST /api/mascot/generate",
        "POST /api/mascot/generate?dry_run=1",
        "GET  /api/mascot/styles",
        "GET  /api/mascot/styles/{style_profile}/reference",
        "GET  /output/mascots/{id}.png",
        "POST /api/category/generate",
        "POST /api/category/generate?dry_run=1",
        "GET  /api/category/list?tier=all|free|plus",
        "GET  /api/category/{id}",
        "POST /api/h5/generate",
        "POST /api/h5/generate  (body: provider=claude) \u2014 d\u00f9ng Claude thay OpenAI",
        "POST /api/h5/generate?dry_run=1",
        "POST /api/h5/links",
        "GET  /api/h5/links?limit=20&offset=0",
        "GET  /api/h5/links/urls?limit=50&offset=0",
        "GET  /api/h5/links/sources",
        "GET  /api/h5/preview?url=...",
        "POST /api/h5/links/cleanup",
        "GET  /output/h5/{id}.html",
        "GET  /api/admin/openai-keys",
        "POST /api/admin/openai-keys",
        "POST /api/admin/openai-keys/update",
        "POST /api/admin/openai-keys/delete",
        "POST /api/admin/openai-keys/test",
        "POST /api/admin/openai-keys/reveal",
        "POST /api/admin/openai-keys/reset-usage",
        "GET  /api/admin/openai-keys/usage",
        "GET  /api/admin/openai-keys/services",
        "GET  /api/docai/health",
        "GET  /api/docai/v1/catalog",
        "POST /api/docai/v1/files",
        "POST /api/docai/v1/estimates",
        "POST /api/docai/v1/jobs  (Idempotency-Key)",
        "GET  /api/docai/v1/jobs/{job_id}[/result]",
        "POST /api/docai/v1/artifacts/{artifact_id}/download-url"
    ],
    "openai_model": "gpt-5.4-mini",
    "h5_default_provider": "openai",
    "h5_providers": [
        "openai",
        "claude"
    ],
    "h5_claude_available": true,
    "h5_claude_model": "claude-opus-5",
    "mascot_image_model": "gpt-image-2",
    "mascot_style_profiles": [
        "stylized_3d_mascot_v1",
        "editorial_mascot_v1"
    ],
    "category_model": "gpt-5.4-mini",
    "category_count": 6,
    "mascot_auth_required": false,
    "default_analysis_mode": "market",
    "default_tcg_analysis_mode": "market",
    "default_sport_analysis_mode": "market",
    "default_antique_analysis_mode": "market",
    "default_plant_analysis_mode": "market",
    "default_rock_analysis_mode": "market",
    "default_stamp_analysis_mode": "market",
    "default_mushroom_analysis_mode": "market",
    "default_whiskey_analysis_mode": "market",
    "default_food_analysis_mode": "standard",
    "analysis_modes": [
        "market",
        "standard",
        "cheap",
        "cache"
    ],
    "android_app_signature_required": false,
    "android_app_signature_configured": false,
    "mongodb_enabled": true,
    "mongodb_extension_loaded": true,
    "openai_key_manager_enabled": true,
    "anthropic_env_key_present": false
}