/*
 * 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 PortfolioResponseAllOf {
    /// The time at which this resource was created.
    #[serde(rename = "created_at", skip_serializing_if = "Option::is_none")]
    pub created_at: Option<String>,
    #[serde(rename = "created_by", skip_serializing_if = "Option::is_none")]
    pub created_by: Option<Box<crate::models::UserCompact>>,
    /// Array of custom field settings applied to the portfolio.
    #[serde(rename = "custom_field_settings", skip_serializing_if = "Option::is_none")]
    pub custom_field_settings: Option<Vec<crate::models::CustomFieldSettingResponse>>,
    /// The localized day on which this portfolio is due. This takes a date with format YYYY-MM-DD.
    #[serde(rename = "due_on", skip_serializing_if = "Option::is_none")]
    pub due_on: Option<String>,
    #[serde(rename = "members", skip_serializing_if = "Option::is_none")]
    pub members: Option<Vec<crate::models::UserCompact>>,
    #[serde(rename = "owner", skip_serializing_if = "Option::is_none")]
    pub owner: Option<Box<crate::models::UserCompact>>,
    /// The day on which work for this portfolio begins, or null if the portfolio has no start date. This takes a date with `YYYY-MM-DD` format. *Note: `due_on` must be present in the request when setting or unsetting the `start_on` parameter. Additionally, start_on and due_on cannot be the same date.*
    #[serde(rename = "start_on", skip_serializing_if = "Option::is_none")]
    pub start_on: Option<String>,
    #[serde(rename = "workspace", skip_serializing_if = "Option::is_none")]
    pub workspace: Option<Box<crate::models::WorkspaceCompact>>,
    /// A url that points directly to the object within Asana.
    #[serde(rename = "permalink_url", skip_serializing_if = "Option::is_none")]
    pub permalink_url: Option<String>,
}

impl PortfolioResponseAllOf {
    pub fn new() -> PortfolioResponseAllOf {
        PortfolioResponseAllOf {
            created_at: None,
            created_by: None,
            custom_field_settings: None,
            due_on: None,
            members: None,
            owner: None,
            start_on: None,
            workspace: None,
            permalink_url: None,
        }
    }
}
