use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct DriveThemes {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "backgroundImageLink"
)]
pub background_image_link: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "colorRgb"
)]
pub color_rgb: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub id: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct StorageQuota {
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
)]
pub limit: i64,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
)]
pub usage: i64,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
rename = "usageInDrive"
)]
pub usage_in_drive: i64,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
rename = "usageInDriveTrash"
)]
pub usage_in_drive_trash: i64,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct About {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "appInstalled"
)]
pub app_installed: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canCreateDrives"
)]
pub can_create_drives: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canCreateTeamDrives"
)]
pub can_create_team_drives: Option<bool>,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
rename = "driveThemes"
)]
pub drive_themes: Vec<DriveThemes>,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
rename = "exportFormats"
)]
pub export_formats: Vec<String>,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
rename = "folderColorPalette"
)]
pub folder_color_palette: Vec<String>,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
rename = "importFormats"
)]
pub import_formats: Vec<String>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
rename = "maxImportSizes"
)]
pub max_import_sizes: i64,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
rename = "maxUploadSize"
)]
pub max_upload_size: i64,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "storageQuota"
)]
pub storage_quota: Option<StorageQuota>,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
rename = "teamDriveThemes"
)]
pub team_drive_themes: Vec<DriveThemes>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user: Option<User>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct Change {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "changeType"
)]
pub change_type: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub drive: Option<Drive>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "driveId"
)]
pub drive_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file: Option<File>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "fileId"
)]
pub file_id: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub removed: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "teamDrive")]
pub team_drive: Option<TeamDrive>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "teamDriveId"
)]
pub team_drive_id: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::utils::date_time_format::deserialize"
)]
pub time: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "type"
)]
pub type_: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct ChangeList {
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
)]
pub changes: Vec<Change>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "newStartPageToken"
)]
pub new_start_page_token: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "nextPageToken"
)]
pub next_page_token: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct Channel {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub address: String,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
)]
pub expiration: i64,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub id: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub params: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub payload: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "resourceId"
)]
pub resource_id: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "resourceUri"
)]
pub resource_uri: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub token: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "type"
)]
pub type_: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct QuotedFileContent {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "mimeType"
)]
pub mime_type: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub value: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct Comment {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub anchor: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub author: Option<User>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub content: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::utils::date_time_format::deserialize",
rename = "createdTime"
)]
pub created_time: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub deleted: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "htmlContent"
)]
pub html_content: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub id: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::utils::date_time_format::deserialize",
rename = "modifiedTime"
)]
pub modified_time: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "quotedFileContent"
)]
pub quoted_file_content: Option<QuotedFileContent>,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
)]
pub replies: Vec<Reply>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub resolved: Option<bool>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct CommentList {
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
)]
pub comments: Vec<Comment>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "nextPageToken"
)]
pub next_page_token: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct ContentRestriction {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")]
pub read_only: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub reason: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "restrictingUser"
)]
pub restricting_user: Option<User>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::utils::date_time_format::deserialize",
rename = "restrictionTime"
)]
pub restriction_time: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "type"
)]
pub type_: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct BackgroundImageFile {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub id: String,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_f64",
deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
)]
pub width: f64,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_f64",
deserialize_with = "crate::utils::deserialize_null_f64::deserialize",
rename = "xCoordinate"
)]
pub x_coordinate: f64,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_f64",
deserialize_with = "crate::utils::deserialize_null_f64::deserialize",
rename = "yCoordinate"
)]
pub y_coordinate: f64,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct Capabilities {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canAddChildren"
)]
pub can_add_children: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canChangeCopyRequiresWriterPermissionRestriction"
)]
pub can_change_copy_requires_writer_permission_restriction: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canChangeDomainUsersOnlyRestriction"
)]
pub can_change_domain_users_only_restriction: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canChangeDriveBackground"
)]
pub can_change_drive_background: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canChangeDriveMembersOnlyRestriction"
)]
pub can_change_drive_members_only_restriction: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canComment"
)]
pub can_comment: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "canCopy")]
pub can_copy: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canDeleteChildren"
)]
pub can_delete_children: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canDeleteDrive"
)]
pub can_delete_drive: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canDownload"
)]
pub can_download: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "canEdit")]
pub can_edit: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canListChildren"
)]
pub can_list_children: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canManageMembers"
)]
pub can_manage_members: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canReadRevisions"
)]
pub can_read_revisions: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "canRename")]
pub can_rename: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canRenameDrive"
)]
pub can_rename_drive: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "canShare")]
pub can_share: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canTrashChildren"
)]
pub can_trash_children: Option<bool>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct Restrictions {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "adminManagedRestrictions"
)]
pub admin_managed_restrictions: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "copyRequiresWriterPermission"
)]
pub copy_requires_writer_permission: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "domainUsersOnly"
)]
pub domain_users_only: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "driveMembersOnly"
)]
pub drive_members_only: Option<bool>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct Drive {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "backgroundImageFile"
)]
pub background_image_file: Option<BackgroundImageFile>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "backgroundImageLink"
)]
pub background_image_link: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub capabilities: Option<Capabilities>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "colorRgb"
)]
pub color_rgb: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::utils::date_time_format::deserialize",
rename = "createdTime"
)]
pub created_time: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub hidden: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub id: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub restrictions: Option<Restrictions>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "themeId"
)]
pub theme_id: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct DriveList {
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
)]
pub drives: Vec<Drive>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "nextPageToken"
)]
pub next_page_token: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct FileCapabilities {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canAddChildren"
)]
pub can_add_children: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canAddFolderFromAnotherDrive"
)]
pub can_add_folder_from_another_drive: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canAddMyDriveParent"
)]
pub can_add_my_drive_parent: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canChangeCopyRequiresWriterPermission"
)]
pub can_change_copy_requires_writer_permission: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canChangeSecurityUpdateEnabled"
)]
pub can_change_security_update_enabled: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canChangeViewersCanCopyContent"
)]
pub can_change_viewers_can_copy_content: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canComment"
)]
pub can_comment: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "canCopy")]
pub can_copy: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "canDelete")]
pub can_delete: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canDeleteChildren"
)]
pub can_delete_children: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canDownload"
)]
pub can_download: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "canEdit")]
pub can_edit: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canListChildren"
)]
pub can_list_children: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canModifyContent"
)]
pub can_modify_content: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canModifyContentRestriction"
)]
pub can_modify_content_restriction: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canMoveChildrenOutOfDrive"
)]
pub can_move_children_out_of_drive: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canMoveChildrenOutOfTeamDrive"
)]
pub can_move_children_out_of_team_drive: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canMoveChildrenWithinDrive"
)]
pub can_move_children_within_drive: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canMoveChildrenWithinTeamDrive"
)]
pub can_move_children_within_team_drive: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canMoveItemIntoTeamDrive"
)]
pub can_move_item_into_team_drive: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canMoveItemOutOfDrive"
)]
pub can_move_item_out_of_drive: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canMoveItemOutOfTeamDrive"
)]
pub can_move_item_out_of_team_drive: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canMoveItemWithinDrive"
)]
pub can_move_item_within_drive: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canMoveItemWithinTeamDrive"
)]
pub can_move_item_within_team_drive: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canMoveTeamDriveItem"
)]
pub can_move_team_drive_item: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canReadDrive"
)]
pub can_read_drive: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canReadRevisions"
)]
pub can_read_revisions: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canReadTeamDrive"
)]
pub can_read_team_drive: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canRemoveChildren"
)]
pub can_remove_children: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canRemoveMyDriveParent"
)]
pub can_remove_my_drive_parent: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "canRename")]
pub can_rename: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "canShare")]
pub can_share: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "canTrash")]
pub can_trash: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canTrashChildren"
)]
pub can_trash_children: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canUntrash"
)]
pub can_untrash: Option<bool>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct Thumbnail {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<bytes::Bytes>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "mimeType"
)]
pub mime_type: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct ContentHints {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "indexableText"
)]
pub indexable_text: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub thumbnail: Option<Thumbnail>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct Location {
#[serde(
default,
skip_serializing_if = "crate::utils::zero_f64",
deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
)]
pub altitude: f64,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_f64",
deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
)]
pub latitude: f64,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_f64",
deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
)]
pub longitude: f64,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct ImageMediaMetadata {
#[serde(
default,
skip_serializing_if = "crate::utils::zero_f64",
deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
)]
pub aperture: f64,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "cameraMake"
)]
pub camera_make: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "cameraModel"
)]
pub camera_model: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "colorSpace"
)]
pub color_space: String,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_f64",
deserialize_with = "crate::utils::deserialize_null_f64::deserialize",
rename = "exposureBias"
)]
pub exposure_bias: f64,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "exposureMode"
)]
pub exposure_mode: String,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_f64",
deserialize_with = "crate::utils::deserialize_null_f64::deserialize",
rename = "exposureTime"
)]
pub exposure_time: f64,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "flashUsed")]
pub flash_used: Option<bool>,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_f64",
deserialize_with = "crate::utils::deserialize_null_f64::deserialize",
rename = "focalLength"
)]
pub focal_length: f64,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
)]
pub height: i64,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
rename = "isoSpeed"
)]
pub iso_speed: i64,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub lens: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub location: Option<Location>,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_f64",
deserialize_with = "crate::utils::deserialize_null_f64::deserialize",
rename = "maxApertureValue"
)]
pub max_aperture_value: f64,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "meteringMode"
)]
pub metering_mode: String,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
)]
pub rotation: i64,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub sensor: String,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
rename = "subjectDistance"
)]
pub subject_distance: i64,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub time: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "whiteBalance"
)]
pub white_balance: String,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
)]
pub width: i64,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct LinkShareMetadata {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "securityUpdateEligible"
)]
pub security_update_eligible: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "securityUpdateEnabled"
)]
pub security_update_enabled: Option<bool>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct ShortcutDetails {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "targetId"
)]
pub target_id: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "targetMimeType"
)]
pub target_mime_type: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "targetResourceKey"
)]
pub target_resource_key: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct VideoMediaMetadata {
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
rename = "durationMillis"
)]
pub duration_millis: i64,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
)]
pub height: i64,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
)]
pub width: i64,
}
#[derive(Serialize, Default, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct File {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "appProperties"
)]
pub app_properties: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub capabilities: Option<FileCapabilities>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "contentHints"
)]
pub content_hints: Option<ContentHints>,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
rename = "contentRestrictions"
)]
pub content_restrictions: Vec<ContentRestriction>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "copyRequiresWriterPermission"
)]
pub copy_requires_writer_permission: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::utils::date_time_format::deserialize",
rename = "createdTime"
)]
pub created_time: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub description: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "driveId"
)]
pub drive_id: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "explicitlyTrashed"
)]
pub explicitly_trashed: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "exportLinks"
)]
pub export_links: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "fileExtension"
)]
pub file_extension: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "folderColorRgb"
)]
pub folder_color_rgb: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "fullFileExtension"
)]
pub full_file_extension: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "hasAugmentedPermissions"
)]
pub has_augmented_permissions: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "hasThumbnail"
)]
pub has_thumbnail: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "headRevisionId"
)]
pub head_revision_id: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "iconLink"
)]
pub icon_link: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub id: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "imageMediaMetadata"
)]
pub image_media_metadata: Option<ImageMediaMetadata>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "isAppAuthorized"
)]
pub is_app_authorized: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "lastModifyingUser"
)]
pub last_modifying_user: Option<User>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "linkShareMetadata"
)]
pub link_share_metadata: Option<LinkShareMetadata>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "md5Checksum"
)]
pub md_5_checksum: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "mimeType"
)]
pub mime_type: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "modifiedByMe"
)]
pub modified_by_me: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::utils::date_time_format::deserialize",
rename = "modifiedByMeTime"
)]
pub modified_by_me_time: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::utils::date_time_format::deserialize",
rename = "modifiedTime"
)]
pub modified_time: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub name: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "originalFilename"
)]
pub original_filename: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ownedByMe")]
pub owned_by_me: Option<bool>,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
)]
pub owners: Vec<User>,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
)]
pub parents: Vec<String>,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
rename = "permissionIds"
)]
pub permission_ids: Vec<String>,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
)]
pub permissions: Vec<Permission>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub properties: String,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
rename = "quotaBytesUsed"
)]
pub quota_bytes_used: i64,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "resourceKey"
)]
pub resource_key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub shared: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::utils::date_time_format::deserialize",
rename = "sharedWithMeTime"
)]
pub shared_with_me_time: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "sharingUser"
)]
pub sharing_user: Option<User>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "shortcutDetails"
)]
pub shortcut_details: Option<ShortcutDetails>,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
)]
pub size: i64,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
)]
pub spaces: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub starred: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "teamDriveId"
)]
pub team_drive_id: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "thumbnailLink"
)]
pub thumbnail_link: String,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
rename = "thumbnailVersion"
)]
pub thumbnail_version: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub trashed: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::utils::date_time_format::deserialize",
rename = "trashedTime"
)]
pub trashed_time: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "trashingUser"
)]
pub trashing_user: Option<User>,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
)]
pub version: i64,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "videoMediaMetadata"
)]
pub video_media_metadata: Option<VideoMediaMetadata>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "viewedByMe"
)]
pub viewed_by_me: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::utils::date_time_format::deserialize",
rename = "viewedByMeTime"
)]
pub viewed_by_me_time: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "viewersCanCopyContent"
)]
pub viewers_can_copy_content: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "webContentLink"
)]
pub web_content_link: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "webViewLink"
)]
pub web_view_link: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "writersCanShare"
)]
pub writers_can_share: Option<bool>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct FileList {
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
)]
pub files: Vec<File>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "incompleteSearch"
)]
pub incomplete_search: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "nextPageToken"
)]
pub next_page_token: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct GeneratedIds {
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
)]
pub ids: Vec<String>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub space: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct PermissionDetails {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub inherited: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "inheritedFrom"
)]
pub inherited_from: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "permissionType"
)]
pub permission_type: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub role: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct TeamDrivePermissionDetails {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub inherited: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "inheritedFrom"
)]
pub inherited_from: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub role: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "teamDrivePermissionType"
)]
pub team_drive_permission_type: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct Permission {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "allowFileDiscovery"
)]
pub allow_file_discovery: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub deleted: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "displayName"
)]
pub display_name: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub domain: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "emailAddress"
)]
pub email_address: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::utils::date_time_format::deserialize",
rename = "expirationTime"
)]
pub expiration_time: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub id: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
rename = "permissionDetails"
)]
pub permission_details: Vec<PermissionDetails>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "photoLink"
)]
pub photo_link: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub role: String,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
rename = "teamDrivePermissionDetails"
)]
pub team_drive_permission_details: Vec<TeamDrivePermissionDetails>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "type"
)]
pub type_: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub view: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct PermissionList {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "nextPageToken"
)]
pub next_page_token: String,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
)]
pub permissions: Vec<Permission>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct Reply {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub action: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub author: Option<User>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub content: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::utils::date_time_format::deserialize",
rename = "createdTime"
)]
pub created_time: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub deleted: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "htmlContent"
)]
pub html_content: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub id: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::utils::date_time_format::deserialize",
rename = "modifiedTime"
)]
pub modified_time: Option<chrono::DateTime<chrono::Utc>>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct ReplyList {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "nextPageToken"
)]
pub next_page_token: String,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
)]
pub replies: Vec<Reply>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct Revision {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "exportLinks"
)]
pub export_links: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub id: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "keepForever"
)]
pub keep_forever: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "lastModifyingUser"
)]
pub last_modifying_user: Option<User>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "md5Checksum"
)]
pub md_5_checksum: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "mimeType"
)]
pub mime_type: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::utils::date_time_format::deserialize",
rename = "modifiedTime"
)]
pub modified_time: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "originalFilename"
)]
pub original_filename: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "publishAuto"
)]
pub publish_auto: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub published: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "publishedLink"
)]
pub published_link: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "publishedOutsideDomain"
)]
pub published_outside_domain: Option<bool>,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_i64",
deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
)]
pub size: i64,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct RevisionList {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "nextPageToken"
)]
pub next_page_token: String,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
)]
pub revisions: Vec<Revision>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct StartPageToken {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "startPageToken"
)]
pub start_page_token: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct TeamDriveBackgroundImageFile {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub id: String,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_f64",
deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
)]
pub width: f64,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_f64",
deserialize_with = "crate::utils::deserialize_null_f64::deserialize",
rename = "xCoordinate"
)]
pub x_coordinate: f64,
#[serde(
default,
skip_serializing_if = "crate::utils::zero_f64",
deserialize_with = "crate::utils::deserialize_null_f64::deserialize",
rename = "yCoordinate"
)]
pub y_coordinate: f64,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct TeamDriveCapabilities {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canAddChildren"
)]
pub can_add_children: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canChangeCopyRequiresWriterPermissionRestriction"
)]
pub can_change_copy_requires_writer_permission_restriction: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canChangeDomainUsersOnlyRestriction"
)]
pub can_change_domain_users_only_restriction: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canChangeTeamDriveBackground"
)]
pub can_change_team_drive_background: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canChangeTeamMembersOnlyRestriction"
)]
pub can_change_team_members_only_restriction: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canComment"
)]
pub can_comment: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "canCopy")]
pub can_copy: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canDeleteChildren"
)]
pub can_delete_children: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canDeleteTeamDrive"
)]
pub can_delete_team_drive: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canDownload"
)]
pub can_download: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "canEdit")]
pub can_edit: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canListChildren"
)]
pub can_list_children: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canManageMembers"
)]
pub can_manage_members: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canReadRevisions"
)]
pub can_read_revisions: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canRemoveChildren"
)]
pub can_remove_children: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "canRename")]
pub can_rename: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canRenameTeamDrive"
)]
pub can_rename_team_drive: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "canShare")]
pub can_share: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "canTrashChildren"
)]
pub can_trash_children: Option<bool>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct TeamDriveRestrictions {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "adminManagedRestrictions"
)]
pub admin_managed_restrictions: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "copyRequiresWriterPermission"
)]
pub copy_requires_writer_permission: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "domainUsersOnly"
)]
pub domain_users_only: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "teamMembersOnly"
)]
pub team_members_only: Option<bool>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct TeamDrive {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "backgroundImageFile"
)]
pub background_image_file: Option<TeamDriveBackgroundImageFile>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "backgroundImageLink"
)]
pub background_image_link: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub capabilities: Option<TeamDriveCapabilities>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "colorRgb"
)]
pub color_rgb: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::utils::date_time_format::deserialize",
rename = "createdTime"
)]
pub created_time: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub id: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub restrictions: Option<TeamDriveRestrictions>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "themeId"
)]
pub theme_id: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct TeamDriveList {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "nextPageToken"
)]
pub next_page_token: String,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
rename = "teamDrives"
)]
pub team_drives: Vec<TeamDrive>,
}
#[derive(Serialize, Default, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
pub struct User {
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "displayName"
)]
pub display_name: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "emailAddress"
)]
pub email_address: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize"
)]
pub kind: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub me: Option<bool>,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "permissionId"
)]
pub permission_id: String,
#[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "crate::utils::deserialize_null_string::deserialize",
rename = "photoLink"
)]
pub photo_link: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
pub enum Alt {
#[serde(rename = "json")]
Json,
#[serde(rename = "")]
#[default]
Noop,
#[serde(other)]
FallthroughString,
}
impl std::fmt::Display for Alt {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Alt::Json => "json",
Alt::Noop => "",
Alt::FallthroughString => "*",
}
.fmt(f)
}
}
impl Alt {
pub fn is_noop(&self) -> bool {
matches!(self, Alt::Noop)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
pub enum Corpus {
#[serde(rename = "domain")]
Domain,
#[serde(rename = "user")]
User,
#[serde(rename = "")]
#[default]
Noop,
#[serde(other)]
FallthroughString,
}
impl std::fmt::Display for Corpus {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Corpus::Domain => "domain",
Corpus::User => "user",
Corpus::Noop => "",
Corpus::FallthroughString => "*",
}
.fmt(f)
}
}
impl Corpus {
pub fn is_noop(&self) -> bool {
matches!(self, Corpus::Noop)
}
}