lago_types/models/
api_log.rs1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use serde_json::Map;
4use strum_macros::EnumString;
5use uuid::Uuid;
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct ApiLogObject {
13 pub request_id: Uuid,
14 pub api_version: String,
15 pub client: String,
16 pub http_method: HttpMethod,
17 pub http_status: i32,
18 pub request_origin: String,
19 pub request_path: String,
20 pub request_body: Map<String, serde_json::Value>,
21 pub request_response: Option<Map<String, serde_json::Value>>,
22 pub logged_at: DateTime<Utc>,
23 pub created_at: DateTime<Utc>,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize, EnumString)]
28#[serde(rename_all = "lowercase")]
29#[strum(serialize_all = "lowercase")]
30pub enum HttpMethod {
31 Post,
32 Put,
33 Delete,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
41#[serde(untagged)]
42pub enum HttpStatus {
43 Code(i32),
44 Outcome(StatusOutcome),
45}
46
47#[derive(Debug, Clone, Serialize, Deserialize, EnumString)]
49#[serde(rename_all = "lowercase")]
50#[strum(serialize_all = "lowercase")]
51pub enum StatusOutcome {
52 Succeeded,
53 Failed,
54}