use serde::{Deserialize, Serialize}; /*
                                      * Compute Engine API
                                      *
                                      * Creates and runs virtual machines on Google Cloud Platform.
                                      *
                                      * The version of the OpenAPI document: v1
                                      *
                                      * Generated by: https://openapi-generator.tech
                                      */

use crate::google_rest_apis::compute_v1::models;

/// Awsv4Signature : Contains the configurations necessary to generate a signature for access to private storage buckets that support Signature Version 4 for authentication. The service name for generating the authentication header will always default to 's3'.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Awsv4Signature {
    /// The access key used for s3 bucket authentication. Required for updating or creating a backend that uses AWS v4 signature authentication, but will not be returned as part of the configuration when queried with a REST API GET request. @InputOnly
    #[serde(rename = "accessKey", skip_serializing_if = "Option::is_none")]
    pub access_key: Option<String>,
    /// The identifier of an access key used for s3 bucket authentication.
    #[serde(rename = "accessKeyId", skip_serializing_if = "Option::is_none")]
    pub access_key_id: Option<String>,
    /// The optional version identifier for the access key. You can use this to keep track of different iterations of your access key.
    #[serde(rename = "accessKeyVersion", skip_serializing_if = "Option::is_none")]
    pub access_key_version: Option<String>,
    /// The name of the cloud region of your origin. This is a free-form field with the name of the region your cloud uses to host your origin. For example, \"us-east-1\" for AWS or \"us-ashburn-1\" for OCI.
    #[serde(rename = "originRegion", skip_serializing_if = "Option::is_none")]
    pub origin_region: Option<String>,
}

impl Awsv4Signature {
    /// Contains the configurations necessary to generate a signature for access to private storage buckets that support Signature Version 4 for authentication. The service name for generating the authentication header will always default to 's3'.
    pub fn new() -> Awsv4Signature {
        Awsv4Signature {
            access_key: None,
            access_key_id: None,
            access_key_version: None,
            origin_region: None,
        }
    }
}
