1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
7pub struct JobsRegistry {
9 pub bucket: String,
10}
11
12#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
13pub struct JobsBindings {
15 pub namespace: String,
16 pub queues: BTreeMap<String, Value>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub registry: Option<JobsRegistry>,
19}
20
21#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
22pub struct ResourceBindings {
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub jobs: Option<JobsBindings>,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub kv: Option<BTreeMap<String, Value>>,
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
31pub struct ApprovalScopeRecord {
33 pub capabilities: Vec<String>,
34 #[serde(rename = "contractDigest")]
35 pub contract_digest: String,
36 #[serde(rename = "contractId")]
37 pub contract_id: String,
38 pub description: String,
39 #[serde(rename = "displayName")]
40 pub display_name: String,
41 pub kind: String,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
45pub struct ApprovalEntryRecord {
47 pub answer: Value,
48 #[serde(rename = "answeredAt")]
49 pub answered_at: String,
50 pub approval: ApprovalScopeRecord,
51 #[serde(rename = "updatedAt")]
52 pub updated_at: String,
53 pub user: String,
54}
55
56#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
57pub struct ServiceListEntry {
59 pub active: bool,
60 pub capabilities: Vec<String>,
61 #[serde(rename = "contractDigest")]
62 #[serde(skip_serializing_if = "Option::is_none")]
63 pub contract_digest: Option<String>,
64 #[serde(rename = "contractId")]
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub contract_id: Option<String>,
67 #[serde(rename = "createdAt")]
68 pub created_at: String,
69 pub description: String,
70 #[serde(rename = "displayName")]
71 pub display_name: String,
72 pub namespaces: Vec<String>,
73 #[serde(rename = "resourceBindings")]
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub resource_bindings: Option<ResourceBindings>,
76 #[serde(rename = "sessionKey")]
77 pub session_key: String,
78}
79
80#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
81pub struct AuthenticatedUser {
83 pub active: bool,
84 pub capabilities: Vec<String>,
85 pub email: String,
86 pub id: String,
87 #[serde(skip_serializing_if = "Option::is_none")]
88 pub image: Option<String>,
89 #[serde(rename = "lastLogin")]
90 #[serde(skip_serializing_if = "Option::is_none")]
91 pub last_login: Option<String>,
92 pub name: String,
93 pub origin: String,
94}
95
96#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
97pub struct SentinelCredsRecord {
99 pub jwt: String,
100 pub seed: String,
101}
102
103#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
104pub struct RenewBindingTokenResponse {
106 #[serde(rename = "bindingToken")]
107 pub binding_token: String,
108 pub expires: String,
109 #[serde(rename = "inboxPrefix")]
110 pub inbox_prefix: String,
111 #[serde(rename = "natsServers")]
112 pub nats_servers: Vec<String>,
113 pub sentinel: SentinelCredsRecord,
114 pub status: String,
115}
116
117#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
118pub struct ListApprovalsRequest {
120 #[serde(skip_serializing_if = "Option::is_none")]
121 pub digest: Option<String>,
122 #[serde(skip_serializing_if = "Option::is_none")]
123 pub user: Option<String>,
124}
125
126#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
127pub struct RevokeApprovalRequest {
129 #[serde(rename = "contractDigest")]
130 pub contract_digest: String,
131 #[serde(skip_serializing_if = "Option::is_none")]
132 pub user: Option<String>,
133}
134
135#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
136pub struct AuthInstallServiceRequest {
138 #[serde(skip_serializing_if = "Option::is_none")]
139 pub active: Option<bool>,
140 pub contract: BTreeMap<String, Value>,
141 pub description: String,
142 #[serde(rename = "displayName")]
143 pub display_name: String,
144 pub namespaces: Vec<String>,
145 #[serde(rename = "sessionKey")]
146 pub session_key: String,
147}
148
149#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
150pub struct AuthInstallServiceResponse {
152 #[serde(rename = "contractDigest")]
153 pub contract_digest: String,
154 #[serde(rename = "contractId")]
155 pub contract_id: String,
156 #[serde(rename = "resourceBindings")]
157 pub resource_bindings: ResourceBindings,
158 #[serde(rename = "sessionKey")]
159 pub session_key: String,
160 pub success: bool,
161}
162
163#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
164pub struct AuthUpgradeServiceContractRequest {
166 pub contract: BTreeMap<String, Value>,
167 #[serde(rename = "sessionKey")]
168 pub session_key: String,
169}
170
171#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
172pub struct AuthUpgradeServiceContractResponse {
174 #[serde(rename = "contractDigest")]
175 pub contract_digest: String,
176 #[serde(rename = "contractId")]
177 pub contract_id: String,
178 #[serde(rename = "resourceBindings")]
179 pub resource_bindings: ResourceBindings,
180 #[serde(rename = "sessionKey")]
181 pub session_key: String,
182 pub success: bool,
183}
184
185#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
186pub struct AuthGetInstalledContractRequest {
188 pub digest: String,
189}
190
191#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
192pub struct AuthGetInstalledContractResponseContract {
194 pub digest: String,
195 pub id: String,
196}
197
198#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
199pub struct AuthGetInstalledContractResponse {
201 pub contract: AuthGetInstalledContractResponseContract,
202}
203
204#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
205pub struct AuthValidateRequestRequest {
207 pub capabilities: Option<Vec<String>>,
208 #[serde(rename = "payloadHash")]
209 pub payload_hash: String,
210 pub proof: String,
211 #[serde(rename = "sessionKey")]
212 pub session_key: String,
213 pub subject: String,
214}
215
216#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
217pub struct AuthValidateRequestResponse {
219 pub allowed: bool,
220 pub caller: Value,
221 #[serde(rename = "inboxPrefix")]
222 pub inbox_prefix: String,
223}
224
225#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
226pub(crate) struct ListApprovalsResponse {
227 pub approvals: Vec<ApprovalEntryRecord>,
228}
229
230#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
231pub(crate) struct ListServicesResponse {
232 pub services: Vec<ServiceListEntry>,
233}
234
235#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
236pub(crate) struct LogoutResponse {
237 pub success: bool,
238}
239
240#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
241pub(crate) struct MeResponse {
242 pub user: AuthenticatedUser,
243}
244
245#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
246pub(crate) struct RevokeApprovalResponse {
247 pub success: bool,
248}