Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
2a1703d
chore(internal): codegen related update
stainless-app[bot] Dec 9, 2025
f1d62bf
codegen metadata
stainless-app[bot] Dec 13, 2025
2ae39dc
codegen metadata
stainless-app[bot] Dec 17, 2025
4dc5f33
codegen metadata
stainless-app[bot] Dec 18, 2025
ad5a7c6
docs: add more examples
stainless-app[bot] Dec 20, 2025
bdacc08
feat(api): api update
stainless-app[bot] Jan 6, 2026
c020676
codegen metadata
stainless-app[bot] Jan 6, 2026
8840c08
feat(client): add `HttpRequest#url()` method
stainless-app[bot] Jan 7, 2026
6a9cf95
feat(client): allow configuring dispatcher executor service
stainless-app[bot] Jan 9, 2026
97d191b
codegen metadata
stainless-app[bot] Jan 9, 2026
1587d95
chore(internal): support uploading Maven repo artifacts to stainless …
stainless-app[bot] Jan 13, 2026
d44e78d
refactor(client): handling of absent pagination total
stainless-app[bot] Jan 14, 2026
54eaec7
chore(internal): clean up maven repo artifact script and add html doc…
stainless-app[bot] Jan 16, 2026
50013a0
codegen metadata
stainless-app[bot] Jan 16, 2026
5b8d616
codegen metadata
stainless-app[bot] Jan 17, 2026
f7f0332
chore: test on Jackson 2.14.0 to avoid encountering FasterXML/jackson…
stainless-app[bot] Jan 17, 2026
19dfe71
chore(internal): improve maven repo docs
stainless-app[bot] Jan 17, 2026
a73ee11
fix(client): disallow coercion from float to int
stainless-app[bot] Jan 17, 2026
4e3d119
chore(internal): update `actions/checkout` version
stainless-app[bot] Jan 17, 2026
ff68350
fix(client): fully respect max retries
stainless-app[bot] Jan 17, 2026
cb10ea7
chore(ci): upgrade `actions/setup-java`
stainless-app[bot] Jan 17, 2026
9293d09
chore(internal): update maven repo doc to include authentication
stainless-app[bot] Jan 22, 2026
4708f4d
feat(client): send `X-Stainless-Kotlin-Version` header
stainless-app[bot] Jan 22, 2026
8edb811
feat(api): api update
stainless-app[bot] Jan 22, 2026
63d142a
fix(tests): add missing query/header params
stainless-app[bot] Jan 22, 2026
5697f14
docs: add comment for arbitrary value fields
stainless-app[bot] Jan 22, 2026
3aa593e
chore(internal): correct cache invalidation for `SKIP_MOCK_TESTS`
stainless-app[bot] Jan 22, 2026
ab98898
fix(client): preserve time zone in lenient date-time parsing
stainless-app[bot] Jan 23, 2026
bc708e6
chore(ci): upgrade `actions/github-script`
stainless-app[bot] Jan 24, 2026
0d4c489
codegen metadata
stainless-app[bot] Jan 24, 2026
aeb9bb9
codegen metadata
stainless-app[bot] Jan 27, 2026
09fdab4
chore(internal): allow passing args to `./scripts/test`
stainless-app[bot] Jan 31, 2026
f045b84
codegen metadata
stainless-app[bot] Feb 3, 2026
e36629e
codegen metadata
stainless-app[bot] Feb 4, 2026
1f993de
codegen metadata
stainless-app[bot] Feb 4, 2026
5f47131
feat(api): api update
stainless-app[bot] Feb 6, 2026
0feb725
codegen metadata
stainless-app[bot] Feb 6, 2026
83fbe85
chore(internal): upgrade AssertJ
stainless-app[bot] Feb 7, 2026
1e06c6d
codegen metadata
stainless-app[bot] Feb 11, 2026
fa9675e
codegen metadata
stainless-app[bot] Feb 11, 2026
d965caa
feat(api): api update
stainless-app[bot] Feb 12, 2026
28845bd
Add CONTRIBUTING.md (#4)
bdemers Feb 13, 2026
cfa7d4e
Add a simple tool call example (#5)
bdemers Feb 13, 2026
eb7c3bb
Add AuthService util methods to make getting started with Arcade easi…
bdemers Feb 13, 2026
cb15386
feat(api): api update
stainless-app[bot] Feb 18, 2026
3d433ba
chore(internal): update `TestServerExtension` comment
stainless-app[bot] Feb 18, 2026
6b1998f
feat(api): api update
stainless-app[bot] Feb 19, 2026
6976ff2
chore(internal): make `OkHttp` constructor internal
stainless-app[bot] Feb 19, 2026
c227e1f
feat(client): add connection pooling option
stainless-app[bot] Feb 19, 2026
04fcbf1
feat(api): api update
stainless-app[bot] Feb 20, 2026
994a411
codegen metadata
stainless-app[bot] Feb 20, 2026
a6e14e5
chore: make `Properties` more resilient to `null`
stainless-app[bot] Feb 24, 2026
cbf0f1e
chore: drop apache dependency
stainless-app[bot] Feb 24, 2026
161104e
chore(internal): expand imports
stainless-app[bot] Feb 25, 2026
bb94f57
feat(api): api update
stainless-app[bot] Feb 26, 2026
1c45d3e
feat(api): api update
stainless-app[bot] Feb 26, 2026
df75691
Add Spring Boot starter for Arcade SDK (#8)
bdemers Feb 28, 2026
c44efc8
feat: add Java-friendly convenience methods for JsonValue and tool re…
bdemers Feb 28, 2026
e3265d6
Cleanup and add more example code (#10)
bdemers Feb 28, 2026
dedf79f
release: 0.1.0-alpha.2
stainless-app[bot] Feb 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
80 changes: 64 additions & 16 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,55 +1,103 @@
name: CI
on:
push:
branches:
- main
branches-ignore:
- 'generated'
- 'codegen/**'
- 'integrated/**'
- 'stl-preview-head/**'
- 'stl-preview-base/**'
pull_request:
branches:
- main
- next
branches-ignore:
- 'stl-preview-head/**'
- 'stl-preview-base/**'

jobs:
lint:
timeout-minutes: 15
name: lint
runs-on: ubuntu-latest

runs-on: ${{ github.repository == 'stainless-sdks/arcade-engine-java' && '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: Set up Java
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: |
8
17
21
cache: gradle

- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4

- name: Run lints
run: ./scripts/lint

build:
timeout-minutes: 15
name: build
permissions:
contents: read
id-token: write
runs-on: ${{ github.repository == 'stainless-sdks/arcade-engine-java' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork

steps:
- uses: actions/checkout@v6

- name: Set up Java
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: |
8
21
cache: gradle

- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4

- name: Build SDK
run: ./scripts/build

- name: Get GitHub OIDC Token
if: github.repository == 'stainless-sdks/arcade-engine-java'
id: github-oidc
uses: actions/github-script@v8
with:
script: core.setOutput('github_token', await core.getIDToken());

- name: Build and upload Maven artifacts
if: github.repository == 'stainless-sdks/arcade-engine-java'
env:
URL: https://pkg.stainless.com/s
AUTH: ${{ steps.github-oidc.outputs.github_token }}
SHA: ${{ github.sha }}
PROJECT: arcade-engine-java
run: ./scripts/upload-artifacts
test:
timeout-minutes: 15
name: test
runs-on: ubuntu-latest

runs-on: ${{ github.repository == 'stainless-sdks/arcade-engine-java' && '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: Set up Java
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: |
8
17
21
cache: gradle

- name: Set up Gradle
uses: gradle/gradle-build-action@v2

- name: Run tests
run: ./scripts/test

8 changes: 4 additions & 4 deletions .github/workflows/publish-sonatype.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ jobs:
runs-on: ubuntu-latest

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

- name: Set up Java
uses: actions/setup-java@v3
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: |
8
17
21
cache: gradle

- name: Set up Gradle
Expand All @@ -33,7 +33,7 @@ jobs:
export -- GPG_SIGNING_KEY_ID
printenv -- GPG_SIGNING_KEY | gpg --batch --passphrase-fd 3 --import 3<<< "$GPG_SIGNING_PASSWORD"
GPG_SIGNING_KEY_ID="$(gpg --with-colons --list-keys | awk -F : -- '/^pub:/ { getline; print "0x" substr($10, length($10) - 7) }')"
./gradlew publish
./gradlew publish --no-configuration-cache
env:
SONATYPE_USERNAME: ${{ secrets.ARCADE_SONATYPE_USERNAME || secrets.SONATYPE_USERNAME }}
SONATYPE_PASSWORD: ${{ secrets.ARCADE_SONATYPE_PASSWORD || secrets.SONATYPE_PASSWORD }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-doctor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
if: github.repository == 'ArcadeAI/arcade-java' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next')

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

- name: Check release environment
run: |
Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
.prism.log
.gradle
.idea
build
.kotlin
build/
codegen.log
kls_database.db
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.1"
".": "0.1.0-alpha.2"
}
4 changes: 3 additions & 1 deletion .stats.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
configured_endpoints: 30
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/arcade-ai%2Farcade-engine-4dc4e58ef402ce5362e0a8988b3928a8bfa0d5ba847f7ad8b14226a0cf282f28.yml
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/arcade-ai%2Farcade-engine-6ff494eafa2c154892716407682bb2296cff4f18c45765c5fb16bdf36f452ae1.yml
openapi_spec_hash: 63dde2481a7d51042a241bfba232b0b0
config_hash: bf64816643634a621cd0ffd93d9c4347
64 changes: 64 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,69 @@
# Changelog

## 0.1.0-alpha.2 (2026-02-28)

Full Changelog: [v0.1.0-alpha.1...v0.1.0-alpha.2](https://github.com/ArcadeAI/arcade-java/compare/v0.1.0-alpha.1...v0.1.0-alpha.2)

### Features

* add Java-friendly convenience methods for JsonValue and tool response output ([#9](https://github.com/ArcadeAI/arcade-java/issues/9)) ([c44efc8](https://github.com/ArcadeAI/arcade-java/commit/c44efc838f588171cb9f5dc2ab75be58479567fc))
* **api:** api update ([1c45d3e](https://github.com/ArcadeAI/arcade-java/commit/1c45d3ed9c42bcf23ffc18c4877599e5d793b4dc))
* **api:** api update ([bb94f57](https://github.com/ArcadeAI/arcade-java/commit/bb94f5702271dd02242fcf349e4f6a454ba5cbda))
* **api:** api update ([04fcbf1](https://github.com/ArcadeAI/arcade-java/commit/04fcbf1d46d1556e107f33d49e72ed906c2fabf8))
* **api:** api update ([6b1998f](https://github.com/ArcadeAI/arcade-java/commit/6b1998f5e5b4be5fc38204fa5176a6cba6758cf3))
* **api:** api update ([cb15386](https://github.com/ArcadeAI/arcade-java/commit/cb1538608fd7d030860ed13ed1ffcf6b01d94a28))
* **api:** api update ([d965caa](https://github.com/ArcadeAI/arcade-java/commit/d965caad240981417886b04d41b7cfb6c6807425))
* **api:** api update ([5f47131](https://github.com/ArcadeAI/arcade-java/commit/5f471314476dfce0cd0595fbdcabf7119ffd8266))
* **api:** api update ([8edb811](https://github.com/ArcadeAI/arcade-java/commit/8edb811c4e9729e9b5ddc88a694bf9b81834327b))
* **api:** api update ([bdacc08](https://github.com/ArcadeAI/arcade-java/commit/bdacc081f002a2ea9e44b4b8577b3f0f419a7f9d))
* **client:** add `HttpRequest#url()` method ([8840c08](https://github.com/ArcadeAI/arcade-java/commit/8840c08871296bd8c8954e69d8b8d9a215383e28))
* **client:** add connection pooling option ([c227e1f](https://github.com/ArcadeAI/arcade-java/commit/c227e1f817f7cc5bc96d545854a85709d1c9abfb))
* **client:** allow configuring dispatcher executor service ([6a9cf95](https://github.com/ArcadeAI/arcade-java/commit/6a9cf95d67e77e46159d652442250d93aeb9b1a7))
* **client:** send `X-Stainless-Kotlin-Version` header ([4708f4d](https://github.com/ArcadeAI/arcade-java/commit/4708f4d106ba6d1e250f652da7155f92a0be3a60))


### Bug Fixes

* **client:** disallow coercion from float to int ([a73ee11](https://github.com/ArcadeAI/arcade-java/commit/a73ee115e09984525883d5334ceb6b5afad7934e))
* **client:** fully respect max retries ([ff68350](https://github.com/ArcadeAI/arcade-java/commit/ff68350ed3a78064eee3dc46c2caccd71faf5f97))
* **client:** preserve time zone in lenient date-time parsing ([ab98898](https://github.com/ArcadeAI/arcade-java/commit/ab988986ff4782e4218f189bd1cee26138a66516))
* **client:** send retry count header for max retries 0 ([ff68350](https://github.com/ArcadeAI/arcade-java/commit/ff68350ed3a78064eee3dc46c2caccd71faf5f97))
* date time deserialization leniency ([f7f0332](https://github.com/ArcadeAI/arcade-java/commit/f7f0332fbd4e6bb3de2f0738ca1072a2ccfed169))
* **tests:** add missing query/header params ([63d142a](https://github.com/ArcadeAI/arcade-java/commit/63d142a789cd0bd2170cfb30ea04d0f9ff8cd6d5))


### Chores

* **ci:** upgrade `actions/github-script` ([bc708e6](https://github.com/ArcadeAI/arcade-java/commit/bc708e664167b55d6da8adc5e5b5248151dd76fb))
* **ci:** upgrade `actions/setup-java` ([cb10ea7](https://github.com/ArcadeAI/arcade-java/commit/cb10ea791a3ef48655eafe4cf0a42691cad4794d))
* drop apache dependency ([cbf0f1e](https://github.com/ArcadeAI/arcade-java/commit/cbf0f1eab15563592bed7c6be68b11a38de68a5c))
* **internal:** allow passing args to `./scripts/test` ([09fdab4](https://github.com/ArcadeAI/arcade-java/commit/09fdab4518905c63d49be270b68517c1b3e1436a))
* **internal:** clean up maven repo artifact script and add html documentation to repo root ([54eaec7](https://github.com/ArcadeAI/arcade-java/commit/54eaec7dc0bc56c4059e5bdbf087cd14119e8f3e))
* **internal:** codegen related update ([2a1703d](https://github.com/ArcadeAI/arcade-java/commit/2a1703d633b6f1ef888c84bb0f97a489707fdf2b))
* **internal:** correct cache invalidation for `SKIP_MOCK_TESTS` ([3aa593e](https://github.com/ArcadeAI/arcade-java/commit/3aa593e3a04a5cb8d5d06d856fce71384550dfc1))
* **internal:** depend on packages directly in example ([ff68350](https://github.com/ArcadeAI/arcade-java/commit/ff68350ed3a78064eee3dc46c2caccd71faf5f97))
* **internal:** expand imports ([161104e](https://github.com/ArcadeAI/arcade-java/commit/161104ee63b0976f5d826af2e741c8f5174fe3e3))
* **internal:** improve maven repo docs ([19dfe71](https://github.com/ArcadeAI/arcade-java/commit/19dfe71adecbf10499e215da519ad33829056e35))
* **internal:** make `OkHttp` constructor internal ([6976ff2](https://github.com/ArcadeAI/arcade-java/commit/6976ff257c45b8eee1f6cc0ce942381aa87d6665))
* **internal:** support uploading Maven repo artifacts to stainless package server ([1587d95](https://github.com/ArcadeAI/arcade-java/commit/1587d95ebf6354001281ddf48f90c6975d0ff42e))
* **internal:** update `actions/checkout` version ([4e3d119](https://github.com/ArcadeAI/arcade-java/commit/4e3d1190db673cb73830d46e8f33ddd3282c081b))
* **internal:** update `TestServerExtension` comment ([3d433ba](https://github.com/ArcadeAI/arcade-java/commit/3d433bafa9702fa980cff7ad77a6ae6d5c5406ac))
* **internal:** update maven repo doc to include authentication ([9293d09](https://github.com/ArcadeAI/arcade-java/commit/9293d093fdfa5b73def69fa6ee378b9ed4a7c0b5))
* **internal:** upgrade AssertJ ([83fbe85](https://github.com/ArcadeAI/arcade-java/commit/83fbe85d88fb970705ba160c9ecd78711aba0066))
* make `Properties` more resilient to `null` ([a6e14e5](https://github.com/ArcadeAI/arcade-java/commit/a6e14e52dff5cb2d1bd22e47f62f9bc922dd9dfb))
* test on Jackson 2.14.0 to avoid encountering FasterXML/jackson-databind[#3240](https://github.com/ArcadeAI/arcade-java/issues/3240) in tests ([f7f0332](https://github.com/ArcadeAI/arcade-java/commit/f7f0332fbd4e6bb3de2f0738ca1072a2ccfed169))


### Documentation

* add comment for arbitrary value fields ([5697f14](https://github.com/ArcadeAI/arcade-java/commit/5697f14e1f875679a2c99990f3600776a58ad4b1))
* add more examples ([ad5a7c6](https://github.com/ArcadeAI/arcade-java/commit/ad5a7c6b1a79255af06b764c2d609699b68414c9))


### Refactors

* **client:** handling of absent pagination total ([d44e78d](https://github.com/ArcadeAI/arcade-java/commit/d44e78daeaf4a3421cc39102c78920cfc6f20322))

## 0.1.0-alpha.1 (2025-12-08)

Full Changelog: [v0.0.1-alpha.0...v0.1.0-alpha.1](https://github.com/ArcadeAI/arcade-java/compare/v0.0.1-alpha.0...v0.1.0-alpha.1)
Expand Down
64 changes: 64 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
## Modifying/Adding code

Most of the SDK is generated code. Modifications to code will be persisted between generations, but may
result in merge conflicts between manual patches and changes from the generator. The generator will never
modify the contents of the `arcade-java/lib/` and `arcade-java-examples/` directories.

## Adding and running examples

Set the following environment variables:

| ENV Var | Description |
|-------------------|-------------------------------------------------------------------------|
| `ARCADE_USER_ID` | Arcade user Id or email address |
| `ARCADE_API_KEY` | [Arcade API key](https://docs.arcade.dev/en/get-started/setup/api-keys) |
| `ARCADE_BASE_URL` | Arcade URL, defaults to: `https://api.arcade.dev` |

Use `./gradlew :arcade-java-example:run -Pexample=<Name>` to run `<Name>Example`

For example, if you have the `potify.ResumePlayback` tool configured, you can run:
```shell
export ARCADE_API_KEY='your-api-key'
export ARCADE_USER_ID='your-arcade-user'
./gradlew :arcade-java-example:run -Pexample=PlaySpotify
```

## Building the repository from source

If you’d like to use the repository from source, you can build and install it from git:

```sh
git clone git@github.com/ArcadeAI/arcade-java.git
SKIP_MOCK_TESTS=true ./gradlew build publishToMavenLocal # This will skip the integration tests, see below on info on how to run them.
```
## Running tests

Most tests require you to [run a mock server](https://github.com/stoplightio/prism) against the OpenAPI spec to run the tests.

```sh
# you will need npm installed
./scripts/mock --daemon
```

The mock serer will run in the background allowing you to run tests from the command line `./gradlew test` or from your IDE.

To stop the mock server run:
```shell
pkill -f prism
```

## Linting and formatting

This repository uses [Spotless](https://github.com/diffplug/spotless/tree/main/plugin-gradle) to lint and format the code in the repository.

To lint:

```sh
$ ./scripts/lint
```

To format and fix all issues automatically:

```sh
$ ./scripts/format
```
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
Loading
Loading