{"message":"Twitter to Farcaster Sync Workflow - Enhanced with User Management","endpoints":{"POST /enroll":"Enroll a new user via B3 profile (supports JWT or smartAccountAddress)","POST /unenroll":"Unenroll user (JWT for self-service, API key for admin)","/sync?username=<username>":"Start syncing tweets for a specific user","/sync?all=true":"Start syncing tweets for all enabled users","/manual-sync?username=<username>&since=<iso_date>":"Manual sync since specific date (backfill) - Rate limited: premium 1/min, non-premium 1/5min","/status?instanceId=<workflow_id>":"Get workflow instance status","GET /users":"List all users with stats","POST /users":"Add new user (requires API key or JWT + B3 staking verification)","PUT /users/<username>":"Update user settings (requires API key or JWT)","DELETE /users/<username>":"Delete user (requires API key or JWT)","POST /update-staking-exempt":"Update staking_exempt field only (requires API key or JWT)","/tweets?username=<username>":"Get stored tweets for a user","/user-stats?username=<username>":"Get comprehensive stats for a Twitter user","/user-stats?address=<eth_address>":"Get comprehensive stats for a wallet address","/dashboard":"View comprehensive dashboard with stats","/check-staking?address=<eth_address>":"Check B3 staking status and tier eligibility","/test-auth":"Test authentication (supports both API key and JWT)","/test-farcaster?text=<text>&username=<username>&embed=<url>":"Test Farcaster posting with optional embed","/test-ai-channel?text=<text>&username=<username>":"Test AI-powered channel selection","/test-thread?username=<username>":"Test thread sync with replies as Farcaster comments","/test-quote-tweet?username=<username>&quoted_url=<tweet_url>":"Test quote tweet sync with quoted tweet embed","/test-media-sync?username=<username>":"Test complete media sync workflow with mock tweet","/test-mentions?text=<text>&mentions=<x_usernames>":"Test @ mention processing and Farcaster user lookup","/debug-sync-timestamps?username=<username>":"Debug sync timestamp filtering logic","/debug-parse?username=<username>&limit=<number>":"Debug Twitter API parsing","/test-api?username=<username>&limit=<number>":"Test Twitter API directly","/test-slack?message=<text>&color=<good|warning|danger>":"Test Slack notifications"},"examples":{"enroll_with_address":"POST /enroll with {\"smartAccountAddress\": \"0xbd68aC2b76d2d40ec4f181775F856B06C24b9A19\"}","enroll_with_jwt":"POST /enroll with Authorization: Bearer <jwt_token> header (no body needed)","unenroll_with_jwt":"POST /unenroll with Authorization: Bearer <jwt_token> header (self-service)","unenroll_with_api_key":"POST /unenroll with x-api-key header + {\"username\": \"user\"} or {\"address\": \"0x123...\"}","check_staking":"GET /check-staking?address=0x1216de6853e2c2cAEd6F5B0C2791D2E4a765D954","test_auth_api_key":"GET /test-auth with x-api-key header","test_auth_jwt":"GET /test-auth with Authorization: Bearer <jwt_token> header","user_stats_by_username":"GET /user-stats?username=seangeng","user_stats_by_address":"GET /user-stats?address=0x1216de6853e2c2cAEd6F5B0C2791D2E4a765D954","add_user_with_api_key":"POST /users with x-api-key header + {\"username\": \"elonmusk\", \"address\": \"0x123...\", \"signer_uuid\": \"uuid\"}","add_user_with_jwt":"POST /users with Authorization: Bearer <jwt_token> header + {\"username\": \"elonmusk\", \"address\": \"0x123...\", \"signer_uuid\": \"uuid\"}","sync_all":"GET /sync?all=true","sync_user":"GET /sync?username=seangeng","manual_sync":"GET /manual-sync?username=seangeng&since=2025-09-20T00:00:00Z","disable_user":"PUT /users/seangeng with API key header + {\"enabled\": false}","test_farcaster":"GET /test-farcaster?text=Hello Farcaster!&username=seangeng","test_with_embed":"GET /test-farcaster?text=Check out this image&embed=https://cdn.b3.fun/ai-sparkle-sphere.png&username=seangeng","test_ai_channel":"GET /test-ai-channel?text=Building onchain gaming platform&username=seangeng","test_thread":"GET /test-thread?username=seangeng","test_quote_tweet":"GET /test-quote-tweet?username=seangeng&quoted_url=https://x.com/KookCapitalLLC/status/1970212110979211354","test_media_sync":"GET /test-media-sync?username=seangeng","test_mentions":"GET /test-mentions?text=Hey @elonmusk and @vitalikbuterin!&mentions=elonmusk,vitalikbuterin","test_slack":"GET /test-slack?message=Hello from workflow&color=good","update_signer_with_api_key":"PUT /users/seangeng with x-api-key header + {\"signer_uuid\": \"new-uuid-here\"}","update_signer_with_jwt":"PUT /users/seangeng with Authorization: Bearer <jwt_token> header + {\"signer_uuid\": \"new-uuid-here\"}","update_staking_exempt":"POST /update-staking-exempt with API key header + {\"username\": \"seangeng\", \"staking_exempt\": 1}"},"security":{"authentication":"User management endpoints (POST/PUT/DELETE) support two authentication methods","auth_methods":{"api_key":"Pass API key via x-api-key header","jwt":"Pass JWT Bearer token via Authorization header (validated at https://api.b3.fun/authentication)"},"staking_requirement":"Minimum 10,000 B3 tokens staked to use the service","tiers":{"basic":"10,000+ B3 = 1 hour polling","premium":"100,000+ B3 = 5 minute polling"},"rate_limits":{"manual_sync_premium":"1 request per 1 minute","manual_sync_basic":"1 request per 5 minutes"}}}