asana 0.1.1

asana bindings for rust
Documentation
/*
 * Asana
 *
 * This is the interface for interacting with the [Asana Platform](https://developers.asana.com). Our API reference is generated from our [OpenAPI spec] (https://raw.githubusercontent.com/Asana/developer-docs/master/defs/asana_oas.yaml).
 *
 * The version of the OpenAPI document: 1.0
 *
 * Generated by: https://openapi-generator.tech
 */

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct StoryResponse {
    /// Globally unique identifier of the resource, as a string.
    #[serde(rename = "gid", skip_serializing_if = "Option::is_none")]
    pub gid: Option<String>,
    /// The base type of this resource.
    #[serde(rename = "resource_type", skip_serializing_if = "Option::is_none")]
    pub resource_type: Option<String>,
    /// The time at which this resource was created.
    #[serde(rename = "created_at", skip_serializing_if = "Option::is_none")]
    pub created_at: Option<String>,
    /// The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.
    #[serde(
        rename = "resource_subtype",
        skip_serializing_if = "Option::is_none"
    )]
    pub resource_subtype: Option<String>,
    /// The plain text of the comment to add. Cannot be used with html_text.
    #[serde(rename = "text", skip_serializing_if = "Option::is_none")]
    pub text: Option<String>,
    /// [Opt In](/docs/input-output-options). HTML formatted text for a comment. This will not include the name of the creator.
    #[serde(rename = "html_text", skip_serializing_if = "Option::is_none")]
    pub html_text: Option<String>,
    /// *Conditional*. Whether the story should be pinned on the resource.
    #[serde(rename = "is_pinned", skip_serializing_if = "Option::is_none")]
    pub is_pinned: Option<bool>,
    /// The name of the sticker in this story. `null` if there is no sticker.
    #[serde(rename = "sticker_name", skip_serializing_if = "Option::is_none")]
    pub sticker_name: Option<StickerName>,
    #[serde(rename = "created_by", skip_serializing_if = "Option::is_none")]
    pub created_by: Option<Box<crate::models::UserCompact>>,
    /// *Conditional*. Whether the text of the story has been edited after creation.
    #[serde(rename = "is_edited", skip_serializing_if = "Option::is_none")]
    pub is_edited: Option<bool>,
    /// *Deprecated - please use likes instead* *Conditional*. True if the story is hearted by the authorized user, false if not.
    #[serde(rename = "hearted", skip_serializing_if = "Option::is_none")]
    pub hearted: Option<bool>,
    /// *Deprecated - please use likes instead*  *Conditional*. Array of likes for users who have hearted this story.
    #[serde(rename = "hearts", skip_serializing_if = "Option::is_none")]
    pub hearts: Option<Vec<crate::models::Like>>,
    /// *Deprecated - please use likes instead*  *Conditional*. The number of users who have hearted this story.
    #[serde(rename = "num_hearts", skip_serializing_if = "Option::is_none")]
    pub num_hearts: Option<i32>,
    /// *Conditional*. True if the story is liked by the authorized user, false if not.
    #[serde(rename = "liked", skip_serializing_if = "Option::is_none")]
    pub liked: Option<bool>,
    /// *Conditional*. Array of likes for users who have liked this story.
    #[serde(rename = "likes", skip_serializing_if = "Option::is_none")]
    pub likes: Option<Vec<crate::models::Like>>,
    /// *Conditional*. The number of users who have liked this story.
    #[serde(rename = "num_likes", skip_serializing_if = "Option::is_none")]
    pub num_likes: Option<i32>,
    /// *Conditional*. A collection of previews to be displayed in the story.  *Note: This property only exists for comment stories.*
    #[serde(rename = "previews", skip_serializing_if = "Option::is_none")]
    pub previews: Option<Vec<crate::models::Preview>>,
    /// *Conditional*'
    #[serde(rename = "old_name", skip_serializing_if = "Option::is_none")]
    pub old_name: Option<String>,
    /// *Conditional*
    #[serde(rename = "new_name", skip_serializing_if = "Option::is_none")]
    pub new_name: Option<String>,
    #[serde(rename = "old_dates", skip_serializing_if = "Option::is_none")]
    pub old_dates: Option<Box<crate::models::StoryResponseDates>>,
    #[serde(rename = "new_dates", skip_serializing_if = "Option::is_none")]
    pub new_dates: Option<Box<crate::models::StoryResponseDates>>,
    /// *Conditional*
    #[serde(
        rename = "old_resource_subtype",
        skip_serializing_if = "Option::is_none"
    )]
    pub old_resource_subtype: Option<String>,
    /// *Conditional*
    #[serde(
        rename = "new_resource_subtype",
        skip_serializing_if = "Option::is_none"
    )]
    pub new_resource_subtype: Option<String>,
    #[serde(rename = "story", skip_serializing_if = "Option::is_none")]
    pub story: Option<Box<crate::models::StoryCompact>>,
    #[serde(rename = "assignee", skip_serializing_if = "Option::is_none")]
    pub assignee: Option<Box<crate::models::UserCompact>>,
    #[serde(rename = "follower", skip_serializing_if = "Option::is_none")]
    pub follower: Option<Box<crate::models::UserCompact>>,
    #[serde(rename = "old_section", skip_serializing_if = "Option::is_none")]
    pub old_section: Option<Box<crate::models::SectionCompact>>,
    #[serde(rename = "new_section", skip_serializing_if = "Option::is_none")]
    pub new_section: Option<Box<crate::models::SectionCompact>>,
    #[serde(rename = "task", skip_serializing_if = "Option::is_none")]
    pub task: Option<Box<crate::models::TaskCompact>>,
    #[serde(rename = "project", skip_serializing_if = "Option::is_none")]
    pub project: Option<Box<crate::models::ProjectCompact>>,
    #[serde(rename = "tag", skip_serializing_if = "Option::is_none")]
    pub tag: Option<Box<crate::models::TagCompact>>,
    #[serde(rename = "custom_field", skip_serializing_if = "Option::is_none")]
    pub custom_field: Option<Box<crate::models::CustomFieldCompact>>,
    /// *Conditional*
    #[serde(
        rename = "old_text_value",
        skip_serializing_if = "Option::is_none"
    )]
    pub old_text_value: Option<String>,
    /// *Conditional*
    #[serde(
        rename = "new_text_value",
        skip_serializing_if = "Option::is_none"
    )]
    pub new_text_value: Option<String>,
    /// *Conditional*
    #[serde(
        rename = "old_number_value",
        skip_serializing_if = "Option::is_none"
    )]
    pub old_number_value: Option<i32>,
    /// *Conditional*
    #[serde(
        rename = "new_number_value",
        skip_serializing_if = "Option::is_none"
    )]
    pub new_number_value: Option<i32>,
    #[serde(
        rename = "old_enum_value",
        skip_serializing_if = "Option::is_none"
    )]
    pub old_enum_value: Option<Box<crate::models::EnumOption>>,
    #[serde(
        rename = "new_enum_value",
        skip_serializing_if = "Option::is_none"
    )]
    pub new_enum_value: Option<Box<crate::models::EnumOption>>,
    /// *Conditional*
    #[serde(
        rename = "new_approval_status",
        skip_serializing_if = "Option::is_none"
    )]
    pub new_approval_status: Option<String>,
    /// *Conditional*
    #[serde(
        rename = "old_approval_status",
        skip_serializing_if = "Option::is_none"
    )]
    pub old_approval_status: Option<String>,
    #[serde(rename = "duplicate_of", skip_serializing_if = "Option::is_none")]
    pub duplicate_of: Option<Box<crate::models::TaskCompact>>,
    #[serde(
        rename = "duplicated_from",
        skip_serializing_if = "Option::is_none"
    )]
    pub duplicated_from: Option<Box<crate::models::TaskCompact>>,
    #[serde(rename = "dependency", skip_serializing_if = "Option::is_none")]
    pub dependency: Option<Box<crate::models::TaskCompact>>,
    /// The component of the Asana product the user used to trigger the story.
    #[serde(rename = "source", skip_serializing_if = "Option::is_none")]
    pub source: Option<Source>,
    /// The object this story is associated with. Currently may only be a task.
    #[serde(rename = "target", skip_serializing_if = "Option::is_none")]
    pub target: Option<Box<serde_json::Value>>,
}

