# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union
from . import _utilities, _tables
from . import outputs

__all__ = [
    'FirewallDevice',
    'FirewallInbound',
    'FirewallOutbound',
    'InstanceAlerts',
    'InstanceBackups',
    'InstanceBackupsSchedule',
    'InstanceConfig',
    'InstanceConfigDevices',
    'InstanceConfigDevicesSda',
    'InstanceConfigDevicesSdb',
    'InstanceConfigDevicesSdc',
    'InstanceConfigDevicesSdd',
    'InstanceConfigDevicesSde',
    'InstanceConfigDevicesSdf',
    'InstanceConfigDevicesSdg',
    'InstanceConfigDevicesSdh',
    'InstanceConfigHelpers',
    'InstanceDisk',
    'InstanceSpecs',
    'LkeClusterPool',
    'LkeClusterPoolNode',
    'NodeBalancerConfigNodeStatus',
    'NodeBalancerTransfer',
    'ObjectStorageBucketCert',
    'ObjectStorageKeyBucketAccess',
    'StackScriptUserDefinedField',
    'VlanAttachedLinode',
    'GetInstanceTypeAddonsResult',
    'GetInstanceTypeAddonsBackupsResult',
    'GetInstanceTypeAddonsBackupsPriceResult',
    'GetInstanceTypePriceResult',
    'GetProfileReferralsResult',
    'GetStackScriptUserDefinedFieldResult',
]

