pub struct SubaccountPolicyViewView<'a> {Show 30 fields
pub id: u64,
pub name: &'a str,
pub description: &'a str,
pub spot_markets: RepeatedView<'a, SpotMarketRuleView<'a>>,
pub perp_markets: RepeatedView<'a, PerpMarketRuleView<'a>>,
pub spot_market_scope: EnumValue<Value>,
pub perp_market_scope: EnumValue<Value>,
pub actions: RepeatedView<'a, 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: MessageFieldView<TimestampView<'a>>,
pub expires_at: MessageFieldView<TimestampView<'a>>,
pub created_at: MessageFieldView<TimestampView<'a>>,
pub updated_at: MessageFieldView<TimestampView<'a>>,
pub revision: u64,
pub __buffa_unknown_fields: UnknownFieldsView<'a>,
}Expand description
SubaccountPolicyView is the public view of a sub-account policy.
Fields§
§id: u64Policy identifier (opaque ID).
Field 1: id
name: &'a strHuman-readable policy name.
Field 2: name
description: &'a strOptional policy description for dashboards and audits.
Field 3: description
spot_markets: RepeatedView<'a, SpotMarketRuleView<'a>>Allowed spot markets for this sub-account.
Field 4: spot_markets
perp_markets: RepeatedView<'a, PerpMarketRuleView<'a>>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: RepeatedView<'a, 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: MessageFieldView<TimestampView<'a>>Optional review time in UTC. This is governance metadata and does not automatically disable the policy.
Field 28: review_at
expires_at: MessageFieldView<TimestampView<'a>>Optional expiry time in UTC. This is governance metadata and does not automatically disable the policy.
Field 29: expires_at
created_at: MessageFieldView<TimestampView<'a>>Creation time in UTC.
Field 20: created_at
updated_at: MessageFieldView<TimestampView<'a>>Last update time in UTC.
Field 21: updated_at
revision: u64Monotonic resource revision used for conditional updates.
Field 30: revision
__buffa_unknown_fields: UnknownFieldsView<'a>Trait Implementations§
Source§impl<'a> Clone for SubaccountPolicyViewView<'a>
impl<'a> Clone for SubaccountPolicyViewView<'a>
Source§fn clone(&self) -> SubaccountPolicyViewView<'a>
fn clone(&self) -> SubaccountPolicyViewView<'a>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<'a> Debug for SubaccountPolicyViewView<'a>
impl<'a> Debug for SubaccountPolicyViewView<'a>
Source§impl<'a> Default for SubaccountPolicyViewView<'a>
impl<'a> Default for SubaccountPolicyViewView<'a>
Source§fn default() -> SubaccountPolicyViewView<'a>
fn default() -> SubaccountPolicyViewView<'a>
Source§impl<'v> DefaultViewInstance for SubaccountPolicyViewView<'v>
impl<'v> DefaultViewInstance for SubaccountPolicyViewView<'v>
Source§fn default_view_instance<'a>() -> &'a Selfwhere
Self: 'a,
fn default_view_instance<'a>() -> &'a Selfwhere
Self: 'a,
Source§impl<'a> MessageName for SubaccountPolicyViewView<'a>
impl<'a> MessageName for SubaccountPolicyViewView<'a>
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<'a> MessageView<'a> for SubaccountPolicyViewView<'a>
impl<'a> MessageView<'a> for SubaccountPolicyViewView<'a>
Source§type Owned = SubaccountPolicyView
type Owned = SubaccountPolicyView
Source§fn decode_view(buf: &'a [u8]) -> Result<Self, DecodeError>
fn decode_view(buf: &'a [u8]) -> Result<Self, DecodeError>
Source§fn decode_view_with_ctx(
buf: &'a [u8],
ctx: DecodeContext<'_>,
) -> Result<Self, DecodeError>
fn decode_view_with_ctx( buf: &'a [u8], ctx: DecodeContext<'_>, ) -> Result<Self, DecodeError>
Source§fn merge_view_field(
&mut self,
tag: Tag,
cur: &'a [u8],
before_tag: &'a [u8],
ctx: DecodeContext<'_>,
) -> Result<&'a [u8], DecodeError>
fn merge_view_field( &mut self, tag: Tag, cur: &'a [u8], before_tag: &'a [u8], ctx: DecodeContext<'_>, ) -> Result<&'a [u8], DecodeError>
Source§fn to_owned_message(&self) -> Result<SubaccountPolicyView, DecodeError>
fn to_owned_message(&self) -> Result<SubaccountPolicyView, DecodeError>
Source§fn to_owned_from_source(
&self,
__buffa_src: Option<&Bytes>,
) -> Result<SubaccountPolicyView, DecodeError>
fn to_owned_from_source( &self, __buffa_src: Option<&Bytes>, ) -> Result<SubaccountPolicyView, DecodeError>
bytes::Bytes-typed fields from source instead of copying. Read moreSource§fn decode_view_ctx(
buf: &'a [u8],
ctx: DecodeContext<'_>,
) -> Result<Self, DecodeError>where
Self: Default,
fn decode_view_ctx(
buf: &'a [u8],
ctx: DecodeContext<'_>,
) -> Result<Self, DecodeError>where
Self: Default,
DecodeContext
(remaining recursion depth and unknown-field allowance), driving the
provided tag loop over merge_view_field. Read moreSource§fn merge_into_view(
&mut self,
buf: &'a [u8],
ctx: DecodeContext<'_>,
) -> Result<(), DecodeError>
fn merge_into_view( &mut self, buf: &'a [u8], ctx: DecodeContext<'_>, ) -> Result<(), DecodeError>
buf into this view (proto merge semantics):
repeated fields append, singular fields last-wins, singular message
fields merge recursively. Read moreSource§impl<'__a> Serialize for SubaccountPolicyViewView<'__a>
Serializes this view as protobuf JSON.
impl<'__a> Serialize for SubaccountPolicyViewView<'__a>
Serializes this view as protobuf JSON.
Implicit-presence fields with default values are omitted, required
fields are always emitted, explicit-presence (optional) fields are
emitted only when set, bytes fields are base64-encoded, and enum
values are their proto name strings.
This impl uses serialize_map(None) because the number of emitted
fields depends on default-omission rules; serializers that require
known map lengths (e.g. bincode) will return a runtime error.
Use the owned message type for those formats.
Source§impl<'a> ViewEncode<'a> for SubaccountPolicyViewView<'a>
impl<'a> ViewEncode<'a> for SubaccountPolicyViewView<'a>
Source§fn compute_size(&self, __cache: &mut SizeCache) -> u32
fn compute_size(&self, __cache: &mut SizeCache) -> u32
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 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.Source§impl ViewReborrow for SubaccountPolicyViewView<'static>
impl ViewReborrow for SubaccountPolicyViewView<'static>
Source§type Reborrowed<'b> = SubaccountPolicyViewView<'b>
type Reborrowed<'b> = SubaccountPolicyViewView<'b>
'b.Source§fn reborrow<'b>(this: &'b Self) -> &'b Self::Reborrowed<'b>
fn reborrow<'b>(this: &'b Self) -> &'b Self::Reborrowed<'b>
&'b Self (= &'b FooView<'static>) to
&'b Self::Reborrowed<'b> (= &'b FooView<'b>). The canonical body
is just this; the compiler accepts it via standard lifetime
variance for covariant view types. Read more