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

Provides API endpoints related to project

# `t`

```elixir
@type t() :: %OpenCode.Generated.Project{
  commands: OpenCode.Generated.ProjectCommands.t() | nil,
  icon: OpenCode.Generated.ProjectIcon.t() | nil,
  id: String.t(),
  name: String.t() | nil,
  sandboxes: [String.t()],
  time: OpenCode.Generated.ProjectTime.t(),
  vcs: String.t() | nil,
  worktree: String.t()
}
```

# `project_current`

```elixir
@spec project_current(opts :: keyword()) ::
  {:ok, t()} | {:error, OpenCode.Generated.BadRequestError.t()}
```

Get current project

Retrieve the currently active project that OpenCode is working with.

## Options

  * `directory`
  * `workspace`

# `project_directories`

```elixir
@spec project_directories(projectID :: String.t(), opts :: keyword()) ::
  {:ok, [OpenCode.Generated.ProjectDirectories.t()]}
  | {:error, OpenCode.Generated.BadRequestError.t()}
```

List project directories

List known local absolute directories for a project.

## Options

  * `directory`
  * `workspace`

# `project_init_git`

```elixir
@spec project_init_git(opts :: keyword()) ::
  {:ok, t()} | {:error, OpenCode.Generated.BadRequestError.t()}
```

Initialize git repository

Create a git repository for the current project and return the refreshed project info.

## Options

  * `directory`
  * `workspace`

# `project_list`

```elixir
@spec project_list(opts :: keyword()) ::
  {:ok, [t()]} | {:error, OpenCode.Generated.BadRequestError.t()}
```

List all projects

Get a list of projects that have been opened with OpenCode.

## Options

  * `directory`
  * `workspace`

# `project_update`

```elixir
@spec project_update(projectID :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok, t()}
  | {:error,
     OpenCode.Generated.EffectHttpApiErrorBadRequest.t()
     | OpenCode.Generated.InvalidRequestError.t()
     | OpenCode.Generated.ProjectNotFoundError.t()}
```

Update project

Update project properties such as name, icon, and commands.

## Options

  * `directory`
  * `workspace`

## Request Body

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

---

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