{"ok":true,"brand":"goalin","legacy_path_alias":"/goal","frontend":{"definition":"/goalin/definition","admin_portal":"/goalin","admin_member_management":"/goalin/members","user_portal":"/user","user_home":"/user/home","terms":"/terms","privacy":"/privacy","support_policy":"/support-policy","pool_web_default":"http://127.0.0.1:8787/"},"backend":{"health":"/health","admin_api":"/api/v1/admin/dashboard-data","admin_members_api":"/api/v1/admin/users","admin_change_credentials_api":"/api/v1/auth/admin/change-credentials","user_api":"/api/v1/user/me","user_change_password_api":"/api/v1/user/change-password","device_api":"/api/v1/devices","heartbeat_api":"/api/v1/heartbeat","work_poll_api":"/api/v1/work/poll","work_submit_api":"/api/v1/work/submit","legal_api":"/api/v1/legal/policies","definition_api":"/api/v1/goalin/definition","share_model_api":"/api/v1/goalin/share-model"},"share_model":{"goal_platform_share_percent":10,"inviter_share_percent":10,"participant_remainder_percent_when_invited":80,"participant_remainder_percent_without_inviter":90},"poll":{"endpoint":"/api/v1/work/poll","available_for_approved_devices":true,"blocked_for_inactive_devices":true,"work_queue_enabled_now":true},"database":{"configured":true,"driver":"postgresql+psycopg","connected":true,"used_by_current_api":false,"json_state_allowed_for_service":true,"separate_database_management":true,"management_mode":"external_database_via_DATABASE_URL","active_runtime_store":"in_memory_control_store_plus_json_state_files","note":"Database must be operated separately. SQLAlchemy/PostgreSQL can be configured, but current API handlers still use memory/JSON state as their live store. Set GOALIN_ALLOW_JSON_STATE_IN_SERVICE=true only for a single-server transition deployment with backups.","error":""},"runtime":{"env":"prod","service_mode":"service","host":"127.0.0.1","port":8000,"public_base_url":"https://goalin.net","allowed_origins":["https://goalin.net","https://www.goalin.net"],"goalin_allow_json_state_in_service":true,"backup_dir":"/var/backups/goalin","audit_log_dir":"/var/log/goalin"},"service_readiness":{"service_version_possible":true,"ready_now":true,"blockers":[],"warnings":["HOST is local-only. Use a reverse proxy or set the intended bind host for deployment.","Current API runtime uses JSON transition state. Keep this to one server and run scheduled backups."],"required_before_domain_launch":["Set ENV=prod and SERVICE_MODE=service.","Set PUBLIC_BASE_URL to the production HTTPS domain.","Restrict ALLOWED_ORIGINS to the production domain.","Rotate the default admin credential.","Set GOAL_DEBUG_ENDPOINTS=false.","Connect and migrate PostgreSQL, then move live API state off memory/JSON.","If launching before the PostgreSQL live-store migration, explicitly set GOALIN_ALLOW_JSON_STATE_IN_SERVICE=true and schedule backups.","Configure SUPPORT_EMAIL and PRIVACY_EMAIL.","Run behind HTTPS reverse proxy or equivalent TLS termination."]}}