Install
go get github.com/l1feai/orgs-sdk-go
Quick start
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/l1feai/orgs-sdk-go"
)
func main() {
ctx := context.Background()
client := orgs.NewClient(os.Getenv("ORGS_API_KEY"))
// List entities
entities, err := client.Entities().List(ctx, nil)
if err != nil {
log.Fatal(err)
}
for _, e := range entities.Data {
fmt.Printf("%s: %s\n", e.DID, e.Name)
}
// Create proposal
proposal, err := client.Proposals().Create(ctx, "helios-research", &orgs.ProposalCreateRequest{
Kind: &orgs.ProposalKindSpend{
AmountUSD: 12500,
Recipient: "aws-bedrock",
Description: "Q2 compute reservation",
},
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Proposal: %s\n", proposal.ID)
}
Context support
All client methods acceptcontext.Context for cancellation and deadlines.
Error handling
_, err := client.Treasury().Disburse(ctx, ...)
var insufficient *orgs.InsufficientFundsError
if errors.As(err, &insufficient) {
fmt.Printf("Not enough: $%.2f > $%.2f\n",
insufficient.Requested, insufficient.Available)
}
Options
client := orgs.NewClient(apiKey,
orgs.WithBaseURL("https://api.stage.orgs.sh/v1"),
orgs.WithTimeout(30 * time.Second),
orgs.WithRetries(3),
)