architect_api/accounts/
mod.rs

1use crate::{Account, AccountPermissions, TraderIdOrEmail, UserId};
2use derive::grpc;
3use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6pub mod account;
7pub mod trader;
8
9#[grpc(package = "json.architect")]
10#[grpc(service = "Accounts", name = "accounts", response = "AccountsResponse")]
11#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
12pub struct AccountsRequest {
13    /// Request accounts from the perspective of this trader;
14    /// if not specified, defaults to the caller user.
15    pub trader: Option<TraderIdOrEmail>,
16}
17
18#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
19pub struct AccountsResponse {
20    pub accounts: Vec<AccountWithPermissions>,
21}
22
23#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
24#[cfg_attr(feature = "graphql", derive(juniper::GraphQLObject))]
25pub struct AccountWithPermissions {
26    pub account: Account,
27    pub trader: UserId,
28    pub permissions: AccountPermissions,
29}