pub struct SubaccountPolicyView {Show 29 fields
pub id: u64,
pub name: String,
pub description: String,
pub spot_markets: Vec<SpotMarketRule>,
pub perp_markets: Vec<PerpMarketRule>,
pub spot_market_scope: EnumValue<Value>,
pub perp_market_scope: EnumValue<Value>,
pub actions: Vec<EnumValue<PolicyAction>>,
pub is_template: bool,
pub source_template_id: u64,
pub global_notional_cap: u64,
pub max_order_notional: u64,
pub max_open_orders: u32,
pub max_open_positions: u32,
pub global_perp_leverage_x: u32,
pub daily_internal_transfer_out_limit: u64,
pub daily_withdraw_limit: u64,
pub internal_transfers_own_only: bool,
pub enforce_withdraw_whitelist: bool,
pub trading_halted: bool,
pub liquidation_only: bool,
pub daily_loss_limit: u64,
pub intraday_drawdown_limit_bps: u32,
pub locked: bool,
pub review_at: MessageField<Timestamp>,
pub expires_at: MessageField<Timestamp>,
pub created_at: MessageField<Timestamp>,
pub updated_at: MessageField<Timestamp>,
pub revision: u64,
/* private fields */
}Expand description
SubaccountPolicyView is the public view of a sub-account policy.
Fields§
§id: u64Policy identifier (opaque ID).
Field 1: id
name: StringHuman-readable policy name.
Field 2: name
description: StringOptional policy description for dashboards and audits.
Field 3: description
spot_markets: Vec<SpotMarketRule>Allowed spot markets for this sub-account.
Field 4: spot_markets
perp_markets: Vec<PerpMarketRule>Allowed perp contracts for this sub-account, with optional per-contract caps.
Field 5: perp_markets
spot_market_scope: EnumValue<Value>Market-level scope for spot markets. When ALL, spot_markets is returned for display only and is not enforced.
Field 6: spot_market_scope
perp_market_scope: EnumValue<Value>Market-level scope for perp contracts. When ALL, perp_markets is returned for display only and is not enforced.
Field 7: perp_market_scope
actions: Vec<EnumValue<PolicyAction>>High-level actions enabled for the sub-account. Up to 64 unique explicit actions may be returned.
Field 8: actions
is_template: boolTrue if this policy is a reusable template; false if it is a per-sub-account instance.
Field 10: is_template
source_template_id: u64Optional source template this policy was copied from (opaque ID). This is audit metadata only and does not imply live linkage.
Field 11: source_template_id
global_notional_cap: u64— Global risk limits (sub-account scope) —
Maximum total notional exposure (across all positions) allowed for this sub-account, expressed in a canonical quote unit (e.g. micro-USDT). A value of 0 means “no explicit cap”.
Field 12: global_notional_cap
max_order_notional: u64Maximum notional size allowed for any single order on this sub-account, expressed in the same canonical quote unit as global_notional_cap. A value of 0 means “no explicit cap”.
Field 13: max_order_notional
max_open_orders: u32Maximum number of resting orders allowed on this sub-account at any time. A value of 0 means “no explicit cap”.
Field 14: max_open_orders
max_open_positions: u32Maximum number of open perp positions allowed on this sub-account. A value of 0 means “no explicit cap”.
Field 15: max_open_positions
global_perp_leverage_x: u32Optional global leverage cap across all perp contracts, expressed as a maximum leverage multiple. Supported non-zero values are 1, 3, 5, 10, 20, 50, and 100. A value of 0 means “no explicit global cap”; per-contract caps still apply.
Field 16: global_perp_leverage_x
daily_internal_transfer_out_limit: u64— Capital movement limits (sub-account scope) —
Maximum total notional this sub-account can transfer out internally per day, expressed in the canonical quote unit (for example, micro-USDT). A value of 0 means “no explicit cap”.
Field 17: daily_internal_transfer_out_limit
daily_withdraw_limit: u64Maximum total notional this sub-account can withdraw per day, expressed in the canonical quote unit (for example, micro-USDT). A value of 0 means “no explicit cap”.
Field 18: daily_withdraw_limit
internal_transfers_own_only: boolWhen true, internal transfers from this sub-account may only target other sub-accounts owned by the same root account. When false, transfers to other owners are allowed (subject to other policy checks).
Field 19: internal_transfers_own_only
enforce_withdraw_whitelist: boolWhen true, external withdrawals from this sub-account must target an approved withdrawal destination.
Field 22: enforce_withdraw_whitelist
trading_halted: bool— Safety / kill-switch controls —
When true, trading on this sub-account is halted: new orders are rejected regardless of other settings. Existing positions may still be closed by product safety controls.
Field 23: trading_halted
liquidation_only: boolWhen true, this sub-account is in liquidation-only mode: new exposure cannot be opened, but reduce-only / close-out actions are allowed.
Field 24: liquidation_only
daily_loss_limit: u64Maximum allowed realized loss for this sub-account over a rolling day before safety controls may halt activity, expressed in the canonical quote unit (for example, micro-USDT). A value of 0 means “no explicit limit”.
Field 25: daily_loss_limit
intraday_drawdown_limit_bps: u32Maximum allowed drawdown from peak equity in basis points (1/100 of a percent) before safety controls may halt activity. A value of 0 means “no explicit limit”.
Field 26: intraday_drawdown_limit_bps
locked: bool— Governance / lifecycle metadata —
When true, this policy is write-protected and requires an elevated approval flow to modify it.
Field 27: locked
review_at: MessageField<Timestamp>Optional review time in UTC. This is governance metadata and does not automatically disable the policy.
Field 28: review_at
expires_at: MessageField<Timestamp>Optional expiry time in UTC. This is governance metadata and does not automatically disable the policy.
Field 29: expires_at
created_at: MessageField<Timestamp>Creation time in UTC.
Field 20: created_at
updated_at: MessageField<Timestamp>Last update time in UTC.
Field 21: updated_at
revision: u64Monotonic resource revision used for conditional updates.
Field 30: revision
Implementations§
Trait Implementations§
Source§impl Clone for SubaccountPolicyView
impl Clone for SubaccountPolicyView
Source§fn clone(&self) -> SubaccountPolicyView
fn clone(&self) -> SubaccountPolicyView
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SubaccountPolicyView
impl Debug for SubaccountPolicyView
Source§impl Default for SubaccountPolicyView
impl Default for SubaccountPolicyView
Source§fn default() -> SubaccountPolicyView
fn default() -> SubaccountPolicyView
Source§impl DefaultInstance for SubaccountPolicyView
impl DefaultInstance for SubaccountPolicyView
Source§fn default_instance() -> &'static Self
fn default_instance() -> &'static Self
Source§impl<'de> Deserialize<'de> for SubaccountPolicyViewwhere
SubaccountPolicyView: Default,
impl<'de> Deserialize<'de> for SubaccountPolicyViewwhere
SubaccountPolicyView: Default,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl ExtensionSet for SubaccountPolicyView
impl ExtensionSet for SubaccountPolicyView
Source§const PROTO_FQN: &'static str = "auth.v1.SubaccountPolicyView"
const PROTO_FQN: &'static str = "auth.v1.SubaccountPolicyView"
"google.protobuf.FieldOptions". Read moreSource§fn unknown_fields(&self) -> &UnknownFields
fn unknown_fields(&self) -> &UnknownFields
Source§fn unknown_fields_mut(&mut self) -> &mut UnknownFields
fn unknown_fields_mut(&mut self) -> &mut UnknownFields
Source§fn extension<C>(&self, ext: &Extension<C>) -> <C as ExtensionCodec>::Outputwhere
C: ExtensionCodec,
fn extension<C>(&self, ext: &Extension<C>) -> <C as ExtensionCodec>::Outputwhere
C: ExtensionCodec,
Source§fn set_extension<C>(
&mut self,
ext: &Extension<C>,
value: <C as ExtensionCodec>::Value,
)where
C: ExtensionCodec,
fn set_extension<C>(
&mut self,
ext: &Extension<C>,
value: <C as ExtensionCodec>::Value,
)where
C: ExtensionCodec,
Source§fn has_extension<C>(&self, ext: &Extension<C>) -> boolwhere
C: ExtensionCodec,
fn has_extension<C>(&self, ext: &Extension<C>) -> boolwhere
C: ExtensionCodec,
true if any record at the extension’s field number is present. Read moreSource§fn clear_extension<C>(&mut self, ext: &Extension<C>)where
C: ExtensionCodec,
fn clear_extension<C>(&mut self, ext: &Extension<C>)where
C: ExtensionCodec,
Source§fn extension_or_default<C>(
&self,
ext: &Extension<C>,
) -> <C as ExtensionCodec>::Valuewhere
C: ExtensionCodec<Output = Option<<C as ExtensionCodec>::Value>>,
<C as ExtensionCodec>::Value: Default,
fn extension_or_default<C>(
&self,
ext: &Extension<C>,
) -> <C as ExtensionCodec>::Valuewhere
C: ExtensionCodec<Output = Option<<C as ExtensionCodec>::Value>>,
<C as ExtensionCodec>::Value: Default,
[default = ...]
value if absent, or the type’s Default if no proto default was declared. Read moreSource§impl HasMessageView for SubaccountPolicyView
impl HasMessageView for SubaccountPolicyView
Source§type View<'a> = SubaccountPolicyViewView<'a>
type View<'a> = SubaccountPolicyViewView<'a>
Self, borrowing from a buffer with lifetime
'a.Source§type ViewHandle = SubaccountPolicyViewOwnedView
type ViewHandle = SubaccountPolicyViewOwnedView
'static owned-view handle for Self
(FooOwnedView).Source§fn decode_view(buf: &[u8]) -> Result<Self::View<'_>, DecodeError>
fn decode_view(buf: &[u8]) -> Result<Self::View<'_>, DecodeError>
Source§fn decode_view_with_options<'a>(
buf: &'a [u8],
opts: &DecodeOptions,
) -> Result<Self::View<'a>, DecodeError>
fn decode_view_with_options<'a>( buf: &'a [u8], opts: &DecodeOptions, ) -> Result<Self::View<'a>, DecodeError>
View under custom
DecodeOptions (recursion limit, max message
size, unknown-field limit). Read moreSource§fn decode_view_handle(bytes: Bytes) -> Result<Self::ViewHandle, DecodeError>
fn decode_view_handle(bytes: Bytes) -> Result<Self::ViewHandle, DecodeError>
Source§fn decode_view_handle_with_options(
bytes: Bytes,
opts: &DecodeOptions,
) -> Result<Self::ViewHandle, DecodeError>
fn decode_view_handle_with_options( bytes: Bytes, opts: &DecodeOptions, ) -> Result<Self::ViewHandle, DecodeError>
Source§impl Message for SubaccountPolicyView
impl Message for SubaccountPolicyView
Source§fn compute_size(&self, __cache: &mut SizeCache) -> u32
fn compute_size(&self, __cache: &mut SizeCache) -> u32
Returns the total encoded size in bytes.
The result is a u32; the protobuf specification requires all
messages to fit within 2 GiB (2,147,483,647 bytes), so a
compliant message will never overflow this type.
Source§fn write_to(&self, __cache: &mut SizeCache, buf: &mut impl BufMut)
fn write_to(&self, __cache: &mut SizeCache, buf: &mut impl BufMut)
cache (populated by a prior
compute_size call on the same cache). Read moreSource§fn merge_field(
&mut self,
tag: Tag,
buf: &mut impl Buf,
ctx: DecodeContext<'_>,
) -> Result<(), DecodeError>
fn merge_field( &mut self, tag: Tag, buf: &mut impl Buf, ctx: DecodeContext<'_>, ) -> Result<(), DecodeError>
buf. Read moreSource§fn encode(&self, buf: &mut impl BufMut)
fn encode(&self, buf: &mut impl BufMut)
Source§fn encode_with_cache(&self, cache: &mut SizeCache, buf: &mut impl BufMut)
fn encode_with_cache(&self, cache: &mut SizeCache, buf: &mut impl BufMut)
SizeCache, for
reuse across many encodes in a hot loop. Clears the cache first.Source§fn encoded_len(&self) -> u32
fn encoded_len(&self) -> u32
Source§fn encode_length_delimited(&self, buf: &mut impl BufMut)
fn encode_length_delimited(&self, buf: &mut impl BufMut)
Source§fn encode_to_bytes(&self) -> Bytes
fn encode_to_bytes(&self) -> Bytes
bytes::Bytes. Read moreSource§fn decode(buf: &mut impl Buf) -> Result<Self, DecodeError>where
Self: Sized,
fn decode(buf: &mut impl Buf) -> Result<Self, DecodeError>where
Self: Sized,
Source§fn decode_from_slice(data: &[u8]) -> Result<Self, DecodeError>where
Self: Sized,
fn decode_from_slice(data: &[u8]) -> Result<Self, DecodeError>where
Self: Sized,
Source§fn decode_length_delimited(buf: &mut impl Buf) -> Result<Self, DecodeError>where
Self: Sized,
fn decode_length_delimited(buf: &mut impl Buf) -> Result<Self, DecodeError>where
Self: Sized,
Source§fn merge_to_limit(
&mut self,
buf: &mut impl Buf,
ctx: DecodeContext<'_>,
limit: usize,
) -> Result<(), DecodeError>
fn merge_to_limit( &mut self, buf: &mut impl Buf, ctx: DecodeContext<'_>, limit: usize, ) -> Result<(), DecodeError>
Source§fn merge_group(
&mut self,
buf: &mut impl Buf,
ctx: DecodeContext<'_>,
field_number: u32,
) -> Result<(), DecodeError>
fn merge_group( &mut self, buf: &mut impl Buf, ctx: DecodeContext<'_>, field_number: u32, ) -> Result<(), DecodeError>
buf, reading fields until an
EndGroup tag with the given field_number is encountered. Read moreSource§fn merge(
&mut self,
buf: &mut impl Buf,
ctx: DecodeContext<'_>,
) -> Result<(), DecodeError>
fn merge( &mut self, buf: &mut impl Buf, ctx: DecodeContext<'_>, ) -> Result<(), DecodeError>
Source§fn merge_from_slice(&mut self, data: &[u8]) -> Result<(), DecodeError>
fn merge_from_slice(&mut self, data: &[u8]) -> Result<(), DecodeError>
Source§fn merge_length_delimited(
&mut self,
buf: &mut impl Buf,
ctx: DecodeContext<'_>,
) -> Result<(), DecodeError>
fn merge_length_delimited( &mut self, buf: &mut impl Buf, ctx: DecodeContext<'_>, ) -> Result<(), DecodeError>
Source§impl MessageName for SubaccountPolicyView
impl MessageName for SubaccountPolicyView
Source§const PACKAGE: &'static str = "auth.v1"
const PACKAGE: &'static str = "auth.v1"
Source§const NAME: &'static str = "SubaccountPolicyView"
const NAME: &'static str = "SubaccountPolicyView"
. between nesting levels. Read moreSource§impl PartialEq for SubaccountPolicyView
impl PartialEq for SubaccountPolicyView
Source§impl ProtoElemJson for SubaccountPolicyView
impl ProtoElemJson for SubaccountPolicyView
Source§fn serialize_proto_json<S: Serializer>(
v: &Self,
s: S,
) -> Result<S::Ok, S::Error>
fn serialize_proto_json<S: Serializer>( v: &Self, s: S, ) -> Result<S::Ok, S::Error>
Source§fn deserialize_proto_json<'de, D: Deserializer<'de>>(
d: D,
) -> Result<Self, D::Error>
fn deserialize_proto_json<'de, D: Deserializer<'de>>( d: D, ) -> Result<Self, D::Error>
Source§impl Serialize for SubaccountPolicyView
impl Serialize for SubaccountPolicyView
impl StructuralPartialEq for SubaccountPolicyView
Auto Trait Implementations§
impl Freeze for SubaccountPolicyView
impl RefUnwindSafe for SubaccountPolicyView
impl Send for SubaccountPolicyView
impl Sync for SubaccountPolicyView
impl Unpin for SubaccountPolicyView
impl UnsafeUnpin for SubaccountPolicyView
impl UnwindSafe for SubaccountPolicyView
Blanket Implementations§
Source§impl<T> AnyMessage for Twhere
T: Message + JsonSerialize + 'static,
impl<T> AnyMessage for Twhere
T: Message + JsonSerialize + 'static,
Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
dyn Any for downcasting.Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Any> for owned downcasting. Read moreSource§fn encode(&self, format: CodecFormat) -> Result<Bytes, ConnectError>
fn encode(&self, format: CodecFormat) -> Result<Bytes, ConnectError>
Source§fn type_name(&self) -> &'static str
fn type_name(&self) -> &'static str
std::any::type_name.Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<M> Encodable<M> for Mwhere
M: Message + JsonSerialize,
impl<M> Encodable<M> for Mwhere
M: Message + JsonSerialize,
Source§fn encode(&self, codec: CodecFormat) -> Result<Bytes, ConnectError>
fn encode(&self, codec: CodecFormat) -> Result<Bytes, ConnectError>
self as wire bytes for M in the requested format.