The Go SDK exposes address-book reads, invalidation streaming, and entry and tag writes. The API
accepts the writes (CreateEntry, UpdateEntry, DeleteEntry, CreateTag, UpdateTag, DeleteTag) only with an interactive session token, so an API key is refused with *errors.SessionRequiredError whatever its policy grants. Save destinations in the Polyester app;
reads and the invalidation stream work with an API key.
| Method | Purpose |
|---|---|
ListBooks / ListEntries | Saved books and entries |
ListTransferCounterparties | Eligible counterparties |
ListTransferDestinations | Saved transfer destinations |
ListInternalTransferWhitelistEntries | Internal allowlist view |
GetWithdrawWhitelistView | External withdrawal allowlist state |
GetView | Composite view |
SubscribeViewInvalidations | Private invalidation stream |
CreateEntry / UpdateEntry | Save or change a destination |
DeleteEntry | Remove a destination |
CreateTag / UpdateTag / DeleteTag | Manage tags |
page, err := client.AddressBook.ListEntries(ctx, nil, nil, nil, 50, nil)
if err != nil { log.Fatal(err) }
for _, entry := range page.Entries {
fmt.Println(entry.AddressBookEntryID, entry.Label, entry.Kind)
}
view, err := client.AddressBook.GetWithdrawWhitelistView(ctx, nil, nil)Whitelists are enforced allowlists: a saved destination does not itself authorize a withdrawal. Re-fetch the relevant view after an invalidation; the event is not a full snapshot.
All calls are authenticated. The invalidation stream additionally requires Account ID and the address-book read permission. The method returns only after the private token and Centrifugo handshake succeed.
A denied address-book stream usually means the API-key policy is missing that permission. Verify the key's explicit address-book read permission first.