Skip to content

Search is only available in production builds. Try building and previewing the site to test it out locally.

Go SDK

go get github.com/tracktile/tracktile-go
package main
import (
"context"
"fmt"
"log"
tracktile "github.com/tracktile/tracktile-go"
)
func main() {
client := tracktile.New(
tracktile.WithJWT("your-api-token"),
)
products, err := client.Products.List(context.Background())
if err != nil {
log.Fatal(err)
}
fmt.Println(products)
}
client := tracktile.New(
tracktile.WithJWT("your-api-token"),
)
ResourceMethods
client.InventoryReceive, Move, Update, Waste, Assign, Unassign, Bundle, Merge, Unmerge
client.OrdersList, Create, Get, Update, Delete, GetProductAttributes
client.ProductsList, Create, Get, Update, Delete, BatchUpdate, FetchByIDs
client.PurchaseOrdersList, Create, Get, Update, Delete
client.ShipmentsList, Create, Get, Update, Patch, Delete, GetItems
client.SuppliersList, Create, Get, Update, Delete, GetDefaultOrder
client.TransportsList, Create, Get, Update, Delete

All methods accept a context.Context as the first argument for cancellation and timeouts:

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
products, err := client.Products.List(ctx)
if err != nil {
if errors.Is(err, context.DeadlineExceeded) {
// Handle timeout
}
}
import "github.com/tracktile/tracktile-go/models/errors"
product, err := client.Products.Get(ctx, "invalid-id")
if err != nil {
var badRequest *errors.BadRequestError
var unauthorized *errors.UnauthorizedError
var forbidden *errors.ForbiddenError
var notFound *errors.NotFoundError
var serverError *errors.ServerError
switch {
case errors.As(err, &badRequest):
// Handle 400 errors
case errors.As(err, &unauthorized):
// Handle 401 errors
case errors.As(err, &forbidden):
// Handle 403 errors
case errors.As(err, &notFound):
// Handle 404 errors
case errors.As(err, &serverError):
// Handle 500 errors
default:
// Handle other errors
}
}
client := tracktile.New(
tracktile.WithJWT("your-api-token"),
tracktile.WithRetryConfig(tracktile.RetryConfig{
Strategy: "backoff",
Backoff: tracktile.BackoffStrategy{
InitialInterval: 1,
MaxInterval: 50,
Exponent: 1.1,
MaxElapsedTime: 100,
},
RetryConnectionErrors: false,
}),
)
httpClient := &http.Client{
Timeout: 30 * time.Second,
}
client := tracktile.New(
tracktile.WithJWT("your-api-token"),
tracktile.WithHTTPClient(httpClient),
)
client := tracktile.New(
tracktile.WithJWT("your-api-token"),
tracktile.WithDebugLogger(log.Default()),
)
RuntimeVersion
Go1.21+

The SDK follows idiomatic Go patterns and has minimal external dependencies.