Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 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
cedae74
chore(internal): move custom custom `json` tags to `api`
stainless-app[bot] Feb 25, 2026
e7ec3a4
feat(api): api update
stainless-app[bot] Feb 26, 2026
8e0a60b
feat(api): api update
stainless-app[bot] Feb 26, 2026
8a7c8fe
release: 0.1.0-alpha.9
stainless-app[bot] Feb 26, 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-6ff494eafa2c154892716407682bb2296cff4f18c45765c5fb16bdf36f452ae1.yml
openapi_spec_hash: 63dde2481a7d51042a241bfba232b0b0
config_hash: bf64816643634a621cd0ffd93d9c4347
42 changes: 42 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,47 @@
# Changelog

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

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 ([8e0a60b](https://github.com/ArcadeAI/arcade-go/commit/8e0a60b92a5d9aaf32d3b1fd3c008921972ccec8))
* **api:** api update ([e7ec3a4](https://github.com/ArcadeAI/arcade-go/commit/e7ec3a489005741fb4fe27aed0223e479aaf15d6))
* **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:** move custom custom `json` tags to `api` ([cedae74](https://github.com/ArcadeAI/arcade-go/commit/cedae746b544a425461567895a612b8a3f6753fc))
* **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
24 changes: 11 additions & 13 deletions adminauthprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ func (r *AdminAuthProviderService) Patch(ctx context.Context, id string, body Ad
}

type AuthProviderCreateRequestParam struct {
ID param.Field[string] `json:"id,required"`
ID param.Field[string] `json:"id" api:"required"`
Description param.Field[string] `json:"description"`
// The unique external ID for the auth provider
ExternalID param.Field[string] `json:"external_id"`
Expand All @@ -102,7 +102,7 @@ func (r AuthProviderCreateRequestParam) MarshalJSON() (data []byte, err error) {
}

type AuthProviderCreateRequestOauth2Param struct {
ClientID param.Field[string] `json:"client_id,required"`
ClientID param.Field[string] `json:"client_id" api:"required"`
AuthorizeRequest param.Field[AuthProviderCreateRequestOauth2AuthorizeRequestParam] `json:"authorize_request"`
ClientSecret param.Field[string] `json:"client_secret"`
Pkce param.Field[AuthProviderCreateRequestOauth2PkceParam] `json:"pkce"`
Expand All @@ -118,7 +118,7 @@ func (r AuthProviderCreateRequestOauth2Param) MarshalJSON() (data []byte, err er
}

type AuthProviderCreateRequestOauth2AuthorizeRequestParam struct {
Endpoint param.Field[string] `json:"endpoint,required"`
Endpoint param.Field[string] `json:"endpoint" api:"required"`
AuthHeaderValueFormat param.Field[string] `json:"auth_header_value_format"`
AuthMethod param.Field[string] `json:"auth_method"`
Method param.Field[string] `json:"method"`
Expand Down Expand Up @@ -172,7 +172,7 @@ func (r AuthProviderCreateRequestOauth2PkceParam) MarshalJSON() (data []byte, er
}

type AuthProviderCreateRequestOauth2RefreshRequestParam struct {
Endpoint param.Field[string] `json:"endpoint,required"`
Endpoint param.Field[string] `json:"endpoint" api:"required"`
AuthHeaderValueFormat param.Field[string] `json:"auth_header_value_format"`
AuthMethod param.Field[string] `json:"auth_method"`
Method param.Field[string] `json:"method"`
Expand Down Expand Up @@ -232,8 +232,8 @@ func (r AuthProviderCreateRequestOauth2ScopeDelimiter) IsKnown() bool {
}

type AuthProviderCreateRequestOauth2TokenIntrospectionRequestParam struct {
Endpoint param.Field[string] `json:"endpoint,required"`
Triggers param.Field[AuthProviderCreateRequestOauth2TokenIntrospectionRequestTriggersParam] `json:"triggers,required"`
Endpoint param.Field[string] `json:"endpoint" api:"required"`
Triggers param.Field[AuthProviderCreateRequestOauth2TokenIntrospectionRequestTriggersParam] `json:"triggers" api:"required"`
AuthHeaderValueFormat param.Field[string] `json:"auth_header_value_format"`
AuthMethod param.Field[string] `json:"auth_method"`
Method param.Field[string] `json:"method"`
Expand Down Expand Up @@ -287,7 +287,7 @@ func (r AuthProviderCreateRequestOauth2TokenIntrospectionRequestResponseContentT
}

type AuthProviderCreateRequestOauth2TokenRequestParam struct {
Endpoint param.Field[string] `json:"endpoint,required"`
Endpoint param.Field[string] `json:"endpoint" api:"required"`
AuthHeaderValueFormat param.Field[string] `json:"auth_header_value_format"`
AuthMethod param.Field[string] `json:"auth_method"`
Method param.Field[string] `json:"method"`
Expand Down Expand Up @@ -332,8 +332,8 @@ func (r AuthProviderCreateRequestOauth2TokenRequestResponseContentType) IsKnown(
}

type AuthProviderCreateRequestOauth2UserInfoRequestParam struct {
Endpoint param.Field[string] `json:"endpoint,required"`
Triggers param.Field[AuthProviderCreateRequestOauth2UserInfoRequestTriggersParam] `json:"triggers,required"`
Endpoint param.Field[string] `json:"endpoint" api:"required"`
Triggers param.Field[AuthProviderCreateRequestOauth2UserInfoRequestTriggersParam] `json:"triggers" api:"required"`
AuthHeaderValueFormat param.Field[string] `json:"auth_header_value_format"`
AuthMethod param.Field[string] `json:"auth_method"`
Method param.Field[string] `json:"method"`
Expand Down 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 Expand Up @@ -1082,15 +1080,15 @@ func (r adminAuthProviderListResponseJSON) RawJSON() string {
}

type AdminAuthProviderNewParams struct {
AuthProviderCreateRequest AuthProviderCreateRequestParam `json:"auth_provider_create_request,required"`
AuthProviderCreateRequest AuthProviderCreateRequestParam `json:"auth_provider_create_request" api:"required"`
}

func (r AdminAuthProviderNewParams) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r.AuthProviderCreateRequest)
}

type AdminAuthProviderPatchParams struct {
AuthProviderUpdateRequest AuthProviderUpdateRequestParam `json:"auth_provider_update_request,required"`
AuthProviderUpdateRequest AuthProviderUpdateRequestParam `json:"auth_provider_update_request" api:"required"`
}

func (r AdminAuthProviderPatchParams) MarshalJSON() (data []byte, err error) {
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" api:"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
Loading