{
    "name": "equinix-metal",
    "description": "A Pulumi package for creating and managing equinix-metal cloud resources.",
    "keywords": [
        "pulumi",
        "equinix-metal"
    ],
    "homepage": "https://pulumi.io",
    "license": "Apache-2.0",
    "attribution": "This Pulumi package is based on the [`metal` Terraform Provider](https://github.com/equinix/terraform-provider-metal).",
    "repository": "https://github.com/pulumi/pulumi-equinix-metal",
    "meta": {
        "moduleFormat": "(.*)(?:/[^/]*)"
    },
    "config": {
        "variables": {
            "authToken": {
                "type": "string",
                "description": "The API auth key for API operations.\n"
            },
            "maxRetries": {
                "type": "integer"
            },
            "maxRetryWaitSeconds": {
                "type": "integer"
            }
        },
        "defaults": [
            "authToken"
        ]
    },
    "types": {
        "equinix-metal:index/BillingCycle:BillingCycle": {
            "type": "string",
            "enum": [
                {
                    "name": "Hourly",
                    "value": "hourly"
                },
                {
                    "name": "Monthly",
                    "value": "monthly"
                }
            ]
        },
        "equinix-metal:index/ConnectionPort:ConnectionPort": {
            "properties": {
                "id": {
                    "type": "string",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "linkStatus": {
                    "type": "string",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "name": {
                    "type": "string",
                    "description": "Name of the connection resource\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "role": {
                    "type": "string",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "speed": {
                    "type": "integer",
                    "description": "Port speed in bits per second\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "status": {
                    "type": "string",
                    "description": "Status of the connection resource\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "virtualCircuitIds": {
                    "type": "array",
                    "items": {
                        "$ref": "pulumi.json#/Any"
                    },
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "linkStatus",
                        "name",
                        "role",
                        "speed",
                        "status",
                        "virtualCircuitIds"
                    ]
                }
            }
        },
        "equinix-metal:index/DeviceIpAddress:DeviceIpAddress": {
            "properties": {
                "cidr": {
                    "type": "integer",
                    "description": "CIDR suffix for IP address block to be assigned, i.e. amount of addresses.\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "reservationIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of UUIDs of IP block reservations from which the public IPv4 address should be taken.\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "type": {
                    "type": "string",
                    "description": "One of [`private_ipv4`, `public_ipv4`, `public_ipv6`]\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "equinix-metal:index/DeviceNetwork:DeviceNetwork": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "IPv4 or IPv6 address string\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "cidr": {
                    "type": "integer",
                    "description": "CIDR suffix for IP address block to be assigned, i.e. amount of addresses.\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "family": {
                    "type": "integer",
                    "description": "IP version - \"4\" or \"6\"\n* `network_type` Network type of a device, used in [Layer 2 networking](https://metal.equinix.com/developers/docs/networking/layer2/). Will be one of `layer3`, `hybrid`, `layer2-individual` and `layer2-bonded`.\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "gateway": {
                    "type": "string",
                    "description": "address of router\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "public": {
                    "type": "boolean",
                    "description": "whether the address is routable from the Internet\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "cidr",
                        "family",
                        "gateway",
                        "public"
                    ]
                }
            }
        },
        "equinix-metal:index/DevicePort:DevicePort": {
            "properties": {
                "bonded": {
                    "type": "boolean",
                    "description": "Whether this port is part of a bond in bonded network setup\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "id": {
                    "type": "string",
                    "description": "ID of the port\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "mac": {
                    "type": "string",
                    "description": "MAC address assigned to the port\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "name": {
                    "type": "string",
                    "description": "Name of the port (e.g. `eth0`, or `bond0`)\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "type": {
                    "type": "string",
                    "description": "One of [`private_ipv4`, `public_ipv4`, `public_ipv6`]\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "bonded",
                        "id",
                        "mac",
                        "name",
                        "type"
                    ]
                }
            }
        },
        "equinix-metal:index/DeviceReinstall:DeviceReinstall": {
            "properties": {
                "deprovisionFast": {
                    "type": "boolean",
                    "description": "Whether the OS disk should be filled with `00h` bytes before reinstall. Defaults to `false`.\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the provider should favour reinstall over destroy and create. Defaults to `false`.\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "preserveData": {
                    "type": "boolean",
                    "description": "Whether the non-OS disks should be kept or wiped during reinstall. Defaults to `false`.\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object"
        },
        "equinix-metal:index/Facility:Facility": {
            "type": "string",
            "enum": [
                {
                    "name": "EWR1",
                    "value": "ewr1"
                },
                {
                    "name": "SJC1",
                    "value": "sjc1"
                },
                {
                    "name": "DFW1",
                    "value": "dfw1"
                },
                {
                    "name": "DFW2",
                    "value": "dfw2"
                },
                {
                    "name": "AMS1",
                    "value": "ams1"
                },
                {
                    "name": "NRT1",
                    "value": "nrt1"
                },
                {
                    "name": "SEA1",
                    "value": "sea1"
                },
                {
                    "name": "LAX1",
                    "value": "lax1"
                },
                {
                    "name": "ORD1",
                    "value": "ord1"
                },
                {
                    "name": "ATL1",
                    "value": "atl1"
                },
                {
                    "name": "IAD1",
                    "value": "iad1"
                },
                {
                    "name": "SIN1",
                    "value": "sin1"
                },
                {
                    "name": "HKG1",
                    "value": "hkg1"
                },
                {
                    "name": "SYD1",
                    "value": "syd1"
                },
                {
                    "name": "MRS1",
                    "value": "mrs1"
                },
                {
                    "name": "YYZ1",
                    "value": "yyz1"
                },
                {
                    "name": "FRA2",
                    "value": "fra2"
                },
                {
                    "name": "AM6",
                    "value": "am6"
                },
                {
                    "name": "DC13",
                    "value": "dc13"
                },
                {
                    "name": "CH3",
                    "value": "ch3"
                },
                {
                    "name": "DA3",
                    "value": "da3"
                },
                {
                    "name": "DA11",
                    "value": "da11"
                },
                {
                    "name": "LA4",
                    "value": "la4"
                },
                {
                    "name": "NY5",
                    "value": "ny5"
                },
                {
                    "name": "SG1",
                    "value": "sg1"
                },
                {
                    "name": "SV15",
                    "value": "sv15"
                }
            ]
        },
        "equinix-metal:index/IpBlockType:IpBlockType": {
            "type": "string",
            "enum": [
                {
                    "name": "GlobalIPv4",
                    "value": "global_ipv4"
                },
                {
                    "name": "PublicIPv4",
                    "value": "public_ipv4"
                }
            ]
        },
        "equinix-metal:index/NetworkType:NetworkType": {
            "type": "string",
            "enum": [
                {
                    "name": "Layer3",
                    "value": "layer3"
                },
                {
                    "name": "Layer2Individual",
                    "value": "layer2-individual"
                },
                {
                    "name": "Layer2Bonded",
                    "value": "layer2-bonded"
                },
                {
                    "name": "Hybrid",
                    "value": "hybrid"
                }
            ]
        },
        "equinix-metal:index/OperatingSystem:OperatingSystem": {
            "type": "string",
            "enum": [
                {
                    "name": "Alpine3",
                    "value": "alpine_3"
                },
                {
                    "name": "CentOS6",
                    "value": "centos_6"
                },
                {
                    "name": "CentOS7",
                    "value": "centos_7"
                },
                {
                    "name": "CentOS8",
                    "value": "centos_8"
                },
                {
                    "name": "CoreOSAlpha",
                    "value": "coreos_alpha"
                },
                {
                    "name": "CoreOSBeta",
                    "value": "coreos_beta"
                },
                {
                    "name": "CoreOSStable",
                    "value": "coreos_stable"
                },
                {
                    "name": "CustomIPXE",
                    "value": "custom_ipxe"
                },
                {
                    "name": "Debian8",
                    "value": "debian_8"
                },
                {
                    "name": "Debian9",
                    "value": "debian_9"
                },
                {
                    "name": "Debian10",
                    "value": "debian_10"
                },
                {
                    "name": "FlatcarAlpha",
                    "value": "flatcar_alpha"
                },
                {
                    "name": "FlatcarBeta",
                    "value": "flatcar_beta"
                },
                {
                    "name": "FlatcarEdge",
                    "value": "flatcar_edge"
                },
                {
                    "name": "FlatcarStable",
                    "value": "flatcar_stable"
                },
                {
                    "name": "FreeBSD10_4",
                    "value": "freebsd_10_4"
                },
                {
                    "name": "FreeBSD11_1",
                    "value": "freebsd_11_1"
                },
                {
                    "name": "FreeBSD11_2",
                    "value": "freebsd_11_2"
                },
                {
                    "name": "FreeBSD12Testing",
                    "value": "freebsd_12_testing"
                },
                {
                    "name": "NixOS18_03",
                    "value": "nixos_18_03"
                },
                {
                    "name": "NixOS19_03",
                    "value": "nixos_19_03"
                },
                {
                    "name": "OpenSUSE42_3",
                    "value": "opensuse_42_3"
                },
                {
                    "name": "RancherOS",
                    "value": "rancher"
                },
                {
                    "name": "RHEL7",
                    "value": "rhel_7"
                },
                {
                    "name": "RHEL8",
                    "value": "rhel_8"
                },
                {
                    "name": "ScientificLinux6",
                    "value": "scientific_6"
                },
                {
                    "name": "SLES12SP3",
                    "value": "suse_sles12_sp3"
                },
                {
                    "name": "Ubuntu1404",
                    "value": "ubuntu_14_04"
                },
                {
                    "name": "Ubuntu1604",
                    "value": "ubuntu_16_04"
                },
                {
                    "name": "Ubuntu1710",
                    "value": "ubuntu_17_10"
                },
                {
                    "name": "Ubuntu1804",
                    "value": "ubuntu_18_04"
                },
                {
                    "name": "Ubuntu2004",
                    "value": "ubuntu_20_04"
                },
                {
                    "name": "Ubuntu2010",
                    "value": "ubuntu_20_10"
                },
                {
                    "name": "VMWareEsxi6_5",
                    "value": "vmware_esxi_6_5"
                },
                {
                    "name": "VMWareEsxi6_7",
                    "value": "vmware_esxi_6_7"
                },
                {
                    "name": "VMWareEsxi7_0",
                    "value": "vmware_esxi_7_0"
                },
                {
                    "name": "Windows2012R2",
                    "value": "windows_2012_r2"
                },
                {
                    "name": "Windows2016",
                    "value": "windows_2016"
                },
                {
                    "name": "Windows2019",
                    "value": "windows_2019"
                }
            ]
        },
        "equinix-metal:index/Plan:Plan": {
            "type": "string",
            "enum": [
                {
                    "name": "C2LargeARM",
                    "value": "c2.large.arm"
                },
                {
                    "name": "C2MediumX86",
                    "value": "c2.medium.x86"
                },
                {
                    "name": "C1SmallX86",
                    "value": "baremetal_1"
                },
                {
                    "name": "C1LargeARM",
                    "value": "baremetal_2a"
                },
                {
                    "name": "C1XLargeX86",
                    "value": "baremetal_3"
                },
                {
                    "name": "X2XLargeX86",
                    "value": "x2.xlarge.x86"
                },
                {
                    "name": "X1SmallX86",
                    "value": "baremetal_1e"
                },
                {
                    "name": "G2LargeX86",
                    "value": "g2.large.x86"
                },
                {
                    "name": "M2XLargeX86",
                    "value": "m2.xlarge.x86"
                },
                {
                    "name": "M1XLargeX86",
                    "value": "baremetal_2"
                },
                {
                    "name": "T1SmallX86",
                    "value": "baremetal_0"
                },
                {
                    "name": "S1LargeX86",
                    "value": "baremetal_s"
                },
                {
                    "name": "C3SmallX86",
                    "value": "c3.small.x86"
                },
                {
                    "name": "C3MediumX86",
                    "value": "c3.medium.x86"
                },
                {
                    "name": "F3MediumX86",
                    "value": "f3.medium.x86"
                },
                {
                    "name": "F3LargeX86",
                    "value": "f3.large.x86"
                },
                {
                    "name": "M3LargeX86",
                    "value": "m3.large.x86"
                },
                {
                    "name": "S3XLargeX86",
                    "value": "s3.xlarge.x86"
                },
                {
                    "name": "N2XLargeX86",
                    "value": "n2.xlarge.x86"
                }
            ]
        },
        "equinix-metal:index/ProjectBgpConfig:ProjectBgpConfig": {
            "properties": {
                "asn": {
                    "type": "integer",
                    "description": "Autonomous System Number for local BGP deployment\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "deploymentType": {
                    "type": "string",
                    "description": "`private` or `public`, the `private` is likely to be usable immediately, the `public` will need to be review by Equinix Metal engineers\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "maxPrefix": {
                    "type": "integer",
                    "description": "The maximum number of route filters allowed per server\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "md5": {
                    "type": "string",
                    "description": "Password for BGP session in plaintext (not a checksum)\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "status": {
                    "type": "string",
                    "description": "status of BGP configuration in the project\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "required": [
                "asn",
                "deploymentType"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "asn",
                        "deploymentType",
                        "maxPrefix",
                        "status"
                    ]
                }
            }
        },
        "equinix-metal:index/SpotMarketRequestInstanceParameters:SpotMarketRequestInstanceParameters": {
            "properties": {
                "alwaysPxe": {
                    "type": "boolean",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "billingCycle": {
                    "type": "string",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "customdata": {
                    "type": "string",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "description": {
                    "type": "string",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "features": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "hostname": {
                    "type": "string",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "ipxeScriptUrl": {
                    "type": "string",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "locked": {
                    "type": "boolean",
                    "description": "Blocks deletion of the SpotMarketRequest device until the lock is disabled\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "operatingSystem": {
                    "type": "string",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "plan": {
                    "type": "string",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "projectSshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "termintationTime": {
                    "type": "string",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "userSshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "userdata": {
                    "type": "string",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "required": [
                "billingCycle",
                "hostname",
                "operatingSystem",
                "plan"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "billingCycle",
                        "hostname",
                        "operatingSystem",
                        "plan",
                        "termintationTime"
                    ]
                }
            }
        },
        "equinix-metal:index/VolumeAttachment:VolumeAttachment": {
            "properties": {
                "href": {
                    "type": "string",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "href"
                    ]
                }
            }
        },
        "equinix-metal:index/VolumeSnapshotPolicy:VolumeSnapshotPolicy": {
            "properties": {
                "snapshotCount": {
                    "type": "integer",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "snapshotFrequency": {
                    "type": "string",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "required": [
                "snapshotCount",
                "snapshotFrequency"
            ]
        },
        "equinix-metal:index/getConnectionPort:getConnectionPort": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "Port UUID\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "linkStatus": {
                    "type": "string",
                    "description": "Port link status\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "name": {
                    "type": "string",
                    "description": "Port name\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "role": {
                    "type": "string",
                    "description": "Port role - primary or secondary\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "speed": {
                    "type": "integer",
                    "description": "Port speed in bits per second\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "status": {
                    "type": "string",
                    "description": "Port status\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "virtualCircuitIds": {
                    "type": "array",
                    "items": {
                        "$ref": "pulumi.json#/Any"
                    },
                    "description": "List of IDs of virtual cicruits attached to this port\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "required": [
                "id",
                "linkStatus",
                "name",
                "role",
                "speed",
                "status",
                "virtualCircuitIds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "equinix-metal:index/getDeviceBgpNeighborsBgpNeighbor:getDeviceBgpNeighborsBgpNeighbor": {
            "properties": {
                "addressFamily": {
                    "type": "integer",
                    "description": "IP address version, 4 or 6\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "customerAs": {
                    "type": "integer",
                    "description": "Local autonomous system number\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "customerIp": {
                    "type": "string",
                    "description": "Local used peer IP address\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "md5Enabled": {
                    "type": "boolean",
                    "description": "Whether BGP session is password enabled\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "md5Password": {
                    "type": "string",
                    "description": "BGP session password in plaintext (not a checksum)\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "multihop": {
                    "type": "boolean",
                    "description": "Whether the neighbor is in EBGP multihop session\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "peerAs": {
                    "type": "integer",
                    "description": "Peer AS number (different than customer_as for EBGP)\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "peerIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Array of IP addresses of this neighbor's peers\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "routesIns": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/equinix-metal:index/getDeviceBgpNeighborsBgpNeighborRoutesIn:getDeviceBgpNeighborsBgpNeighborRoutesIn"
                    },
                    "description": "Array of incoming routes. Each route has attributes:\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "routesOuts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/equinix-metal:index/getDeviceBgpNeighborsBgpNeighborRoutesOut:getDeviceBgpNeighborsBgpNeighborRoutesOut"
                    },
                    "description": "Array of outgoing routes in the same format\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "required": [
                "addressFamily",
                "customerAs",
                "customerIp",
                "md5Enabled",
                "md5Password",
                "multihop",
                "peerAs",
                "routesIns",
                "routesOuts"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "equinix-metal:index/getDeviceBgpNeighborsBgpNeighborRoutesIn:getDeviceBgpNeighborsBgpNeighborRoutesIn": {
            "properties": {
                "exact": {
                    "type": "boolean",
                    "description": "(bool) Whether the route is exact\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "route": {
                    "type": "string",
                    "description": "CIDR expression of route (IP/mask)\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "required": [
                "exact",
                "route"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "equinix-metal:index/getDeviceBgpNeighborsBgpNeighborRoutesOut:getDeviceBgpNeighborsBgpNeighborRoutesOut": {
            "properties": {
                "exact": {
                    "type": "boolean",
                    "description": "(bool) Whether the route is exact\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "route": {
                    "type": "string",
                    "description": "CIDR expression of route (IP/mask)\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "required": [
                "exact",
                "route"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "equinix-metal:index/getDeviceNetwork:getDeviceNetwork": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "IPv4 or IPv6 address string\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "cidr": {
                    "type": "integer",
                    "description": "Bit length of the network mask of the address\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "family": {
                    "type": "integer",
                    "description": "IP version - \"4\" or \"6\"\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "gateway": {
                    "type": "string",
                    "description": "Address of router\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "public": {
                    "type": "boolean",
                    "description": "Whether the address is routable from the Internet\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "required": [
                "address",
                "cidr",
                "family",
                "gateway",
                "public"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "equinix-metal:index/getDevicePort:getDevicePort": {
            "properties": {
                "bonded": {
                    "type": "boolean",
                    "description": "Whether this port is part of a bond in bonded network setup\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "id": {
                    "type": "string",
                    "description": "ID of the port\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "mac": {
                    "type": "string",
                    "description": "MAC address assigned to the port\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "name": {
                    "type": "string",
                    "description": "Name of the port (e.g. `eth0`, or `bond0`)\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "type": {
                    "type": "string",
                    "description": "Type of the port (e.g. `NetworkPort` or `NetworkBondPort`)\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "required": [
                "bonded",
                "id",
                "mac",
                "name",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "equinix-metal:index/getFacilityCapacity:getFacilityCapacity": {
            "properties": {
                "plan": {
                    "type": "string",
                    "description": "device plan to check\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "quantity": {
                    "type": "integer",
                    "description": "number of device to check\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "required": [
                "plan"
            ]
        },
        "equinix-metal:index/getMetroCapacity:getMetroCapacity": {
            "properties": {
                "plan": {
                    "type": "string",
                    "description": "device plan to check\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "quantity": {
                    "type": "integer",
                    "description": "number of device to check\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "required": [
                "plan"
            ]
        },
        "equinix-metal:index/getProjectBgpConfig:getProjectBgpConfig": {
            "properties": {
                "asn": {
                    "type": "integer",
                    "description": "Autonomous System Number for local BGP deployment\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "deploymentType": {
                    "type": "string",
                    "description": "`private` or `public`, the `private` is likely to be usable immediately, the `public` will need to be review by Equinix Metal engineers\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "maxPrefix": {
                    "type": "integer",
                    "description": "The maximum number of route filters allowed per server\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "md5": {
                    "type": "string",
                    "description": "Password for BGP session in plaintext (not a checksum)\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "status": {
                    "type": "string",
                    "description": "status of BGP configuration in the project\n",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "required": [
                "asn",
                "deploymentType",
                "maxPrefix",
                "status"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "equinix-metal:index/getVolumeSnapshotPolicy:getVolumeSnapshotPolicy": {
            "properties": {
                "snapshotCount": {
                    "type": "integer",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                },
                "snapshotFrequency": {
                    "type": "string",
                    "language": {
                        "python": {
                            "mapCase": false
                        }
                    }
                }
            },
            "type": "object",
            "required": [
                "snapshotCount",
                "snapshotFrequency"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        }
    },
    "provider": {
        "description": "The provider type for the metal package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n",
        "properties": {
            "authToken": {
                "type": "string",
                "description": "The API auth key for API operations.\n"
            },
            "maxRetries": {
                "type": "integer"
            },
            "maxRetryWaitSeconds": {
                "type": "integer"
            }
        },
        "required": [
            "authToken"
        ],
        "inputProperties": {
            "authToken": {
                "type": "string",
                "description": "The API auth key for API operations.\n"
            },
            "maxRetries": {
                "type": "integer"
            },
            "maxRetryWaitSeconds": {
                "type": "integer"
            }
        },
        "requiredInputs": [
            "authToken"
        ]
    },
    "resources": {
        "equinix-metal:index/bgpSession:BgpSession": {
            "description": "Provides a resource to manage BGP sessions in Equinix Metal Host. Refer to [Equinix Metal BGP documentation](https://metal.equinix.com/developers/docs/networking/local-global-bgp/) for more details.\n\nYou need to have BGP config enabled in your project.\n\nBGP session must be linked to a device running [BIRD](https://bird.network.cz) or other BGP routing daemon which will control route advertisements via the session to Equinix Metal's upstream routers.\n",
            "properties": {
                "addressFamily": {
                    "type": "string",
                    "description": "`ipv4` or `ipv6`\n"
                },
                "defaultRoute": {
                    "type": "boolean",
                    "description": "Boolean flag to set the default route policy. False by default.\n"
                },
                "deviceId": {
                    "type": "string",
                    "description": "ID of device\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the session - up or down\n"
                }
            },
            "required": [
                "addressFamily",
                "deviceId",
                "status"
            ],
            "inputProperties": {
                "addressFamily": {
                    "type": "string",
                    "description": "`ipv4` or `ipv6`\n"
                },
                "defaultRoute": {
                    "type": "boolean",
                    "description": "Boolean flag to set the default route policy. False by default.\n"
                },
                "deviceId": {
                    "type": "string",
                    "description": "ID of device\n"
                }
            },
            "requiredInputs": [
                "addressFamily",
                "deviceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering BgpSession resources.\n",
                "properties": {
                    "addressFamily": {
                        "type": "string",
                        "description": "`ipv4` or `ipv6`\n"
                    },
                    "defaultRoute": {
                        "type": "boolean",
                        "description": "Boolean flag to set the default route policy. False by default.\n"
                    },
                    "deviceId": {
                        "type": "string",
                        "description": "ID of device\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "Status of the session - up or down\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/connection:Connection": {
            "description": "Use this resource to request of create an Interconnection from [Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst test = new equinix_metal.Connection(\"test\", {\n    organizationId: local.my_organization_id,\n    projectId: local.my_project_id,\n    metro: \"sv\",\n    redundancy: \"redundant\",\n    type: \"shared\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\ntest = equinix_metal.Connection(\"test\",\n    organization_id=local[\"my_organization_id\"],\n    project_id=local[\"my_project_id\"],\n    metro=\"sv\",\n    redundancy=\"redundant\",\n    type=\"shared\")\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var test = new EquinixMetal.Connection(\"test\", new EquinixMetal.ConnectionArgs\n        {\n            OrganizationId = local.My_organization_id,\n            ProjectId = local.My_project_id,\n            Metro = \"sv\",\n            Redundancy = \"redundant\",\n            Type = \"shared\",\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := equinix - metal.NewConnection(ctx, \"test\", \u0026equinix-metal.ConnectionArgs{\n\t\t\tOrganizationId: pulumi.Any(local.My_organization_id),\n\t\t\tProjectId:      pulumi.Any(local.My_project_id),\n\t\t\tMetro:          pulumi.String(\"sv\"),\n\t\t\tRedundancy:     pulumi.String(\"redundant\"),\n\t\t\tType:           pulumi.String(\"shared\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description for the connection resource\n"
                },
                "facility": {
                    "type": "string",
                    "description": "Facility where the connection will be created\n"
                },
                "metro": {
                    "type": "string",
                    "description": "Metro where the connection will be created\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Mode for connections in IBX facilities with the dedicated type - standard or tunnel\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the connection resource\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "ID of the organization responsible for the connection\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/equinix-metal:index/ConnectionPort:ConnectionPort"
                    },
                    "description": "List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the equinix-metal.Connection datasource.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "ID of the project where the connection is scoped to, must be set for shared connection\n"
                },
                "redundancy": {
                    "type": "string",
                    "description": "Connection redundancy - redundant or primary\n"
                },
                "speed": {
                    "type": "integer",
                    "description": "Port speed in bits per second\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the connection resource\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "String list of tags\n"
                },
                "token": {
                    "type": "string",
                    "description": "Fabric Token from the [Equinix Fabric Portal](https://ecxfabric.equinix.com/dashboard)\n"
                },
                "type": {
                    "type": "string",
                    "description": "Connection type - dedicated or shared\n"
                }
            },
            "required": [
                "facility",
                "metro",
                "name",
                "organizationId",
                "ports",
                "redundancy",
                "speed",
                "status",
                "token",
                "type"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "Description for the connection resource\n"
                },
                "facility": {
                    "type": "string",
                    "description": "Facility where the connection will be created\n"
                },
                "metro": {
                    "type": "string",
                    "description": "Metro where the connection will be created\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Mode for connections in IBX facilities with the dedicated type - standard or tunnel\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the connection resource\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "ID of the organization responsible for the connection\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "ID of the project where the connection is scoped to, must be set for shared connection\n"
                },
                "redundancy": {
                    "type": "string",
                    "description": "Connection redundancy - redundant or primary\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "String list of tags\n"
                },
                "type": {
                    "type": "string",
                    "description": "Connection type - dedicated or shared\n"
                }
            },
            "requiredInputs": [
                "organizationId",
                "redundancy",
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Connection resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "Description for the connection resource\n"
                    },
                    "facility": {
                        "type": "string",
                        "description": "Facility where the connection will be created\n"
                    },
                    "metro": {
                        "type": "string",
                        "description": "Metro where the connection will be created\n"
                    },
                    "mode": {
                        "type": "string",
                        "description": "Mode for connections in IBX facilities with the dedicated type - standard or tunnel\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the connection resource\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "ID of the organization responsible for the connection\n"
                    },
                    "ports": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/equinix-metal:index/ConnectionPort:ConnectionPort"
                        },
                        "description": "List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the equinix-metal.Connection datasource.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "ID of the project where the connection is scoped to, must be set for shared connection\n"
                    },
                    "redundancy": {
                        "type": "string",
                        "description": "Connection redundancy - redundant or primary\n"
                    },
                    "speed": {
                        "type": "integer",
                        "description": "Port speed in bits per second\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "Status of the connection resource\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "String list of tags\n"
                    },
                    "token": {
                        "type": "string",
                        "description": "Fabric Token from the [Equinix Fabric Portal](https://ecxfabric.equinix.com/dashboard)\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "Connection type - dedicated or shared\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/device:Device": {
            "description": "Provides an Equinix Metal device resource. This can be used to create,\nmodify, and delete devices.\n\n\u003e **Note:** All arguments including the `root_password` and `user_data` will be stored in\n the raw state as plain-text.\n[Read more about sensitive data in state](https://www.terraform.io/docs/state/sensitive-data.html).\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\nCreate a device and add it to cool_project\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst web1 = new equinix_metal.Device(\"web1\", {\n    hostname: \"tf.coreos2\",\n    plan: \"c3.small.x86\",\n    metro: \"sv\",\n    operatingSystem: \"ubuntu_20_04\",\n    billingCycle: \"hourly\",\n    projectId: local.project_id,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\nweb1 = equinix_metal.Device(\"web1\",\n    hostname=\"tf.coreos2\",\n    plan=\"c3.small.x86\",\n    metro=\"sv\",\n    operating_system=\"ubuntu_20_04\",\n    billing_cycle=\"hourly\",\n    project_id=local[\"project_id\"])\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var web1 = new EquinixMetal.Device(\"web1\", new EquinixMetal.DeviceArgs\n        {\n            Hostname = \"tf.coreos2\",\n            Plan = \"c3.small.x86\",\n            Metro = \"sv\",\n            OperatingSystem = \"ubuntu_20_04\",\n            BillingCycle = \"hourly\",\n            ProjectId = local.Project_id,\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := equinix - metal.NewDevice(ctx, \"web1\", \u0026equinix-metal.DeviceArgs{\n\t\t\tHostname:        pulumi.String(\"tf.coreos2\"),\n\t\t\tPlan:            pulumi.String(\"c3.small.x86\"),\n\t\t\tMetro:           pulumi.String(\"sv\"),\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_20_04\"),\n\t\t\tBillingCycle:    pulumi.String(\"hourly\"),\n\t\t\tProjectId:       pulumi.Any(local.Project_id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n\nSame as above, but boot via iPXE initially, using the Ignition Provider for provisioning\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst pxe1 = new equinix_metal.Device(\"pxe1\", {\n    hostname: \"tf.coreos2-pxe\",\n    plan: \"c3.small.x86\",\n    metro: \"sv\",\n    operatingSystem: \"custom_ipxe\",\n    billingCycle: \"hourly\",\n    projectId: local.project_id,\n    ipxeScriptUrl: \"https://rawgit.com/cloudnativelabs/pxe/master/metal/coreos-stable-metal.ipxe\",\n    alwaysPxe: \"false\",\n    userData: data.ignition_config.example.rendered,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\npxe1 = equinix_metal.Device(\"pxe1\",\n    hostname=\"tf.coreos2-pxe\",\n    plan=\"c3.small.x86\",\n    metro=\"sv\",\n    operating_system=\"custom_ipxe\",\n    billing_cycle=\"hourly\",\n    project_id=local[\"project_id\"],\n    ipxe_script_url=\"https://rawgit.com/cloudnativelabs/pxe/master/metal/coreos-stable-metal.ipxe\",\n    always_pxe=False,\n    user_data=data[\"ignition_config\"][\"example\"][\"rendered\"])\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var pxe1 = new EquinixMetal.Device(\"pxe1\", new EquinixMetal.DeviceArgs\n        {\n            Hostname = \"tf.coreos2-pxe\",\n            Plan = \"c3.small.x86\",\n            Metro = \"sv\",\n            OperatingSystem = \"custom_ipxe\",\n            BillingCycle = \"hourly\",\n            ProjectId = local.Project_id,\n            IpxeScriptUrl = \"https://rawgit.com/cloudnativelabs/pxe/master/metal/coreos-stable-metal.ipxe\",\n            AlwaysPxe = false,\n            UserData = data.Ignition_config.Example.Rendered,\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := equinix - metal.NewDevice(ctx, \"pxe1\", \u0026equinix-metal.DeviceArgs{\n\t\t\tHostname:        pulumi.String(\"tf.coreos2-pxe\"),\n\t\t\tPlan:            pulumi.String(\"c3.small.x86\"),\n\t\t\tMetro:           pulumi.String(\"sv\"),\n\t\t\tOperatingSystem: pulumi.String(\"custom_ipxe\"),\n\t\t\tBillingCycle:    pulumi.String(\"hourly\"),\n\t\t\tProjectId:       pulumi.Any(local.Project_id),\n\t\t\tIpxeScriptUrl:   pulumi.String(\"https://rawgit.com/cloudnativelabs/pxe/master/metal/coreos-stable-metal.ipxe\"),\n\t\t\tAlwaysPxe:       pulumi.Bool(false),\n\t\t\tUserData:        pulumi.Any(data.Ignition_config.Example.Rendered),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n\nCreate a device without a public IP address in facility ny5, with only a /30 private IPv4 subnet (4 IP addresses)\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst web1 = new equinix_metal.Device(\"web1\", {\n    hostname: \"tf.coreos2\",\n    plan: \"c3.small.x86\",\n    facilities: [\"ny5\"],\n    operatingSystem: \"ubuntu_20_04\",\n    billingCycle: \"hourly\",\n    projectId: local.project_id,\n    ipAddresses: [{\n        type: \"private_ipv4\",\n        cidr: 30,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\nweb1 = equinix_metal.Device(\"web1\",\n    hostname=\"tf.coreos2\",\n    plan=\"c3.small.x86\",\n    facilities=[\"ny5\"],\n    operating_system=\"ubuntu_20_04\",\n    billing_cycle=\"hourly\",\n    project_id=local[\"project_id\"],\n    ip_addresses=[equinix_metal.DeviceIpAddressArgs(\n        type=\"private_ipv4\",\n        cidr=30,\n    )])\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var web1 = new EquinixMetal.Device(\"web1\", new EquinixMetal.DeviceArgs\n        {\n            Hostname = \"tf.coreos2\",\n            Plan = \"c3.small.x86\",\n            Facilities = \n            {\n                \"ny5\",\n            },\n            OperatingSystem = \"ubuntu_20_04\",\n            BillingCycle = \"hourly\",\n            ProjectId = local.Project_id,\n            IpAddresses = \n            {\n                new EquinixMetal.Inputs.DeviceIpAddressArgs\n                {\n                    Type = \"private_ipv4\",\n                    Cidr = 30,\n                },\n            },\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := equinix - metal.NewDevice(ctx, \"web1\", \u0026equinix-metal.DeviceArgs{\n\t\t\tHostname: pulumi.String(\"tf.coreos2\"),\n\t\t\tPlan:     pulumi.String(\"c3.small.x86\"),\n\t\t\tFacilities: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ny5\"),\n\t\t\t},\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_20_04\"),\n\t\t\tBillingCycle:    pulumi.String(\"hourly\"),\n\t\t\tProjectId:       pulumi.Any(local.Project_id),\n\t\t\tIpAddresses: DeviceIpAddressArray{\n\t\t\t\t\u0026DeviceIpAddressArgs{\n\t\t\t\t\tType: pulumi.String(\"private_ipv4\"),\n\t\t\t\t\tCidr: pulumi.Int(30),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n\nDeploy device on next-available reserved hardware and do custom partitioning.\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst web1 = new equinix_metal.Device(\"web1\", {\n    hostname: \"tftest\",\n    plan: \"c3.small.x86\",\n    facilities: [\"ny5\"],\n    operatingSystem: \"ubuntu_20_04\",\n    billingCycle: \"hourly\",\n    projectId: local.project_id,\n    hardwareReservationId: \"next-available\",\n    storage: `{\n  \"disks\": [\n    {\n      \"device\": \"/dev/sda\",\n      \"wipeTable\": true,\n      \"partitions\": [\n        {\n          \"label\": \"BIOS\",\n          \"number\": 1,\n          \"size\": \"4096\"\n        },\n        {\n          \"label\": \"SWAP\",\n          \"number\": 2,\n          \"size\": \"3993600\"\n        },\n        {\n          \"label\": \"ROOT\",\n          \"number\": 3,\n          \"size\": \"0\"\n        }\n      ]\n    }\n  ],\n  \"filesystems\": [\n    {\n      \"mount\": {\n        \"device\": \"/dev/sda3\",\n        \"format\": \"ext4\",\n        \"point\": \"/\",\n        \"create\": {\n          \"options\": [\n            \"-L\",\n            \"ROOT\"\n          ]\n        }\n      }\n    },\n    {\n      \"mount\": {\n        \"device\": \"/dev/sda2\",\n        \"format\": \"swap\",\n        \"point\": \"none\",\n        \"create\": {\n          \"options\": [\n            \"-L\",\n            \"SWAP\"\n          ]\n        }\n      }\n    }\n  ]\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\nweb1 = equinix_metal.Device(\"web1\",\n    hostname=\"tftest\",\n    plan=\"c3.small.x86\",\n    facilities=[\"ny5\"],\n    operating_system=\"ubuntu_20_04\",\n    billing_cycle=\"hourly\",\n    project_id=local[\"project_id\"],\n    hardware_reservation_id=\"next-available\",\n    storage=\"\"\"{\n  \"disks\": [\n    {\n      \"device\": \"/dev/sda\",\n      \"wipeTable\": true,\n      \"partitions\": [\n        {\n          \"label\": \"BIOS\",\n          \"number\": 1,\n          \"size\": \"4096\"\n        },\n        {\n          \"label\": \"SWAP\",\n          \"number\": 2,\n          \"size\": \"3993600\"\n        },\n        {\n          \"label\": \"ROOT\",\n          \"number\": 3,\n          \"size\": \"0\"\n        }\n      ]\n    }\n  ],\n  \"filesystems\": [\n    {\n      \"mount\": {\n        \"device\": \"/dev/sda3\",\n        \"format\": \"ext4\",\n        \"point\": \"/\",\n        \"create\": {\n          \"options\": [\n            \"-L\",\n            \"ROOT\"\n          ]\n        }\n      }\n    },\n    {\n      \"mount\": {\n        \"device\": \"/dev/sda2\",\n        \"format\": \"swap\",\n        \"point\": \"none\",\n        \"create\": {\n          \"options\": [\n            \"-L\",\n            \"SWAP\"\n          ]\n        }\n      }\n    }\n  ]\n}\n\"\"\")\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var web1 = new EquinixMetal.Device(\"web1\", new EquinixMetal.DeviceArgs\n        {\n            Hostname = \"tftest\",\n            Plan = \"c3.small.x86\",\n            Facilities = \n            {\n                \"ny5\",\n            },\n            OperatingSystem = \"ubuntu_20_04\",\n            BillingCycle = \"hourly\",\n            ProjectId = local.Project_id,\n            HardwareReservationId = \"next-available\",\n            Storage = @\"{\n  \"\"disks\"\": [\n    {\n      \"\"device\"\": \"\"/dev/sda\"\",\n      \"\"wipeTable\"\": true,\n      \"\"partitions\"\": [\n        {\n          \"\"label\"\": \"\"BIOS\"\",\n          \"\"number\"\": 1,\n          \"\"size\"\": \"\"4096\"\"\n        },\n        {\n          \"\"label\"\": \"\"SWAP\"\",\n          \"\"number\"\": 2,\n          \"\"size\"\": \"\"3993600\"\"\n        },\n        {\n          \"\"label\"\": \"\"ROOT\"\",\n          \"\"number\"\": 3,\n          \"\"size\"\": \"\"0\"\"\n        }\n      ]\n    }\n  ],\n  \"\"filesystems\"\": [\n    {\n      \"\"mount\"\": {\n        \"\"device\"\": \"\"/dev/sda3\"\",\n        \"\"format\"\": \"\"ext4\"\",\n        \"\"point\"\": \"\"/\"\",\n        \"\"create\"\": {\n          \"\"options\"\": [\n            \"\"-L\"\",\n            \"\"ROOT\"\"\n          ]\n        }\n      }\n    },\n    {\n      \"\"mount\"\": {\n        \"\"device\"\": \"\"/dev/sda2\"\",\n        \"\"format\"\": \"\"swap\"\",\n        \"\"point\"\": \"\"none\"\",\n        \"\"create\"\": {\n          \"\"options\"\": [\n            \"\"-L\"\",\n            \"\"SWAP\"\"\n          ]\n        }\n      }\n    }\n  ]\n}\n\",\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := equinix - metal.NewDevice(ctx, \"web1\", \u0026equinix-metal.DeviceArgs{\n\t\t\tHostname: pulumi.String(\"tftest\"),\n\t\t\tPlan:     pulumi.String(\"c3.small.x86\"),\n\t\t\tFacilities: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ny5\"),\n\t\t\t},\n\t\t\tOperatingSystem:       pulumi.String(\"ubuntu_20_04\"),\n\t\t\tBillingCycle:          pulumi.String(\"hourly\"),\n\t\t\tProjectId:             pulumi.Any(local.Project_id),\n\t\t\tHardwareReservationId: pulumi.String(\"next-available\"),\n\t\t\tStorage:               pulumi.String(fmt.Sprintf(\"%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v%v\", \"{\\n\", \"  \\\"disks\\\": [\\n\", \"    {\\n\", \"      \\\"device\\\": \\\"/dev/sda\\\",\\n\", \"      \\\"wipeTable\\\": true,\\n\", \"      \\\"partitions\\\": [\\n\", \"        {\\n\", \"          \\\"label\\\": \\\"BIOS\\\",\\n\", \"          \\\"number\\\": 1,\\n\", \"          \\\"size\\\": \\\"4096\\\"\\n\", \"        },\\n\", \"        {\\n\", \"          \\\"label\\\": \\\"SWAP\\\",\\n\", \"          \\\"number\\\": 2,\\n\", \"          \\\"size\\\": \\\"3993600\\\"\\n\", \"        },\\n\", \"        {\\n\", \"          \\\"label\\\": \\\"ROOT\\\",\\n\", \"          \\\"number\\\": 3,\\n\", \"          \\\"size\\\": \\\"0\\\"\\n\", \"        }\\n\", \"      ]\\n\", \"    }\\n\", \"  ],\\n\", \"  \\\"filesystems\\\": [\\n\", \"    {\\n\", \"      \\\"mount\\\": {\\n\", \"        \\\"device\\\": \\\"/dev/sda3\\\",\\n\", \"        \\\"format\\\": \\\"ext4\\\",\\n\", \"        \\\"point\\\": \\\"/\\\",\\n\", \"        \\\"create\\\": {\\n\", \"          \\\"options\\\": [\\n\", \"            \\\"-L\\\",\\n\", \"            \\\"ROOT\\\"\\n\", \"          ]\\n\", \"        }\\n\", \"      }\\n\", \"    },\\n\", \"    {\\n\", \"      \\\"mount\\\": {\\n\", \"        \\\"device\\\": \\\"/dev/sda2\\\",\\n\", \"        \\\"format\\\": \\\"swap\\\",\\n\", \"        \\\"point\\\": \\\"none\\\",\\n\", \"        \\\"create\\\": {\\n\", \"          \\\"options\\\": [\\n\", \"            \\\"-L\\\",\\n\", \"            \\\"SWAP\\\"\\n\", \"          ]\\n\", \"        }\\n\", \"      }\\n\", \"    }\\n\", \"  ]\\n\", \"}\\n\")),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nThis resource can be imported using an existing device ID\n\n```sh\n $ pulumi import equinix-metal:index/device:Device metal_device {existing_device_id}\n```\n\n ",
            "properties": {
                "accessPrivateIpv4": {
                    "type": "string",
                    "description": "The ipv4 private IP assigned to the device\n"
                },
                "accessPublicIpv4": {
                    "type": "string",
                    "description": "The ipv4 maintenance IP assigned to the device\n"
                },
                "accessPublicIpv6": {
                    "type": "string",
                    "description": "The ipv6 maintenance IP assigned to the device\n"
                },
                "alwaysPxe": {
                    "type": "boolean",
                    "description": "If true, a device with OS `custom_ipxe` will continue to boot via iPXE on reboots.\n"
                },
                "billingCycle": {
                    "type": "string",
                    "description": "monthly or hourly\n"
                },
                "created": {
                    "type": "string",
                    "description": "The timestamp for when the device was created\n"
                },
                "customData": {
                    "type": "string",
                    "description": "A string of the desired Custom Data for the device.\n"
                },
                "deployedFacility": {
                    "type": "string",
                    "description": "The facility where the device is deployed.\n"
                },
                "deployedHardwareReservationId": {
                    "type": "string",
                    "description": "ID of hardware reservation where this device was deployed. It is useful when using the `next-available` hardware reservation.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The device description.\n"
                },
                "facilities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of facility codes with deployment preferences. Equinix Metal API will go through the list and will deploy your device to first facility with free capacity. List items must be facility codes or `any` (a wildcard). To find the facility code, visit [Facilities API docs](https://metal.equinix.com/developers/api/facilities/), set your API auth token in the top of the page and see JSON from the API response. Conflicts with `metro`.\n"
                },
                "forceDetachVolumes": {
                    "type": "boolean",
                    "description": "Delete device even if it has volumes attached. Only applies for destroy action.\n"
                },
                "hardwareReservationId": {
                    "type": "string",
                    "description": "The UUID of the hardware reservation where you want this device deployed, or next-available if you want to pick your\nnext available reservation automatically\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The device hostname used in deployments taking advantage of Layer3 DHCP or metadata service configuration.\n"
                },
                "ipAddresses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/equinix-metal:index/DeviceIpAddress:DeviceIpAddress"
                    },
                    "description": "A list of IP address types for the device (structure is documented below).\n"
                },
                "ipxeScriptUrl": {
                    "type": "string",
                    "description": "URL pointing to a hosted iPXE script. More information is in the [Custom iPXE](https://metal.equinix.com/developers/docs/servers/custom-ipxe/) doc.\n"
                },
                "locked": {
                    "type": "boolean",
                    "description": "Whether the device is locked\n"
                },
                "metro": {
                    "type": "string",
                    "description": "Metro area for the new device. Conflicts with `facilities`.\n"
                },
                "networkType": {
                    "type": "string",
                    "description": "Network type of a device, used in [Layer 2 networking](https://metal.equinix.com/developers/docs/networking/layer2/).\nWill be one of layer3, hybrid, hybrid-bonded, layer2-individual, layer2-bonded\n",
                    "deprecationMessage": "You should handle Network Type with the new metal_device_network_type resource."
                },
                "networks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/equinix-metal:index/DeviceNetwork:DeviceNetwork"
                    },
                    "description": "The device's private and public IP (v4 and v6) network details. When a device is run without any special network configuration, it will have 3 networks:\n* Public IPv4 at `metal_device.name.network.0`\n* IPv6 at `metal_device.name.network.1`\n* Private IPv4 at `metal_device.name.network.2`\nElastic addresses then stack by type - an assigned public IPv4 will go after the management public IPv4 (to index 1), and will then shift the indices of the IPv6 and private IPv4. Assigned private IPv4 will go after the management private IPv4 (to the end of the network list).\nThe fields of the network attributes are:\n"
                },
                "operatingSystem": {
                    "type": "string",
                    "description": "The operating system slug. To find the slug, or visit [Operating Systems API docs](https://metal.equinix.com/developers/api/operatingsystems), set your API auth token in the top of the page and see JSON from the API response.\n"
                },
                "plan": {
                    "type": "string",
                    "description": "The device plan slug. To find the plan slug, visit [Device plans API docs](https://metal.equinix.com/developers/api/plans), set your auth token in the top of the page and see JSON from the API response.\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/equinix-metal:index/DevicePort:DevicePort"
                    },
                    "description": "Ports assigned to the device\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project in which to create the device\n"
                },
                "projectSshKeyIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Array of IDs of the project SSH keys which should be added to the device. If you omit this, SSH keys of all the members of the parent project will be added to the device. If you specify this array, only the listed project SSH keys will be added. Project SSH keys can be created with the equinix-metal.ProjectSshKey resource.\n"
                },
                "reinstall": {
                    "$ref": "#/types/equinix-metal:index/DeviceReinstall:DeviceReinstall",
                    "description": "Whether the device should be reinstalled instead of destroyed when modifying user_data, custom_data, or operating system.\n"
                },
                "rootPassword": {
                    "type": "string",
                    "description": "Root password to the server (disabled after 24 hours)\n"
                },
                "sshKeyIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IDs of SSH keys deployed in the device, can be both user and project SSH keys\n"
                },
                "state": {
                    "type": "string",
                    "description": "The status of the device\n"
                },
                "storage": {
                    "type": "string",
                    "description": "JSON for custom partitioning. Only usable on reserved hardware. More information in in the [Custom Partitioning and RAID](https://metal.equinix.com/developers/docs/servers/custom-partitioning-raid/) doc. Please note that the disks.partitions.size attribute must be a string, not an integer. It can be a number string, or size notation string, e.g. \"4G\" or \"8M\" (for gigabytes and megabytes).\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Tags attached to the device\n"
                },
                "terminationTime": {
                    "type": "string",
                    "description": "Timestamp for device termination. For example `2021-09-03T16:32:00+03:00`. If you don't supply timezone info, timestamp is assumed to be in UTC.\n"
                },
                "updated": {
                    "type": "string",
                    "description": "The timestamp for the last time the device was updated\n"
                },
                "userData": {
                    "type": "string",
                    "description": "A string of the desired User Data for the device.\n"
                },
                "waitForReservationDeprovision": {
                    "type": "boolean",
                    "description": "Only used for devices in reserved hardware. If set, the deletion of this device will block until the hardware reservation is marked provisionable (about 4 minutes in August 2019).\n"
                }
            },
            "required": [
                "accessPrivateIpv4",
                "accessPublicIpv4",
                "accessPublicIpv6",
                "billingCycle",
                "created",
                "deployedFacility",
                "deployedHardwareReservationId",
                "hostname",
                "locked",
                "networks",
                "networkType",
                "operatingSystem",
                "plan",
                "ports",
                "projectId",
                "rootPassword",
                "sshKeyIds",
                "state",
                "updated"
            ],
            "inputProperties": {
                "alwaysPxe": {
                    "type": "boolean",
                    "description": "If true, a device with OS `custom_ipxe` will continue to boot via iPXE on reboots.\n"
                },
                "billingCycle": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/equinix-metal:index/BillingCycle:BillingCycle"
                        }
                    ],
                    "description": "monthly or hourly\n"
                },
                "customData": {
                    "type": "string",
                    "description": "A string of the desired Custom Data for the device.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The device description.\n"
                },
                "facilities": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/equinix-metal:index/Facility:Facility"
                            }
                        ]
                    },
                    "description": "List of facility codes with deployment preferences. Equinix Metal API will go through the list and will deploy your device to first facility with free capacity. List items must be facility codes or `any` (a wildcard). To find the facility code, visit [Facilities API docs](https://metal.equinix.com/developers/api/facilities/), set your API auth token in the top of the page and see JSON from the API response. Conflicts with `metro`.\n"
                },
                "forceDetachVolumes": {
                    "type": "boolean",
                    "description": "Delete device even if it has volumes attached. Only applies for destroy action.\n"
                },
                "hardwareReservationId": {
                    "type": "string",
                    "description": "The UUID of the hardware reservation where you want this device deployed, or next-available if you want to pick your\nnext available reservation automatically\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The device hostname used in deployments taking advantage of Layer3 DHCP or metadata service configuration.\n"
                },
                "ipAddresses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/equinix-metal:index/DeviceIpAddress:DeviceIpAddress"
                    },
                    "description": "A list of IP address types for the device (structure is documented below).\n"
                },
                "ipxeScriptUrl": {
                    "type": "string",
                    "description": "URL pointing to a hosted iPXE script. More information is in the [Custom iPXE](https://metal.equinix.com/developers/docs/servers/custom-ipxe/) doc.\n"
                },
                "metro": {
                    "type": "string",
                    "description": "Metro area for the new device. Conflicts with `facilities`.\n"
                },
                "operatingSystem": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/equinix-metal:index/OperatingSystem:OperatingSystem"
                        }
                    ],
                    "description": "The operating system slug. To find the slug, or visit [Operating Systems API docs](https://metal.equinix.com/developers/api/operatingsystems), set your API auth token in the top of the page and see JSON from the API response.\n"
                },
                "plan": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/equinix-metal:index/Plan:Plan"
                        }
                    ],
                    "description": "The device plan slug. To find the plan slug, visit [Device plans API docs](https://metal.equinix.com/developers/api/plans), set your auth token in the top of the page and see JSON from the API response.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project in which to create the device\n"
                },
                "projectSshKeyIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Array of IDs of the project SSH keys which should be added to the device. If you omit this, SSH keys of all the members of the parent project will be added to the device. If you specify this array, only the listed project SSH keys will be added. Project SSH keys can be created with the equinix-metal.ProjectSshKey resource.\n"
                },
                "reinstall": {
                    "$ref": "#/types/equinix-metal:index/DeviceReinstall:DeviceReinstall",
                    "description": "Whether the device should be reinstalled instead of destroyed when modifying user_data, custom_data, or operating system.\n"
                },
                "storage": {
                    "type": "string",
                    "description": "JSON for custom partitioning. Only usable on reserved hardware. More information in in the [Custom Partitioning and RAID](https://metal.equinix.com/developers/docs/servers/custom-partitioning-raid/) doc. Please note that the disks.partitions.size attribute must be a string, not an integer. It can be a number string, or size notation string, e.g. \"4G\" or \"8M\" (for gigabytes and megabytes).\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Tags attached to the device\n"
                },
                "terminationTime": {
                    "type": "string",
                    "description": "Timestamp for device termination. For example `2021-09-03T16:32:00+03:00`. If you don't supply timezone info, timestamp is assumed to be in UTC.\n"
                },
                "userData": {
                    "type": "string",
                    "description": "A string of the desired User Data for the device.\n"
                },
                "waitForReservationDeprovision": {
                    "type": "boolean",
                    "description": "Only used for devices in reserved hardware. If set, the deletion of this device will block until the hardware reservation is marked provisionable (about 4 minutes in August 2019).\n"
                }
            },
            "requiredInputs": [
                "operatingSystem",
                "plan",
                "projectId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Device resources.\n",
                "properties": {
                    "accessPrivateIpv4": {
                        "type": "string",
                        "description": "The ipv4 private IP assigned to the device\n"
                    },
                    "accessPublicIpv4": {
                        "type": "string",
                        "description": "The ipv4 maintenance IP assigned to the device\n"
                    },
                    "accessPublicIpv6": {
                        "type": "string",
                        "description": "The ipv6 maintenance IP assigned to the device\n"
                    },
                    "alwaysPxe": {
                        "type": "boolean",
                        "description": "If true, a device with OS `custom_ipxe` will continue to boot via iPXE on reboots.\n"
                    },
                    "billingCycle": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/equinix-metal:index/BillingCycle:BillingCycle"
                            }
                        ],
                        "description": "monthly or hourly\n"
                    },
                    "created": {
                        "type": "string",
                        "description": "The timestamp for when the device was created\n"
                    },
                    "customData": {
                        "type": "string",
                        "description": "A string of the desired Custom Data for the device.\n"
                    },
                    "deployedFacility": {
                        "type": "string",
                        "description": "The facility where the device is deployed.\n"
                    },
                    "deployedHardwareReservationId": {
                        "type": "string",
                        "description": "ID of hardware reservation where this device was deployed. It is useful when using the `next-available` hardware reservation.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The device description.\n"
                    },
                    "facilities": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "oneOf": [
                                {
                                    "type": "string"
                                },
                                {
                                    "type": "string",
                                    "$ref": "#/types/equinix-metal:index/Facility:Facility"
                                }
                            ]
                        },
                        "description": "List of facility codes with deployment preferences. Equinix Metal API will go through the list and will deploy your device to first facility with free capacity. List items must be facility codes or `any` (a wildcard). To find the facility code, visit [Facilities API docs](https://metal.equinix.com/developers/api/facilities/), set your API auth token in the top of the page and see JSON from the API response. Conflicts with `metro`.\n"
                    },
                    "forceDetachVolumes": {
                        "type": "boolean",
                        "description": "Delete device even if it has volumes attached. Only applies for destroy action.\n"
                    },
                    "hardwareReservationId": {
                        "type": "string",
                        "description": "The UUID of the hardware reservation where you want this device deployed, or next-available if you want to pick your\nnext available reservation automatically\n"
                    },
                    "hostname": {
                        "type": "string",
                        "description": "The device hostname used in deployments taking advantage of Layer3 DHCP or metadata service configuration.\n"
                    },
                    "ipAddresses": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/equinix-metal:index/DeviceIpAddress:DeviceIpAddress"
                        },
                        "description": "A list of IP address types for the device (structure is documented below).\n"
                    },
                    "ipxeScriptUrl": {
                        "type": "string",
                        "description": "URL pointing to a hosted iPXE script. More information is in the [Custom iPXE](https://metal.equinix.com/developers/docs/servers/custom-ipxe/) doc.\n"
                    },
                    "locked": {
                        "type": "boolean",
                        "description": "Whether the device is locked\n"
                    },
                    "metro": {
                        "type": "string",
                        "description": "Metro area for the new device. Conflicts with `facilities`.\n"
                    },
                    "networkType": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/equinix-metal:index/NetworkType:NetworkType"
                            }
                        ],
                        "description": "Network type of a device, used in [Layer 2 networking](https://metal.equinix.com/developers/docs/networking/layer2/).\nWill be one of layer3, hybrid, hybrid-bonded, layer2-individual, layer2-bonded\n",
                        "deprecationMessage": "You should handle Network Type with the new metal_device_network_type resource."
                    },
                    "networks": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/equinix-metal:index/DeviceNetwork:DeviceNetwork"
                        },
                        "description": "The device's private and public IP (v4 and v6) network details. When a device is run without any special network configuration, it will have 3 networks:\n* Public IPv4 at `metal_device.name.network.0`\n* IPv6 at `metal_device.name.network.1`\n* Private IPv4 at `metal_device.name.network.2`\nElastic addresses then stack by type - an assigned public IPv4 will go after the management public IPv4 (to index 1), and will then shift the indices of the IPv6 and private IPv4. Assigned private IPv4 will go after the management private IPv4 (to the end of the network list).\nThe fields of the network attributes are:\n"
                    },
                    "operatingSystem": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/equinix-metal:index/OperatingSystem:OperatingSystem"
                            }
                        ],
                        "description": "The operating system slug. To find the slug, or visit [Operating Systems API docs](https://metal.equinix.com/developers/api/operatingsystems), set your API auth token in the top of the page and see JSON from the API response.\n"
                    },
                    "plan": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/equinix-metal:index/Plan:Plan"
                            }
                        ],
                        "description": "The device plan slug. To find the plan slug, visit [Device plans API docs](https://metal.equinix.com/developers/api/plans), set your auth token in the top of the page and see JSON from the API response.\n"
                    },
                    "ports": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/equinix-metal:index/DevicePort:DevicePort"
                        },
                        "description": "Ports assigned to the device\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the project in which to create the device\n"
                    },
                    "projectSshKeyIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Array of IDs of the project SSH keys which should be added to the device. If you omit this, SSH keys of all the members of the parent project will be added to the device. If you specify this array, only the listed project SSH keys will be added. Project SSH keys can be created with the equinix-metal.ProjectSshKey resource.\n"
                    },
                    "reinstall": {
                        "$ref": "#/types/equinix-metal:index/DeviceReinstall:DeviceReinstall",
                        "description": "Whether the device should be reinstalled instead of destroyed when modifying user_data, custom_data, or operating system.\n"
                    },
                    "rootPassword": {
                        "type": "string",
                        "description": "Root password to the server (disabled after 24 hours)\n"
                    },
                    "sshKeyIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of IDs of SSH keys deployed in the device, can be both user and project SSH keys\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "The status of the device\n"
                    },
                    "storage": {
                        "type": "string",
                        "description": "JSON for custom partitioning. Only usable on reserved hardware. More information in in the [Custom Partitioning and RAID](https://metal.equinix.com/developers/docs/servers/custom-partitioning-raid/) doc. Please note that the disks.partitions.size attribute must be a string, not an integer. It can be a number string, or size notation string, e.g. \"4G\" or \"8M\" (for gigabytes and megabytes).\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Tags attached to the device\n"
                    },
                    "terminationTime": {
                        "type": "string",
                        "description": "Timestamp for device termination. For example `2021-09-03T16:32:00+03:00`. If you don't supply timezone info, timestamp is assumed to be in UTC.\n"
                    },
                    "updated": {
                        "type": "string",
                        "description": "The timestamp for the last time the device was updated\n"
                    },
                    "userData": {
                        "type": "string",
                        "description": "A string of the desired User Data for the device.\n"
                    },
                    "waitForReservationDeprovision": {
                        "type": "boolean",
                        "description": "Only used for devices in reserved hardware. If set, the deletion of this device will block until the hardware reservation is marked provisionable (about 4 minutes in August 2019).\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/deviceNetworkType:DeviceNetworkType": {
            "description": "\n\n\n## Import\n\nThis resource can also be imported using existing device ID\n\n```sh\n $ pulumi import equinix-metal:index/deviceNetworkType:DeviceNetworkType metal_device_network_type {existing device_id}\n```\n\n ",
            "properties": {
                "deviceId": {
                    "type": "string",
                    "description": "The ID of the device on which the network type should be set.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Network type to set. Must be one of `layer3`, `hybrid`, `layer2-individual` and `layer2-bonded`.\n"
                }
            },
            "required": [
                "deviceId",
                "type"
            ],
            "inputProperties": {
                "deviceId": {
                    "type": "string",
                    "description": "The ID of the device on which the network type should be set.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Network type to set. Must be one of `layer3`, `hybrid`, `layer2-individual` and `layer2-bonded`.\n"
                }
            },
            "requiredInputs": [
                "deviceId",
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DeviceNetworkType resources.\n",
                "properties": {
                    "deviceId": {
                        "type": "string",
                        "description": "The ID of the device on which the network type should be set.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "Network type to set. Must be one of `layer3`, `hybrid`, `layer2-individual` and `layer2-bonded`.\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/gateway:Gateway": {
            "description": "Use this resource to create Metal Gateway resources in Equinix Metal.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\n// Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\nconst testVlan = new equinix_metal.Vlan(\"testVlan\", {\n    description: \"test VLAN in SV\",\n    metro: \"sv\",\n    projectId: local.project_id,\n});\nconst testGateway = new equinix_metal.Gateway(\"testGateway\", {\n    projectId: local.project_id,\n    vlanId: testVlan.id,\n    privateIpv4SubnetSize: 8,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\n# Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\ntest_vlan = equinix_metal.Vlan(\"testVlan\",\n    description=\"test VLAN in SV\",\n    metro=\"sv\",\n    project_id=local[\"project_id\"])\ntest_gateway = equinix_metal.Gateway(\"testGateway\",\n    project_id=local[\"project_id\"],\n    vlan_id=test_vlan.id,\n    private_ipv4_subnet_size=8)\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        // Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\n        var testVlan = new EquinixMetal.Vlan(\"testVlan\", new EquinixMetal.VlanArgs\n        {\n            Description = \"test VLAN in SV\",\n            Metro = \"sv\",\n            ProjectId = local.Project_id,\n        });\n        var testGateway = new EquinixMetal.Gateway(\"testGateway\", new EquinixMetal.GatewayArgs\n        {\n            ProjectId = local.Project_id,\n            VlanId = testVlan.Id,\n            PrivateIpv4SubnetSize = 8,\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestVlan, err := equinix - metal.NewVlan(ctx, \"testVlan\", \u0026equinix-metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"test VLAN in SV\"),\n\t\t\tMetro:       pulumi.String(\"sv\"),\n\t\t\tProjectId:   pulumi.Any(local.Project_id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = equinix - metal.NewGateway(ctx, \"testGateway\", \u0026equinix-metal.GatewayArgs{\n\t\t\tProjectId:             pulumi.Any(local.Project_id),\n\t\t\tVlanId:                testVlan.ID(),\n\t\t\tPrivateIpv4SubnetSize: pulumi.Int(8),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\n// Create Metal Gateway for a VLAN and reserved IP address block\nconst testVlan = new equinix_metal.Vlan(\"testVlan\", {\n    description: \"test VLAN in SV\",\n    metro: \"sv\",\n    projectId: local.project_id,\n});\nconst testReservedIpBlock = new equinix_metal.ReservedIpBlock(\"testReservedIpBlock\", {\n    projectId: local.project_id,\n    metro: \"sv\",\n    quantity: 2,\n});\nconst testGateway = new equinix_metal.Gateway(\"testGateway\", {\n    projectId: local.project_id,\n    vlanId: testVlan.id,\n    ipReservationId: testReservedIpBlock.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\n# Create Metal Gateway for a VLAN and reserved IP address block\ntest_vlan = equinix_metal.Vlan(\"testVlan\",\n    description=\"test VLAN in SV\",\n    metro=\"sv\",\n    project_id=local[\"project_id\"])\ntest_reserved_ip_block = equinix_metal.ReservedIpBlock(\"testReservedIpBlock\",\n    project_id=local[\"project_id\"],\n    metro=\"sv\",\n    quantity=2)\ntest_gateway = equinix_metal.Gateway(\"testGateway\",\n    project_id=local[\"project_id\"],\n    vlan_id=test_vlan.id,\n    ip_reservation_id=test_reserved_ip_block.id)\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        // Create Metal Gateway for a VLAN and reserved IP address block\n        var testVlan = new EquinixMetal.Vlan(\"testVlan\", new EquinixMetal.VlanArgs\n        {\n            Description = \"test VLAN in SV\",\n            Metro = \"sv\",\n            ProjectId = local.Project_id,\n        });\n        var testReservedIpBlock = new EquinixMetal.ReservedIpBlock(\"testReservedIpBlock\", new EquinixMetal.ReservedIpBlockArgs\n        {\n            ProjectId = local.Project_id,\n            Metro = \"sv\",\n            Quantity = 2,\n        });\n        var testGateway = new EquinixMetal.Gateway(\"testGateway\", new EquinixMetal.GatewayArgs\n        {\n            ProjectId = local.Project_id,\n            VlanId = testVlan.Id,\n            IpReservationId = testReservedIpBlock.Id,\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestVlan, err := equinix - metal.NewVlan(ctx, \"testVlan\", \u0026equinix-metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"test VLAN in SV\"),\n\t\t\tMetro:       pulumi.String(\"sv\"),\n\t\t\tProjectId:   pulumi.Any(local.Project_id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestReservedIpBlock, err := equinix - metal.NewReservedIpBlock(ctx, \"testReservedIpBlock\", \u0026equinix-metal.ReservedIpBlockArgs{\n\t\t\tProjectId: pulumi.Any(local.Project_id),\n\t\t\tMetro:     pulumi.String(\"sv\"),\n\t\t\tQuantity:  pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = equinix - metal.NewGateway(ctx, \"testGateway\", \u0026equinix-metal.GatewayArgs{\n\t\t\tProjectId:       pulumi.Any(local.Project_id),\n\t\t\tVlanId:          testVlan.ID(),\n\t\t\tIpReservationId: testReservedIpBlock.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "properties": {
                "ipReservationId": {
                    "type": "string",
                    "description": "UUID of IP reservation block to bind to the gateway, the reservation must be in the same metro as the VLAN, conflicts with `private_ipv4_subnet_size`\n"
                },
                "privateIpv4SubnetSize": {
                    "type": "integer",
                    "description": "Size of the private IPv4 subnet to create for this metal gateway, must be one of (8, 16, 32, 64, 128), conflicts with `ip_reservation_id`\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "UUID of the project where the gateway is scoped to\n"
                },
                "state": {
                    "type": "string",
                    "description": "Status of the gateway resource\n"
                },
                "vlanId": {
                    "type": "string",
                    "description": "UUID of the VLAN where the gateway is scoped to\n"
                }
            },
            "required": [
                "projectId",
                "state",
                "vlanId"
            ],
            "inputProperties": {
                "ipReservationId": {
                    "type": "string",
                    "description": "UUID of IP reservation block to bind to the gateway, the reservation must be in the same metro as the VLAN, conflicts with `private_ipv4_subnet_size`\n"
                },
                "privateIpv4SubnetSize": {
                    "type": "integer",
                    "description": "Size of the private IPv4 subnet to create for this metal gateway, must be one of (8, 16, 32, 64, 128), conflicts with `ip_reservation_id`\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "UUID of the project where the gateway is scoped to\n"
                },
                "vlanId": {
                    "type": "string",
                    "description": "UUID of the VLAN where the gateway is scoped to\n"
                }
            },
            "requiredInputs": [
                "projectId",
                "vlanId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Gateway resources.\n",
                "properties": {
                    "ipReservationId": {
                        "type": "string",
                        "description": "UUID of IP reservation block to bind to the gateway, the reservation must be in the same metro as the VLAN, conflicts with `private_ipv4_subnet_size`\n"
                    },
                    "privateIpv4SubnetSize": {
                        "type": "integer",
                        "description": "Size of the private IPv4 subnet to create for this metal gateway, must be one of (8, 16, 32, 64, 128), conflicts with `ip_reservation_id`\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "UUID of the project where the gateway is scoped to\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "Status of the gateway resource\n"
                    },
                    "vlanId": {
                        "type": "string",
                        "description": "UUID of the VLAN where the gateway is scoped to\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/ipAttachment:IpAttachment": {
            "description": "Provides a resource to attach elastic IP subnets to devices.\n\nTo attach an IP subnet from a reserved block to a provisioned device, you must derive a subnet CIDR belonging to\none of your reserved blocks in the same project and facility as the target device.\n\nFor example, you have reserved IPv4 address block 147.229.10.152/30, you can choose to assign either the whole\nblock as one subnet to a device; or 2 subnets with CIDRs 147.229.10.152/31' and 147.229.10.154/31; or 4 subnets\nwith mask prefix length 32. More about the elastic IP subnets is [here](https://metal.equinix.com/developers/docs/networking/elastic-ips/).\n\nDevice and reserved block must be in the same facility.\n",
            "properties": {
                "address": {
                    "type": "string"
                },
                "addressFamily": {
                    "type": "integer",
                    "description": "Address family as integer (4 or 6)\n"
                },
                "cidr": {
                    "type": "integer",
                    "description": "length of CIDR prefix of the subnet as integer\n"
                },
                "cidrNotation": {
                    "type": "string",
                    "description": "CIDR notation of subnet from block reserved in the same\nproject and facility as the device\n"
                },
                "deviceId": {
                    "type": "string",
                    "description": "ID of device to which to assign the subnet\n"
                },
                "gateway": {
                    "type": "string",
                    "description": "IP address of gateway for the subnet\n"
                },
                "global": {
                    "type": "boolean",
                    "description": "Flag indicating whether IP block is global, i.e. assignable in any location\n"
                },
                "manageable": {
                    "type": "boolean"
                },
                "management": {
                    "type": "boolean"
                },
                "netmask": {
                    "type": "string",
                    "description": "Subnet mask in decimal notation, e.g. \"255.255.255.0\"\n"
                },
                "network": {
                    "type": "string",
                    "description": "Subnet network address\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "boolean flag whether subnet is reachable from the Internet\n"
                }
            },
            "required": [
                "address",
                "addressFamily",
                "cidr",
                "cidrNotation",
                "deviceId",
                "gateway",
                "global",
                "manageable",
                "management",
                "netmask",
                "network",
                "public"
            ],
            "inputProperties": {
                "cidrNotation": {
                    "type": "string",
                    "description": "CIDR notation of subnet from block reserved in the same\nproject and facility as the device\n"
                },
                "deviceId": {
                    "type": "string",
                    "description": "ID of device to which to assign the subnet\n"
                }
            },
            "requiredInputs": [
                "cidrNotation",
                "deviceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IpAttachment resources.\n",
                "properties": {
                    "address": {
                        "type": "string"
                    },
                    "addressFamily": {
                        "type": "integer",
                        "description": "Address family as integer (4 or 6)\n"
                    },
                    "cidr": {
                        "type": "integer",
                        "description": "length of CIDR prefix of the subnet as integer\n"
                    },
                    "cidrNotation": {
                        "type": "string",
                        "description": "CIDR notation of subnet from block reserved in the same\nproject and facility as the device\n"
                    },
                    "deviceId": {
                        "type": "string",
                        "description": "ID of device to which to assign the subnet\n"
                    },
                    "gateway": {
                        "type": "string",
                        "description": "IP address of gateway for the subnet\n"
                    },
                    "global": {
                        "type": "boolean",
                        "description": "Flag indicating whether IP block is global, i.e. assignable in any location\n"
                    },
                    "manageable": {
                        "type": "boolean"
                    },
                    "management": {
                        "type": "boolean"
                    },
                    "netmask": {
                        "type": "string",
                        "description": "Subnet mask in decimal notation, e.g. \"255.255.255.0\"\n"
                    },
                    "network": {
                        "type": "string",
                        "description": "Subnet network address\n"
                    },
                    "public": {
                        "type": "boolean",
                        "description": "boolean flag whether subnet is reachable from the Internet\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/organization:Organization": {
            "description": "Provides a resource to manage organization resource in Equinix Metal.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as metal from \"@pulumi/metal\";\n\n// Create a new Project\nconst tfOrganization1 = new metal.Organization(\"tf_organization_1\", {\n    description: \"quux\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\n# Create a new Project\ntf_organization1 = equinix_metal.Organization(\"tfOrganization1\", description=\"quux\")\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        // Create a new Project\n        var tfOrganization1 = new EquinixMetal.Organization(\"tfOrganization1\", new EquinixMetal.OrganizationArgs\n        {\n            Description = \"quux\",\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := equinix - metal.NewOrganization(ctx, \"tfOrganization1\", \u0026equinix-metal.OrganizationArgs{\n\t\t\tDescription: pulumi.String(\"quux\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nThis resource can be imported using an existing organization ID\n\n```sh\n $ pulumi import equinix-metal:index/organization:Organization metal_organization {existing_organization_id}\n```\n\n ",
            "properties": {
                "created": {
                    "type": "string"
                },
                "description": {
                    "type": "string",
                    "description": "Description string\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo URL\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Organization\n"
                },
                "twitter": {
                    "type": "string",
                    "description": "Twitter handle\n"
                },
                "updated": {
                    "type": "string"
                },
                "website": {
                    "type": "string",
                    "description": "Website link\n"
                }
            },
            "required": [
                "created",
                "name",
                "updated"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "Description string\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo URL\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Organization\n"
                },
                "twitter": {
                    "type": "string",
                    "description": "Twitter handle\n"
                },
                "website": {
                    "type": "string",
                    "description": "Website link\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Organization resources.\n",
                "properties": {
                    "created": {
                        "type": "string"
                    },
                    "description": {
                        "type": "string",
                        "description": "Description string\n"
                    },
                    "logo": {
                        "type": "string",
                        "description": "Logo URL\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the Organization\n"
                    },
                    "twitter": {
                        "type": "string",
                        "description": "Twitter handle\n"
                    },
                    "updated": {
                        "type": "string"
                    },
                    "website": {
                        "type": "string",
                        "description": "Website link\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/port:Port": {
            "properties": {
                "bondId": {
                    "type": "string",
                    "description": "UUID of the bond port\n"
                },
                "bondName": {
                    "type": "string",
                    "description": "Name of the bond port\n"
                },
                "bonded": {
                    "type": "boolean",
                    "description": "Whether the port should be bonded\n"
                },
                "disbondSupported": {
                    "type": "boolean",
                    "description": "Flag indicating whether the port can be removed from a bond\n"
                },
                "layer2": {
                    "type": "boolean",
                    "description": "Whether to put the port to Layer 2 mode, valid only for bond ports\n"
                },
                "mac": {
                    "type": "string",
                    "description": "MAC address of the port\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the port, e.g. `bond0` or `eth0`\n"
                },
                "nativeVlanId": {
                    "type": "string",
                    "description": "UUID of a VLAN to assign as a native VLAN. It must be one of attached VLANs (from `vlan_ids` parameter), valid only for physical (non-bond) ports\n"
                },
                "networkType": {
                    "type": "string",
                    "description": "One of layer2-bonded, layer2-individual, layer3, hybrid and hybrid-bonded. This attribute is only set on bond ports.\n"
                },
                "portId": {
                    "type": "string",
                    "description": "ID of the port to read\n"
                },
                "resetOnDelete": {
                    "type": "boolean",
                    "description": "Behavioral setting to reset the port to default settings. For a bond port it means layer3 without vlans attached, eth ports will be bonded without native vlan and vlans attached\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type is either \"NetworkBondPort\" for bond ports or \"NetworkPort\" for bondable ethernet ports\n"
                },
                "vlanIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of VLAN UUIDs to attach to the port, valid only for L2 and Hybrid ports\n"
                },
                "vxlanIds": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "List of VXLAN IDs to attach to the port, valid only for L2 and Hybrid ports\n"
                }
            },
            "required": [
                "bondId",
                "bondName",
                "bonded",
                "disbondSupported",
                "mac",
                "name",
                "networkType",
                "portId",
                "type",
                "vlanIds",
                "vxlanIds"
            ],
            "inputProperties": {
                "bonded": {
                    "type": "boolean",
                    "description": "Whether the port should be bonded\n"
                },
                "layer2": {
                    "type": "boolean",
                    "description": "Whether to put the port to Layer 2 mode, valid only for bond ports\n"
                },
                "nativeVlanId": {
                    "type": "string",
                    "description": "UUID of a VLAN to assign as a native VLAN. It must be one of attached VLANs (from `vlan_ids` parameter), valid only for physical (non-bond) ports\n"
                },
                "portId": {
                    "type": "string",
                    "description": "ID of the port to read\n"
                },
                "resetOnDelete": {
                    "type": "boolean",
                    "description": "Behavioral setting to reset the port to default settings. For a bond port it means layer3 without vlans attached, eth ports will be bonded without native vlan and vlans attached\n"
                },
                "vlanIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of VLAN UUIDs to attach to the port, valid only for L2 and Hybrid ports\n"
                },
                "vxlanIds": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "List of VXLAN IDs to attach to the port, valid only for L2 and Hybrid ports\n"
                }
            },
            "requiredInputs": [
                "bonded",
                "portId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Port resources.\n",
                "properties": {
                    "bondId": {
                        "type": "string",
                        "description": "UUID of the bond port\n"
                    },
                    "bondName": {
                        "type": "string",
                        "description": "Name of the bond port\n"
                    },
                    "bonded": {
                        "type": "boolean",
                        "description": "Whether the port should be bonded\n"
                    },
                    "disbondSupported": {
                        "type": "boolean",
                        "description": "Flag indicating whether the port can be removed from a bond\n"
                    },
                    "layer2": {
                        "type": "boolean",
                        "description": "Whether to put the port to Layer 2 mode, valid only for bond ports\n"
                    },
                    "mac": {
                        "type": "string",
                        "description": "MAC address of the port\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the port, e.g. `bond0` or `eth0`\n"
                    },
                    "nativeVlanId": {
                        "type": "string",
                        "description": "UUID of a VLAN to assign as a native VLAN. It must be one of attached VLANs (from `vlan_ids` parameter), valid only for physical (non-bond) ports\n"
                    },
                    "networkType": {
                        "type": "string",
                        "description": "One of layer2-bonded, layer2-individual, layer3, hybrid and hybrid-bonded. This attribute is only set on bond ports.\n"
                    },
                    "portId": {
                        "type": "string",
                        "description": "ID of the port to read\n"
                    },
                    "resetOnDelete": {
                        "type": "boolean",
                        "description": "Behavioral setting to reset the port to default settings. For a bond port it means layer3 without vlans attached, eth ports will be bonded without native vlan and vlans attached\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "Type is either \"NetworkBondPort\" for bond ports or \"NetworkPort\" for bondable ethernet ports\n"
                    },
                    "vlanIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of VLAN UUIDs to attach to the port, valid only for L2 and Hybrid ports\n"
                    },
                    "vxlanIds": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "description": "List of VXLAN IDs to attach to the port, valid only for L2 and Hybrid ports\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/portVlanAttachment:PortVlanAttachment": {
            "description": "Provides a resource to attach device ports to VLANs.\n\nDevice and VLAN must be in the same facility.\n\nIf you need this resource to add the port back to bond on removal, set `force_bond = true`.\n\nTo learn more about Layer 2 networking in Equinix Metal, refer to\n\n* \u003chttps://metal.equinix.com/developers/docs/networking/layer2/\u003e\n* \u003chttps://metal.equinix.com/developers/docs/networking/layer2-configs/\u003e\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Hybrid network type\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst testVlan = new equinix_metal.Vlan(\"testVlan\", {\n    description: \"VLAN in New Jersey\",\n    facility: \"ny5\",\n    projectId: local.project_id,\n});\nconst testDevice = new equinix_metal.Device(\"testDevice\", {\n    hostname: \"test\",\n    plan: \"c3.small.x86\",\n    facilities: [\"ny5\"],\n    operatingSystem: \"ubuntu_20_04\",\n    billingCycle: \"hourly\",\n    projectId: local.project_id,\n});\nconst testDeviceNetworkType = new equinix_metal.DeviceNetworkType(\"testDeviceNetworkType\", {\n    deviceId: testDevice.id,\n    type: \"hybrid\",\n});\nconst testPortVlanAttachment = new equinix_metal.PortVlanAttachment(\"testPortVlanAttachment\", {\n    deviceId: testDeviceNetworkType.id,\n    portName: \"eth1\",\n    vlanVnid: testVlan.vxlan,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\ntest_vlan = equinix_metal.Vlan(\"testVlan\",\n    description=\"VLAN in New Jersey\",\n    facility=\"ny5\",\n    project_id=local[\"project_id\"])\ntest_device = equinix_metal.Device(\"testDevice\",\n    hostname=\"test\",\n    plan=\"c3.small.x86\",\n    facilities=[\"ny5\"],\n    operating_system=\"ubuntu_20_04\",\n    billing_cycle=\"hourly\",\n    project_id=local[\"project_id\"])\ntest_device_network_type = equinix_metal.DeviceNetworkType(\"testDeviceNetworkType\",\n    device_id=test_device.id,\n    type=\"hybrid\")\ntest_port_vlan_attachment = equinix_metal.PortVlanAttachment(\"testPortVlanAttachment\",\n    device_id=test_device_network_type.id,\n    port_name=\"eth1\",\n    vlan_vnid=test_vlan.vxlan)\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var testVlan = new EquinixMetal.Vlan(\"testVlan\", new EquinixMetal.VlanArgs\n        {\n            Description = \"VLAN in New Jersey\",\n            Facility = \"ny5\",\n            ProjectId = local.Project_id,\n        });\n        var testDevice = new EquinixMetal.Device(\"testDevice\", new EquinixMetal.DeviceArgs\n        {\n            Hostname = \"test\",\n            Plan = \"c3.small.x86\",\n            Facilities = \n            {\n                \"ny5\",\n            },\n            OperatingSystem = \"ubuntu_20_04\",\n            BillingCycle = \"hourly\",\n            ProjectId = local.Project_id,\n        });\n        var testDeviceNetworkType = new EquinixMetal.DeviceNetworkType(\"testDeviceNetworkType\", new EquinixMetal.DeviceNetworkTypeArgs\n        {\n            DeviceId = testDevice.Id,\n            Type = \"hybrid\",\n        });\n        var testPortVlanAttachment = new EquinixMetal.PortVlanAttachment(\"testPortVlanAttachment\", new EquinixMetal.PortVlanAttachmentArgs\n        {\n            DeviceId = testDeviceNetworkType.Id,\n            PortName = \"eth1\",\n            VlanVnid = testVlan.Vxlan,\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestVlan, err := equinix - metal.NewVlan(ctx, \"testVlan\", \u0026equinix-metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"VLAN in New Jersey\"),\n\t\t\tFacility:    pulumi.String(\"ny5\"),\n\t\t\tProjectId:   pulumi.Any(local.Project_id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDevice, err := equinix - metal.NewDevice(ctx, \"testDevice\", \u0026equinix-metal.DeviceArgs{\n\t\t\tHostname: pulumi.String(\"test\"),\n\t\t\tPlan:     pulumi.String(\"c3.small.x86\"),\n\t\t\tFacilities: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ny5\"),\n\t\t\t},\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_20_04\"),\n\t\t\tBillingCycle:    pulumi.String(\"hourly\"),\n\t\t\tProjectId:       pulumi.Any(local.Project_id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDeviceNetworkType, err := equinix - metal.NewDeviceNetworkType(ctx, \"testDeviceNetworkType\", \u0026equinix-metal.DeviceNetworkTypeArgs{\n\t\t\tDeviceId: testDevice.ID(),\n\t\t\tType:     pulumi.String(\"hybrid\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = equinix - metal.NewPortVlanAttachment(ctx, \"testPortVlanAttachment\", \u0026equinix-metal.PortVlanAttachmentArgs{\n\t\t\tDeviceId: testDeviceNetworkType.ID(),\n\t\t\tPortName: pulumi.String(\"eth1\"),\n\t\t\tVlanVnid: testVlan.Vxlan,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% example %}}\n### Layer 2 network\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst testDevice = new equinix_metal.Device(\"testDevice\", {\n    hostname: \"test\",\n    plan: \"c3.small.x86\",\n    facilities: [\"ny5\"],\n    operatingSystem: \"ubuntu_20_04\",\n    billingCycle: \"hourly\",\n    projectId: local.project_id,\n});\nconst testDeviceNetworkType = new equinix_metal.DeviceNetworkType(\"testDeviceNetworkType\", {\n    deviceId: testDevice.id,\n    type: \"layer2-individual\",\n});\nconst test1Vlan = new equinix_metal.Vlan(\"test1Vlan\", {\n    description: \"VLAN in New Jersey\",\n    facility: \"ny5\",\n    projectId: local.project_id,\n});\nconst test2Vlan = new equinix_metal.Vlan(\"test2Vlan\", {\n    description: \"VLAN in New Jersey\",\n    facility: \"ny5\",\n    projectId: local.project_id,\n});\nconst test1PortVlanAttachment = new equinix_metal.PortVlanAttachment(\"test1PortVlanAttachment\", {\n    deviceId: testDeviceNetworkType.id,\n    vlanVnid: test1Vlan.vxlan,\n    portName: \"eth1\",\n});\nconst test2PortVlanAttachment = new equinix_metal.PortVlanAttachment(\"test2PortVlanAttachment\", {\n    deviceId: testDeviceNetworkType.id,\n    vlanVnid: test2Vlan.vxlan,\n    portName: \"eth1\",\n    native: true,\n}, {\n    dependsOn: [\"metal_port_vlan_attachment.test1\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\ntest_device = equinix_metal.Device(\"testDevice\",\n    hostname=\"test\",\n    plan=\"c3.small.x86\",\n    facilities=[\"ny5\"],\n    operating_system=\"ubuntu_20_04\",\n    billing_cycle=\"hourly\",\n    project_id=local[\"project_id\"])\ntest_device_network_type = equinix_metal.DeviceNetworkType(\"testDeviceNetworkType\",\n    device_id=test_device.id,\n    type=\"layer2-individual\")\ntest1_vlan = equinix_metal.Vlan(\"test1Vlan\",\n    description=\"VLAN in New Jersey\",\n    facility=\"ny5\",\n    project_id=local[\"project_id\"])\ntest2_vlan = equinix_metal.Vlan(\"test2Vlan\",\n    description=\"VLAN in New Jersey\",\n    facility=\"ny5\",\n    project_id=local[\"project_id\"])\ntest1_port_vlan_attachment = equinix_metal.PortVlanAttachment(\"test1PortVlanAttachment\",\n    device_id=test_device_network_type.id,\n    vlan_vnid=test1_vlan.vxlan,\n    port_name=\"eth1\")\ntest2_port_vlan_attachment = equinix_metal.PortVlanAttachment(\"test2PortVlanAttachment\",\n    device_id=test_device_network_type.id,\n    vlan_vnid=test2_vlan.vxlan,\n    port_name=\"eth1\",\n    native=True,\n    opts=pulumi.ResourceOptions(depends_on=[\"metal_port_vlan_attachment.test1\"]))\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var testDevice = new EquinixMetal.Device(\"testDevice\", new EquinixMetal.DeviceArgs\n        {\n            Hostname = \"test\",\n            Plan = \"c3.small.x86\",\n            Facilities = \n            {\n                \"ny5\",\n            },\n            OperatingSystem = \"ubuntu_20_04\",\n            BillingCycle = \"hourly\",\n            ProjectId = local.Project_id,\n        });\n        var testDeviceNetworkType = new EquinixMetal.DeviceNetworkType(\"testDeviceNetworkType\", new EquinixMetal.DeviceNetworkTypeArgs\n        {\n            DeviceId = testDevice.Id,\n            Type = \"layer2-individual\",\n        });\n        var test1Vlan = new EquinixMetal.Vlan(\"test1Vlan\", new EquinixMetal.VlanArgs\n        {\n            Description = \"VLAN in New Jersey\",\n            Facility = \"ny5\",\n            ProjectId = local.Project_id,\n        });\n        var test2Vlan = new EquinixMetal.Vlan(\"test2Vlan\", new EquinixMetal.VlanArgs\n        {\n            Description = \"VLAN in New Jersey\",\n            Facility = \"ny5\",\n            ProjectId = local.Project_id,\n        });\n        var test1PortVlanAttachment = new EquinixMetal.PortVlanAttachment(\"test1PortVlanAttachment\", new EquinixMetal.PortVlanAttachmentArgs\n        {\n            DeviceId = testDeviceNetworkType.Id,\n            VlanVnid = test1Vlan.Vxlan,\n            PortName = \"eth1\",\n        });\n        var test2PortVlanAttachment = new EquinixMetal.PortVlanAttachment(\"test2PortVlanAttachment\", new EquinixMetal.PortVlanAttachmentArgs\n        {\n            DeviceId = testDeviceNetworkType.Id,\n            VlanVnid = test2Vlan.Vxlan,\n            PortName = \"eth1\",\n            Native = true,\n        }, new CustomResourceOptions\n        {\n            DependsOn = \n            {\n                \"metal_port_vlan_attachment.test1\",\n            },\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestDevice, err := equinix - metal.NewDevice(ctx, \"testDevice\", \u0026equinix-metal.DeviceArgs{\n\t\t\tHostname: pulumi.String(\"test\"),\n\t\t\tPlan:     pulumi.String(\"c3.small.x86\"),\n\t\t\tFacilities: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ny5\"),\n\t\t\t},\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_20_04\"),\n\t\t\tBillingCycle:    pulumi.String(\"hourly\"),\n\t\t\tProjectId:       pulumi.Any(local.Project_id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDeviceNetworkType, err := equinix - metal.NewDeviceNetworkType(ctx, \"testDeviceNetworkType\", \u0026equinix-metal.DeviceNetworkTypeArgs{\n\t\t\tDeviceId: testDevice.ID(),\n\t\t\tType:     pulumi.String(\"layer2-individual\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest1Vlan, err := equinix - metal.NewVlan(ctx, \"test1Vlan\", \u0026equinix-metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"VLAN in New Jersey\"),\n\t\t\tFacility:    pulumi.String(\"ny5\"),\n\t\t\tProjectId:   pulumi.Any(local.Project_id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest2Vlan, err := equinix - metal.NewVlan(ctx, \"test2Vlan\", \u0026equinix-metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"VLAN in New Jersey\"),\n\t\t\tFacility:    pulumi.String(\"ny5\"),\n\t\t\tProjectId:   pulumi.Any(local.Project_id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = equinix - metal.NewPortVlanAttachment(ctx, \"test1PortVlanAttachment\", \u0026equinix-metal.PortVlanAttachmentArgs{\n\t\t\tDeviceId: testDeviceNetworkType.ID(),\n\t\t\tVlanVnid: test1Vlan.Vxlan,\n\t\t\tPortName: pulumi.String(\"eth1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = equinix - metal.NewPortVlanAttachment(ctx, \"test2PortVlanAttachment\", \u0026equinix-metal.PortVlanAttachmentArgs{\n\t\t\tDeviceId: testDeviceNetworkType.ID(),\n\t\t\tVlanVnid: test2Vlan.Vxlan,\n\t\t\tPortName: pulumi.String(\"eth1\"),\n\t\t\tNative:   pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpulumi.Resource(\"metal_port_vlan_attachment.test1\"),\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}\n## Attribute Referece\n\n* `id` - UUID of device port used in the assignment\n* `vlan_id` - UUID of VLAN API resource\n* `port_id` - UUID of device port\n",
            "properties": {
                "deviceId": {
                    "type": "string",
                    "description": "ID of device to be assigned to the VLAN\n"
                },
                "forceBond": {
                    "type": "boolean",
                    "description": "Add port back to the bond when this resource is removed. Default is false.\n"
                },
                "native": {
                    "type": "boolean",
                    "description": "Mark this VLAN a native VLAN on the port. This can be used only if this assignment assigns second or further VLAN to the port. To ensure that this attachment is not first on a port, you can use `depends_on` pointing to another metal_port_vlan_attachment, just like in the layer2-individual example above.\n"
                },
                "portId": {
                    "type": "string",
                    "description": "UUID of device port\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Name of network port to be assigned to the VLAN\n"
                },
                "vlanId": {
                    "type": "string",
                    "description": "UUID of VLAN API resource\n"
                },
                "vlanVnid": {
                    "type": "integer",
                    "description": "VXLAN Network Identifier, integer\n"
                }
            },
            "required": [
                "deviceId",
                "portId",
                "portName",
                "vlanId",
                "vlanVnid"
            ],
            "inputProperties": {
                "deviceId": {
                    "type": "string",
                    "description": "ID of device to be assigned to the VLAN\n"
                },
                "forceBond": {
                    "type": "boolean",
                    "description": "Add port back to the bond when this resource is removed. Default is false.\n"
                },
                "native": {
                    "type": "boolean",
                    "description": "Mark this VLAN a native VLAN on the port. This can be used only if this assignment assigns second or further VLAN to the port. To ensure that this attachment is not first on a port, you can use `depends_on` pointing to another metal_port_vlan_attachment, just like in the layer2-individual example above.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Name of network port to be assigned to the VLAN\n"
                },
                "vlanVnid": {
                    "type": "integer",
                    "description": "VXLAN Network Identifier, integer\n"
                }
            },
            "requiredInputs": [
                "deviceId",
                "portName",
                "vlanVnid"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering PortVlanAttachment resources.\n",
                "properties": {
                    "deviceId": {
                        "type": "string",
                        "description": "ID of device to be assigned to the VLAN\n"
                    },
                    "forceBond": {
                        "type": "boolean",
                        "description": "Add port back to the bond when this resource is removed. Default is false.\n"
                    },
                    "native": {
                        "type": "boolean",
                        "description": "Mark this VLAN a native VLAN on the port. This can be used only if this assignment assigns second or further VLAN to the port. To ensure that this attachment is not first on a port, you can use `depends_on` pointing to another metal_port_vlan_attachment, just like in the layer2-individual example above.\n"
                    },
                    "portId": {
                        "type": "string",
                        "description": "UUID of device port\n"
                    },
                    "portName": {
                        "type": "string",
                        "description": "Name of network port to be assigned to the VLAN\n"
                    },
                    "vlanId": {
                        "type": "string",
                        "description": "UUID of VLAN API resource\n"
                    },
                    "vlanVnid": {
                        "type": "integer",
                        "description": "VXLAN Network Identifier, integer\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/project:Project": {
            "description": "\n\n\n## Import\n\nThis resource can be imported using an existing project ID\n\n```sh\n $ pulumi import equinix-metal:index/project:Project metal_project {existing_project_id}\n```\n\n ",
            "properties": {
                "backendTransfer": {
                    "type": "boolean",
                    "description": "Enable or disable [Backend Transfer](https://metal.equinix.com/developers/docs/networking/backend-transfer/), default is false\n"
                },
                "bgpConfig": {
                    "$ref": "#/types/equinix-metal:index/ProjectBgpConfig:ProjectBgpConfig",
                    "description": "Optional BGP settings. Refer to [Equinix Metal guide for BGP](https://metal.equinix.com/developers/docs/networking/local-global-bgp/).\n"
                },
                "created": {
                    "type": "string",
                    "description": "The timestamp for when the project was created\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the project\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The UUID of organization under which you want to create the project. If you leave it out, the project will be create under your the default organization of your account.\n"
                },
                "paymentMethodId": {
                    "type": "string",
                    "description": "The UUID of payment method for this project. The payment method and the project need to belong to the same organization (passed with `organization_id`, or default).\n"
                },
                "updated": {
                    "type": "string",
                    "description": "The timestamp for the last time the project was updated\n"
                }
            },
            "required": [
                "created",
                "name",
                "organizationId",
                "paymentMethodId",
                "updated"
            ],
            "inputProperties": {
                "backendTransfer": {
                    "type": "boolean",
                    "description": "Enable or disable [Backend Transfer](https://metal.equinix.com/developers/docs/networking/backend-transfer/), default is false\n"
                },
                "bgpConfig": {
                    "$ref": "#/types/equinix-metal:index/ProjectBgpConfig:ProjectBgpConfig",
                    "description": "Optional BGP settings. Refer to [Equinix Metal guide for BGP](https://metal.equinix.com/developers/docs/networking/local-global-bgp/).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the project\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The UUID of organization under which you want to create the project. If you leave it out, the project will be create under your the default organization of your account.\n"
                },
                "paymentMethodId": {
                    "type": "string",
                    "description": "The UUID of payment method for this project. The payment method and the project need to belong to the same organization (passed with `organization_id`, or default).\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Project resources.\n",
                "properties": {
                    "backendTransfer": {
                        "type": "boolean",
                        "description": "Enable or disable [Backend Transfer](https://metal.equinix.com/developers/docs/networking/backend-transfer/), default is false\n"
                    },
                    "bgpConfig": {
                        "$ref": "#/types/equinix-metal:index/ProjectBgpConfig:ProjectBgpConfig",
                        "description": "Optional BGP settings. Refer to [Equinix Metal guide for BGP](https://metal.equinix.com/developers/docs/networking/local-global-bgp/).\n"
                    },
                    "created": {
                        "type": "string",
                        "description": "The timestamp for when the project was created\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the project\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The UUID of organization under which you want to create the project. If you leave it out, the project will be create under your the default organization of your account.\n"
                    },
                    "paymentMethodId": {
                        "type": "string",
                        "description": "The UUID of payment method for this project. The payment method and the project need to belong to the same organization (passed with `organization_id`, or default).\n"
                    },
                    "updated": {
                        "type": "string",
                        "description": "The timestamp for the last time the project was updated\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/projectApiKey:ProjectApiKey": {
            "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\n// Create a new read-only API key in existing project\nconst test = new equinix_metal.ProjectApiKey(\"test\", {\n    projectId: local.existing_project_id,\n    description: \"Read-only key scoped to a projct\",\n    readOnly: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\n# Create a new read-only API key in existing project\ntest = equinix_metal.ProjectApiKey(\"test\",\n    project_id=local[\"existing_project_id\"],\n    description=\"Read-only key scoped to a projct\",\n    read_only=True)\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        // Create a new read-only API key in existing project\n        var test = new EquinixMetal.ProjectApiKey(\"test\", new EquinixMetal.ProjectApiKeyArgs\n        {\n            ProjectId = local.Existing_project_id,\n            Description = \"Read-only key scoped to a projct\",\n            ReadOnly = true,\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := equinix - metal.NewProjectApiKey(ctx, \"test\", \u0026equinix-metal.ProjectApiKeyArgs{\n\t\t\tProjectId:   pulumi.Any(local.Existing_project_id),\n\t\t\tDescription: pulumi.String(\"Read-only key scoped to a projct\"),\n\t\t\tReadOnly:    pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description string for the Project API Key resource\n* `read-only` - Flag indicating whether the API key shoud be read-only\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "UUID of the project where the API key is scoped to\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "Flag indicating whether the API key shoud be read-only\n"
                },
                "token": {
                    "type": "string",
                    "description": "API token which can be used in Equinix Metal API clients\n"
                }
            },
            "required": [
                "description",
                "projectId",
                "readOnly",
                "token"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "Description string for the Project API Key resource\n* `read-only` - Flag indicating whether the API key shoud be read-only\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "UUID of the project where the API key is scoped to\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "Flag indicating whether the API key shoud be read-only\n"
                }
            },
            "requiredInputs": [
                "description",
                "projectId",
                "readOnly"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ProjectApiKey resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "Description string for the Project API Key resource\n* `read-only` - Flag indicating whether the API key shoud be read-only\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "UUID of the project where the API key is scoped to\n"
                    },
                    "readOnly": {
                        "type": "boolean",
                        "description": "Flag indicating whether the API key shoud be read-only\n"
                    },
                    "token": {
                        "type": "string",
                        "description": "API token which can be used in Equinix Metal API clients\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/projectSshKey:ProjectSshKey": {
            "description": "Provides an Equinix Metal project SSH key resource to manage project-specific SSH keys.\nProject SSH keys will only be populated onto servers that belong to that project, in contrast to User SSH Keys.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst projectId = \"\u003cUUID_of_your_project\u003e\";\nconst testProjectSshKey = new equinix_metal.ProjectSshKey(\"testProjectSshKey\", {\n    publicKey: \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDM/unxJeFqxsTJcu6mhqsMHSaVlpu+Jj/P+44zrm6X/MAoHSX3X9oLgujEjjZ74yLfdfe0bJrbL2YgJzNaEkIQQ1VPMHB5EhTKUBGnzlPP0hHTnxsjAm9qDHgUPgvgFDQSAMzdJRJ0Cexo16Ph9VxCoLh3dxiE7s2gaM2FdVg7P8aSxKypsxAhYV3D0AwqzoOyT6WWhBoQ0xZ85XevOTnJCpImSemEGs6nVGEsWcEc1d1YvdxFjAK4SdsKUMkj4Dsy/leKsdi/DEAf356vbMT1UHsXXvy5TlHu/Pa6qF53v32Enz+nhKy7/8W2Yt2yWx8HnQcT2rug9lvCXagJO6oauqRTO77C4QZn13ZLMZgLT66S/tNh2EX0gi6vmIs5dth8uF+K6nxIyKJXbcA4ASg7F1OJrHKFZdTc5v1cPeq6PcbqGgc+8SrPYQmzvQqLoMBuxyos2hUkYOmw3aeWJj9nFa8Wu5WaN89mUeOqSkU4S5cgUzWUOmKey56B/j/s1sVys9rMhZapVs0wL4L9GBBM48N5jAQZnnpo85A8KsZq5ME22bTLqnxsDXqDYZvS7PSI6Dxi7eleOFE/NYYDkrgDLHTQri8ucDMVeVWHgoMY2bPXdn7KKy5jW5jKsf8EPARXg77A4gRYmgKrcwIKqJEUPqyxJBe0CPoGTqgXPRsUiQ== tomk@hp2\",\n    projectId: projectId,\n});\nconst testDevice = new equinix_metal.Device(\"testDevice\", {\n    hostname: \"test\",\n    plan: \"c3.medium.x86\",\n    facilities: [\"ny5\"],\n    operatingSystem: \"ubuntu_20_04\",\n    billingCycle: \"hourly\",\n    projectSshKeyIds: [testProjectSshKey.id],\n    projectId: projectId,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\nproject_id = \"\u003cUUID_of_your_project\u003e\"\ntest_project_ssh_key = equinix_metal.ProjectSshKey(\"testProjectSshKey\",\n    public_key=\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDM/unxJeFqxsTJcu6mhqsMHSaVlpu+Jj/P+44zrm6X/MAoHSX3X9oLgujEjjZ74yLfdfe0bJrbL2YgJzNaEkIQQ1VPMHB5EhTKUBGnzlPP0hHTnxsjAm9qDHgUPgvgFDQSAMzdJRJ0Cexo16Ph9VxCoLh3dxiE7s2gaM2FdVg7P8aSxKypsxAhYV3D0AwqzoOyT6WWhBoQ0xZ85XevOTnJCpImSemEGs6nVGEsWcEc1d1YvdxFjAK4SdsKUMkj4Dsy/leKsdi/DEAf356vbMT1UHsXXvy5TlHu/Pa6qF53v32Enz+nhKy7/8W2Yt2yWx8HnQcT2rug9lvCXagJO6oauqRTO77C4QZn13ZLMZgLT66S/tNh2EX0gi6vmIs5dth8uF+K6nxIyKJXbcA4ASg7F1OJrHKFZdTc5v1cPeq6PcbqGgc+8SrPYQmzvQqLoMBuxyos2hUkYOmw3aeWJj9nFa8Wu5WaN89mUeOqSkU4S5cgUzWUOmKey56B/j/s1sVys9rMhZapVs0wL4L9GBBM48N5jAQZnnpo85A8KsZq5ME22bTLqnxsDXqDYZvS7PSI6Dxi7eleOFE/NYYDkrgDLHTQri8ucDMVeVWHgoMY2bPXdn7KKy5jW5jKsf8EPARXg77A4gRYmgKrcwIKqJEUPqyxJBe0CPoGTqgXPRsUiQ== tomk@hp2\",\n    project_id=project_id)\ntest_device = equinix_metal.Device(\"testDevice\",\n    hostname=\"test\",\n    plan=\"c3.medium.x86\",\n    facilities=[\"ny5\"],\n    operating_system=\"ubuntu_20_04\",\n    billing_cycle=\"hourly\",\n    project_ssh_key_ids=[test_project_ssh_key.id],\n    project_id=project_id)\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var projectId = \"\u003cUUID_of_your_project\u003e\";\n        var testProjectSshKey = new EquinixMetal.ProjectSshKey(\"testProjectSshKey\", new EquinixMetal.ProjectSshKeyArgs\n        {\n            PublicKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDM/unxJeFqxsTJcu6mhqsMHSaVlpu+Jj/P+44zrm6X/MAoHSX3X9oLgujEjjZ74yLfdfe0bJrbL2YgJzNaEkIQQ1VPMHB5EhTKUBGnzlPP0hHTnxsjAm9qDHgUPgvgFDQSAMzdJRJ0Cexo16Ph9VxCoLh3dxiE7s2gaM2FdVg7P8aSxKypsxAhYV3D0AwqzoOyT6WWhBoQ0xZ85XevOTnJCpImSemEGs6nVGEsWcEc1d1YvdxFjAK4SdsKUMkj4Dsy/leKsdi/DEAf356vbMT1UHsXXvy5TlHu/Pa6qF53v32Enz+nhKy7/8W2Yt2yWx8HnQcT2rug9lvCXagJO6oauqRTO77C4QZn13ZLMZgLT66S/tNh2EX0gi6vmIs5dth8uF+K6nxIyKJXbcA4ASg7F1OJrHKFZdTc5v1cPeq6PcbqGgc+8SrPYQmzvQqLoMBuxyos2hUkYOmw3aeWJj9nFa8Wu5WaN89mUeOqSkU4S5cgUzWUOmKey56B/j/s1sVys9rMhZapVs0wL4L9GBBM48N5jAQZnnpo85A8KsZq5ME22bTLqnxsDXqDYZvS7PSI6Dxi7eleOFE/NYYDkrgDLHTQri8ucDMVeVWHgoMY2bPXdn7KKy5jW5jKsf8EPARXg77A4gRYmgKrcwIKqJEUPqyxJBe0CPoGTqgXPRsUiQ== tomk@hp2\",\n            ProjectId = projectId,\n        });\n        var testDevice = new EquinixMetal.Device(\"testDevice\", new EquinixMetal.DeviceArgs\n        {\n            Hostname = \"test\",\n            Plan = \"c3.medium.x86\",\n            Facilities = \n            {\n                \"ny5\",\n            },\n            OperatingSystem = \"ubuntu_20_04\",\n            BillingCycle = \"hourly\",\n            ProjectSshKeyIds = \n            {\n                testProjectSshKey.Id,\n            },\n            ProjectId = projectId,\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprojectId := \"\u003cUUID_of_your_project\u003e\"\n\t\ttestProjectSshKey, err := equinix - metal.NewProjectSshKey(ctx, \"testProjectSshKey\", \u0026equinix-metal.ProjectSshKeyArgs{\n\t\t\tPublicKey: pulumi.String(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDM/unxJeFqxsTJcu6mhqsMHSaVlpu+Jj/P+44zrm6X/MAoHSX3X9oLgujEjjZ74yLfdfe0bJrbL2YgJzNaEkIQQ1VPMHB5EhTKUBGnzlPP0hHTnxsjAm9qDHgUPgvgFDQSAMzdJRJ0Cexo16Ph9VxCoLh3dxiE7s2gaM2FdVg7P8aSxKypsxAhYV3D0AwqzoOyT6WWhBoQ0xZ85XevOTnJCpImSemEGs6nVGEsWcEc1d1YvdxFjAK4SdsKUMkj4Dsy/leKsdi/DEAf356vbMT1UHsXXvy5TlHu/Pa6qF53v32Enz+nhKy7/8W2Yt2yWx8HnQcT2rug9lvCXagJO6oauqRTO77C4QZn13ZLMZgLT66S/tNh2EX0gi6vmIs5dth8uF+K6nxIyKJXbcA4ASg7F1OJrHKFZdTc5v1cPeq6PcbqGgc+8SrPYQmzvQqLoMBuxyos2hUkYOmw3aeWJj9nFa8Wu5WaN89mUeOqSkU4S5cgUzWUOmKey56B/j/s1sVys9rMhZapVs0wL4L9GBBM48N5jAQZnnpo85A8KsZq5ME22bTLqnxsDXqDYZvS7PSI6Dxi7eleOFE/NYYDkrgDLHTQri8ucDMVeVWHgoMY2bPXdn7KKy5jW5jKsf8EPARXg77A4gRYmgKrcwIKqJEUPqyxJBe0CPoGTqgXPRsUiQ== tomk@hp2\"),\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = equinix - metal.NewDevice(ctx, \"testDevice\", \u0026equinix-metal.DeviceArgs{\n\t\t\tHostname: pulumi.String(\"test\"),\n\t\t\tPlan:     pulumi.String(\"c3.medium.x86\"),\n\t\t\tFacilities: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ny5\"),\n\t\t\t},\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_20_04\"),\n\t\t\tBillingCycle:    pulumi.String(\"hourly\"),\n\t\t\tProjectSshKeyIds: pulumi.StringArray{\n\t\t\t\ttestProjectSshKey.ID(),\n\t\t\t},\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "properties": {
                "created": {
                    "type": "string",
                    "description": "The timestamp for when the SSH key was created\n"
                },
                "fingerprint": {
                    "type": "string",
                    "description": "The fingerprint of the SSH key\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the SSH key for identification\n"
                },
                "ownerId": {
                    "type": "string",
                    "description": "The ID of parent project (same as project_id)\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of parent project\n"
                },
                "publicKey": {
                    "type": "string",
                    "description": "The public key. If this is a file, it can be read using the file interpolation function\n"
                },
                "updated": {
                    "type": "string",
                    "description": "The timestamp for the last time the SSH key was updated\n"
                }
            },
            "required": [
                "created",
                "fingerprint",
                "name",
                "ownerId",
                "projectId",
                "publicKey",
                "updated"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The name of the SSH key for identification\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of parent project\n"
                },
                "publicKey": {
                    "type": "string",
                    "description": "The public key. If this is a file, it can be read using the file interpolation function\n"
                }
            },
            "requiredInputs": [
                "projectId",
                "publicKey"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ProjectSshKey resources.\n",
                "properties": {
                    "created": {
                        "type": "string",
                        "description": "The timestamp for when the SSH key was created\n"
                    },
                    "fingerprint": {
                        "type": "string",
                        "description": "The fingerprint of the SSH key\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the SSH key for identification\n"
                    },
                    "ownerId": {
                        "type": "string",
                        "description": "The ID of parent project (same as project_id)\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of parent project\n"
                    },
                    "publicKey": {
                        "type": "string",
                        "description": "The public key. If this is a file, it can be read using the file interpolation function\n"
                    },
                    "updated": {
                        "type": "string",
                        "description": "The timestamp for the last time the SSH key was updated\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/reservedIpBlock:ReservedIpBlock": {
            "description": "Provides a resource to create and manage blocks of reserved IP addresses in a project.\n\nWhen a user provisions first device in a facility, Equinix Metal API automatically allocates IPv6/56 and private IPv4/25 blocks.\nThe new device then gets IPv6 and private IPv4 addresses from those block. It also gets a public IPv4/31 address.\nEvery new device in the project and facility will automatically get IPv6 and private IPv4 addresses from these pre-allocated blocks.\nThe IPv6 and private IPv4 blocks can't be created, only imported. With this resource, it's possible to create either public IPv4 blocks or global IPv4 blocks.\n\nPublic blocks are allocated in a facility. Addresses from public blocks can only be assigned to devices in the facility. Public blocks can have mask from /24 (256 addresses) to /32 (1 address). If you create public block with this resource, you must fill the facility argmument.\n\nAddresses from global blocks can be assigned in any facility. Global blocks can have mask from /30 (4 addresses), to /32 (1 address). If you create global block with this resource, you must specify type = \"global_ipv4\" and you must omit the facility argument.\n\nOnce IP block is allocated or imported, an address from it can be assigned to device with the `equinix-metal.IpAttachment` resource.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\nAllocate reserved IP blocks:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\n// Allocate /31 block of max 2 public IPv4 addresses in Silicon Valley (sv15) facility for myproject\nconst twoElasticAddresses = new equinix_metal.ReservedIpBlock(\"twoElasticAddresses\", {\n    projectId: local.project_id,\n    facility: \"sv15\",\n    quantity: 2,\n});\n// Allocate 1 floating IP in Sillicon Valley (sv) metro\nconst testReservedIpBlock = new equinix_metal.ReservedIpBlock(\"testReservedIpBlock\", {\n    projectId: local.project_id,\n    type: \"public_ipv4\",\n    metro: \"sv\",\n    quantity: 1,\n});\n// Allocate 1 global floating IP, which can be assigned to device in any facility\nconst testIndex_reservedIpBlockReservedIpBlock = new equinix_metal.ReservedIpBlock(\"testIndex/reservedIpBlockReservedIpBlock\", {\n    projectId: local.project_id,\n    type: \"global_ipv4\",\n    quantity: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\n# Allocate /31 block of max 2 public IPv4 addresses in Silicon Valley (sv15) facility for myproject\ntwo_elastic_addresses = equinix_metal.ReservedIpBlock(\"twoElasticAddresses\",\n    project_id=local[\"project_id\"],\n    facility=\"sv15\",\n    quantity=2)\n# Allocate 1 floating IP in Sillicon Valley (sv) metro\ntest_reserved_ip_block = equinix_metal.ReservedIpBlock(\"testReservedIpBlock\",\n    project_id=local[\"project_id\"],\n    type=\"public_ipv4\",\n    metro=\"sv\",\n    quantity=1)\n# Allocate 1 global floating IP, which can be assigned to device in any facility\ntest_index_reserved_ip_block_reserved_ip_block = equinix_metal.ReservedIpBlock(\"testIndex/reservedIpBlockReservedIpBlock\",\n    project_id=local[\"project_id\"],\n    type=\"global_ipv4\",\n    quantity=1)\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        // Allocate /31 block of max 2 public IPv4 addresses in Silicon Valley (sv15) facility for myproject\n        var twoElasticAddresses = new EquinixMetal.ReservedIpBlock(\"twoElasticAddresses\", new EquinixMetal.ReservedIpBlockArgs\n        {\n            ProjectId = local.Project_id,\n            Facility = \"sv15\",\n            Quantity = 2,\n        });\n        // Allocate 1 floating IP in Sillicon Valley (sv) metro\n        var testReservedIpBlock = new EquinixMetal.ReservedIpBlock(\"testReservedIpBlock\", new EquinixMetal.ReservedIpBlockArgs\n        {\n            ProjectId = local.Project_id,\n            Type = \"public_ipv4\",\n            Metro = \"sv\",\n            Quantity = 1,\n        });\n        // Allocate 1 global floating IP, which can be assigned to device in any facility\n        var testIndex_reservedIpBlockReservedIpBlock = new EquinixMetal.ReservedIpBlock(\"testIndex/reservedIpBlockReservedIpBlock\", new EquinixMetal.ReservedIpBlockArgs\n        {\n            ProjectId = local.Project_id,\n            Type = \"global_ipv4\",\n            Quantity = 1,\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := equinix - metal.NewReservedIpBlock(ctx, \"twoElasticAddresses\", \u0026equinix-metal.ReservedIpBlockArgs{\n\t\t\tProjectId: pulumi.Any(local.Project_id),\n\t\t\tFacility:  pulumi.String(\"sv15\"),\n\t\t\tQuantity:  pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = equinix - metal.NewReservedIpBlock(ctx, \"testReservedIpBlock\", \u0026equinix-metal.ReservedIpBlockArgs{\n\t\t\tProjectId: pulumi.Any(local.Project_id),\n\t\t\tType:      pulumi.String(\"public_ipv4\"),\n\t\t\tMetro:     pulumi.String(\"sv\"),\n\t\t\tQuantity:  pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = equinix - metal.NewReservedIpBlock(ctx, \"testIndex_reservedIpBlockReservedIpBlock\", \u0026equinix-metal.ReservedIpBlockArgs{\n\t\t\tProjectId: pulumi.Any(local.Project_id),\n\t\t\tType:      pulumi.String(\"global_ipv4\"),\n\t\t\tQuantity:  pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n\nAllocate a block and run a device with public IPv4 from the block\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\n// Allocate /31 block of max 2 public IPv4 addresses in Silicon Valley (sv15) facility\nconst example = new equinix_metal.ReservedIpBlock(\"example\", {\n    projectId: local.project_id,\n    facility: \"sv15\",\n    quantity: 2,\n});\n// Run a device with both public IPv4 from the block assigned\nconst nodes = new equinix_metal.Device(\"nodes\", {\n    projectId: local.project_id,\n    facilities: [\"sv15\"],\n    plan: \"c3.small.x86\",\n    operatingSystem: \"ubuntu_20_04\",\n    hostname: \"test\",\n    billingCycle: \"hourly\",\n    ipAddresses: [\n        {\n            type: \"public_ipv4\",\n            cidr: 31,\n            reservationIds: [example.id],\n        },\n        {\n            type: \"private_ipv4\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\n# Allocate /31 block of max 2 public IPv4 addresses in Silicon Valley (sv15) facility\nexample = equinix_metal.ReservedIpBlock(\"example\",\n    project_id=local[\"project_id\"],\n    facility=\"sv15\",\n    quantity=2)\n# Run a device with both public IPv4 from the block assigned\nnodes = equinix_metal.Device(\"nodes\",\n    project_id=local[\"project_id\"],\n    facilities=[\"sv15\"],\n    plan=\"c3.small.x86\",\n    operating_system=\"ubuntu_20_04\",\n    hostname=\"test\",\n    billing_cycle=\"hourly\",\n    ip_addresses=[\n        equinix_metal.DeviceIpAddressArgs(\n            type=\"public_ipv4\",\n            cidr=31,\n            reservation_ids=[example.id],\n        ),\n        equinix_metal.DeviceIpAddressArgs(\n            type=\"private_ipv4\",\n        ),\n    ])\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        // Allocate /31 block of max 2 public IPv4 addresses in Silicon Valley (sv15) facility\n        var example = new EquinixMetal.ReservedIpBlock(\"example\", new EquinixMetal.ReservedIpBlockArgs\n        {\n            ProjectId = local.Project_id,\n            Facility = \"sv15\",\n            Quantity = 2,\n        });\n        // Run a device with both public IPv4 from the block assigned\n        var nodes = new EquinixMetal.Device(\"nodes\", new EquinixMetal.DeviceArgs\n        {\n            ProjectId = local.Project_id,\n            Facilities = \n            {\n                \"sv15\",\n            },\n            Plan = \"c3.small.x86\",\n            OperatingSystem = \"ubuntu_20_04\",\n            Hostname = \"test\",\n            BillingCycle = \"hourly\",\n            IpAddresses = \n            {\n                new EquinixMetal.Inputs.DeviceIpAddressArgs\n                {\n                    Type = \"public_ipv4\",\n                    Cidr = 31,\n                    ReservationIds = \n                    {\n                        example.Id,\n                    },\n                },\n                new EquinixMetal.Inputs.DeviceIpAddressArgs\n                {\n                    Type = \"private_ipv4\",\n                },\n            },\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := equinix - metal.NewReservedIpBlock(ctx, \"example\", \u0026equinix-metal.ReservedIpBlockArgs{\n\t\t\tProjectId: pulumi.Any(local.Project_id),\n\t\t\tFacility:  pulumi.String(\"sv15\"),\n\t\t\tQuantity:  pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = equinix - metal.NewDevice(ctx, \"nodes\", \u0026equinix-metal.DeviceArgs{\n\t\t\tProjectId: pulumi.Any(local.Project_id),\n\t\t\tFacilities: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"sv15\"),\n\t\t\t},\n\t\t\tPlan:            pulumi.String(\"c3.small.x86\"),\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_20_04\"),\n\t\t\tHostname:        pulumi.String(\"test\"),\n\t\t\tBillingCycle:    pulumi.String(\"hourly\"),\n\t\t\tIpAddresses: DeviceIpAddressArray{\n\t\t\t\t\u0026DeviceIpAddressArgs{\n\t\t\t\t\tType: pulumi.String(\"public_ipv4\"),\n\t\t\t\t\tCidr: pulumi.Int(31),\n\t\t\t\t\tReservationIds: pulumi.StringArray{\n\t\t\t\t\t\texample.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026DeviceIpAddressArgs{\n\t\t\t\t\tType: pulumi.String(\"private_ipv4\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nThis resource can be imported using an existing IP reservation ID\n\n```sh\n $ pulumi import equinix-metal:index/reservedIpBlock:ReservedIpBlock metal_reserved_ip_block {existing_ip_reservation_id}\n```\n\n ",
            "properties": {
                "address": {
                    "type": "string"
                },
                "addressFamily": {
                    "type": "integer",
                    "description": "Address family as integer (4 or 6)\n"
                },
                "cidr": {
                    "type": "integer",
                    "description": "length of CIDR prefix of the block as integer\n"
                },
                "cidrNotation": {
                    "type": "string",
                    "description": "Address and mask in CIDR notation, e.g. \"147.229.15.30/31\"\n"
                },
                "description": {
                    "type": "string",
                    "description": "Arbitrary description\n"
                },
                "facility": {
                    "type": "string",
                    "description": "Facility where to allocate the public IP address block, makes sense only for type==public_ipv4, must be empty for type==global_ipv4, conflicts with `metro`\n"
                },
                "gateway": {
                    "type": "string"
                },
                "global": {
                    "type": "boolean",
                    "description": "boolean flag whether addresses from a block are global (i.e. can be assigned in any facility)\n"
                },
                "manageable": {
                    "type": "boolean"
                },
                "management": {
                    "type": "boolean"
                },
                "metro": {
                    "type": "string",
                    "description": "Metro where to allocate the public IP address block, makes sense only for type==public_ipv4, must be empty for type==global_ipv4, conflicts with `facility`\n"
                },
                "netmask": {
                    "type": "string",
                    "description": "Mask in decimal notation, e.g. \"255.255.255.0\"\n"
                },
                "network": {
                    "type": "string",
                    "description": "Network IP address portion of the block specification\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The metal project ID where to allocate the address block\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "boolean flag whether addresses from a block are public\n"
                },
                "quantity": {
                    "type": "integer",
                    "description": "The number of allocated /32 addresses, a power of 2\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "String list of tags\n"
                },
                "type": {
                    "type": "string",
                    "description": "Either \"global_ipv4\" or \"public_ipv4\", defaults to \"public_ipv4\" for backward compatibility\n"
                }
            },
            "required": [
                "address",
                "addressFamily",
                "cidr",
                "cidrNotation",
                "gateway",
                "global",
                "manageable",
                "management",
                "netmask",
                "network",
                "projectId",
                "public",
                "quantity"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "Arbitrary description\n"
                },
                "facility": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/equinix-metal:index/Facility:Facility"
                        }
                    ],
                    "description": "Facility where to allocate the public IP address block, makes sense only for type==public_ipv4, must be empty for type==global_ipv4, conflicts with `metro`\n"
                },
                "metro": {
                    "type": "string",
                    "description": "Metro where to allocate the public IP address block, makes sense only for type==public_ipv4, must be empty for type==global_ipv4, conflicts with `facility`\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The metal project ID where to allocate the address block\n"
                },
                "quantity": {
                    "type": "integer",
                    "description": "The number of allocated /32 addresses, a power of 2\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "String list of tags\n"
                },
                "type": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/equinix-metal:index/IpBlockType:IpBlockType"
                        }
                    ],
                    "description": "Either \"global_ipv4\" or \"public_ipv4\", defaults to \"public_ipv4\" for backward compatibility\n"
                }
            },
            "requiredInputs": [
                "projectId",
                "quantity"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ReservedIpBlock resources.\n",
                "properties": {
                    "address": {
                        "type": "string"
                    },
                    "addressFamily": {
                        "type": "integer",
                        "description": "Address family as integer (4 or 6)\n"
                    },
                    "cidr": {
                        "type": "integer",
                        "description": "length of CIDR prefix of the block as integer\n"
                    },
                    "cidrNotation": {
                        "type": "string",
                        "description": "Address and mask in CIDR notation, e.g. \"147.229.15.30/31\"\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "Arbitrary description\n"
                    },
                    "facility": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/equinix-metal:index/Facility:Facility"
                            }
                        ],
                        "description": "Facility where to allocate the public IP address block, makes sense only for type==public_ipv4, must be empty for type==global_ipv4, conflicts with `metro`\n"
                    },
                    "gateway": {
                        "type": "string"
                    },
                    "global": {
                        "type": "boolean",
                        "description": "boolean flag whether addresses from a block are global (i.e. can be assigned in any facility)\n"
                    },
                    "manageable": {
                        "type": "boolean"
                    },
                    "management": {
                        "type": "boolean"
                    },
                    "metro": {
                        "type": "string",
                        "description": "Metro where to allocate the public IP address block, makes sense only for type==public_ipv4, must be empty for type==global_ipv4, conflicts with `facility`\n"
                    },
                    "netmask": {
                        "type": "string",
                        "description": "Mask in decimal notation, e.g. \"255.255.255.0\"\n"
                    },
                    "network": {
                        "type": "string",
                        "description": "Network IP address portion of the block specification\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The metal project ID where to allocate the address block\n"
                    },
                    "public": {
                        "type": "boolean",
                        "description": "boolean flag whether addresses from a block are public\n"
                    },
                    "quantity": {
                        "type": "integer",
                        "description": "The number of allocated /32 addresses, a power of 2\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "String list of tags\n"
                    },
                    "type": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/equinix-metal:index/IpBlockType:IpBlockType"
                            }
                        ],
                        "description": "Either \"global_ipv4\" or \"public_ipv4\", defaults to \"public_ipv4\" for backward compatibility\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/spotMarketRequest:SpotMarketRequest": {
            "description": "Provides an Equinix Metal Spot Market Request resource to allow you to\nmanage spot market requests on your account. For more detail on Spot Market, see [this article in Equinix Metal documentation](https://metal.equinix.com/developers/docs/deploy/spot-market/).\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\n// Create a spot market request\nconst req = new equinix_metal.SpotMarketRequest(\"req\", {\n    projectId: local.project_id,\n    maxBidPrice: 0.03,\n    facilities: [\"ny5\"],\n    devicesMin: 1,\n    devicesMax: 1,\n    instanceParameters: {\n        hostname: \"testspot\",\n        billingCycle: \"hourly\",\n        operatingSystem: \"ubuntu_20_04\",\n        plan: \"c3.small.x86\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\n# Create a spot market request\nreq = equinix_metal.SpotMarketRequest(\"req\",\n    project_id=local[\"project_id\"],\n    max_bid_price=0.03,\n    facilities=[\"ny5\"],\n    devices_min=1,\n    devices_max=1,\n    instance_parameters=equinix_metal.SpotMarketRequestInstanceParametersArgs(\n        hostname=\"testspot\",\n        billing_cycle=\"hourly\",\n        operating_system=\"ubuntu_20_04\",\n        plan=\"c3.small.x86\",\n    ))\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        // Create a spot market request\n        var req = new EquinixMetal.SpotMarketRequest(\"req\", new EquinixMetal.SpotMarketRequestArgs\n        {\n            ProjectId = local.Project_id,\n            MaxBidPrice = 0.03,\n            Facilities = \n            {\n                \"ny5\",\n            },\n            DevicesMin = 1,\n            DevicesMax = 1,\n            InstanceParameters = new EquinixMetal.Inputs.SpotMarketRequestInstanceParametersArgs\n            {\n                Hostname = \"testspot\",\n                BillingCycle = \"hourly\",\n                OperatingSystem = \"ubuntu_20_04\",\n                Plan = \"c3.small.x86\",\n            },\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := equinix - metal.NewSpotMarketRequest(ctx, \"req\", \u0026equinix-metal.SpotMarketRequestArgs{\n\t\t\tProjectId:   pulumi.Any(local.Project_id),\n\t\t\tMaxBidPrice: pulumi.Float64(0.03),\n\t\t\tFacilities: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ny5\"),\n\t\t\t},\n\t\t\tDevicesMin: pulumi.Int(1),\n\t\t\tDevicesMax: pulumi.Int(1),\n\t\t\tInstanceParameters: \u0026SpotMarketRequestInstanceParametersArgs{\n\t\t\t\tHostname:        pulumi.String(\"testspot\"),\n\t\t\t\tBillingCycle:    pulumi.String(\"hourly\"),\n\t\t\t\tOperatingSystem: pulumi.String(\"ubuntu_20_04\"),\n\t\t\t\tPlan:            pulumi.String(\"c3.small.x86\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nThis resource can be imported using an existing spot market request ID\n\n```sh\n $ pulumi import equinix-metal:index/spotMarketRequest:SpotMarketRequest metal_spot_market_request {existing_spot_market_request_id}\n```\n\n ",
            "properties": {
                "devicesMax": {
                    "type": "integer",
                    "description": "Maximum number devices to be created\n"
                },
                "devicesMin": {
                    "type": "integer",
                    "description": "Miniumum number devices to be created\n"
                },
                "facilities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Facility IDs where devices should be created\n"
                },
                "instanceParameters": {
                    "$ref": "#/types/equinix-metal:index/SpotMarketRequestInstanceParameters:SpotMarketRequestInstanceParameters",
                    "description": "Parameters for devices provisioned from this request. You can find the parameter description from the equinix-metal.Device doc.\n* `billing_cycle`\n* `plan`\n* `operating_system`\n* `hostname`\n* `termintation_time`\n* `always_pxe`\n* `description`\n* `features`\n* `locked`\n* `project_ssh_keys`\n* `user_ssh_keys`\n* `userdata`\n* `customdata`\n* `ipxe_script_url`\n* `tags`\n"
                },
                "maxBidPrice": {
                    "type": "number",
                    "description": "Maximum price user is willing to pay per hour per device\n"
                },
                "metro": {
                    "type": "string",
                    "description": "Metro where devices should be created\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID\n"
                },
                "waitForDevices": {
                    "type": "boolean",
                    "description": "On resource creation - wait until all desired devices are active, on resource destruction - wait until devices are removed\n"
                }
            },
            "required": [
                "devicesMax",
                "devicesMin",
                "facilities",
                "instanceParameters",
                "maxBidPrice",
                "projectId"
            ],
            "inputProperties": {
                "devicesMax": {
                    "type": "integer",
                    "description": "Maximum number devices to be created\n"
                },
                "devicesMin": {
                    "type": "integer",
                    "description": "Miniumum number devices to be created\n"
                },
                "facilities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Facility IDs where devices should be created\n"
                },
                "instanceParameters": {
                    "$ref": "#/types/equinix-metal:index/SpotMarketRequestInstanceParameters:SpotMarketRequestInstanceParameters",
                    "description": "Parameters for devices provisioned from this request. You can find the parameter description from the equinix-metal.Device doc.\n* `billing_cycle`\n* `plan`\n* `operating_system`\n* `hostname`\n* `termintation_time`\n* `always_pxe`\n* `description`\n* `features`\n* `locked`\n* `project_ssh_keys`\n* `user_ssh_keys`\n* `userdata`\n* `customdata`\n* `ipxe_script_url`\n* `tags`\n"
                },
                "maxBidPrice": {
                    "type": "number",
                    "description": "Maximum price user is willing to pay per hour per device\n"
                },
                "metro": {
                    "type": "string",
                    "description": "Metro where devices should be created\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID\n"
                },
                "waitForDevices": {
                    "type": "boolean",
                    "description": "On resource creation - wait until all desired devices are active, on resource destruction - wait until devices are removed\n"
                }
            },
            "requiredInputs": [
                "devicesMax",
                "devicesMin",
                "instanceParameters",
                "maxBidPrice",
                "projectId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SpotMarketRequest resources.\n",
                "properties": {
                    "devicesMax": {
                        "type": "integer",
                        "description": "Maximum number devices to be created\n"
                    },
                    "devicesMin": {
                        "type": "integer",
                        "description": "Miniumum number devices to be created\n"
                    },
                    "facilities": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Facility IDs where devices should be created\n"
                    },
                    "instanceParameters": {
                        "$ref": "#/types/equinix-metal:index/SpotMarketRequestInstanceParameters:SpotMarketRequestInstanceParameters",
                        "description": "Parameters for devices provisioned from this request. You can find the parameter description from the equinix-metal.Device doc.\n* `billing_cycle`\n* `plan`\n* `operating_system`\n* `hostname`\n* `termintation_time`\n* `always_pxe`\n* `description`\n* `features`\n* `locked`\n* `project_ssh_keys`\n* `user_ssh_keys`\n* `userdata`\n* `customdata`\n* `ipxe_script_url`\n* `tags`\n"
                    },
                    "maxBidPrice": {
                        "type": "number",
                        "description": "Maximum price user is willing to pay per hour per device\n"
                    },
                    "metro": {
                        "type": "string",
                        "description": "Metro where devices should be created\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "Project ID\n"
                    },
                    "waitForDevices": {
                        "type": "boolean",
                        "description": "On resource creation - wait until all desired devices are active, on resource destruction - wait until devices are removed\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/sshKey:SshKey": {
            "description": "Provides a resource to manage User SSH keys on your Equinix Metal user account. If you create a new device in a project, all the keys of the project's collaborators will be injected to the device.\n\nThe link between User SSH key and device is implicit. If you want to make sure that a key will be copied to a device, you must ensure that the device resource `depends_on` the key resource.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\nimport * from \"fs\";\n\n// Create a new SSH key\nconst key1 = new equinix_metal.SshKey(\"key1\", {publicKey: fs.readFileSync(\"/home/terraform/.ssh/id_rsa.pub\")});\n// Create new device with \"key1\" included. The device resource \"depends_on\" the\n// key, in order to make sure the key is created before the device.\nconst test = new equinix_metal.Device(\"test\", {\n    hostname: \"test-device\",\n    plan: \"c3.small.x86\",\n    facilities: [\"sjc1\"],\n    operatingSystem: \"ubuntu_20_04\",\n    billingCycle: \"hourly\",\n    projectId: local.project_id,\n}, {\n    dependsOn: [\"metal_ssh_key.key1\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\n# Create a new SSH key\nkey1 = equinix_metal.SshKey(\"key1\", public_key=(lambda path: open(path).read())(\"/home/terraform/.ssh/id_rsa.pub\"))\n# Create new device with \"key1\" included. The device resource \"depends_on\" the\n# key, in order to make sure the key is created before the device.\ntest = equinix_metal.Device(\"test\",\n    hostname=\"test-device\",\n    plan=\"c3.small.x86\",\n    facilities=[\"sjc1\"],\n    operating_system=\"ubuntu_20_04\",\n    billing_cycle=\"hourly\",\n    project_id=local[\"project_id\"],\n    opts=pulumi.ResourceOptions(depends_on=[\"metal_ssh_key.key1\"]))\n```\n```csharp\nusing System.IO;\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        // Create a new SSH key\n        var key1 = new EquinixMetal.SshKey(\"key1\", new EquinixMetal.SshKeyArgs\n        {\n            PublicKey = File.ReadAllText(\"/home/terraform/.ssh/id_rsa.pub\"),\n        });\n        // Create new device with \"key1\" included. The device resource \"depends_on\" the\n        // key, in order to make sure the key is created before the device.\n        var test = new EquinixMetal.Device(\"test\", new EquinixMetal.DeviceArgs\n        {\n            Hostname = \"test-device\",\n            Plan = \"c3.small.x86\",\n            Facilities = \n            {\n                \"sjc1\",\n            },\n            OperatingSystem = \"ubuntu_20_04\",\n            BillingCycle = \"hourly\",\n            ProjectId = local.Project_id,\n        }, new CustomResourceOptions\n        {\n            DependsOn = \n            {\n                \"metal_ssh_key.key1\",\n            },\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"io/ioutil\"\n\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := ioutil.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := equinix - metal.NewSshKey(ctx, \"key1\", \u0026equinix-metal.SshKeyArgs{\n\t\t\tPublicKey: readFileOrPanic(\"/home/terraform/.ssh/id_rsa.pub\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = equinix - metal.NewDevice(ctx, \"test\", \u0026equinix-metal.DeviceArgs{\n\t\t\tHostname: pulumi.String(\"test-device\"),\n\t\t\tPlan:     pulumi.String(\"c3.small.x86\"),\n\t\t\tFacilities: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"sjc1\"),\n\t\t\t},\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_20_04\"),\n\t\t\tBillingCycle:    pulumi.String(\"hourly\"),\n\t\t\tProjectId:       pulumi.Any(local.Project_id),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpulumi.Resource(\"metal_ssh_key.key1\"),\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nThis resource can be imported using an existing SSH Key ID\n\n```sh\n $ pulumi import equinix-metal:index/sshKey:SshKey metal_ssh_key {existing_sshkey_id}\n```\n\n ",
            "properties": {
                "created": {
                    "type": "string",
                    "description": "The timestamp for when the SSH key was created\n"
                },
                "fingerprint": {
                    "type": "string",
                    "description": "The fingerprint of the SSH key\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the SSH key for identification\n"
                },
                "ownerId": {
                    "type": "string",
                    "description": "The UUID of the Equinix Metal API User who owns this key\n"
                },
                "publicKey": {
                    "type": "string",
                    "description": "The public key. If this is a file, it\ncan be read using the file interpolation function\n"
                },
                "updated": {
                    "type": "string",
                    "description": "The timestamp for the last time the SSH key was updated\n"
                }
            },
            "required": [
                "created",
                "fingerprint",
                "name",
                "ownerId",
                "publicKey",
                "updated"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The name of the SSH key for identification\n"
                },
                "publicKey": {
                    "type": "string",
                    "description": "The public key. If this is a file, it\ncan be read using the file interpolation function\n"
                }
            },
            "requiredInputs": [
                "publicKey"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SshKey resources.\n",
                "properties": {
                    "created": {
                        "type": "string",
                        "description": "The timestamp for when the SSH key was created\n"
                    },
                    "fingerprint": {
                        "type": "string",
                        "description": "The fingerprint of the SSH key\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the SSH key for identification\n"
                    },
                    "ownerId": {
                        "type": "string",
                        "description": "The UUID of the Equinix Metal API User who owns this key\n"
                    },
                    "publicKey": {
                        "type": "string",
                        "description": "The public key. If this is a file, it\ncan be read using the file interpolation function\n"
                    },
                    "updated": {
                        "type": "string",
                        "description": "The timestamp for the last time the SSH key was updated\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/userApiKey:UserApiKey": {
            "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as metal from \"@pulumi/metal\";\n\nconst test = new metal.UserApiKey(\"test\", {\n    description: \"Read-only user key\",\n    readOnly: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\ntest = equinix_metal.UserApiKey(\"test\",\n    description=\"Read-only user key\",\n    read_only=True)\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var test = new EquinixMetal.UserApiKey(\"test\", new EquinixMetal.UserApiKeyArgs\n        {\n            Description = \"Read-only user key\",\n            ReadOnly = true,\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := equinix - metal.NewUserApiKey(ctx, \"test\", \u0026equinix-metal.UserApiKeyArgs{\n\t\t\tDescription: pulumi.String(\"Read-only user key\"),\n\t\t\tReadOnly:    pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description string for the User API Key resource\n* `read-only` - Flag indicating whether the API key shoud be read-only\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "Flag indicating whether the API key shoud be read-only\n"
                },
                "token": {
                    "type": "string",
                    "description": "API token which can be used in Equinix Metal API clients\n"
                },
                "userId": {
                    "type": "string",
                    "description": "UUID of the owner of the API key\n"
                }
            },
            "required": [
                "description",
                "readOnly",
                "token",
                "userId"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "Description string for the User API Key resource\n* `read-only` - Flag indicating whether the API key shoud be read-only\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "Flag indicating whether the API key shoud be read-only\n"
                }
            },
            "requiredInputs": [
                "description",
                "readOnly"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering UserApiKey resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "Description string for the User API Key resource\n* `read-only` - Flag indicating whether the API key shoud be read-only\n"
                    },
                    "readOnly": {
                        "type": "boolean",
                        "description": "Flag indicating whether the API key shoud be read-only\n"
                    },
                    "token": {
                        "type": "string",
                        "description": "API token which can be used in Equinix Metal API clients\n"
                    },
                    "userId": {
                        "type": "string",
                        "description": "UUID of the owner of the API key\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/virtualCircuit:VirtualCircuit": {
            "description": "Use this resource to associate VLAN with a Dedicated Port from [Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/#associating-a-vlan-with-a-dedicated-port).\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\nPick an existing Project and Connection, create a VLAN and use `equinix-metal.VirtualCircuit` to associate it with a Primary Port of the Connection.\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst projectId = \"52000fb2-ee46-4673-93a8-de2c2bdba33c\";\nconst connId = \"73f12f29-3e19-43a0-8e90-ae81580db1e0\";\nconst testConnection = equinix_metal.getConnection({\n    connectionId: connId,\n});\nconst testVlan = new equinix_metal.Vlan(\"testVlan\", {\n    projectId: projectId,\n    metro: testConnection.then(testConnection =\u003e testConnection.metro),\n});\nconst testVirtualCircuit = new equinix_metal.VirtualCircuit(\"testVirtualCircuit\", {\n    connectionId: connId,\n    projectId: projectId,\n    portId: testConnection.then(testConnection =\u003e testConnection.ports?[0]?.id),\n    vlanId: testVlan.id,\n    nniVlan: 1056,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\nproject_id = \"52000fb2-ee46-4673-93a8-de2c2bdba33c\"\nconn_id = \"73f12f29-3e19-43a0-8e90-ae81580db1e0\"\ntest_connection = equinix_metal.get_connection(connection_id=conn_id)\ntest_vlan = equinix_metal.Vlan(\"testVlan\",\n    project_id=project_id,\n    metro=test_connection.metro)\ntest_virtual_circuit = equinix_metal.VirtualCircuit(\"testVirtualCircuit\",\n    connection_id=conn_id,\n    project_id=project_id,\n    port_id=test_connection.ports[0].id,\n    vlan_id=test_vlan.id,\n    nni_vlan=1056)\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var projectId = \"52000fb2-ee46-4673-93a8-de2c2bdba33c\";\n        var connId = \"73f12f29-3e19-43a0-8e90-ae81580db1e0\";\n        var testConnection = Output.Create(EquinixMetal.GetConnection.InvokeAsync(new EquinixMetal.GetConnectionArgs\n        {\n            ConnectionId = connId,\n        }));\n        var testVlan = new EquinixMetal.Vlan(\"testVlan\", new EquinixMetal.VlanArgs\n        {\n            ProjectId = projectId,\n            Metro = testConnection.Apply(testConnection =\u003e testConnection.Metro),\n        });\n        var testVirtualCircuit = new EquinixMetal.VirtualCircuit(\"testVirtualCircuit\", new EquinixMetal.VirtualCircuitArgs\n        {\n            ConnectionId = connId,\n            ProjectId = projectId,\n            PortId = testConnection.Apply(testConnection =\u003e testConnection.Ports?[0]?.Id),\n            VlanId = testVlan.Id,\n            NniVlan = 1056,\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprojectId := \"52000fb2-ee46-4673-93a8-de2c2bdba33c\"\n\t\tconnId := \"73f12f29-3e19-43a0-8e90-ae81580db1e0\"\n\t\ttestConnection, err := equinix - metal.LookupConnection(ctx, \u0026GetConnectionArgs{\n\t\t\tConnectionId: connId,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestVlan, err := equinix - metal.NewVlan(ctx, \"testVlan\", \u0026equinix-metal.VlanArgs{\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tMetro:     pulumi.String(testConnection.Metro),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = equinix - metal.NewVirtualCircuit(ctx, \"testVirtualCircuit\", \u0026equinix-metal.VirtualCircuitArgs{\n\t\t\tConnectionId: pulumi.String(connId),\n\t\t\tProjectId:    pulumi.String(projectId),\n\t\t\tPortId:       pulumi.String(testConnection.Ports[0].Id),\n\t\t\tVlanId:       testVlan.ID(),\n\t\t\tNniVlan:      pulumi.Int(1056),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "properties": {
                "connectionId": {
                    "type": "string",
                    "description": "UUID of Connection where the VC is scoped to\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Virtual Circuit resource\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Virtual Circuit resource\n"
                },
                "nniVlan": {
                    "type": "integer",
                    "description": "Equinix Metal network-to-network VLAN ID\n"
                },
                "nniVnid": {
                    "type": "integer",
                    "description": "Nni VLAN ID parameter, see https://metal.equinix.com/developers/docs/networking/fabric/\n"
                },
                "portId": {
                    "type": "string",
                    "description": "UUID of the Connection Port where the VC is scoped to\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "UUID of the Project where the VC is scoped to\n"
                },
                "speed": {
                    "type": "string",
                    "description": "Speed of the Virtual Circuit resource\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the virtal circuit\n* `vnid`\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Tags for the Virtual Circuit resource\n"
                },
                "vlanId": {
                    "type": "string",
                    "description": "UUID of the VLAN to associate\n"
                },
                "vnid": {
                    "type": "integer",
                    "description": "VNID VLAN parameter, see https://metal.equinix.com/developers/docs/networking/fabric/\n"
                }
            },
            "required": [
                "connectionId",
                "name",
                "nniVnid",
                "portId",
                "projectId",
                "speed",
                "status",
                "vlanId",
                "vnid"
            ],
            "inputProperties": {
                "connectionId": {
                    "type": "string",
                    "description": "UUID of Connection where the VC is scoped to\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Virtual Circuit resource\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Virtual Circuit resource\n"
                },
                "nniVlan": {
                    "type": "integer",
                    "description": "Equinix Metal network-to-network VLAN ID\n"
                },
                "portId": {
                    "type": "string",
                    "description": "UUID of the Connection Port where the VC is scoped to\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "UUID of the Project where the VC is scoped to\n"
                },
                "speed": {
                    "type": "string",
                    "description": "Speed of the Virtual Circuit resource\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Tags for the Virtual Circuit resource\n"
                },
                "vlanId": {
                    "type": "string",
                    "description": "UUID of the VLAN to associate\n"
                }
            },
            "requiredInputs": [
                "connectionId",
                "portId",
                "projectId",
                "vlanId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VirtualCircuit resources.\n",
                "properties": {
                    "connectionId": {
                        "type": "string",
                        "description": "UUID of Connection where the VC is scoped to\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "Description for the Virtual Circuit resource\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the Virtual Circuit resource\n"
                    },
                    "nniVlan": {
                        "type": "integer",
                        "description": "Equinix Metal network-to-network VLAN ID\n"
                    },
                    "nniVnid": {
                        "type": "integer",
                        "description": "Nni VLAN ID parameter, see https://metal.equinix.com/developers/docs/networking/fabric/\n"
                    },
                    "portId": {
                        "type": "string",
                        "description": "UUID of the Connection Port where the VC is scoped to\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "UUID of the Project where the VC is scoped to\n"
                    },
                    "speed": {
                        "type": "string",
                        "description": "Speed of the Virtual Circuit resource\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "Status of the virtal circuit\n* `vnid`\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Tags for the Virtual Circuit resource\n"
                    },
                    "vlanId": {
                        "type": "string",
                        "description": "UUID of the VLAN to associate\n"
                    },
                    "vnid": {
                        "type": "integer",
                        "description": "VNID VLAN parameter, see https://metal.equinix.com/developers/docs/networking/fabric/\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/vlan:Vlan": {
            "description": "Provides a resource to allow users to manage Virtual Networks in their projects.\n\nTo learn more about Layer 2 networking in Equinix Metal, refer to\n\n* \u003chttps://metal.equinix.com/developers/docs/networking/layer2/\u003e\n* \u003chttps://metal.equinix.com/developers/docs/networking/layer2-configs/\u003e\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\n// Create a new VLAN in facility \"sv15\"\nconst vlan1Vlan = new equinix_metal.Vlan(\"vlan1Vlan\", {\n    description: \"VLAN in New Jersey\",\n    facility: \"sv15\",\n    projectId: local.project_id,\n});\n// Create a new VLAN in metro \"esv\"\nconst vlan1Index_vlanVlan = new equinix_metal.Vlan(\"vlan1Index/vlanVlan\", {\n    description: \"VLAN in New Jersey\",\n    metro: \"sv\",\n    projectId: local.project_id,\n    vxlan: 1040,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\n# Create a new VLAN in facility \"sv15\"\nvlan1_vlan = equinix_metal.Vlan(\"vlan1Vlan\",\n    description=\"VLAN in New Jersey\",\n    facility=\"sv15\",\n    project_id=local[\"project_id\"])\n# Create a new VLAN in metro \"esv\"\nvlan1_index_vlan_vlan = equinix_metal.Vlan(\"vlan1Index/vlanVlan\",\n    description=\"VLAN in New Jersey\",\n    metro=\"sv\",\n    project_id=local[\"project_id\"],\n    vxlan=1040)\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        // Create a new VLAN in facility \"sv15\"\n        var vlan1Vlan = new EquinixMetal.Vlan(\"vlan1Vlan\", new EquinixMetal.VlanArgs\n        {\n            Description = \"VLAN in New Jersey\",\n            Facility = \"sv15\",\n            ProjectId = local.Project_id,\n        });\n        // Create a new VLAN in metro \"esv\"\n        var vlan1Index_vlanVlan = new EquinixMetal.Vlan(\"vlan1Index/vlanVlan\", new EquinixMetal.VlanArgs\n        {\n            Description = \"VLAN in New Jersey\",\n            Metro = \"sv\",\n            ProjectId = local.Project_id,\n            Vxlan = 1040,\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := equinix - metal.NewVlan(ctx, \"vlan1Vlan\", \u0026equinix-metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"VLAN in New Jersey\"),\n\t\t\tFacility:    pulumi.String(\"sv15\"),\n\t\t\tProjectId:   pulumi.Any(local.Project_id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = equinix - metal.NewVlan(ctx, \"vlan1Index_vlanVlan\", \u0026equinix-metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"VLAN in New Jersey\"),\n\t\t\tMetro:       pulumi.String(\"sv\"),\n\t\t\tProjectId:   pulumi.Any(local.Project_id),\n\t\t\tVxlan:       pulumi.Int(1040),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nThis resource can be imported using an existing VLAN ID (UUID)\n\n```sh\n $ pulumi import equinix-metal:index/vlan:Vlan metal_vlan {existing_vlan_id}\n```\n\n ",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description string\n"
                },
                "facility": {
                    "type": "string",
                    "description": "Facility where to create the VLAN\n"
                },
                "metro": {
                    "type": "string"
                },
                "projectId": {
                    "type": "string",
                    "description": "ID of parent project\n"
                },
                "vxlan": {
                    "type": "integer",
                    "description": "VLAN ID, must be unique in metro\n"
                }
            },
            "required": [
                "projectId",
                "vxlan"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "Description string\n"
                },
                "facility": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/equinix-metal:index/Facility:Facility"
                        }
                    ],
                    "description": "Facility where to create the VLAN\n"
                },
                "metro": {
                    "type": "string"
                },
                "projectId": {
                    "type": "string",
                    "description": "ID of parent project\n"
                },
                "vxlan": {
                    "type": "integer",
                    "description": "VLAN ID, must be unique in metro\n"
                }
            },
            "requiredInputs": [
                "projectId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Vlan resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "Description string\n"
                    },
                    "facility": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/equinix-metal:index/Facility:Facility"
                            }
                        ],
                        "description": "Facility where to create the VLAN\n"
                    },
                    "metro": {
                        "type": "string"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "ID of parent project\n"
                    },
                    "vxlan": {
                        "type": "integer",
                        "description": "VLAN ID, must be unique in metro\n"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/volume:Volume": {
            "description": "Resource `equinix-metal.Volume` was removed in version 3.0.0, and the API support was deprecated on June 1st 2021. See https://metal.equinix.com/developers/docs/storage/elastic-block-storage/#elastic-block-storage for more details.\n",
            "properties": {
                "attachments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/equinix-metal:index/VolumeAttachment:VolumeAttachment"
                    }
                },
                "billingCycle": {
                    "type": "string"
                },
                "created": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "facility": {
                    "type": "string"
                },
                "locked": {
                    "type": "boolean"
                },
                "name": {
                    "type": "string"
                },
                "plan": {
                    "type": "string"
                },
                "projectId": {
                    "type": "string"
                },
                "size": {
                    "type": "integer"
                },
                "snapshotPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/equinix-metal:index/VolumeSnapshotPolicy:VolumeSnapshotPolicy"
                    }
                },
                "state": {
                    "type": "string"
                },
                "updated": {
                    "type": "string"
                }
            },
            "required": [
                "attachments",
                "billingCycle",
                "created",
                "facility",
                "name",
                "plan",
                "projectId",
                "size",
                "state",
                "updated"
            ],
            "inputProperties": {
                "billingCycle": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/equinix-metal:index/BillingCycle:BillingCycle"
                        }
                    ]
                },
                "description": {
                    "type": "string"
                },
                "facility": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/equinix-metal:index/Facility:Facility"
                        }
                    ]
                },
                "locked": {
                    "type": "boolean"
                },
                "plan": {
                    "type": "string"
                },
                "projectId": {
                    "type": "string"
                },
                "size": {
                    "type": "integer"
                },
                "snapshotPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/equinix-metal:index/VolumeSnapshotPolicy:VolumeSnapshotPolicy"
                    }
                }
            },
            "requiredInputs": [
                "facility",
                "plan",
                "projectId",
                "size"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Volume resources.\n",
                "properties": {
                    "attachments": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/equinix-metal:index/VolumeAttachment:VolumeAttachment"
                        }
                    },
                    "billingCycle": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/equinix-metal:index/BillingCycle:BillingCycle"
                            }
                        ]
                    },
                    "created": {
                        "type": "string"
                    },
                    "description": {
                        "type": "string"
                    },
                    "facility": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/equinix-metal:index/Facility:Facility"
                            }
                        ]
                    },
                    "locked": {
                        "type": "boolean"
                    },
                    "name": {
                        "type": "string"
                    },
                    "plan": {
                        "type": "string"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "size": {
                        "type": "integer"
                    },
                    "snapshotPolicies": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/equinix-metal:index/VolumeSnapshotPolicy:VolumeSnapshotPolicy"
                        }
                    },
                    "state": {
                        "type": "string"
                    },
                    "updated": {
                        "type": "string"
                    }
                },
                "type": "object"
            }
        },
        "equinix-metal:index/volumeAttachment:VolumeAttachment": {
            "description": "Resource `equinix-metal.VolumeAttachment` was removed in version 3.0.0, and the API support was deprecated on June 1st 2021. See https://metal.equinix.com/developers/docs/storage/elastic-block-storage/#elastic-block-storage for more details.\n",
            "properties": {
                "deviceId": {
                    "type": "string"
                },
                "volumeId": {
                    "type": "string"
                }
            },
            "required": [
                "deviceId",
                "volumeId"
            ],
            "inputProperties": {
                "deviceId": {
                    "type": "string"
                },
                "volumeId": {
                    "type": "string"
                }
            },
            "requiredInputs": [
                "deviceId",
                "volumeId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VolumeAttachment resources.\n",
                "properties": {
                    "deviceId": {
                        "type": "string"
                    },
                    "volumeId": {
                        "type": "string"
                    }
                },
                "type": "object"
            }
        }
    },
    "functions": {
        "equinix-metal:index/getConnection:getConnection": {
            "description": "Use this data source to retrieve a connection resource from [Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as metal from \"@pulumi/metal\";\n\nconst example = pulumi.output(metal.getConnection({\n    connectionId: \"4347e805-eb46-4699-9eb9-5c116e6a017d\",\n}));\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\nexample = equinix_metal.get_connection(connection_id=\"4347e805-eb46-4699-9eb9-5c116e6a017d\")\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var example = Output.Create(EquinixMetal.GetConnection.InvokeAsync(new EquinixMetal.GetConnectionArgs\n        {\n            ConnectionId = \"4347e805-eb46-4699-9eb9-5c116e6a017d\",\n        }));\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := equinix - metal.LookupConnection(ctx, \u0026GetConnectionArgs{\n\t\t\tConnectionId: \"4347e805-eb46-4699-9eb9-5c116e6a017d\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "inputs": {
                "description": "A collection of arguments for invoking getConnection.\n",
                "properties": {
                    "connectionId": {
                        "type": "string",
                        "description": "ID of the connection resource\n"
                    }
                },
                "type": "object",
                "required": [
                    "connectionId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getConnection.\n",
                "properties": {
                    "connectionId": {
                        "type": "string"
                    },
                    "description": {
                        "type": "string",
                        "description": "Description of the connection resource\n"
                    },
                    "facility": {
                        "type": "string",
                        "description": "Slug of a facility to which the connection belongs\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "The provider-assigned unique ID for this managed resource.\n"
                    },
                    "metro": {
                        "type": "string",
                        "description": "Slug of a metro to which the connection belongs\n"
                    },
                    "mode": {
                        "type": "string",
                        "description": "Mode for connections in IBX facilities with the dedicated type - standard or tunnel\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Port name\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "ID of organization to which the connection belongs\n"
                    },
                    "ports": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/equinix-metal:index/getConnectionPort:getConnectionPort"
                        },
                        "description": "List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "ID of project to which the connection belongs\n"
                    },
                    "redundancy": {
                        "type": "string",
                        "description": "Connection redundancy, reduntant or primary\n"
                    },
                    "speed": {
                        "type": "integer",
                        "description": "Port speed in bits per second\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "Port status\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "String list of tags\n"
                    },
                    "token": {
                        "type": "string",
                        "description": "Fabric Token for the [Equinix Fabric Portal](https://ecxfabric.equinix.com/dashboard)\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "Connection type, dedicated or shared\n"
                    }
                },
                "type": "object",
                "required": [
                    "connectionId",
                    "description",
                    "facility",
                    "metro",
                    "mode",
                    "name",
                    "organizationId",
                    "ports",
                    "projectId",
                    "redundancy",
                    "speed",
                    "status",
                    "tags",
                    "token",
                    "type",
                    "id"
                ]
            }
        },
        "equinix-metal:index/getDevice:getDevice": {
            "description": "Provides an Equinix Metal device datasource.\n\n\u003e **Note:** All arguments including the `root_password` and `user_data` will be stored in\n the raw state as plain-text.\n[Read more about sensitive data in state](https://www.terraform.io/docs/state/sensitive-data.html).\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst test = equinix_metal.getDevice({\n    projectId: local.project_id,\n    hostname: \"mydevice\",\n});\nexport const id = test.then(test =\u003e test.id);\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\ntest = equinix_metal.get_device(project_id=local[\"project_id\"],\n    hostname=\"mydevice\")\npulumi.export(\"id\", test.id)\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var test = Output.Create(EquinixMetal.GetDevice.InvokeAsync(new EquinixMetal.GetDeviceArgs\n        {\n            ProjectId = local.Project_id,\n            Hostname = \"mydevice\",\n        }));\n        this.Id = test.Apply(test =\u003e test.Id);\n    }\n\n    [Output(\"id\")]\n    public Output\u003cstring\u003e Id { get; set; }\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := local.Project_id\n\t\topt1 := \"mydevice\"\n\t\ttest, err := equinix - metal.LookupDevice(ctx, \u0026GetDeviceArgs{\n\t\t\tProjectId: \u0026opt0,\n\t\t\tHostname:  \u0026opt1,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"id\", test.Id)\n\t\treturn nil\n\t})\n}\n```\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst test = equinix_metal.getDevice({});\nexport const ipv4 = test.then(test =\u003e test.accessPublicIpv4);\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\ntest = equinix_metal.get_device()\npulumi.export(\"ipv4\", test.access_public_ipv4)\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var test = Output.Create(EquinixMetal.GetDevice.InvokeAsync());\n        this.Ipv4 = test.Apply(test =\u003e test.AccessPublicIpv4);\n    }\n\n    [Output(\"ipv4\")]\n    public Output\u003cstring\u003e Ipv4 { get; set; }\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := equinix - metal.LookupDevice(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"ipv4\", test.AccessPublicIpv4)\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "inputs": {
                "description": "A collection of arguments for invoking getDevice.\n",
                "properties": {
                    "deviceId": {
                        "type": "string",
                        "description": "Device ID\n"
                    },
                    "hostname": {
                        "type": "string",
                        "description": "The device name\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The id of the project in which the devices exists\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getDevice.\n",
                "properties": {
                    "accessPrivateIpv4": {
                        "type": "string",
                        "description": "The ipv4 private IP assigned to the device\n"
                    },
                    "accessPublicIpv4": {
                        "type": "string",
                        "description": "The ipv4 management IP assigned to the device\n"
                    },
                    "accessPublicIpv6": {
                        "type": "string",
                        "description": "The ipv6 management IP assigned to the device\n"
                    },
                    "alwaysPxe": {
                        "type": "boolean"
                    },
                    "billingCycle": {
                        "type": "string",
                        "description": "The billing cycle of the device (monthly or hourly)\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "Description string for the device\n"
                    },
                    "deviceId": {
                        "type": "string"
                    },
                    "facility": {
                        "type": "string",
                        "description": "The facility where the device is deployed.\n"
                    },
                    "hardwareReservationId": {
                        "type": "string",
                        "description": "The id of hardware reservation which this device occupies\n"
                    },
                    "hostname": {
                        "type": "string"
                    },
                    "id": {
                        "type": "string",
                        "description": "The provider-assigned unique ID for this managed resource.\n"
                    },
                    "ipxeScriptUrl": {
                        "type": "string"
                    },
                    "metro": {
                        "type": "string",
                        "description": "The metro where the device is deployed\n"
                    },
                    "networkType": {
                        "type": "string",
                        "description": "L2 network type of the device, one of \"layer3\", \"layer2-bonded\", \"layer2-individual\", \"hybrid\"\n"
                    },
                    "networks": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/equinix-metal:index/getDeviceNetwork:getDeviceNetwork"
                        },
                        "description": "The device's private and public IP (v4 and v6) network details. When a device is run without any special network configuration, it will have 3 networks:\n* Public IPv4 at `metal_device.name.network.0`\n* IPv6 at `metal_device.name.network.1`\n* Private IPv4 at `metal_device.name.network.2`\nElastic addresses then stack by type - an assigned public IPv4 will go after the management public IPv4 (to index 1), and will then shift the indices of the IPv6 and private IPv4. Assigned private IPv4 will go after the management private IPv4 (to the end of the network list).\nThe fields of the network attributes are:\n"
                    },
                    "operatingSystem": {
                        "type": "string",
                        "description": "The operating system running on the device\n"
                    },
                    "plan": {
                        "type": "string",
                        "description": "The hardware config of the device\n"
                    },
                    "ports": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/equinix-metal:index/getDevicePort:getDevicePort"
                        },
                        "description": "Ports assigned to the device\n"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "rootPassword": {
                        "type": "string",
                        "description": "Root password to the server (if still available)\n"
                    },
                    "sshKeyIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of IDs of SSH keys deployed in the device, can be both user or project SSH keys\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "The state of the device\n"
                    },
                    "storage": {
                        "type": "string"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Tags attached to the device\n"
                    }
                },
                "type": "object",
                "required": [
                    "accessPrivateIpv4",
                    "accessPublicIpv4",
                    "accessPublicIpv6",
                    "alwaysPxe",
                    "billingCycle",
                    "description",
                    "deviceId",
                    "facility",
                    "hardwareReservationId",
                    "hostname",
                    "ipxeScriptUrl",
                    "metro",
                    "networks",
                    "networkType",
                    "operatingSystem",
                    "plan",
                    "ports",
                    "projectId",
                    "rootPassword",
                    "sshKeyIds",
                    "state",
                    "storage",
                    "tags",
                    "id"
                ]
            }
        },
        "equinix-metal:index/getDeviceBgpNeighbors:getDeviceBgpNeighbors": {
            "description": "Use this datasource to retrieve list of BGP neighbors of a device in the Equinix Metal host.\n\nTo have any BGP neighbors listed, the device must be in BGP-enabled project and have a BGP session assigned.\n\nTo learn more about using BGP in Equinix Metal, see the equinix-metal.BgpSession resource documentation.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst test = equinix_metal.getDeviceBgpNeighbors({\n    deviceId: \"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\",\n});\nexport const bgpNeighborsListing = test.then(test =\u003e test.bgpNeighbors);\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\ntest = equinix_metal.get_device_bgp_neighbors(device_id=\"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\")\npulumi.export(\"bgpNeighborsListing\", test.bgp_neighbors)\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var test = Output.Create(EquinixMetal.GetDeviceBgpNeighbors.InvokeAsync(new EquinixMetal.GetDeviceBgpNeighborsArgs\n        {\n            DeviceId = \"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\",\n        }));\n        this.BgpNeighborsListing = test.Apply(test =\u003e test.BgpNeighbors);\n    }\n\n    [Output(\"bgpNeighborsListing\")]\n    public Output\u003cstring\u003e BgpNeighborsListing { get; set; }\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := equinix - metal.GetDeviceBgpNeighbors(ctx, \u0026GetDeviceBgpNeighborsArgs{\n\t\t\tDeviceId: \"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"bgpNeighborsListing\", test.BgpNeighbors)\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "inputs": {
                "description": "A collection of arguments for invoking getDeviceBgpNeighbors.\n",
                "properties": {
                    "deviceId": {
                        "type": "string",
                        "description": "UUID of BGP-enabled device whose neighbors to list\n"
                    }
                },
                "type": "object",
                "required": [
                    "deviceId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getDeviceBgpNeighbors.\n",
                "properties": {
                    "bgpNeighbors": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/equinix-metal:index/getDeviceBgpNeighborsBgpNeighbor:getDeviceBgpNeighborsBgpNeighbor"
                        },
                        "description": "array of BGP neighbor records with attributes:\n"
                    },
                    "deviceId": {
                        "type": "string"
                    },
                    "id": {
                        "type": "string",
                        "description": "The provider-assigned unique ID for this managed resource.\n"
                    }
                },
                "type": "object",
                "required": [
                    "bgpNeighbors",
                    "deviceId",
                    "id"
                ]
            }
        },
        "equinix-metal:index/getFacility:getFacility": {
            "description": "Provides an Equinix Metal facility datasource.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getFacility.\n",
                "properties": {
                    "capacities": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/equinix-metal:index/getFacilityCapacity:getFacilityCapacity"
                        },
                        "description": "(Optional) Ensure that queried facility has capacity for specified number of given plans\n"
                    },
                    "code": {
                        "type": "string",
                        "description": "The facility code\n"
                    },
                    "featuresRequireds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Set of feature strings that the facility must have\n"
                    }
                },
                "type": "object",
                "required": [
                    "code"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getFacility.\n",
                "properties": {
                    "capacities": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/equinix-metal:index/getFacilityCapacity:getFacilityCapacity"
                        },
                        "description": "(Optional) Ensure that queried facility has capacity for specified number of given plans\n"
                    },
                    "code": {
                        "type": "string"
                    },
                    "features": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The features of the facility\n"
                    },
                    "featuresRequireds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "id": {
                        "type": "string",
                        "description": "The provider-assigned unique ID for this managed resource.\n"
                    },
                    "metro": {
                        "type": "string",
                        "description": "The metro code the facility is part of\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the facility\n"
                    }
                },
                "type": "object",
                "required": [
                    "code",
                    "features",
                    "metro",
                    "name",
                    "id"
                ]
            }
        },
        "equinix-metal:index/getGateway:getGateway": {
            "description": "Use this datasource to retrieve Metal Gateway resources in Equinix Metal.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\n// Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\nconst testVlan = new equinix_metal.Vlan(\"testVlan\", {\n    description: \"test VLAN in SV\",\n    metro: \"sv\",\n    projectId: local.project_id,\n});\nconst testGateway = equinix_metal.getGateway({\n    gatewayId: local.gateway_id,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\n# Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\ntest_vlan = equinix_metal.Vlan(\"testVlan\",\n    description=\"test VLAN in SV\",\n    metro=\"sv\",\n    project_id=local[\"project_id\"])\ntest_gateway = equinix_metal.get_gateway(gateway_id=local[\"gateway_id\"])\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        // Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\n        var testVlan = new EquinixMetal.Vlan(\"testVlan\", new EquinixMetal.VlanArgs\n        {\n            Description = \"test VLAN in SV\",\n            Metro = \"sv\",\n            ProjectId = local.Project_id,\n        });\n        var testGateway = Output.Create(EquinixMetal.GetGateway.InvokeAsync(new EquinixMetal.GetGatewayArgs\n        {\n            GatewayId = local.Gateway_id,\n        }));\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := equinix - metal.NewVlan(ctx, \"testVlan\", \u0026equinix-metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"test VLAN in SV\"),\n\t\t\tMetro:       pulumi.String(\"sv\"),\n\t\t\tProjectId:   pulumi.Any(local.Project_id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = equinix - metal.LookupGateway(ctx, \u0026GetGatewayArgs{\n\t\t\tGatewayId: local.Gateway_id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "inputs": {
                "description": "A collection of arguments for invoking getGateway.\n",
                "properties": {
                    "gatewayId": {
                        "type": "string",
                        "description": "UUID of the metal gateway resource to retrieve\n"
                    }
                },
                "type": "object",
                "required": [
                    "gatewayId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGateway.\n",
                "properties": {
                    "gatewayId": {
                        "type": "string"
                    },
                    "id": {
                        "type": "string",
                        "description": "The provider-assigned unique ID for this managed resource.\n"
                    },
                    "ipReservationId": {
                        "type": "string",
                        "description": "UUID of IP reservation block bound to the gateway\n"
                    },
                    "privateIpv4SubnetSize": {
                        "type": "integer",
                        "description": "Size of the private IPv4 subnet bound to this metal gateway, one of (8, 16, 32, 64, 128)`\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "UUID of the project where the gateway is scoped to\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "Status of the gateway resource\n"
                    },
                    "vlanId": {
                        "type": "string",
                        "description": "UUID of the VLAN where the gateway is scoped to\n"
                    }
                },
                "type": "object",
                "required": [
                    "gatewayId",
                    "ipReservationId",
                    "privateIpv4SubnetSize",
                    "projectId",
                    "state",
                    "vlanId",
                    "id"
                ]
            }
        },
        "equinix-metal:index/getHardwareReservation:getHardwareReservation": {
            "description": "Use this data source to retrieve a [hardware reservation resource from Equinix Metal](https://metal.equinix.com/developers/docs/deploy/reserved/).\n\nYou can look up hardware reservation by its ID or by ID of device which occupies it.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getHardwareReservation.\n",
                "properties": {
                    "deviceId": {
                        "type": "string",
                        "description": "UUID of device occupying the reservation\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the hardware reservation\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getHardwareReservation.\n",
                "properties": {
                    "deviceId": {
                        "type": "string",
                        "description": "UUID of device occupying the reservation\n"
                    },
                    "facility": {
                        "type": "string",
                        "description": "Plan type for the reservation\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the hardware reservation to look up\n"
                    },
                    "plan": {
                        "type": "string",
                        "description": "Plan type for the reservation\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "UUID of project this reservation is scoped to\n"
                    },
                    "provisionable": {
                        "type": "boolean",
                        "description": "Flag indicating whether the reserved server is provisionable or not. Spare devices can't be provisioned unless they are activated first\n"
                    },
                    "shortId": {
                        "type": "string",
                        "description": "Reservation short ID\n"
                    },
                    "spare": {
                        "type": "boolean",
                        "description": "Flag indicating whether the Hardware Reservation is a spare. Spare Hardware Reservations are used when a Hardware Reservations requires service from Metal Equinix\n"
                    },
                    "switchUuid": {
                        "type": "string",
                        "description": "Switch short ID, can be used to determine if two devices are connected to the same switch\n"
                    }
                },
                "type": "object",
                "required": [
                    "deviceId",
                    "facility",
                    "id",
                    "plan",
                    "projectId",
                    "provisionable",
                    "shortId",
                    "spare",
                    "switchUuid"
                ]
            }
        },
        "equinix-metal:index/getIpBlockRanges:getIpBlockRanges": {
            "description": "Use this datasource to get CIDR expressions for allocated IP blocks of all the types in a project, optionally filtered by facility or metro.\n\nThere are four types of IP blocks in Equinix Metal: global IPv4, public IPv4, private IPv4 and IPv6. Both global and public IPv4 are routable from the Internet. Public IPv4 blocks are allocated in a facility or metro, and addresses from it can only be assigned to devices in that location. Addresses from Global IPv4 block can be assigned to a device in any metro.\n\nThe datasource has 4 list attributes: `global_ipv4`, `public_ipv4`, `private_ipv4` and `ipv6`, each listing CIDR notation (`\u003cnetwork\u003e/\u003cmask\u003e`) of respective blocks from the project.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst projectId = \"\u003cUUID_of_your_project\u003e\";\nconst test = equinix_metal.getIpBlockRanges({\n    projectId: projectId,\n});\nexport const out = test;\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\nproject_id = \"\u003cUUID_of_your_project\u003e\"\ntest = equinix_metal.get_ip_block_ranges(project_id=project_id)\npulumi.export(\"out\", test)\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var projectId = \"\u003cUUID_of_your_project\u003e\";\n        var test = Output.Create(EquinixMetal.GetIpBlockRanges.InvokeAsync(new EquinixMetal.GetIpBlockRangesArgs\n        {\n            ProjectId = projectId,\n        }));\n        this.Out = test;\n    }\n\n    [Output(\"out\")]\n    public Output\u003cstring\u003e Out { get; set; }\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprojectId := \"\u003cUUID_of_your_project\u003e\"\n\t\ttest, err := equinix - metal.GetIpBlockRanges(ctx, \u0026GetIpBlockRangesArgs{\n\t\t\tProjectId: projectId,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"out\", test)\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "inputs": {
                "description": "A collection of arguments for invoking getIpBlockRanges.\n",
                "properties": {
                    "facility": {
                        "type": "string",
                        "description": "Facility code filtering the IP blocks. Global IPv4 blcoks will be listed anyway. If you omit this and metro, all the block from the project will be listed.\n"
                    },
                    "metro": {
                        "type": "string",
                        "description": "Metro code filtering the IP blocks. Global IPv4 blcoks will be listed anyway. If you omit this and facility, all the block from the project will be listed.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "ID of the project from which to list the blocks.\n"
                    }
                },
                "type": "object",
                "required": [
                    "projectId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getIpBlockRanges.\n",
                "properties": {
                    "facility": {
                        "type": "string"
                    },
                    "globalIpv4s": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "list of CIDR expressions for Global IPv4 blocks in the project\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "The provider-assigned unique ID for this managed resource.\n"
                    },
                    "ipv6s": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "list of CIDR expressions for IPv6 blocks in the project\n"
                    },
                    "metro": {
                        "type": "string"
                    },
                    "privateIpv4s": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "list of CIDR expressions for Private IPv4 blocks in the project\n"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "publicIpv4s": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "list of CIDR expressions for Public IPv4 blocks in the project\n"
                    }
                },
                "type": "object",
                "required": [
                    "globalIpv4s",
                    "ipv6s",
                    "privateIpv4s",
                    "projectId",
                    "publicIpv4s",
                    "id"
                ]
            }
        },
        "equinix-metal:index/getMetro:getMetro": {
            "description": "Provides an Equinix Metal metro datasource.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getMetro.\n",
                "properties": {
                    "capacities": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/equinix-metal:index/getMetroCapacity:getMetroCapacity"
                        },
                        "description": "(Optional) Ensure that queried metro has capacity for specified number of given plans\n"
                    },
                    "code": {
                        "type": "string",
                        "description": "The metro code\n"
                    }
                },
                "type": "object",
                "required": [
                    "code"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getMetro.\n",
                "properties": {
                    "capacities": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/equinix-metal:index/getMetroCapacity:getMetroCapacity"
                        },
                        "description": "(Optional) Ensure that queried metro has capacity for specified number of given plans\n"
                    },
                    "code": {
                        "type": "string",
                        "description": "The code of the metro\n"
                    },
                    "country": {
                        "type": "string",
                        "description": "The country of the metro\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "The ID of the metro\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the metro\n"
                    }
                },
                "type": "object",
                "required": [
                    "code",
                    "country",
                    "id",
                    "name"
                ]
            }
        },
        "equinix-metal:index/getOperatingSystem:getOperatingSystem": {
            "description": "Use this data source to get Equinix Metal Operating System image.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst example = equinix_metal.getOperatingSystem({\n    distro: \"ubuntu\",\n    version: \"20.04\",\n    provisionableOn: \"c3.medium.x86\",\n});\nconst server = new equinix_metal.Device(\"server\", {\n    hostname: \"tf.ubuntu\",\n    plan: \"c3.medium.x86\",\n    facilities: [\"ny5\"],\n    operatingSystem: example.then(example =\u003e example.id),\n    billingCycle: \"hourly\",\n    projectId: local.project_id,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\nexample = equinix_metal.get_operating_system(distro=\"ubuntu\",\n    version=\"20.04\",\n    provisionable_on=\"c3.medium.x86\")\nserver = equinix_metal.Device(\"server\",\n    hostname=\"tf.ubuntu\",\n    plan=\"c3.medium.x86\",\n    facilities=[\"ny5\"],\n    operating_system=example.id,\n    billing_cycle=\"hourly\",\n    project_id=local[\"project_id\"])\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var example = Output.Create(EquinixMetal.GetOperatingSystem.InvokeAsync(new EquinixMetal.GetOperatingSystemArgs\n        {\n            Distro = \"ubuntu\",\n            Version = \"20.04\",\n            ProvisionableOn = \"c3.medium.x86\",\n        }));\n        var server = new EquinixMetal.Device(\"server\", new EquinixMetal.DeviceArgs\n        {\n            Hostname = \"tf.ubuntu\",\n            Plan = \"c3.medium.x86\",\n            Facilities = \n            {\n                \"ny5\",\n            },\n            OperatingSystem = example.Apply(example =\u003e example.Id),\n            BillingCycle = \"hourly\",\n            ProjectId = local.Project_id,\n        });\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := \"ubuntu\"\n\t\topt1 := \"20.04\"\n\t\topt2 := \"c3.medium.x86\"\n\t\texample, err := equinix - metal.GetOperatingSystem(ctx, \u0026GetOperatingSystemArgs{\n\t\t\tDistro:          \u0026opt0,\n\t\t\tVersion:         \u0026opt1,\n\t\t\tProvisionableOn: \u0026opt2,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = equinix - metal.NewDevice(ctx, \"server\", \u0026equinix-metal.DeviceArgs{\n\t\t\tHostname: pulumi.String(\"tf.ubuntu\"),\n\t\t\tPlan:     pulumi.String(\"c3.medium.x86\"),\n\t\t\tFacilities: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ny5\"),\n\t\t\t},\n\t\t\tOperatingSystem: pulumi.String(example.Id),\n\t\t\tBillingCycle:    pulumi.String(\"hourly\"),\n\t\t\tProjectId:       pulumi.Any(local.Project_id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "inputs": {
                "description": "A collection of arguments for invoking getOperatingSystem.\n",
                "properties": {
                    "distro": {
                        "type": "string",
                        "description": "Name of the OS distribution.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name or part of the name of the distribution. Case insensitive.\n"
                    },
                    "provisionableOn": {
                        "type": "string",
                        "description": "Plan name.\n"
                    },
                    "version": {
                        "type": "string",
                        "description": "Version of the distribution\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getOperatingSystem.\n",
                "properties": {
                    "distro": {
                        "type": "string"
                    },
                    "id": {
                        "type": "string",
                        "description": "The provider-assigned unique ID for this managed resource.\n"
                    },
                    "name": {
                        "type": "string"
                    },
                    "provisionableOn": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string",
                        "description": "Operating system slug (same as `id`)\n"
                    },
                    "version": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "slug",
                    "id"
                ]
            }
        },
        "equinix-metal:index/getOrganization:getOrganization": {
            "description": "Provides an Equinix Metal organization datasource.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst test = equinix_metal.getOrganization({\n    organizationId: local.org_id,\n});\nexport const projectsInTheOrg = test.then(test =\u003e test.projectIds);\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\ntest = equinix_metal.get_organization(organization_id=local[\"org_id\"])\npulumi.export(\"projectsInTheOrg\", test.project_ids)\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var test = Output.Create(EquinixMetal.GetOrganization.InvokeAsync(new EquinixMetal.GetOrganizationArgs\n        {\n            OrganizationId = local.Org_id,\n        }));\n        this.ProjectsInTheOrg = test.Apply(test =\u003e test.ProjectIds);\n    }\n\n    [Output(\"projectsInTheOrg\")]\n    public Output\u003cstring\u003e ProjectsInTheOrg { get; set; }\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := local.Org_id\n\t\ttest, err := equinix - metal.LookupOrganization(ctx, \u0026GetOrganizationArgs{\n\t\t\tOrganizationId: \u0026opt0,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"projectsInTheOrg\", test.ProjectIds)\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "inputs": {
                "description": "A collection of arguments for invoking getOrganization.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The organization name\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The UUID of the organization resource\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getOrganization.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "Description string\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "The provider-assigned unique ID for this managed resource.\n"
                    },
                    "logo": {
                        "type": "string",
                        "description": "Logo URL\n"
                    },
                    "name": {
                        "type": "string"
                    },
                    "organizationId": {
                        "type": "string"
                    },
                    "projectIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "UUIDs of project resources which belong to this organization\n"
                    },
                    "twitter": {
                        "type": "string",
                        "description": "Twitter handle\n"
                    },
                    "website": {
                        "type": "string",
                        "description": "Website link\n"
                    }
                },
                "type": "object",
                "required": [
                    "description",
                    "logo",
                    "name",
                    "organizationId",
                    "projectIds",
                    "twitter",
                    "website",
                    "id"
                ]
            }
        },
        "equinix-metal:index/getPort:getPort": {
            "description": "Use this data source to read ports of existing devices. You can read port by either its UUID, or by a device UUID and port name.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\nCreate a device and read it's eth0 port to the datasource.\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst projectId = \"\u003cUUID_of_your_project\u003e\";\nconst testDevice = new equinix_metal.Device(\"testDevice\", {\n    hostname: \"tfacc-test-device-port\",\n    plan: \"c3.medium.x86\",\n    facilities: [\"sv15\"],\n    operatingSystem: \"ubuntu_20_04\",\n    billingCycle: \"hourly\",\n    projectId: projectId,\n});\nconst testPort = testDevice.id.apply(id =\u003e equinix_metal.getPort({\n    deviceId: id,\n    name: \"eth0\",\n}));\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\nproject_id = \"\u003cUUID_of_your_project\u003e\"\ntest_device = equinix_metal.Device(\"testDevice\",\n    hostname=\"tfacc-test-device-port\",\n    plan=\"c3.medium.x86\",\n    facilities=[\"sv15\"],\n    operating_system=\"ubuntu_20_04\",\n    billing_cycle=\"hourly\",\n    project_id=project_id)\ntest_port = test_device.id.apply(lambda id: equinix_metal.get_port(device_id=id,\n    name=\"eth0\"))\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var projectId = \"\u003cUUID_of_your_project\u003e\";\n        var testDevice = new EquinixMetal.Device(\"testDevice\", new EquinixMetal.DeviceArgs\n        {\n            Hostname = \"tfacc-test-device-port\",\n            Plan = \"c3.medium.x86\",\n            Facilities = \n            {\n                \"sv15\",\n            },\n            OperatingSystem = \"ubuntu_20_04\",\n            BillingCycle = \"hourly\",\n            ProjectId = projectId,\n        });\n        var testPort = testDevice.Id.Apply(id =\u003e EquinixMetal.GetPort.InvokeAsync(new EquinixMetal.GetPortArgs\n        {\n            DeviceId = id,\n            Name = \"eth0\",\n        }));\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprojectId := \"\u003cUUID_of_your_project\u003e\"\n\t\ttestDevice, err := equinix - metal.NewDevice(ctx, \"testDevice\", \u0026equinix-metal.DeviceArgs{\n\t\t\tHostname: pulumi.String(\"tfacc-test-device-port\"),\n\t\t\tPlan:     pulumi.String(\"c3.medium.x86\"),\n\t\t\tFacilities: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"sv15\"),\n\t\t\t},\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_20_04\"),\n\t\t\tBillingCycle:    pulumi.String(\"hourly\"),\n\t\t\tProjectId:       pulumi.String(projectId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "inputs": {
                "description": "A collection of arguments for invoking getPort.\n",
                "properties": {
                    "deviceId": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "Whether to look for public or private block.\n"
                    },
                    "portId": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getPort.\n",
                "properties": {
                    "bondId": {
                        "type": "string",
                        "description": "UUID of the bond port\"\n"
                    },
                    "bondName": {
                        "type": "string",
                        "description": "Name of the bond port\n"
                    },
                    "bonded": {
                        "type": "boolean",
                        "description": "Flag indicating whether the port is bonded\n"
                    },
                    "deviceId": {
                        "type": "string"
                    },
                    "disbondSupported": {
                        "type": "boolean",
                        "description": "Flag indicating whether the port can be removed from a bond\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "The provider-assigned unique ID for this managed resource.\n"
                    },
                    "layer2": {
                        "type": "boolean"
                    },
                    "mac": {
                        "type": "string",
                        "description": "MAC address of the port\n"
                    },
                    "name": {
                        "type": "string"
                    },
                    "nativeVlanId": {
                        "type": "string",
                        "description": "UUID of native VLAN of the port\n"
                    },
                    "networkType": {
                        "type": "string",
                        "description": "One of layer2-bonded, layer2-individual, layer3, hybrid, hybrid-bonded\n"
                    },
                    "portId": {
                        "type": "string"
                    },
                    "type": {
                        "type": "string",
                        "description": "Type is either \"NetworkBondPort\" for bond ports or \"NetworkPort\" for bondable ethernet ports\n"
                    },
                    "vlanIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "UUIDs of attached VLANs\n"
                    },
                    "vxlanIds": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "description": "VXLAN ids of attached VLANs\n"
                    }
                },
                "type": "object",
                "required": [
                    "bondId",
                    "bondName",
                    "bonded",
                    "disbondSupported",
                    "layer2",
                    "mac",
                    "name",
                    "nativeVlanId",
                    "networkType",
                    "type",
                    "vlanIds",
                    "vxlanIds",
                    "id"
                ]
            }
        },
        "equinix-metal:index/getPrecreatedIpBlock:getPrecreatedIpBlock": {
            "description": "Use this data source to get CIDR expression for precreated IPv6 and IPv4 blocks in Equinix Metal.\nYou can then use the cidrsubnet TF builtin function to derive subnets.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getPrecreatedIpBlock.\n",
                "properties": {
                    "addressFamily": {
                        "type": "integer",
                        "description": "4 or 6, depending on which block you are looking for.\n"
                    },
                    "facility": {
                        "type": "string",
                        "description": "Facility of the searched block. (for non-global blocks).\n"
                    },
                    "global": {
                        "type": "boolean",
                        "description": "Whether to look for global block. Default is false for backward compatibility.\n"
                    },
                    "metro": {
                        "type": "string",
                        "description": "Metro of the searched block (for non-global blocks).\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "ID of the project where the searched block should be.\n"
                    },
                    "public": {
                        "type": "boolean",
                        "description": "Whether to look for public or private block.\n"
                    }
                },
                "type": "object",
                "required": [
                    "addressFamily",
                    "projectId",
                    "public"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getPrecreatedIpBlock.\n",
                "properties": {
                    "address": {
                        "type": "string"
                    },
                    "addressFamily": {
                        "type": "integer"
                    },
                    "cidr": {
                        "type": "integer"
                    },
                    "cidrNotation": {
                        "type": "string",
                        "description": "CIDR notation of the looked up block.\n"
                    },
                    "facility": {
                        "type": "string"
                    },
                    "gateway": {
                        "type": "string"
                    },
                    "global": {
                        "type": "boolean"
                    },
                    "id": {
                        "type": "string",
                        "description": "The provider-assigned unique ID for this managed resource.\n"
                    },
                    "manageable": {
                        "type": "boolean"
                    },
                    "management": {
                        "type": "boolean"
                    },
                    "metro": {
                        "type": "string"
                    },
                    "netmask": {
                        "type": "string"
                    },
                    "network": {
                        "type": "string"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "public": {
                        "type": "boolean"
                    },
                    "quantity": {
                        "type": "integer"
                    },
                    "type": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "address",
                    "addressFamily",
                    "cidr",
                    "cidrNotation",
                    "gateway",
                    "manageable",
                    "management",
                    "netmask",
                    "network",
                    "projectId",
                    "public",
                    "quantity",
                    "type",
                    "id"
                ]
            }
        },
        "equinix-metal:index/getProject:getProject": {
            "description": "Use this datasource to retrieve attributes of the Project API resource.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst tfProject1 = equinix_metal.getProject({\n    name: \"Terraform Fun\",\n});\nexport const usersOfTerraformFun = tfProject1.then(tfProject1 =\u003e tfProject1.userIds);\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\ntf_project1 = equinix_metal.get_project(name=\"Terraform Fun\")\npulumi.export(\"usersOfTerraformFun\", tf_project1.user_ids)\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var tfProject1 = Output.Create(EquinixMetal.GetProject.InvokeAsync(new EquinixMetal.GetProjectArgs\n        {\n            Name = \"Terraform Fun\",\n        }));\n        this.UsersOfTerraformFun = tfProject1.Apply(tfProject1 =\u003e tfProject1.UserIds);\n    }\n\n    [Output(\"usersOfTerraformFun\")]\n    public Output\u003cstring\u003e UsersOfTerraformFun { get; set; }\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := \"Terraform Fun\"\n\t\ttfProject1, err := equinix - metal.LookupProject(ctx, \u0026GetProjectArgs{\n\t\t\tName: \u0026opt0,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"usersOfTerraformFun\", tfProject1.UserIds)\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "inputs": {
                "description": "A collection of arguments for invoking getProject.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The name which is used to look up the project\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The UUID by which to look up the project\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getProject.\n",
                "properties": {
                    "backendTransfer": {
                        "type": "boolean",
                        "description": "Whether Backend Transfer is enabled for this project\n"
                    },
                    "bgpConfigs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/equinix-metal:index/getProjectBgpConfig:getProjectBgpConfig"
                        },
                        "description": "Optional BGP settings. Refer to [Equinix Metal guide for BGP](https://metal.equinix.com/developers/docs/networking/local-global-bgp/).\n"
                    },
                    "created": {
                        "type": "string",
                        "description": "The timestamp for when the project was created\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "The provider-assigned unique ID for this managed resource.\n"
                    },
                    "name": {
                        "type": "string"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The UUID of this project's parent organization\n"
                    },
                    "paymentMethodId": {
                        "type": "string",
                        "description": "The UUID of payment method for this project\n"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "updated": {
                        "type": "string",
                        "description": "The timestamp for the last time the project was updated\n"
                    },
                    "userIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of UUIDs of user accounts which belong to this project\n"
                    }
                },
                "type": "object",
                "required": [
                    "backendTransfer",
                    "bgpConfigs",
                    "created",
                    "name",
                    "organizationId",
                    "paymentMethodId",
                    "projectId",
                    "updated",
                    "userIds",
                    "id"
                ]
            }
        },
        "equinix-metal:index/getProjectSshKey:getProjectSshKey": {
            "description": "Use this datasource to retrieve attributes of a Project SSH Key API resource.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst myKey = equinix_metal.getProjectSshKey({\n    search: \"username@hostname\",\n    projectId: local.project_id,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\nmy_key = equinix_metal.get_project_ssh_key(search=\"username@hostname\",\n    project_id=local[\"project_id\"])\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var myKey = Output.Create(EquinixMetal.GetProjectSshKey.InvokeAsync(new EquinixMetal.GetProjectSshKeyArgs\n        {\n            Search = \"username@hostname\",\n            ProjectId = local.Project_id,\n        }));\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := \"username@hostname\"\n\t\t_, err := equinix - metal.LookupProjectSshKey(ctx, \u0026GetProjectSshKeyArgs{\n\t\t\tSearch:    \u0026opt0,\n\t\t\tProjectId: local.Project_id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "inputs": {
                "description": "A collection of arguments for invoking getProjectSshKey.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "The id of the SSH Key to search for in the Equinix Metal project\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The Equinix Metal project id of the Equinix Metal SSH Key\n"
                    },
                    "search": {
                        "type": "string",
                        "description": "The name, fingerprint, or public_key of the SSH Key to search for\nin the Equinix Metal project\n"
                    }
                },
                "type": "object",
                "required": [
                    "projectId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getProjectSshKey.\n",
                "properties": {
                    "created": {
                        "type": "string",
                        "description": "The timestamp for when the SSH key was created\n"
                    },
                    "fingerprint": {
                        "type": "string",
                        "description": "The fingerprint of the SSH key\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "The unique ID of the key\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the SSH key\n"
                    },
                    "ownerId": {
                        "type": "string",
                        "description": "The ID of parent project (same as project_id)\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of parent project\n"
                    },
                    "publicKey": {
                        "type": "string",
                        "description": "The text of the public key\n"
                    },
                    "search": {
                        "type": "string"
                    },
                    "updated": {
                        "type": "string",
                        "description": "The timestamp for the last time the SSH key was updated\n"
                    }
                },
                "type": "object",
                "required": [
                    "created",
                    "fingerprint",
                    "id",
                    "name",
                    "ownerId",
                    "projectId",
                    "publicKey",
                    "updated"
                ]
            }
        },
        "equinix-metal:index/getReservedIpBlock:getReservedIpBlock": {
            "description": "Use this data source to find IP address blocks in Equinix Metal. You can use IP address or a block ID for lookup.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getReservedIpBlock.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "UUID of the IP address block to look up\n"
                    },
                    "ipAddress": {
                        "type": "string",
                        "description": "Block containing this IP address will be returned\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "UUID of the project where the searched block should be\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getReservedIpBlock.\n",
                "properties": {
                    "address": {
                        "type": "string"
                    },
                    "addressFamily": {
                        "type": "integer"
                    },
                    "cidr": {
                        "type": "integer"
                    },
                    "cidrNotation": {
                        "type": "string"
                    },
                    "facility": {
                        "type": "string"
                    },
                    "gateway": {
                        "type": "string"
                    },
                    "global": {
                        "type": "boolean"
                    },
                    "id": {
                        "type": "string"
                    },
                    "ipAddress": {
                        "type": "string"
                    },
                    "manageable": {
                        "type": "boolean"
                    },
                    "management": {
                        "type": "boolean"
                    },
                    "metro": {
                        "type": "string"
                    },
                    "netmask": {
                        "type": "string"
                    },
                    "network": {
                        "type": "string"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "public": {
                        "type": "boolean"
                    },
                    "quantity": {
                        "type": "integer"
                    },
                    "type": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "address",
                    "addressFamily",
                    "cidr",
                    "cidrNotation",
                    "facility",
                    "gateway",
                    "global",
                    "id",
                    "manageable",
                    "management",
                    "metro",
                    "netmask",
                    "network",
                    "projectId",
                    "public",
                    "quantity",
                    "type"
                ]
            }
        },
        "equinix-metal:index/getSpotMarketPrice:getSpotMarketPrice": {
            "description": "Use this data source to get Equinix Metal Spot Market Price for a plan.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\nLookup by facility:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as metal from \"@pulumi/metal\";\n\nconst example = pulumi.output(metal.getSpotMarketPrice({\n    facility: \"ny5\",\n    plan: \"c3.small.x86\",\n}));\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\nexample = equinix_metal.get_spot_market_price(facility=\"ny5\",\n    plan=\"c3.small.x86\")\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var example = Output.Create(EquinixMetal.GetSpotMarketPrice.InvokeAsync(new EquinixMetal.GetSpotMarketPriceArgs\n        {\n            Facility = \"ny5\",\n            Plan = \"c3.small.x86\",\n        }));\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := \"ny5\"\n\t\t_, err := equinix - metal.GetSpotMarketPrice(ctx, \u0026GetSpotMarketPriceArgs{\n\t\t\tFacility: \u0026opt0,\n\t\t\tPlan:     \"c3.small.x86\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n\nLookup by metro:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as metal from \"@pulumi/metal\";\n\nconst example = pulumi.output(metal.getSpotMarketPrice({\n    metro: \"sv\",\n    plan: \"c3.small.x86\",\n}));\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\nexample = equinix_metal.get_spot_market_price(metro=\"sv\",\n    plan=\"c3.small.x86\")\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var example = Output.Create(EquinixMetal.GetSpotMarketPrice.InvokeAsync(new EquinixMetal.GetSpotMarketPriceArgs\n        {\n            Metro = \"sv\",\n            Plan = \"c3.small.x86\",\n        }));\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := \"sv\"\n\t\t_, err := equinix - metal.GetSpotMarketPrice(ctx, \u0026GetSpotMarketPriceArgs{\n\t\t\tMetro: \u0026opt0,\n\t\t\tPlan:  \"c3.small.x86\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "inputs": {
                "description": "A collection of arguments for invoking getSpotMarketPrice.\n",
                "properties": {
                    "facility": {
                        "type": "string",
                        "description": "Name of the facility.\n"
                    },
                    "metro": {
                        "type": "string",
                        "description": "Name of the metro.\n"
                    },
                    "plan": {
                        "type": "string",
                        "description": "Name of the plan.\n"
                    }
                },
                "type": "object",
                "required": [
                    "plan"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getSpotMarketPrice.\n",
                "properties": {
                    "facility": {
                        "type": "string"
                    },
                    "id": {
                        "type": "string",
                        "description": "The provider-assigned unique ID for this managed resource.\n"
                    },
                    "metro": {
                        "type": "string"
                    },
                    "plan": {
                        "type": "string"
                    },
                    "price": {
                        "type": "number",
                        "description": "Current spot market price for given plan in given facility.\n"
                    }
                },
                "type": "object",
                "required": [
                    "plan",
                    "price",
                    "id"
                ]
            }
        },
        "equinix-metal:index/getSpotMarketRequest:getSpotMarketRequest": {
            "inputs": {
                "description": "A collection of arguments for invoking getSpotMarketRequest.\n",
                "properties": {
                    "requestId": {
                        "type": "string",
                        "description": "The id of the Spot Market Request\n"
                    }
                },
                "type": "object",
                "required": [
                    "requestId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getSpotMarketRequest.\n",
                "properties": {
                    "deviceIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of IDs of devices spawned by the referenced Spot Market Request\n"
                    },
                    "devicesMax": {
                        "type": "integer",
                        "description": "Maximum number devices to be created\n"
                    },
                    "devicesMin": {
                        "type": "integer",
                        "description": "Miniumum number devices to be created\n"
                    },
                    "endAt": {
                        "type": "string",
                        "description": "Date and time When the spot market request will be ended.\n"
                    },
                    "facilities": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Facility IDs where devices should be created\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "The provider-assigned unique ID for this managed resource.\n"
                    },
                    "maxBidPrice": {
                        "type": "number",
                        "description": "Maximum price user is willing to pay per hour per device\n"
                    },
                    "metro": {
                        "type": "string",
                        "description": "Metro where devices should be created.\n"
                    },
                    "plan": {
                        "type": "string",
                        "description": "The device plan slug.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "Project ID\n"
                    },
                    "requestId": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "deviceIds",
                    "devicesMax",
                    "devicesMin",
                    "endAt",
                    "facilities",
                    "maxBidPrice",
                    "metro",
                    "plan",
                    "projectId",
                    "requestId",
                    "id"
                ]
            }
        },
        "equinix-metal:index/getVirtualCircuit:getVirtualCircuit": {
            "description": "Use this data source to retrieve a virtual circuit resource from [Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst exampleConnection = equinix_metal.getConnection({\n    connectionId: \"4347e805-eb46-4699-9eb9-5c116e6a017d\",\n});\nconst exampleVc = exampleConnection.then(exampleConnection =\u003e equinix_metal.getVirtualCircuit({\n    virtualCircuitId: exampleConnection.ports?[1]?.virtualCircuitIds?[0],\n}));\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\nexample_connection = equinix_metal.get_connection(connection_id=\"4347e805-eb46-4699-9eb9-5c116e6a017d\")\nexample_vc = equinix_metal.get_virtual_circuit(virtual_circuit_id=example_connection.ports[1].virtual_circuit_ids[0])\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var exampleConnection = Output.Create(EquinixMetal.GetConnection.InvokeAsync(new EquinixMetal.GetConnectionArgs\n        {\n            ConnectionId = \"4347e805-eb46-4699-9eb9-5c116e6a017d\",\n        }));\n        var exampleVc = exampleConnection.Apply(exampleConnection =\u003e Output.Create(EquinixMetal.GetVirtualCircuit.InvokeAsync(new EquinixMetal.GetVirtualCircuitArgs\n        {\n            VirtualCircuitId = exampleConnection.Ports?[1]?.VirtualCircuitIds?[0],\n        })));\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleConnection, err := equinix - metal.LookupConnection(ctx, \u0026GetConnectionArgs{\n\t\t\tConnectionId: \"4347e805-eb46-4699-9eb9-5c116e6a017d\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = equinix - metal.LookupVirtualCircuit(ctx, \u0026GetVirtualCircuitArgs{\n\t\t\tVirtualCircuitId: exampleConnection.Ports[1].VirtualCircuitIds[0],\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "inputs": {
                "description": "A collection of arguments for invoking getVirtualCircuit.\n",
                "properties": {
                    "virtualCircuitId": {
                        "type": "string",
                        "description": "ID of the virtual circuit resource\n"
                    }
                },
                "type": "object",
                "required": [
                    "virtualCircuitId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getVirtualCircuit.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "Description for the Virtual Circuit resource\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "The provider-assigned unique ID for this managed resource.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the virtual circuit resource\n"
                    },
                    "nniVlan": {
                        "type": "integer"
                    },
                    "nniVnid": {
                        "type": "integer"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "ID of project to which the VC belongs\n* `vnid`, `nni_vlan`, `nni_nvid` - VLAN parameters, see the [documentation for Equinix Fabric](https://metal.equinix.com/developers/docs/networking/fabric/)\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "Status of the virtal circuit\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Tags for the Virtual Circuit resource\n"
                    },
                    "virtualCircuitId": {
                        "type": "string"
                    },
                    "vnid": {
                        "type": "integer"
                    }
                },
                "type": "object",
                "required": [
                    "description",
                    "name",
                    "nniVlan",
                    "nniVnid",
                    "projectId",
                    "status",
                    "tags",
                    "virtualCircuitId",
                    "vnid",
                    "id"
                ]
            }
        },
        "equinix-metal:index/getVlan:getVlan": {
            "description": "Provides an Equinix Metal Virtual Network datasource. VLANs data sources can be\nsearched by VLAN UUID, or project UUID and vxlan number.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\nFetch a vlan by ID:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst foovlan = new equinix_metal.Vlan(\"foovlan\", {\n    projectId: local.project_id,\n    metro: \"sv\",\n    vxlan: 5,\n});\nconst dsvlan = foovlan.id.apply(id =\u003e equinix_metal.getVlan({\n    vlanId: id,\n}));\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\nfoovlan = equinix_metal.Vlan(\"foovlan\",\n    project_id=local[\"project_id\"],\n    metro=\"sv\",\n    vxlan=5)\ndsvlan = foovlan.id.apply(lambda id: equinix_metal.get_vlan(vlan_id=id))\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var foovlan = new EquinixMetal.Vlan(\"foovlan\", new EquinixMetal.VlanArgs\n        {\n            ProjectId = local.Project_id,\n            Metro = \"sv\",\n            Vxlan = 5,\n        });\n        var dsvlan = foovlan.Id.Apply(id =\u003e EquinixMetal.GetVlan.InvokeAsync(new EquinixMetal.GetVlanArgs\n        {\n            VlanId = id,\n        }));\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoovlan, err := equinix - metal.NewVlan(ctx, \"foovlan\", \u0026equinix-metal.VlanArgs{\n\t\t\tProjectId: pulumi.Any(local.Project_id),\n\t\t\tMetro:     pulumi.String(\"sv\"),\n\t\t\tVxlan:     pulumi.Int(5),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n\nFetch a vlan by project ID, vxlan and metro\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix_metal from \"@pulumi/equinix-metal\";\n\nconst foovlan = new equinix_metal.Vlan(\"foovlan\", {\n    projectId: local.project_id,\n    metro: \"sv\",\n    vxlan: 5,\n});\nconst dsvlan = equinix_metal.getVlan({\n    projectId: local.project_id,\n    vxlan: 5,\n    metro: \"sv\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix_metal as equinix_metal\n\nfoovlan = equinix_metal.Vlan(\"foovlan\",\n    project_id=local[\"project_id\"],\n    metro=\"sv\",\n    vxlan=5)\ndsvlan = equinix_metal.get_vlan(project_id=local[\"project_id\"],\n    vxlan=5,\n    metro=\"sv\")\n```\n```csharp\nusing Pulumi;\nusing EquinixMetal = Pulumi.EquinixMetal;\n\nclass MyStack : Stack\n{\n    public MyStack()\n    {\n        var foovlan = new EquinixMetal.Vlan(\"foovlan\", new EquinixMetal.VlanArgs\n        {\n            ProjectId = local.Project_id,\n            Metro = \"sv\",\n            Vxlan = 5,\n        });\n        var dsvlan = Output.Create(EquinixMetal.GetVlan.InvokeAsync(new EquinixMetal.GetVlanArgs\n        {\n            ProjectId = local.Project_id,\n            Vxlan = 5,\n            Metro = \"sv\",\n        }));\n    }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix-metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := equinix - metal.NewVlan(ctx, \"foovlan\", \u0026equinix-metal.VlanArgs{\n\t\t\tProjectId: pulumi.Any(local.Project_id),\n\t\t\tMetro:     pulumi.String(\"sv\"),\n\t\t\tVxlan:     pulumi.Int(5),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\topt0 := local.Project_id\n\t\topt1 := 5\n\t\topt2 := \"sv\"\n\t\t_, err = equinix - metal.LookupVlan(ctx, \u0026GetVlanArgs{\n\t\t\tProjectId: \u0026opt0,\n\t\t\tVxlan:     \u0026opt1,\n\t\t\tMetro:     \u0026opt2,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% /examples %}}",
            "inputs": {
                "description": "A collection of arguments for invoking getVlan.\n",
                "properties": {
                    "facility": {
                        "type": "string",
                        "description": "Facility where the VLAN is deployed\n"
                    },
                    "metro": {
                        "type": "string",
                        "description": "Metro where the VLAN is deployed\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "UUID of parent project of the VLAN. Use together with the vxlan number and metro or facility\n"
                    },
                    "vlanId": {
                        "type": "string",
                        "description": "Metal UUID of the VLAN resource to look up\n"
                    },
                    "vxlan": {
                        "type": "integer",
                        "description": "vxlan number of the VLAN to look up. Use together with the project_id and metro or facility\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getVlan.\n",
                "properties": {
                    "assignedDevicesIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of device ID to which this VLAN is assigned\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "Description text of the VLAN resource\n"
                    },
                    "facility": {
                        "type": "string"
                    },
                    "id": {
                        "type": "string",
                        "description": "The provider-assigned unique ID for this managed resource.\n"
                    },
                    "metro": {
                        "type": "string"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "vlanId": {
                        "type": "string"
                    },
                    "vxlan": {
                        "type": "integer"
                    }
                },
                "type": "object",
                "required": [
                    "assignedDevicesIds",
                    "description",
                    "facility",
                    "metro",
                    "projectId",
                    "vlanId",
                    "vxlan",
                    "id"
                ]
            }
        },
        "equinix-metal:index/getVolume:getVolume": {
            "description": "Datasource `equinix-metal.Volume` was removed in version 3.0.0, and the API support was deprecated on June 1st 2021. See https://metal.equinix.com/developers/docs/storage/elastic-block-storage/#elastic-block-storage for more details.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getVolume.\n",
                "properties": {
                    "name": {
                        "type": "string"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "volumeId": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getVolume.\n",
                "properties": {
                    "billingCycle": {
                        "type": "string"
                    },
                    "created": {
                        "type": "string"
                    },
                    "description": {
                        "type": "string"
                    },
                    "deviceIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "facility": {
                        "type": "string"
                    },
                    "id": {
                        "type": "string",
                        "description": "The provider-assigned unique ID for this managed resource.\n"
                    },
                    "locked": {
                        "type": "boolean"
                    },
                    "name": {
                        "type": "string"
                    },
                    "plan": {
                        "type": "string"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "size": {
                        "type": "integer"
                    },
                    "snapshotPolicies": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/equinix-metal:index/getVolumeSnapshotPolicy:getVolumeSnapshotPolicy"
                        }
                    },
                    "state": {
                        "type": "string"
                    },
                    "updated": {
                        "type": "string"
                    },
                    "volumeId": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "billingCycle",
                    "created",
                    "description",
                    "deviceIds",
                    "facility",
                    "locked",
                    "name",
                    "plan",
                    "projectId",
                    "size",
                    "snapshotPolicies",
                    "state",
                    "updated",
                    "volumeId",
                    "id"
                ]
            }
        }
    },
    "language": {
        "csharp": {
            "compatibility": "tfbridge20",
            "namespaces": {
                "equinix-metal": "EquinixMetal",
                "index": "index"
            },
            "packageReferences": {
                "Pulumi": "3.*"
            }
        },
        "go": {
            "generateResourceContainerTypes": true,
            "importBasePath": "github.com/pulumi/pulumi-equinix-metal/sdk/v3/go/equinix"
        },
        "nodejs": {
            "compatibility": "tfbridge20",
            "dependencies": {
                "@pulumi/pulumi": "^3.0.0"
            },
            "devDependencies": {
                "@types/mime": "^2.0.0",
                "@types/node": "^10.0.0"
            },
            "disableUnionOutputTypes": true,
            "packageDescription": "A Pulumi package for creating and managing equinix-metal cloud resources.",
            "packageName": "",
            "readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/equinix/terraform-provider-metal)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi/pulumi-equinix-metal` repo](https://github.com/pulumi/pulumi-equinix-metal/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`equinix/terraform-provider-metal` repo](https://github.com/equinix/terraform-provider-metal/issues).",
            "typescriptVersion": ""
        },
        "python": {
            "compatibility": "tfbridge20",
            "readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/equinix/terraform-provider-metal)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi/pulumi-equinix-metal` repo](https://github.com/pulumi/pulumi-equinix-metal/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`equinix/terraform-provider-metal` repo](https://github.com/equinix/terraform-provider-metal/issues).",
            "requires": {
                "pulumi": "\u003e=3.0.0,\u003c4.0.0"
            }
        }
    }
}