monitor_client/api/read/
user.rs

1use derive_empty_traits::EmptyTraits;
2use resolver_api::derive::Request;
3use serde::{Deserialize, Serialize};
4use typeshare::typeshare;
5
6use crate::entities::{api_key::ApiKey, user::User};
7
8use super::MonitorReadRequest;
9
10/// Gets list of api keys for the calling user.
11/// Response: [ListApiKeysResponse]
12#[typeshare]
13#[derive(
14  Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
15)]
16#[empty_traits(MonitorReadRequest)]
17#[response(ListApiKeysResponse)]
18pub struct ListApiKeys {}
19
20#[typeshare]
21pub type ListApiKeysResponse = Vec<ApiKey>;
22
23//
24
25/// **Admin only.**
26/// Gets list of api keys for the user.
27/// Will still fail if you call for a user_id that isn't a service user.
28/// Response: [ListApiKeysForServiceUserResponse]
29#[typeshare]
30#[derive(
31  Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
32)]
33#[empty_traits(MonitorReadRequest)]
34#[response(ListApiKeysForServiceUserResponse)]
35pub struct ListApiKeysForServiceUser {
36  /// Id or username
37  #[serde(alias = "id", alias = "username")]
38  pub user: String,
39}
40
41#[typeshare]
42pub type ListApiKeysForServiceUserResponse = Vec<ApiKey>;
43
44//
45
46/// **Admin only.**
47/// Find a user.
48/// Response: [FindUserResponse]
49#[typeshare]
50#[derive(
51  Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
52)]
53#[empty_traits(MonitorReadRequest)]
54#[response(FindUserResponse)]
55pub struct FindUser {
56  /// Id or username
57  #[serde(alias = "id", alias = "username")]
58  pub user: String,
59}
60
61#[typeshare]
62pub type FindUserResponse = User;
63
64//
65
66/// **Admin only.**
67/// Gets list of monitor users.
68/// Response: [ListUsersResponse]
69#[typeshare]
70#[derive(
71  Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
72)]
73#[empty_traits(MonitorReadRequest)]
74#[response(ListUsersResponse)]
75pub struct ListUsers {}
76
77#[typeshare]
78pub type ListUsersResponse = Vec<User>;
79
80//
81
82/// Gets the username of a specific user.
83/// Response: [GetUsernameResponse]
84#[typeshare]
85#[derive(
86  Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
87)]
88#[empty_traits(MonitorReadRequest)]
89#[response(GetUsernameResponse)]
90pub struct GetUsername {
91  /// The id of the user.
92  pub user_id: String,
93}
94
95/// Response for [GetUsername].
96#[typeshare]
97#[derive(Serialize, Deserialize, Debug, Clone)]
98pub struct GetUsernameResponse {
99  /// The username of the user.
100  pub username: String,
101  /// An optional icon for the user.
102  pub avatar: Option<String>,
103}