impl StoryResponse {
    pub fn new() -> StoryResponse {
        StoryResponse {
            gid: None,
            resource_type: None,
            created_at: None,
            resource_subtype: None,
            text: None,
            html_text: None,
            is_pinned: None,
            sticker_name: None,
            created_by: None,
            is_edited: None,
            hearted: None,
            hearts: None,
            num_hearts: None,
            liked: None,
            likes: None,
            num_likes: None,
            previews: None,
            old_name: None,
            new_name: None,
            old_dates: None,
            new_dates: None,
            old_resource_subtype: None,
            new_resource_subtype: None,
            story: None,
            assignee: None,
            follower: None,
            old_section: None,
            new_section: None,
            task: None,
            project: None,
            tag: None,
            custom_field: None,
            old_text_value: None,
            new_text_value: None,
            old_number_value: None,
            new_number_value: None,
            old_enum_value: None,
            new_enum_value: None,
            new_approval_status: None,
            old_approval_status: None,
            duplicate_of: None,
            duplicated_from: None,
            dependency: None,
            source: None,
            target: None,
        }
    }
}

/// The name of the sticker in this story. `null` if there is no sticker.
#[derive(
    Clone,
    Copy,
    Debug,
    Eq,
    PartialEq,
    Ord,
    PartialOrd,
    Hash,
    Serialize,
    Deserialize
)]
pub enum StickerName {
    #[serde(rename = "green_checkmark")]
    GreenCheckmark,
    #[serde(rename = "people_dancing")]
    PeopleDancing,
    #[serde(rename = "dancing_unicorn")]
    DancingUnicorn,
    #[serde(rename = "heart")]
    Heart,
    #[serde(rename = "party_popper")]
    PartyPopper,
    #[serde(rename = "people_waving_flags")]
    PeopleWavingFlags,
    #[serde(rename = "splashing_narwhal")]
    SplashingNarwhal,
    #[serde(rename = "trophy")]
    Trophy,
    #[serde(rename = "yeti_riding_unicorn")]
    YetiRidingUnicorn,
    #[serde(rename = "celebrating_people")]
    CelebratingPeople,
    #[serde(rename = "determined_climbers")]
    DeterminedClimbers,
    #[serde(rename = "phoenix_spreading_love")]
    PhoenixSpreadingLove,
}
/// The component of the Asana product the user used to trigger the story.
#[derive(
    Clone,
    Copy,
    Debug,
    Eq,
    PartialEq,
    Ord,
    PartialOrd,
    Hash,
    Serialize,
    Deserialize
)]
pub enum Source {
    #[serde(rename = "web")]
    Web,
    #[serde(rename = "email")]
    Email,
    #[serde(rename = "mobile")]
    Mobile,
    #[serde(rename = "api")]
    Api,
    #[serde(rename = "unknown")]
    Unknown,
}