@pulumi.output_type
class FirewallDevice(dict):
    def __init__(__self__, *,
                 entity_id: Optional[int] = None,
                 id: Optional[int] = None,
                 label: Optional[str] = None,
                 type: Optional[str] = None,
                 url: Optional[str] = None):
        """
        :param int entity_id: The ID of the underlying entity this device references (i.e. the Linode's ID).
        :param int id: The ID of the Firewall Device.
        :param str label: This Firewall's unique label.
        :param str type: The type of Firewall Device.
        """
        if entity_id is not None:
            pulumi.set(__self__, "entity_id", entity_id)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if label is not None:
            pulumi.set(__self__, "label", label)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if url is not None:
            pulumi.set(__self__, "url", url)

    @property
    @pulumi.getter(name="entityId")
    def entity_id(self) -> Optional[int]:
        """
        The ID of the underlying entity this device references (i.e. the Linode's ID).
        """
        return pulumi.get(self, "entity_id")

    @property
    @pulumi.getter
    def id(self) -> Optional[int]:
        """
        The ID of the Firewall Device.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def label(self) -> Optional[str]:
        """
        This Firewall's unique label.
        """
        return pulumi.get(self, "label")

    @property
    @pulumi.getter
    def type(self) -> Optional[str]:
        """
        The type of Firewall Device.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def url(self) -> Optional[str]:
        return pulumi.get(self, "url")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class FirewallInbound(dict):
    def __init__(__self__, *,
                 addresses: Sequence[str],
                 ports: Sequence[str],
                 protocol: str):
        """
        :param Sequence[str] addresses: A list of IP addresses, CIDR blocks, or `0.0.0.0/0` (to allow all) this rule applies to.
        :param Sequence[str] ports: A list of ports and/or port ranges (i.e. "443" or "80-90").
        :param str protocol: The network protocol this rule controls.
        """
        pulumi.set(__self__, "addresses", addresses)
        pulumi.set(__self__, "ports", ports)
        pulumi.set(__self__, "protocol", protocol)

    @property
    @pulumi.getter
    def addresses(self) -> Sequence[str]:
        """
        A list of IP addresses, CIDR blocks, or `0.0.0.0/0` (to allow all) this rule applies to.
        """
        return pulumi.get(self, "addresses")

    @property
    @pulumi.getter
    def ports(self) -> Sequence[str]:
        """
        A list of ports and/or port ranges (i.e. "443" or "80-90").
        """
        return pulumi.get(self, "ports")

    @property
    @pulumi.getter
    def protocol(self) -> str:
        """
        The network protocol this rule controls.
        """
        return pulumi.get(self, "protocol")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class FirewallOutbound(dict):
    def __init__(__self__, *,
                 addresses: Sequence[str],
                 ports: Sequence[str],
                 protocol: str):
        """
        :param Sequence[str] addresses: A list of IP addresses, CIDR blocks, or `0.0.0.0/0` (to allow all) this rule applies to.
        :param Sequence[str] ports: A list of ports and/or port ranges (i.e. "443" or "80-90").
        :param str protocol: The network protocol this rule controls.
        """
        pulumi.set(__self__, "addresses", addresses)
        pulumi.set(__self__, "ports", ports)
        pulumi.set(__self__, "protocol", protocol)

    @property
    @pulumi.getter
    def addresses(self) -> Sequence[str]:
        """
        A list of IP addresses, CIDR blocks, or `0.0.0.0/0` (to allow all) this rule applies to.
        """
        return pulumi.get(self, "addresses")

    @property
    @pulumi.getter
    def ports(self) -> Sequence[str]:
        """
        A list of ports and/or port ranges (i.e. "443" or "80-90").
        """
        return pulumi.get(self, "ports")

    @property
    @pulumi.getter
    def protocol(self) -> str:
        """
        The network protocol this rule controls.
        """
        return pulumi.get(self, "protocol")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class InstanceAlerts(dict):
    def __init__(__self__, *,
                 cpu: Optional[int] = None,
                 io: Optional[int] = None,
                 network_in: Optional[int] = None,
                 network_out: Optional[int] = None,
                 transfer_quota: Optional[int] = None):
        if cpu is not None:
            pulumi.set(__self__, "cpu", cpu)
        if io is not None:
            pulumi.set(__self__, "io", io)
        if network_in is not None:
            pulumi.set(__self__, "network_in", network_in)
        if network_out is not None:
            pulumi.set(__self__, "network_out", network_out)
        if transfer_quota is not None:
            pulumi.set(__self__, "transfer_quota", transfer_quota)

    @property
    @pulumi.getter
    def cpu(self) -> Optional[int]:
        return pulumi.get(self, "cpu")

    @property
    @pulumi.getter
    def io(self) -> Optional[int]:
        return pulumi.get(self, "io")

    @property
    @pulumi.getter(name="networkIn")
    def network_in(self) -> Optional[int]:
        return pulumi.get(self, "network_in")

    @property
    @pulumi.getter(name="networkOut")
    def network_out(self) -> Optional[int]:
        return pulumi.get(self, "network_out")

    @property
    @pulumi.getter(name="transferQuota")
    def transfer_quota(self) -> Optional[int]:
        return pulumi.get(self, "transfer_quota")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class InstanceBackups(dict):
    def __init__(__self__, *,
                 enabled: Optional[bool] = None,
                 schedule: Optional['outputs.InstanceBackupsSchedule'] = None):
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if schedule is not None:
            pulumi.set(__self__, "schedule", schedule)

    @property
    @pulumi.getter
    def enabled(self) -> Optional[bool]:
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter
    def schedule(self) -> Optional['outputs.InstanceBackupsSchedule']:
        return pulumi.get(self, "schedule")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class InstanceBackupsSchedule(dict):
    def __init__(__self__, *,
                 day: Optional[str] = None,
                 window: Optional[str] = None):
        if day is not None:
            pulumi.set(__self__, "day", day)
        if window is not None:
            pulumi.set(__self__, "window", window)

    @property
    @pulumi.getter
    def day(self) -> Optional[str]:
        return pulumi.get(self, "day")

    @property
    @pulumi.getter
    def window(self) -> Optional[str]:
        return pulumi.get(self, "window")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class InstanceConfig(dict):
    def __init__(__self__, *,
                 label: str,
                 comments: Optional[str] = None,
                 devices: Optional['outputs.InstanceConfigDevices'] = None,
                 helpers: Optional['outputs.InstanceConfigHelpers'] = None,
                 kernel: Optional[str] = None,
                 memory_limit: Optional[int] = None,
                 root_device: Optional[str] = None,
                 run_level: Optional[str] = None,
                 virt_mode: Optional[str] = None):
        """
        :param str label: The Config's label for display purposes.  Also used by `boot_config_label`.
        :param str comments: - Arbitrary user comments about this `config`.
        :param 'InstanceConfigDevicesArgs' devices: A list of `disk` or `volume` attachments for this `config`.  If the `boot_config_label` omits a `devices` block, the Linode will not be booted.
        :param 'InstanceConfigHelpersArgs' helpers: Helpers enabled when booting to this Linode Config.
        :param str kernel: - A Kernel ID to boot a Linode with. Default is based on image choice. Examples are `linode/latest-64bit`, `linode/grub2`, `linode/direct-disk`, etc. See all kernels [here](https://api.linode.com/v4/linode/kernels). Note that this is a paginated API endpoint ([docs](https://developers.linode.com/api/v4/linode-kernels)).
        :param int memory_limit: - Defaults to the total RAM of the Linode
        :param str root_device: - The root device to boot. The corresponding disk must be attached to a `device` slot.  Example: `"/dev/sda"`
        :param str run_level: - Defines the state of your Linode after booting. Defaults to `"default"`.
        :param str virt_mode: - Controls the virtualization mode. Defaults to `"paravirt"`.
        """
        pulumi.set(__self__, "label", label)
        if comments is not None:
            pulumi.set(__self__, "comments", comments)
        if devices is not None:
            pulumi.set(__self__, "devices", devices)
        if helpers is not None:
            pulumi.set(__self__, "helpers", helpers)
        if kernel is not None:
            pulumi.set(__self__, "kernel", kernel)
        if memory_limit is not None:
            pulumi.set(__self__, "memory_limit", memory_limit)
        if root_device is not None:
            pulumi.set(__self__, "root_device", root_device)
        if run_level is not None:
            pulumi.set(__self__, "run_level", run_level)
        if virt_mode is not None:
            pulumi.set(__self__, "virt_mode", virt_mode)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The Config's label for display purposes.  Also used by `boot_config_label`.
        """
        return pulumi.get(self, "label")

    @property
    @pulumi.getter
    def comments(self) -> Optional[str]:
        """
        - Arbitrary user comments about this `config`.
        """
        return pulumi.get(self, "comments")

    @property
    @pulumi.getter
    def devices(self) -> Optional['outputs.InstanceConfigDevices']:
        """
        A list of `disk` or `volume` attachments for this `config`.  If the `boot_config_label` omits a `devices` block, the Linode will not be booted.
        """
        return pulumi.get(self, "devices")

    @property
    @pulumi.getter
    def helpers(self) -> Optional['outputs.InstanceConfigHelpers']:
        """
        Helpers enabled when booting to this Linode Config.
        """
        return pulumi.get(self, "helpers")

    @property
    @pulumi.getter
    def kernel(self) -> Optional[str]:
        """
        - A Kernel ID to boot a Linode with. Default is based on image choice. Examples are `linode/latest-64bit`, `linode/grub2`, `linode/direct-disk`, etc. See all kernels [here](https://api.linode.com/v4/linode/kernels). Note that this is a paginated API endpoint ([docs](https://developers.linode.com/api/v4/linode-kernels)).
        """
        return pulumi.get(self, "kernel")

    @property
    @pulumi.getter(name="memoryLimit")
    def memory_limit(self) -> Optional[int]:
        """
        - Defaults to the total RAM of the Linode
        """
        return pulumi.get(self, "memory_limit")

    @property
    @pulumi.getter(name="rootDevice")
    def root_device(self) -> Optional[str]:
        """
        - The root device to boot. The corresponding disk must be attached to a `device` slot.  Example: `"/dev/sda"`
        """
        return pulumi.get(self, "root_device")

    @property
    @pulumi.getter(name="runLevel")
    def run_level(self) -> Optional[str]:
        """
        - Defines the state of your Linode after booting. Defaults to `"default"`.
        """
        return pulumi.get(self, "run_level")

    @property
    @pulumi.getter(name="virtMode")
    def virt_mode(self) -> Optional[str]:
        """
        - Controls the virtualization mode. Defaults to `"paravirt"`.
        """
        return pulumi.get(self, "virt_mode")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class InstanceConfigDevices(dict):
    def __init__(__self__, *,
                 sda: Optional['outputs.InstanceConfigDevicesSda'] = None,
                 sdb: Optional['outputs.InstanceConfigDevicesSdb'] = None,
                 sdc: Optional['outputs.InstanceConfigDevicesSdc'] = None,
                 sdd: Optional['outputs.InstanceConfigDevicesSdd'] = None,
                 sde: Optional['outputs.InstanceConfigDevicesSde'] = None,
                 sdf: Optional['outputs.InstanceConfigDevicesSdf'] = None,
                 sdg: Optional['outputs.InstanceConfigDevicesSdg'] = None,
                 sdh: Optional['outputs.InstanceConfigDevicesSdh'] = None):
        """
        :param 'InstanceConfigDevicesSdaArgs' sda: ... `sdh` - (Optional) The SDA-SDH slots, represent the Linux block device nodes for the first 8 disks attached to the Linode.  Each device must be suplied sequentially.  The device can be either a Disk or a Volume identified by `disk_label` or `volume_id`. Only one disk identifier is permitted per slot. Devices mapped from `sde` through `sdh` are unavailable in `"fullvirt"` `virt_mode`.
        """
        if sda is not None:
            pulumi.set(__self__, "sda", sda)
        if sdb is not None:
            pulumi.set(__self__, "sdb", sdb)
        if sdc is not None:
            pulumi.set(__self__, "sdc", sdc)
        if sdd is not None:
            pulumi.set(__self__, "sdd", sdd)
        if sde is not None:
            pulumi.set(__self__, "sde", sde)
        if sdf is not None:
            pulumi.set(__self__, "sdf", sdf)
        if sdg is not None:
            pulumi.set(__self__, "sdg", sdg)
        if sdh is not None:
            pulumi.set(__self__, "sdh", sdh)

    @property
    @pulumi.getter
    def sda(self) -> Optional['outputs.InstanceConfigDevicesSda']:
        """
        ... `sdh` - (Optional) The SDA-SDH slots, represent the Linux block device nodes for the first 8 disks attached to the Linode.  Each device must be suplied sequentially.  The device can be either a Disk or a Volume identified by `disk_label` or `volume_id`. Only one disk identifier is permitted per slot. Devices mapped from `sde` through `sdh` are unavailable in `"fullvirt"` `virt_mode`.
        """
        return pulumi.get(self, "sda")

    @property
    @pulumi.getter
    def sdb(self) -> Optional['outputs.InstanceConfigDevicesSdb']:
        return pulumi.get(self, "sdb")

    @property
    @pulumi.getter
    def sdc(self) -> Optional['outputs.InstanceConfigDevicesSdc']:
        return pulumi.get(self, "sdc")

    @property
    @pulumi.getter
    def sdd(self) -> Optional['outputs.InstanceConfigDevicesSdd']:
        return pulumi.get(self, "sdd")

    @property
    @pulumi.getter
    def sde(self) -> Optional['outputs.InstanceConfigDevicesSde']:
        return pulumi.get(self, "sde")

    @property
    @pulumi.getter
    def sdf(self) -> Optional['outputs.InstanceConfigDevicesSdf']:
        return pulumi.get(self, "sdf")

    @property
    @pulumi.getter
    def sdg(self) -> Optional['outputs.InstanceConfigDevicesSdg']:
        return pulumi.get(self, "sdg")

    @property
    @pulumi.getter
    def sdh(self) -> Optional['outputs.InstanceConfigDevicesSdh']:
        return pulumi.get(self, "sdh")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class InstanceConfigDevicesSda(dict):
    def __init__(__self__, *,
                 disk_id: Optional[int] = None,
                 disk_label: Optional[str] = None,
                 volume_id: Optional[int] = None):
        """
        :param int disk_id: The Disk ID of the associated `disk_label`, if used.
        :param str disk_label: The `label` of the `disk` to map to this `device` slot.
        :param int volume_id: The Volume ID to map to this `device` slot.
        """
        if disk_id is not None:
            pulumi.set(__self__, "disk_id", disk_id)
        if disk_label is not None:
            pulumi.set(__self__, "disk_label", disk_label)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)

    @property
    @pulumi.getter(name="diskId")
    def disk_id(self) -> Optional[int]:
        """
        The Disk ID of the associated `disk_label`, if used.
        """
        return pulumi.get(self, "disk_id")

    @property
    @pulumi.getter(name="diskLabel")
    def disk_label(self) -> Optional[str]:
        """
        The `label` of the `disk` to map to this `device` slot.
        """
        return pulumi.get(self, "disk_label")

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[int]:
        """
        The Volume ID to map to this `device` slot.
        """
        return pulumi.get(self, "volume_id")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class InstanceConfigDevicesSdb(dict):
    def __init__(__self__, *,
                 disk_id: Optional[int] = None,
                 disk_label: Optional[str] = None,
                 volume_id: Optional[int] = None):
        """
        :param int disk_id: The Disk ID of the associated `disk_label`, if used.
        :param str disk_label: The `label` of the `disk` to map to this `device` slot.
        :param int volume_id: The Volume ID to map to this `device` slot.
        """
        if disk_id is not None:
            pulumi.set(__self__, "disk_id", disk_id)
        if disk_label is not None:
            pulumi.set(__self__, "disk_label", disk_label)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)

    @property
    @pulumi.getter(name="diskId")
    def disk_id(self) -> Optional[int]:
        """
        The Disk ID of the associated `disk_label`, if used.
        """
        return pulumi.get(self, "disk_id")

    @property
    @pulumi.getter(name="diskLabel")
    def disk_label(self) -> Optional[str]:
        """
        The `label` of the `disk` to map to this `device` slot.
        """
        return pulumi.get(self, "disk_label")

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[int]:
        """
        The Volume ID to map to this `device` slot.
        """
        return pulumi.get(self, "volume_id")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class InstanceConfigDevicesSdc(dict):
    def __init__(__self__, *,
                 disk_id: Optional[int] = None,
                 disk_label: Optional[str] = None,
                 volume_id: Optional[int] = None):
        """
        :param int disk_id: The Disk ID of the associated `disk_label`, if used.
        :param str disk_label: The `label` of the `disk` to map to this `device` slot.
        :param int volume_id: The Volume ID to map to this `device` slot.
        """
        if disk_id is not None:
            pulumi.set(__self__, "disk_id", disk_id)
        if disk_label is not None:
            pulumi.set(__self__, "disk_label", disk_label)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)

    @property
    @pulumi.getter(name="diskId")
    def disk_id(self) -> Optional[int]:
        """
        The Disk ID of the associated `disk_label`, if used.
        """
        return pulumi.get(self, "disk_id")

    @property
    @pulumi.getter(name="diskLabel")
    def disk_label(self) -> Optional[str]:
        """
        The `label` of the `disk` to map to this `device` slot.
        """
        return pulumi.get(self, "disk_label")

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[int]:
        """
        The Volume ID to map to this `device` slot.
        """
        return pulumi.get(self, "volume_id")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class InstanceConfigDevicesSdd(dict):
    def __init__(__self__, *,
                 disk_id: Optional[int] = None,
                 disk_label: Optional[str] = None,
                 volume_id: Optional[int] = None):
        """
        :param int disk_id: The Disk ID of the associated `disk_label`, if used.
        :param str disk_label: The `label` of the `disk` to map to this `device` slot.
        :param int volume_id: The Volume ID to map to this `device` slot.
        """
        if disk_id is not None:
            pulumi.set(__self__, "disk_id", disk_id)
        if disk_label is not None:
            pulumi.set(__self__, "disk_label", disk_label)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)

    @property
    @pulumi.getter(name="diskId")
    def disk_id(self) -> Optional[int]:
        """
        The Disk ID of the associated `disk_label`, if used.
        """
        return pulumi.get(self, "disk_id")

    @property
    @pulumi.getter(name="diskLabel")
    def disk_label(self) -> Optional[str]:
        """
        The `label` of the `disk` to map to this `device` slot.
        """
        return pulumi.get(self, "disk_label")

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[int]:
        """
        The Volume ID to map to this `device` slot.
        """
        return pulumi.get(self, "volume_id")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class InstanceConfigDevicesSde(dict):
    def __init__(__self__, *,
                 disk_id: Optional[int] = None,
                 disk_label: Optional[str] = None,
                 volume_id: Optional[int] = None):
        """
        :param int disk_id: The Disk ID of the associated `disk_label`, if used.
        :param str disk_label: The `label` of the `disk` to map to this `device` slot.
        :param int volume_id: The Volume ID to map to this `device` slot.
        """
        if disk_id is not None:
            pulumi.set(__self__, "disk_id", disk_id)
        if disk_label is not None:
            pulumi.set(__self__, "disk_label", disk_label)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)

    @property
    @pulumi.getter(name="diskId")
    def disk_id(self) -> Optional[int]:
        """
        The Disk ID of the associated `disk_label`, if used.
        """
        return pulumi.get(self, "disk_id")

    @property
    @pulumi.getter(name="diskLabel")
    def disk_label(self) -> Optional[str]:
        """
        The `label` of the `disk` to map to this `device` slot.
        """
        return pulumi.get(self, "disk_label")

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[int]:
        """
        The Volume ID to map to this `device` slot.
        """
        return pulumi.get(self, "volume_id")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class InstanceConfigDevicesSdf(dict):
    def __init__(__self__, *,
                 disk_id: Optional[int] = None,
                 disk_label: Optional[str] = None,
                 volume_id: Optional[int] = None):
        """
        :param int disk_id: The Disk ID of the associated `disk_label`, if used.
        :param str disk_label: The `label` of the `disk` to map to this `device` slot.
        :param int volume_id: The Volume ID to map to this `device` slot.
        """
        if disk_id is not None:
            pulumi.set(__self__, "disk_id", disk_id)
        if disk_label is not None:
            pulumi.set(__self__, "disk_label", disk_label)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)

    @property
    @pulumi.getter(name="diskId")
    def disk_id(self) -> Optional[int]:
        """
        The Disk ID of the associated `disk_label`, if used.
        """
        return pulumi.get(self, "disk_id")

    @property
    @pulumi.getter(name="diskLabel")
    def disk_label(self) -> Optional[str]:
        """
        The `label` of the `disk` to map to this `device` slot.
        """
        return pulumi.get(self, "disk_label")

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[int]:
        """
        The Volume ID to map to this `device` slot.
        """
        return pulumi.get(self, "volume_id")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class InstanceConfigDevicesSdg(dict):
    def __init__(__self__, *,
                 disk_id: Optional[int] = None,
                 disk_label: Optional[str] = None,
                 volume_id: Optional[int] = None):
        """
        :param int disk_id: The Disk ID of the associated `disk_label`, if used.
        :param str disk_label: The `label` of the `disk` to map to this `device` slot.
        :param int volume_id: The Volume ID to map to this `device` slot.
        """
        if disk_id is not None:
            pulumi.set(__self__, "disk_id", disk_id)
        if disk_label is not None:
            pulumi.set(__self__, "disk_label", disk_label)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)

    @property
    @pulumi.getter(name="diskId")
    def disk_id(self) -> Optional[int]:
        """
        The Disk ID of the associated `disk_label`, if used.
        """
        return pulumi.get(self, "disk_id")

    @property
    @pulumi.getter(name="diskLabel")
    def disk_label(self) -> Optional[str]:
        """
        The `label` of the `disk` to map to this `device` slot.
        """
        return pulumi.get(self, "disk_label")

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[int]:
        """
        The Volume ID to map to this `device` slot.
        """
        return pulumi.get(self, "volume_id")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class InstanceConfigDevicesSdh(dict):
    def __init__(__self__, *,
                 disk_id: Optional[int] = None,
                 disk_label: Optional[str] = None,
                 volume_id: Optional[int] = None):
        """
        :param int disk_id: The Disk ID of the associated `disk_label`, if used.
        :param str disk_label: The `label` of the `disk` to map to this `device` slot.
        :param int volume_id: The Volume ID to map to this `device` slot.
        """
        if disk_id is not None:
            pulumi.set(__self__, "disk_id", disk_id)
        if disk_label is not None:
            pulumi.set(__self__, "disk_label", disk_label)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)

    @property
    @pulumi.getter(name="diskId")
    def disk_id(self) -> Optional[int]:
        """
        The Disk ID of the associated `disk_label`, if used.
        """
        return pulumi.get(self, "disk_id")

    @property
    @pulumi.getter(name="diskLabel")
    def disk_label(self) -> Optional[str]:
        """
        The `label` of the `disk` to map to this `device` slot.
        """
        return pulumi.get(self, "disk_label")

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[int]:
        """
        The Volume ID to map to this `device` slot.
        """
        return pulumi.get(self, "volume_id")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class InstanceConfigHelpers(dict):
    def __init__(__self__, *,
                 devtmpfs_automount: Optional[bool] = None,
                 distro: Optional[bool] = None,
                 modules_dep: Optional[bool] = None,
                 network: Optional[bool] = None,
                 updatedb_disabled: Optional[bool] = None):
        """
        :param bool distro: Controls the behavior of the Linode Config's Distribution Helper setting.
        :param bool modules_dep: Creates a modules dependency file for the Kernel you run.
        :param bool network: Controls the behavior of the Linode Config's Network Helper setting, used to automatically configure additional IP addresses assigned to this instance.
        :param bool updatedb_disabled: Disables updatedb cron job to avoid disk thrashing.
        """
        if devtmpfs_automount is not None:
            pulumi.set(__self__, "devtmpfs_automount", devtmpfs_automount)
        if distro is not None:
            pulumi.set(__self__, "distro", distro)
        if modules_dep is not None:
            pulumi.set(__self__, "modules_dep", modules_dep)
        if network is not None:
            pulumi.set(__self__, "network", network)
        if updatedb_disabled is not None:
            pulumi.set(__self__, "updatedb_disabled", updatedb_disabled)

    @property
    @pulumi.getter(name="devtmpfsAutomount")
    def devtmpfs_automount(self) -> Optional[bool]:
        return pulumi.get(self, "devtmpfs_automount")

    @property
    @pulumi.getter
    def distro(self) -> Optional[bool]:
        """
        Controls the behavior of the Linode Config's Distribution Helper setting.
        """
        return pulumi.get(self, "distro")

    @property
    @pulumi.getter(name="modulesDep")
    def modules_dep(self) -> Optional[bool]:
        """
        Creates a modules dependency file for the Kernel you run.
        """
        return pulumi.get(self, "modules_dep")

    @property
    @pulumi.getter
    def network(self) -> Optional[bool]:
        """
        Controls the behavior of the Linode Config's Network Helper setting, used to automatically configure additional IP addresses assigned to this instance.
        """
        return pulumi.get(self, "network")

    @property
    @pulumi.getter(name="updatedbDisabled")
    def updatedb_disabled(self) -> Optional[bool]:
        """
        Disables updatedb cron job to avoid disk thrashing.
        """
        return pulumi.get(self, "updatedb_disabled")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class InstanceDisk(dict):
    def __init__(__self__, *,
                 label: str,
                 size: int,
                 authorized_keys: Optional[Sequence[str]] = None,
                 authorized_users: Optional[Sequence[str]] = None,
                 filesystem: Optional[str] = None,
                 id: Optional[int] = None,
                 image: Optional[str] = None,
                 read_only: Optional[bool] = None,
                 root_pass: Optional[str] = None,
                 stackscript_data: Optional[Mapping[str, Any]] = None,
                 stackscript_id: Optional[int] = None):
        """
        :param str label: The Config's label for display purposes.  Also used by `boot_config_label`.
        :param int size: The size of the Disk in MB.
        :param Sequence[str] authorized_keys: A list of SSH public keys to deploy for the root user on the newly created Linode. Only accepted if `image` is provided. *This value can not be imported.* *Changing `authorized_keys` forces the creation of a new Linode Instance.*
        :param Sequence[str] authorized_users: A list of Linode usernames. If the usernames have associated SSH keys, the keys will be appended to the `root` user's `~/.ssh/authorized_keys` file automatically. *This value can not be imported.* *Changing `authorized_users` forces the creation of a new Linode Instance.*
        :param str filesystem: The Disk filesystem can be one of: `"raw"`, `"swap"`, `"ext3"`, `"ext4"`, or `"initrd"` which has a max size of 32mb and can be used in the config `initrd` (not currently supported in this provider).
        :param int id: The ID of the disk in the Linode API.
        :param str image: An Image ID to deploy the Disk from. Official Linode Images start with linode/, while your Images start with private/. See /images for more information on the Images available for you to use. Examples are `linode/debian9`, `linode/fedora28`, `linode/ubuntu16.04lts`, `linode/arch`, and `private/12345`. See all images [here](https://api.linode.com/v4/linode/kernels). *Changing `image` forces the creation of a new Linode Instance.*
        :param str root_pass: The initial password for the `root` user account. *This value can not be imported.* *Changing `root_pass` forces the creation of a new Linode Instance.* *If omitted, a random password will be generated but will not be stored in state.*
        :param Mapping[str, Any] stackscript_data: An object containing responses to any User Defined Fields present in the StackScript being deployed to this Linode. Only accepted if 'stackscript_id' is given. The required values depend on the StackScript being deployed.  *This value can not be imported.* *Changing `stackscript_data` forces the creation of a new Linode Instance.*
        :param int stackscript_id: The StackScript to deploy to the newly created Linode. If provided, 'image' must also be provided, and must be an Image that is compatible with this StackScript. *This value can not be imported.* *Changing `stackscript_id` forces the creation of a new Linode Instance.*
        """
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "size", size)
        if authorized_keys is not None:
            pulumi.set(__self__, "authorized_keys", authorized_keys)
        if authorized_users is not None:
            pulumi.set(__self__, "authorized_users", authorized_users)
        if filesystem is not None:
            pulumi.set(__self__, "filesystem", filesystem)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if image is not None:
            pulumi.set(__self__, "image", image)
        if read_only is not None:
            pulumi.set(__self__, "read_only", read_only)
        if root_pass is not None:
            pulumi.set(__self__, "root_pass", root_pass)
        if stackscript_data is not None:
            pulumi.set(__self__, "stackscript_data", stackscript_data)
        if stackscript_id is not None:
            pulumi.set(__self__, "stackscript_id", stackscript_id)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The Config's label for display purposes.  Also used by `boot_config_label`.
        """
        return pulumi.get(self, "label")

    @property
    @pulumi.getter
    def size(self) -> int:
        """
        The size of the Disk in MB.
        """
        return pulumi.get(self, "size")

    @property
    @pulumi.getter(name="authorizedKeys")
    def authorized_keys(self) -> Optional[Sequence[str]]:
        """
        A list of SSH public keys to deploy for the root user on the newly created Linode. Only accepted if `image` is provided. *This value can not be imported.* *Changing `authorized_keys` forces the creation of a new Linode Instance.*
        """
        return pulumi.get(self, "authorized_keys")

    @property
    @pulumi.getter(name="authorizedUsers")
    def authorized_users(self) -> Optional[Sequence[str]]:
        """
        A list of Linode usernames. If the usernames have associated SSH keys, the keys will be appended to the `root` user's `~/.ssh/authorized_keys` file automatically. *This value can not be imported.* *Changing `authorized_users` forces the creation of a new Linode Instance.*
        """
        return pulumi.get(self, "authorized_users")

    @property
    @pulumi.getter
    def filesystem(self) -> Optional[str]:
        """
        The Disk filesystem can be one of: `"raw"`, `"swap"`, `"ext3"`, `"ext4"`, or `"initrd"` which has a max size of 32mb and can be used in the config `initrd` (not currently supported in this provider).
        """
        return pulumi.get(self, "filesystem")

    @property
    @pulumi.getter
    def id(self) -> Optional[int]:
        """
        The ID of the disk in the Linode API.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def image(self) -> Optional[str]:
        """
        An Image ID to deploy the Disk from. Official Linode Images start with linode/, while your Images start with private/. See /images for more information on the Images available for you to use. Examples are `linode/debian9`, `linode/fedora28`, `linode/ubuntu16.04lts`, `linode/arch`, and `private/12345`. See all images [here](https://api.linode.com/v4/linode/kernels). *Changing `image` forces the creation of a new Linode Instance.*
        """
        return pulumi.get(self, "image")

    @property
    @pulumi.getter(name="readOnly")
    def read_only(self) -> Optional[bool]:
        return pulumi.get(self, "read_only")

    @property
    @pulumi.getter(name="rootPass")
    def root_pass(self) -> Optional[str]:
        """
        The initial password for the `root` user account. *This value can not be imported.* *Changing `root_pass` forces the creation of a new Linode Instance.* *If omitted, a random password will be generated but will not be stored in state.*
        """
        return pulumi.get(self, "root_pass")

    @property
    @pulumi.getter(name="stackscriptData")
    def stackscript_data(self) -> Optional[Mapping[str, Any]]:
        """
        An object containing responses to any User Defined Fields present in the StackScript being deployed to this Linode. Only accepted if 'stackscript_id' is given. The required values depend on the StackScript being deployed.  *This value can not be imported.* *Changing `stackscript_data` forces the creation of a new Linode Instance.*
        """
        return pulumi.get(self, "stackscript_data")

    @property
    @pulumi.getter(name="stackscriptId")
    def stackscript_id(self) -> Optional[int]:
        """
        The StackScript to deploy to the newly created Linode. If provided, 'image' must also be provided, and must be an Image that is compatible with this StackScript. *This value can not be imported.* *Changing `stackscript_id` forces the creation of a new Linode Instance.*
        """
        return pulumi.get(self, "stackscript_id")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class InstanceSpecs(dict):
    def __init__(__self__, *,
                 disk: Optional[int] = None,
                 memory: Optional[int] = None,
                 transfer: Optional[int] = None,
                 vcpus: Optional[int] = None):
        if disk is not None:
            pulumi.set(__self__, "disk", disk)
        if memory is not None:
            pulumi.set(__self__, "memory", memory)
        if transfer is not None:
            pulumi.set(__self__, "transfer", transfer)
        if vcpus is not None:
            pulumi.set(__self__, "vcpus", vcpus)

    @property
    @pulumi.getter
    def disk(self) -> Optional[int]:
        return pulumi.get(self, "disk")

    @property
    @pulumi.getter
    def memory(self) -> Optional[int]:
        return pulumi.get(self, "memory")

    @property
    @pulumi.getter
    def transfer(self) -> Optional[int]:
        return pulumi.get(self, "transfer")

    @property
    @pulumi.getter
    def vcpus(self) -> Optional[int]:
        return pulumi.get(self, "vcpus")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class LkeClusterPool(dict):
    def __init__(__self__, *,
                 count: int,
                 type: str,
                 id: Optional[int] = None,
                 nodes: Optional[Sequence['outputs.LkeClusterPoolNode']] = None):
        """
        :param int count: The number of nodes in the Node Pool.
        :param str type: A Linode Type for all of the nodes in the Node Pool.
        :param int id: The ID of the node.
        """
        pulumi.set(__self__, "count", count)
        pulumi.set(__self__, "type", type)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if nodes is not None:
            pulumi.set(__self__, "nodes", nodes)

    @property
    @pulumi.getter
    def count(self) -> int:
        """
        The number of nodes in the Node Pool.
        """
        return pulumi.get(self, "count")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        A Linode Type for all of the nodes in the Node Pool.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def id(self) -> Optional[int]:
        """
        The ID of the node.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def nodes(self) -> Optional[Sequence['outputs.LkeClusterPoolNode']]:
        return pulumi.get(self, "nodes")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class LkeClusterPoolNode(dict):
    def __init__(__self__, *,
                 id: Optional[str] = None,
                 instance_id: Optional[int] = None,
                 status: Optional[str] = None):
        """
        :param str id: The ID of the node.
        :param int instance_id: The ID of the underlying Linode instance.
        :param str status: The status of the node.
        """
        if id is not None:
            pulumi.set(__self__, "id", id)
        if instance_id is not None:
            pulumi.set(__self__, "instance_id", instance_id)
        if status is not None:
            pulumi.set(__self__, "status", status)

    @property
    @pulumi.getter
    def id(self) -> Optional[str]:
        """
        The ID of the node.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="instanceId")
    def instance_id(self) -> Optional[int]:
        """
        The ID of the underlying Linode instance.
        """
        return pulumi.get(self, "instance_id")

    @property
    @pulumi.getter
    def status(self) -> Optional[str]:
        """
        The status of the node.
        """
        return pulumi.get(self, "status")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class NodeBalancerConfigNodeStatus(dict):
    def __init__(__self__, *,
                 down: Optional[int] = None,
                 up: Optional[int] = None):
        if down is not None:
            pulumi.set(__self__, "down", down)
        if up is not None:
            pulumi.set(__self__, "up", up)

    @property
    @pulumi.getter
    def down(self) -> Optional[int]:
        return pulumi.get(self, "down")

    @property
    @pulumi.getter
    def up(self) -> Optional[int]:
        return pulumi.get(self, "up")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class NodeBalancerTransfer(dict):
    def __init__(__self__, *,
                 in_: Optional[float] = None,
                 out: Optional[float] = None,
                 total: Optional[float] = None):
        if in_ is not None:
            pulumi.set(__self__, "in_", in_)
        if out is not None:
            pulumi.set(__self__, "out", out)
        if total is not None:
            pulumi.set(__self__, "total", total)

    @property
    @pulumi.getter(name="in")
    def in_(self) -> Optional[float]:
        return pulumi.get(self, "in_")

    @property
    @pulumi.getter
    def out(self) -> Optional[float]:
        return pulumi.get(self, "out")

    @property
    @pulumi.getter
    def total(self) -> Optional[float]:
        return pulumi.get(self, "total")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class ObjectStorageBucketCert(dict):
    def __init__(__self__, *,
                 certificate: str,
                 private_key: str):
        """
        :param str certificate: The Base64 encoded and PEM formatted SSL certificate.
        :param str private_key: The private key associated with the TLS/SSL certificate.
        """
        pulumi.set(__self__, "certificate", certificate)
        pulumi.set(__self__, "private_key", private_key)

    @property
    @pulumi.getter
    def certificate(self) -> str:
        """
        The Base64 encoded and PEM formatted SSL certificate.
        """
        return pulumi.get(self, "certificate")

    @property
    @pulumi.getter(name="privateKey")
    def private_key(self) -> str:
        """
        The private key associated with the TLS/SSL certificate.
        """
        return pulumi.get(self, "private_key")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class ObjectStorageKeyBucketAccess(dict):
    def __init__(__self__, *,
                 bucket_name: str,
                 cluster: str,
                 permissions: str):
        """
        :param str bucket_name: The unique label of the bucket to which the key will grant limited access.
        :param str cluster: The Object Storage cluster where a bucket to which the key is granting access is hosted.
        :param str permissions: This Limited Access Key’s permissions for the selected bucket. Can be one of `"read_write"` or `"read_only"`. *Changing `permissions` forces the creation of a new Object Storage Key.*.
        """
        pulumi.set(__self__, "bucket_name", bucket_name)
        pulumi.set(__self__, "cluster", cluster)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter(name="bucketName")
    def bucket_name(self) -> str:
        """
        The unique label of the bucket to which the key will grant limited access.
        """
        return pulumi.get(self, "bucket_name")

    @property
    @pulumi.getter
    def cluster(self) -> str:
        """
        The Object Storage cluster where a bucket to which the key is granting access is hosted.
        """
        return pulumi.get(self, "cluster")

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        This Limited Access Key’s permissions for the selected bucket. Can be one of `"read_write"` or `"read_only"`. *Changing `permissions` forces the creation of a new Object Storage Key.*.
        """
        return pulumi.get(self, "permissions")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class StackScriptUserDefinedField(dict):
    def __init__(__self__, *,
                 default: Optional[str] = None,
                 example: Optional[str] = None,
                 label: Optional[str] = None,
                 many_of: Optional[str] = None,
                 name: Optional[str] = None,
                 one_of: Optional[str] = None):
        """
        :param str label: The StackScript's label is for display purposes only.
        """
        if default is not None:
            pulumi.set(__self__, "default", default)
        if example is not None:
            pulumi.set(__self__, "example", example)
        if label is not None:
            pulumi.set(__self__, "label", label)
        if many_of is not None:
            pulumi.set(__self__, "many_of", many_of)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if one_of is not None:
            pulumi.set(__self__, "one_of", one_of)

    @property
    @pulumi.getter
    def default(self) -> Optional[str]:
        return pulumi.get(self, "default")

    @property
    @pulumi.getter
    def example(self) -> Optional[str]:
        return pulumi.get(self, "example")

    @property
    @pulumi.getter
    def label(self) -> Optional[str]:
        """
        The StackScript's label is for display purposes only.
        """
        return pulumi.get(self, "label")

    @property
    @pulumi.getter(name="manyOf")
    def many_of(self) -> Optional[str]:
        return pulumi.get(self, "many_of")

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="oneOf")
    def one_of(self) -> Optional[str]:
        return pulumi.get(self, "one_of")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class VlanAttachedLinode(dict):
    def __init__(__self__, *,
                 id: Optional[int] = None,
                 ipv4_address: Optional[str] = None,
                 mac_address: Optional[str] = None):
        """
        :param int id: The ID of the Linode.
        :param str ipv4_address: The IPv4 address of the Linode.
        :param str mac_address: The mac address of the Linode.
        """
        if id is not None:
            pulumi.set(__self__, "id", id)
        if ipv4_address is not None:
            pulumi.set(__self__, "ipv4_address", ipv4_address)
        if mac_address is not None:
            pulumi.set(__self__, "mac_address", mac_address)

    @property
    @pulumi.getter
    def id(self) -> Optional[int]:
        """
        The ID of the Linode.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="ipv4Address")
    def ipv4_address(self) -> Optional[str]:
        """
        The IPv4 address of the Linode.
        """
        return pulumi.get(self, "ipv4_address")

    @property
    @pulumi.getter(name="macAddress")
    def mac_address(self) -> Optional[str]:
        """
        The mac address of the Linode.
        """
        return pulumi.get(self, "mac_address")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class GetInstanceTypeAddonsResult(dict):
    def __init__(__self__, *,
                 backups: 'outputs.GetInstanceTypeAddonsBackupsResult'):
        pulumi.set(__self__, "backups", backups)

    @property
    @pulumi.getter
    def backups(self) -> 'outputs.GetInstanceTypeAddonsBackupsResult':
        return pulumi.get(self, "backups")


@pulumi.output_type
class GetInstanceTypeAddonsBackupsResult(dict):
    def __init__(__self__, *,
                 price: 'outputs.GetInstanceTypeAddonsBackupsPriceResult'):
        pulumi.set(__self__, "price", price)

    @property
    @pulumi.getter
    def price(self) -> 'outputs.GetInstanceTypeAddonsBackupsPriceResult':
        return pulumi.get(self, "price")


@pulumi.output_type
class GetInstanceTypeAddonsBackupsPriceResult(dict):
    def __init__(__self__, *,
                 hourly: float,
                 monthly: float):
        pulumi.set(__self__, "hourly", hourly)
        pulumi.set(__self__, "monthly", monthly)

    @property
    @pulumi.getter
    def hourly(self) -> float:
        return pulumi.get(self, "hourly")

    @property
    @pulumi.getter
    def monthly(self) -> float:
        return pulumi.get(self, "monthly")


@pulumi.output_type
class GetInstanceTypePriceResult(dict):
    def __init__(__self__, *,
                 hourly: float,
                 monthly: float):
        pulumi.set(__self__, "hourly", hourly)
        pulumi.set(__self__, "monthly", monthly)

    @property
    @pulumi.getter
    def hourly(self) -> float:
        return pulumi.get(self, "hourly")

    @property
    @pulumi.getter
    def monthly(self) -> float:
        return pulumi.get(self, "monthly")


@pulumi.output_type
class GetProfileReferralsResult(dict):
    def __init__(__self__, *,
                 code: str,
                 completed: int,
                 credit: float,
                 pending: int,
                 total: int,
                 url: str):
        pulumi.set(__self__, "code", code)
        pulumi.set(__self__, "completed", completed)
        pulumi.set(__self__, "credit", credit)
        pulumi.set(__self__, "pending", pending)
        pulumi.set(__self__, "total", total)
        pulumi.set(__self__, "url", url)

    @property
    @pulumi.getter
    def code(self) -> str:
        return pulumi.get(self, "code")

    @property
    @pulumi.getter
    def completed(self) -> int:
        return pulumi.get(self, "completed")

    @property
    @pulumi.getter
    def credit(self) -> float:
        return pulumi.get(self, "credit")

    @property
    @pulumi.getter
    def pending(self) -> int:
        return pulumi.get(self, "pending")

    @property
    @pulumi.getter
    def total(self) -> int:
        return pulumi.get(self, "total")

    @property
    @pulumi.getter
    def url(self) -> str:
        return pulumi.get(self, "url")


@pulumi.output_type
class GetStackScriptUserDefinedFieldResult(dict):
    def __init__(__self__, *,
                 default: str,
                 example: str,
                 label: str,
                 many_of: str,
                 name: str,
                 one_of: str):
        pulumi.set(__self__, "default", default)
        pulumi.set(__self__, "example", example)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "many_of", many_of)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "one_of", one_of)

    @property
    @pulumi.getter
    def default(self) -> str:
        return pulumi.get(self, "default")

    @property
    @pulumi.getter
    def example(self) -> str:
        return pulumi.get(self, "example")

    @property
    @pulumi.getter
    def label(self) -> str:
        return pulumi.get(self, "label")

    @property
    @pulumi.getter(name="manyOf")
    def many_of(self) -> str:
        return pulumi.get(self, "many_of")

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="oneOf")
    def one_of(self) -> str:
        return pulumi.get(self, "one_of")


