First release of the Wallee Go SDK, a Go client for the Wallee Web Service API. Wallee ships official SDKs for PHP, Java, Python, Ruby, C#, and TypeScript but not Go, so this fills the gap the same way they're built: generated from Wallee's own OpenAPI (Swagger 2.0) definition, with a hand-written auth layer on top.
Highlights
- Full generated client. 111 services, 445 models, via openapi-generator 7.23.0 (pinned) from the pinned
swagger.json. Basehttps://app-wallee.com/api. - Auth built in.
NewClient(Config{UserID, SecretKey})signs every request through anhttp.RoundTripper. JWT (HS256) is the default and matches the current official SDKs; the legacy MAC (HMAC-SHA512) scheme is available viaConfig.Auth = AuthMAC. Both are verified end-to-end against Wallee's shared test space. - Zero dependencies. Pure standard library.
- Reproducible regeneration.
./gen.shruns the pinned generator against the pinned spec; hand-written files are protected from the generator.
Continuous integration
- CI (
ci.yml) runs on every push and pull request: a gofmt gate,go vet,go build, andgo test -race, across Go 1.23 (the go.mod floor) and the current stable release. Offline only, so it never touches the network. - Live (
live.yml) runs weekly on a schedule plus manual dispatch: the gated integration tests against Wallee's live test space (WALLEE_LIVE_TEST=1). It is kept separate so upstream flakiness never blocks a pull request, and optional repository secrets can point it at a private test space.
Install
go get github.com/zweiundeins/wallee-go-sdk/wallee@v0.1.0import "github.com/zweiundeins/wallee-go-sdk/wallee"
client, _ := wallee.NewClient(wallee.Config{UserID: 140519, SecretKey: os.Getenv("WALLEE_API_KEY")})
tx, _, err := client.TransactionServiceAPI.TransactionServiceRead(ctx).SpaceId(12345).Id(42).Execute()Notes
- The client lives in the
wallee/subpackage; the module path is the repo root. - Pre-1.0: the surface may shift as the SDK tracks upstream (regeneration) and ergonomics settle, so pin a version.