# `OpenCode.Generated.V2`
[🔗](https://github.com/UtkarshUsername/opencode-sdk-elixir/blob/v0.1.84/lib/opencode/generated/v2.ex#L1)

Provides API endpoints related to v2

# `v2_session_context_200_json_resp`

```elixir
@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()
  ]
}
```

# `v2_session_prompt_200_json_resp`

```elixir
@type v2_session_prompt_200_json_resp() :: %{
  data: OpenCode.Generated.SessionInputAdmitted.t()
}
```

# `v2_session_compact`

```elixir
@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 v2 session

Compact a v2 session conversation.

# `v2_session_context`

```elixir
@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 v2 session context

Retrieve the active context messages for a v2 session (all messages after the last compaction).

# `v2_session_list`

```elixir
@spec v2_session_list(opts :: keyword()) ::
  {:ok, OpenCode.Generated.V2SessionsResponse.t()}
  | {:error,
     OpenCode.Generated.InvalidCursorError.t()
     | OpenCode.Generated.InvalidRequestError.t()
     | OpenCode.Generated.UnauthorizedError.t()}
```

List v2 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

  * `workspace`
  * `limit`
  * `order`
  * `search`
  * `directory`
  * `project`
  * `subpath`
  * `cursor`

# `v2_session_prompt`

```elixir
@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 v2 message

Durably admit one v2 session input and schedule agent-loop execution unless resume is false.

## Request Body

**Content Types**: `application/json`

# `v2_session_wait`

```elixir
@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 v2 session

Wait for a v2 session agent loop to become idle.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
