1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct Log {
16 #[serde(rename = "time")]
18 pub time: String,
19 #[serde(rename = "orgId")]
21 pub org_id: String,
22 #[serde(rename = "type")]
24 pub r#type: Type,
25 #[serde(rename = "webhookType", skip_serializing_if = "Option::is_none")]
27 pub webhook_type: Option<String>,
28 #[serde(rename = "resource", skip_serializing_if = "Option::is_none")]
30 pub resource: Option<Resource>,
31 #[serde(rename = "requestDurationSeconds", skip_serializing_if = "Option::is_none")]
33 pub request_duration_seconds: Option<f64>,
34 #[serde(rename = "requestStartedAt", skip_serializing_if = "Option::is_none")]
36 pub request_started_at: Option<String>,
37 #[serde(rename = "requestFinishedAt", skip_serializing_if = "Option::is_none")]
39 pub request_finished_at: Option<String>,
40 #[serde(rename = "requestBody", skip_serializing_if = "Option::is_none")]
42 pub request_body: Option<serde_json::Value>,
43 #[serde(rename = "requestHttpMethod", skip_serializing_if = "Option::is_none")]
45 pub request_http_method: Option<RequestHttpMethod>,
46 #[serde(rename = "requestUrl", skip_serializing_if = "Option::is_none")]
48 pub request_url: Option<String>,
49 #[serde(rename = "requestPath", skip_serializing_if = "Option::is_none")]
51 pub request_path: Option<String>,
52 #[serde(rename = "requestQuery", skip_serializing_if = "Option::is_none")]
54 pub request_query: Option<String>,
55 #[serde(rename = "responseHttpCode", skip_serializing_if = "Option::is_none")]
57 pub response_http_code: Option<f64>,
58 #[serde(rename = "requestIpAddress", skip_serializing_if = "Option::is_none")]
60 pub request_ip_address: Option<String>,
61 #[serde(rename = "requestOrigin", skip_serializing_if = "Option::is_none")]
63 pub request_origin: Option<String>,
64 #[serde(rename = "responseBody", skip_serializing_if = "Option::is_none")]
66 pub response_body: Option<serde_json::Value>,
67 #[serde(rename = "requestHeaders", skip_serializing_if = "Option::is_none")]
69 pub request_headers: Option<serde_json::Value>,
70 #[serde(rename = "error", skip_serializing_if = "Option::is_none")]
72 pub error: Option<models::Error>,
73 #[serde(rename = "assistantId", skip_serializing_if = "Option::is_none")]
75 pub assistant_id: Option<String>,
76 #[serde(rename = "phoneNumberId", skip_serializing_if = "Option::is_none")]
78 pub phone_number_id: Option<String>,
79 #[serde(rename = "customerId", skip_serializing_if = "Option::is_none")]
81 pub customer_id: Option<String>,
82 #[serde(rename = "squadId", skip_serializing_if = "Option::is_none")]
84 pub squad_id: Option<String>,
85 #[serde(rename = "callId", skip_serializing_if = "Option::is_none")]
87 pub call_id: Option<String>,
88}
89
90impl Log {
91 pub fn new(time: String, org_id: String, r#type: Type) -> Log {
92 Log {
93 time,
94 org_id,
95 r#type,
96 webhook_type: None,
97 resource: None,
98 request_duration_seconds: None,
99 request_started_at: None,
100 request_finished_at: None,
101 request_body: None,
102 request_http_method: None,
103 request_url: None,
104 request_path: None,
105 request_query: None,
106 response_http_code: None,
107 request_ip_address: None,
108 request_origin: None,
109 response_body: None,
110 request_headers: None,
111 error: None,
112 assistant_id: None,
113 phone_number_id: None,
114 customer_id: None,
115 squad_id: None,
116 call_id: None,
117 }
118 }
119}
120#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
122pub enum Type {
123 #[serde(rename = "API")]
124 Api,
125 #[serde(rename = "Webhook")]
126 Webhook,
127 #[serde(rename = "Call")]
128 Call,
129 #[serde(rename = "Provider")]
130 Provider,
131}
132
133impl Default for Type {
134 fn default() -> Type {
135 Self::Api
136 }
137}
138#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
140pub enum Resource {
141 #[serde(rename = "org")]
142 Org,
143 #[serde(rename = "assistant")]
144 Assistant,
145 #[serde(rename = "analytics")]
146 Analytics,
147 #[serde(rename = "credential")]
148 Credential,
149 #[serde(rename = "phone-number")]
150 PhoneNumber,
151 #[serde(rename = "block")]
152 Block,
153 #[serde(rename = "voice-library")]
154 VoiceLibrary,
155 #[serde(rename = "provider")]
156 Provider,
157 #[serde(rename = "tool")]
158 Tool,
159 #[serde(rename = "token")]
160 Token,
161 #[serde(rename = "template")]
162 Template,
163 #[serde(rename = "squad")]
164 Squad,
165 #[serde(rename = "call")]
166 Call,
167 #[serde(rename = "file")]
168 File,
169 #[serde(rename = "metric")]
170 Metric,
171 #[serde(rename = "log")]
172 Log,
173}
174
175impl Default for Resource {
176 fn default() -> Resource {
177 Self::Org
178 }
179}
180#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
182pub enum RequestHttpMethod {
183 #[serde(rename = "POST")]
184 Post,
185 #[serde(rename = "GET")]
186 Get,
187 #[serde(rename = "PUT")]
188 Put,
189 #[serde(rename = "PATCH")]
190 Patch,
191 #[serde(rename = "DELETE")]
192 Delete,
193}
194
195impl Default for RequestHttpMethod {
196 fn default() -> RequestHttpMethod {
197 Self::Post
198 }
199}
200