Go Client (client-go)
Module: github.com/ai-mpathyminds/yaagents-client-go
Full API reference: github.com/ai-mpathyminds/yaagents-client-go
Install
go get github.com/ai-mpathyminds/yaagents-client-go@v0.3.0Minimal example — clarification handling
package main
import ( "context" "errors" "fmt" "log"
client "github.com/ai-mpathyminds/yaagents-client-go")
func main() { c := client.New( "http://localhost:8120", client.WithToken("demo-token"), client.WithTenantID("tenant-001"), )
ctx := context.Background()
// First call: missing required field result, err := c.Campaigns().ByID("cmp-123").Optimizations().Create(ctx, map[string]any{}) if err != nil { var clarErr *client.ClarificationRequiredError if errors.As(err, &clarErr) { fmt.Println("Missing fields:") for _, inp := range clarErr.RequiredInputs { fmt.Printf(" - %s (%s)\n", inp.Name, inp.Question) } // Re-submit with the required field result, err = c.Campaigns().ByID("cmp-123").Optimizations().Create(ctx, map[string]any{ "goal": "ctr", }) } if err != nil { log.Fatal(err) } }
if result.Err() == nil { fmt.Printf("Created: %+v\n", result.Data()) }}Error-type switching
var ( clarErr *client.ClarificationRequiredError validErr *client.ValidationFailedError forbidErr *client.ForbiddenError)
switch {case errors.As(err, &clarErr): // prompt user for clarErr.RequiredInputscase errors.As(err, &validErr): // surface validErr.Errors to callercase errors.As(err, &forbidErr): // permission denieddefault: log.Fatal(err)}Key API symbols
| Symbol | Kind | Purpose |
|---|---|---|
client.New(baseURL, opts...) | constructor | Root client |
client.WithToken(token) | option | Bearer token |
client.WithTenantID(id) | option | X-Tenant-ID header |
c.Campaigns().ByID(id).Optimizations().Create(ctx, body) | method | POST /campaigns/{id}/optimizations |
(*AgenticResult).Err() | method | Non-nil for every non-success outcome |
(*AgenticResult).Data() | method | Decoded response body on success |
Run against campaign-api-go
cd examples/campaign-api-go && docker compose up -d
curl -X POST http://localhost:8120/campaigns/cmp-1/optimizations \ -H "Authorization: Bearer demo-token" \ -H "X-Tenant-ID: tenant-001" \ -H "Content-Type: application/json" \ -d '{"goal": "ctr"}'# → 201 application/jsonSee Examples for the full five-flow walkthrough.