use crate::serde_helpers::double_option;
mod ai;
mod ai_studio;
mod app_item_associations;
mod archives;
mod authorization;
mod automate_workflows;
mod avatars;
mod chunked_uploads;
mod classifications;
mod collaboration_allowlist_entries;
mod collaboration_allowlist_exempt_targets;
mod collections;
mod comments;
mod device_pinners;
mod docgen;
mod docgen_template;
mod email_aliases;
mod enterprise_configurations;
mod events;
mod external_users;
mod file_requests;
mod file_version_legal_holds;
mod file_version_retentions;
mod file_versions;
mod files;
mod folder_locks;
mod folders;
mod groups;
mod hub_collaborations;
mod hub_document;
mod hub_items;
mod hubs;
mod integration_mappings;
mod invites;
mod legal_hold_policies;
mod legal_hold_policy_assignments;
mod list_collaborations;
mod memberships;
mod metadata_cascade_policies;
mod metadata_taxonomies;
mod metadata_templates;
mod notes;
mod query;
mod recent_items;
mod retention_policies;
mod retention_policy_assignments;
mod search;
mod session_termination;
mod shared_links_folders;
mod shield_information_barrier_reports;
mod shield_information_barrier_segment_members;
mod shield_information_barrier_segment_restrictions;
mod shield_information_barrier_segments;
mod shield_information_barriers;
mod shield_lists;
mod sign_requests;
mod sign_templates;
mod skills;
mod storage_policies;
mod storage_policy_assignments;
mod task_assignments;
mod tasks;
mod terms_of_service_user_statuses;
mod terms_of_services;
mod transfer;
mod trashed_files;
mod trashed_folders;
mod trashed_items;
mod trashed_web_links;
mod uploads;
mod user_collaborations;
mod users;
mod web_links;
mod webhooks;
mod workflows;
mod zip_downloads;
pub use ai::*;
pub use ai_studio::*;
pub use app_item_associations::*;
pub use archives::*;
pub use authorization::*;
pub use automate_workflows::*;
pub use avatars::*;
pub use chunked_uploads::*;
pub use classifications::*;
pub use collaboration_allowlist_entries::*;
pub use collaboration_allowlist_exempt_targets::*;
pub use collections::*;
pub use comments::*;
pub use device_pinners::*;
pub use docgen::*;
pub use docgen_template::*;
pub use email_aliases::*;
pub use enterprise_configurations::*;
pub use events::*;
pub use external_users::*;
pub use file_requests::*;
pub use file_version_legal_holds::*;
pub use file_version_retentions::*;
pub use file_versions::*;
pub use files::*;
pub use folder_locks::*;
pub use folders::*;
pub use groups::*;
pub use hub_collaborations::*;
pub use hub_document::*;
pub use hub_items::*;
pub use hubs::*;
pub use integration_mappings::*;
pub use invites::*;
pub use legal_hold_policies::*;
pub use legal_hold_policy_assignments::*;
pub use list_collaborations::*;
pub use memberships::*;
pub use metadata_cascade_policies::*;
pub use metadata_taxonomies::*;
pub use metadata_templates::*;
pub use notes::*;
pub use query::*;
pub use recent_items::*;
pub use retention_policies::*;
pub use retention_policy_assignments::*;
pub use search::*;
pub use session_termination::*;
pub use shared_links_folders::*;
pub use shield_information_barrier_reports::*;
pub use shield_information_barrier_segment_members::*;
pub use shield_information_barrier_segment_restrictions::*;
pub use shield_information_barrier_segments::*;
pub use shield_information_barriers::*;
pub use shield_lists::*;
pub use sign_requests::*;
pub use sign_templates::*;
pub use skills::*;
pub use storage_policies::*;
pub use storage_policy_assignments::*;
pub use task_assignments::*;
pub use tasks::*;
pub use terms_of_service_user_statuses::*;
pub use terms_of_services::*;
pub use transfer::*;
pub use trashed_files::*;
pub use trashed_folders::*;
pub use trashed_items::*;
pub use trashed_web_links::*;
pub use uploads::*;
pub use user_collaborations::*;
pub use users::*;
pub use web_links::*;
pub use webhooks::*;
pub use workflows::*;
pub use zip_downloads::*;
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct AiAgentBasicTextToolBase {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub model: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub num_tokens_for_completion: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub llm_endpoint_params: Option<AiLlmEndpointParams>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct AiAgentBasicTextToolTextGen {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub model: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub num_tokens_for_completion: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub llm_endpoint_params: Option<AiLlmEndpointParams>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub system_message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub prompt_template: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct AiAgentLongTextToolTextGen {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub model: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub num_tokens_for_completion: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub llm_endpoint_params: Option<AiLlmEndpointParams>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub system_message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub prompt_template: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub embeddings: Option<AiAgentBasicGenToolEmbeddings>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct AiAgentSpreadsheetTool {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub model: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub num_tokens_for_completion: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub llm_endpoint_params: Option<AiLlmEndpointParams>,
}
#[derive(Clone, Debug, PartialEq)]
pub enum AiLlmEndpointParams {
OpenaiParams(AiLlmEndpointParamsOpenAi),
GoogleParams(AiLlmEndpointParamsGoogle),
AwsParams(AiLlmEndpointParamsAWS),
IbmParams(AiLlmEndpointParamsIBM),
Unknown(serde_json::Value),
}
impl Default for AiLlmEndpointParams {
fn default() -> Self {
Self::Unknown(Default::default())
}
}
impl serde::Serialize for AiLlmEndpointParams {
fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match self {
Self::OpenaiParams(inner) => inner.serialize(serializer),
Self::GoogleParams(inner) => inner.serialize(serializer),
Self::AwsParams(inner) => inner.serialize(serializer),
Self::IbmParams(inner) => inner.serialize(serializer),
Self::Unknown(inner) => inner.serialize(serializer),
}
}
}
impl<'de> serde::Deserialize<'de> for AiLlmEndpointParams {
fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
let value = serde_json::Value::deserialize(deserializer)?;
let tag = value
.get("type")
.and_then(serde_json::Value::as_str)
.map(str::to_owned);
match tag.as_deref() {
Some("openai_params") => Ok(Self::OpenaiParams(
serde_json::from_value(value).map_err(serde::de::Error::custom)?,
)),
Some("google_params") => Ok(Self::GoogleParams(
serde_json::from_value(value).map_err(serde::de::Error::custom)?,
)),
Some("aws_params") => Ok(Self::AwsParams(
serde_json::from_value(value).map_err(serde::de::Error::custom)?,
)),
Some("ibm_params") => Ok(Self::IbmParams(
serde_json::from_value(value).map_err(serde::de::Error::custom)?,
)),
_ => Ok(Self::Unknown(value)),
}
}
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct AiLlmEndpointParamsAWS {
pub r#type: AiLlmEndpointParamsAWSType,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub temperature: Option<Option<f64>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub top_p: Option<Option<f64>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct AiLlmEndpointParamsGoogle {
pub r#type: AiLlmEndpointParamsGoogleType,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub temperature: Option<Option<f64>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub top_p: Option<Option<f64>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub top_k: Option<Option<f64>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct AiLlmEndpointParamsIBM {
pub r#type: AiLlmEndpointParamsIBMType,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub temperature: Option<Option<f64>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub top_p: Option<Option<f64>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub top_k: Option<Option<f64>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct AiLlmEndpointParamsOpenAi {
pub r#type: AiLlmEndpointParamsOpenAiType,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub temperature: Option<Option<f64>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub top_p: Option<Option<f64>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub frequency_penalty: Option<Option<f64>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub presence_penalty: Option<Option<f64>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub stop: Option<Option<String>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct AiSingleAgentResponse {
pub id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<AiSingleAgentResponseType>,
pub origin: String,
pub name: String,
pub access_state: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_by: Option<UserBase>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modified_by: Option<UserBase>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub icon_reference: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub allowed_entities: Option<Vec<AiAgentAllowedEntity>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct AppItem {
pub id: String,
pub r#type: AppItemType,
pub application_type: String,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct Classification {
#[serde(
rename = "Box__Security__Classification__Key",
default,
skip_serializing_if = "Option::is_none"
)]
pub box_security_classification_key: Option<String>,
#[serde(rename = "$parent", default, skip_serializing_if = "Option::is_none")]
pub parent: Option<String>,
#[serde(rename = "$template", default, skip_serializing_if = "Option::is_none")]
pub template: Option<ClassificationTemplate2>,
#[serde(rename = "$scope", default, skip_serializing_if = "Option::is_none")]
pub scope: Option<String>,
#[serde(rename = "$version", default, skip_serializing_if = "Option::is_none")]
pub version: Option<i64>,
#[serde(rename = "$type", default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(
rename = "$typeVersion",
default,
skip_serializing_if = "Option::is_none"
)]
pub type_version: Option<f64>,
#[serde(rename = "$canEdit", default, skip_serializing_if = "Option::is_none")]
pub can_edit: Option<bool>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ClientError {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<ClientErrorType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub code: Option<ClientErrorCode>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub context_info: Option<Option<std::collections::HashMap<String, serde_json::Value>>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub help_url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub request_id: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct Collaboration {
pub id: String,
pub r#type: CollaborationType,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub item: Option<Option<CollaborationItem>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub app_item: Option<Option<AppItem>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub accessible_by: Option<CollaborationAccessGrantee>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub invite_email: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub role: Option<CollaborationRole>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub expires_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_access_only: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<CollaborationStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub acknowledged_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_by: Option<UserCollaborations>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub acceptance_requirements_status: Option<CollaborationAcceptanceRequirementsStatus>,
}
#[derive(Clone, Debug, PartialEq)]
pub enum CollaborationAccessGrantee {
User(UserCollaborations),
Group(GroupMini),
Unknown(serde_json::Value),
}
impl Default for CollaborationAccessGrantee {
fn default() -> Self {
Self::Unknown(Default::default())
}
}
impl serde::Serialize for CollaborationAccessGrantee {
fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match self {
Self::User(inner) => inner.serialize(serializer),
Self::Group(inner) => inner.serialize(serializer),
Self::Unknown(inner) => inner.serialize(serializer),
}
}
}
impl<'de> serde::Deserialize<'de> for CollaborationAccessGrantee {
fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
let value = serde_json::Value::deserialize(deserializer)?;
let tag = value
.get("type")
.and_then(serde_json::Value::as_str)
.map(str::to_owned);
match tag.as_deref() {
Some("user") => Ok(Self::User(
serde_json::from_value(value).map_err(serde::de::Error::custom)?,
)),
Some("group") => Ok(Self::Group(
serde_json::from_value(value).map_err(serde::de::Error::custom)?,
)),
_ => Ok(Self::Unknown(value)),
}
}
}
#[derive(Clone, Debug, PartialEq)]
pub enum CollaborationItem {
File(File),
Folder(Folder),
WebLink(WebLink),
Unknown(serde_json::Value),
}
impl Default for CollaborationItem {
fn default() -> Self {
Self::Unknown(Default::default())
}
}
impl serde::Serialize for CollaborationItem {
fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match self {
Self::File(inner) => inner.serialize(serializer),
Self::Folder(inner) => inner.serialize(serializer),
Self::WebLink(inner) => inner.serialize(serializer),
Self::Unknown(inner) => inner.serialize(serializer),
}
}
}
impl<'de> serde::Deserialize<'de> for CollaborationItem {
fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
let value = serde_json::Value::deserialize(deserializer)?;
let tag = value
.get("type")
.and_then(serde_json::Value::as_str)
.map(str::to_owned);
match tag.as_deref() {
Some("file") => Ok(Self::File(
serde_json::from_value(value).map_err(serde::de::Error::custom)?,
)),
Some("folder") => Ok(Self::Folder(
serde_json::from_value(value).map_err(serde::de::Error::custom)?,
)),
Some("web_link") => Ok(Self::WebLink(
serde_json::from_value(value).map_err(serde::de::Error::custom)?,
)),
_ => Ok(Self::Unknown(value)),
}
}
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct Collection {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<CollectionType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<CollectionName>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub collection_type: Option<CollectionCollectionType>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct Comment {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<CommentType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_reply_comment: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_by: Option<UserMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub item: Option<CommentItem>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct CommentBase {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<CommentType>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ConflictError {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<ClientErrorType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub code: Option<ClientErrorCode>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub context_info: Option<ConflictErrorContextInfo>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub help_url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub request_id: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct File {
pub id: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub etag: Option<Option<String>>,
pub r#type: AiCitationType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sequence_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sha1: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_version: Option<FileVersionMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub size: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub path_collection: Option<FilePathCollection>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub trashed_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub purged_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub content_created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub content_modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_by: Option<UserMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modified_by: Option<UserMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub owned_by: Option<UserMini>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub shared_link: Option<Option<FileSharedLink>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub parent: Option<Option<FolderMini>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub item_status: Option<FileItemStatus>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileBase {
pub id: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub etag: Option<Option<String>>,
pub r#type: AiCitationType,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileFull {
pub id: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub etag: Option<Option<String>>,
pub r#type: AiCitationType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sequence_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sha1: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_version: Option<FileVersionMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub size: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub path_collection: Option<FilePathCollection>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub trashed_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub purged_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub content_created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub content_modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_by: Option<UserMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modified_by: Option<UserMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub owned_by: Option<UserMini>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub shared_link: Option<Option<FileSharedLink>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub parent: Option<Option<FolderMini>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub item_status: Option<FileItemStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version_number: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub comment_count: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub permissions: Option<FileFullPermissions>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub lock: Option<Option<FileFullLock>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub extension: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_package: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expiring_embed_link: Option<FileFullExpiringEmbedLink>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub watermark_info: Option<FileFullWatermarkInfo>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_accessible_via_shared_link: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub allowed_invitee_roles: Option<Vec<FileFullAllowedInviteeRoles>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_externally_owned: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_collaborations: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metadata:
Option<std::collections::HashMap<String, std::collections::HashMap<String, MetadataFull>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub expires_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub representations: Option<FileFullRepresentations>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub classification: Option<Option<FileFullClassification>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uploader_display_name: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub disposition_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub shared_link_permission_options: Option<Option<Vec<FileFullSharedLinkPermissionOptions>>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_associated_with_app_item: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub collections: Option<Vec<Collection>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_download_available: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub download_url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub authenticated_download_url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub allowed_shared_link_access_levels: Option<Vec<SharedLinkAccess>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileMini {
pub id: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub etag: Option<Option<String>>,
pub r#type: AiCitationType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sequence_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sha1: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_version: Option<FileVersionMini>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileConflict {
pub id: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub etag: Option<Option<String>>,
pub r#type: AiCitationType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sequence_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sha1: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_version: Option<FileVersionMini>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct Files {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_count: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub entries: Option<Vec<FileFull>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileVersionBase {
pub id: String,
pub r#type: FileVersionType,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileVersionMini {
pub id: String,
pub r#type: FileVersionType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sha1: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct Folder {
pub id: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub etag: Option<Option<String>>,
pub r#type: FolderType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sequence_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub size: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub path_collection: Option<FilePathCollection>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_by: Option<UserMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modified_by: Option<UserMini>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub trashed_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub purged_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub content_created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub content_modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub owned_by: Option<UserMini>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub shared_link: Option<Option<FileSharedLink>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub folder_upload_email: Option<Option<FolderFolderUploadEmail>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub parent: Option<Option<FolderMini>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub item_status: Option<FileItemStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub item_collection: Option<Items>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FolderFull {
pub id: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub etag: Option<Option<String>>,
pub r#type: FolderType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sequence_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub size: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub path_collection: Option<FilePathCollection>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_by: Option<UserMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modified_by: Option<UserMini>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub trashed_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub purged_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub content_created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub content_modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub owned_by: Option<UserMini>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub shared_link: Option<Option<FileSharedLink>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub folder_upload_email: Option<Option<FolderFolderUploadEmail>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub parent: Option<Option<FolderMini>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub item_status: Option<FileItemStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub item_collection: Option<Items>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sync_state: Option<FolderFullSyncState>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_collaborations: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub permissions: Option<FolderFullPermissions>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_non_owners_invite: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_externally_owned: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metadata:
Option<std::collections::HashMap<String, std::collections::HashMap<String, MetadataFull>>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_collaboration_restricted_to_enterprise: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub allowed_shared_link_access_levels: Option<Vec<SharedLinkAccess>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub allowed_invitee_roles: Option<Vec<FileFullAllowedInviteeRoles>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub watermark_info: Option<FileFullWatermarkInfo>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_accessible_via_shared_link: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_non_owners_view_collaborators: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub classification: Option<Option<FileFullClassification>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_associated_with_app_item: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub collections: Option<Vec<Collection>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FolderMini {
pub id: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub etag: Option<Option<String>>,
pub r#type: FolderType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sequence_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FolderReference {
pub r#type: FolderType,
pub id: String,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct Group {
pub id: String,
pub r#type: GroupType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub group_type: Option<GroupGroupType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct GroupMini {
pub id: String,
pub r#type: GroupType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub group_type: Option<GroupGroupType>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct IntegrationMappingBase {
pub id: String,
pub r#type: IntegrationMappingType,
}
#[derive(Clone, Debug, PartialEq)]
pub enum Item {
File(FileFull),
Folder(FolderMini),
WebLink(WebLink),
Unknown(serde_json::Value),
}
impl Default for Item {
fn default() -> Self {
Self::Unknown(Default::default())
}
}
impl serde::Serialize for Item {
fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match self {
Self::File(inner) => inner.serialize(serializer),
Self::Folder(inner) => inner.serialize(serializer),
Self::WebLink(inner) => inner.serialize(serializer),
Self::Unknown(inner) => inner.serialize(serializer),
}
}
}
impl<'de> serde::Deserialize<'de> for Item {
fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
let value = serde_json::Value::deserialize(deserializer)?;
let tag = value
.get("type")
.and_then(serde_json::Value::as_str)
.map(str::to_owned);
match tag.as_deref() {
Some("file") => Ok(Self::File(
serde_json::from_value(value).map_err(serde::de::Error::custom)?,
)),
Some("folder") => Ok(Self::Folder(
serde_json::from_value(value).map_err(serde::de::Error::custom)?,
)),
Some("web_link") => Ok(Self::WebLink(
serde_json::from_value(value).map_err(serde::de::Error::custom)?,
)),
_ => Ok(Self::Unknown(value)),
}
}
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct Items {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub next_marker: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub prev_marker: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_count: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub order: Option<Vec<CollectionsOrder>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub entries: Option<Vec<Item>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct LegalHoldPolicyMini {
pub id: String,
pub r#type: LegalHoldPolicyType,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct LegalHoldPolicyAssignedItem {
pub r#type: LegalHoldPolicyAssignedItemType,
pub id: String,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct LegalHoldPolicyAssignment {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<LegalHoldPolicyAssignmentType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub legal_hold_policy: Option<LegalHoldPolicyMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub assigned_to: Option<LegalHoldPolicyAssignedItem>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub assigned_by: Option<UserMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub assigned_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub deleted_at: Option<chrono::DateTime<chrono::Utc>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct LegalHoldPolicyAssignmentBase {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<LegalHoldPolicyAssignmentType>,
}
pub type Metadata = MetadataBase;
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct MetadataBase {
#[serde(rename = "$parent", default, skip_serializing_if = "Option::is_none")]
pub parent: Option<String>,
#[serde(rename = "$template", default, skip_serializing_if = "Option::is_none")]
pub template: Option<String>,
#[serde(rename = "$scope", default, skip_serializing_if = "Option::is_none")]
pub scope: Option<String>,
#[serde(rename = "$version", default, skip_serializing_if = "Option::is_none")]
pub version: Option<i64>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct MetadataFull {
#[serde(rename = "$parent", default, skip_serializing_if = "Option::is_none")]
pub parent: Option<String>,
#[serde(rename = "$template", default, skip_serializing_if = "Option::is_none")]
pub template: Option<String>,
#[serde(rename = "$scope", default, skip_serializing_if = "Option::is_none")]
pub scope: Option<String>,
#[serde(rename = "$version", default, skip_serializing_if = "Option::is_none")]
pub version: Option<i64>,
#[serde(rename = "$canEdit", default, skip_serializing_if = "Option::is_none")]
pub can_edit: Option<bool>,
#[serde(rename = "$id", default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "$type", default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(
rename = "$typeVersion",
default,
skip_serializing_if = "Option::is_none"
)]
pub type_version: Option<i64>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct MetadataError {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub request_id: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct MetadataInstanceValue(pub serde_json::Value);
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct Metadatas {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub entries: Option<Vec<Metadata>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct OAuth2Error {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error_description: Option<String>,
}
#[derive(Clone, Debug, PartialEq)]
pub enum Resource {
Folder(FolderMini),
File(FileMini),
Unknown(serde_json::Value),
}
impl Default for Resource {
fn default() -> Self {
Self::Unknown(Default::default())
}
}
impl serde::Serialize for Resource {
fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match self {
Self::Folder(inner) => inner.serialize(serializer),
Self::File(inner) => inner.serialize(serializer),
Self::Unknown(inner) => inner.serialize(serializer),
}
}
}
impl<'de> serde::Deserialize<'de> for Resource {
fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
let value = serde_json::Value::deserialize(deserializer)?;
let tag = value
.get("type")
.and_then(serde_json::Value::as_str)
.map(str::to_owned);
match tag.as_deref() {
Some("folder") => Ok(Self::Folder(
serde_json::from_value(value).map_err(serde::de::Error::custom)?,
)),
Some("file") => Ok(Self::File(
serde_json::from_value(value).map_err(serde::de::Error::custom)?,
)),
_ => Ok(Self::Unknown(value)),
}
}
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ResourceScope {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub scope: Option<ResourceScopeScope>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub object: Option<Resource>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct RetentionPolicyBase {
pub id: String,
pub r#type: RetentionPolicyType,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct RetentionPolicyMini {
pub id: String,
pub r#type: RetentionPolicyType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub policy_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub retention_length: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub disposition_action: Option<RetentionPolicyDispositionAction>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_extension_length: Option<RetentionPolicyMaxExtensionLengthResponse>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct RetentionPolicyMaxExtensionLengthResponse(pub serde_json::Value);
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ShieldInformationBarrierBase {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<ShieldInformationBarrierType>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ShieldInformationBarrierReportBase {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<ShieldInformationBarrierReportType>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ShieldInformationBarrierSegmentMemberBase {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<ShieldInformationBarrierSegmentMemberType>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ShieldInformationBarrierSegmentMemberMini {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<ShieldInformationBarrierSegmentMemberType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user: Option<UserBase>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ShieldInformationBarrierSegmentRestrictionBase {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<ShieldInformationBarrierSegmentRestrictionType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ShieldInformationBarrierSegmentRestrictionMini {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<ShieldInformationBarrierSegmentRestrictionType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
pub shield_information_barrier_segment:
ShieldInformationBarrierSegmentMemberShieldInformationBarrierSegment,
pub restricted_segment: ShieldInformationBarrierSegmentMemberShieldInformationBarrierSegment,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestBase {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_document_preparation_needed: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub redirect_url: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub declined_redirect_url: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub are_text_signatures_enabled: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub email_subject: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub email_message: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub are_reminders_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub prefill_tags: Option<Vec<SignRequestPrefillTag>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub days_valid: Option<Option<i64>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub external_id: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub template_id: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub external_system_name: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub request_flow: Option<Option<String>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestSignerInputCustomValidation {
pub validation_type: SignRequestSignerInputCustomValidationValidationType,
pub custom_regex: Option<String>,
pub custom_error_message: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestSignerInputDateAsiaValidation {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub validation_type: Option<SignRequestSignerInputDateAsiaValidationValidationType>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestSignerInputDateEUValidation {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub validation_type: Option<SignRequestSignerInputDateEUValidationValidationType>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestSignerInputDateISOValidation {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub validation_type: Option<SignRequestSignerInputDateISOValidationValidationType>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestSignerInputDateUSValidation {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub validation_type: Option<SignRequestSignerInputDateUSValidationValidationType>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestSignerInputEmailValidation {
pub validation_type: SignRequestSignerInputEmailValidationValidationType,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestSignerInputNumberWithCommaValidation {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub validation_type: Option<SignRequestSignerInputNumberWithCommaValidationValidationType>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestSignerInputNumberWithPeriodValidation {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub validation_type: Option<SignRequestSignerInputNumberWithPeriodValidationValidationType>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestSignerInputSSNValidation {
pub validation_type: SignRequestSignerInputSSNValidationValidationType,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestSignerInputValidation(pub serde_json::Value);
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestSignerInputZIP4Validation {
pub validation_type: SignRequestSignerInputZIP4ValidationValidationType,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestSignerInputZIPValidation {
pub validation_type: SignRequestSignerInputZIPValidationValidationType,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct TaskAssignment {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<TaskAssignmentType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub item: Option<FileMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub assigned_to: Option<UserMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub completed_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub assigned_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reminded_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub resolution_state: Option<TaskAssignmentResolutionState>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub assigned_by: Option<UserMini>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct TaskAssignments {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_count: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub entries: Option<Vec<TaskAssignment>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct TermsOfServiceBase {
pub id: String,
pub r#type: TermsOfServiceType,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UploadPartMini {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub part_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub size: Option<i64>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UserBase {
pub id: String,
pub r#type: VariableValueType,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UserCollaborations {
pub id: String,
pub r#type: VariableValueType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub login: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_active: Option<bool>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UserMini {
pub id: String,
pub r#type: VariableValueType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub login: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct Watermark {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub watermark: Option<WatermarkWatermark>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct WebLink {
pub id: String,
pub r#type: TrashWebLinkType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub etag: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sequence_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub parent: Option<FolderMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub path_collection: Option<FilePathCollection>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub trashed_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub purged_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_by: Option<UserMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modified_by: Option<UserMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub owned_by: Option<UserMini>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub shared_link: Option<Option<FileSharedLink>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub item_status: Option<FileItemStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub collections: Option<Vec<Collection>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub allowed_shared_link_access_levels: Option<Vec<SharedLinkAccess>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct WebLinkMini {
pub id: String,
pub r#type: TrashWebLinkType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub etag: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sequence_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct WorkflowMini {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<WorkflowType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_enabled: Option<bool>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct AccessTokenTokenType(pub String);
impl AccessTokenTokenType {
pub const BEARER: &'static str = "bearer";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct AiAgentAskType(pub String);
impl AiAgentAskType {
pub const AI_AGENT_ASK: &'static str = "ai_agent_ask";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct EmbeddingsStrategy {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub num_tokens_per_chunk: Option<i64>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct AiAgentBasicGenToolEmbeddings {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub model: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub strategy: Option<EmbeddingsStrategy>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct AiAgentExtractType(pub String);
impl AiAgentExtractType {
pub const AI_AGENT_EXTRACT: &'static str = "ai_agent_extract";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct AiAgentTextGenType(pub String);
impl AiAgentTextGenType {
pub const AI_AGENT_TEXT_GEN: &'static str = "ai_agent_text_gen";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct AiCitationType(pub String);
impl AiCitationType {
pub const FILE: &'static str = "file";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct MetadataTemplateType(pub String);
impl MetadataTemplateType {
pub const METADATA_TEMPLATE: &'static str = "metadata_template";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FieldsOptions {
pub key: String,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct AiLlmEndpointParamsAWSType(pub String);
impl AiLlmEndpointParamsAWSType {
pub const AWS_PARAMS: &'static str = "aws_params";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct AiLlmEndpointParamsGoogleType(pub String);
impl AiLlmEndpointParamsGoogleType {
pub const GOOGLE_PARAMS: &'static str = "google_params";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct AiLlmEndpointParamsIBMType(pub String);
impl AiLlmEndpointParamsIBMType {
pub const IBM_PARAMS: &'static str = "ibm_params";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct AiLlmEndpointParamsOpenAiType(pub String);
impl AiLlmEndpointParamsOpenAiType {
pub const OPENAI_PARAMS: &'static str = "openai_params";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct AppItemType(pub String);
impl AppItemType {
pub const APP_ITEM: &'static str = "app_item";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct ClassificationTemplate2(pub String);
impl ClassificationTemplate2 {
pub const SECURITYCLASSIFICATION_6VMVOCHWUWO: &'static str =
"securityClassification-6VMVochwUWo";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct ClientErrorType(pub String);
impl ClientErrorType {
pub const ERROR: &'static str = "error";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct ClientErrorCode(pub String);
impl ClientErrorCode {
pub const CREATED: &'static str = "created";
pub const ACCEPTED: &'static str = "accepted";
pub const NO_CONTENT: &'static str = "no_content";
pub const REDIRECT: &'static str = "redirect";
pub const NOT_MODIFIED: &'static str = "not_modified";
pub const BAD_REQUEST: &'static str = "bad_request";
pub const UNAUTHORIZED: &'static str = "unauthorized";
pub const FORBIDDEN: &'static str = "forbidden";
pub const NOT_FOUND: &'static str = "not_found";
pub const METHOD_NOT_ALLOWED: &'static str = "method_not_allowed";
pub const CONFLICT: &'static str = "conflict";
pub const PRECONDITION_FAILED: &'static str = "precondition_failed";
pub const TOO_MANY_REQUESTS: &'static str = "too_many_requests";
pub const INTERNAL_SERVER_ERROR: &'static str = "internal_server_error";
pub const UNAVAILABLE: &'static str = "unavailable";
pub const ITEM_NAME_INVALID: &'static str = "item_name_invalid";
pub const INSUFFICIENT_SCOPE: &'static str = "insufficient_scope";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct CollaborationType(pub String);
impl CollaborationType {
pub const COLLABORATION: &'static str = "collaboration";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct CollaborationRole(pub String);
impl CollaborationRole {
pub const EDITOR: &'static str = "editor";
pub const VIEWER: &'static str = "viewer";
pub const PREVIEWER: &'static str = "previewer";
pub const UPLOADER: &'static str = "uploader";
pub const PREVIEWER_UPLOADER: &'static str = "previewer uploader";
pub const VIEWER_UPLOADER: &'static str = "viewer uploader";
pub const CO_OWNER: &'static str = "co-owner";
pub const OWNER: &'static str = "owner";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct CollaborationStatus(pub String);
impl CollaborationStatus {
pub const ACCEPTED: &'static str = "accepted";
pub const PENDING: &'static str = "pending";
pub const REJECTED: &'static str = "rejected";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct AcceptanceRequirementsStatusTermsOfServiceRequirement {
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub is_accepted: Option<Option<bool>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub terms_of_service: Option<TermsOfServiceBase>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct AcceptanceRequirementsStatusStrongPasswordRequirement {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enterprise_has_strong_password_required_for_external_users: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub user_has_strong_password: Option<Option<bool>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct AcceptanceRequirementsStatusTwoFactorAuthenticationRequirement {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enterprise_has_two_factor_auth_enabled: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub user_has_two_factor_authentication_enabled: Option<Option<bool>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct CollaborationAcceptanceRequirementsStatus {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub terms_of_service_requirement: Option<AcceptanceRequirementsStatusTermsOfServiceRequirement>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub strong_password_requirement: Option<AcceptanceRequirementsStatusStrongPasswordRequirement>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub two_factor_authentication_requirement:
Option<AcceptanceRequirementsStatusTwoFactorAuthenticationRequirement>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct EnterpriseType(pub String);
impl EnterpriseType {
pub const ENTERPRISE: &'static str = "enterprise";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct CollaborationAllowlistEntryEnterprise {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<EnterpriseType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct VariableValueType(pub String);
impl VariableValueType {
pub const USER: &'static str = "user";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct CollaboratorVariableVariableValue {
pub r#type: VariableValueType,
pub id: String,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct CollectionType(pub String);
impl CollectionType {
pub const COLLECTION: &'static str = "collection";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct CollectionName(pub String);
impl CollectionName {
pub const FAVORITES: &'static str = "Favorites";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct CollectionCollectionType(pub String);
impl CollectionCollectionType {
pub const FAVORITES: &'static str = "favorites";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct OrderDirection(pub String);
impl OrderDirection {
pub const ASC: &'static str = "ASC";
pub const DESC: &'static str = "DESC";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct CollectionsOrder {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub by: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub direction: Option<OrderDirection>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct CommentItem {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ConflictErrorContextInfo {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conflicts: Option<Vec<FileConflict>>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct EventSourceItemType(pub String);
impl EventSourceItemType {
pub const FILE: &'static str = "file";
pub const FOLDER: &'static str = "folder";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FilePathCollection {
pub total_count: i64,
pub entries: Vec<FolderMini>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SharedLinkAccess(pub String);
impl SharedLinkAccess {
pub const OPEN: &'static str = "open";
pub const COMPANY: &'static str = "company";
pub const COLLABORATORS: &'static str = "collaborators";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SharedLinkEffectivePermission(pub String);
impl SharedLinkEffectivePermission {
pub const CAN_EDIT: &'static str = "can_edit";
pub const CAN_DOWNLOAD: &'static str = "can_download";
pub const CAN_PREVIEW: &'static str = "can_preview";
pub const NO_ACCESS: &'static str = "no_access";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SharedLinkPermissions {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_download: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_preview: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_edit: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub shared_links_option: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub default_shared_link_type: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub notes_shared_link_option: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub default_notes_shared_link_type: Option<Option<String>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileSharedLink {
pub url: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub download_url: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub vanity_url: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub vanity_name: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub access: Option<SharedLinkAccess>,
pub effective_access: SharedLinkAccess,
pub effective_permission: SharedLinkEffectivePermission,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub unshared_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
pub is_password_enabled: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub permissions: Option<SharedLinkPermissions>,
pub download_count: i64,
pub preview_count: i64,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct FileItemStatus(pub String);
impl FileItemStatus {
pub const ACTIVE: &'static str = "active";
pub const TRASHED: &'static str = "trashed";
pub const DELETED: &'static str = "deleted";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileFullPermissions {
pub can_delete: bool,
pub can_download: bool,
pub can_invite_collaborator: bool,
pub can_rename: bool,
pub can_set_share_access: bool,
pub can_share: bool,
pub can_annotate: bool,
pub can_comment: bool,
pub can_preview: bool,
pub can_upload: bool,
pub can_view_annotations_all: bool,
pub can_view_annotations_self: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_apply_watermark: Option<bool>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct LockType(pub String);
impl LockType {
pub const LOCK: &'static str = "lock";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct LockAppType(pub String);
impl LockAppType {
pub const GSUITE: &'static str = "gsuite";
pub const OFFICE_WOPI: &'static str = "office_wopi";
pub const OFFICE_WOPIPLUS: &'static str = "office_wopiplus";
pub const OTHER: &'static str = "other";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileFullLock {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<LockType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_by: Option<UserMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expired_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_download_prevented: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub app_type: Option<Option<LockAppType>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileFullExpiringEmbedLink {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub access_token: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expires_in: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub token_type: Option<AccessTokenTokenType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub restricted_to: Option<Vec<ResourceScope>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileFullWatermarkInfo {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_watermarked: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_watermark_inherited: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_watermarked_by_access_policy: Option<bool>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct FileFullAllowedInviteeRoles(pub String);
impl FileFullAllowedInviteeRoles {
pub const EDITOR: &'static str = "editor";
pub const VIEWER: &'static str = "viewer";
pub const PREVIEWER: &'static str = "previewer";
pub const UPLOADER: &'static str = "uploader";
pub const PREVIEWER_UPLOADER: &'static str = "previewer uploader";
pub const VIEWER_UPLOADER: &'static str = "viewer uploader";
pub const CO_OWNER: &'static str = "co-owner";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct EntriesContent {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub url_template: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct EntriesInfo {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct EntriesProperties {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dimensions: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub paged: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub thumb: Option<String>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct StatusState(pub String);
impl StatusState {
pub const SUCCESS: &'static str = "success";
pub const VIEWABLE: &'static str = "viewable";
pub const PENDING: &'static str = "pending";
pub const NONE: &'static str = "none";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct EntriesStatus {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub state: Option<StatusState>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct RepresentationsEntries {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content: Option<EntriesContent>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub info: Option<EntriesInfo>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<EntriesProperties>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub representation: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<EntriesStatus>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileFullRepresentations {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub entries: Option<Vec<RepresentationsEntries>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileFullClassification {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub definition: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub color: Option<String>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct FileFullSharedLinkPermissionOptions(pub String);
impl FileFullSharedLinkPermissionOptions {
pub const CAN_PREVIEW: &'static str = "can_preview";
pub const CAN_DOWNLOAD: &'static str = "can_download";
pub const CAN_EDIT: &'static str = "can_edit";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct FolderType(pub String);
impl FolderType {
pub const FOLDER: &'static str = "folder";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct FileVersionType(pub String);
impl FileVersionType {
pub const FILE_VERSION: &'static str = "file_version";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct FolderUploadEmailAccess(pub String);
impl FolderUploadEmailAccess {
pub const OPEN: &'static str = "open";
pub const COLLABORATORS: &'static str = "collaborators";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FolderFolderUploadEmail {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub access: Option<FolderUploadEmailAccess>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct FolderFullSyncState(pub String);
impl FolderFullSyncState {
pub const SYNCED: &'static str = "synced";
pub const NOT_SYNCED: &'static str = "not_synced";
pub const PARTIALLY_SYNCED: &'static str = "partially_synced";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FolderFullPermissions {
pub can_delete: bool,
pub can_download: bool,
pub can_invite_collaborator: bool,
pub can_rename: bool,
pub can_set_share_access: bool,
pub can_share: bool,
pub can_upload: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_apply_watermark: Option<bool>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct GroupType(pub String);
impl GroupType {
pub const GROUP: &'static str = "group";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct GroupGroupType(pub String);
impl GroupGroupType {
pub const MANAGED_GROUP: &'static str = "managed_group";
pub const ALL_USERS_GROUP: &'static str = "all_users_group";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct LegalHoldPolicyType(pub String);
impl LegalHoldPolicyType {
pub const LEGAL_HOLD_POLICY: &'static str = "legal_hold_policy";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct LegalHoldPolicyAssignedItemType(pub String);
impl LegalHoldPolicyAssignedItemType {
pub const FILE: &'static str = "file";
pub const FILE_VERSION: &'static str = "file_version";
pub const FOLDER: &'static str = "folder";
pub const USER: &'static str = "user";
pub const OWNERSHIP: &'static str = "ownership";
pub const INTERACTIONS: &'static str = "interactions";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct LegalHoldPolicyAssignmentType(pub String);
impl LegalHoldPolicyAssignmentType {
pub const LEGAL_HOLD_POLICY_ASSIGNMENT: &'static str = "legal_hold_policy_assignment";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct MetadataCascadePolicyParent {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<FolderType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct ResourceScopeScope(pub String);
impl ResourceScopeScope {
pub const ANNOTATION_EDIT: &'static str = "annotation_edit";
pub const ANNOTATION_VIEW_ALL: &'static str = "annotation_view_all";
pub const ANNOTATION_VIEW_SELF: &'static str = "annotation_view_self";
pub const BASE_EXPLORER: &'static str = "base_explorer";
pub const BASE_PICKER: &'static str = "base_picker";
pub const BASE_PREVIEW: &'static str = "base_preview";
pub const BASE_UPLOAD: &'static str = "base_upload";
pub const ITEM_DELETE: &'static str = "item_delete";
pub const ITEM_DOWNLOAD: &'static str = "item_download";
pub const ITEM_PREVIEW: &'static str = "item_preview";
pub const ITEM_RENAME: &'static str = "item_rename";
pub const ITEM_SHARE: &'static str = "item_share";
pub const ITEM_UPLOAD: &'static str = "item_upload";
pub const ITEM_READ: &'static str = "item_read";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct RetentionPolicyType(pub String);
impl RetentionPolicyType {
pub const RETENTION_POLICY: &'static str = "retention_policy";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct RetentionPolicyDispositionAction(pub String);
impl RetentionPolicyDispositionAction {
pub const PERMANENTLY_DELETE: &'static str = "permanently_delete";
pub const REMOVE_RETENTION: &'static str = "remove_retention";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct RetentionPolicyMaxExtensionLengthRequestVariant0(pub String);
impl RetentionPolicyMaxExtensionLengthRequestVariant0 {
pub const NONE: &'static str = "none";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct ShieldInformationBarrierType(pub String);
impl ShieldInformationBarrierType {
pub const SHIELD_INFORMATION_BARRIER: &'static str = "shield_information_barrier";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct ShieldInformationBarrierSegmentType(pub String);
impl ShieldInformationBarrierSegmentType {
pub const SHIELD_INFORMATION_BARRIER_SEGMENT: &'static str =
"shield_information_barrier_segment";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ShieldInformationBarrierSegmentMemberShieldInformationBarrierSegment {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<ShieldInformationBarrierSegmentType>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestCreateSignerRole(pub String);
impl SignRequestCreateSignerRole {
pub const SIGNER: &'static str = "signer";
pub const APPROVER: &'static str = "approver";
pub const FINAL_COPY_READER: &'static str = "final_copy_reader";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestSignerInputContentType(pub String);
impl SignRequestSignerInputContentType {
pub const SIGNATURE: &'static str = "signature";
pub const INITIAL: &'static str = "initial";
pub const STAMP: &'static str = "stamp";
pub const DATE: &'static str = "date";
pub const CHECKBOX: &'static str = "checkbox";
pub const TEXT: &'static str = "text";
pub const FULL_NAME: &'static str = "full_name";
pub const FIRST_NAME: &'static str = "first_name";
pub const LAST_NAME: &'static str = "last_name";
pub const COMPANY: &'static str = "company";
pub const TITLE: &'static str = "title";
pub const EMAIL: &'static str = "email";
pub const ATTACHMENT: &'static str = "attachment";
pub const RADIO: &'static str = "radio";
pub const DROPDOWN: &'static str = "dropdown";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestSignerInputCustomValidationValidationType(pub String);
impl SignRequestSignerInputCustomValidationValidationType {
pub const CUSTOM: &'static str = "custom";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestSignerInputDateAsiaValidationValidationType(pub String);
impl SignRequestSignerInputDateAsiaValidationValidationType {
pub const DATE_ASIA: &'static str = "date_asia";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestSignerInputDateEUValidationValidationType(pub String);
impl SignRequestSignerInputDateEUValidationValidationType {
pub const DATE_EU: &'static str = "date_eu";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestSignerInputDateISOValidationValidationType(pub String);
impl SignRequestSignerInputDateISOValidationValidationType {
pub const DATE_ISO: &'static str = "date_iso";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestSignerInputDateUSValidationValidationType(pub String);
impl SignRequestSignerInputDateUSValidationValidationType {
pub const DATE_US: &'static str = "date_us";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestSignerInputEmailValidationValidationType(pub String);
impl SignRequestSignerInputEmailValidationValidationType {
pub const EMAIL: &'static str = "email";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestSignerInputNumberWithCommaValidationValidationType(pub String);
impl SignRequestSignerInputNumberWithCommaValidationValidationType {
pub const NUMBER_WITH_COMMA: &'static str = "number_with_comma";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestSignerInputNumberWithPeriodValidationValidationType(pub String);
impl SignRequestSignerInputNumberWithPeriodValidationValidationType {
pub const NUMBER_WITH_PERIOD: &'static str = "number_with_period";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestSignerInputSSNValidationValidationType(pub String);
impl SignRequestSignerInputSSNValidationValidationType {
pub const SSN: &'static str = "ssn";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestSignerInputZIP4ValidationValidationType(pub String);
impl SignRequestSignerInputZIP4ValidationValidationType {
pub const ZIP_4: &'static str = "zip_4";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestSignerInputZIPValidationValidationType(pub String);
impl SignRequestSignerInputZIPValidationValidationType {
pub const ZIP: &'static str = "zip";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct StoragePolicyType(pub String);
impl StoragePolicyType {
pub const STORAGE_POLICY: &'static str = "storage_policy";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct TaskType(pub String);
impl TaskType {
pub const TASK: &'static str = "task";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct TaskAssignmentType(pub String);
impl TaskAssignmentType {
pub const TASK_ASSIGNMENT: &'static str = "task_assignment";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct TaskAssignmentResolutionState(pub String);
impl TaskAssignmentResolutionState {
pub const COMPLETED: &'static str = "completed";
pub const INCOMPLETE: &'static str = "incomplete";
pub const APPROVED: &'static str = "approved";
pub const REJECTED: &'static str = "rejected";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct TermsOfServiceType(pub String);
impl TermsOfServiceType {
pub const TERMS_OF_SERVICE: &'static str = "terms_of_service";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct PathCollectionEntries {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<FolderType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub sequence_id: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub etag: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct TrashFilePathCollection {
pub total_count: i64,
pub entries: Vec<PathCollectionEntries>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct TrashWebLinkType(pub String);
impl TrashWebLinkType {
pub const WEB_LINK: &'static str = "web_link";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct UserStatus(pub String);
impl UserStatus {
pub const ACTIVE: &'static str = "active";
pub const INACTIVE: &'static str = "inactive";
pub const CANNOT_DELETE_EDIT: &'static str = "cannot_delete_edit";
pub const CANNOT_DELETE_EDIT_UPLOAD: &'static str = "cannot_delete_edit_upload";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UserNotificationEmail {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_confirmed: Option<bool>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct WatermarkWatermark {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct PutIdParent {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UpdateFileRequestSharedLinkPermissions {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_download: Option<bool>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct PutIdSharedLink {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub access: Option<SharedLinkAccess>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub password: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub vanity_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub unshared_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub permissions: Option<UpdateFileRequestSharedLinkPermissions>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct PostFileIdParent {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct CreateFileRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub parent: Option<PostFileIdParent>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct AttributesParent {
pub id: String,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct PutOp(pub String);
impl PutOp {
pub const REPLACE: &'static str = "replace";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct PutPath(pub String);
impl PutPath {
pub const BOX_SECURITY_CLASSIFICATION_KEY: &'static str = "/Box__Security__Classification__Key";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UpdateFileClassificationRequest {
pub op: PutOp,
pub path: PutPath,
pub value: String,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct CreateFileClassificationRequest {
#[serde(
rename = "Box__Security__Classification__Key",
default,
skip_serializing_if = "Option::is_none"
)]
pub box_security_classification_key: Option<String>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct GetFileIdMetadataIdScope(pub String);
impl GetFileIdMetadataIdScope {
pub const GLOBAL: &'static str = "global";
pub const ENTERPRISE: &'static str = "enterprise";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct PutFileIdMetadataIdOp(pub String);
impl PutFileIdMetadataIdOp {
pub const ADD: &'static str = "add";
pub const REPLACE: &'static str = "replace";
pub const REMOVE: &'static str = "remove";
pub const TEST: &'static str = "test";
pub const MOVE: &'static str = "move";
pub const COPY: &'static str = "copy";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UpdateFileMetadataRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub op: Option<PutFileIdMetadataIdOp>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub path: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<MetadataInstanceValue>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub from: Option<String>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct WatermarkImprint(pub String);
impl WatermarkImprint {
pub const DEFAULT: &'static str = "default";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct PutFileIdWatermarkWatermark {
pub imprint: WatermarkImprint,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UpdateFileWatermarkRequest {
pub watermark: PutFileIdWatermarkWatermark,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct GetDirection(pub String);
impl GetDirection {
pub const DESC: &'static str = "DESC";
pub const ASC: &'static str = "ASC";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UpdateFileAddSharedLinkRequestSharedLinkPermissions {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_download: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_preview: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_edit: Option<bool>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct PutFileIdAddSharedLinkSharedLink {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub access: Option<SharedLinkAccess>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub password: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub vanity_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub unshared_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub permissions: Option<UpdateFileAddSharedLinkRequestSharedLinkPermissions>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UpdateFileAddSharedLinkRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub shared_link: Option<PutFileIdAddSharedLinkSharedLink>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UpdateFileRemoveSharedLinkRequest {
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub shared_link: Option<Option<std::collections::HashMap<String, serde_json::Value>>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct PutSkillInvocationIdFile {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<AiCitationType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct DocGenBatchBase {
pub id: String,
pub r#type: DocGenBatchBaseType,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct DocGenJob {
pub id: String,
pub r#type: DocGenJobType,
pub batch: DocGenBatchBase,
pub template_file: FileReference,
pub template_file_version: FileVersionBase,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub output_file: Option<Option<FileReference>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub output_file_version: Option<Option<FileVersionBase>>,
pub status: DocGenJobStatus,
pub output_type: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub failures: Option<Option<DocGenJobFailures>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct DocGenJobBase {
pub id: String,
pub r#type: DocGenJobType,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct DocGenJobs {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub next_marker: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub prev_marker: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub entries: Option<Vec<DocGenJob>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct DocGenTagsProcessingMessage {
pub message: String,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct EnterpriseConfigurationItem {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_used: Option<bool>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct EnterpriseReference {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<EnterpriseReferenceType>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileReference {
pub r#type: FileReferenceType,
pub id: String,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct HubDocumentBlock {
pub id: String,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub parent_id: Option<Option<String>>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct DocGenBatchBaseType(pub String);
impl DocGenBatchBaseType {
pub const DOCGEN_BATCH: &'static str = "docgen_batch";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct DocGenJobType(pub String);
impl DocGenJobType {
pub const DOCGEN_JOB: &'static str = "docgen_job";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct DocGenJobStatus(pub String);
impl DocGenJobStatus {
pub const SUBMITTED: &'static str = "submitted";
pub const COMPLETED: &'static str = "completed";
pub const FAILED: &'static str = "failed";
pub const COMPLETED_WITH_ERROR: &'static str = "completed_with_error";
pub const PENDING: &'static str = "pending";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct DocGenJobFailures {
pub errors: Vec<String>,
pub warnings: Vec<String>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct EnterpriseReferenceType(pub String);
impl EnterpriseReferenceType {
pub const ENTERPRISE: &'static str = "enterprise";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct FileReferenceType(pub String);
impl FileReferenceType {
pub const FILE: &'static str = "file";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct FileVersionBaseType(pub String);
impl FileVersionBaseType {
pub const FILE_VERSION: &'static str = "file_version";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct GroupBaseType(pub String);
impl GroupBaseType {
pub const GROUP: &'static str = "group";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct GroupMiniGroupType(pub String);
impl GroupMiniGroupType {
pub const MANAGED_GROUP: &'static str = "managed_group";
pub const ALL_USERS_GROUP: &'static str = "all_users_group";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct HubType(pub String);
impl HubType {
pub const HUBS: &'static str = "hubs";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct HubCollaborationUserType(pub String);
impl HubCollaborationUserType {
pub const USER: &'static str = "user";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct TermsOfServiceBaseType(pub String);
impl TermsOfServiceBaseType {
pub const TERMS_OF_SERVICE: &'static str = "terms_of_service";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct FolderReferenceType(pub String);
impl FolderReferenceType {
pub const FOLDER: &'static str = "folder";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct UserBaseType(pub String);
impl UserBaseType {
pub const USER: &'static str = "user";
}