Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
dc2494a
codegen metadata
stainless-app[bot] Nov 7, 2025
b4971e9
fix(client): correctly specify Accept header with */* instead of empty
stainless-app[bot] Nov 19, 2025
225468e
feat(api): api update
stainless-app[bot] Dec 3, 2025
817865a
codegen metadata
stainless-app[bot] Dec 8, 2025
8a8ad69
feat(api): api update
stainless-app[bot] Dec 8, 2025
dacb1a5
codegen metadata
stainless-app[bot] Dec 9, 2025
263a9c8
chore(internal): codegen related update
stainless-app[bot] Dec 9, 2025
37f1785
chore: elide duplicate aliases
stainless-app[bot] Dec 9, 2025
cdd7fa0
fix(mcp): correct code tool API endpoint
stainless-app[bot] Dec 9, 2025
31f124a
fix: rename param to avoid collision
stainless-app[bot] Dec 9, 2025
fcb1643
codegen metadata
stainless-app[bot] Dec 13, 2025
ffdd553
codegen metadata
stainless-app[bot] Dec 17, 2025
87e81ce
codegen metadata
stainless-app[bot] Dec 18, 2025
d2a63a5
chore(internal): codegen related update
stainless-app[bot] Dec 19, 2025
c8e95c7
docs: add more examples
stainless-app[bot] Dec 20, 2025
96bb51d
feat(api): api update
stainless-app[bot] Jan 6, 2026
7d8d734
codegen metadata
stainless-app[bot] Jan 6, 2026
8630261
codegen metadata
stainless-app[bot] Jan 9, 2026
3ebb820
codegen metadata
stainless-app[bot] Jan 16, 2026
5613221
codegen metadata
stainless-app[bot] Jan 17, 2026
c507015
chore(internal): update `actions/checkout` version
stainless-app[bot] Jan 17, 2026
11168f2
fix(docs): add missing pointer prefix to api.md return types
stainless-app[bot] Jan 17, 2026
dba7b85
feat(api): api update
stainless-app[bot] Jan 22, 2026
5478dc3
codegen metadata
stainless-app[bot] Jan 24, 2026
af47ad8
codegen metadata
stainless-app[bot] Jan 27, 2026
864dcdf
codegen metadata
stainless-app[bot] Feb 3, 2026
423a039
codegen metadata
stainless-app[bot] Feb 4, 2026
3e5918a
codegen metadata
stainless-app[bot] Feb 4, 2026
31b05fe
feat(api): api update
stainless-app[bot] Feb 6, 2026
2cf954f
codegen metadata
stainless-app[bot] Feb 6, 2026
0b62680
codegen metadata
stainless-app[bot] Feb 11, 2026
8fda71b
codegen metadata
stainless-app[bot] Feb 11, 2026
426bd50
feat(api): api update
stainless-app[bot] Feb 12, 2026
f3cafbb
feat(api): api update
stainless-app[bot] Feb 18, 2026
e295d78
feat(api): api update
stainless-app[bot] Feb 19, 2026
ef6dba7
feat(api): api update
stainless-app[bot] Feb 20, 2026
f410c16
codegen metadata
stainless-app[bot] Feb 20, 2026
78e159d
chore: update mock server docs
stainless-app[bot] Feb 20, 2026
5093f28
fix: allow canceling a request while it is waiting to retry
stainless-app[bot] Feb 20, 2026
814f666
release: 0.1.0-alpha.9
stainless-app[bot] Feb 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Setup go
uses: actions/setup-go@v5
Expand All @@ -35,7 +35,7 @@ jobs:
runs-on: ${{ github.repository == 'stainless-sdks/arcade-engine-go' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Setup go
uses: actions/setup-go@v5
Expand Down
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.1.0-alpha.8"
".": "0.1.0-alpha.9"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 29
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/arcade-ai%2Farcade-engine-0a15ddd7e03addf08468ff36ac294458f86a3a990277a71870e4bc293635bef9.yml
openapi_spec_hash: 8640228f8a86e5dc464dfa2c8205a2a7
config_hash: 70cdb57c982c578d1961657c07b8b397
configured_endpoints: 30
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/arcade-ai%2Farcade-engine-13d86377193e2e23549d605928c608b47324ee6923f2c4e0204b3139e8c383c6.yml
openapi_spec_hash: caf4bb03bc42b9a2ba718a2251f4e5f0
config_hash: bf64816643634a621cd0ffd93d9c4347
39 changes: 39 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,44 @@
# Changelog

## 0.1.0-alpha.9 (2026-02-20)

Full Changelog: [v0.1.0-alpha.8...v0.1.0-alpha.9](https://github.com/ArcadeAI/arcade-go/compare/v0.1.0-alpha.8...v0.1.0-alpha.9)

### Features

* **api:** api update ([ef6dba7](https://github.com/ArcadeAI/arcade-go/commit/ef6dba7dcc75ec8a355da12108145dc966564949))
* **api:** api update ([e295d78](https://github.com/ArcadeAI/arcade-go/commit/e295d78443c56c5d146c1ce425cc0b94aa986abd))
* **api:** api update ([f3cafbb](https://github.com/ArcadeAI/arcade-go/commit/f3cafbbda12389ddac755ad764cdfca589fed640))
* **api:** api update ([426bd50](https://github.com/ArcadeAI/arcade-go/commit/426bd5094794f1fe5cf17928871bdbf7c8372cbc))
* **api:** api update ([31b05fe](https://github.com/ArcadeAI/arcade-go/commit/31b05fe785b727d1fce4a403f6995f354476a3ab))
* **api:** api update ([dba7b85](https://github.com/ArcadeAI/arcade-go/commit/dba7b8599c6b63c207634e3ac9a8250abbd8c478))
* **api:** api update ([96bb51d](https://github.com/ArcadeAI/arcade-go/commit/96bb51dc393da8eda932aebcb8817e15c6f0fd3c))
* **api:** api update ([8a8ad69](https://github.com/ArcadeAI/arcade-go/commit/8a8ad6959f8ae3aed9085661c6efd7a19713ea41))
* **api:** api update ([225468e](https://github.com/ArcadeAI/arcade-go/commit/225468eb94ab97ea95c360939964eef2c9f15142))


### Bug Fixes

* allow canceling a request while it is waiting to retry ([5093f28](https://github.com/ArcadeAI/arcade-go/commit/5093f2889531dc14af7be689f2af8baba011f606))
* **client:** correctly specify Accept header with */* instead of empty ([b4971e9](https://github.com/ArcadeAI/arcade-go/commit/b4971e9ac4114e03f0b91628a5e5bea5055d4d90))
* **docs:** add missing pointer prefix to api.md return types ([11168f2](https://github.com/ArcadeAI/arcade-go/commit/11168f2105fd658a16d9378d56dc283925e31412))
* **mcp:** correct code tool API endpoint ([cdd7fa0](https://github.com/ArcadeAI/arcade-go/commit/cdd7fa02a5ca03e198cad5a969e7e2951e6fb372))
* rename param to avoid collision ([31f124a](https://github.com/ArcadeAI/arcade-go/commit/31f124a0dd547c82e1655a34e30be9bbed9ed06f))


### Chores

* elide duplicate aliases ([37f1785](https://github.com/ArcadeAI/arcade-go/commit/37f1785677e7707685049d97ea3fc88f6955cd45))
* **internal:** codegen related update ([d2a63a5](https://github.com/ArcadeAI/arcade-go/commit/d2a63a5c1426deb8172d2f98a3976e37b10a8d1d))
* **internal:** codegen related update ([263a9c8](https://github.com/ArcadeAI/arcade-go/commit/263a9c8e76c9920b0b7984701e9498da2cee6398))
* **internal:** update `actions/checkout` version ([c507015](https://github.com/ArcadeAI/arcade-go/commit/c5070155e8a43faf42a500d32d97e2a569c3eea0))
* update mock server docs ([78e159d](https://github.com/ArcadeAI/arcade-go/commit/78e159d152c1a41ce41f28c28902fa63913ba87d))


### Documentation

* add more examples ([c8e95c7](https://github.com/ArcadeAI/arcade-go/commit/c8e95c7814031cf786e5e6d09e4bf8b51a48063a))

## 0.1.0-alpha.8 (2025-11-07)

Full Changelog: [v0.1.0-alpha.7...v0.1.0-alpha.8](https://github.com/ArcadeAI/arcade-go/compare/v0.1.0-alpha.7...v0.1.0-alpha.8)
Expand Down
3 changes: 1 addition & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,7 @@ $ go mod edit -replace github.com/ArcadeAI/arcade-go=/path/to/arcade-go
Most tests require you to [set up a mock server](https://github.com/stoplightio/prism) against the OpenAPI spec to run the tests.

```sh
# you will need npm installed
$ npx prism mock path/to/your/openapi.yml
$ ./scripts/mock
```

```sh
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright 2025 Arcade
Copyright 2026 Arcade

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

Expand Down
27 changes: 26 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Or to pin the version:
<!-- x-release-please-start-version -->

```sh
go get -u 'github.com/ArcadeAI/arcade-go@v0.1.0-alpha.8'
go get -u 'github.com/ArcadeAI/arcade-go@v0.1.0-alpha.9'
```

<!-- x-release-please-end -->
Expand Down Expand Up @@ -165,9 +165,34 @@ This library provides some conveniences for working with paginated list endpoint

You can use `.ListAutoPaging()` methods to iterate through items across all pages:

```go
iter := client.Admin.UserConnections.ListAutoPaging(context.TODO(), arcadego.AdminUserConnectionListParams{})
// Automatically fetches more pages as needed.
for iter.Next() {
userConnectionResponse := iter.Current()
fmt.Printf("%+v\n", userConnectionResponse)
}
if err := iter.Err(); err != nil {
panic(err.Error())
}
```

Or you can use simple `.List()` methods to fetch a single page and receive a standard response object
with additional helper methods like `.GetNextPage()`, e.g.:

```go
page, err := client.Admin.UserConnections.List(context.TODO(), arcadego.AdminUserConnectionListParams{})
for page != nil {
for _, userConnection := range page.Items {
fmt.Printf("%+v\n", userConnection)
}
page, err = page.GetNextPage()
}
if err != nil {
panic(err.Error())
}
```

### Errors

When the API returns a non-success status code, we return an error with type
Expand Down
2 changes: 0 additions & 2 deletions adminauthprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -544,7 +544,6 @@ type AuthProviderResponseOauth2ClientSecret struct {
Binding AuthProviderResponseOauth2ClientSecretBinding `json:"binding"`
Editable bool `json:"editable"`
Exists bool `json:"exists"`
Hint string `json:"hint"`
Value string `json:"value"`
JSON authProviderResponseOauth2ClientSecretJSON `json:"-"`
}
Expand All @@ -555,7 +554,6 @@ type authProviderResponseOauth2ClientSecretJSON struct {
Binding apijson.Field
Editable apijson.Field
Exists apijson.Field
Hint apijson.Field
Value apijson.Field
raw string
ExtraFields map[string]apijson.Field
Expand Down
26 changes: 23 additions & 3 deletions adminsecret.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"slices"

"github.com/ArcadeAI/arcade-go/internal/apijson"
"github.com/ArcadeAI/arcade-go/internal/param"
"github.com/ArcadeAI/arcade-go/internal/requestconfig"
"github.com/ArcadeAI/arcade-go/option"
)
Expand All @@ -33,6 +34,18 @@ func NewAdminSecretService(opts ...option.RequestOption) (r *AdminSecretService)
return
}

// Create or update a secret
func (r *AdminSecretService) New(ctx context.Context, secretKey string, body AdminSecretNewParams, opts ...option.RequestOption) (res *SecretResponse, err error) {
opts = slices.Concat(r.Options, opts)
if secretKey == "" {
err = errors.New("missing required secret_key parameter")
return
}
path := fmt.Sprintf("v1/admin/secrets/%s", secretKey)
err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
return
}

// List all secrets that are visible to the caller
func (r *AdminSecretService) List(ctx context.Context, opts ...option.RequestOption) (res *AdminSecretListResponse, err error) {
opts = slices.Concat(r.Options, opts)
Expand All @@ -44,7 +57,7 @@ func (r *AdminSecretService) List(ctx context.Context, opts ...option.RequestOpt
// Delete a secret by its ID
func (r *AdminSecretService) Delete(ctx context.Context, secretID string, opts ...option.RequestOption) (err error) {
opts = slices.Concat(r.Options, opts)
opts = append([]option.RequestOption{option.WithHeader("Accept", "")}, opts...)
opts = append([]option.RequestOption{option.WithHeader("Accept", "*/*")}, opts...)
if secretID == "" {
err = errors.New("missing required secret_id parameter")
return
Expand All @@ -59,7 +72,6 @@ type SecretResponse struct {
Binding SecretResponseBinding `json:"binding"`
CreatedAt string `json:"created_at"`
Description string `json:"description"`
Hint string `json:"hint"`
Key string `json:"key"`
LastAccessedAt string `json:"last_accessed_at"`
UpdatedAt string `json:"updated_at"`
Expand All @@ -72,7 +84,6 @@ type secretResponseJSON struct {
Binding apijson.Field
CreatedAt apijson.Field
Description apijson.Field
Hint apijson.Field
Key apijson.Field
LastAccessedAt apijson.Field
UpdatedAt apijson.Field
Expand Down Expand Up @@ -156,3 +167,12 @@ func (r *AdminSecretListResponse) UnmarshalJSON(data []byte) (err error) {
func (r adminSecretListResponseJSON) RawJSON() string {
return r.raw
}

type AdminSecretNewParams struct {
Value param.Field[string] `json:"value,required"`
Description param.Field[string] `json:"description"`
}

func (r AdminSecretNewParams) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}
29 changes: 29 additions & 0 deletions adminsecret_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,35 @@ import (
"github.com/ArcadeAI/arcade-go/option"
)

func TestAdminSecretNewWithOptionalParams(t *testing.T) {
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
baseURL = envURL
}
if !testutil.CheckTestServer(t, baseURL) {
return
}
client := arcadego.NewClient(
option.WithBaseURL(baseURL),
option.WithAPIKey("My API Key"),
)
_, err := client.Admin.Secrets.New(
context.TODO(),
"secret_key",
arcadego.AdminSecretNewParams{
Value: arcadego.F("value"),
Description: arcadego.F("description"),
},
)
if err != nil {
var apierr *arcadego.Error
if errors.As(err, &apierr) {
t.Log(string(apierr.DumpRequest(true)))
}
t.Fatalf("err should be nil: %s", err.Error())
}
}

func TestAdminSecretList(t *testing.T) {
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
Expand Down
38 changes: 6 additions & 32 deletions adminuserconnection.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ func (r *AdminUserConnectionService) ListAutoPaging(ctx context.Context, query A
// Delete a user/auth provider connection
func (r *AdminUserConnectionService) Delete(ctx context.Context, id string, opts ...option.RequestOption) (err error) {
opts = slices.Concat(r.Options, opts)
opts = append([]option.RequestOption{option.WithHeader("Accept", "")}, opts...)
opts = append([]option.RequestOption{option.WithHeader("Accept", "*/*")}, opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
Expand Down Expand Up @@ -114,42 +114,16 @@ type AdminUserConnectionListParams struct {
// Page size
Limit param.Field[int64] `query:"limit"`
// Page offset
Offset param.Field[int64] `query:"offset"`
Provider param.Field[AdminUserConnectionListParamsProvider] `query:"provider"`
User param.Field[AdminUserConnectionListParamsUser] `query:"user"`
}

// URLQuery serializes [AdminUserConnectionListParams]'s query parameters as
// `url.Values`.
func (r AdminUserConnectionListParams) URLQuery() (v url.Values) {
return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
ArrayFormat: apiquery.ArrayQueryFormatComma,
NestedFormat: apiquery.NestedQueryFormatBrackets,
})
}

type AdminUserConnectionListParamsProvider struct {
Offset param.Field[int64] `query:"offset"`
// Provider ID
ID param.Field[string] `query:"id"`
}

// URLQuery serializes [AdminUserConnectionListParamsProvider]'s query parameters
// as `url.Values`.
func (r AdminUserConnectionListParamsProvider) URLQuery() (v url.Values) {
return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
ArrayFormat: apiquery.ArrayQueryFormatComma,
NestedFormat: apiquery.NestedQueryFormatBrackets,
})
}

type AdminUserConnectionListParamsUser struct {
ProviderID param.Field[string] `query:"provider_id"`
// User ID
ID param.Field[string] `query:"id"`
UserID param.Field[string] `query:"user_id"`
}

// URLQuery serializes [AdminUserConnectionListParamsUser]'s query parameters as
// URLQuery serializes [AdminUserConnectionListParams]'s query parameters as
// `url.Values`.
func (r AdminUserConnectionListParamsUser) URLQuery() (v url.Values) {
func (r AdminUserConnectionListParams) URLQuery() (v url.Values) {
return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
ArrayFormat: apiquery.ArrayQueryFormatComma,
NestedFormat: apiquery.NestedQueryFormatBrackets,
Expand Down
12 changes: 4 additions & 8 deletions adminuserconnection_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,10 @@ func TestAdminUserConnectionListWithOptionalParams(t *testing.T) {
option.WithAPIKey("My API Key"),
)
_, err := client.Admin.UserConnections.List(context.TODO(), arcadego.AdminUserConnectionListParams{
Limit: arcadego.F(int64(0)),
Offset: arcadego.F(int64(0)),
Provider: arcadego.F(arcadego.AdminUserConnectionListParamsProvider{
ID: arcadego.F("id"),
}),
User: arcadego.F(arcadego.AdminUserConnectionListParamsUser{
ID: arcadego.F("id"),
}),
Limit: arcadego.F(int64(0)),
Offset: arcadego.F(int64(0)),
ProviderID: arcadego.F("provider_id"),
UserID: arcadego.F("user_id"),
})
if err != nil {
var apierr *arcadego.Error
Expand Down
Loading