The Rust SDK exposes address-book reads, entry and tag mutations, and invalidation streaming. The
API accepts the entry and tag mutations only with an interactive session token, so an API key is
refused with Error::SessionRequired whatever its policy grants. Save destinations in the
Polyester app; reads and the invalidation stream work with an API key.
Methods
| Method | Summary |
|---|---|
list_books | List address books. |
list_entries | List saved entries. |
list_transfer_counterparties / list_transfer_destinations | Read transfer allowlist views. |
list_internal_transfer_whitelist_entries | Read internal-transfer entries. |
get_withdraw_whitelist_view / get_view | Read withdrawal allowlist view. |
subscribe / subscribe_view_invalidations | Stream view invalidations. |
create_entry / update_entry / delete_entry / copy_entry | Change saved entries. |
create_tag / update_tag / delete_tag | Change tags. |
use polyester::proto::auth::v1::ListAddressBookEntriesRequest;
let page = client
.address_book
.list_entries(ListAddressBookEntriesRequest {
limit: 50,
..Default::default()
})
.await?;
for entry in page.entries {
println!("{} {} {}", entry.address_book_entry_id, entry.label, entry.kind);
}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.
create_entry and update_entry accept atomic new_tags: new tags are created and attached in the
same protected request. get_view returns a raw ApiData; set minimum_view_revision on the
request.
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. An HTTP 403 from a test fixture that lacks that permission is an expected policy/configuration denial, not an SDK streaming defect; grant address-book read access before reconnecting.