osdm_sys/models/
document.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14use serde_with::serde_as;
15
16#[serde_as]
18#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
19#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
20pub struct Document {
21 #[serde(rename = "id")]
22 pub id: String,
23 #[serde(rename = "summary", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
24 pub summary: Option<Option<String>>,
25 #[serde(rename = "passengerRef", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
27 pub passenger_ref: Option<Option<String>>,
28 #[serde(rename = "downloadLink", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
29 pub download_link: Option<Option<String>>,
30 #[serde(rename = "downloadExpiry", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
32 pub download_expiry: Option<Option<String>>,
33 #[serde_as(as = "super::DoubleOption<serde_with::base64::Base64>")]
35 #[serde(rename = "content", default, skip_serializing_if = "Option::is_none")]
36 pub content: Option<Option<Vec<u8>>>,
37 #[serde(rename = "format", skip_serializing_if = "Option::is_none")]
38 pub format: Option<models::DocumentFormat>,
39 #[serde(rename = "type")]
40 pub r#type: models::DocumentType,
41 #[serde(rename = "scope")]
42 pub scope: models::DocumentScope,
43}
44
45impl Document {
46 pub fn new(id: String, r#type: models::DocumentType, scope: models::DocumentScope) -> Document {
48 Document {
49 id,
50 summary: None,
51 passenger_ref: None,
52 download_link: None,
53 download_expiry: None,
54 content: None,
55 format: None,
56 r#type,
57 scope,
58 }
59 }
60}
61