use serde::{Deserialize, Serialize}; /*
* Cloud Resource Manager API
*
* Creates, reads, and updates metadata for Google Cloud Platform resource containers.
*
* The version of the OpenAPI document: v3
*
* Generated by: https://openapi-generator.tech
*/
use crate::google_rest_apis::cloudresourcemanager_v3::models;
/// Project : A project is a high-level Google Cloud entity. It is a container for ACLs, APIs, App Engine Apps, VMs, and other Google Cloud Platform resources.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Project {
/// Output only. Creation time.
#[serde(rename = "createTime", skip_serializing_if = "Option::is_none")]
pub create_time: Option<String>,
/// Output only. The time at which this resource was requested for deletion.
#[serde(rename = "deleteTime", skip_serializing_if = "Option::is_none")]
pub delete_time: Option<String>,
/// Optional. A user-assigned display name of the project. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `My Project`
#[serde(rename = "displayName", skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
/// Output only. A checksum computed by the server based on the current value of the Project resource. This may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.
#[serde(rename = "etag", skip_serializing_if = "Option::is_none")]
pub etag: Option<String>,
/// Optional. The labels associated with this project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: \\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?. Label values must be between 0 and 63 characters long and must conform to the regular expression (\\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?)?. No more than 64 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: `\"myBusinessDimension\" : \"businessValue\"`
#[serde(rename = "labels", skip_serializing_if = "Option::is_none")]
pub labels: Option<std::collections::HashMap<String, String>>,
/// Output only. The unique resource name of the project. It is an int64 generated number prefixed by \"projects/\". Example: `projects/415104041262`
#[serde(rename = "name", skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
/// Optional. A reference to a parent Resource. eg., `organizations/123` or `folders/876`.
#[serde(rename = "parent", skip_serializing_if = "Option::is_none")]
pub parent: Option<String>,
/// Immutable. The unique, user-assigned id of the project. It must be 6 to 30 lowercase ASCII letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: `tokyo-rain-123`
#[serde(rename = "projectId", skip_serializing_if = "Option::is_none")]
pub project_id: Option<String>,
/// Output only. The project lifecycle state.
#[serde(rename = "state", skip_serializing_if = "Option::is_none")]
pub state: Option<State>,
/// Output only. The most recent time this resource was modified.
#[serde(rename = "updateTime", skip_serializing_if = "Option::is_none")]
pub update_time: Option<String>,
}
impl Project {
/// A project is a high-level Google Cloud entity. It is a container for ACLs, APIs, App Engine Apps, VMs, and other Google Cloud Platform resources.
pub fn new() -> Project {
Project {
create_time: None,
delete_time: None,
display_name: None,
etag: None,
labels: None,
name: None,
parent: None,
project_id: None,
state: None,
update_time: None,
}
}
}
/// Output only. The project lifecycle state.
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum State {
#[serde(rename = "STATE_UNSPECIFIED")]
StateUnspecified,
#[serde(rename = "ACTIVE")]
Active,
#[serde(rename = "DELETE_REQUESTED")]
DeleteRequested,
}
impl Default for State {
fn default() -> State {
Self::StateUnspecified
}
}