{"action_endpoints":{"POST /api/actions/apply-job":"\ud83d\udd12 Creator applies to job (+10 XP)","POST /api/actions/hire-complete":"\ud83d\udd12 COMBINED: Awards both creator (+200) AND hirer (+150)","POST /api/actions/hired":"\ud83d\udd12 Creator got hired (+200 XP)","POST /api/actions/made-hire":"\ud83d\udd12 Hirer made hire (+150 XP)","POST /api/actions/offer":"\ud83d\udd12 Record offer (awards +40 XP to sender AND receiver)","POST /api/actions/offer-accepted":"\ud83d\udd12 Offer accepted (+50 XP)","POST /api/actions/post-job":"\ud83d\udd12 Post job (+30 XP)","POST /api/actions/shortlisted":"\ud83d\udd12 Creator shortlisted (+50 XP creator, +15 XP hirer)","POST /api/actions/upload-video":"\ud83d\udd12 Upload video (+25 XP)"},"app_endpoints":{"POST /api/app/action":"\ud83d\udd12 Record user action for daily bonus","POST /api/app/open":"\ud83d\ude80 MAIN - Call on every app open (syncs user + streak + XP)","POST /api/app/status":"\ud83d\udd12 Get user's XP/streak/profile status","POST /api/app/sync-profile":"\ud83d\udd12 Sync profile and award completion XP","POST /api/app/verify":"Check if token is valid"},"asset_endpoints":{"NOTE":"Asset approval (+30 XP) handled by main backend - no separate endpoint","POST /api/asset/purchased":"\ud83d\udd12 Asset purchased (+25 XP buyer)","POST /api/asset/sold":"\ud83d\udd12 Asset sold (+100 XP seller)","POST /api/asset/stats":"\ud83d\udd12 Get asset marketplace stats","POST /api/asset/transaction":"\ud83d\udd12 COMBINED: Awards both seller (+100) AND buyer (+25)","POST /api/asset/upload":"\ud83d\udd12 Asset uploaded (+20 XP seller)"},"authentication":{"max_tokens":3,"method":"Token-based","note":"Protected endpoints require user_id + flic_token"},"content_endpoints":{"DELETE /api/content/asset/<asset_id>":"\ud83d\udd12 Soft delete asset","DELETE /api/content/work/<post_id>":"\ud83d\udd12 Soft delete work","GET /api/content/asset/<asset_id>":"\ud83d\udd12 Get asset by ID","GET /api/content/asset/by-post/<post_id>":"\ud83d\udd12 Get asset by post_id","GET /api/content/work/<post_id>":"\ud83d\udd12 Get work by post_id","POST /api/content/all":"\ud83d\udd12 Get all content (works + assets)","POST /api/content/asset":"\ud83d\udd12 Save asset metadata (links to marketplace if seller_asset_id)","POST /api/content/asset/link-marketplace":"\ud83d\udd12 Link existing Asset to SellerAsset","POST /api/content/assets":"\ud83d\udd12 Get all assets for user (with marketplace status)","POST /api/content/stats":"\ud83d\udd12 Get content statistics (includes marketplace)","POST /api/content/work":"\ud83d\udd12 Save work (video) metadata - NOT for sale","POST /api/content/works":"\ud83d\udd12 Get all works for user","description":"Content = Portfolio. Work (video) stays separate. Asset links to SellerAsset (marketplace)."},"description":"Gamification and XP management for Flic Hire","flow":["1. User logs in \u2192 Get user_id, username, flic_token","2. POST /api/app/open \u2192 Syncs user + awards streak XP + stores token","3. Fetch profile from external API","4. POST /api/app/sync-profile \u2192 Awards profile completion XP","5. User actions \u2192 POST /api/app/action"],"gamification_endpoints":{"GET /api/gamification/leaderboard":"XP leaderboard","GET /api/gamification/levels/all":"All level definitions","POST /api/gamification/badges":"\ud83d\udd12 Get user badges","POST /api/gamification/badges/check":"\ud83d\udd12 Check & award earned badges","POST /api/gamification/leaderboard/rank":"\ud83d\udd12 Get user's rank","POST /api/gamification/level":"\ud83d\udd12 Get level progress","POST /api/gamification/multiplier":"\ud83d\udd12 Get XP multiplier breakdown","POST /api/gamification/quests":"\ud83d\udd12 Get daily/weekly quests","POST /api/gamification/quests/progress":"\ud83d\udd12 Update quest progress","POST /api/gamification/status":"\ud83d\udd12 Full gamification status (badges, quests, level)","POST /api/gamification/streak-freeze":"\ud83d\udd12 Get streak freeze status","POST /api/gamification/streak-freeze/use":"\ud83d\udd12 Use a streak freeze"},"marketplace_endpoints":{"GET /api/marketplace/asset/<id>":"\ud83c\udf10 Get public asset info","GET /api/marketplace/assets":"\ud83c\udf10 List all active marketplace assets","POST /api/marketplace/asset-status":"\ud83d\udd12 Check if user owns/purchased an asset","POST /api/marketplace/my-purchases":"\ud83d\udd12 Get all purchased items with Drive URLs","POST /api/marketplace/purchase":"\ud83d\udd12 Purchase asset (adds viewer access, no notification)","POST /api/marketplace/revoke-access":"\ud83d\udd12 Revoke viewer access (for refunds)"},"metadata_endpoints":{"GET /api/metadata/health":"\ud83c\udf10 Check metadata service status","POST /api/metadata/generate_meta_tag":"\ud83d\udd12 Generate metadata tags using Gemini AI"},"name":"Flic Hire XP System API","notification_endpoints":{"POST /api/notifications/all":"\ud83d\udd12 Get all recent notifications","POST /api/notifications/celebrations":"\ud83d\udd12 Get pending celebrations (confetti/modals)","POST /api/notifications/count":"\ud83d\udd12 Get unread count (for badge)","POST /api/notifications/mark-read":"\ud83d\udd12 Mark notifications as read","POST /api/notifications/unread":"\ud83d\udd12 Get unread notifications"},"onboarding_endpoints":{"GET /api/onboarding/status/<asset_id>":"\ud83c\udf10 Get onboarding status","POST /api/onboarding/all-purchases":"\ud83d\udd12 Get all purchases across all assets","POST /api/onboarding/asset-purchases/<asset_id>":"\ud83d\udd12 Get purchase history for asset","POST /api/onboarding/check-privacy":"\ud83d\udd12 [Manual retry] Check/set folder privacy if auto-check failed","POST /api/onboarding/complete":"\ud83d\udd12 Complete with ALL metadata - SYNCS to Asset content table!","POST /api/onboarding/earnings":"\ud83d\udd12 Get seller's total earnings and stats","POST /api/onboarding/my-assets":"\ud83d\udd12 Get all seller's SellerAssets (marketplace listings)","POST /api/onboarding/start":"\ud83d\udd12 Start onboarding - creates SellerAsset, returns service account email","POST /api/onboarding/verify-access":"\ud83d\udd12 Verify editor access + AUTO check/set privacy + activate","description":"Marketplace asset onboarding. /complete also syncs to Asset content table."},"other_endpoints":{"GET /api/users/leaderboard":"XP leaderboard","GET /api/xp/config":"XP configuration values"},"payment_endpoints":{"POST /api/payment/confirm":"\ud83d\udd12 Confirm payment and complete purchase","POST /api/payment/create-intent":"\ud83d\udd12 Create Stripe Payment Intent for asset purchase","POST /api/payment/webhook":"\ud83c\udf10 Stripe payment webhook handler"},"public_endpoints":{"GET /api/public/badges/<user_id>":"\ud83c\udf10 View user's badges","GET /api/public/badges/available":"\ud83c\udf10 All available badges","GET /api/public/card/<user_id>":"\ud83c\udf10 Quick profile card (for lists/hover)","GET /api/public/card/username/<username>":"\ud83c\udf10 Quick card by username","GET /api/public/compare?user1=X&user2=Y":"\ud83c\udf10 Compare two users","GET /api/public/leaderboard":"\ud83c\udf10 XP leaderboard","GET /api/public/levels":"\ud83c\udf10 All level definitions","GET /api/public/profile/<user_id>":"\ud83c\udf10 FULL profile (XP, level, ALL badges, rank, streak)","GET /api/public/profile/username/<username>":"\ud83c\udf10 FULL profile by username","GET /api/public/stats":"\ud83c\udf10 Platform statistics","GET /api/public/xp/<user_id>":"\ud83c\udf10 View user's XP/level"},"reference_data_endpoints":{"GET /api/reference-data/assets/aspect_ratios":"\ud83c\udf10 List of aspect ratios","GET /api/reference-data/assets/asset_types":"\ud83c\udf10 List of asset types","GET /api/reference-data/assets/licenses":"\ud83c\udf10 List of licenses","GET /api/reference-data/assets/orientation":"\ud83c\udf10 List of orientations","GET /api/reference-data/assets/out_types":"\ud83c\udf10 List of asset output types","GET /api/reference-data/assets/output_formats":"\ud83c\udf10 List of output formats","GET /api/reference-data/work/industries":"\ud83c\udf10 List of work industries","GET /api/reference-data/work/orientation":"\ud83c\udf10 List of orientations","GET /api/reference-data/work/orientation_ratios":"\ud83c\udf10 List of aspect ratios","GET /api/reference-data/work/output_types":"\ud83c\udf10 List of output types","GET /api/reference-data/work/tools":"\ud83c\udf10 List of tools"},"referral_endpoints":{"GET /api/referral/code/<user_id>":"\ud83c\udf10 Get referral code (no auth needed)","GET /api/referral/code/username/<username>":"\ud83c\udf10 Get code by username","GET /api/referral/leaderboard":"\ud83c\udf10 Top referrers leaderboard","GET /api/referral/validate/<code>":"\ud83c\udf10 Validate code before signup","POST /api/referral/activate":"\ud83d\udd12 Activate referral (extra XP)","POST /api/referral/generate-code":"\ud83d\udcdd Generate code for user","POST /api/referral/list":"\ud83d\udd12 List all your referrals","POST /api/referral/milestone":"\ud83d\udd12 Award milestone bonus","POST /api/referral/my-referrer":"\ud83d\udd12 Get who referred me","POST /api/referral/register":"\ud83d\udcdd Register referral on signup","POST /api/referral/stats":"\ud83d\udd12 Get referral stats & tier","POST /api/referral/verify":"\ud83d\udd12 Verify referral (extra XP)"},"seller_endpoints":{"POST /api/seller/create-account":"\ud83d\udd12 Create Stripe Express account for seller","POST /api/seller/dashboard-link":"\ud83d\udd12 Get link to Stripe Express dashboard","POST /api/seller/onboarding-link":"\ud83d\udd12 Get onboarding link to complete KYC","POST /api/seller/refresh-status":"\ud83d\udd12 Refresh status from Stripe after onboarding","POST /api/seller/status":"\ud83d\udd12 Get seller account status","POST /api/webhook/stripe":"\ud83c\udf10 Stripe webhook for account updates"},"share_endpoints":{"GET /api/share/stats/<token>":"\ud83d\udd12 Get share analytics","GET /api/share/views/<type>/<id>":"\ud83c\udf10 Get view count for content (video/profile/asset)","POST /api/share/generate":"\ud83d\udd12 Generate shareable link (video/profile/asset)","POST /api/share/my-shares":"\ud83d\udd12 Get all my shares","POST /api/share/quick":"\ud83d\udd12 Quick share with pre-formatted text","POST /api/share/track":"\ud83c\udf10 Track visit (called by frontend on page load)","POST /api/share/watch":"\ud83c\udf10 Track video watch time"},"status":"running","version":"1.0.0","xp_categories":["daily","streak","profile","outcome","bonus"]}
