Response for GET /api/oauth/per-user/flows/{id}. Mirrors the headers-side MCPHeadersFlowDetail — identity binding for display plus the bits the consent UI needs to decide its copy.
Summary
Types
@type t() :: %ExBifrost.Model.McpOauthFlowDetail{ created_at: DateTime.t(), expires_at: DateTime.t(), flow_mode: String.t(), has_active_token: boolean(), id: String.t(), mcp_client: ExBifrost.Model.McpClientSummary.t(), oauth_config_id: String.t(), session_id: String.t() | nil, status: String.t(), user: ExBifrost.Model.McpUserSummary.t() | nil, user_id: String.t() | nil, virtual_key: ExBifrost.Model.McpVirtualKeySummary.t() | nil }