{"ok":true,"path":"/health/features","features":{"jwtSecret":true,"databaseUrl":true,"webOriginConfigured":true,"youtubeWorkflowEnabled":true,"nodeEnv":"production","avatarR2":{"R2_ACCOUNT_ID":true,"R2_ACCESS_KEY_ID":true,"R2_SECRET_ACCESS_KEY":true,"R2_BUCKET_NAME":true,"R2_PUBLIC_URL":true,"R2_PUBLIC_BASE_URL":false,"configured":true,"uploadAvatarsToR2":true,"useLocalFallback":false,"productionR2Required":true,"missingEnvKeys":[],"publicBaseUrlHost":"pub-9fd3864c6f9a4d199812d8e648c37cf6.r2.dev","AVATAR_STORAGE":null,"NODE_ENV":"production"}},"schema":{"payment_transactions":true,"platform_markets":true,"organizations":true,"youtube_workflow":true,"cms_video_review_audit":true,"public_discovery":true},"schemaDetails":{"payment_transactions":{"exists":true,"detail":"payment_transactions table present (097+)"},"platform_markets":{"exists":true,"detail":"platform_markets table present (095+)"},"organizations":{"exists":true,"detail":"organizations table present (099+)"},"youtube_workflow":{"exists":true,"detail":"cms_videos Talent TV / YouTube workflow columns present (migrations 104, 108, 115)"},"cms_video_review_audit":{"exists":true,"detail":"cms_video_review_audit present (104)"},"public_discovery":{"exists":true,"detail":"Public discovery columns present (091 users.deleted_at, profile visibility — migrations 091+ / 045+)"}},"migrations":{"range":{"from":90,"to":116},"applyCommand":"./scripts/deploy-db.sh migrate","verifyHint":"GET /health/features → schema + migrations.pilotReady","files":[{"id":90,"file":"090_event_workforce.sql","feature":"Event workforce"},{"id":91,"file":"091_users_soft_delete_column.sql","feature":"User soft-delete (Super Admin)"},{"id":92,"file":"092_public_profile_indexes.sql","feature":"Public discovery performance & filters"},{"id":93,"file":"093_account_deletion_policy.sql","feature":"Account retention / purge policy"},{"id":94,"file":"094_cms_africa_map_section_copy.sql","feature":"Homepage map CMS copy"},{"id":95,"file":"095_platform_markets.sql","feature":"Homepage country markets"},{"id":96,"file":"096_home_announcement_carousel.sql","feature":"Announcement carousel"},{"id":97,"file":"097_payment_transactions_phase1.sql","feature":"Manual payment approval queue"},{"id":98,"file":"098_platform_markets_default_cd_only.sql","feature":"Default pilot market seed"},{"id":99,"file":"099_organizations_membership.sql","feature":"Organizations + members"},{"id":100,"file":"100_organization_workspace.sql","feature":"Org invites & workspace"},{"id":101,"file":"101_match_result_pipeline.sql","feature":"Match result pipeline"},{"id":102,"file":"102_athlete_career_recruitment.sql","feature":"Career & recruitment"},{"id":103,"file":"103_access_requests.sql","feature":"Federation admin access requests"},{"id":104,"file":"104_cms_videos_youtube_workflow.sql","feature":"Talent TV / YouTube workflow"},{"id":105,"file":"105_platform_contact_emails.sql","feature":"Platform contact emails"},{"id":106,"file":"106_cms_hero_slider.sql","feature":"CMS hero slider"},{"id":107,"file":"107_athlete_marketplace.sql","feature":"Athlete marketplace flags"},{"id":107,"file":"107_cms_banners.sql","feature":"CMS page banners"},{"id":108,"file":"108_cms_video_workflow_extensions.sql","feature":"Video workflow extensions"},{"id":108,"file":"108_cms_videos_original_file_storage.sql","feature":"Video original file storage"},{"id":109,"file":"109_activate_completed_player_profiles.sql","feature":"Player activation data fix"},{"id":110,"file":"110_users_last_login_at.sql","feature":"Last login tracking"},{"id":111,"file":"111_user_status_activation_enum.sql","feature":"User status enum values"},{"id":112,"file":"112_users_updated_at.sql","feature":"Users updated_at"},{"id":113,"file":"113_entity_gallery.sql","feature":"Profile galleries"},{"id":114,"file":"114_recruitment_ecosystem_hardening.sql","feature":"Transfers & registrations"},{"id":115,"file":"115_cms_videos_youtube_workflow_guard.sql","feature":"YouTube workflow guard"},{"id":116,"file":"116_super_admin_user_ops_audit.sql","feature":"Super Admin user ops audit"},{"id":117,"file":"117_ticket_sales_partners.sql","feature":"Ticket sales partner onboarding"},{"id":118,"file":"118_federation_sport_id_system.sql","feature":"Federation sport ID sales & accreditation"},{"id":119,"file":"119_sports_identity_infrastructure.sql","feature":"Sports identity trust tiers & organizers"},{"id":120,"file":"120_match_validations.sql","feature":"Match validations & dispute notes"},{"id":121,"file":"121_match_result_pipeline_enum.sql","feature":"Match pipeline status enum values"}],"pilotReady":true,"missingForPilot":[]},"email":{"smtpConfigured":false,"deliveryMode":"stub","detail":"SMTP is not configured — password-reset and notification emails are logged only, not delivered. Use in-app notifications for pilot."},"pilotBlockers":null}