Polyester Protobuf contracts commonly declare public IDs as fixed64 values, carrying the
underlying unsigned 64-bit value in compact typed payloads.
For what public IDs are and why they are opaque, see Public IDs. This page covers only how they look and behave over ConnectRPC and Protobuf.
Using fixed64 IDs
Public ID fields declared as fixed64 carry the underlying unsigned 64-bit value. Always follow
the field type in the published contract; not every identifier uses fixed64.
message Trade {
fixed64 order_id = 1;
uint32 symbol_id = 2;
uint64 qty_scaled = 3;
}In generated clients, use the type your language SDK gives you for 64-bit integers. In JSON debug mode, protobuf tools often show 64-bit integer fields as decimal strings:
{
"orderId": "72623859790382856"
}JSON debug output shows the fixed64 value as a decimal string because JSON has no native 64-bit integer type. In binary protobuf, the same values are encoded as fixed-width 64-bit fields. This keeps hot paths compact and avoids extra string parsing in clients that already use typed protobuf contracts.
Using an integer field instead of a string also reduces payload size, especially in large list responses, order history, trade history, realtime-style snapshots, and other payloads that repeat many IDs. If your integration cares about smaller payloads and lower transport overhead, prefer ConnectRPC with binary protobuf.
Displaying and converting IDs
If a directly generated ConnectRPC client also renders user-facing URLs or labels, convert its fixed64 values to base58 in the display layer. Official SDKs can expose a normalized
representation instead, so follow the selected SDK's documented types. For example, the TypeScript
SDK returns base58 public-ID strings to application code even when its underlying transport is
ConnectRPC.
Conversion is needed only when an ID crosses between a raw ConnectRPC field and a base58 surface
such as REST or URLs (see REST identifiers). Base58 An6UebxCZd and decimal 72623859790382856 are two representations of the same unsigned 64-bit public ID. A custom
converter must reject invalid Base58 characters and values larger than uint64.