use super::*;
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct PutCollaborationIdStatus(pub String);
impl PutCollaborationIdStatus {
pub const PENDING: &'static str = "pending";
pub const ACCEPTED: &'static str = "accepted";
pub const REJECTED: &'static str = "rejected";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UpdateCollaborationRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub role: Option<CollaborationRole>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<PutCollaborationIdStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_view_path: Option<bool>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct PostCollaborationsItem {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<EventSourceItemType>,
#[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 AccessibleByType(pub String);
impl AccessibleByType {
pub const USER: &'static str = "user";
pub const GROUP: &'static str = "group";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct PostCollaborationsAccessibleBy {
pub r#type: AccessibleByType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: 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 CreateCollaborationsRequest {
pub item: PostCollaborationsItem,
pub accessible_by: PostCollaborationsAccessibleBy,
pub role: FileFullAllowedInviteeRoles,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_access_only: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_view_path: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
}