/*
 * Tapis Applications API
 *
 * The Tapis Applications API provides for management of Tapis applications including permissions.
 *
 * The version of the OpenAPI document: 25Q4.0
 * Contact: cicsupport@tacc.utexas.edu
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct TapisApp {
    #[serde(rename = "tenant", skip_serializing_if = "Option::is_none")]
    pub tenant: Option<String>,
    #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(rename = "version", skip_serializing_if = "Option::is_none")]
    pub version: Option<String>,
    #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    #[serde(rename = "owner", skip_serializing_if = "Option::is_none")]
    pub owner: Option<String>,
    #[serde(rename = "enabled", skip_serializing_if = "Option::is_none")]
    pub enabled: Option<bool>,
    #[serde(rename = "versionEnabled", skip_serializing_if = "Option::is_none")]
    pub version_enabled: Option<bool>,
    #[serde(rename = "locked", skip_serializing_if = "Option::is_none")]
    pub locked: Option<bool>,
    #[serde(rename = "isPublic", skip_serializing_if = "Option::is_none")]
    pub is_public: Option<bool>,
    #[serde(rename = "sharedWithUsers", skip_serializing_if = "Option::is_none")]
    pub shared_with_users: Option<Vec<String>>,
    #[serde(rename = "runtime", skip_serializing_if = "Option::is_none")]
    pub runtime: Option<models::RuntimeEnum>,
    #[serde(rename = "runtimeVersion", skip_serializing_if = "Option::is_none")]
    pub runtime_version: Option<String>,
    #[serde(rename = "runtimeOptions", skip_serializing_if = "Option::is_none")]
    pub runtime_options: Option<Vec<models::RuntimeOptionEnum>>,
    #[serde(rename = "containerImage", skip_serializing_if = "Option::is_none")]
    pub container_image: Option<String>,
    #[serde(rename = "jobType", skip_serializing_if = "Option::is_none")]
    pub job_type: Option<models::JobTypeEnum>,
    #[serde(rename = "maxJobs", skip_serializing_if = "Option::is_none")]
    pub max_jobs: Option<i32>,
    #[serde(rename = "maxJobsPerUser", skip_serializing_if = "Option::is_none")]
    pub max_jobs_per_user: Option<i32>,
    #[serde(rename = "strictFileInputs", skip_serializing_if = "Option::is_none")]
    pub strict_file_inputs: Option<bool>,
    #[serde(rename = "jobAttributes", skip_serializing_if = "Option::is_none")]
    pub job_attributes: Option<Box<models::JobAttributes>>,
    #[serde(rename = "tags", skip_serializing_if = "Option::is_none")]
    pub tags: Option<Vec<String>>,
    #[serde(rename = "notes", skip_serializing_if = "Option::is_none")]
    pub notes: Option<serde_json::Value>,
    #[serde(rename = "sharedAppCtx", skip_serializing_if = "Option::is_none")]
    pub shared_app_ctx: Option<String>,
    #[serde(rename = "uuid", skip_serializing_if = "Option::is_none")]
    pub uuid: Option<uuid::Uuid>,
    #[serde(rename = "deleted", skip_serializing_if = "Option::is_none")]
    pub deleted: Option<bool>,
    #[serde(rename = "created", skip_serializing_if = "Option::is_none")]
    pub created: Option<String>,
    #[serde(rename = "updated", skip_serializing_if = "Option::is_none")]
    pub updated: Option<String>,
}

impl TapisApp {
    pub fn new() -> TapisApp {
        TapisApp {
            tenant: None,
            id: None,
            version: None,
            description: None,
            owner: None,
            enabled: None,
            version_enabled: None,
            locked: None,
            is_public: None,
            shared_with_users: None,
            runtime: None,
            runtime_version: None,
            runtime_options: None,
            container_image: None,
            job_type: None,
            max_jobs: None,
            max_jobs_per_user: None,
            strict_file_inputs: None,
            job_attributes: None,
            tags: None,
            notes: None,
            shared_app_ctx: None,
            uuid: None,
            deleted: None,
            created: None,
            updated: None,
        }
    }
}
