Provides API endpoints related to sessions
Summary
Functions
List active sessions
Compact session
Get session context
Create session
Subscribe to session events
Get session
Get session history
Interrupt session execution
List sessions
Get session message
Send message
Clear staged revert
Commit staged revert
Stage session revert
Switch session agent
Switch session model
Wait for session
Types
@type v2_session_active_200_json_resp() :: %{data: map()}
@type v2_session_context_200_json_resp() :: %{ data: [ OpenCode.Generated.SessionMessageAgentSwitched.t() | OpenCode.Generated.SessionMessageAssistant.t() | OpenCode.Generated.SessionMessageCompaction.t() | OpenCode.Generated.SessionMessageModelSwitched.t() | OpenCode.Generated.SessionMessageShell.t() | OpenCode.Generated.SessionMessageSynthetic.t() | OpenCode.Generated.SessionMessageSystem.t() | OpenCode.Generated.SessionMessageUser.t() ] }
@type v2_session_create_200_json_resp() :: %{ data: OpenCode.Generated.SessionV2Info.t() }
@type v2_session_get_200_json_resp() :: %{data: OpenCode.Generated.SessionV2Info.t()}
@type v2_session_message_200_json_resp() :: %{ data: OpenCode.Generated.SessionMessageAgentSwitched.t() | OpenCode.Generated.SessionMessageAssistant.t() | OpenCode.Generated.SessionMessageCompaction.t() | OpenCode.Generated.SessionMessageModelSwitched.t() | OpenCode.Generated.SessionMessageShell.t() | OpenCode.Generated.SessionMessageSynthetic.t() | OpenCode.Generated.SessionMessageSystem.t() | OpenCode.Generated.SessionMessageUser.t() }
@type v2_session_prompt_200_json_resp() :: %{ data: OpenCode.Generated.SessionInputAdmitted.t() }
@type v2_session_revert_stage_200_json_resp() :: %{ data: OpenCode.Generated.RevertState.t() }
Functions
@spec v2_session_active(opts :: keyword()) :: {:ok, v2_session_active_200_json_resp()} | {:error, OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.UnauthorizedError.t()}
List active sessions
Retrieve foreground Session drains currently owned by this OpenCode process. Sessions absent from the result are inactive.
@spec v2_session_compact(sessionID :: String.t(), opts :: keyword()) :: :ok | {:error, OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.ServiceUnavailableError.t() | OpenCode.Generated.SessionNotFoundError.t() | OpenCode.Generated.UnauthorizedError.t()}
Compact session
Compact a session conversation.
@spec v2_session_context(sessionID :: String.t(), opts :: keyword()) :: {:ok, v2_session_context_200_json_resp()} | {:error, OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.SessionNotFoundError.t() | OpenCode.Generated.UnauthorizedError.t() | OpenCode.Generated.UnknownError1.t()}
Get session context
Retrieve the active context messages for a session (all messages after the last compaction).
@spec v2_session_create(body :: map(), opts :: keyword()) :: {:ok, v2_session_create_200_json_resp()} | {:error, OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.UnauthorizedError.t()}
Create session
Create a session at the requested location.
Request Body
Content Types: application/json
@spec v2_session_events(sessionID :: String.t(), opts :: keyword()) :: {:ok, v2_session_events_200__resp()} | {:error, OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.SessionNotFoundError.t() | OpenCode.Generated.UnauthorizedError.t()}
Subscribe to session events
Replay durable events after an aggregate sequence, then continue with new durable events.
Options
after
@spec v2_session_get(sessionID :: String.t(), opts :: keyword()) :: {:ok, v2_session_get_200_json_resp()} | {:error, OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.SessionNotFoundError.t() | OpenCode.Generated.UnauthorizedError.t()}
Get session
Retrieve a session by ID.
@spec v2_session_history(sessionID :: String.t(), opts :: keyword()) :: {:ok, OpenCode.Generated.SessionHistory.t()} | {:error, OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.SessionNotFoundError.t() | OpenCode.Generated.UnauthorizedError.t()}
Get session history
Read one finite page of public durable Session events after an exclusive aggregate sequence. Newly committed events may appear on later pages.
Options
limitafter
@spec v2_session_interrupt(sessionID :: String.t(), opts :: keyword()) :: :ok | {:error, OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.SessionNotFoundError.t() | OpenCode.Generated.UnauthorizedError.t()}
Interrupt session execution
Interrupt active execution owned by this OpenCode process. Idle interruption is a no-op.
@spec v2_session_list(opts :: keyword()) :: {:ok, OpenCode.Generated.SessionsResponse.t()} | {:error, OpenCode.Generated.InvalidCursorError.t() | OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.UnauthorizedError.t()}
List sessions
Retrieve sessions in the requested order. Items keep that order across pages; use cursor.next or cursor.previous to move through the ordered list.
Options
workspacelimitordersearchdirectoryprojectsubpathcursor
@spec v2_session_message( sessionID :: String.t(), messageID :: String.t(), opts :: keyword() ) :: {:ok, v2_session_message_200_json_resp()} | {:error, OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.MessageNotFoundError.t() | OpenCode.Generated.SessionNotFoundError.t() | OpenCode.Generated.UnauthorizedError.t()}
Get session message
Retrieve one projected message owned by the Session.
@spec v2_session_prompt(sessionID :: String.t(), body :: map(), opts :: keyword()) :: {:ok, v2_session_prompt_200_json_resp()} | {:error, OpenCode.Generated.ConflictError.t() | OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.SessionNotFoundError.t() | OpenCode.Generated.UnauthorizedError.t()}
Send message
Durably admit one session input and schedule agent-loop execution unless resume is false.
Request Body
Content Types: application/json
@spec v2_session_revert_clear(sessionID :: String.t(), opts :: keyword()) :: :ok | {:error, OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.SessionNotFoundError.t() | OpenCode.Generated.UnauthorizedError.t() | OpenCode.Generated.UnknownError1.t()}
Clear staged revert
@spec v2_session_revert_commit(sessionID :: String.t(), opts :: keyword()) :: :ok | {:error, OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.SessionNotFoundError.t() | OpenCode.Generated.UnauthorizedError.t()}
Commit staged revert
@spec v2_session_revert_stage( sessionID :: String.t(), body :: map(), opts :: keyword() ) :: {:ok, v2_session_revert_stage_200_json_resp()} | {:error, OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.MessageNotFoundError.t() | OpenCode.Generated.SessionNotFoundError.t() | OpenCode.Generated.UnauthorizedError.t() | OpenCode.Generated.UnknownError1.t()}
Stage session revert
Stage or move a reversible session boundary and optionally apply its file changes.
Request Body
Content Types: application/json
@spec v2_session_switch_agent( sessionID :: String.t(), body :: map(), opts :: keyword() ) :: :ok | {:error, OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.SessionNotFoundError.t() | OpenCode.Generated.UnauthorizedError.t()}
Switch session agent
Switch the agent used by subsequent provider turns.
Request Body
Content Types: application/json
@spec v2_session_switch_model( sessionID :: String.t(), body :: map(), opts :: keyword() ) :: :ok | {:error, OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.SessionNotFoundError.t() | OpenCode.Generated.UnauthorizedError.t()}
Switch session model
Switch the model used by subsequent provider turns.
Request Body
Content Types: application/json
@spec v2_session_wait(sessionID :: String.t(), opts :: keyword()) :: :ok | {:error, OpenCode.Generated.InvalidRequestError.t() | OpenCode.Generated.ServiceUnavailableError.t() | OpenCode.Generated.SessionNotFoundError.t() | OpenCode.Generated.UnauthorizedError.t()}
Wait for session
Wait for a session agent loop to become idle.