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<Box<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