/*
 * 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 ProjectMembershipResponseAllOf {
    #[serde(rename = "project", skip_serializing_if = "Option::is_none")]
    pub project: Option<Box<crate::models::ProjectCompact>>,
    /// Whether the user has full access to the project or has comment-only access.
    #[serde(rename = "write_access", skip_serializing_if = "Option::is_none")]
    pub write_access: Option<WriteAccess>,
}

impl ProjectMembershipResponseAllOf {
    pub fn new() -> ProjectMembershipResponseAllOf {
        ProjectMembershipResponseAllOf { project: None, write_access: None }
    }
}

/// Whether the user has full access to the project or has comment-only access.
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum WriteAccess {
    #[serde(rename = "full_write")]
    FullWrite,
    #[serde(rename = "comment_only")]
    CommentOnly,
}
