use crate::ap::ap_object::{ApObject, ApObjectAddresses, ApObjectMediaType, ApObjectType};
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
pub struct OwnedApObject {
pub ap: ApObject,
#[serde(skip_serializing_if = "Option::is_none")]
pub owner_data: Option<ApObjectOwnerData>,
pub created_at: DateTime<Utc>,
pub modified_at: DateTime<Utc>,
}
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
pub struct ApObjectOwnerData {}
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
pub struct CreateOwnedApObject {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "mediaType")]
#[serde(skip_serializing_if = "Option::is_none")]
pub media_type: Option<ApObjectMediaType>,
#[serde(rename = "type")]
pub ap_type: ApObjectType,
#[serde(skip_serializing_if = "Option::is_none")]
pub content: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub summary: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub owner_data: Option<ApObjectOwnerData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub to: Option<ApObjectAddresses>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cc: Option<ApObjectAddresses>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bto: Option<ApObjectAddresses>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bcc: Option<ApObjectAddresses>,
}
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
pub struct UpdateOwnedApObject {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub content: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub summary: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub owner_data: Option<ApObjectOwnerData>,
}
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
pub enum ApObjectVisibilityType {
Visible,
Invisible,
}
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
pub struct ApObjectSystemInfo {
pub ap_object_id: String,
pub ap_object_type: ApObjectType,
#[serde(skip_serializing_if = "Option::is_none")]
pub actor_owner: Option<String>,
pub visibility: ApObjectVisibilityType,
#[serde(skip_serializing_if = "Option::is_none")]
pub system_data: Option<ApObjectSystemData>,
}
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
pub struct ApObjectSystemData {}
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
pub struct ApObjectPage {
pub min_modified_at: DateTime<Utc>,
pub max_modified_at: DateTime<Utc>,
pub page_values: Vec<ApObject>,
}