/*
 * VRChat API Documentation
 *
 *
 * Contact: me@ruby.js.org
 * Generated by: https://openapi-generator.tech
 */




#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
pub struct World {
    #[serde(rename = "assetUrl")]
    pub asset_url: String,
    #[serde(rename = "assetUrlObject")]
    pub asset_url_object: serde_json::Value,
    #[serde(rename = "authorId")]
    pub author_id: String,
    #[serde(rename = "authorName")]
    pub author_name: String,
    #[serde(rename = "capacity")]
    pub capacity: i32,
    #[serde(rename = "created_at")]
    pub created_at: String,
    #[serde(rename = "description")]
    pub description: String,
    #[serde(rename = "favorites", skip_serializing_if = "Option::is_none")]
    pub favorites: Option<i32>,
    #[serde(rename = "featured")]
    pub featured: bool,
    #[serde(rename = "heat")]
    pub heat: i32,
    #[serde(rename = "id")]
    pub id: String,
    #[serde(rename = "imageUrl")]
    pub image_url: String,
    #[serde(rename = "instances", skip_serializing_if = "Option::is_none")]
    pub instances: Option<Vec<Vec<serde_json::Value>>>,
    #[serde(rename = "labsPublicationDate")]
    pub labs_publication_date: String,
    #[serde(rename = "name")]
    pub name: String,
    #[serde(rename = "namespace")]
    pub namespace: String,
    #[serde(rename = "occupants", skip_serializing_if = "Option::is_none")]
    pub occupants: Option<i32>,
    #[serde(rename = "organization")]
    pub organization: String,
    #[serde(rename = "pluginUrlObject")]
    pub plugin_url_object: serde_json::Value,
    #[serde(rename = "popularity")]
    pub popularity: i32,
    #[serde(rename = "previewYoutubeId", skip_serializing_if = "Option::is_none")]
    pub preview_youtube_id: Option<String>,
    #[serde(rename = "privateOccupants", skip_serializing_if = "Option::is_none")]
    pub private_occupants: Option<i32>,
    #[serde(rename = "publicOccupants", skip_serializing_if = "Option::is_none")]
    pub public_occupants: Option<i32>,
    #[serde(rename = "publicationDate")]
    pub publication_date: String,
    #[serde(rename = "releaseStatus")]
    pub release_status: crate::models::ReleaseStatus,
    #[serde(rename = "tags")]
    pub tags: Vec<String>,
    #[serde(rename = "thumbnailImageUrl")]
    pub thumbnail_image_url: String,
    #[serde(rename = "unityPackageUrlObject")]
    pub unity_package_url_object: serde_json::Value,
    #[serde(rename = "unityPackages")]
    pub unity_packages: Vec<crate::models::UnityPackage>,
    #[serde(rename = "updated_at")]
    pub updated_at: String,
    #[serde(rename = "version")]
    pub version: i32,
    #[serde(rename = "visits")]
    pub visits: i32,
}

impl World {
    pub fn new(asset_url: String, asset_url_object: serde_json::Value, author_id: String, author_name: String, capacity: i32, created_at: String, description: String, featured: bool, heat: i32, id: String, image_url: String, labs_publication_date: String, name: String, namespace: String, organization: String, plugin_url_object: serde_json::Value, popularity: i32, publication_date: String, release_status: crate::models::ReleaseStatus, tags: Vec<String>, thumbnail_image_url: String, unity_package_url_object: serde_json::Value, unity_packages: Vec<crate::models::UnityPackage>, updated_at: String, version: i32, visits: i32) -> World {
        World {
            asset_url,
            asset_url_object,
            author_id,
            author_name,
            capacity,
            created_at,
            description,
            favorites: None,
            featured,
            heat,
            id,
            image_url,
            instances: None,
            labs_publication_date,
            name,
            namespace,
            occupants: None,
            organization,
            plugin_url_object,
            popularity,
            preview_youtube_id: None,
            private_occupants: None,
            public_occupants: None,
            publication_date,
            release_status,
            tags,
            thumbnail_image_url,
            unity_package_url_object,
            unity_packages,
            updated_at,
            version,
            visits,
        }
    }
}


