figma-api 0.31.4

This is the OpenAPI specification for the [Figma REST API](https://www.figma.com/developers/api). Note: we are releasing the OpenAPI specification as a beta given the large surface area and complexity of the REST API. If you notice any inaccuracies with the specification, please [file an issue](https://github.com/figma/rest-api-spec/issues).
Documentation
/*
 * Figma API
 *
 * This is the OpenAPI specification for the [Figma REST API](https://www.figma.com/developers/api).  Note: we are releasing the OpenAPI specification as a beta given the large surface area and complexity of the REST API. If you notice any inaccuracies with the specification, please [file an issue](https://github.com/figma/rest-api-spec/issues).
 *
 * The version of the OpenAPI document: 0.31.0
 * Contact: support@figma.com
 * Generated by: https://openapi-generator.tech
 */

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

/// IsLayerTraitBoundVariables : A mapping of field to the variables applied to this field. Most fields will only map to a single `VariableAlias`. However, for properties like `fills`, `strokes`, `size`, `componentProperties`, and `textRangeFills`, it is possible to have multiple variables bound to the field.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct IsLayerTraitBoundVariables {
    #[serde(rename = "size", skip_serializing_if = "Option::is_none")]
    pub size: Option<Box<models::IsLayerTraitBoundVariablesSize>>,
    #[serde(rename = "individualStrokeWeights", skip_serializing_if = "Option::is_none")]
    pub individual_stroke_weights: Option<Box<models::IsLayerTraitBoundVariablesIndividualStrokeWeights>>,
    #[serde(rename = "characters", skip_serializing_if = "Option::is_none")]
    pub characters: Option<Box<models::VariableAlias>>,
    #[serde(rename = "itemSpacing", skip_serializing_if = "Option::is_none")]
    pub item_spacing: Option<Box<models::VariableAlias>>,
    #[serde(rename = "paddingLeft", skip_serializing_if = "Option::is_none")]
    pub padding_left: Option<Box<models::VariableAlias>>,
    #[serde(rename = "paddingRight", skip_serializing_if = "Option::is_none")]
    pub padding_right: Option<Box<models::VariableAlias>>,
    #[serde(rename = "paddingTop", skip_serializing_if = "Option::is_none")]
    pub padding_top: Option<Box<models::VariableAlias>>,
    #[serde(rename = "paddingBottom", skip_serializing_if = "Option::is_none")]
    pub padding_bottom: Option<Box<models::VariableAlias>>,
    #[serde(rename = "visible", skip_serializing_if = "Option::is_none")]
    pub visible: Option<Box<models::VariableAlias>>,
    #[serde(rename = "topLeftRadius", skip_serializing_if = "Option::is_none")]
    pub top_left_radius: Option<Box<models::VariableAlias>>,
    #[serde(rename = "topRightRadius", skip_serializing_if = "Option::is_none")]
    pub top_right_radius: Option<Box<models::VariableAlias>>,
    #[serde(rename = "bottomLeftRadius", skip_serializing_if = "Option::is_none")]
    pub bottom_left_radius: Option<Box<models::VariableAlias>>,
    #[serde(rename = "bottomRightRadius", skip_serializing_if = "Option::is_none")]
    pub bottom_right_radius: Option<Box<models::VariableAlias>>,
    #[serde(rename = "minWidth", skip_serializing_if = "Option::is_none")]
    pub min_width: Option<Box<models::VariableAlias>>,
    #[serde(rename = "maxWidth", skip_serializing_if = "Option::is_none")]
    pub max_width: Option<Box<models::VariableAlias>>,
    #[serde(rename = "minHeight", skip_serializing_if = "Option::is_none")]
    pub min_height: Option<Box<models::VariableAlias>>,
    #[serde(rename = "maxHeight", skip_serializing_if = "Option::is_none")]
    pub max_height: Option<Box<models::VariableAlias>>,
    #[serde(rename = "counterAxisSpacing", skip_serializing_if = "Option::is_none")]
    pub counter_axis_spacing: Option<Box<models::VariableAlias>>,
    #[serde(rename = "opacity", skip_serializing_if = "Option::is_none")]
    pub opacity: Option<Box<models::VariableAlias>>,
    #[serde(rename = "fontFamily", skip_serializing_if = "Option::is_none")]
    pub font_family: Option<Vec<models::VariableAlias>>,
    #[serde(rename = "fontSize", skip_serializing_if = "Option::is_none")]
    pub font_size: Option<Vec<models::VariableAlias>>,
    #[serde(rename = "fontStyle", skip_serializing_if = "Option::is_none")]
    pub font_style: Option<Vec<models::VariableAlias>>,
    #[serde(rename = "fontWeight", skip_serializing_if = "Option::is_none")]
    pub font_weight: Option<Vec<models::VariableAlias>>,
    #[serde(rename = "letterSpacing", skip_serializing_if = "Option::is_none")]
    pub letter_spacing: Option<Vec<models::VariableAlias>>,
    #[serde(rename = "lineHeight", skip_serializing_if = "Option::is_none")]
    pub line_height: Option<Vec<models::VariableAlias>>,
    #[serde(rename = "paragraphSpacing", skip_serializing_if = "Option::is_none")]
    pub paragraph_spacing: Option<Vec<models::VariableAlias>>,
    #[serde(rename = "paragraphIndent", skip_serializing_if = "Option::is_none")]
    pub paragraph_indent: Option<Vec<models::VariableAlias>>,
    #[serde(rename = "fills", skip_serializing_if = "Option::is_none")]
    pub fills: Option<Vec<models::VariableAlias>>,
    #[serde(rename = "strokes", skip_serializing_if = "Option::is_none")]
    pub strokes: Option<Vec<models::VariableAlias>>,
    #[serde(rename = "componentProperties", skip_serializing_if = "Option::is_none")]
    pub component_properties: Option<std::collections::HashMap<String, models::VariableAlias>>,
    #[serde(rename = "textRangeFills", skip_serializing_if = "Option::is_none")]
    pub text_range_fills: Option<Vec<models::VariableAlias>>,
    #[serde(rename = "effects", skip_serializing_if = "Option::is_none")]
    pub effects: Option<Vec<models::VariableAlias>>,
    #[serde(rename = "layoutGrids", skip_serializing_if = "Option::is_none")]
    pub layout_grids: Option<Vec<models::VariableAlias>>,
    #[serde(rename = "rectangleCornerRadii", skip_serializing_if = "Option::is_none")]
    pub rectangle_corner_radii: Option<Box<models::IsLayerTraitBoundVariablesRectangleCornerRadii>>,
}

impl IsLayerTraitBoundVariables {
    /// A mapping of field to the variables applied to this field. Most fields will only map to a single `VariableAlias`. However, for properties like `fills`, `strokes`, `size`, `componentProperties`, and `textRangeFills`, it is possible to have multiple variables bound to the field.
    pub fn new() -> IsLayerTraitBoundVariables {
        IsLayerTraitBoundVariables {
            size: None,
            individual_stroke_weights: None,
            characters: None,
            item_spacing: None,
            padding_left: None,
            padding_right: None,
            padding_top: None,
            padding_bottom: None,
            visible: None,
            top_left_radius: None,
            top_right_radius: None,
            bottom_left_radius: None,
            bottom_right_radius: None,
            min_width: None,
            max_width: None,
            min_height: None,
            max_height: None,
            counter_axis_spacing: None,
            opacity: None,
            font_family: None,
            font_size: None,
            font_style: None,
            font_weight: None,
            letter_spacing: None,
            line_height: None,
            paragraph_spacing: None,
            paragraph_indent: None,
            fills: None,
            strokes: None,
            component_properties: None,
            text_range_fills: None,
            effects: None,
            layout_grids: None,
            rectangle_corner_radii: None,
        }
    }
}