opencode-sdk-go/project.go
stainless-app[bot] 2f34d5d53e chore: sync repo
2025-08-31 05:32:21 +00:00

87 lines
2.8 KiB
Go

// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
package opencode
import (
"context"
"net/http"
"github.com/stainless-sdks/opencode-go/internal/apijson"
"github.com/stainless-sdks/opencode-go/internal/requestconfig"
"github.com/stainless-sdks/opencode-go/option"
"github.com/stainless-sdks/opencode-go/packages/respjson"
)
// ProjectService contains methods and other services that help with interacting
// with the opencode API.
//
// Note, unlike clients, this service does not read variables from the environment
// automatically. You should not instantiate this service directly, and instead use
// the [NewProjectService] method instead.
type ProjectService struct {
Options []option.RequestOption
}
// NewProjectService generates a new service that applies the given options to each
// request. These options are applied after the parent client's options (if there
// is one), and before any request-specific options.
func NewProjectService(opts ...option.RequestOption) (r ProjectService) {
r = ProjectService{}
r.Options = opts
return
}
// List all projects
func (r *ProjectService) List(ctx context.Context, opts ...option.RequestOption) (res *[]ProjectListResponse, err error) {
opts = append(r.Options[:], opts...)
path := "project"
err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
return
}
type ProjectListResponse struct {
ID string `json:"id,required"`
Time ProjectListResponseTime `json:"time,required"`
Worktree string `json:"worktree,required"`
// Any of "git".
Vcs ProjectListResponseVcs `json:"vcs"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
Time respjson.Field
Worktree respjson.Field
Vcs respjson.Field
ExtraFields map[string]respjson.Field
raw string
} `json:"-"`
}
// Returns the unmodified JSON received from the API
func (r ProjectListResponse) RawJSON() string { return r.JSON.raw }
func (r *ProjectListResponse) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
type ProjectListResponseTime struct {
Created float64 `json:"created,required"`
Initialized float64 `json:"initialized"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Created respjson.Field
Initialized respjson.Field
ExtraFields map[string]respjson.Field
raw string
} `json:"-"`
}
// Returns the unmodified JSON received from the API
func (r ProjectListResponseTime) RawJSON() string { return r.JSON.raw }
func (r *ProjectListResponseTime) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}
type ProjectListResponseVcs string
const (
ProjectListResponseVcsGit ProjectListResponseVcs = "git"
)