{"name":"equinix","displayName":"Equinix","version":"0.29.1","description":"A Pulumi package for creating and managing equinix cloud resources.","keywords":["pulumi","equinix","category/cloud"],"homepage":"https://deploy.equinix.com/","license":"Apache-2.0","attribution":"This Pulumi package is based on the [`equinix` Terraform Provider](https://github.com/equinix/terraform-provider-equinix).","repository":"https://github.com/equinix/pulumi-equinix","logoUrl":"https://raw.githubusercontent.com/equinix/pulumi-equinix/main/assets/logo.png","pluginDownloadURL":"github://api.github.com/equinix","publisher":"Equinix","meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"language":{"csharp":{"packageReferences":{"Pulumi":"3.*"},"namespaces":{"equinix":"Equinix","fabric":"Fabric","metal":"Metal","networkedge":"NetworkEdge"},"compatibility":"tfbridge20","rootNamespace":"Pulumi"},"go":{"importBasePath":"github.com/equinix/pulumi-equinix/sdk/go/equinix","generateResourceContainerTypes":true,"generateExtraInputTypes":true},"java":{"basePackage":"com.equinix","buildFiles":"gradle","gradleNexusPublishPluginVersion":"","gradleTest":""},"nodejs":{"packageName":"@equinix-labs/pulumi-equinix","packageDescription":"A Pulumi package for creating and managing equinix cloud resources.","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/equinix/terraform-provider-equinix)\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-equinix` repo](https://github.com/equinix/pulumi-equinix/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-equinix` repo](https://github.com/equinix/terraform-provider-equinix/issues).","dependencies":{"@pulumi/pulumi":"^3.0.0"},"devDependencies":{"@types/mime":"^2.0.0","@types/node":"^10.0.0"},"compatibility":"tfbridge20","disableUnionOutputTypes":true},"python":{"packageName":"pulumi_equinix","requires":{"pulumi":"\u003e=3.0.0,\u003c4.0.0"},"readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/equinix/terraform-provider-equinix)\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-equinix` repo](https://github.com/equinix/pulumi-equinix/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-equinix` repo](https://github.com/equinix/terraform-provider-equinix/issues).","compatibility":"tfbridge20","pyproject":{}}},"config":{"variables":{"authToken":{"type":"string","description":"The Equinix Metal API auth key for API operations\n"},"clientId":{"type":"string","description":"API Consumer Key available under \"My Apps\" in developer portal. This argument can also be specified with the\n`EQUINIX_API_CLIENTID` shell environment variable.\n"},"clientSecret":{"type":"string","description":"API Consumer secret available under \"My Apps\" in developer portal. This argument can also be specified with the\n`EQUINIX_API_CLIENTSECRET` shell environment variable.\n"},"endpoint":{"type":"string","description":"The Equinix API base URL to point out desired environment. This argument can also be specified with the\n`EQUINIX_API_ENDPOINT` shell environment variable. (Defaults to `https://api.equinix.com`)\n"},"maxRetries":{"type":"integer","description":"Maximum number of retries in case of network failure.\n"},"maxRetryWaitSeconds":{"type":"integer","description":"Maximum number of seconds to wait before retrying a request.\n"},"requestTimeout":{"type":"integer","description":"The duration of time, in seconds, that the Equinix Platform API Client should wait before canceling an API request.\nCanceled requests may still result in provisioned resources. (Defaults to `30`)\n"},"responseMaxPageSize":{"type":"integer","description":"The maximum number of records in a single response for REST queries that produce paginated responses. (Default is client\nspecific)\n"},"stsEndpoint":{"type":"string","description":"The STS API base URL to point to the desired environment. This argument can also be specified with the\n`EQUINIX_STS_ENDPOINT` shell environment variable. (Defaults to `https://sts.eqix.equinix.com`). Please note that STS is\nan alpha feature and not available for all users.\n"},"token":{"type":"string","description":"API tokens are generated from API Consumer clients using the [OAuth2\nAPI](https://developer.equinix.com/dev-docs/fabric/getting-started/getting-access-token#request-access-and-refresh-tokens).\nThis argument can also be specified with the `EQUINIX_API_TOKEN` shell environment variable.\n"},"tokenExchangeScope":{"type":"string","description":"The scope of the authentication token. Must be an access policy ERN or a string of the form `roleassignments:\u003corg_id\u003e`.\nThis argument can also be specified with the `EQUINIX_TOKEN_EXCHANGE_SCOPE` shell environment variable. Please note that\ntoken exchange is an alpha feature and not available for all users.\n"},"tokenExchangeSubjectToken":{"type":"string","description":"The subject token to use for token exchange authentication. Must be an OIDC ID token issued by an OIDC provider trusted\nby Equinix STS. If not set, the provider will use the environment variable specified in\n`token_exchange_subject_token_env_var`. Please note that token exchange is an alpha feature and not available for all\nusers.\n"},"tokenExchangeSubjectTokenEnvVar":{"type":"string","description":"The name of the environment variable containing the subject token for token exchange. This argument can also be\nspecified with the `EQUINIX_TOKEN_EXCHANGE_SUBJECT_TOKEN_ENV_VAR` shell environment variable. (Defaults to\n`EQUINIX_TOKEN_EXCHANGE_SUBJECT_TOKEN`). Please note that token exchange is an alpha feature and not available for all\nusers.\n"}}},"types":{"equinix:fabric/CloudRouterAccount:CloudRouterAccount":{"properties":{"accountNumber":{"type":"integer","description":"Account Number\n"}},"type":"object","required":["accountNumber"]},"equinix:fabric/CloudRouterChangeLog:CloudRouterChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"]}}},"equinix:fabric/CloudRouterLocation:CloudRouterLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["ibx","metroCode","metroName","region"]}}},"equinix:fabric/CloudRouterMarketplaceSubscription:CloudRouterMarketplaceSubscription":{"properties":{"type":{"type":"string","description":"Marketplace Subscription type like; AWS*MARKETPLACE*SUBSCRIPTION\n"},"uuid":{"type":"string","description":"Equinix-assigned Marketplace Subscription identifier\n"}},"type":"object","required":["uuid"],"language":{"nodejs":{"requiredOutputs":["type","uuid"]}}},"equinix:fabric/CloudRouterNotification:CloudRouterNotification":{"properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"sendInterval":{"type":"string","description":"Send interval\n"},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION*APPROVAL,SALES*REP_NOTIFICATIONS, NOTIFICATIONS\n"}},"type":"object","required":["emails","type"]},"equinix:fabric/CloudRouterOrder:CloudRouterOrder":{"properties":{"billingTier":{"type":"string","description":"Billing tier for connection bandwidth\n"},"orderId":{"type":"string","description":"Order Identification\n"},"orderNumber":{"type":"string","description":"Order Reference Number\n"},"purchaseOrderNumber":{"type":"string","description":"Purchase order number\n"},"termLength":{"type":"integer","description":"Term length in months; valid values are 1, 12, 24, 36 where 1 is the default value (for on-demand case)\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["billingTier","orderId","orderNumber","purchaseOrderNumber"]}}},"equinix:fabric/CloudRouterPackage:CloudRouterPackage":{"properties":{"code":{"type":"string","description":"Fabric Cloud Router package code\n"}},"type":"object","required":["code"]},"equinix:fabric/CloudRouterProject:CloudRouterProject":{"properties":{"href":{"type":"string","description":"Unique Resource URL\n"},"projectId":{"type":"string","description":"Project Id\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["href","projectId"]}}},"equinix:fabric/ConnectionASide:ConnectionASide":{"properties":{"accessPoint":{"$ref":"#/types/equinix:fabric/ConnectionASideAccessPoint:ConnectionASideAccessPoint","description":"Point of access details\n"},"additionalInfo":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ConnectionASideAdditionalInfo:ConnectionASideAdditionalInfo"},"description":"Connection side additional information\n"},"serviceToken":{"$ref":"#/types/equinix:fabric/ConnectionASideServiceToken:ConnectionASideServiceToken","description":"For service token based connections, Service tokens authorize users to access protected resources and services. Resource owners can distribute the tokens to trusted partners and vendors, allowing selected third parties to work directly with Equinix network assets\n"}},"type":"object"},"equinix:fabric/ConnectionASideAccessPoint:ConnectionASideAccessPoint":{"properties":{"account":{"$ref":"#/types/equinix:fabric/ConnectionASideAccessPointAccount:ConnectionASideAccessPointAccount","description":"Account\n"},"authenticationKey":{"type":"string","description":"Authentication key for provider based connections or Metal-Fabric Integration connections\n"},"gateway":{"$ref":"#/types/equinix:fabric/ConnectionASideAccessPointGateway:ConnectionASideAccessPointGateway","description":"**Deprecated** `gateway` Use `router` attribute instead\n","deprecationMessage":"use router attribute instead; gateway is no longer a part of the supported backend"},"interface":{"$ref":"#/types/equinix:fabric/ConnectionASideAccessPointInterface:ConnectionASideAccessPointInterface","description":"Virtual device interface\n"},"linkProtocol":{"$ref":"#/types/equinix:fabric/ConnectionASideAccessPointLinkProtocol:ConnectionASideAccessPointLinkProtocol","description":"Connection link protocol\n"},"location":{"$ref":"#/types/equinix:fabric/ConnectionASideAccessPointLocation:ConnectionASideAccessPointLocation","description":"Access point location\n"},"network":{"$ref":"#/types/equinix:fabric/ConnectionASideAccessPointNetwork:ConnectionASideAccessPointNetwork","description":"network access point information\n"},"peeringType":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/accessPointPeeringType:AccessPointPeeringType"}],"description":"Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL\n"},"port":{"$ref":"#/types/equinix:fabric/ConnectionASideAccessPointPort:ConnectionASideAccessPointPort","description":"Port access point information\n"},"profile":{"$ref":"#/types/equinix:fabric/ConnectionASideAccessPointProfile:ConnectionASideAccessPointProfile","description":"Service Profile\n"},"providerConnectionId":{"type":"string","description":"Provider assigned Connection Id\n"},"role":{"type":"string","description":"Network role\n"},"router":{"$ref":"#/types/equinix:fabric/ConnectionASideAccessPointRouter:ConnectionASideAccessPointRouter","description":"Cloud Router access point information that replaces `gateway`\n"},"sellerRegion":{"type":"string","description":"Access point seller region\n"},"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/accessPointType:AccessPointType"}],"description":"Access point type - COLO, VD, VG, SP, IGW, SUBNET, CLOUD*ROUTER, NETWORK, METAL*NETWORK\n"},"virtualDevice":{"$ref":"#/types/equinix:fabric/ConnectionASideAccessPointVirtualDevice:ConnectionASideAccessPointVirtualDevice","description":"Virtual device\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["account","location","providerConnectionId"]}}},"equinix:fabric/ConnectionASideAccessPointAccount:ConnectionASideAccessPointAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"]}}},"equinix:fabric/ConnectionASideAccessPointGateway:ConnectionASideAccessPointGateway":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["href"]}}},"equinix:fabric/ConnectionASideAccessPointInterface:ConnectionASideAccessPointInterface":{"properties":{"id":{"type":"integer","description":"id\n"},"type":{"type":"string","description":"Interface type\n"},"uuid":{"type":"string","description":"Equinix-assigned interface identifier\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["id"]}}},"equinix:fabric/ConnectionASideAccessPointLinkProtocol:ConnectionASideAccessPointLinkProtocol":{"properties":{"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/accessPointLinkProtocolType:AccessPointLinkProtocolType"}],"description":"Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN\n"},"vlanCTag":{"type":"integer","description":"Vlan Customer Tag information, vlanCTag value specified for QINQ connections\n"},"vlanSTag":{"type":"integer","description":"Vlan Provider Tag information, vlanSTag value specified for QINQ connections\n"},"vlanTag":{"type":"integer","description":"Vlan Tag information, vlanTag value specified for DOT1Q connections\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["vlanCTag","vlanSTag","vlanTag"]}}},"equinix:fabric/ConnectionASideAccessPointLocation:ConnectionASideAccessPointLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:index/metro:Metro"}],"description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["ibx","metroCode","metroName","region"]}}},"equinix:fabric/ConnectionASideAccessPointNetwork:ConnectionASideAccessPointNetwork":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned Network identifier\n"}},"type":"object","required":["uuid"],"language":{"nodejs":{"requiredOutputs":["href","uuid"]}}},"equinix:fabric/ConnectionASideAccessPointPort:ConnectionASideAccessPointPort":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Port name\n"},"redundancy":{"$ref":"#/types/equinix:fabric/ConnectionASideAccessPointPortRedundancy:ConnectionASideAccessPointPortRedundancy","description":"Redundancy Information\n"},"uuid":{"type":"string","description":"Equinix-assigned Port identifier\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["href","name","redundancy","uuid"]}}},"equinix:fabric/ConnectionASideAccessPointPortRedundancy:ConnectionASideAccessPointPortRedundancy":{"properties":{"enabled":{"type":"boolean","description":"Access point redundancy\n"},"group":{"type":"string","description":"Port redundancy group\n"},"priority":{"type":"string","description":"Priority type-Primary or Secondary\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["enabled","group","priority"]}}},"equinix:fabric/ConnectionASideAccessPointProfile:ConnectionASideAccessPointProfile":{"properties":{"accessPointTypeConfigs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ConnectionASideAccessPointProfileAccessPointTypeConfig:ConnectionASideAccessPointProfileAccessPointTypeConfig"},"description":"Access point config information\n"},"description":{"type":"string","description":"User-provided service description\n"},"href":{"type":"string","description":"Service Profile URI response attribute\n"},"name":{"type":"string","description":"Customer-assigned service profile name\n"},"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/profileType:ProfileType"}],"description":"Service profile type - L2*PROFILE, L3*PROFILE, ECIA*PROFILE, ECMC*PROFILE, IA_PROFILE\n"},"uuid":{"type":"string","description":"Equinix assigned service profile identifier\n"}},"type":"object","required":["type","uuid"],"language":{"nodejs":{"requiredOutputs":["accessPointTypeConfigs","description","href","name","type","uuid"]}}},"equinix:fabric/ConnectionASideAccessPointProfileAccessPointTypeConfig:ConnectionASideAccessPointProfileAccessPointTypeConfig":{"properties":{"type":{"type":"string","description":"Type of access point type config - VD, COLO\n"},"uuid":{"type":"string","description":"Equinix-assigned access point type config identifier\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["type","uuid"]}}},"equinix:fabric/ConnectionASideAccessPointRouter:ConnectionASideAccessPointRouter":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["href"]}}},"equinix:fabric/ConnectionASideAccessPointVirtualDevice:ConnectionASideAccessPointVirtualDevice":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Customer-assigned Virtual Device Name\n"},"type":{"type":"string","description":"Virtual Device type\n"},"uuid":{"type":"string","description":"Equinix-assigned Virtual Device identifier\n"}},"type":"object","required":["uuid"],"language":{"nodejs":{"requiredOutputs":["href","uuid"]}}},"equinix:fabric/ConnectionASideAdditionalInfo:ConnectionASideAdditionalInfo":{"properties":{"key":{"type":"string","description":"Additional information key\n"},"value":{"type":"string","description":"Additional information value\n"}},"type":"object"},"equinix:fabric/ConnectionASideServiceToken:ConnectionASideServiceToken":{"properties":{"description":{"type":"string","description":"Service token description\n"},"href":{"type":"string","description":"An absolute URL that is the subject of the link's context\n"},"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/serviceTokenType:ServiceTokenType"}],"description":"Token type - VC_TOKEN\n"},"uuid":{"type":"string","description":"Equinix-assigned service token identifier\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["description","href"]}}},"equinix:fabric/ConnectionAccount:ConnectionAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"]}}},"equinix:fabric/ConnectionChangeLog:ConnectionChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"]}}},"equinix:fabric/ConnectionNotification:ConnectionNotification":{"properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"sendInterval":{"type":"string","description":"Send interval\n"},"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/notificationsType:NotificationsType"}],"description":"Notification Type - ALL,CONNECTION*APPROVAL,SALES*REP_NOTIFICATIONS, NOTIFICATIONS\n"}},"type":"object","required":["emails","type"]},"equinix:fabric/ConnectionOperation:ConnectionOperation":{"properties":{"equinixStatus":{"type":"string","description":"Connection status\n"},"errors":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ConnectionOperationError:ConnectionOperationError"},"description":"Errors occurred\n"},"providerStatus":{"type":"string","description":"Connection provider readiness status\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["equinixStatus","errors","providerStatus"]}}},"equinix:fabric/ConnectionOperationError:ConnectionOperationError":{"properties":{"additionalInfo":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ConnectionOperationErrorAdditionalInfo:ConnectionOperationErrorAdditionalInfo"},"description":"Pricing error additional Info\n"},"correlationId":{"type":"string","description":"CorrelationId\n"},"details":{"type":"string","description":"Details\n"},"errorCode":{"type":"string","description":"Error  code\n"},"errorMessage":{"type":"string","description":"Error Message\n"},"help":{"type":"string","description":"Help\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["additionalInfo","correlationId","details","errorCode","errorMessage","help"]}}},"equinix:fabric/ConnectionOperationErrorAdditionalInfo:ConnectionOperationErrorAdditionalInfo":{"properties":{"property":{"type":"string","description":"Property at which the error potentially occurred\n"},"reason":{"type":"string","description":"Reason for the error\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["property","reason"]}}},"equinix:fabric/ConnectionOrder:ConnectionOrder":{"properties":{"billingTier":{"type":"string","description":"Billing tier for connection bandwidth\n"},"orderId":{"type":"string","description":"Order Identification\n"},"orderNumber":{"type":"string","description":"Order Reference Number\n"},"purchaseOrderNumber":{"type":"string","description":"Purchase order number\n"},"termLength":{"type":"integer","description":"Term length in months; valid values are 1, 12, 24, 36 where 1 is the default value (for on-demand case)\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["billingTier","orderId","orderNumber","purchaseOrderNumber"]}}},"equinix:fabric/ConnectionProject:ConnectionProject":{"properties":{"href":{"type":"string","description":"Unique Resource URL\n"},"projectId":{"type":"string","description":"Project Id\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["href","projectId"]}}},"equinix:fabric/ConnectionRedundancy:ConnectionRedundancy":{"properties":{"group":{"type":"string","description":"Redundancy group identifier (Use the redundancy.0.group UUID of primary connection; e.g. one(equinix*fabric*connection.primary*port*connection.redundancy).group or equinix*fabric*connection.primary*port*connection.redundancy.0.group)\n"},"priority":{"type":"string","description":"Connection priority in redundancy group - PRIMARY, SECONDARY\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["group","priority"]}}},"equinix:fabric/ConnectionRouteAggregationTimeouts:ConnectionRouteAggregationTimeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"equinix:fabric/ConnectionZSide:ConnectionZSide":{"properties":{"accessPoint":{"$ref":"#/types/equinix:fabric/ConnectionZSideAccessPoint:ConnectionZSideAccessPoint","description":"Point of access details\n"},"additionalInfo":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ConnectionZSideAdditionalInfo:ConnectionZSideAdditionalInfo"},"description":"Connection side additional information\n"},"serviceToken":{"$ref":"#/types/equinix:fabric/ConnectionZSideServiceToken:ConnectionZSideServiceToken","description":"For service token based connections, Service tokens authorize users to access protected resources and services. Resource owners can distribute the tokens to trusted partners and vendors, allowing selected third parties to work directly with Equinix network assets\n"}},"type":"object"},"equinix:fabric/ConnectionZSideAccessPoint:ConnectionZSideAccessPoint":{"properties":{"account":{"$ref":"#/types/equinix:fabric/ConnectionZSideAccessPointAccount:ConnectionZSideAccessPointAccount","description":"Account\n"},"authenticationKey":{"type":"string","description":"Authentication key for provider based connections or Metal-Fabric Integration connections\n"},"gateway":{"$ref":"#/types/equinix:fabric/ConnectionZSideAccessPointGateway:ConnectionZSideAccessPointGateway","description":"**Deprecated** `gateway` Use `router` attribute instead\n","deprecationMessage":"use router attribute instead; gateway is no longer a part of the supported backend"},"interface":{"$ref":"#/types/equinix:fabric/ConnectionZSideAccessPointInterface:ConnectionZSideAccessPointInterface","description":"Virtual device interface\n"},"linkProtocol":{"$ref":"#/types/equinix:fabric/ConnectionZSideAccessPointLinkProtocol:ConnectionZSideAccessPointLinkProtocol","description":"Connection link protocol\n"},"location":{"$ref":"#/types/equinix:fabric/ConnectionZSideAccessPointLocation:ConnectionZSideAccessPointLocation","description":"Access point location\n"},"network":{"$ref":"#/types/equinix:fabric/ConnectionZSideAccessPointNetwork:ConnectionZSideAccessPointNetwork","description":"network access point information\n"},"peeringType":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/accessPointPeeringType:AccessPointPeeringType"}],"description":"Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL\n"},"port":{"$ref":"#/types/equinix:fabric/ConnectionZSideAccessPointPort:ConnectionZSideAccessPointPort","description":"Port access point information\n"},"profile":{"$ref":"#/types/equinix:fabric/ConnectionZSideAccessPointProfile:ConnectionZSideAccessPointProfile","description":"Service Profile\n"},"providerConnectionId":{"type":"string","description":"Provider assigned Connection Id\n"},"role":{"type":"string","description":"Network role\n"},"router":{"$ref":"#/types/equinix:fabric/ConnectionZSideAccessPointRouter:ConnectionZSideAccessPointRouter","description":"Cloud Router access point information that replaces `gateway`\n"},"sellerRegion":{"type":"string","description":"Access point seller region\n"},"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/accessPointType:AccessPointType"}],"description":"Access point type - COLO, VD, VG, SP, IGW, SUBNET, CLOUD*ROUTER, NETWORK, METAL*NETWORK\n"},"virtualDevice":{"$ref":"#/types/equinix:fabric/ConnectionZSideAccessPointVirtualDevice:ConnectionZSideAccessPointVirtualDevice","description":"Virtual device\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["account","location","providerConnectionId"]}}},"equinix:fabric/ConnectionZSideAccessPointAccount:ConnectionZSideAccessPointAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"]}}},"equinix:fabric/ConnectionZSideAccessPointGateway:ConnectionZSideAccessPointGateway":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["href"]}}},"equinix:fabric/ConnectionZSideAccessPointInterface:ConnectionZSideAccessPointInterface":{"properties":{"id":{"type":"integer","description":"id\n"},"type":{"type":"string","description":"Interface type\n"},"uuid":{"type":"string","description":"Equinix-assigned interface identifier\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["id"]}}},"equinix:fabric/ConnectionZSideAccessPointLinkProtocol:ConnectionZSideAccessPointLinkProtocol":{"properties":{"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/accessPointLinkProtocolType:AccessPointLinkProtocolType"}],"description":"Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN\n"},"vlanCTag":{"type":"integer","description":"Vlan Customer Tag information, vlanCTag value specified for QINQ connections\n"},"vlanSTag":{"type":"integer","description":"Vlan Provider Tag information, vlanSTag value specified for QINQ connections\n"},"vlanTag":{"type":"integer","description":"Vlan Tag information, vlanTag value specified for DOT1Q connections\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["vlanCTag","vlanSTag","vlanTag"]}}},"equinix:fabric/ConnectionZSideAccessPointLocation:ConnectionZSideAccessPointLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:index/metro:Metro"}],"description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["ibx","metroCode","metroName","region"]}}},"equinix:fabric/ConnectionZSideAccessPointNetwork:ConnectionZSideAccessPointNetwork":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned Network identifier\n"}},"type":"object","required":["uuid"],"language":{"nodejs":{"requiredOutputs":["href","uuid"]}}},"equinix:fabric/ConnectionZSideAccessPointPort:ConnectionZSideAccessPointPort":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Port name\n"},"redundancy":{"$ref":"#/types/equinix:fabric/ConnectionZSideAccessPointPortRedundancy:ConnectionZSideAccessPointPortRedundancy","description":"Redundancy Information\n"},"uuid":{"type":"string","description":"Equinix-assigned Port identifier\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["href","name","redundancy","uuid"]}}},"equinix:fabric/ConnectionZSideAccessPointPortRedundancy:ConnectionZSideAccessPointPortRedundancy":{"properties":{"enabled":{"type":"boolean","description":"Access point redundancy\n"},"group":{"type":"string","description":"Port redundancy group\n"},"priority":{"type":"string","description":"Priority type-Primary or Secondary\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["enabled","group","priority"]}}},"equinix:fabric/ConnectionZSideAccessPointProfile:ConnectionZSideAccessPointProfile":{"properties":{"accessPointTypeConfigs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ConnectionZSideAccessPointProfileAccessPointTypeConfig:ConnectionZSideAccessPointProfileAccessPointTypeConfig"},"description":"Access point config information\n"},"description":{"type":"string","description":"User-provided service description\n"},"href":{"type":"string","description":"Service Profile URI response attribute\n"},"name":{"type":"string","description":"Customer-assigned service profile name\n"},"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/profileType:ProfileType"}],"description":"Service profile type - L2*PROFILE, L3*PROFILE, ECIA*PROFILE, ECMC*PROFILE, IA_PROFILE\n"},"uuid":{"type":"string","description":"Equinix assigned service profile identifier\n"}},"type":"object","required":["type","uuid"],"language":{"nodejs":{"requiredOutputs":["accessPointTypeConfigs","description","href","name","type","uuid"]}}},"equinix:fabric/ConnectionZSideAccessPointProfileAccessPointTypeConfig:ConnectionZSideAccessPointProfileAccessPointTypeConfig":{"properties":{"type":{"type":"string","description":"Type of access point type config - VD, COLO\n"},"uuid":{"type":"string","description":"Equinix-assigned access point type config identifier\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["type","uuid"]}}},"equinix:fabric/ConnectionZSideAccessPointRouter:ConnectionZSideAccessPointRouter":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["href"]}}},"equinix:fabric/ConnectionZSideAccessPointVirtualDevice:ConnectionZSideAccessPointVirtualDevice":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Customer-assigned Virtual Device Name\n"},"type":{"type":"string","description":"Virtual Device type\n"},"uuid":{"type":"string","description":"Equinix-assigned Virtual Device identifier\n"}},"type":"object","required":["uuid"],"language":{"nodejs":{"requiredOutputs":["href","uuid"]}}},"equinix:fabric/ConnectionZSideAdditionalInfo:ConnectionZSideAdditionalInfo":{"properties":{"key":{"type":"string","description":"Additional information key\n"},"value":{"type":"string","description":"Additional information value\n"}},"type":"object"},"equinix:fabric/ConnectionZSideServiceToken:ConnectionZSideServiceToken":{"properties":{"description":{"type":"string","description":"Service token description\n"},"href":{"type":"string","description":"An absolute URL that is the subject of the link's context\n"},"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/serviceTokenType:ServiceTokenType"}],"description":"Token type - VC_TOKEN\n"},"uuid":{"type":"string","description":"Equinix-assigned service token identifier\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["description","href"]}}},"equinix:fabric/NetworkChange:NetworkChange":{"properties":{"href":{"type":"string","description":"Absolute URL that returns the details of the given change.\nExample: https://api.equinix.com/fabric/v4/networks/92dc376a-a932-43aa-a6a2-c806dedbd784\n"},"type":{"type":"string","description":"Asset instance change request type.: NETWORK_CREATION, NETWORK_UPDATE, NETWORK_DELETION\n"},"uuid":{"type":"string","description":"Asset change request identifier.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["href","type","uuid"]}}},"equinix:fabric/NetworkChangeLog:NetworkChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"]}}},"equinix:fabric/NetworkLocation:NetworkLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["ibx","metroCode","metroName","region"]}}},"equinix:fabric/NetworkNotification:NetworkNotification":{"properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"sendInterval":{"type":"string","description":"Send interval\n"},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION*APPROVAL,SALES*REP_NOTIFICATIONS, NOTIFICATIONS\n"}},"type":"object","required":["emails","type"]},"equinix:fabric/NetworkOperation:NetworkOperation":{"properties":{"equinixStatus":{"type":"string","description":"Progress towards provisioning a given asset.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["equinixStatus"]}}},"equinix:fabric/NetworkProject:NetworkProject":{"properties":{"projectId":{"type":"string","description":"Customer project identifier\n"}},"type":"object","required":["projectId"]},"equinix:fabric/PortAccount:PortAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Account number the port will be created for\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","required":["accountNumber"],"language":{"nodejs":{"requiredOutputs":["accountName","accountNumber","ucmId"]}}},"equinix:fabric/PortAdditionalInfo:PortAdditionalInfo":{"properties":{"key":{"type":"string","description":"The key name of the key/value pair\n"},"value":{"type":"string","description":"The value of the key/value pair\n"}},"type":"object","required":["key","value"]},"equinix:fabric/PortChangeLog:PortChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the port resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the port resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the port resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the port resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the port resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the port resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the port resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the port resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the port resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the port resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the port resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the port resource\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"]}}},"equinix:fabric/PortDevice:PortDevice":{"properties":{"name":{"type":"string","description":"Device name for the port\n"},"redundancy":{"$ref":"#/types/equinix:fabric/PortDeviceRedundancy:PortDeviceRedundancy","description":"Device redundancy configuration\n"}},"type":"object"},"equinix:fabric/PortDeviceRedundancy:PortDeviceRedundancy":{"properties":{"group":{"type":"string","description":"Redundancy group identifier\n"},"priority":{"type":"string","description":"Redundancy priority (PRIMARY or SECONDARY)\n"}},"type":"object"},"equinix:fabric/PortEncapsulation:PortEncapsulation":{"properties":{"tagProtocolId":{"type":"string","description":"Port encapsulation tag protocol identifier\n"},"type":{"type":"string","description":"Port encapsulation protocol type\n"}},"type":"object","required":["tagProtocolId","type"]},"equinix:fabric/PortLocation:PortLocation":{"properties":{"metroCode":{"type":"string","description":"Metro code the port will be created in\n"}},"type":"object","required":["metroCode"]},"equinix:fabric/PortNotification:PortNotification":{"properties":{"registeredUsers":{"type":"array","items":{"type":"string"},"description":"Array of registered users that will receive this notification type on the port\n"},"type":{"type":"string","description":"Notification Type\n"}},"type":"object","required":["registeredUsers","type"]},"equinix:fabric/PortOrder:PortOrder":{"properties":{"customerReferenceId":{"type":"string","description":"Customer order reference Id\n"},"orderId":{"type":"string","description":"Order Identification\n"},"orderNumber":{"type":"string","description":"Order Reference Number\n"},"purchaseOrder":{"$ref":"#/types/equinix:fabric/PortOrderPurchaseOrder:PortOrderPurchaseOrder","description":"Purchase order details\n"},"signature":{"$ref":"#/types/equinix:fabric/PortOrderSignature:PortOrderSignature","description":"Port order confirmation signature details\n"},"uuid":{"type":"string","description":"Equinix-assigned order identifier, this is a derived response attribute\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["orderId","orderNumber","uuid"]}}},"equinix:fabric/PortOrderPurchaseOrder:PortOrderPurchaseOrder":{"properties":{"amount":{"type":"string","description":"purchase order amount\n"},"attachmentId":{"type":"string","description":"purchase order attachment id\n"},"endDate":{"type":"string","description":"purchase order end date\n"},"number":{"type":"string","description":"purchase order number\n"},"startDate":{"type":"string","description":"purchase order start date\n"},"type":{"type":"string","description":"purchase order type\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["amount","attachmentId","endDate","number","startDate","type"]}}},"equinix:fabric/PortOrderSignature:PortOrderSignature":{"properties":{"delegate":{"$ref":"#/types/equinix:fabric/PortOrderSignatureDelegate:PortOrderSignatureDelegate","description":"delegate order details\n"},"signatory":{"type":"string","description":"Port signature Type\n"}},"type":"object","required":["delegate","signatory"]},"equinix:fabric/PortOrderSignatureDelegate:PortOrderSignatureDelegate":{"properties":{"email":{"type":"string","description":"Email of the signatory\n"},"firstName":{"type":"string","description":"First name of the signatory\n"},"lastName":{"type":"string","description":"Last name of the signatory\n"}},"type":"object","required":["email"]},"equinix:fabric/PortPhysicalPort:PortPhysicalPort":{"properties":{"demarcationPoint":{"$ref":"#/types/equinix:fabric/PortPhysicalPortDemarcationPoint:PortPhysicalPortDemarcationPoint","description":"Customer physical port\n"},"interface":{"$ref":"#/types/equinix:fabric/PortPhysicalPortInterface:PortPhysicalPortInterface","description":"Physical port interface\n"},"type":{"type":"string","description":"Physical Port type\n"}},"type":"object","required":["demarcationPoint","type"]},"equinix:fabric/PortPhysicalPortDemarcationPoint:PortPhysicalPortDemarcationPoint":{"properties":{"cabinetUniqueSpaceId":{"type":"string","description":"Port cabinet unique space id\n"},"cageUniqueSpaceId":{"type":"string","description":"Port cage unique space id\n"},"connectorType":{"type":"string","description":"Port connector type\n"},"ibx":{"type":"string","description":"IBX Metro code for the physical port\n"},"patchPanel":{"type":"string","description":"Port patch panel\n"}},"type":"object","required":["cabinetUniqueSpaceId","cageUniqueSpaceId","connectorType","ibx","patchPanel"]},"equinix:fabric/PortPhysicalPortInterface:PortPhysicalPortInterface":{"properties":{"type":{"type":"string","description":"Interface type for the physical port\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["type"]}}},"equinix:fabric/PortProject:PortProject":{"properties":{"projectId":{"type":"string","description":"Project id the port will be created in\n"}},"type":"object","required":["projectId"]},"equinix:fabric/PortRedundancy:PortRedundancy":{"properties":{"priority":{"type":"string","description":"Port redundancy priority value\n"}},"type":"object","required":["priority"]},"equinix:fabric/PortSettings:PortSettings":{"properties":{"packageType":{"type":"string","description":"Billing package for the port being ordered\n"},"sharedPortType":{"type":"boolean","description":"Indicates whether this is a dedicated customer cage or a shared neutral cage\n"}},"type":"object","required":["packageType","sharedPortType"]},"equinix:fabric/PortTimeouts:PortTimeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"equinix:fabric/PrecisionTimeServiceAccount:PrecisionTimeServiceAccount":{"properties":{"accountName":{"type":"string","description":"Account Name\n"},"accountNumber":{"type":"integer","description":"Equinix Account Number\n"},"globalCustId":{"type":"string","description":"Global Customer Id\n"},"globalOrgId":{"type":"string","description":"Customer organization naidentifierme\n"},"globalOrganizationName":{"type":"string","description":"Global organization name\n"},"orgId":{"type":"integer","description":"Customer organization identifier\n"},"organizationName":{"type":"string","description":"Customer organization name\n"},"resellerAccountName":{"type":"string","description":"Reseller account name\n"},"resellerAccountNumber":{"type":"integer","description":"Reseller account number\n"},"resellerOrgId":{"type":"integer","description":"Reseller customer organization identifier\n"},"resellerUcmId":{"type":"string","description":"Reseller account ucmId\n"},"ucmId":{"type":"string","description":"Global organization name\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","resellerAccountName","resellerAccountNumber","resellerOrgId","resellerUcmId","ucmId"]}}},"equinix:fabric/PrecisionTimeServiceChangeLog:PrecisionTimeServiceChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the route aggregation resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the route aggregation resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the route aggregation resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the route aggregation resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the route aggregation resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the route aggregation resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the route aggregation resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the route aggregation resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the route aggregation resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the route aggregation resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the route aggregation resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the route aggregation resource\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"]}}},"equinix:fabric/PrecisionTimeServiceConnection:PrecisionTimeServiceConnection":{"properties":{"href":{"type":"string","description":"Link to the Equinix Fabric Connection associated with the Precision Time Service\n"},"type":{"type":"string","description":"Type of the Equinix Fabric Connection associated with the Precision Time Service\n"},"uuid":{"type":"string","description":"Equinix Fabric Connection UUID; Precision Time Service will be connected with it\n"}},"type":"object","required":["uuid"],"language":{"nodejs":{"requiredOutputs":["href","type","uuid"]}}},"equinix:fabric/PrecisionTimeServiceIpv4:PrecisionTimeServiceIpv4":{"properties":{"defaultGateway":{"type":"string","description":"IPv4 address that establishes the Routing Interface where traffic is directed. It serves as the next hop in the Network.\n"},"networkMask":{"type":"string","description":"IPv4 address that defines the range of consecutive subnets in the network.\n"},"primary":{"type":"string","description":"IPv4 address for the Primary Timing Master Server.\n"},"secondary":{"type":"string","description":"IPv4 address for the Secondary Timing Master Server.\n"}},"type":"object","required":["defaultGateway","networkMask","primary","secondary"]},"equinix:fabric/PrecisionTimeServiceNtpAdvancedConfiguration:PrecisionTimeServiceNtpAdvancedConfiguration":{"properties":{"key":{"type":"string","description":"The plaintext authentication key. For ASCII type, the key\\\n\\ must contain printable ASCII characters, range 10-20 characters. For\\\n\\ HEX type, range should be 10-40 characters\n"},"keyNumber":{"type":"integer","description":"The authentication Key ID\n"},"type":{"type":"string","description":"md5 Authentication type\n"}},"type":"object"},"equinix:fabric/PrecisionTimeServiceOperation:PrecisionTimeServiceOperation":{"properties":{"operationalStatus":{"type":"string","description":"Current operational status of the Precision Time Service\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["operationalStatus"]}}},"equinix:fabric/PrecisionTimeServiceOrder:PrecisionTimeServiceOrder":{"properties":{"customerReferenceNumber":{"type":"string","description":"Customer reference number\n"},"orderNumber":{"type":"string","description":"Order reference number\n"},"purchaseOrderNumber":{"type":"string","description":"Purchase order number\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["customerReferenceNumber","orderNumber","purchaseOrderNumber"]}}},"equinix:fabric/PrecisionTimeServicePackage:PrecisionTimeServicePackage":{"properties":{"code":{"type":"string","description":"Time Precision Package Code for the desired billing package\n"},"href":{"type":"string","description":"Time Precision Package HREF link to corresponding resource in Equinix Portal\n"}},"type":"object","required":["code"],"language":{"nodejs":{"requiredOutputs":["code","href"]}}},"equinix:fabric/PrecisionTimeServicePrecisionTimePrice:PrecisionTimeServicePrecisionTimePrice":{"properties":{"charges":{"type":"array","items":{"$ref":"#/types/equinix:fabric/PrecisionTimeServicePrecisionTimePriceCharge:PrecisionTimeServicePrecisionTimePriceCharge"},"description":"offering price charge\n"},"currency":{"type":"string","description":"Offering price currency\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["charges","currency"]}}},"equinix:fabric/PrecisionTimeServicePrecisionTimePriceCharge:PrecisionTimeServicePrecisionTimePriceCharge":{"properties":{"price":{"type":"number","description":"Offering price\n"},"type":{"type":"string","description":"Price charge type; MONTHLY*RECURRING, NON*RECURRING\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["price","type"]}}},"equinix:fabric/PrecisionTimeServiceProject:PrecisionTimeServiceProject":{"properties":{"projectId":{"type":"string","description":"Equinix Subscriber-assigned project ID\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["projectId"]}}},"equinix:fabric/PrecisionTimeServicePtpAdvancedConfiguration:PrecisionTimeServicePtpAdvancedConfiguration":{"properties":{"domain":{"type":"integer","description":"The PTP domain value\n"},"grantTime":{"type":"integer","description":"Unicast Grant Time in seconds. For Multicast and Hybrid transport modes, grant time defaults to 300 seconds. For Unicast mode, grant time can be between 30 to 7200\n"},"logAnnounceInterval":{"type":"integer","description":"Logarithmic value that controls the rate of PTP Announce packets from the PTP time server. Default is 1 (1 packet every 2 seconds), Unit packets/second\n"},"logDelayReqInterval":{"type":"integer","description":"Logarithmic value that controls the rate of PTP DelayReq packets. Default is -4 (16 packets per second), Unit packets/second..\n"},"logSyncInterval":{"type":"integer","description":"Logarithmic value that controls the rate of PTP Sync packets. Default is -4 (16 packets per second), Unit packets/second..\n"},"priority1":{"type":"integer","description":"The priority1 value determines the best primary clock, Lower value indicates higher priority\n"},"priority2":{"type":"integer","description":"The priority2 value differentiates and prioritizes the primary clock to avoid confusion when priority1-value is the same for different primary clocks in a network\n"},"timeScale":{"type":"string","description":"Time Scale value, ARB denotes Arbitrary and PTP denotes Precision Time Protocol\n"},"transportMode":{"type":"string","description":"ptp transport mode\n"}},"type":"object"},"equinix:fabric/PrecisionTimeServiceTimeouts:PrecisionTimeServiceTimeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"equinix:fabric/RouteAggregationChange:RouteAggregationChange":{"properties":{"href":{"type":"string","description":"Equinix auto generated URI to the route aggregation change\n"},"type":{"type":"string","description":"Equinix defined Route Aggregation Change Type\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for a change\n"}},"type":"object","required":["href","type","uuid"]},"equinix:fabric/RouteAggregationChangeLog:RouteAggregationChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the route aggregation resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the route aggregation resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the route aggregation resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the route aggregation resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the route aggregation resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the route aggregation resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the route aggregation resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the route aggregation resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the route aggregation resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the route aggregation resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the route aggregation resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the route aggregation resource\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"]}}},"equinix:fabric/RouteAggregationProject:RouteAggregationProject":{"properties":{"projectId":{"type":"string","description":"Equinix Subscriber-assigned project ID\n"}},"type":"object","required":["projectId"]},"equinix:fabric/RouteAggregationRuleChange:RouteAggregationRuleChange":{"properties":{"href":{"type":"string","description":"Equinix auto generated URI to the route aggregation change\n"},"type":{"type":"string","description":"Equinix defined Route Aggregation Change Type\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for a change\n"}},"type":"object","required":["type","uuid"],"language":{"nodejs":{"requiredOutputs":["href","type","uuid"]}}},"equinix:fabric/RouteAggregationRuleChangeLog:RouteAggregationRuleChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the stream resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the stream resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the stream resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the stream resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the stream resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the stream resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the stream resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the stream resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the stream resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the stream resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the stream resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the stream resource\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"]}}},"equinix:fabric/RouteAggregationRuleTimeouts:RouteAggregationRuleTimeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"equinix:fabric/RouteAggregationTimeouts:RouteAggregationTimeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"equinix:fabric/RouteFilterChange:RouteFilterChange":{"properties":{"href":{"type":"string","description":"The URI of the previous Route Filter Change\n"},"type":{"type":"string","description":"Type of change. One of [ \"BGP_IPv4_PREFIX_FILTER_UPDATE\",\"BGP_IPv4_PREFIX_FILTER_CREATION\",\"BGP_IPv4_PREFIX_FILTER_DELETION\",\"BGP_IPv6_PREFIX_FILTER_UPDATE\",\"BGP_IPv6_PREFIX_FILTER_CREATION\",\"BGP_IPv6_PREFIX_FILTER_DELETION\" ]\n"},"uuid":{"type":"string","description":"Unique identifier for the previous change\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["href","type","uuid"]}}},"equinix:fabric/RouteFilterChangeLog:RouteFilterChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"]}}},"equinix:fabric/RouteFilterProject:RouteFilterProject":{"properties":{"href":{"type":"string","description":"URI of the Fabric Project\n"},"projectId":{"type":"string","description":"Project id associated with Fabric Project\n"}},"type":"object","required":["projectId"],"language":{"nodejs":{"requiredOutputs":["href","projectId"]}}},"equinix:fabric/RouteFilterRuleChange:RouteFilterRuleChange":{"properties":{"href":{"type":"string","description":"The URI of the previous Route Filter Rule Change\n"},"type":{"type":"string","description":"Type of change. One of [ \"BGP_IPv4_PREFIX_FILTER_RULE_UPDATE\",\"BGP_IPv4_PREFIX_FILTER_RULE_CREATION\",\"BGP_IPv4_PREFIX_FILTER_RULE_DELETION\",\"BGP_IPv6_PREFIX_FILTER_RULE_UPDATE\",\"BGP_IPv6_PREFIX_FILTER_RULE_CREATION\",\"BGP_IPv6_PREFIX_FILTER_RULE_DELETION\" ]\n"},"uuid":{"type":"string","description":"Unique identifier for the previous change\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["href","type","uuid"]}}},"equinix:fabric/RouteFilterRuleChangeLog:RouteFilterRuleChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"]}}},"equinix:fabric/RoutingProtocolBfd:RoutingProtocolBfd":{"properties":{"enabled":{"type":"boolean","description":"Bidirectional Forwarding Detection enablement\n"},"interval":{"type":"string","description":"Interval range between the received BFD control packets\n"}},"type":"object","required":["enabled"]},"equinix:fabric/RoutingProtocolBgpIpv4:RoutingProtocolBgpIpv4":{"properties":{"customerPeerIp":{"type":"string","description":"Customer side peering ip\n"},"enabled":{"type":"boolean","description":"Admin status for the BGP session\n"},"equinixPeerIp":{"type":"string","description":"Equinix side peering ip\n"},"inboundMed":{"type":"integer","description":"Inbound Multi Exit Discriminator attribute\n"},"outboundAsPrependCount":{"type":"string","description":"AS path prepend count. One of: 0, 1, 3, 5\n"},"outboundMed":{"type":"integer","description":"Outbound Multi Exit Discriminator attribute\n"}},"type":"object","required":["customerPeerIp"],"language":{"nodejs":{"requiredOutputs":["customerPeerIp","equinixPeerIp","inboundMed","outboundAsPrependCount","outboundMed"]}}},"equinix:fabric/RoutingProtocolBgpIpv6:RoutingProtocolBgpIpv6":{"properties":{"customerPeerIp":{"type":"string","description":"Customer side peering ip\n"},"enabled":{"type":"boolean","description":"Admin status for the BGP session\n"},"equinixPeerIp":{"type":"string","description":"Equinix side peering ip\n"},"inboundMed":{"type":"integer","description":"Inbound Multi Exit Discriminator attribute\n"},"outboundAsPrependCount":{"type":"string","description":"AS path prepend count. One of: 0, 1, 3, 5\n"},"outboundMed":{"type":"integer","description":"Outbound Multi Exit Discriminator attribute\n"}},"type":"object","required":["customerPeerIp"],"language":{"nodejs":{"requiredOutputs":["customerPeerIp","equinixPeerIp","inboundMed","outboundAsPrependCount","outboundMed"]}}},"equinix:fabric/RoutingProtocolChange:RoutingProtocolChange":{"properties":{"href":{"type":"string","description":"Routing Protocol Change URI\n"},"type":{"type":"string","description":"Type of change\n"},"uuid":{"type":"string","description":"Uniquely identifies a change\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["href","type","uuid"]}}},"equinix:fabric/RoutingProtocolChangeLog:RoutingProtocolChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"]}}},"equinix:fabric/RoutingProtocolDirectIpv4:RoutingProtocolDirectIpv4":{"properties":{"equinixIfaceIp":{"type":"string","description":"Equinix side Interface IP address\n"}},"type":"object","required":["equinixIfaceIp"]},"equinix:fabric/RoutingProtocolDirectIpv6:RoutingProtocolDirectIpv6":{"properties":{"equinixIfaceIp":{"type":"string","description":"Equinix side Interface IP address\n"}},"type":"object"},"equinix:fabric/RoutingProtocolOperation:RoutingProtocolOperation":{"properties":{"errors":{"type":"array","items":{"$ref":"#/types/equinix:fabric/RoutingProtocolOperationError:RoutingProtocolOperationError"},"description":"Errors occurred\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["errors"]}}},"equinix:fabric/RoutingProtocolOperationError:RoutingProtocolOperationError":{"properties":{"additionalInfos":{"type":"array","items":{"$ref":"#/types/equinix:fabric/RoutingProtocolOperationErrorAdditionalInfo:RoutingProtocolOperationErrorAdditionalInfo"},"description":"Pricing error additional Info\n"},"correlationId":{"type":"string","description":"CorrelationId\n"},"details":{"type":"string","description":"Details\n"},"errorCode":{"type":"string","description":"Error  code\n"},"errorMessage":{"type":"string","description":"Error Message\n"},"help":{"type":"string","description":"Help\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["additionalInfos","correlationId","details","errorCode","errorMessage","help"]}}},"equinix:fabric/RoutingProtocolOperationErrorAdditionalInfo:RoutingProtocolOperationErrorAdditionalInfo":{"properties":{"property":{"type":"string","description":"Property at which the error potentially occurred\n"},"reason":{"type":"string","description":"Reason for the error\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["property","reason"]}}},"equinix:fabric/ServiceProfileAccessPointTypeConfig:ServiceProfileAccessPointTypeConfig":{"properties":{"allowBandwidthAutoApproval":{"type":"boolean","description":"Setting to enable or disable the ability of the buyer to change connection bandwidth without approval of the seller\n"},"allowBandwidthUpgrade":{"type":"boolean","description":"Availability of a bandwidth upgrade. The default is false\n"},"allowCustomBandwidth":{"type":"boolean","description":"Setting to enable or disable the ability of the buyer to customize the bandwidth\n"},"allowRemoteConnections":{"type":"boolean","description":"Setting to allow or prohibit remote connections to the service profile\n"},"apiConfig":{"$ref":"#/types/equinix:fabric/ServiceProfileAccessPointTypeConfigApiConfig:ServiceProfileAccessPointTypeConfigApiConfig","description":"Api configuration details\n"},"authenticationKey":{"$ref":"#/types/equinix:fabric/ServiceProfileAccessPointTypeConfigAuthenticationKey:ServiceProfileAccessPointTypeConfigAuthenticationKey","description":"Authentication key details\n"},"bandwidthAlertThreshold":{"type":"number","description":"Percentage of port bandwidth at which an allocation alert is generated\n"},"connectionLabel":{"type":"string","description":"Custom name for Connection\n"},"connectionRedundancyRequired":{"type":"boolean","description":"Mandate redundant connections\n"},"enableAutoGenerateServiceKey":{"type":"boolean","description":"Enable auto generate service key\n"},"linkProtocolConfig":{"$ref":"#/types/equinix:fabric/ServiceProfileAccessPointTypeConfigLinkProtocolConfig:ServiceProfileAccessPointTypeConfigLinkProtocolConfig","description":"Link protocol configuration details\n"},"selectiveRedundancy":{"type":"boolean","description":"Optional redundant connections\n"},"supportedBandwidths":{"type":"array","items":{"type":"integer"},"description":"Supported bandwidths\n"},"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/profileAccessPointType:ProfileAccessPointType"}],"description":"Type of access point type config - VD, COLO\n"},"uuid":{"type":"string","description":"Colo/Port Uuid\n"}},"type":"object","required":["type"],"language":{"nodejs":{"requiredOutputs":["type","uuid"]}}},"equinix:fabric/ServiceProfileAccessPointTypeConfigApiConfig:ServiceProfileAccessPointTypeConfigApiConfig":{"properties":{"allowOverSubscription":{"type":"boolean","description":"Setting showing that oversubscription support is available (true) or not (false). The default is false\n"},"apiAvailable":{"type":"boolean","description":"Indicates if it's possible to establish connections based on the given service profile using the Equinix Fabric API.\n"},"bandwidthFromApi":{"type":"boolean","description":"Indicates if the connection bandwidth can be obtained directly from the cloud service provider.\n"},"equinixManagedPort":{"type":"boolean","description":"Setting indicating that the port is managed by Equinix (true) or not (false)\n"},"equinixManagedVlan":{"type":"boolean","description":"Setting indicating that the VLAN is managed by Equinix (true) or not (false)\n"},"integrationId":{"type":"string","description":"A unique identifier issued during onboarding and used to integrate the customer's service profile with the Equinix Fabric API.\n"},"overSubscriptionLimit":{"type":"integer","description":"Port bandwidth multiplier that determines the total bandwidth that can be allocated to users creating connections to your services. For example, a 10 Gbps port combined with an overSubscriptionLimit parameter value of 10 allows your subscribers to create connections with a total bandwidth of 100 Gbps.\n"}},"type":"object"},"equinix:fabric/ServiceProfileAccessPointTypeConfigAuthenticationKey:ServiceProfileAccessPointTypeConfigAuthenticationKey":{"properties":{"description":{"type":"string","description":"Description of authorization key\n"},"label":{"type":"string","description":"Name of the parameter that must be provided to authorize the connection.\n"},"required":{"type":"boolean","description":"Requirement to configure an authentication key.\n"}},"type":"object"},"equinix:fabric/ServiceProfileAccessPointTypeConfigLinkProtocolConfig:ServiceProfileAccessPointTypeConfigLinkProtocolConfig":{"properties":{"encapsulation":{"type":"string","description":"Data frames encapsulation standard.UNTAGGED - Untagged encapsulation for EPL connections. DOT1Q - DOT1Q encapsulation standard. QINQ - QINQ encapsulation standard.\n"},"encapsulationStrategy":{"type":"string","description":"Additional tagging information required by the seller profile.\n"},"reuseVlanSTag":{"type":"boolean","description":"Automatically accept subsequent DOT1Q to QINQ connections that use the same authentication key. These connections will have the same VLAN S-tag assigned as the initial connection.\n"}},"type":"object"},"equinix:fabric/ServiceProfileAccount:ServiceProfileAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"]}}},"equinix:fabric/ServiceProfileChangeLog:ServiceProfileChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"]}}},"equinix:fabric/ServiceProfileCustomField:ServiceProfileCustomField":{"properties":{"captureInEmail":{"type":"boolean","description":"Required field\n"},"dataType":{"type":"string","description":"Data type\n"},"description":{"type":"string","description":"Description\n"},"label":{"type":"string","description":"Label\n"},"options":{"type":"array","items":{"type":"string"},"description":"Options\n"},"required":{"type":"boolean","description":"Required field\n"}},"type":"object","required":["dataType","label","required"]},"equinix:fabric/ServiceProfileMarketingInfo:ServiceProfileMarketingInfo":{"properties":{"logo":{"type":"string","description":"Logo\n"},"processSteps":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfileMarketingInfoProcessStep:ServiceProfileMarketingInfoProcessStep"},"description":"Process Step\n"},"promotion":{"type":"boolean","description":"Promotion\n"}},"type":"object"},"equinix:fabric/ServiceProfileMarketingInfoProcessStep:ServiceProfileMarketingInfoProcessStep":{"properties":{"description":{"type":"string","description":"Description\n"},"subTitle":{"type":"string","description":"Sub Title\n"},"title":{"type":"string","description":"Title\n"}},"type":"object"},"equinix:fabric/ServiceProfileMetro:ServiceProfileMetro":{"properties":{"code":{"type":"string","description":"Metro Code - Example SV\n"},"displayName":{"type":"string","description":"Display Name\n"},"ibxs":{"type":"array","items":{"type":"string"},"description":"IBX- Equinix International Business Exchange list\n"},"inTrail":{"type":"boolean","description":"In Trail\n"},"name":{"type":"string","description":"Metro Name\n"},"sellerRegions":{"type":"object","additionalProperties":{"type":"string"},"description":"Seller Regions\n"}},"type":"object"},"equinix:fabric/ServiceProfileNotification:ServiceProfileNotification":{"properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"sendInterval":{"type":"string","description":"Send interval\n"},"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/notificationsType:NotificationsType"}],"description":"Notification Type - ALL,CONNECTION*APPROVAL,SALES*REP_NOTIFICATIONS, NOTIFICATIONS\n"}},"type":"object","required":["emails","type"]},"equinix:fabric/ServiceProfilePort:ServiceProfilePort":{"properties":{"crossConnectId":{"type":"string","description":"Cross Connect Id\n"},"location":{"$ref":"#/types/equinix:fabric/ServiceProfilePortLocation:ServiceProfilePortLocation","description":"Colo/Port Location\n"},"sellerRegion":{"type":"string","description":"Seller Region\n"},"sellerRegionDescription":{"type":"string","description":"Seller Region details\n"},"type":{"type":"string","description":"Colo/Port Type\n"},"uuid":{"type":"string","description":"Colo/Port Uuid\n"}},"type":"object","required":["type","uuid"]},"equinix:fabric/ServiceProfilePortLocation:ServiceProfilePortLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["ibx","metroCode","metroName","region"]}}},"equinix:fabric/ServiceProfileProject:ServiceProfileProject":{"properties":{"href":{"type":"string","description":"Unique Resource URL\n"},"projectId":{"type":"string","description":"Project Id\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["href","projectId"]}}},"equinix:fabric/ServiceProfileVirtualDevice:ServiceProfileVirtualDevice":{"properties":{"interfaceUuid":{"type":"string","description":"Device Interface Uuid\n"},"location":{"$ref":"#/types/equinix:fabric/ServiceProfileVirtualDeviceLocation:ServiceProfileVirtualDeviceLocation","description":"Device Location\n"},"type":{"type":"string","description":"Virtual Device Type\n"},"uuid":{"type":"string","description":"Virtual Device Uuid\n"}},"type":"object","required":["type","uuid"]},"equinix:fabric/ServiceProfileVirtualDeviceLocation:ServiceProfileVirtualDeviceLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["ibx","metroCode","metroName","region"]}}},"equinix:fabric/ServiceTokenAccount:ServiceTokenAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"]}}},"equinix:fabric/ServiceTokenChangeLog:ServiceTokenChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"]}}},"equinix:fabric/ServiceTokenNotification:ServiceTokenNotification":{"properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"sendInterval":{"type":"string","description":"Send interval\n"},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION*APPROVAL,SALES*REP_NOTIFICATIONS, NOTIFICATIONS\n"}},"type":"object","required":["emails","type"]},"equinix:fabric/ServiceTokenProject:ServiceTokenProject":{"properties":{"href":{"type":"string","description":"Unique Resource URL\n"},"projectId":{"type":"string","description":"Project Id\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["href","projectId"]}}},"equinix:fabric/ServiceTokenServiceTokenConnection:ServiceTokenServiceTokenConnection":{"properties":{"aSides":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionASide:ServiceTokenServiceTokenConnectionASide"},"description":"A-Side Connection link protocol,virtual device or network configuration\n"},"allowCustomBandwidth":{"type":"boolean","description":"Allow custom bandwidth value\n"},"allowRemoteConnection":{"type":"boolean","description":"Authorization to connect remotely\n"},"bandwidthLimit":{"type":"integer","description":"Connection bandwidth limit in Mbps\n"},"supportedBandwidths":{"type":"array","items":{"type":"integer"},"description":"List of permitted bandwidths'; For Port-based Service Tokens, the maximum allowable bandwidth is 50 Gbps, while for Virtual Device-based Service Tokens, it is limited to 10 Gbps\n"},"type":{"type":"string","description":"Type of Connection supported by Service Token you will create; EVPL*VC, EVPLAN*VC, EPLAN*VC, IPWAN*VC\n"},"uuid":{"type":"string","description":"Equinix-assigned connection identifier\n"},"zSides":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionZSide:ServiceTokenServiceTokenConnectionZSide"},"description":"Z-Side Connection link protocol,virtual device or network configuration\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["aSides","allowCustomBandwidth","allowRemoteConnection","bandwidthLimit","supportedBandwidths","uuid","zSides"]}}},"equinix:fabric/ServiceTokenServiceTokenConnectionASide:ServiceTokenServiceTokenConnectionASide":{"properties":{"accessPointSelectors":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionASideAccessPointSelector:ServiceTokenServiceTokenConnectionASideAccessPointSelector"},"description":"List of criteria for selecting network access points with optimal efficiency, security, compatibility, and availability\n"}},"type":"object","required":["accessPointSelectors"]},"equinix:fabric/ServiceTokenServiceTokenConnectionASideAccessPointSelector:ServiceTokenServiceTokenConnectionASideAccessPointSelector":{"properties":{"interface":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionASideAccessPointSelectorInterface:ServiceTokenServiceTokenConnectionASideAccessPointSelectorInterface","description":"Virtual Device Interface Configuration\n"},"linkProtocol":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionASideAccessPointSelectorLinkProtocol:ServiceTokenServiceTokenConnectionASideAccessPointSelectorLinkProtocol","description":"Link protocol Configuration\n"},"network":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionASideAccessPointSelectorNetwork:ServiceTokenServiceTokenConnectionASideAccessPointSelectorNetwork","description":"Network Configuration\n"},"port":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionASideAccessPointSelectorPort:ServiceTokenServiceTokenConnectionASideAccessPointSelectorPort","description":"Port Configuration\n"},"type":{"type":"string","description":"Type of Access point; COLO, VD, NETWORK\n"},"virtualDevice":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionASideAccessPointSelectorVirtualDevice:ServiceTokenServiceTokenConnectionASideAccessPointSelectorVirtualDevice","description":"Virtual Device Configuration\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["network","type"]}}},"equinix:fabric/ServiceTokenServiceTokenConnectionASideAccessPointSelectorInterface:ServiceTokenServiceTokenConnectionASideAccessPointSelectorInterface":{"properties":{"id":{"type":"integer","description":"id\n"},"type":{"type":"string","description":"Interface type\n"},"uuid":{"type":"string","description":"Equinix-assigned interface identifier\n"}},"type":"object","required":["type"],"language":{"nodejs":{"requiredOutputs":["id","type","uuid"]}}},"equinix:fabric/ServiceTokenServiceTokenConnectionASideAccessPointSelectorLinkProtocol:ServiceTokenServiceTokenConnectionASideAccessPointSelectorLinkProtocol":{"properties":{"type":{"type":"string","description":"Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN\n"},"vlanCTag":{"type":"integer","description":"Vlan Customer Tag information, vlanCTag value specified for QINQ connections\n"},"vlanSTag":{"type":"integer","description":"Vlan Provider Tag information, vlanSTag value specified for QINQ connections\n"},"vlanTag":{"type":"integer","description":"Vlan Tag information, vlanTag value specified for DOT1Q connections\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["type","vlanCTag","vlanSTag","vlanTag"]}}},"equinix:fabric/ServiceTokenServiceTokenConnectionASideAccessPointSelectorNetwork:ServiceTokenServiceTokenConnectionASideAccessPointSelectorNetwork":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"locations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionASideAccessPointSelectorNetworkLocation:ServiceTokenServiceTokenConnectionASideAccessPointSelectorNetworkLocation"},"description":"Location\n"},"name":{"type":"string","description":"Network Name\n"},"scope":{"type":"string","description":"Scope of Network\n"},"type":{"type":"string","description":"Type of Network\n"},"uuid":{"type":"string","description":"Equinix-assigned Network identifier\n"}},"type":"object","required":["uuid"],"language":{"nodejs":{"requiredOutputs":["href","locations","name","scope","type","uuid"]}}},"equinix:fabric/ServiceTokenServiceTokenConnectionASideAccessPointSelectorNetworkLocation:ServiceTokenServiceTokenConnectionASideAccessPointSelectorNetworkLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["ibx","metroCode","metroName","region"]}}},"equinix:fabric/ServiceTokenServiceTokenConnectionASideAccessPointSelectorPort:ServiceTokenServiceTokenConnectionASideAccessPointSelectorPort":{"properties":{"accountName":{"type":"string","description":"Account Name\n"},"bandwidth":{"type":"integer","description":"Port Bandwidth\n"},"cvpId":{"type":"integer","description":"Customer virtual port Id\n"},"encapsulationProtocolType":{"type":"string","description":"Port Encapsulation\n"},"href":{"type":"string","description":"Unique Resource Identifier\n"},"locations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionASideAccessPointSelectorPortLocation:ServiceTokenServiceTokenConnectionASideAccessPointSelectorPortLocation"},"description":"Port Location\n"},"portName":{"type":"string","description":"Port Name\n"},"priority":{"type":"string","description":"Port Priority\n"},"type":{"type":"string","description":"Type of Port\n"},"uuid":{"type":"string","description":"Equinix-assigned Port identifier\n"}},"type":"object","required":["uuid"],"language":{"nodejs":{"requiredOutputs":["accountName","bandwidth","cvpId","encapsulationProtocolType","href","locations","portName","priority","type","uuid"]}}},"equinix:fabric/ServiceTokenServiceTokenConnectionASideAccessPointSelectorPortLocation:ServiceTokenServiceTokenConnectionASideAccessPointSelectorPortLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["ibx","metroCode","metroName","region"]}}},"equinix:fabric/ServiceTokenServiceTokenConnectionASideAccessPointSelectorVirtualDevice:ServiceTokenServiceTokenConnectionASideAccessPointSelectorVirtualDevice":{"properties":{"cluster":{"type":"string","description":"Virtual Device Cluster Information\n"},"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Customer-assigned Virtual Device Name\n"},"type":{"type":"string","description":"Virtual Device type\n"},"uuid":{"type":"string","description":"Equinix-assigned Virtual Device identifier\n"}},"type":"object","required":["uuid"],"language":{"nodejs":{"requiredOutputs":["cluster","href","name","type","uuid"]}}},"equinix:fabric/ServiceTokenServiceTokenConnectionZSide:ServiceTokenServiceTokenConnectionZSide":{"properties":{"accessPointSelectors":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionZSideAccessPointSelector:ServiceTokenServiceTokenConnectionZSideAccessPointSelector"},"description":"List of criteria for selecting network access points with optimal efficiency, security, compatibility, and availability\n"}},"type":"object","required":["accessPointSelectors"]},"equinix:fabric/ServiceTokenServiceTokenConnectionZSideAccessPointSelector:ServiceTokenServiceTokenConnectionZSideAccessPointSelector":{"properties":{"interface":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionZSideAccessPointSelectorInterface:ServiceTokenServiceTokenConnectionZSideAccessPointSelectorInterface","description":"Virtual Device Interface Configuration\n"},"linkProtocol":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionZSideAccessPointSelectorLinkProtocol:ServiceTokenServiceTokenConnectionZSideAccessPointSelectorLinkProtocol","description":"Link protocol Configuration\n"},"network":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetwork:ServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetwork","description":"Network Configuration\n"},"port":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionZSideAccessPointSelectorPort:ServiceTokenServiceTokenConnectionZSideAccessPointSelectorPort","description":"Port Configuration\n"},"type":{"type":"string","description":"Type of Access point; COLO, VD, NETWORK\n"},"virtualDevice":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionZSideAccessPointSelectorVirtualDevice:ServiceTokenServiceTokenConnectionZSideAccessPointSelectorVirtualDevice","description":"Virtual Device Configuration\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["network","type"]}}},"equinix:fabric/ServiceTokenServiceTokenConnectionZSideAccessPointSelectorInterface:ServiceTokenServiceTokenConnectionZSideAccessPointSelectorInterface":{"properties":{"id":{"type":"integer","description":"id\n"},"type":{"type":"string","description":"Interface type\n"},"uuid":{"type":"string","description":"Equinix-assigned interface identifier\n"}},"type":"object","required":["type"],"language":{"nodejs":{"requiredOutputs":["id","type","uuid"]}}},"equinix:fabric/ServiceTokenServiceTokenConnectionZSideAccessPointSelectorLinkProtocol:ServiceTokenServiceTokenConnectionZSideAccessPointSelectorLinkProtocol":{"properties":{"type":{"type":"string","description":"Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN\n"},"vlanCTag":{"type":"integer","description":"Vlan Customer Tag information, vlanCTag value specified for QINQ connections\n"},"vlanSTag":{"type":"integer","description":"Vlan Provider Tag information, vlanSTag value specified for QINQ connections\n"},"vlanTag":{"type":"integer","description":"Vlan Tag information, vlanTag value specified for DOT1Q connections\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["type","vlanCTag","vlanSTag","vlanTag"]}}},"equinix:fabric/ServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetwork:ServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetwork":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"locations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetworkLocation:ServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetworkLocation"},"description":"Location\n"},"name":{"type":"string","description":"Network Name\n"},"scope":{"type":"string","description":"Scope of Network\n"},"type":{"type":"string","description":"Type of Network\n"},"uuid":{"type":"string","description":"Equinix-assigned Network identifier\n"}},"type":"object","required":["uuid"],"language":{"nodejs":{"requiredOutputs":["href","locations","name","scope","type","uuid"]}}},"equinix:fabric/ServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetworkLocation:ServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetworkLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["ibx","metroCode","metroName","region"]}}},"equinix:fabric/ServiceTokenServiceTokenConnectionZSideAccessPointSelectorPort:ServiceTokenServiceTokenConnectionZSideAccessPointSelectorPort":{"properties":{"accountName":{"type":"string","description":"Account Name\n"},"bandwidth":{"type":"integer","description":"Port Bandwidth\n"},"cvpId":{"type":"integer","description":"Customer virtual port Id\n"},"encapsulationProtocolType":{"type":"string","description":"Port Encapsulation\n"},"href":{"type":"string","description":"Unique Resource Identifier\n"},"locations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnectionZSideAccessPointSelectorPortLocation:ServiceTokenServiceTokenConnectionZSideAccessPointSelectorPortLocation"},"description":"Port Location\n"},"portName":{"type":"string","description":"Port Name\n"},"priority":{"type":"string","description":"Port Priority\n"},"type":{"type":"string","description":"Type of Port\n"},"uuid":{"type":"string","description":"Equinix-assigned Port identifier\n"}},"type":"object","required":["uuid"],"language":{"nodejs":{"requiredOutputs":["accountName","bandwidth","cvpId","encapsulationProtocolType","href","locations","portName","priority","type","uuid"]}}},"equinix:fabric/ServiceTokenServiceTokenConnectionZSideAccessPointSelectorPortLocation:ServiceTokenServiceTokenConnectionZSideAccessPointSelectorPortLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["ibx","metroCode","metroName","region"]}}},"equinix:fabric/ServiceTokenServiceTokenConnectionZSideAccessPointSelectorVirtualDevice:ServiceTokenServiceTokenConnectionZSideAccessPointSelectorVirtualDevice":{"properties":{"cluster":{"type":"string","description":"Virtual Device Cluster Information\n"},"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Customer-assigned Virtual Device Name\n"},"type":{"type":"string","description":"Virtual Device type\n"},"uuid":{"type":"string","description":"Equinix-assigned Virtual Device identifier\n"}},"type":"object","required":["uuid"],"language":{"nodejs":{"requiredOutputs":["cluster","href","name","type","uuid"]}}},"equinix:fabric/StreamAlertRuleChangeLog:StreamAlertRuleChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the stream resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the stream resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the stream resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the stream resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the stream resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the stream resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the stream resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the stream resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the stream resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the stream resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the stream resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the stream resource\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"]}}},"equinix:fabric/StreamAlertRuleDetectionMethod:StreamAlertRuleDetectionMethod":{"properties":{"criticalThreshold":{"type":"string","description":"Stream alert rule metric critical threshold\n"},"operand":{"type":"string","description":"Stream alert rule metric operand\n"},"type":{"type":"string","description":"Stream Alert Rule detection method type\n"},"warningThreshold":{"type":"string","description":"Stream alert rule metric warning threshold\n"},"windowSize":{"type":"string","description":"Stream alert rule metric window size\n"}},"type":"object","required":["type"],"language":{"nodejs":{"requiredOutputs":["criticalThreshold","operand","type","warningThreshold","windowSize"]}}},"equinix:fabric/StreamAlertRuleMetricSelector:StreamAlertRuleMetricSelector":{"properties":{"includes":{"type":"array","items":{"type":"string"},"description":"List of metrics to include\n"}},"type":"object","required":["includes"]},"equinix:fabric/StreamAlertRuleResourceSelector:StreamAlertRuleResourceSelector":{"properties":{"includes":{"type":"array","items":{"type":"string"},"description":"List of metrics to include\n"}},"type":"object","required":["includes"]},"equinix:fabric/StreamAlertRuleTimeouts:StreamAlertRuleTimeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"equinix:fabric/StreamAttachmentTimeouts:StreamAttachmentTimeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"equinix:fabric/StreamChangeLog:StreamChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the stream resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the stream resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the stream resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the stream resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the stream resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the stream resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the stream resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the stream resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the stream resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the stream resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the stream resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the stream resource\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"]}}},"equinix:fabric/StreamProject:StreamProject":{"properties":{"projectId":{"type":"string","description":"Equinix Subscriber-assigned project ID\n"}},"type":"object","required":["projectId"]},"equinix:fabric/StreamSubscriptionChangeLog:StreamSubscriptionChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the stream resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the stream resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the stream resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the stream resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the stream resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the stream resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the stream resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the stream resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the stream resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the stream resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the stream resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the stream resource\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"]}}},"equinix:fabric/StreamSubscriptionEventSelector:StreamSubscriptionEventSelector":{"properties":{"excepts":{"type":"array","items":{"type":"string"},"description":"List of events to exclude\n"},"includes":{"type":"array","items":{"type":"string"},"description":"List of events to include\n"}},"type":"object","required":["includes"],"language":{"nodejs":{"requiredOutputs":["excepts","includes"]}}},"equinix:fabric/StreamSubscriptionMetricSelector:StreamSubscriptionMetricSelector":{"properties":{"excepts":{"type":"array","items":{"type":"string"},"description":"List of metrics to exclude\n"},"includes":{"type":"array","items":{"type":"string"},"description":"List of metrics to include\n"}},"type":"object","required":["includes"],"language":{"nodejs":{"requiredOutputs":["excepts","includes"]}}},"equinix:fabric/StreamSubscriptionSink:StreamSubscriptionSink":{"properties":{"batchEnabled":{"type":"boolean","description":"Boolean switch enabling batch delivery of data\n"},"batchSizeMax":{"type":"integer","description":"Maximum size of the batch delivery if enabled\n"},"batchWaitTimeMax":{"type":"integer","description":"Maximum time to wait for batch delivery if enabled\n"},"credential":{"$ref":"#/types/equinix:fabric/StreamSubscriptionSinkCredential:StreamSubscriptionSinkCredential","description":"Access details for the specified sink type\n"},"host":{"type":"string","description":"Known hostname of certain data stream subscription products. Not to be confused with a variable URI\n"},"settings":{"$ref":"#/types/equinix:fabric/StreamSubscriptionSinkSettings:StreamSubscriptionSinkSettings","description":"Stream subscription sink settings\n"},"type":{"type":"string","description":"Type of the subscriber\n"},"uri":{"type":"string","description":"Publicly reachable http endpoint destination for data stream\n"}},"type":"object","required":["type"],"language":{"nodejs":{"requiredOutputs":["batchEnabled","batchSizeMax","batchWaitTimeMax","credential","host","settings","type","uri"]}}},"equinix:fabric/StreamSubscriptionSinkCredential:StreamSubscriptionSinkCredential":{"properties":{"accessToken":{"type":"string","description":"Passed as Authorization header value\n"},"apiKey":{"type":"string","description":"Passed as Authorization header value\n"},"integrationKey":{"type":"string","description":"Passed as Authorization header value\n"},"password":{"type":"string","description":"Passed as Authorization header value\n"},"type":{"type":"string","description":"Type of the credential being passed\n"},"username":{"type":"string","description":"Passed as Authorization header value\n"}},"type":"object","required":["type"],"language":{"nodejs":{"requiredOutputs":["accessToken","apiKey","integrationKey","password","type","username"]}}},"equinix:fabric/StreamSubscriptionSinkSettings:StreamSubscriptionSinkSettings":{"properties":{"applicationKey":{"type":"string"},"eventIndex":{"type":"string"},"eventUri":{"type":"string"},"format":{"type":"string"},"metricIndex":{"type":"string"},"metricUri":{"type":"string"},"source":{"type":"string"}},"type":"object","language":{"nodejs":{"requiredOutputs":["applicationKey","eventIndex","eventUri","format","metricIndex","metricUri","source"]}}},"equinix:fabric/StreamSubscriptionTimeouts:StreamSubscriptionTimeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"equinix:fabric/StreamTimeouts:StreamTimeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"equinix:fabric/accessPointLinkProtocolType:AccessPointLinkProtocolType":{"type":"string","enum":[{"name":"Untagged","value":"UNTAGGED"},{"name":"Dot1q","value":"DOT1Q"},{"name":"QinQ","value":"QINQ"},{"name":"EVPN_VXLAN","value":"EVPN_VXLAN"}]},"equinix:fabric/accessPointPeeringType:AccessPointPeeringType":{"type":"string","enum":[{"name":"Private","value":"PRIVATE"},{"name":"Microsoft","value":"MICROSOFT"},{"name":"Public","value":"PUBLIC"}]},"equinix:fabric/accessPointType:AccessPointType":{"type":"string","enum":[{"name":"Colo","description":"Colocation","value":"COLO"},{"name":"VD","description":"Virtual Device","value":"VD"},{"name":"SP","description":"Service Profile","value":"SP"},{"name":"IGW","description":"Internet Gateway","value":"IGW"},{"name":"Subnet","description":"Subnet","value":"SUBNET"},{"name":"GW","description":"Gateway","value":"GW"},{"name":"Network","description":"Network","value":"NETWORK"}]},"equinix:fabric/connectionType:ConnectionType":{"type":"string","enum":[{"name":"VG","description":"Virtual Gateway","value":"VG_VC"},{"name":"EVPL","description":"Ethernet Virtual Private Line","value":"EVPL_VC"},{"name":"EPL","description":"Ethernet Private Line","value":"EPL_VC"},{"name":"GW","description":"Fabric Gateway virtual connection","value":"GW_VC"},{"name":"AccessEPL","description":"E-access, layer 2 connection between a QINQ port and an EPL port.","value":"ACCESS_EPL_VC"}]},"equinix:fabric/getAdvertisedRoutesData:getAdvertisedRoutesData":{"properties":{"asPaths":{"type":"array","items":{"type":"string"},"description":"List of supported AS Paths for the Advertised Routes.\n"},"changeLog":{"$ref":"#/types/equinix:fabric/getAdvertisedRoutesDataChangeLog:getAdvertisedRoutesDataChangeLog","description":"Change Log of the route table entry\n"},"connection":{"$ref":"#/types/equinix:fabric/getAdvertisedRoutesDataConnection:getAdvertisedRoutesDataConnection","description":"connection of the route table entry\n"},"localPreference":{"type":"integer","description":"This field holds local preference of the advertised route.\n"},"med":{"type":"integer","description":"Multi-Exit Discriminator for the Advertised Route\n"},"nextHop":{"type":"string","description":"Next Hop of the Advertised Route\n"},"prefix":{"type":"string","description":"Prefix of the Advertised Route\n"},"protocolType":{"type":"string","description":"Advertised Route protocol type\n"},"state":{"type":"string","description":"State of the advertised Route\n"},"type":{"type":"string","description":"Indicator of a advertised route\n"}},"type":"object","required":["asPaths","changeLog","connection","localPreference","med","nextHop","prefix","protocolType","state","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getAdvertisedRoutesDataChangeLog:getAdvertisedRoutesDataChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by User Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by User Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by User Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getAdvertisedRoutesDataConnection:getAdvertisedRoutesDataConnection":{"properties":{"href":{"type":"string","description":"HREF of the Connection\n"},"name":{"type":"string","description":"Name of the Connection\n"},"uuid":{"type":"string","description":"UUID of the Connection\n"}},"type":"object","required":["href","name","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getAdvertisedRoutesFilter:getAdvertisedRoutesFilter":{"properties":{"operator":{"type":"string","description":"Operators to use on your filtered field with the values given. One of [ =, !=, \u003e, \u003e=, \u003c, \u003c=, BETWEEN, NOT BETWEEN, LIKE, NOT LIKE, IN, NOT IN, IS NOT NULL, IS NULL]\n"},"property":{"type":"string","description":"possible field names to use on filters. One of [/type /name /project/projectId /uuid /state]\n"},"values":{"type":"array","items":{"type":"string"},"description":"The values that you want to apply the property+operator combination to in order to filter your data search\n"}},"type":"object","required":["operator","property","values"]},"equinix:fabric/getAdvertisedRoutesPagination:getAdvertisedRoutesPagination":{"properties":{"limit":{"type":"integer","description":"Maximum number of search results returned per page.\n"},"next":{"type":"string","description":"URL relative to the next item in the response.\n"},"offset":{"type":"integer","description":"Index of the first item returned in the response.\n"},"previous":{"type":"string","description":"URL relative to the previous item in the response.\n"},"total":{"type":"integer","description":"The total number of elements returned\n"}},"type":"object","required":["next","previous","total"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getAdvertisedRoutesSort:getAdvertisedRoutesSort":{"properties":{"direction":{"type":"string","description":"Sort direction, one of [ASC, DESC]\n"},"property":{"type":"string","description":"Property name to sort by\n"}},"type":"object"},"equinix:fabric/getCloudRouterAccount:getCloudRouterAccount":{"properties":{"accountNumber":{"type":"integer","description":"Account Number\n"}},"type":"object","required":["accountNumber"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRouterChangeLog:getCloudRouterChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRouterLocation:getCloudRouterLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRouterMarketplaceSubscription:getCloudRouterMarketplaceSubscription":{"properties":{"type":{"type":"string","description":"Marketplace Subscription type like; AWS_MARKETPLACE_SUBSCRIPTION\n"},"uuid":{"type":"string","description":"Equinix-assigned Marketplace Subscription identifier\n"}},"type":"object","required":["type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRouterNotification:getCloudRouterNotification":{"properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"sendInterval":{"type":"string","description":"Send interval\n"},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS\n"}},"type":"object","required":["emails","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRouterOrder:getCloudRouterOrder":{"properties":{"billingTier":{"type":"string","description":"Billing tier for connection bandwidth\n"},"orderId":{"type":"string","description":"Order Identification\n"},"orderNumber":{"type":"string","description":"Order Reference Number\n"},"purchaseOrderNumber":{"type":"string","description":"Purchase order number\n"},"termLength":{"type":"integer","description":"Term length in months; valid values are 1, 12, 24, 36 where 1 is the default value (for on-demand case)\n"}},"type":"object","required":["billingTier","orderId","orderNumber","purchaseOrderNumber"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRouterPackage:getCloudRouterPackage":{"properties":{"code":{"type":"string","description":"Fabric Cloud Router package code\n"}},"type":"object","required":["code"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRouterProject:getCloudRouterProject":{"properties":{"href":{"type":"string","description":"Unique Resource URL\n"},"projectId":{"type":"string","description":"Project Id\n"}},"type":"object","required":["href","projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRoutersData:getCloudRoutersData":{"properties":{"accounts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getCloudRoutersDataAccount:getCloudRoutersDataAccount"},"description":"Customer account information that is associated with this Fabric Cloud Router\n"},"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getCloudRoutersDataChangeLog:getCloudRoutersDataChangeLog"},"description":"Captures Fabric Cloud Router lifecycle change information\n"},"connectionsCount":{"type":"integer","description":"Number of connections associated with this Fabric Cloud Router instance\n"},"description":{"type":"string","description":"Customer-provided Fabric Cloud Router description\n"},"equinixAsn":{"type":"integer","description":"Equinix ASN\n"},"href":{"type":"string","description":"Fabric Cloud Router URI information\n"},"locations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getCloudRoutersDataLocation:getCloudRoutersDataLocation"},"description":"Fabric Cloud Router location\n"},"marketplaceSubscriptions":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getCloudRoutersDataMarketplaceSubscription:getCloudRoutersDataMarketplaceSubscription"},"description":"Equinix Fabric Entity for Marketplace Subscription\n"},"name":{"type":"string","description":"Fabric Cloud Router name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getCloudRoutersDataNotification:getCloudRoutersDataNotification"},"description":"Preferences for notifications on Fabric Cloud Router configuration or status changes\n"},"orders":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getCloudRoutersDataOrder:getCloudRoutersDataOrder"},"description":"Order information related to this Fabric Cloud Router\n"},"packages":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getCloudRoutersDataPackage:getCloudRoutersDataPackage"},"description":"Fabric Cloud Router Package Type\n"},"projects":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getCloudRoutersDataProject:getCloudRoutersDataProject"},"description":"Customer resource hierarchy project information. Applicable to customers onboarded to Equinix Identity and Access Management. For more information see Identity and Access Management: Projects\n"},"state":{"type":"string","description":"Fabric Cloud Router overall state\n"},"type":{"type":"string","description":"Defines the FCR type like; XF_ROUTER\n"},"uuid":{"type":"string","description":"Equinix-assigned Fabric Cloud Router identifier\n"}},"type":"object","required":["accounts","changeLogs","connectionsCount","description","equinixAsn","href","locations","marketplaceSubscriptions","name","notifications","orders","packages","projects","state","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRoutersDataAccount:getCloudRoutersDataAccount":{"properties":{"accountNumber":{"type":"integer","description":"Account Number\n"}},"type":"object","required":["accountNumber"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRoutersDataChangeLog:getCloudRoutersDataChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRoutersDataLocation:getCloudRoutersDataLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRoutersDataMarketplaceSubscription:getCloudRoutersDataMarketplaceSubscription":{"properties":{"type":{"type":"string","description":"Marketplace Subscription type like; AWS_MARKETPLACE_SUBSCRIPTION\n"},"uuid":{"type":"string","description":"Equinix-assigned Marketplace Subscription identifier\n"}},"type":"object","required":["type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRoutersDataNotification:getCloudRoutersDataNotification":{"properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"sendInterval":{"type":"string","description":"Send interval\n"},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS\n"}},"type":"object","required":["emails","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRoutersDataOrder:getCloudRoutersDataOrder":{"properties":{"billingTier":{"type":"string","description":"Billing tier for connection bandwidth\n"},"orderId":{"type":"string","description":"Order Identification\n"},"orderNumber":{"type":"string","description":"Order Reference Number\n"},"purchaseOrderNumber":{"type":"string","description":"Purchase order number\n"},"termLength":{"type":"integer","description":"Term length in months; valid values are 1, 12, 24, 36 where 1 is the default value (for on-demand case)\n"}},"type":"object","required":["billingTier","orderId","orderNumber","purchaseOrderNumber"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRoutersDataPackage:getCloudRoutersDataPackage":{"properties":{"code":{"type":"string","description":"Fabric Cloud Router package code\n"}},"type":"object","required":["code"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRoutersDataProject:getCloudRoutersDataProject":{"properties":{"href":{"type":"string","description":"Unique Resource URL\n"},"projectId":{"type":"string","description":"Project Id\n"}},"type":"object","required":["href","projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getCloudRoutersFilter:getCloudRoutersFilter":{"properties":{"operator":{"type":"string","description":"Possible operators to use on the filter property. Can be one of the following: [= - equal, != - not equal, \u003e - greater than, \u003e= - greater than or equal to, \u003c - less than, \u003c= - less than or equal to, [NOT] BETWEEN - (not) between, [NOT] LIKE - (not) like, [NOT] IN - (not) in\n"},"or":{"type":"boolean","description":"Boolean flag indicating whether this filter is included in the OR group. There can only be one OR group and it can have a maximum of 3 filters. The OR group only counts as 1 of the 8 possible filters\n"},"property":{"type":"string","description":"The API response property which you want to filter your request on. Can be one of the following: \"/project/projectId\", \"/name\", \"/uuid\", \"/state\", \"/location/metroCode\", \"/location/metroName\", \"/package/code\", \"/*\"\n"},"values":{"type":"array","items":{"type":"string"},"description":"The values that you want to apply the property+operator combination to in order to filter your data search\n"}},"type":"object","required":["operator","property","values"]},"equinix:fabric/getCloudRoutersPagination:getCloudRoutersPagination":{"properties":{"limit":{"type":"integer","description":"Number of elements to be requested per page. Number must be between 1 and 100. Default is 20\n"},"offset":{"type":"integer","description":"The page offset for the pagination request. Index of the first element. Default is 0.\n"}},"type":"object"},"equinix:fabric/getCloudRoutersSort:getCloudRoutersSort":{"properties":{"direction":{"type":"string","description":"The sorting direction. Can be one of: [DESC, ASC], Defaults to DESC\n"},"property":{"type":"string","description":"The property name to use in sorting. Can be one of the following: [/name, /uuid, /state, /location/metroCode, /location/metroName, /package/code, /changeLog/createdDateTime, /changeLog/updatedDateTime], Defaults to /changeLog/updatedDateTime\n"}},"type":"object"},"equinix:fabric/getConnectionASide:getConnectionASide":{"properties":{"accessPoint":{"$ref":"#/types/equinix:fabric/getConnectionASideAccessPoint:getConnectionASideAccessPoint","description":"Point of access details\n"},"additionalInfos":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionASideAdditionalInfo:getConnectionASideAdditionalInfo"},"description":"Connection side additional information\n"},"serviceToken":{"$ref":"#/types/equinix:fabric/getConnectionASideServiceToken:getConnectionASideServiceToken","description":"For service token based connections, Service tokens authorize users to access protected resources and services. Resource owners can distribute the tokens to trusted partners and vendors, allowing selected third parties to work directly with Equinix network assets\n"}},"type":"object"},"equinix:fabric/getConnectionASideAccessPoint:getConnectionASideAccessPoint":{"properties":{"accounts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionASideAccessPointAccount:getConnectionASideAccessPointAccount"},"description":"Account\n"},"authenticationKey":{"type":"string","description":"Authentication key for provider based connections or Metal-Fabric Integration connections\n"},"gateway":{"$ref":"#/types/equinix:fabric/getConnectionASideAccessPointGateway:getConnectionASideAccessPointGateway","description":"**Deprecated** `gateway` Use `router` attribute instead\n","deprecationMessage":"use router attribute instead; gateway is no longer a part of the supported backend"},"interface":{"$ref":"#/types/equinix:fabric/getConnectionASideAccessPointInterface:getConnectionASideAccessPointInterface","description":"Virtual device interface\n"},"linkProtocol":{"$ref":"#/types/equinix:fabric/getConnectionASideAccessPointLinkProtocol:getConnectionASideAccessPointLinkProtocol","description":"Connection link protocol\n"},"location":{"$ref":"#/types/equinix:fabric/getConnectionASideAccessPointLocation:getConnectionASideAccessPointLocation","description":"Access point location\n"},"network":{"$ref":"#/types/equinix:fabric/getConnectionASideAccessPointNetwork:getConnectionASideAccessPointNetwork","description":"network access point information\n"},"peeringType":{"type":"string","description":"Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL\n"},"port":{"$ref":"#/types/equinix:fabric/getConnectionASideAccessPointPort:getConnectionASideAccessPointPort","description":"Port access point information\n"},"profile":{"$ref":"#/types/equinix:fabric/getConnectionASideAccessPointProfile:getConnectionASideAccessPointProfile","description":"Service Profile\n"},"providerConnectionId":{"type":"string","description":"Provider assigned Connection Id\n"},"role":{"type":"string","description":"Network role\n"},"router":{"$ref":"#/types/equinix:fabric/getConnectionASideAccessPointRouter:getConnectionASideAccessPointRouter","description":"Cloud Router access point information that replaces `gateway`\n"},"sellerRegion":{"type":"string","description":"Access point seller region\n"},"type":{"type":"string","description":"Access point type - COLO, VD, VG, SP, IGW, SUBNET, CLOUD_ROUTER, NETWORK, METAL_NETWORK\n"},"virtualDevice":{"$ref":"#/types/equinix:fabric/getConnectionASideAccessPointVirtualDevice:getConnectionASideAccessPointVirtualDevice","description":"Virtual device\n"}},"type":"object","required":["accounts","location","providerConnectionId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionASideAccessPointAccount:getConnectionASideAccessPointAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","required":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionASideAccessPointGateway:getConnectionASideAccessPointGateway":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier\n"}},"type":"object","required":["href"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionASideAccessPointInterface:getConnectionASideAccessPointInterface":{"properties":{"id":{"type":"integer","description":"id\n"},"type":{"type":"string","description":"Interface type\n"},"uuid":{"type":"string","description":"Equinix-assigned interface identifier\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionASideAccessPointLinkProtocol:getConnectionASideAccessPointLinkProtocol":{"properties":{"type":{"type":"string","description":"Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN\n"},"vlanCTag":{"type":"integer","description":"Vlan Customer Tag information, vlanCTag value specified for QINQ connections\n"},"vlanSTag":{"type":"integer","description":"Vlan Provider Tag information, vlanSTag value specified for QINQ connections\n"},"vlanTag":{"type":"integer","description":"Vlan Tag information, vlanTag value specified for DOT1Q connections\n"}},"type":"object","required":["vlanCTag","vlanSTag","vlanTag"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionASideAccessPointLocation:getConnectionASideAccessPointLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionASideAccessPointNetwork:getConnectionASideAccessPointNetwork":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned Network identifier\n"}},"type":"object","required":["href","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionASideAccessPointPort:getConnectionASideAccessPointPort":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Port name\n"},"redundancies":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionASideAccessPointPortRedundancy:getConnectionASideAccessPointPortRedundancy"},"description":"Redundancy Information\n"},"uuid":{"type":"string","description":"Equinix-assigned Port identifier\n"}},"type":"object","required":["href","name","redundancies","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionASideAccessPointPortRedundancy:getConnectionASideAccessPointPortRedundancy":{"properties":{"enabled":{"type":"boolean","description":"Access point redundancy\n"},"group":{"type":"string","description":"Port redundancy group\n"},"priority":{"type":"string","description":"Priority type-Primary or Secondary\n"}},"type":"object","required":["enabled","group","priority"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionASideAccessPointProfile:getConnectionASideAccessPointProfile":{"properties":{"accessPointTypeConfigs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionASideAccessPointProfileAccessPointTypeConfig:getConnectionASideAccessPointProfileAccessPointTypeConfig"},"description":"Access point config information\n"},"description":{"type":"string","description":"User-provided service description\n"},"href":{"type":"string","description":"Service Profile URI response attribute\n"},"name":{"type":"string","description":"Customer-assigned service profile name\n"},"type":{"type":"string","description":"Service profile type - L2_PROFILE, L3_PROFILE, ECIA_PROFILE, ECMC_PROFILE, IA_PROFILE\n"},"uuid":{"type":"string","description":"Equinix assigned service profile identifier\n"}},"type":"object","required":["accessPointTypeConfigs","description","href","name","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionASideAccessPointProfileAccessPointTypeConfig:getConnectionASideAccessPointProfileAccessPointTypeConfig":{"properties":{"type":{"type":"string","description":"Type of access point type config - VD, COLO\n"},"uuid":{"type":"string","description":"Equinix-assigned access point type config identifier\n"}},"type":"object","required":["type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionASideAccessPointRouter:getConnectionASideAccessPointRouter":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier\n"}},"type":"object","required":["href"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionASideAccessPointVirtualDevice:getConnectionASideAccessPointVirtualDevice":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Customer-assigned Virtual Device Name\n"},"type":{"type":"string","description":"Virtual Device type\n"},"uuid":{"type":"string","description":"Equinix-assigned Virtual Device identifier\n"}},"type":"object","required":["href","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionASideAdditionalInfo:getConnectionASideAdditionalInfo":{"properties":{"key":{"type":"string","description":"Additional information key\n"},"value":{"type":"string","description":"Additional information value\n"}},"type":"object"},"equinix:fabric/getConnectionASideServiceToken:getConnectionASideServiceToken":{"properties":{"description":{"type":"string","description":"Service token description\n"},"href":{"type":"string","description":"An absolute URL that is the subject of the link's context\n"},"type":{"type":"string","description":"Token type - VC_TOKEN\n"},"uuid":{"type":"string","description":"Equinix-assigned service token identifier\n"}},"type":"object","required":["description","href"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionAccount:getConnectionAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","required":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionChangeLog:getConnectionChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionNotification:getConnectionNotification":{"properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"sendInterval":{"type":"string","description":"Send interval\n"},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS\n"}},"type":"object","required":["emails","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionOperation:getConnectionOperation":{"properties":{"equinixStatus":{"type":"string","description":"Connection status\n"},"errors":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionOperationError:getConnectionOperationError"},"description":"Errors occurred\n"},"providerStatus":{"type":"string","description":"Connection provider readiness status\n"}},"type":"object","required":["equinixStatus","errors","providerStatus"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionOperationError:getConnectionOperationError":{"properties":{"additionalInfos":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionOperationErrorAdditionalInfo:getConnectionOperationErrorAdditionalInfo"},"description":"Pricing error additional Info\n"},"correlationId":{"type":"string","description":"CorrelationId\n"},"details":{"type":"string","description":"Details\n"},"errorCode":{"type":"string","description":"Error  code\n"},"errorMessage":{"type":"string","description":"Error Message\n"},"help":{"type":"string","description":"Help\n"}},"type":"object","required":["additionalInfos","correlationId","details","errorCode","errorMessage","help"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionOperationErrorAdditionalInfo:getConnectionOperationErrorAdditionalInfo":{"properties":{"property":{"type":"string","description":"Property at which the error potentially occurred\n"},"reason":{"type":"string","description":"Reason for the error\n"}},"type":"object","required":["property","reason"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionOrder:getConnectionOrder":{"properties":{"billingTier":{"type":"string","description":"Billing tier for connection bandwidth\n"},"orderId":{"type":"string","description":"Order Identification\n"},"orderNumber":{"type":"string","description":"Order Reference Number\n"},"purchaseOrderNumber":{"type":"string","description":"Purchase order number\n"},"termLength":{"type":"integer","description":"Term length in months; valid values are 1, 12, 24, 36 where 1 is the default value (for on-demand case)\n"}},"type":"object","required":["billingTier","orderId","orderNumber","purchaseOrderNumber"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionProject:getConnectionProject":{"properties":{"href":{"type":"string","description":"Unique Resource URL\n"},"projectId":{"type":"string","description":"Project Id\n"}},"type":"object","required":["href","projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionRedundancy:getConnectionRedundancy":{"properties":{"group":{"type":"string","description":"Redundancy group identifier (Use the redundancy.0.group UUID of primary connection; e.g. one(equinix_fabric_connection.primary_port_connection.redundancy).group or equinix_fabric_connection.primary_port_connection.redundancy.0.group)\n"},"priority":{"type":"string","description":"Connection priority in redundancy group - PRIMARY, SECONDARY\n"}},"type":"object","required":["group","priority"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionRouteAggregationsData:getConnectionRouteAggregationsData":{"properties":{"attachmentStatus":{"type":"string","description":"Status of the Route Aggregation Policy attachment lifecycle\n"},"connectionId":{"type":"string","description":"UUID of the Connection to attach this Route Aggregation to\n"},"href":{"type":"string","description":"URI to the attached Route Aggregation Policy on the Connection\n"},"routeAggregationId":{"type":"string","description":"UUID of the Route Aggregation to attach this Connection to\n"},"type":{"type":"string","description":"Route Aggregation Type. One of [\"BGP*IPv4*PREFIX_AGGREGATION\"]\n"},"uuid":{"type":"string","description":"Equinix Assigned ID for Route Aggregation Policy\n"}},"type":"object","required":["attachmentStatus","connectionId","href","routeAggregationId","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionRouteAggregationsPagination:getConnectionRouteAggregationsPagination":{"properties":{"limit":{"type":"integer","description":"Maximum number of search results returned per page. Number must be between 1 and 100, and the default is 20\n"},"next":{"type":"string","description":"The URL relative to the next item in the response\n"},"offset":{"type":"integer","description":"Index of the first item returned in the response. The default is 0\n"},"previous":{"type":"string","description":"The URL relative to the previous item in the response\n"},"total":{"type":"integer","description":"The total number of connection route aggregations available to the user making the request\n"}},"type":"object","required":["limit","next","offset","previous","total"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionRouteFiltersData:getConnectionRouteFiltersData":{"properties":{"attachmentStatus":{"type":"string","description":"Status of the Route Filter Policy attachment lifecycle\n"},"direction":{"type":"string","description":"Direction of the filtering of the attached Route Filter Policy\n"},"href":{"type":"string","description":"URI to the attached Route Filter Policy on the Connection\n"},"type":{"type":"string","description":"Route Filter Type. One of [ \"BGP_IPv4_PREFIX_FILTER\", \"BGP_IPv6_PREFIX_FILTER\" ]\n"},"uuid":{"type":"string","description":"Equinix Assigned ID for Route Filter Policy\n"}},"type":"object","required":["attachmentStatus","direction","href","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionRouteFiltersPagination:getConnectionRouteFiltersPagination":{"properties":{"limit":{"type":"integer","description":"Number of elements to be requested per page. Number must be between 1 and 100. Default is 20\n"},"next":{"type":"string","description":"URL relative to the last item in the response.\n"},"offset":{"type":"integer","description":"The page offset for the pagination request. Index of the first element. Default is 0.\n"},"previous":{"type":"string","description":"URL relative to the first item in the response.\n"},"total":{"type":"integer","description":"Total number of elements returned.\n"}},"type":"object","required":["limit","next","offset","previous","total"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionZSide:getConnectionZSide":{"properties":{"accessPoint":{"$ref":"#/types/equinix:fabric/getConnectionZSideAccessPoint:getConnectionZSideAccessPoint","description":"Point of access details\n"},"additionalInfos":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionZSideAdditionalInfo:getConnectionZSideAdditionalInfo"},"description":"Connection side additional information\n"},"serviceToken":{"$ref":"#/types/equinix:fabric/getConnectionZSideServiceToken:getConnectionZSideServiceToken","description":"For service token based connections, Service tokens authorize users to access protected resources and services. Resource owners can distribute the tokens to trusted partners and vendors, allowing selected third parties to work directly with Equinix network assets\n"}},"type":"object"},"equinix:fabric/getConnectionZSideAccessPoint:getConnectionZSideAccessPoint":{"properties":{"accounts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionZSideAccessPointAccount:getConnectionZSideAccessPointAccount"},"description":"Account\n"},"authenticationKey":{"type":"string","description":"Authentication key for provider based connections or Metal-Fabric Integration connections\n"},"gateway":{"$ref":"#/types/equinix:fabric/getConnectionZSideAccessPointGateway:getConnectionZSideAccessPointGateway","description":"**Deprecated** `gateway` Use `router` attribute instead\n","deprecationMessage":"use router attribute instead; gateway is no longer a part of the supported backend"},"interface":{"$ref":"#/types/equinix:fabric/getConnectionZSideAccessPointInterface:getConnectionZSideAccessPointInterface","description":"Virtual device interface\n"},"linkProtocol":{"$ref":"#/types/equinix:fabric/getConnectionZSideAccessPointLinkProtocol:getConnectionZSideAccessPointLinkProtocol","description":"Connection link protocol\n"},"location":{"$ref":"#/types/equinix:fabric/getConnectionZSideAccessPointLocation:getConnectionZSideAccessPointLocation","description":"Access point location\n"},"network":{"$ref":"#/types/equinix:fabric/getConnectionZSideAccessPointNetwork:getConnectionZSideAccessPointNetwork","description":"network access point information\n"},"peeringType":{"type":"string","description":"Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL\n"},"port":{"$ref":"#/types/equinix:fabric/getConnectionZSideAccessPointPort:getConnectionZSideAccessPointPort","description":"Port access point information\n"},"profile":{"$ref":"#/types/equinix:fabric/getConnectionZSideAccessPointProfile:getConnectionZSideAccessPointProfile","description":"Service Profile\n"},"providerConnectionId":{"type":"string","description":"Provider assigned Connection Id\n"},"role":{"type":"string","description":"Network role\n"},"router":{"$ref":"#/types/equinix:fabric/getConnectionZSideAccessPointRouter:getConnectionZSideAccessPointRouter","description":"Cloud Router access point information that replaces `gateway`\n"},"sellerRegion":{"type":"string","description":"Access point seller region\n"},"type":{"type":"string","description":"Access point type - COLO, VD, VG, SP, IGW, SUBNET, CLOUD_ROUTER, NETWORK, METAL_NETWORK\n"},"virtualDevice":{"$ref":"#/types/equinix:fabric/getConnectionZSideAccessPointVirtualDevice:getConnectionZSideAccessPointVirtualDevice","description":"Virtual device\n"}},"type":"object","required":["accounts","location","providerConnectionId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionZSideAccessPointAccount:getConnectionZSideAccessPointAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","required":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionZSideAccessPointGateway:getConnectionZSideAccessPointGateway":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier\n"}},"type":"object","required":["href"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionZSideAccessPointInterface:getConnectionZSideAccessPointInterface":{"properties":{"id":{"type":"integer","description":"id\n"},"type":{"type":"string","description":"Interface type\n"},"uuid":{"type":"string","description":"Equinix-assigned interface identifier\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionZSideAccessPointLinkProtocol:getConnectionZSideAccessPointLinkProtocol":{"properties":{"type":{"type":"string","description":"Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN\n"},"vlanCTag":{"type":"integer","description":"Vlan Customer Tag information, vlanCTag value specified for QINQ connections\n"},"vlanSTag":{"type":"integer","description":"Vlan Provider Tag information, vlanSTag value specified for QINQ connections\n"},"vlanTag":{"type":"integer","description":"Vlan Tag information, vlanTag value specified for DOT1Q connections\n"}},"type":"object","required":["vlanCTag","vlanSTag","vlanTag"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionZSideAccessPointLocation:getConnectionZSideAccessPointLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionZSideAccessPointNetwork:getConnectionZSideAccessPointNetwork":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned Network identifier\n"}},"type":"object","required":["href","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionZSideAccessPointPort:getConnectionZSideAccessPointPort":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Port name\n"},"redundancies":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionZSideAccessPointPortRedundancy:getConnectionZSideAccessPointPortRedundancy"},"description":"Redundancy Information\n"},"uuid":{"type":"string","description":"Equinix-assigned Port identifier\n"}},"type":"object","required":["href","name","redundancies","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionZSideAccessPointPortRedundancy:getConnectionZSideAccessPointPortRedundancy":{"properties":{"enabled":{"type":"boolean","description":"Access point redundancy\n"},"group":{"type":"string","description":"Port redundancy group\n"},"priority":{"type":"string","description":"Priority type-Primary or Secondary\n"}},"type":"object","required":["enabled","group","priority"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionZSideAccessPointProfile:getConnectionZSideAccessPointProfile":{"properties":{"accessPointTypeConfigs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionZSideAccessPointProfileAccessPointTypeConfig:getConnectionZSideAccessPointProfileAccessPointTypeConfig"},"description":"Access point config information\n"},"description":{"type":"string","description":"User-provided service description\n"},"href":{"type":"string","description":"Service Profile URI response attribute\n"},"name":{"type":"string","description":"Customer-assigned service profile name\n"},"type":{"type":"string","description":"Service profile type - L2_PROFILE, L3_PROFILE, ECIA_PROFILE, ECMC_PROFILE, IA_PROFILE\n"},"uuid":{"type":"string","description":"Equinix assigned service profile identifier\n"}},"type":"object","required":["accessPointTypeConfigs","description","href","name","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionZSideAccessPointProfileAccessPointTypeConfig:getConnectionZSideAccessPointProfileAccessPointTypeConfig":{"properties":{"type":{"type":"string","description":"Type of access point type config - VD, COLO\n"},"uuid":{"type":"string","description":"Equinix-assigned access point type config identifier\n"}},"type":"object","required":["type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionZSideAccessPointRouter:getConnectionZSideAccessPointRouter":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier\n"}},"type":"object","required":["href"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionZSideAccessPointVirtualDevice:getConnectionZSideAccessPointVirtualDevice":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Customer-assigned Virtual Device Name\n"},"type":{"type":"string","description":"Virtual Device type\n"},"uuid":{"type":"string","description":"Equinix-assigned Virtual Device identifier\n"}},"type":"object","required":["href","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionZSideAdditionalInfo:getConnectionZSideAdditionalInfo":{"properties":{"key":{"type":"string","description":"Additional information key\n"},"value":{"type":"string","description":"Additional information value\n"}},"type":"object"},"equinix:fabric/getConnectionZSideServiceToken:getConnectionZSideServiceToken":{"properties":{"description":{"type":"string","description":"Service token description\n"},"href":{"type":"string","description":"An absolute URL that is the subject of the link's context\n"},"type":{"type":"string","description":"Token type - VC_TOKEN\n"},"uuid":{"type":"string","description":"Equinix-assigned service token identifier\n"}},"type":"object","required":["description","href"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsData:getConnectionsData":{"properties":{"aSides":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataASide:getConnectionsDataASide"},"description":"Requester or Customer side connection configuration object of the multi-segment connection\n"},"accounts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataAccount:getConnectionsDataAccount"},"description":"Customer account information that is associated with this connection\n"},"additionalInfos":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"description":"Connection additional information\n"},"bandwidth":{"type":"integer","description":"Connection bandwidth in Mbps\n"},"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataChangeLog:getConnectionsDataChangeLog"},"description":"Captures connection lifecycle change information\n"},"description":{"type":"string","description":"Customer-provided connection description\n"},"direction":{"type":"string","description":"Connection directionality from the requester point of view\n"},"href":{"type":"string","description":"Connection URI information\n"},"isRemote":{"type":"boolean","description":"Connection property derived from access point locations\n"},"name":{"type":"string","description":"Connection name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataNotification:getConnectionsDataNotification"},"description":"Preferences for notifications on connection configuration or status changes\n"},"operations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataOperation:getConnectionsDataOperation"},"description":"Connection type-specific operational data\n"},"orders":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataOrder:getConnectionsDataOrder"},"description":"Order details\n"},"projects":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataProject:getConnectionsDataProject"},"description":"Project information\n"},"redundancies":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataRedundancy:getConnectionsDataRedundancy"},"description":"Connection Redundancy Configuration\n"},"state":{"type":"string","description":"Connection overall state\n"},"type":{"type":"string","description":"Defines the connection type like EVPL_VC, EPL_VC, IPWAN_VC, IP_VC, ACCESS_EPL_VC, EVPLAN_VC, EPLAN_VC, EIA_VC, IA_VC, EC_VC\n"},"uuid":{"type":"string","description":"Equinix-assigned connection identifier\n"},"zSides":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataZSide:getConnectionsDataZSide"},"description":"Destination or Provider side connection configuration object of the multi-segment connection\n"}},"type":"object","required":["aSides","accounts","additionalInfos","bandwidth","changeLogs","description","direction","href","isRemote","name","notifications","operations","orders","projects","redundancies","state","type","uuid","zSides"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataASide:getConnectionsDataASide":{"properties":{"accessPoint":{"$ref":"#/types/equinix:fabric/getConnectionsDataASideAccessPoint:getConnectionsDataASideAccessPoint","description":"Point of access details\n"},"additionalInfos":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataASideAdditionalInfo:getConnectionsDataASideAdditionalInfo"},"description":"Connection side additional information\n"},"serviceToken":{"$ref":"#/types/equinix:fabric/getConnectionsDataASideServiceToken:getConnectionsDataASideServiceToken","description":"For service token based connections, Service tokens authorize users to access protected resources and services. Resource owners can distribute the tokens to trusted partners and vendors, allowing selected third parties to work directly with Equinix network assets\n"}},"type":"object"},"equinix:fabric/getConnectionsDataASideAccessPoint:getConnectionsDataASideAccessPoint":{"properties":{"accounts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataASideAccessPointAccount:getConnectionsDataASideAccessPointAccount"},"description":"Account\n"},"authenticationKey":{"type":"string","description":"Authentication key for provider based connections or Metal-Fabric Integration connections\n"},"gateway":{"$ref":"#/types/equinix:fabric/getConnectionsDataASideAccessPointGateway:getConnectionsDataASideAccessPointGateway","description":"**Deprecated** `gateway` Use `router` attribute instead\n","deprecationMessage":"use router attribute instead; gateway is no longer a part of the supported backend"},"interface":{"$ref":"#/types/equinix:fabric/getConnectionsDataASideAccessPointInterface:getConnectionsDataASideAccessPointInterface","description":"Virtual device interface\n"},"linkProtocol":{"$ref":"#/types/equinix:fabric/getConnectionsDataASideAccessPointLinkProtocol:getConnectionsDataASideAccessPointLinkProtocol","description":"Connection link protocol\n"},"location":{"$ref":"#/types/equinix:fabric/getConnectionsDataASideAccessPointLocation:getConnectionsDataASideAccessPointLocation","description":"Access point location\n"},"network":{"$ref":"#/types/equinix:fabric/getConnectionsDataASideAccessPointNetwork:getConnectionsDataASideAccessPointNetwork","description":"network access point information\n"},"peeringType":{"type":"string","description":"Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL\n"},"port":{"$ref":"#/types/equinix:fabric/getConnectionsDataASideAccessPointPort:getConnectionsDataASideAccessPointPort","description":"Port access point information\n"},"profile":{"$ref":"#/types/equinix:fabric/getConnectionsDataASideAccessPointProfile:getConnectionsDataASideAccessPointProfile","description":"Service Profile\n"},"providerConnectionId":{"type":"string","description":"Provider assigned Connection Id\n"},"role":{"type":"string","description":"Network role\n"},"router":{"$ref":"#/types/equinix:fabric/getConnectionsDataASideAccessPointRouter:getConnectionsDataASideAccessPointRouter","description":"Cloud Router access point information that replaces `gateway`\n"},"sellerRegion":{"type":"string","description":"Access point seller region\n"},"type":{"type":"string","description":"Access point type - COLO, VD, VG, SP, IGW, SUBNET, CLOUD_ROUTER, NETWORK, METAL_NETWORK\n"},"virtualDevice":{"$ref":"#/types/equinix:fabric/getConnectionsDataASideAccessPointVirtualDevice:getConnectionsDataASideAccessPointVirtualDevice","description":"Virtual device\n"}},"type":"object","required":["accounts","location","providerConnectionId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataASideAccessPointAccount:getConnectionsDataASideAccessPointAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","required":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataASideAccessPointGateway:getConnectionsDataASideAccessPointGateway":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier\n"}},"type":"object","required":["href"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataASideAccessPointInterface:getConnectionsDataASideAccessPointInterface":{"properties":{"id":{"type":"integer","description":"id\n"},"type":{"type":"string","description":"Interface type\n"},"uuid":{"type":"string","description":"Equinix-assigned interface identifier\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataASideAccessPointLinkProtocol:getConnectionsDataASideAccessPointLinkProtocol":{"properties":{"type":{"type":"string","description":"Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN\n"},"vlanCTag":{"type":"integer","description":"Vlan Customer Tag information, vlanCTag value specified for QINQ connections\n"},"vlanSTag":{"type":"integer","description":"Vlan Provider Tag information, vlanSTag value specified for QINQ connections\n"},"vlanTag":{"type":"integer","description":"Vlan Tag information, vlanTag value specified for DOT1Q connections\n"}},"type":"object","required":["vlanCTag","vlanSTag","vlanTag"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataASideAccessPointLocation:getConnectionsDataASideAccessPointLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataASideAccessPointNetwork:getConnectionsDataASideAccessPointNetwork":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned Network identifier\n"}},"type":"object","required":["href","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataASideAccessPointPort:getConnectionsDataASideAccessPointPort":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Port name\n"},"redundancies":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataASideAccessPointPortRedundancy:getConnectionsDataASideAccessPointPortRedundancy"},"description":"Redundancy Information\n"},"uuid":{"type":"string","description":"Equinix-assigned Port identifier\n"}},"type":"object","required":["href","name","redundancies","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataASideAccessPointPortRedundancy:getConnectionsDataASideAccessPointPortRedundancy":{"properties":{"enabled":{"type":"boolean","description":"Access point redundancy\n"},"group":{"type":"string","description":"Port redundancy group\n"},"priority":{"type":"string","description":"Priority type-Primary or Secondary\n"}},"type":"object","required":["enabled","group","priority"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataASideAccessPointProfile:getConnectionsDataASideAccessPointProfile":{"properties":{"accessPointTypeConfigs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataASideAccessPointProfileAccessPointTypeConfig:getConnectionsDataASideAccessPointProfileAccessPointTypeConfig"},"description":"Access point config information\n"},"description":{"type":"string","description":"User-provided service description\n"},"href":{"type":"string","description":"Service Profile URI response attribute\n"},"name":{"type":"string","description":"Customer-assigned service profile name\n"},"type":{"type":"string","description":"Service profile type - L2_PROFILE, L3_PROFILE, ECIA_PROFILE, ECMC_PROFILE, IA_PROFILE\n"},"uuid":{"type":"string","description":"Equinix assigned service profile identifier\n"}},"type":"object","required":["accessPointTypeConfigs","description","href","name","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataASideAccessPointProfileAccessPointTypeConfig:getConnectionsDataASideAccessPointProfileAccessPointTypeConfig":{"properties":{"type":{"type":"string","description":"Type of access point type config - VD, COLO\n"},"uuid":{"type":"string","description":"Equinix-assigned access point type config identifier\n"}},"type":"object","required":["type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataASideAccessPointRouter:getConnectionsDataASideAccessPointRouter":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier\n"}},"type":"object","required":["href"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataASideAccessPointVirtualDevice:getConnectionsDataASideAccessPointVirtualDevice":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Customer-assigned Virtual Device Name\n"},"type":{"type":"string","description":"Virtual Device type\n"},"uuid":{"type":"string","description":"Equinix-assigned Virtual Device identifier\n"}},"type":"object","required":["href","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataASideAdditionalInfo:getConnectionsDataASideAdditionalInfo":{"properties":{"key":{"type":"string","description":"Additional information key\n"},"value":{"type":"string","description":"Additional information value\n"}},"type":"object"},"equinix:fabric/getConnectionsDataASideServiceToken:getConnectionsDataASideServiceToken":{"properties":{"description":{"type":"string","description":"Service token description\n"},"href":{"type":"string","description":"An absolute URL that is the subject of the link's context\n"},"type":{"type":"string","description":"Token type - VC_TOKEN\n"},"uuid":{"type":"string","description":"Equinix-assigned service token identifier\n"}},"type":"object","required":["description","href"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataAccount:getConnectionsDataAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","required":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataChangeLog:getConnectionsDataChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataNotification:getConnectionsDataNotification":{"properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"sendInterval":{"type":"string","description":"Send interval\n"},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS\n"}},"type":"object","required":["emails","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataOperation:getConnectionsDataOperation":{"properties":{"equinixStatus":{"type":"string","description":"Connection status\n"},"errors":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataOperationError:getConnectionsDataOperationError"},"description":"Errors occurred\n"},"providerStatus":{"type":"string","description":"Connection provider readiness status\n"}},"type":"object","required":["equinixStatus","errors","providerStatus"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataOperationError:getConnectionsDataOperationError":{"properties":{"additionalInfos":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataOperationErrorAdditionalInfo:getConnectionsDataOperationErrorAdditionalInfo"},"description":"Pricing error additional Info\n"},"correlationId":{"type":"string","description":"CorrelationId\n"},"details":{"type":"string","description":"Details\n"},"errorCode":{"type":"string","description":"Error  code\n"},"errorMessage":{"type":"string","description":"Error Message\n"},"help":{"type":"string","description":"Help\n"}},"type":"object","required":["additionalInfos","correlationId","details","errorCode","errorMessage","help"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataOperationErrorAdditionalInfo:getConnectionsDataOperationErrorAdditionalInfo":{"properties":{"property":{"type":"string","description":"Property at which the error potentially occurred\n"},"reason":{"type":"string","description":"Reason for the error\n"}},"type":"object","required":["property","reason"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataOrder:getConnectionsDataOrder":{"properties":{"billingTier":{"type":"string","description":"Billing tier for connection bandwidth\n"},"orderId":{"type":"string","description":"Order Identification\n"},"orderNumber":{"type":"string","description":"Order Reference Number\n"},"purchaseOrderNumber":{"type":"string","description":"Purchase order number\n"},"termLength":{"type":"integer","description":"Term length in months; valid values are 1, 12, 24, 36 where 1 is the default value (for on-demand case)\n"}},"type":"object","required":["billingTier","orderId","orderNumber","purchaseOrderNumber"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataProject:getConnectionsDataProject":{"properties":{"href":{"type":"string","description":"Unique Resource URL\n"},"projectId":{"type":"string","description":"Project Id\n"}},"type":"object","required":["href","projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataRedundancy:getConnectionsDataRedundancy":{"properties":{"group":{"type":"string","description":"Redundancy group identifier (Use the redundancy.0.group UUID of primary connection; e.g. one(equinix_fabric_connection.primary_port_connection.redundancy).group or equinix_fabric_connection.primary_port_connection.redundancy.0.group)\n"},"priority":{"type":"string","description":"Connection priority in redundancy group - PRIMARY, SECONDARY\n"}},"type":"object","required":["group","priority"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataZSide:getConnectionsDataZSide":{"properties":{"accessPoint":{"$ref":"#/types/equinix:fabric/getConnectionsDataZSideAccessPoint:getConnectionsDataZSideAccessPoint","description":"Point of access details\n"},"additionalInfos":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataZSideAdditionalInfo:getConnectionsDataZSideAdditionalInfo"},"description":"Connection side additional information\n"},"serviceToken":{"$ref":"#/types/equinix:fabric/getConnectionsDataZSideServiceToken:getConnectionsDataZSideServiceToken","description":"For service token based connections, Service tokens authorize users to access protected resources and services. Resource owners can distribute the tokens to trusted partners and vendors, allowing selected third parties to work directly with Equinix network assets\n"}},"type":"object"},"equinix:fabric/getConnectionsDataZSideAccessPoint:getConnectionsDataZSideAccessPoint":{"properties":{"accounts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataZSideAccessPointAccount:getConnectionsDataZSideAccessPointAccount"},"description":"Account\n"},"authenticationKey":{"type":"string","description":"Authentication key for provider based connections or Metal-Fabric Integration connections\n"},"gateway":{"$ref":"#/types/equinix:fabric/getConnectionsDataZSideAccessPointGateway:getConnectionsDataZSideAccessPointGateway","description":"**Deprecated** `gateway` Use `router` attribute instead\n","deprecationMessage":"use router attribute instead; gateway is no longer a part of the supported backend"},"interface":{"$ref":"#/types/equinix:fabric/getConnectionsDataZSideAccessPointInterface:getConnectionsDataZSideAccessPointInterface","description":"Virtual device interface\n"},"linkProtocol":{"$ref":"#/types/equinix:fabric/getConnectionsDataZSideAccessPointLinkProtocol:getConnectionsDataZSideAccessPointLinkProtocol","description":"Connection link protocol\n"},"location":{"$ref":"#/types/equinix:fabric/getConnectionsDataZSideAccessPointLocation:getConnectionsDataZSideAccessPointLocation","description":"Access point location\n"},"network":{"$ref":"#/types/equinix:fabric/getConnectionsDataZSideAccessPointNetwork:getConnectionsDataZSideAccessPointNetwork","description":"network access point information\n"},"peeringType":{"type":"string","description":"Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL\n"},"port":{"$ref":"#/types/equinix:fabric/getConnectionsDataZSideAccessPointPort:getConnectionsDataZSideAccessPointPort","description":"Port access point information\n"},"profile":{"$ref":"#/types/equinix:fabric/getConnectionsDataZSideAccessPointProfile:getConnectionsDataZSideAccessPointProfile","description":"Service Profile\n"},"providerConnectionId":{"type":"string","description":"Provider assigned Connection Id\n"},"role":{"type":"string","description":"Network role\n"},"router":{"$ref":"#/types/equinix:fabric/getConnectionsDataZSideAccessPointRouter:getConnectionsDataZSideAccessPointRouter","description":"Cloud Router access point information that replaces `gateway`\n"},"sellerRegion":{"type":"string","description":"Access point seller region\n"},"type":{"type":"string","description":"Access point type - COLO, VD, VG, SP, IGW, SUBNET, CLOUD_ROUTER, NETWORK, METAL_NETWORK\n"},"virtualDevice":{"$ref":"#/types/equinix:fabric/getConnectionsDataZSideAccessPointVirtualDevice:getConnectionsDataZSideAccessPointVirtualDevice","description":"Virtual device\n"}},"type":"object","required":["accounts","location","providerConnectionId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataZSideAccessPointAccount:getConnectionsDataZSideAccessPointAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","required":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataZSideAccessPointGateway:getConnectionsDataZSideAccessPointGateway":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier\n"}},"type":"object","required":["href"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataZSideAccessPointInterface:getConnectionsDataZSideAccessPointInterface":{"properties":{"id":{"type":"integer","description":"id\n"},"type":{"type":"string","description":"Interface type\n"},"uuid":{"type":"string","description":"Equinix-assigned interface identifier\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataZSideAccessPointLinkProtocol:getConnectionsDataZSideAccessPointLinkProtocol":{"properties":{"type":{"type":"string","description":"Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN\n"},"vlanCTag":{"type":"integer","description":"Vlan Customer Tag information, vlanCTag value specified for QINQ connections\n"},"vlanSTag":{"type":"integer","description":"Vlan Provider Tag information, vlanSTag value specified for QINQ connections\n"},"vlanTag":{"type":"integer","description":"Vlan Tag information, vlanTag value specified for DOT1Q connections\n"}},"type":"object","required":["vlanCTag","vlanSTag","vlanTag"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataZSideAccessPointLocation:getConnectionsDataZSideAccessPointLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataZSideAccessPointNetwork:getConnectionsDataZSideAccessPointNetwork":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned Network identifier\n"}},"type":"object","required":["href","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataZSideAccessPointPort:getConnectionsDataZSideAccessPointPort":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Port name\n"},"redundancies":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataZSideAccessPointPortRedundancy:getConnectionsDataZSideAccessPointPortRedundancy"},"description":"Redundancy Information\n"},"uuid":{"type":"string","description":"Equinix-assigned Port identifier\n"}},"type":"object","required":["href","name","redundancies","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataZSideAccessPointPortRedundancy:getConnectionsDataZSideAccessPointPortRedundancy":{"properties":{"enabled":{"type":"boolean","description":"Access point redundancy\n"},"group":{"type":"string","description":"Port redundancy group\n"},"priority":{"type":"string","description":"Priority type-Primary or Secondary\n"}},"type":"object","required":["enabled","group","priority"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataZSideAccessPointProfile:getConnectionsDataZSideAccessPointProfile":{"properties":{"accessPointTypeConfigs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsDataZSideAccessPointProfileAccessPointTypeConfig:getConnectionsDataZSideAccessPointProfileAccessPointTypeConfig"},"description":"Access point config information\n"},"description":{"type":"string","description":"User-provided service description\n"},"href":{"type":"string","description":"Service Profile URI response attribute\n"},"name":{"type":"string","description":"Customer-assigned service profile name\n"},"type":{"type":"string","description":"Service profile type - L2_PROFILE, L3_PROFILE, ECIA_PROFILE, ECMC_PROFILE, IA_PROFILE\n"},"uuid":{"type":"string","description":"Equinix assigned service profile identifier\n"}},"type":"object","required":["accessPointTypeConfigs","description","href","name","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataZSideAccessPointProfileAccessPointTypeConfig:getConnectionsDataZSideAccessPointProfileAccessPointTypeConfig":{"properties":{"type":{"type":"string","description":"Type of access point type config - VD, COLO\n"},"uuid":{"type":"string","description":"Equinix-assigned access point type config identifier\n"}},"type":"object","required":["type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataZSideAccessPointRouter:getConnectionsDataZSideAccessPointRouter":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier\n"}},"type":"object","required":["href"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataZSideAccessPointVirtualDevice:getConnectionsDataZSideAccessPointVirtualDevice":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Customer-assigned Virtual Device Name\n"},"type":{"type":"string","description":"Virtual Device type\n"},"uuid":{"type":"string","description":"Equinix-assigned Virtual Device identifier\n"}},"type":"object","required":["href","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsDataZSideAdditionalInfo:getConnectionsDataZSideAdditionalInfo":{"properties":{"key":{"type":"string","description":"Additional information key\n"},"value":{"type":"string","description":"Additional information value\n"}},"type":"object"},"equinix:fabric/getConnectionsDataZSideServiceToken:getConnectionsDataZSideServiceToken":{"properties":{"description":{"type":"string","description":"Service token description\n"},"href":{"type":"string","description":"An absolute URL that is the subject of the link's context\n"},"type":{"type":"string","description":"Token type - VC_TOKEN\n"},"uuid":{"type":"string","description":"Equinix-assigned service token identifier\n"}},"type":"object","required":["description","href"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getConnectionsFilter:getConnectionsFilter":{"properties":{"group":{"type":"string","description":"Optional custom id parameter to assign this filter to an inner AND or OR group. Group id must be prefixed with AND_ or OR_. Ensure intended grouped elements have the same given id. Ungrouped filters will be placed in the filter list group by themselves.\n"},"operator":{"type":"string","description":"Operators to use on your filtered field with the values given. One of [ =, !=, \u003e, \u003e=, \u003c, \u003c=, BETWEEN, NOT BETWEEN, LIKE, NOT LIKE, IN, NOT IN, IS NOT NULL, IS NULL]\n"},"property":{"type":"string","description":"Possible field names to use on filters. One of [/isRemote /name /uuid /type /geoScope /account/orgId /aSide/accessPoint/account/accountName /aSide/accessPoint/account/accountNumber /aSide/accessPoint/router/uuid /aSide/accessPoint/linkProtocol/vlanCTag /aSide/accessPoint/linkProtocol/vlanSTag /aSide/accessPoint/linkProtocol/vlanTagMin /aSide/accessPoint/linkProtocol/vlanTagMax /aSide/accessPoint/location/metroCode /aSide/accessPoint/location/metroName /aSide/accessPoint/name /aSide/accessPoint/port/uuid /aSide/accessPoint/port/name /aSide/accessPoint/type /aSide/accessPoint/virtualDevice/name /aSide/accessPoint/virtualDevice/uuid /aSide/serviceToken/uuid /change/status /operation/equinixStatus /operation/providerStatus /project/projectId /redundancy/group /redundancy/priority /zSide/accessPoint/account/accountName /zSide/accessPoint/authenticationKey /zSide/accessPoint/linkProtocol/vlanCTag /zSide/accessPoint/linkProtocol/vlanSTag /zSide/accessPoint/linkProtocol/vlanTagMin /zSide/accessPoint/linkProtocol/vlanTagMax /zSide/accessPoint/location/metroCode /zSide/accessPoint/location/metroName /zSide/accessPoint/name /zSide/accessPoint/port/uuid /zSide/accessPoint/network/uuid /zSide/accessPoint/port/name /zSide/accessPoint/profile/uuid /zSide/accessPoint/type /zSide/accessPoint/role /zSide/accessPoint/virtualDevice/name /zSide/accessPoint/virtualDevice/uuid /zSide/serviceToken/uuid /zSide/internetAccess/uuid]\n"},"values":{"type":"array","items":{"type":"string"},"description":"The values that you want to apply the property+operator combination to in order to filter your data search\n"}},"type":"object","required":["operator","property","values"]},"equinix:fabric/getConnectionsPagination:getConnectionsPagination":{"properties":{"limit":{"type":"integer","description":"Number of elements to be requested per page. Number must be between 1 and 100. Default is 20\n"},"offset":{"type":"integer","description":"The page offset for the pagination request. Index of the first element. Default is 0.\n"}},"type":"object"},"equinix:fabric/getConnectionsSort:getConnectionsSort":{"properties":{"direction":{"type":"string","description":"The sorting direction. Can be one of: [DESC, ASC], Defaults to DESC\n"},"property":{"type":"string","description":"The property name to use in sorting. One of [/name /direction /aSide/accessPoint/name /aSide/accessPoint/type /aSide/accessPoint/account/accountName /aSide/accessPoint/location/metroName /aSide/accessPoint/location/metroCode /aSide/accessPoint/linkProtocol/vlanCTag /aSide/accessPoint/linkProtocol/vlanSTag /zSide/accessPoint/name /zSide/accessPoint/type /zSide/accessPoint/role /zSide/accessPoint/account/accountName /zSide/accessPoint/location/metroName /zSide/accessPoint/location/metroCode /zSide/accessPoint/linkProtocol/vlanCTag /zSide/accessPoint/linkProtocol/vlanSTag /zSide/accessPoint/authenticationKey /bandwidth /geoScope /uuid /changeLog/createdDateTime /changeLog/updatedDateTime /operation/equinixStatus /operation/providerStatus /redundancy/priority]. Defaults to /changeLog/updatedDateTime\n"}},"type":"object"},"equinix:fabric/getMarketplaceSubscriptionEntitlement:getMarketplaceSubscriptionEntitlement":{"properties":{"assets":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getMarketplaceSubscriptionEntitlementAsset:getMarketplaceSubscriptionEntitlementAsset"},"description":"Asset information\n"},"quantityAvailable":{"type":"integer","description":"Available Quantity\n"},"quantityConsumed":{"type":"integer","description":"Consumed Quantity\n"},"quantityEntitled":{"type":"integer","description":"Entitled Quantity\n"},"uuid":{"type":"string","description":"Subscription Entitlement Id\n"}},"type":"object","required":["assets","quantityAvailable","quantityConsumed","quantityEntitled","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getMarketplaceSubscriptionEntitlementAsset:getMarketplaceSubscriptionEntitlementAsset":{"properties":{"packages":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getMarketplaceSubscriptionEntitlementAssetPackage:getMarketplaceSubscriptionEntitlementAssetPackage"},"description":"Fabric Cloud Router Package Type\n"},"type":{"type":"string","description":"Defines the FCR type like; XF_ROUTER\n"}},"type":"object","required":["packages","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getMarketplaceSubscriptionEntitlementAssetPackage:getMarketplaceSubscriptionEntitlementAssetPackage":{"properties":{"code":{"type":"string","description":"Cloud Router package code\n"}},"type":"object","required":["code"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getMarketplaceSubscriptionTrial:getMarketplaceSubscriptionTrial":{"properties":{"enabled":{"type":"boolean","description":"Marketplace Subscription Trial Enabled\n"}},"type":"object","required":["enabled"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getMetroConnectedMetro:getMetroConnectedMetro":{"properties":{"avgLatency":{"type":"number"},"code":{"type":"string"},"href":{"type":"string"},"remoteVcBandwidthMax":{"type":"integer"}},"type":"object","required":["avgLatency","code","href","remoteVcBandwidthMax"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getMetroGeoCoordinates:getMetroGeoCoordinates":{"properties":{"latitude":{"type":"number","description":"Latitude of the Metro\n"},"longitude":{"type":"number","description":"Longitude of the Metro\n"}},"type":"object","required":["latitude","longitude"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getMetrosData:getMetrosData":{"properties":{"code":{"type":"string","description":"Code assigned to an Equinix IBX data center in a specified metropolitan area\n"},"connectedMetros":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getMetrosDataConnectedMetro:getMetrosDataConnectedMetro"},"description":"Arrays of objects containing latency data for the specified metro\n"},"country":{"type":"string","description":"Country in which the data center is located\n"},"equinixAsn":{"type":"integer","description":"Autonomous system number (ASN) for a specified Fabric metro. The ASN is a unique identifier that carries the network routing protocol and exchanges that data with other internal systems via border gateway protocol.\n"},"geoCoordinates":{"$ref":"#/types/equinix:fabric/getMetrosDataGeoCoordinates:getMetrosDataGeoCoordinates","description":"Geographic location data of Fabric Metro\n"},"geoScopes":{"type":"array","items":{"type":"string"},"description":"List of supported geographic boundaries of a Fabric Metro. Example values: CANADA, CONUS.\n"},"href":{"type":"string","description":"The canonical URL at which the resource resides\n"},"localVcBandwidthMax":{"type":"integer","description":"This field holds Max Connection speed within the metro.\n"},"name":{"type":"string","description":"Name of the region in which the data center is located\n"},"region":{"type":"string","description":"Board geographical area in which the data center is located\n"},"type":{"type":"string","description":"Indicator of a fabric metro\n"}},"type":"object","required":["code","connectedMetros","country","equinixAsn","geoCoordinates","geoScopes","href","localVcBandwidthMax","name","region","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getMetrosDataConnectedMetro:getMetrosDataConnectedMetro":{"properties":{"avgLatency":{"type":"number"},"code":{"type":"string"},"href":{"type":"string"},"remoteVcBandwidthMax":{"type":"integer"}},"type":"object","required":["avgLatency","code","href","remoteVcBandwidthMax"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getMetrosDataGeoCoordinates:getMetrosDataGeoCoordinates":{"properties":{"latitude":{"type":"number","description":"Latitude of the Metro\n"},"longitude":{"type":"number","description":"Longitude of the Metro\n"}},"type":"object","required":["latitude","longitude"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getMetrosPagination:getMetrosPagination":{"properties":{"limit":{"type":"integer","description":"Maximum number of search results returned per page.\n"},"next":{"type":"string","description":"URL relative to the next item in the response.\n"},"offset":{"type":"integer","description":"Index of the first item returned in the response.\n"},"previous":{"type":"string","description":"URL relative to the previous item in the response.\n"},"total":{"type":"integer","description":"The total number of metro returned\n"}},"type":"object","required":["next","previous","total"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getNetworkChange:getNetworkChange":{"properties":{"href":{"type":"string","description":"Absolute URL that returns the details of the given change.\nExample: https://api.equinix.com/fabric/v4/networks/92dc376a-a932-43aa-a6a2-c806dedbd784\n"},"type":{"type":"string","description":"Asset instance change request type.: NETWORK_CREATION, NETWORK_UPDATE, NETWORK_DELETION\n"},"uuid":{"type":"string","description":"Asset change request identifier.\n"}},"type":"object","required":["href","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getNetworkChangeLog:getNetworkChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getNetworkLocation:getNetworkLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getNetworkNotification:getNetworkNotification":{"properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"sendInterval":{"type":"string","description":"Send interval\n"},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS\n"}},"type":"object","required":["emails","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getNetworkOperation:getNetworkOperation":{"properties":{"equinixStatus":{"type":"string","description":"Progress towards provisioning a given asset.\n"}},"type":"object","required":["equinixStatus"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getNetworkProject:getNetworkProject":{"properties":{"projectId":{"type":"string","description":"Customer project identifier\n"}},"type":"object","required":["projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getNetworksData:getNetworksData":{"properties":{"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getNetworksDataChangeLog:getNetworksDataChangeLog"},"description":"A permanent record of asset creation, modification, or deletion\n"},"changes":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getNetworksDataChange:getNetworksDataChange"},"description":"Information on asset change operation\n"},"connectionsCount":{"type":"integer","description":"Number of connections associated with this network\n"},"href":{"type":"string","description":"Fabric Network URI information\n"},"locations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getNetworksDataLocation:getNetworksDataLocation"},"description":"Fabric Network location\n"},"name":{"type":"string","description":"Fabric Network name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getNetworksDataNotification:getNetworksDataNotification"},"description":"Preferences for notifications on Fabric Network configuration or status changes\n"},"operations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getNetworksDataOperation:getNetworksDataOperation"},"description":"Network operation information that is associated with this Fabric Network\n"},"projects":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getNetworksDataProject:getNetworksDataProject"},"description":"Fabric Network project\n"},"scope":{"type":"string","description":"Fabric Network scope. Valid values: [REGIONAL GLOBAL LOCAL]. Note: When scope is REGIONAL, the location.region field is required.\n"},"state":{"type":"string","description":"Fabric Network overall state\n"},"type":{"type":"string","description":"Supported Network types - EVPLAN, EPLAN, IPWAN, EVPTREE, EPTREE\n"},"uuid":{"type":"string","description":"Equinix-assigned network identifier\n"}},"type":"object","required":["changes","changeLogs","connectionsCount","href","locations","name","notifications","operations","projects","scope","state","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getNetworksDataChange:getNetworksDataChange":{"properties":{"href":{"type":"string","description":"Absolute URL that returns the details of the given change.\nExample: https://api.equinix.com/fabric/v4/networks/92dc376a-a932-43aa-a6a2-c806dedbd784\n"},"type":{"type":"string","description":"Asset instance change request type.: NETWORK_CREATION, NETWORK_UPDATE, NETWORK_DELETION\n"},"uuid":{"type":"string","description":"Asset change request identifier.\n"}},"type":"object","required":["href","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getNetworksDataChangeLog:getNetworksDataChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getNetworksDataLocation:getNetworksDataLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getNetworksDataNotification:getNetworksDataNotification":{"properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"sendInterval":{"type":"string","description":"Send interval\n"},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS\n"}},"type":"object","required":["emails","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getNetworksDataOperation:getNetworksDataOperation":{"properties":{"equinixStatus":{"type":"string","description":"Progress towards provisioning a given asset.\n"}},"type":"object","required":["equinixStatus"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getNetworksDataProject:getNetworksDataProject":{"properties":{"projectId":{"type":"string","description":"Customer project identifier\n"}},"type":"object","required":["projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getNetworksFilter:getNetworksFilter":{"properties":{"group":{"type":"string","description":"Optional custom id parameter to assign this filter to an inner AND or OR group. Group id must be prefixed with AND_ or OR_. Ensure intended grouped elements have the same given id. Ungrouped filters will be placed in the filter list group by themselves.\n"},"operator":{"type":"string","description":"Operators to use on your filtered field with the values given. One of [ =, !=, \u003e, \u003e=, \u003c, \u003c=, BETWEEN, NOT BETWEEN, LIKE, NOT LIKE, ILIKE, NOT ILIKE, IN, NOT IN]\n"},"property":{"type":"string","description":"Possible field names to use on filters. One of [/name /uuid /scope /type /operation/equinixStatus /location/region /project/projectId /account/globalCustId /account/orgId /deletedDate /_*]\n"},"values":{"type":"array","items":{"type":"string"},"description":"The values that you want to apply the property+operator combination to in order to filter your data search\n"}},"type":"object","required":["operator","property","values"]},"equinix:fabric/getNetworksPagination:getNetworksPagination":{"properties":{"limit":{"type":"integer","description":"Number of elements to be requested per page. Number must be between 1 and 100. Default is 20\n"},"offset":{"type":"integer","description":"The page offset for the pagination request. Index of the first element. Default is 0.\n"}},"type":"object"},"equinix:fabric/getNetworksSort:getNetworksSort":{"properties":{"direction":{"type":"string","description":"The sorting direction. Can be one of: [DESC, ASC], Defaults to DESC\n"},"property":{"type":"string","description":"The property name to use in sorting. One of [/name /uuid /scope /operation/equinixStatus /location/region /changeLog/createdDateTime /changeLog/updatedDateTime]. Defaults to /changeLog/updatedDateTime\n"}},"type":"object"},"equinix:fabric/getPortAccount:getPortAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","required":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortChangeLog:getPortChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortDevice:getPortDevice":{"properties":{"name":{"type":"string","description":"Port name\n"},"redundancies":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPortDeviceRedundancy:getPortDeviceRedundancy"},"description":"Port device redundancy\n"}},"type":"object","required":["name","redundancies"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortDeviceRedundancy:getPortDeviceRedundancy":{"properties":{"enabled":{"type":"boolean","description":"Access point redundancy\n"},"group":{"type":"string","description":"Port redundancy group\n"},"priority":{"type":"string","description":"Priority type-Primary or Secondary\n"}},"type":"object","required":["enabled","group","priority"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortEncapsulation:getPortEncapsulation":{"properties":{"tagProtocolId":{"type":"string","description":"Port encapsulation Tag Protocol Identifier\n"},"type":{"type":"string","description":"Port encapsulation protocol type\n"}},"type":"object","required":["tagProtocolId","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortLocation:getPortLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortOperation:getPortOperation":{"properties":{"connectionCount":{"type":"integer","description":"Total number of current connections\n"},"opStatusChangedAt":{"type":"string","description":"Date and time at which port availability changed\n"},"operationalStatus":{"type":"string","description":"Port operation status\n"}},"type":"object","required":["connectionCount","opStatusChangedAt","operationalStatus"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortRedundancy:getPortRedundancy":{"properties":{"enabled":{"type":"boolean","description":"Access point redundancy\n"},"group":{"type":"string","description":"Port redundancy group\n"},"priority":{"type":"string","description":"Priority type-Primary or Secondary\n"}},"type":"object","required":["enabled","group","priority"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortsDatum:getPortsDatum":{"properties":{"accounts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPortsDatumAccount:getPortsDatumAccount"},"description":"Customer account information that is associated with this port\n"},"availableBandwidth":{"type":"integer","description":"Port available bandwidth in Mbps\n"},"bandwidth":{"type":"integer","description":"Port bandwidth in Mbps\n"},"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPortsDatumChangeLog:getPortsDatumChangeLog"},"description":"Captures port lifecycle change information\n"},"description":{"type":"string","description":"Port description\n"},"devices":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPortsDatumDevice:getPortsDatumDevice"},"description":"Port device\n"},"encapsulations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPortsDatumEncapsulation:getPortsDatumEncapsulation"},"description":"Port encapsulation protocol\n"},"href":{"type":"string","description":"Port URI information\n"},"lagEnabled":{"type":"boolean","description":"Port Lag\n"},"locations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPortsDatumLocation:getPortsDatumLocation"},"description":"Port location information\n"},"name":{"type":"string","description":"Port name\n"},"operations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPortsDatumOperation:getPortsDatumOperation"},"description":"Port specific operational data\n"},"redundancies":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPortsDatumRedundancy:getPortsDatumRedundancy"},"description":"Port redundancy information\n"},"serviceType":{"type":"string","description":"Port service type\n"},"state":{"type":"string","description":"Port state\n"},"type":{"type":"string","description":"Port type\n"},"usedBandwidth":{"type":"integer","description":"Port used bandwidth in Mbps\n"},"uuid":{"type":"string","description":"Equinix-assigned port identifier\n"}},"type":"object","required":["accounts","availableBandwidth","bandwidth","changeLogs","description","devices","encapsulations","href","lagEnabled","locations","name","operations","redundancies","serviceType","state","type","usedBandwidth","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortsDatumAccount:getPortsDatumAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","required":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortsDatumChangeLog:getPortsDatumChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortsDatumDevice:getPortsDatumDevice":{"properties":{"name":{"type":"string","description":"Port name\n"},"redundancies":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPortsDatumDeviceRedundancy:getPortsDatumDeviceRedundancy"},"description":"Port device redundancy\n"}},"type":"object","required":["name","redundancies"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortsDatumDeviceRedundancy:getPortsDatumDeviceRedundancy":{"properties":{"enabled":{"type":"boolean","description":"Access point redundancy\n"},"group":{"type":"string","description":"Port redundancy group\n"},"priority":{"type":"string","description":"Priority type-Primary or Secondary\n"}},"type":"object","required":["enabled","group","priority"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortsDatumEncapsulation:getPortsDatumEncapsulation":{"properties":{"tagProtocolId":{"type":"string","description":"Port encapsulation Tag Protocol Identifier\n"},"type":{"type":"string","description":"Port encapsulation protocol type\n"}},"type":"object","required":["tagProtocolId","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortsDatumLocation:getPortsDatumLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortsDatumOperation:getPortsDatumOperation":{"properties":{"connectionCount":{"type":"integer","description":"Total number of current connections\n"},"opStatusChangedAt":{"type":"string","description":"Date and time at which port availability changed\n"},"operationalStatus":{"type":"string","description":"Port operation status\n"}},"type":"object","required":["connectionCount","opStatusChangedAt","operationalStatus"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortsDatumRedundancy:getPortsDatumRedundancy":{"properties":{"enabled":{"type":"boolean","description":"Access point redundancy\n"},"group":{"type":"string","description":"Port redundancy group\n"},"priority":{"type":"string","description":"Priority type-Primary or Secondary\n"}},"type":"object","required":["enabled","group","priority"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPortsFilter:getPortsFilter":{"properties":{"name":{"type":"string","description":"Query Parameter to Get Ports By Name\n"}},"type":"object","required":["name"]},"equinix:fabric/getPrecisionTimeServiceAccount:getPrecisionTimeServiceAccount":{"properties":{"accountName":{"type":"string","description":"Account Name\n"},"accountNumber":{"type":"integer","description":"Equinix Account Number\n"},"globalCustId":{"type":"string","description":"Global Customer Id\n"},"globalOrgId":{"type":"string","description":"Customer organization naidentifierme\n"},"globalOrganizationName":{"type":"string","description":"Global organization name\n"},"orgId":{"type":"integer","description":"Customer organization identifier\n"},"organizationName":{"type":"string","description":"Customer organization name\n"},"resellerAccountName":{"type":"string","description":"Reseller account name\n"},"resellerAccountNumber":{"type":"integer","description":"Reseller account number\n"},"resellerOrgId":{"type":"integer","description":"Reseller customer organization identifier\n"},"resellerUcmId":{"type":"string","description":"Reseller account ucmId\n"},"ucmId":{"type":"string","description":"Global organization name\n"}},"type":"object","required":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","resellerAccountName","resellerAccountNumber","resellerOrgId","resellerUcmId","ucmId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServiceChangeLog:getPrecisionTimeServiceChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the route aggregation resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the route aggregation resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the route aggregation resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the route aggregation resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the route aggregation resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the route aggregation resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the route aggregation resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the route aggregation resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the route aggregation resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the route aggregation resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the route aggregation resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the route aggregation resource\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServiceConnection:getPrecisionTimeServiceConnection":{"properties":{"href":{"type":"string","description":"Link to the Equinix Fabric Connection associated with the Precision Time Service\n"},"type":{"type":"string","description":"Type of the Equinix Fabric Connection associated with the Precision Time Service\n"},"uuid":{"type":"string","description":"Equinix Fabric Connection UUID; Precision Time Service will be connected with it\n"}},"type":"object","required":["href","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServiceIpv4:getPrecisionTimeServiceIpv4":{"properties":{"defaultGateway":{"type":"string","description":"IPv4 address that establishes the Routing Interface where traffic is directed. It serves as the next hop in the Network.\n"},"networkMask":{"type":"string","description":"IPv4 address that defines the range of consecutive subnets in the network.\n"},"primary":{"type":"string","description":"IPv4 address for the Primary Timing Master Server.\n"},"secondary":{"type":"string","description":"IPv4 address for the Secondary Timing Master Server.\n"}},"type":"object","required":["defaultGateway","networkMask","primary","secondary"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServiceNtpAdvancedConfiguration:getPrecisionTimeServiceNtpAdvancedConfiguration":{"properties":{"key":{"type":"string","description":"The plaintext authentication key. For ASCII type, the key\\\n\\ must contain printable ASCII characters, range 10-20 characters. For\\\n\\ HEX type, range should be 10-40 characters\n"},"keyNumber":{"type":"integer","description":"The authentication Key ID\n"},"type":{"type":"string","description":"md5 Authentication type\n"}},"type":"object"},"equinix:fabric/getPrecisionTimeServiceOperation:getPrecisionTimeServiceOperation":{"properties":{"operationalStatus":{"type":"string"}},"type":"object","required":["operationalStatus"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServiceOrder:getPrecisionTimeServiceOrder":{"properties":{"customerReferenceNumber":{"type":"string","description":"Customer reference number\n"},"orderNumber":{"type":"string","description":"Order reference number\n"},"purchaseOrderNumber":{"type":"string","description":"Purchase order number\n"}},"type":"object","required":["customerReferenceNumber","orderNumber","purchaseOrderNumber"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServicePackage:getPrecisionTimeServicePackage":{"properties":{"code":{"type":"string","description":"Time Precision Package Code for the desired billing package\n"},"href":{"type":"string","description":"Time Precision Package HREF link to corresponding resource in Equinix Portal\n"}},"type":"object","required":["code","href"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServicePrecisionTimePrice:getPrecisionTimeServicePrecisionTimePrice":{"properties":{"charges":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicePrecisionTimePriceCharge:getPrecisionTimeServicePrecisionTimePriceCharge"},"description":"offering price charge\n"},"currency":{"type":"string","description":"Offering price currency\n"}},"type":"object","required":["charges","currency"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServicePrecisionTimePriceCharge:getPrecisionTimeServicePrecisionTimePriceCharge":{"properties":{"price":{"type":"number","description":"Offering price\n"},"type":{"type":"string","description":"Price charge type; MONTHLY*RECURRING, NON*RECURRING\n"}},"type":"object","required":["price","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServiceProject:getPrecisionTimeServiceProject":{"properties":{"projectId":{"type":"string","description":"Equinix Subscriber-assigned project ID\n"}},"type":"object","required":["projectId"]},"equinix:fabric/getPrecisionTimeServicePtpAdvancedConfiguration:getPrecisionTimeServicePtpAdvancedConfiguration":{"properties":{"domain":{"type":"integer","description":"The PTP domain value\n"},"grantTime":{"type":"integer","description":"Unicast Grant Time in seconds. For Multicast and Hybrid transport modes, grant time defaults to 300 seconds. For Unicast mode, grant time can be between 30 to 7200\n"},"logAnnounceInterval":{"type":"integer","description":"Logarithmic value that controls the rate of PTP Announce packets from the PTP time server. Default is 1 (1 packet every 2 seconds), Unit packets/second\n"},"logDelayReqInterval":{"type":"integer","description":"Logarithmic value that controls the rate of PTP DelayReq packets. Default is -4 (16 packets per second), Unit packets/second..\n"},"logSyncInterval":{"type":"integer","description":"Logarithmic value that controls the rate of PTP Sync packets. Default is -4 (16 packets per second), Unit packets/second..\n"},"priority1":{"type":"integer","description":"The priority1 value determines the best primary clock, Lower value indicates higher priority\n"},"priority2":{"type":"integer","description":"The priority2 value differentiates and prioritizes the primary clock to avoid confusion when priority1-value is the same for different primary clocks in a network\n"},"timeScale":{"type":"string","description":"Time Scale value, ARB denotes Arbitrary and PTP denotes Precision Time Protocol\n"},"transportMode":{"type":"string","description":"ptp transport mode\n"}},"type":"object"},"equinix:fabric/getPrecisionTimeServicesData:getPrecisionTimeServicesData":{"properties":{"account":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesDataAccount:getPrecisionTimeServicesDataAccount","description":"Equinix User Account associated with Precision Time Service\n"},"changeLog":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesDataChangeLog:getPrecisionTimeServicesDataChangeLog","description":"Details of the last change on the route aggregation resource\n"},"connections":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesDataConnection:getPrecisionTimeServicesDataConnection"},"description":"An array of objects with unique identifiers of connections.\n"},"href":{"type":"string","description":"Equinix generated Portal link for the created Precision Time Service\n"},"ipv4":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesDataIpv4:getPrecisionTimeServicesDataIpv4","description":"An object that has Network IP Configurations for Timing Master Servers.\n"},"name":{"type":"string","description":"Name of Precision Time Service. Applicable values: Maximum: 24 characters; Allowed characters: alpha-numeric, hyphens ('-') and underscores ('_')\n"},"ntpAdvancedConfigurations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesDataNtpAdvancedConfiguration:getPrecisionTimeServicesDataNtpAdvancedConfiguration"},"description":"NTP Advanced configuration\n"},"operation":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesDataOperation:getPrecisionTimeServicesDataOperation","description":"Precision Time Service Operation\n"},"order":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesDataOrder:getPrecisionTimeServicesDataOrder","description":"Precision Time Order\n"},"package":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesDataPackage:getPrecisionTimeServicesDataPackage","description":"Precision Time Service Package Details\n"},"precisionTimePrice":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesDataPrecisionTimePrice:getPrecisionTimeServicesDataPrecisionTimePrice","description":"Precision Time Service Price\n"},"project":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesDataProject:getPrecisionTimeServicesDataProject","description":"Equinix Project attribute object\n"},"ptpAdvancedConfiguration":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesDataPtpAdvancedConfiguration:getPrecisionTimeServicesDataPtpAdvancedConfiguration","description":"PTP Advanced Configuration\n"},"state":{"type":"string","description":"Indicator of the state of this Precision Time Service\n"},"type":{"type":"string","description":"Choose type of Precision Time Service\n"},"uuid":{"type":"string","description":"Equinix generated id for the Precision Time Service\n"}},"type":"object","required":["account","changeLog","connections","href","ipv4","name","operation","order","package","precisionTimePrice","state","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServicesDataAccount:getPrecisionTimeServicesDataAccount":{"properties":{"accountName":{"type":"string","description":"Account Name\n"},"accountNumber":{"type":"integer","description":"Equinix Account Number\n"},"globalCustId":{"type":"string","description":"Global Customer Id\n"},"globalOrgId":{"type":"string","description":"Customer organization naidentifierme\n"},"globalOrganizationName":{"type":"string","description":"Global organization name\n"},"orgId":{"type":"integer","description":"Customer organization identifier\n"},"organizationName":{"type":"string","description":"Customer organization name\n"},"resellerAccountName":{"type":"string","description":"Reseller account name\n"},"resellerAccountNumber":{"type":"integer","description":"Reseller account number\n"},"resellerOrgId":{"type":"integer","description":"Reseller customer organization identifier\n"},"resellerUcmId":{"type":"string","description":"Reseller account ucmId\n"},"ucmId":{"type":"string","description":"Global organization name\n"}},"type":"object","required":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","resellerAccountName","resellerAccountNumber","resellerOrgId","resellerUcmId","ucmId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServicesDataChangeLog:getPrecisionTimeServicesDataChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the route aggregation resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the route aggregation resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the route aggregation resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the route aggregation resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the route aggregation resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the route aggregation resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the route aggregation resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the route aggregation resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the route aggregation resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the route aggregation resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the route aggregation resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the route aggregation resource\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServicesDataConnection:getPrecisionTimeServicesDataConnection":{"properties":{"href":{"type":"string","description":"Link to the Equinix Fabric Connection associated with the Precision Time Service\n"},"type":{"type":"string","description":"Type of the Equinix Fabric Connection associated with the Precision Time Service\n"},"uuid":{"type":"string","description":"Equinix Fabric Connection UUID; Precision Time Service will be connected with it\n"}},"type":"object","required":["href","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServicesDataIpv4:getPrecisionTimeServicesDataIpv4":{"properties":{"defaultGateway":{"type":"string","description":"IPv4 address that establishes the Routing Interface where traffic is directed. It serves as the next hop in the Network.\n"},"networkMask":{"type":"string","description":"IPv4 address that defines the range of consecutive subnets in the network.\n"},"primary":{"type":"string","description":"IPv4 address for the Primary Timing Master Server.\n"},"secondary":{"type":"string","description":"IPv4 address for the Secondary Timing Master Server.\n"}},"type":"object","required":["defaultGateway","networkMask","primary","secondary"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServicesDataNtpAdvancedConfiguration:getPrecisionTimeServicesDataNtpAdvancedConfiguration":{"properties":{"key":{"type":"string","description":"The plaintext authentication key. For ASCII type, the key\\\n\\ must contain printable ASCII characters, range 10-20 characters. For\\\n\\ HEX type, range should be 10-40 characters\n"},"keyNumber":{"type":"integer","description":"The authentication Key ID\n"},"type":{"type":"string","description":"md5 Authentication type\n"}},"type":"object"},"equinix:fabric/getPrecisionTimeServicesDataOperation:getPrecisionTimeServicesDataOperation":{"properties":{"operationalStatus":{"type":"string"}},"type":"object","required":["operationalStatus"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServicesDataOrder:getPrecisionTimeServicesDataOrder":{"properties":{"customerReferenceNumber":{"type":"string","description":"Customer reference number\n"},"orderNumber":{"type":"string","description":"Order reference number\n"},"purchaseOrderNumber":{"type":"string","description":"Purchase order number\n"}},"type":"object","required":["customerReferenceNumber","orderNumber","purchaseOrderNumber"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServicesDataPackage:getPrecisionTimeServicesDataPackage":{"properties":{"code":{"type":"string","description":"Time Precision Package Code for the desired billing package\n"},"href":{"type":"string","description":"Time Precision Package HREF link to corresponding resource in Equinix Portal\n"}},"type":"object","required":["code","href"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServicesDataPrecisionTimePrice:getPrecisionTimeServicesDataPrecisionTimePrice":{"properties":{"charges":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesDataPrecisionTimePriceCharge:getPrecisionTimeServicesDataPrecisionTimePriceCharge"},"description":"offering price charge\n"},"currency":{"type":"string","description":"Offering price currency\n"}},"type":"object","required":["charges","currency"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServicesDataPrecisionTimePriceCharge:getPrecisionTimeServicesDataPrecisionTimePriceCharge":{"properties":{"price":{"type":"number","description":"Offering price\n"},"type":{"type":"string","description":"Price charge type; MONTHLY*RECURRING, NON*RECURRING\n"}},"type":"object","required":["price","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServicesDataProject:getPrecisionTimeServicesDataProject":{"properties":{"projectId":{"type":"string","description":"Equinix Subscriber-assigned project ID\n"}},"type":"object","required":["projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServicesDataPtpAdvancedConfiguration:getPrecisionTimeServicesDataPtpAdvancedConfiguration":{"properties":{"domain":{"type":"integer","description":"The PTP domain value\n"},"grantTime":{"type":"integer","description":"Unicast Grant Time in seconds. For Multicast and Hybrid transport modes, grant time defaults to 300 seconds. For Unicast mode, grant time can be between 30 to 7200\n"},"logAnnounceInterval":{"type":"integer","description":"Logarithmic value that controls the rate of PTP Announce packets from the PTP time server. Default is 1 (1 packet every 2 seconds), Unit packets/second\n"},"logDelayReqInterval":{"type":"integer","description":"Logarithmic value that controls the rate of PTP DelayReq packets. Default is -4 (16 packets per second), Unit packets/second..\n"},"logSyncInterval":{"type":"integer","description":"Logarithmic value that controls the rate of PTP Sync packets. Default is -4 (16 packets per second), Unit packets/second..\n"},"priority1":{"type":"integer","description":"The priority1 value determines the best primary clock, Lower value indicates higher priority\n"},"priority2":{"type":"integer","description":"The priority2 value differentiates and prioritizes the primary clock to avoid confusion when priority1-value is the same for different primary clocks in a network\n"},"timeScale":{"type":"string","description":"Time Scale value, ARB denotes Arbitrary and PTP denotes Precision Time Protocol\n"},"transportMode":{"type":"string","description":"ptp transport mode\n"}},"type":"object"},"equinix:fabric/getPrecisionTimeServicesFilter:getPrecisionTimeServicesFilter":{"properties":{"operator":{"type":"string","description":"Operation applied to the values of the filter\n"},"or":{"type":"boolean","description":"Boolean value to specify if this filter is a part of the OR group. Has a maximum of 3 and only counts for 1 of the 8 possible filters\n"},"property":{"type":"string","description":"Property to apply the filter to\n"},"values":{"type":"array","items":{"type":"string"},"description":"List of values to apply the operation to for the specified property\n"}},"type":"object","required":["operator","property","values"]},"equinix:fabric/getPrecisionTimeServicesPagination:getPrecisionTimeServicesPagination":{"properties":{"limit":{"type":"integer","description":"Maximum number of search results returned per page. Number must be between 1 and 100, and the default is 20\n"},"offset":{"type":"integer","description":"Index of the first item returned in the response. The default is 0\n"}},"type":"object","required":["limit","offset"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getPrecisionTimeServicesSort:getPrecisionTimeServicesSort":{"properties":{"direction":{"type":"string","description":"The sorting direction. Can be one of: [DESC, ASC], Defaults to DESC\n"},"property":{"type":"string","description":"The property name to use in sorting. One of [/name /uuid /state /type /package/code /changeLog/createdDateTime /changeLog/updatedDateTime] Defaults to /name\n"}},"type":"object"},"equinix:fabric/getReceivedRoutesData:getReceivedRoutesData":{"properties":{"asPaths":{"type":"array","items":{"type":"string"},"description":"List of supported AS Paths for the Received Routes.\n"},"changeLog":{"$ref":"#/types/equinix:fabric/getReceivedRoutesDataChangeLog:getReceivedRoutesDataChangeLog","description":"Change Log of the route table entry\n"},"connection":{"$ref":"#/types/equinix:fabric/getReceivedRoutesDataConnection:getReceivedRoutesDataConnection","description":"connection of the route table entry\n"},"localPreference":{"type":"integer","description":"This field holds local preference of the received route.\n"},"med":{"type":"integer","description":"Multi-Exit Discriminator for the Received Route\n"},"nextHop":{"type":"string","description":"Next Hop of the Received Route\n"},"prefix":{"type":"string","description":"Prefix of the Received Route\n"},"protocolType":{"type":"string","description":"Received Route protocol type\n"},"state":{"type":"string","description":"State of the received Route\n"},"type":{"type":"string","description":"Indicator of a received route\n"}},"type":"object","required":["asPaths","changeLog","connection","localPreference","med","nextHop","prefix","protocolType","state","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getReceivedRoutesDataChangeLog:getReceivedRoutesDataChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by User Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by User Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by User Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getReceivedRoutesDataConnection:getReceivedRoutesDataConnection":{"properties":{"href":{"type":"string","description":"HREF of the Connection\n"},"name":{"type":"string","description":"Name of the Connection\n"},"uuid":{"type":"string","description":"UUID of the Connection\n"}},"type":"object","required":["href","name","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getReceivedRoutesFilter:getReceivedRoutesFilter":{"properties":{"operator":{"type":"string","description":"Operators to use on your filtered field with the values given. One of [ =, !=, \u003e, \u003e=, \u003c, \u003c=, BETWEEN, NOT BETWEEN, LIKE, NOT LIKE, IN, NOT IN, IS NOT NULL, IS NULL]\n"},"property":{"type":"string","description":"possible field names to use on filters. One of [/type /name /project/projectId /uuid /state]\n"},"values":{"type":"array","items":{"type":"string"},"description":"The values that you want to apply the property+operator combination to in order to filter your data search\n"}},"type":"object","required":["operator","property","values"]},"equinix:fabric/getReceivedRoutesPagination:getReceivedRoutesPagination":{"properties":{"limit":{"type":"integer","description":"Maximum number of search results returned per page.\n"},"next":{"type":"string","description":"URL relative to the next item in the response.\n"},"offset":{"type":"integer","description":"Index of the first item returned in the response.\n"},"previous":{"type":"string","description":"URL relative to the previous item in the response.\n"},"total":{"type":"integer","description":"The total number of elements returned\n"}},"type":"object","required":["next","previous","total"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getReceivedRoutesSort:getReceivedRoutesSort":{"properties":{"direction":{"type":"string","description":"Sort direction, one of [ASC, DESC]\n"},"property":{"type":"string","description":"Property name to sort by\n"}},"type":"object"},"equinix:fabric/getRouteAggregationChange:getRouteAggregationChange":{"properties":{"href":{"type":"string","description":"Equinix auto generated URI to the route aggregation change\n"},"type":{"type":"string","description":"Equinix defined Route Aggregation Change Type\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for a change\n"}},"type":"object","required":["href","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteAggregationChangeLog:getRouteAggregationChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the route aggregation resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the route aggregation resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the route aggregation resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the route aggregation resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the route aggregation resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the route aggregation resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the route aggregation resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the route aggregation resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the route aggregation resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the route aggregation resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the route aggregation resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the route aggregation resource\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteAggregationProject:getRouteAggregationProject":{"properties":{"projectId":{"type":"string","description":"Equinix Subscriber-assigned project ID\n"}},"type":"object","required":["projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteAggregationRuleChange:getRouteAggregationRuleChange":{"properties":{"href":{"type":"string","description":"Equinix auto generated URI to the route aggregation change\n"},"type":{"type":"string","description":"Equinix defined Route Aggregation Change Type\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for a change\n"}},"type":"object","required":["href","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteAggregationRuleChangeLog:getRouteAggregationRuleChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the stream resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the stream resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the stream resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the stream resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the stream resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the stream resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the stream resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the stream resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the stream resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the stream resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the stream resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the stream resource\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteAggregationRulesData:getRouteAggregationRulesData":{"properties":{"change":{"$ref":"#/types/equinix:fabric/getRouteAggregationRulesDataChange:getRouteAggregationRulesDataChange","description":"Current state of latest route aggregation rule change\n"},"changeLog":{"$ref":"#/types/equinix:fabric/getRouteAggregationRulesDataChangeLog:getRouteAggregationRulesDataChangeLog","description":"Details of the last change on the stream resource\n"},"description":{"type":"string","description":"Customer-provided route aggregation rule description\n"},"href":{"type":"string","description":"Equinix auto generated URI to the route aggregation rule resource\n"},"name":{"type":"string","description":"Customer provided name of the route aggregation rule\n"},"prefix":{"type":"string","description":"Customer-provided route aggregation rule prefix\n"},"routeAggregationId":{"type":"string","description":"UUID of the Route Aggregation to apply this Rule to\n"},"state":{"type":"string","description":"Value representing provisioning status for the route aggregation rule resource\n"},"type":{"type":"string","description":"Equinix defined Route Aggregation Type; BGP*IPv4*PREFIX*AGGREGATION, BGP*IPv6*PREFIX*AGGREGATION\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for the route aggregation rule resource\n"}},"type":"object","required":["change","changeLog","href","name","prefix","routeAggregationId","state","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteAggregationRulesDataChange:getRouteAggregationRulesDataChange":{"properties":{"href":{"type":"string","description":"Equinix auto generated URI to the route aggregation change\n"},"type":{"type":"string","description":"Equinix defined Route Aggregation Change Type\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for a change\n"}},"type":"object","required":["href","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteAggregationRulesDataChangeLog:getRouteAggregationRulesDataChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the stream resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the stream resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the stream resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the stream resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the stream resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the stream resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the stream resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the stream resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the stream resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the stream resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the stream resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the stream resource\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteAggregationRulesPagination:getRouteAggregationRulesPagination":{"properties":{"limit":{"type":"integer","description":"Maximum number of search results returned per page. Number must be between 1 and 100, and the default is 20\n"},"next":{"type":"string","description":"The URL relative to the next item in the response\n"},"offset":{"type":"integer","description":"Index of the first item returned in the response. The default is 0\n"},"previous":{"type":"string","description":"The URL relative to the previous item in the response\n"},"total":{"type":"integer","description":"The total number of route agrgegation rules available to the user making the request\n"}},"type":"object","required":["limit","next","offset","previous","total"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteAggregationsData:getRouteAggregationsData":{"properties":{"change":{"$ref":"#/types/equinix:fabric/getRouteAggregationsDataChange:getRouteAggregationsDataChange","description":"Current state of latest Route Aggregation change\n"},"changeLog":{"$ref":"#/types/equinix:fabric/getRouteAggregationsDataChangeLog:getRouteAggregationsDataChangeLog","description":"Details of the last change on the route aggregation resource\n"},"connectionsCount":{"type":"integer","description":"Number of Connections attached to route aggregation\n"},"description":{"type":"string","description":"Customer-provided route aggregation description\n"},"href":{"type":"string","description":"Equinix auto generated URI to the route aggregation resource\n"},"name":{"type":"string","description":"Customer provided name of the route aggregation\n"},"project":{"$ref":"#/types/equinix:fabric/getRouteAggregationsDataProject:getRouteAggregationsDataProject","description":"Equinix Project attribute object\n"},"rulesCount":{"type":"integer","description":"Number of Rules attached to route aggregation\n"},"state":{"type":"string","description":"Value representing provisioning status for the route aggregation resource\n"},"type":{"type":"string","description":"Equinix defined Route Aggregation Type; BGP*IPv4*PREFIX*AGGREGATION, BGP*IPv6*PREFIX*AGGREGATION\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for the route aggregation resource\n"}},"type":"object","required":["change","changeLog","connectionsCount","description","href","name","project","rulesCount","state","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteAggregationsDataChange:getRouteAggregationsDataChange":{"properties":{"href":{"type":"string","description":"Equinix auto generated URI to the route aggregation change\n"},"type":{"type":"string","description":"Equinix defined Route Aggregation Change Type\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for a change\n"}},"type":"object","required":["href","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteAggregationsDataChangeLog:getRouteAggregationsDataChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the route aggregation resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the route aggregation resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the route aggregation resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the route aggregation resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the route aggregation resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the route aggregation resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the route aggregation resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the route aggregation resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the route aggregation resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the route aggregation resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the route aggregation resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the route aggregation resource\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteAggregationsDataProject:getRouteAggregationsDataProject":{"properties":{"projectId":{"type":"string","description":"Equinix Subscriber-assigned project ID\n"}},"type":"object","required":["projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteAggregationsFilter:getRouteAggregationsFilter":{"properties":{"operator":{"type":"string","description":"Operators to use on your filtered field with the values given. One of [ =, !=, \u003e, \u003e=, \u003c, \u003c=, BETWEEN, NOT BETWEEN, LIKE, NOT LIKE, IN, NOT IN, IS NOT NULL, IS NULL]\n"},"property":{"type":"string","description":"possible field names to use on filters. One of [/type /name /project/projectId /uuid /state]\n"},"values":{"type":"array","items":{"type":"string"},"description":"The values that you want to apply the property+operator combination to in order to filter your data search\n"}},"type":"object","required":["operator","property","values"]},"equinix:fabric/getRouteAggregationsPagination:getRouteAggregationsPagination":{"properties":{"limit":{"type":"integer","description":"Maximum number of search results returned per page. Number must be between 1 and 100, and the default is 20\n"},"next":{"type":"string","description":"The URL relative to the next item in the response\n"},"offset":{"type":"integer","description":"Index of the first item returned in the response. The default is 0\n"},"previous":{"type":"string","description":"The URL relative to the previous item in the response\n"},"total":{"type":"integer","description":"The total number of route aggregations available to the user making the request\n"}},"type":"object","required":["limit","next","offset","previous","total"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteAggregationsSort:getRouteAggregationsSort":{"properties":{"direction":{"type":"string","description":"The sorting direction. Can be one of: [DESC, ASC], Defaults to DESC\n"},"property":{"type":"string","description":"The property name to use in sorting. One of [/type /name /project/projectId /uuid /state] Defaults to /name\n"}},"type":"object"},"equinix:fabric/getRouteFilterChange:getRouteFilterChange":{"properties":{"href":{"type":"string","description":"The URI of the previous Route Filter Change\n"},"type":{"type":"string","description":"Type of change. One of [ \"BGP_IPv4_PREFIX_FILTER_UPDATE\",\"BGP_IPv4_PREFIX_FILTER_CREATION\",\"BGP_IPv4_PREFIX_FILTER_DELETION\",\"BGP_IPv6_PREFIX_FILTER_UPDATE\",\"BGP_IPv6_PREFIX_FILTER_CREATION\",\"BGP_IPv6_PREFIX_FILTER_DELETION\" ]\n"},"uuid":{"type":"string","description":"Unique identifier for the previous change\n"}},"type":"object","required":["href","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteFilterChangeLog:getRouteFilterChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteFilterProject:getRouteFilterProject":{"properties":{"href":{"type":"string","description":"URI of the Fabric Project\n"},"projectId":{"type":"string","description":"Project id associated with Fabric Project\n"}},"type":"object","required":["href","projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteFilterRuleChange:getRouteFilterRuleChange":{"properties":{"href":{"type":"string","description":"The URI of the previous Route Filter Rule Change\n"},"type":{"type":"string","description":"Type of change. One of [ \"BGP_IPv4_PREFIX_FILTER_RULE_UPDATE\",\"BGP_IPv4_PREFIX_FILTER_RULE_CREATION\",\"BGP_IPv4_PREFIX_FILTER_RULE_DELETION\",\"BGP_IPv6_PREFIX_FILTER_RULE_UPDATE\",\"BGP_IPv6_PREFIX_FILTER_RULE_CREATION\",\"BGP_IPv6_PREFIX_FILTER_RULE_DELETION\" ]\n"},"uuid":{"type":"string","description":"Unique identifier for the previous change\n"}},"type":"object","required":["href","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteFilterRuleChangeLog:getRouteFilterRuleChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteFilterRulesData:getRouteFilterRulesData":{"properties":{"action":{"type":"string","description":"Action that will be taken on IP Addresses matching the rule\n"},"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getRouteFilterRulesDataChangeLog:getRouteFilterRulesDataChangeLog"}},"changes":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getRouteFilterRulesDataChange:getRouteFilterRulesDataChange"},"description":"An object with the details of the previous change applied on the Route Filter\n"},"description":{"type":"string","description":"Optional description to add to the Route Filter you will be creating\n"},"href":{"type":"string","description":"Route filter rules URI\n"},"name":{"type":"string","description":"Name of the Route Filter\n"},"prefix":{"type":"string","description":"IP Address Prefix to Filter on\n"},"prefixMatch":{"type":"string","description":"Prefix matching operator. One of [ orlonger, exact ] Default: \"orlonger\"\n"},"state":{"type":"string","description":"State of the Route Filter Rule in its lifecycle\n"},"type":{"type":"string","description":"Route Filter Type. One of [ BGP_IPv4_PREFIX_FILTER_RULE, BGP_IPv6_PREFIX_FILTER_RULE ]\n"},"uuid":{"type":"string","description":"Equinix Assigned ID for Route Filter Rule to retrieve data for\n"}},"type":"object","required":["action","changes","changeLogs","description","href","name","prefix","prefixMatch","state","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteFilterRulesDataChange:getRouteFilterRulesDataChange":{"properties":{"href":{"type":"string","description":"The URI of the previous Route Filter Rule Change\n"},"type":{"type":"string","description":"Type of change. One of [ \"BGP_IPv4_PREFIX_FILTER_RULE_UPDATE\",\"BGP_IPv4_PREFIX_FILTER_RULE_CREATION\",\"BGP_IPv4_PREFIX_FILTER_RULE_DELETION\",\"BGP_IPv6_PREFIX_FILTER_RULE_UPDATE\",\"BGP_IPv6_PREFIX_FILTER_RULE_CREATION\",\"BGP_IPv6_PREFIX_FILTER_RULE_DELETION\" ]\n"},"uuid":{"type":"string","description":"Unique identifier for the previous change\n"}},"type":"object","required":["href","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteFilterRulesDataChangeLog:getRouteFilterRulesDataChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteFilterRulesPagination:getRouteFilterRulesPagination":{"properties":{"limit":{"type":"integer","description":"Number of elements to be requested per page. Number must be between 1 and 100. Default is 20\n"},"next":{"type":"string","description":"URL relative to the last item in the response.\n"},"offset":{"type":"integer","description":"The page offset for the pagination request. Index of the first element. Default is 0.\n"},"previous":{"type":"string","description":"URL relative to the first item in the response.\n"},"total":{"type":"integer","description":"Total number of elements returned.\n"}},"type":"object","required":["limit","next","offset","previous","total"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteFiltersData:getRouteFiltersData":{"properties":{"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getRouteFiltersDataChangeLog:getRouteFiltersDataChangeLog"}},"changes":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getRouteFiltersDataChange:getRouteFiltersDataChange"},"description":"An object with the details of the previous change applied on the Route Filter\n"},"connectionsCount":{"type":"integer","description":"The number of Fabric Connections that this Route Filter is attached to\n"},"description":{"type":"string","description":"Optional description to add to the Route Filter you will be creating\n"},"href":{"type":"string","description":"Route filter URI\n"},"name":{"type":"string","description":"Name of the Route Filter\n"},"notMatchedRuleAction":{"type":"string","description":"The action that will be taken on ip ranges that don't match the rules present within the Route Filter\n"},"projects":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getRouteFiltersDataProject:getRouteFiltersDataProject"},"description":"The Project object that contains project_id and href that is related to the Fabric Project containing connections the Route Filter can be attached to\n"},"rulesCount":{"type":"integer","description":"The number of Route Filter Rules attached to this Route Filter\n"},"state":{"type":"string","description":"State of the Route Filter in its lifecycle\n"},"type":{"type":"string","description":"Route Filter Type. One of [ \"BGP_IPv4_PREFIX_FILTER\", \"BGP_IPv6_PREFIX_FILTER\" ]\n"},"uuid":{"type":"string","description":"Equinix Assigned ID for Route Filter\n"}},"type":"object","required":["changes","changeLogs","connectionsCount","description","href","name","notMatchedRuleAction","projects","rulesCount","state","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteFiltersDataChange:getRouteFiltersDataChange":{"properties":{"href":{"type":"string","description":"The URI of the previous Route Filter Change\n"},"type":{"type":"string","description":"Type of change. One of [ \"BGP_IPv4_PREFIX_FILTER_UPDATE\",\"BGP_IPv4_PREFIX_FILTER_CREATION\",\"BGP_IPv4_PREFIX_FILTER_DELETION\",\"BGP_IPv6_PREFIX_FILTER_UPDATE\",\"BGP_IPv6_PREFIX_FILTER_CREATION\",\"BGP_IPv6_PREFIX_FILTER_DELETION\" ]\n"},"uuid":{"type":"string","description":"Unique identifier for the previous change\n"}},"type":"object","required":["href","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteFiltersDataChangeLog:getRouteFiltersDataChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteFiltersDataProject:getRouteFiltersDataProject":{"properties":{"href":{"type":"string","description":"URI of the Fabric Project\n"},"projectId":{"type":"string","description":"Project id associated with Fabric Project\n"}},"type":"object","required":["href","projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteFiltersFilter:getRouteFiltersFilter":{"properties":{"operator":{"type":"string","description":"Possible operators to use on the filter property. Can be one of the following: [ \"=\", \"!=\", \"[NOT] LIKE\", \"[NOT] IN\", \"ILIKE\" ]\n"},"property":{"type":"string","description":"The API response property which you want to filter your request on. Can be one of the following: \"/type\", \"/name\", \"/project/projectId\", \"/uuid\", \"/state\"\n"},"values":{"type":"array","items":{"type":"string"},"description":"The values that you want to apply the property+operator combination to in order to filter your data search\n"}},"type":"object","required":["operator","property","values"]},"equinix:fabric/getRouteFiltersPagination:getRouteFiltersPagination":{"properties":{"limit":{"type":"integer","description":"Number of elements to be requested per page. Number must be between 1 and 100. Default is 20\n"},"next":{"type":"string","description":"URL relative to the last item in the response.\n"},"offset":{"type":"integer","description":"The page offset for the pagination request. Index of the first element. Default is 0.\n"},"previous":{"type":"string","description":"URL relative to the first item in the response.\n"},"total":{"type":"integer","description":"Total number of elements returned.\n"}},"type":"object","required":["limit","next","offset","previous","total"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRouteFiltersSort:getRouteFiltersSort":{"properties":{"direction":{"type":"string","description":"The sorting direction. Can be one of: [DESC, ASC], Defaults to DESC\n"},"property":{"type":"string","description":"The property name to use in sorting. Can be one of the following: [/type, /uuid, /name, /project/projectId, /state, /notMatchedRuleAction, /connectionsCount, /changeLog/createdDateTime, /changeLog/updatedDateTime], Defaults to /changeLog/updatedDateTime\n"}},"type":"object"},"equinix:fabric/getRoutingProtocolBfd:getRoutingProtocolBfd":{"properties":{"enabled":{"type":"boolean","description":"Bidirectional Forwarding Detection enablement\n"},"interval":{"type":"string","description":"Interval range between the received BFD control packets\n"}},"type":"object","required":["enabled"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRoutingProtocolBgpIpv4:getRoutingProtocolBgpIpv4":{"properties":{"customerPeerIp":{"type":"string","description":"Customer side peering ip\n"},"enabled":{"type":"boolean","description":"Admin status for the BGP session\n"},"equinixPeerIp":{"type":"string","description":"Equinix side peering ip\n"},"inboundMed":{"type":"integer","description":"Inbound Multi Exit Discriminator attribute\n"},"outboundAsPrependCount":{"type":"string","description":"AS path prepend count. One of: 0, 1, 3, 5\n"},"outboundMed":{"type":"integer","description":"Outbound Multi Exit Discriminator attribute\n"}},"type":"object","required":["customerPeerIp","equinixPeerIp","inboundMed","outboundAsPrependCount","outboundMed"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRoutingProtocolBgpIpv6:getRoutingProtocolBgpIpv6":{"properties":{"customerPeerIp":{"type":"string","description":"Customer side peering ip\n"},"enabled":{"type":"boolean","description":"Admin status for the BGP session\n"},"equinixPeerIp":{"type":"string","description":"Equinix side peering ip\n"},"inboundMed":{"type":"integer","description":"Inbound Multi Exit Discriminator attribute\n"},"outboundAsPrependCount":{"type":"string","description":"AS path prepend count. One of: 0, 1, 3, 5\n"},"outboundMed":{"type":"integer","description":"Outbound Multi Exit Discriminator attribute\n"}},"type":"object","required":["customerPeerIp","equinixPeerIp","inboundMed","outboundAsPrependCount","outboundMed"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRoutingProtocolChange:getRoutingProtocolChange":{"properties":{"href":{"type":"string","description":"Routing Protocol Change URI\n"},"type":{"type":"string","description":"Type of change\n"},"uuid":{"type":"string","description":"Uniquely identifies a change\n"}},"type":"object","required":["href","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRoutingProtocolChangeLog:getRoutingProtocolChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRoutingProtocolDirectIpv4:getRoutingProtocolDirectIpv4":{"properties":{"equinixIfaceIp":{"type":"string","description":"Equinix side Interface IP address\n"}},"type":"object","required":["equinixIfaceIp"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRoutingProtocolDirectIpv6:getRoutingProtocolDirectIpv6":{"properties":{"equinixIfaceIp":{"type":"string","description":"Equinix side Interface IP address\n"}},"type":"object"},"equinix:fabric/getRoutingProtocolOperation:getRoutingProtocolOperation":{"properties":{"errors":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getRoutingProtocolOperationError:getRoutingProtocolOperationError"},"description":"Errors occurred\n"}},"type":"object","required":["errors"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRoutingProtocolOperationError:getRoutingProtocolOperationError":{"properties":{"additionalInfos":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getRoutingProtocolOperationErrorAdditionalInfo:getRoutingProtocolOperationErrorAdditionalInfo"},"description":"Pricing error additional Info\n"},"correlationId":{"type":"string","description":"CorrelationId\n"},"details":{"type":"string","description":"Details\n"},"errorCode":{"type":"string","description":"Error  code\n"},"errorMessage":{"type":"string","description":"Error Message\n"},"help":{"type":"string","description":"Help\n"}},"type":"object","required":["additionalInfos","correlationId","details","errorCode","errorMessage","help"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getRoutingProtocolOperationErrorAdditionalInfo:getRoutingProtocolOperationErrorAdditionalInfo":{"properties":{"property":{"type":"string","description":"Property at which the error potentially occurred\n"},"reason":{"type":"string","description":"Reason for the error\n"}},"type":"object","required":["property","reason"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfileAccessPointTypeConfig:getServiceProfileAccessPointTypeConfig":{"properties":{"allowBandwidthAutoApproval":{"type":"boolean","description":"Setting to enable or disable the ability of the buyer to change connection bandwidth without approval of the seller\n"},"allowBandwidthUpgrade":{"type":"boolean","description":"Availability of a bandwidth upgrade. The default is false\n"},"allowCustomBandwidth":{"type":"boolean","description":"Setting to enable or disable the ability of the buyer to customize the bandwidth\n"},"allowRemoteConnections":{"type":"boolean","description":"Setting to allow or prohibit remote connections to the service profile\n"},"apiConfig":{"$ref":"#/types/equinix:fabric/getServiceProfileAccessPointTypeConfigApiConfig:getServiceProfileAccessPointTypeConfigApiConfig","description":"Api configuration details\n"},"authenticationKey":{"$ref":"#/types/equinix:fabric/getServiceProfileAccessPointTypeConfigAuthenticationKey:getServiceProfileAccessPointTypeConfigAuthenticationKey","description":"Authentication key details\n"},"bandwidthAlertThreshold":{"type":"number","description":"Percentage of port bandwidth at which an allocation alert is generated\n"},"connectionLabel":{"type":"string","description":"Custom name for Connection\n"},"connectionRedundancyRequired":{"type":"boolean","description":"Mandate redundant connections\n"},"enableAutoGenerateServiceKey":{"type":"boolean","description":"Enable auto generate service key\n"},"linkProtocolConfig":{"$ref":"#/types/equinix:fabric/getServiceProfileAccessPointTypeConfigLinkProtocolConfig:getServiceProfileAccessPointTypeConfigLinkProtocolConfig","description":"Link protocol configuration details\n"},"selectiveRedundancy":{"type":"boolean","description":"Optional redundant connections\n"},"supportedBandwidths":{"type":"array","items":{"type":"integer"},"description":"Supported bandwidths\n"},"type":{"type":"string","description":"Type of access point type config - VD, COLO\n"},"uuid":{"type":"string","description":"Colo/Port Uuid\n"}},"type":"object","required":["type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfileAccessPointTypeConfigApiConfig:getServiceProfileAccessPointTypeConfigApiConfig":{"properties":{"allowOverSubscription":{"type":"boolean","description":"Setting showing that oversubscription support is available (true) or not (false). The default is false\n"},"apiAvailable":{"type":"boolean","description":"Indicates if it's possible to establish connections based on the given service profile using the Equinix Fabric API.\n"},"bandwidthFromApi":{"type":"boolean","description":"Indicates if the connection bandwidth can be obtained directly from the cloud service provider.\n"},"equinixManagedPort":{"type":"boolean","description":"Setting indicating that the port is managed by Equinix (true) or not (false)\n"},"equinixManagedVlan":{"type":"boolean","description":"Setting indicating that the VLAN is managed by Equinix (true) or not (false)\n"},"integrationId":{"type":"string","description":"A unique identifier issued during onboarding and used to integrate the customer's service profile with the Equinix Fabric API.\n"},"overSubscriptionLimit":{"type":"integer","description":"Port bandwidth multiplier that determines the total bandwidth that can be allocated to users creating connections to your services. For example, a 10 Gbps port combined with an overSubscriptionLimit parameter value of 10 allows your subscribers to create connections with a total bandwidth of 100 Gbps.\n"}},"type":"object"},"equinix:fabric/getServiceProfileAccessPointTypeConfigAuthenticationKey:getServiceProfileAccessPointTypeConfigAuthenticationKey":{"properties":{"description":{"type":"string","description":"Description of authorization key\n"},"label":{"type":"string","description":"Name of the parameter that must be provided to authorize the connection.\n"},"required":{"type":"boolean","description":"Requirement to configure an authentication key.\n"}},"type":"object"},"equinix:fabric/getServiceProfileAccessPointTypeConfigLinkProtocolConfig:getServiceProfileAccessPointTypeConfigLinkProtocolConfig":{"properties":{"encapsulation":{"type":"string","description":"Data frames encapsulation standard.UNTAGGED - Untagged encapsulation for EPL connections. DOT1Q - DOT1Q encapsulation standard. QINQ - QINQ encapsulation standard.\n"},"encapsulationStrategy":{"type":"string","description":"Additional tagging information required by the seller profile.\n"},"reuseVlanSTag":{"type":"boolean","description":"Automatically accept subsequent DOT1Q to QINQ connections that use the same authentication key. These connections will have the same VLAN S-tag assigned as the initial connection.\n"}},"type":"object"},"equinix:fabric/getServiceProfileAccount:getServiceProfileAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","required":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfileChangeLog:getServiceProfileChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfileCustomField:getServiceProfileCustomField":{"properties":{"captureInEmail":{"type":"boolean","description":"Required field\n"},"dataType":{"type":"string","description":"Data type\n"},"description":{"type":"string","description":"Description\n"},"label":{"type":"string","description":"Label\n"},"options":{"type":"array","items":{"type":"string"},"description":"Options\n"},"required":{"type":"boolean","description":"Required field\n"}},"type":"object","required":["dataType","label","required"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfileMarketingInfo:getServiceProfileMarketingInfo":{"properties":{"logo":{"type":"string","description":"Logo\n"},"processSteps":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceProfileMarketingInfoProcessStep:getServiceProfileMarketingInfoProcessStep"},"description":"Process Step\n"},"promotion":{"type":"boolean","description":"Promotion\n"}},"type":"object"},"equinix:fabric/getServiceProfileMarketingInfoProcessStep:getServiceProfileMarketingInfoProcessStep":{"properties":{"description":{"type":"string","description":"Description\n"},"subTitle":{"type":"string","description":"Sub Title\n"},"title":{"type":"string","description":"Title\n"}},"type":"object"},"equinix:fabric/getServiceProfileMetro:getServiceProfileMetro":{"properties":{"code":{"type":"string","description":"Metro Code - Example SV\n"},"displayName":{"type":"string","description":"Display Name\n"},"ibxs":{"type":"array","items":{"type":"string"},"description":"IBX- Equinix International Business Exchange list\n"},"inTrail":{"type":"boolean","description":"In Trail\n"},"name":{"type":"string","description":"Metro Name\n"},"sellerRegions":{"type":"object","additionalProperties":{"type":"string"},"description":"Seller Regions\n"}},"type":"object"},"equinix:fabric/getServiceProfileNotification:getServiceProfileNotification":{"properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"sendInterval":{"type":"string","description":"Send interval\n"},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS\n"}},"type":"object","required":["emails","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfilePort:getServiceProfilePort":{"properties":{"crossConnectId":{"type":"string","description":"Cross Connect Id\n"},"location":{"$ref":"#/types/equinix:fabric/getServiceProfilePortLocation:getServiceProfilePortLocation","description":"Colo/Port Location\n"},"sellerRegion":{"type":"string","description":"Seller Region\n"},"sellerRegionDescription":{"type":"string","description":"Seller Region details\n"},"type":{"type":"string","description":"Colo/Port Type\n"},"uuid":{"type":"string","description":"Colo/Port Uuid\n"}},"type":"object","required":["type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfilePortLocation:getServiceProfilePortLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfileProject:getServiceProfileProject":{"properties":{"href":{"type":"string","description":"Unique Resource URL\n"},"projectId":{"type":"string","description":"Project Id\n"}},"type":"object","required":["href","projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfileVirtualDevice:getServiceProfileVirtualDevice":{"properties":{"interfaceUuid":{"type":"string","description":"Device Interface Uuid\n"},"location":{"$ref":"#/types/equinix:fabric/getServiceProfileVirtualDeviceLocation:getServiceProfileVirtualDeviceLocation","description":"Device Location\n"},"type":{"type":"string","description":"Virtual Device Type\n"},"uuid":{"type":"string","description":"Virtual Device Uuid\n"}},"type":"object","required":["type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfileVirtualDeviceLocation:getServiceProfileVirtualDeviceLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfilesDatum:getServiceProfilesDatum":{"properties":{"accessPointTypeConfigs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatumAccessPointTypeConfig:getServiceProfilesDatumAccessPointTypeConfig"},"description":"Access point config information\n"},"accounts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatumAccount:getServiceProfilesDatumAccount"},"description":"Service Profile Owner Account Information\n"},"allowedEmails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatumChangeLog:getServiceProfilesDatumChangeLog"},"description":"Captures connection lifecycle change information\n"},"customFields":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatumCustomField:getServiceProfilesDatumCustomField"},"description":"Custom Fields\n"},"description":{"type":"string","description":"User-provided service description\n"},"href":{"type":"string","description":"Service Profile URI response attribute\n"},"marketingInfos":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatumMarketingInfo:getServiceProfilesDatumMarketingInfo"},"description":"Marketing Info\n"},"metros":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatumMetro:getServiceProfilesDatumMetro"},"description":"Access point config information\n"},"name":{"type":"string","description":"Customer-assigned service profile name\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatumNotification:getServiceProfilesDatumNotification"},"description":"Preferences for notifications on connection configuration or status changes\n"},"ports":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatumPort:getServiceProfilesDatumPort"},"description":"Ports\n"},"projects":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatumProject:getServiceProfilesDatumProject"},"description":"Project information\n"},"selfProfile":{"type":"boolean","description":"Self Profile indicating if the profile is created for customer's  self use\n"},"state":{"type":"string","description":"Service profile state - ACTIVE, PENDING_APPROVAL, DELETED, REJECTED\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags attached to the connection\n"},"type":{"type":"string","description":"Service profile type - L2_PROFILE, L3_PROFILE, ECIA_PROFILE, ECMC_PROFILE, IA_PROFILE, IX_PROFILE\n"},"uuid":{"type":"string","description":"Equinix assigned service profile identifier\n"},"viewPoint":{"type":"string","description":"Flips view between buyer and seller representation. Available values : aSide, zSide. Default value : aSide\n"},"virtualDevices":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatumVirtualDevice:getServiceProfilesDatumVirtualDevice"},"description":"Virtual Devices\n"},"visibility":{"type":"string","description":"Service profile visibility - PUBLIC, PRIVATE\n"}},"type":"object","required":["accessPointTypeConfigs","accounts","allowedEmails","changeLogs","customFields","description","href","marketingInfos","metros","name","notifications","ports","projects","selfProfile","state","tags","type","uuid","viewPoint","virtualDevices","visibility"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfilesDatumAccessPointTypeConfig:getServiceProfilesDatumAccessPointTypeConfig":{"properties":{"allowBandwidthAutoApproval":{"type":"boolean","description":"Setting to enable or disable the ability of the buyer to change connection bandwidth without approval of the seller\n"},"allowBandwidthUpgrade":{"type":"boolean","description":"Availability of a bandwidth upgrade. The default is false\n"},"allowCustomBandwidth":{"type":"boolean","description":"Setting to enable or disable the ability of the buyer to customize the bandwidth\n"},"allowRemoteConnections":{"type":"boolean","description":"Setting to allow or prohibit remote connections to the service profile\n"},"apiConfig":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatumAccessPointTypeConfigApiConfig:getServiceProfilesDatumAccessPointTypeConfigApiConfig","description":"Api configuration details\n"},"authenticationKey":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatumAccessPointTypeConfigAuthenticationKey:getServiceProfilesDatumAccessPointTypeConfigAuthenticationKey","description":"Authentication key details\n"},"bandwidthAlertThreshold":{"type":"number","description":"Percentage of port bandwidth at which an allocation alert is generated\n"},"connectionLabel":{"type":"string","description":"Custom name for Connection\n"},"connectionRedundancyRequired":{"type":"boolean","description":"Mandate redundant connections\n"},"enableAutoGenerateServiceKey":{"type":"boolean","description":"Enable auto generate service key\n"},"linkProtocolConfig":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatumAccessPointTypeConfigLinkProtocolConfig:getServiceProfilesDatumAccessPointTypeConfigLinkProtocolConfig","description":"Link protocol configuration details\n"},"selectiveRedundancy":{"type":"boolean","description":"Optional redundant connections\n"},"supportedBandwidths":{"type":"array","items":{"type":"integer"},"description":"Supported bandwidths\n"},"type":{"type":"string","description":"Type of access point type config - VD, COLO\n"},"uuid":{"type":"string","description":"Colo/Port Uuid\n"}},"type":"object","required":["type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfilesDatumAccessPointTypeConfigApiConfig:getServiceProfilesDatumAccessPointTypeConfigApiConfig":{"properties":{"allowOverSubscription":{"type":"boolean","description":"Setting showing that oversubscription support is available (true) or not (false). The default is false\n"},"apiAvailable":{"type":"boolean","description":"Indicates if it's possible to establish connections based on the given service profile using the Equinix Fabric API.\n"},"bandwidthFromApi":{"type":"boolean","description":"Indicates if the connection bandwidth can be obtained directly from the cloud service provider.\n"},"equinixManagedPort":{"type":"boolean","description":"Setting indicating that the port is managed by Equinix (true) or not (false)\n"},"equinixManagedVlan":{"type":"boolean","description":"Setting indicating that the VLAN is managed by Equinix (true) or not (false)\n"},"integrationId":{"type":"string","description":"A unique identifier issued during onboarding and used to integrate the customer's service profile with the Equinix Fabric API.\n"},"overSubscriptionLimit":{"type":"integer","description":"Port bandwidth multiplier that determines the total bandwidth that can be allocated to users creating connections to your services. For example, a 10 Gbps port combined with an overSubscriptionLimit parameter value of 10 allows your subscribers to create connections with a total bandwidth of 100 Gbps.\n"}},"type":"object"},"equinix:fabric/getServiceProfilesDatumAccessPointTypeConfigAuthenticationKey:getServiceProfilesDatumAccessPointTypeConfigAuthenticationKey":{"properties":{"description":{"type":"string","description":"Description of authorization key\n"},"label":{"type":"string","description":"Name of the parameter that must be provided to authorize the connection.\n"},"required":{"type":"boolean","description":"Requirement to configure an authentication key.\n"}},"type":"object"},"equinix:fabric/getServiceProfilesDatumAccessPointTypeConfigLinkProtocolConfig:getServiceProfilesDatumAccessPointTypeConfigLinkProtocolConfig":{"properties":{"encapsulation":{"type":"string","description":"Data frames encapsulation standard.UNTAGGED - Untagged encapsulation for EPL connections. DOT1Q - DOT1Q encapsulation standard. QINQ - QINQ encapsulation standard.\n"},"encapsulationStrategy":{"type":"string","description":"Additional tagging information required by the seller profile.\n"},"reuseVlanSTag":{"type":"boolean","description":"Automatically accept subsequent DOT1Q to QINQ connections that use the same authentication key. These connections will have the same VLAN S-tag assigned as the initial connection.\n"}},"type":"object"},"equinix:fabric/getServiceProfilesDatumAccount:getServiceProfilesDatumAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","required":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfilesDatumChangeLog:getServiceProfilesDatumChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfilesDatumCustomField:getServiceProfilesDatumCustomField":{"properties":{"captureInEmail":{"type":"boolean","description":"Required field\n"},"dataType":{"type":"string","description":"Data type\n"},"description":{"type":"string","description":"Description\n"},"label":{"type":"string","description":"Label\n"},"options":{"type":"array","items":{"type":"string"},"description":"Options\n"},"required":{"type":"boolean","description":"Required field\n"}},"type":"object","required":["dataType","label","required"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfilesDatumMarketingInfo:getServiceProfilesDatumMarketingInfo":{"properties":{"logo":{"type":"string","description":"Logo\n"},"processSteps":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatumMarketingInfoProcessStep:getServiceProfilesDatumMarketingInfoProcessStep"},"description":"Process Step\n"},"promotion":{"type":"boolean","description":"Promotion\n"}},"type":"object"},"equinix:fabric/getServiceProfilesDatumMarketingInfoProcessStep:getServiceProfilesDatumMarketingInfoProcessStep":{"properties":{"description":{"type":"string","description":"Description\n"},"subTitle":{"type":"string","description":"Sub Title\n"},"title":{"type":"string","description":"Title\n"}},"type":"object"},"equinix:fabric/getServiceProfilesDatumMetro:getServiceProfilesDatumMetro":{"properties":{"code":{"type":"string","description":"Metro Code - Example SV\n"},"displayName":{"type":"string","description":"Display Name\n"},"ibxs":{"type":"array","items":{"type":"string"},"description":"IBX- Equinix International Business Exchange list\n"},"inTrail":{"type":"boolean","description":"In Trail\n"},"name":{"type":"string","description":"Metro Name\n"},"sellerRegions":{"type":"object","additionalProperties":{"type":"string"},"description":"Seller Regions\n"}},"type":"object"},"equinix:fabric/getServiceProfilesDatumNotification:getServiceProfilesDatumNotification":{"properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"sendInterval":{"type":"string","description":"Send interval\n"},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS\n"}},"type":"object","required":["emails","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfilesDatumPort:getServiceProfilesDatumPort":{"properties":{"crossConnectId":{"type":"string","description":"Cross Connect Id\n"},"location":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatumPortLocation:getServiceProfilesDatumPortLocation","description":"Colo/Port Location\n"},"sellerRegion":{"type":"string","description":"Seller Region\n"},"sellerRegionDescription":{"type":"string","description":"Seller Region details\n"},"type":{"type":"string","description":"Colo/Port Type\n"},"uuid":{"type":"string","description":"Colo/Port Uuid\n"}},"type":"object","required":["type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfilesDatumPortLocation:getServiceProfilesDatumPortLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfilesDatumProject:getServiceProfilesDatumProject":{"properties":{"href":{"type":"string","description":"Unique Resource URL\n"},"projectId":{"type":"string","description":"Project Id\n"}},"type":"object","required":["href","projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfilesDatumVirtualDevice:getServiceProfilesDatumVirtualDevice":{"properties":{"interfaceUuid":{"type":"string","description":"Device Interface Uuid\n"},"location":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatumVirtualDeviceLocation:getServiceProfilesDatumVirtualDeviceLocation","description":"Device Location\n"},"type":{"type":"string","description":"Virtual Device Type\n"},"uuid":{"type":"string","description":"Virtual Device Uuid\n"}},"type":"object","required":["type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfilesDatumVirtualDeviceLocation:getServiceProfilesDatumVirtualDeviceLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceProfilesFilter:getServiceProfilesFilter":{"properties":{"operator":{"type":"string","description":"Operators to use on your filtered field with the values given. One of [=]\n"},"property":{"type":"string","description":"Property to apply operator and values to. One of [/name /uuid /state /metros/code /visibility /type /project/projectId]\n"},"values":{"type":"array","items":{"type":"string"},"description":"The values that you want to apply the property+operator combination to in order to filter your data search\n"}},"type":"object","required":["operator","property","values"]},"equinix:fabric/getServiceProfilesPagination:getServiceProfilesPagination":{"properties":{"limit":{"type":"integer","description":"Number of elements to be requested per page. Number must be between 1 and 100. Default is 20\n"},"offset":{"type":"integer","description":"The page offset for the pagination request. Index of the first element. Default is 0.\n"}},"type":"object"},"equinix:fabric/getServiceProfilesSort:getServiceProfilesSort":{"properties":{"direction":{"type":"string","description":"The sorting direction. Can be one of: [DESC, ASC], Defaults to DESC\n"},"property":{"type":"string","description":"The property name to use in sorting. One of [/name /uuid /state /location/metroCode /location/metroName /package/code /changeLog/createdDateTime /changeLog/updatedDateTime]. Defaults to /changeLog/updatedDateTime\n"}},"type":"object"},"equinix:fabric/getServiceTokenAccount:getServiceTokenAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","required":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenChangeLog:getServiceTokenChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenNotification:getServiceTokenNotification":{"properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"sendInterval":{"type":"string","description":"Send interval\n"},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS\n"}},"type":"object","required":["emails","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenProject:getServiceTokenProject":{"properties":{"href":{"type":"string","description":"Unique Resource URL\n"},"projectId":{"type":"string","description":"Project Id\n"}},"type":"object","required":["href","projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnection:getServiceTokenServiceTokenConnection":{"properties":{"aSides":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionASide:getServiceTokenServiceTokenConnectionASide"},"description":"A-Side Connection link protocol,virtual device or network configuration\n"},"allowCustomBandwidth":{"type":"boolean","description":"Allow custom bandwidth value\n"},"allowRemoteConnection":{"type":"boolean","description":"Authorization to connect remotely\n"},"bandwidthLimit":{"type":"integer","description":"Connection bandwidth limit in Mbps\n"},"supportedBandwidths":{"type":"array","items":{"type":"integer"},"description":"List of permitted bandwidths'; For Port-based Service Tokens, the maximum allowable bandwidth is 50 Gbps, while for Virtual Device-based Service Tokens, it is limited to 10 Gbps\n"},"type":{"type":"string","description":"Type of Connection supported by Service Token you will create; EVPL_VC, EVPLAN_VC, EPLAN_VC, IPWAN_VC\n"},"uuid":{"type":"string","description":"Equinix-assigned connection identifier\n"},"zSides":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionZSide:getServiceTokenServiceTokenConnectionZSide"},"description":"Z-Side Connection link protocol,virtual device or network configuration\n"}},"type":"object","required":["aSides","allowCustomBandwidth","allowRemoteConnection","bandwidthLimit","supportedBandwidths","uuid","zSides"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionASide:getServiceTokenServiceTokenConnectionASide":{"properties":{"accessPointSelectors":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionASideAccessPointSelector:getServiceTokenServiceTokenConnectionASideAccessPointSelector"},"description":"List of criteria for selecting network access points with optimal efficiency, security, compatibility, and availability\n"}},"type":"object","required":["accessPointSelectors"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionASideAccessPointSelector:getServiceTokenServiceTokenConnectionASideAccessPointSelector":{"properties":{"interface":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionASideAccessPointSelectorInterface:getServiceTokenServiceTokenConnectionASideAccessPointSelectorInterface","description":"Virtual Device Interface Configuration\n"},"linkProtocol":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionASideAccessPointSelectorLinkProtocol:getServiceTokenServiceTokenConnectionASideAccessPointSelectorLinkProtocol","description":"Link protocol Configuration\n"},"network":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionASideAccessPointSelectorNetwork:getServiceTokenServiceTokenConnectionASideAccessPointSelectorNetwork","description":"Network Configuration\n"},"port":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionASideAccessPointSelectorPort:getServiceTokenServiceTokenConnectionASideAccessPointSelectorPort","description":"Port Configuration\n"},"type":{"type":"string","description":"Type of Access point; COLO, VD, NETWORK\n"},"virtualDevice":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionASideAccessPointSelectorVirtualDevice:getServiceTokenServiceTokenConnectionASideAccessPointSelectorVirtualDevice","description":"Virtual Device Configuration\n"}},"type":"object","required":["network","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionASideAccessPointSelectorInterface:getServiceTokenServiceTokenConnectionASideAccessPointSelectorInterface":{"properties":{"id":{"type":"integer","description":"id\n"},"type":{"type":"string","description":"Interface type\n"},"uuid":{"type":"string","description":"Equinix-assigned interface identifier\n"}},"type":"object","required":["id","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionASideAccessPointSelectorLinkProtocol:getServiceTokenServiceTokenConnectionASideAccessPointSelectorLinkProtocol":{"properties":{"type":{"type":"string","description":"Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN\n"},"vlanCTag":{"type":"integer","description":"Vlan Customer Tag information, vlanCTag value specified for QINQ connections\n"},"vlanSTag":{"type":"integer","description":"Vlan Provider Tag information, vlanSTag value specified for QINQ connections\n"},"vlanTag":{"type":"integer","description":"Vlan Tag information, vlanTag value specified for DOT1Q connections\n"}},"type":"object","required":["type","vlanCTag","vlanSTag","vlanTag"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionASideAccessPointSelectorNetwork:getServiceTokenServiceTokenConnectionASideAccessPointSelectorNetwork":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"locations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionASideAccessPointSelectorNetworkLocation:getServiceTokenServiceTokenConnectionASideAccessPointSelectorNetworkLocation"},"description":"Location\n"},"name":{"type":"string","description":"Network Name\n"},"scope":{"type":"string","description":"Scope of Network\n"},"type":{"type":"string","description":"Type of Network\n"},"uuid":{"type":"string","description":"Equinix-assigned Network identifier\n"}},"type":"object","required":["href","locations","name","scope","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionASideAccessPointSelectorNetworkLocation:getServiceTokenServiceTokenConnectionASideAccessPointSelectorNetworkLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionASideAccessPointSelectorPort:getServiceTokenServiceTokenConnectionASideAccessPointSelectorPort":{"properties":{"accountName":{"type":"string","description":"Account Name\n"},"bandwidth":{"type":"integer","description":"Port Bandwidth\n"},"cvpId":{"type":"integer","description":"Customer virtual port Id\n"},"encapsulationProtocolType":{"type":"string","description":"Port Encapsulation\n"},"href":{"type":"string","description":"Unique Resource Identifier\n"},"locations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionASideAccessPointSelectorPortLocation:getServiceTokenServiceTokenConnectionASideAccessPointSelectorPortLocation"},"description":"Port Location\n"},"portName":{"type":"string","description":"Port Name\n"},"priority":{"type":"string","description":"Port Priority\n"},"type":{"type":"string","description":"Type of Port\n"},"uuid":{"type":"string","description":"Equinix-assigned Port identifier\n"}},"type":"object","required":["accountName","bandwidth","cvpId","encapsulationProtocolType","href","locations","portName","priority","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionASideAccessPointSelectorPortLocation:getServiceTokenServiceTokenConnectionASideAccessPointSelectorPortLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionASideAccessPointSelectorVirtualDevice:getServiceTokenServiceTokenConnectionASideAccessPointSelectorVirtualDevice":{"properties":{"cluster":{"type":"string","description":"Virtual Device Cluster Information\n"},"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Customer-assigned Virtual Device Name\n"},"type":{"type":"string","description":"Virtual Device type\n"},"uuid":{"type":"string","description":"Equinix-assigned Virtual Device identifier\n"}},"type":"object","required":["cluster","href","name","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionZSide:getServiceTokenServiceTokenConnectionZSide":{"properties":{"accessPointSelectors":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionZSideAccessPointSelector:getServiceTokenServiceTokenConnectionZSideAccessPointSelector"},"description":"List of criteria for selecting network access points with optimal efficiency, security, compatibility, and availability\n"}},"type":"object","required":["accessPointSelectors"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionZSideAccessPointSelector:getServiceTokenServiceTokenConnectionZSideAccessPointSelector":{"properties":{"interface":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionZSideAccessPointSelectorInterface:getServiceTokenServiceTokenConnectionZSideAccessPointSelectorInterface","description":"Virtual Device Interface Configuration\n"},"linkProtocol":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionZSideAccessPointSelectorLinkProtocol:getServiceTokenServiceTokenConnectionZSideAccessPointSelectorLinkProtocol","description":"Link protocol Configuration\n"},"network":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetwork:getServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetwork","description":"Network Configuration\n"},"port":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionZSideAccessPointSelectorPort:getServiceTokenServiceTokenConnectionZSideAccessPointSelectorPort","description":"Port Configuration\n"},"type":{"type":"string","description":"Type of Access point; COLO, VD, NETWORK\n"},"virtualDevice":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionZSideAccessPointSelectorVirtualDevice:getServiceTokenServiceTokenConnectionZSideAccessPointSelectorVirtualDevice","description":"Virtual Device Configuration\n"}},"type":"object","required":["network","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionZSideAccessPointSelectorInterface:getServiceTokenServiceTokenConnectionZSideAccessPointSelectorInterface":{"properties":{"id":{"type":"integer","description":"id\n"},"type":{"type":"string","description":"Interface type\n"},"uuid":{"type":"string","description":"Equinix-assigned interface identifier\n"}},"type":"object","required":["id","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionZSideAccessPointSelectorLinkProtocol:getServiceTokenServiceTokenConnectionZSideAccessPointSelectorLinkProtocol":{"properties":{"type":{"type":"string","description":"Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN\n"},"vlanCTag":{"type":"integer","description":"Vlan Customer Tag information, vlanCTag value specified for QINQ connections\n"},"vlanSTag":{"type":"integer","description":"Vlan Provider Tag information, vlanSTag value specified for QINQ connections\n"},"vlanTag":{"type":"integer","description":"Vlan Tag information, vlanTag value specified for DOT1Q connections\n"}},"type":"object","required":["type","vlanCTag","vlanSTag","vlanTag"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetwork:getServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetwork":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"locations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetworkLocation:getServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetworkLocation"},"description":"Location\n"},"name":{"type":"string","description":"Network Name\n"},"scope":{"type":"string","description":"Scope of Network\n"},"type":{"type":"string","description":"Type of Network\n"},"uuid":{"type":"string","description":"Equinix-assigned Network identifier\n"}},"type":"object","required":["href","locations","name","scope","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetworkLocation:getServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetworkLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionZSideAccessPointSelectorPort:getServiceTokenServiceTokenConnectionZSideAccessPointSelectorPort":{"properties":{"accountName":{"type":"string","description":"Account Name\n"},"bandwidth":{"type":"integer","description":"Port Bandwidth\n"},"cvpId":{"type":"integer","description":"Customer virtual port Id\n"},"encapsulationProtocolType":{"type":"string","description":"Port Encapsulation\n"},"href":{"type":"string","description":"Unique Resource Identifier\n"},"locations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnectionZSideAccessPointSelectorPortLocation:getServiceTokenServiceTokenConnectionZSideAccessPointSelectorPortLocation"},"description":"Port Location\n"},"portName":{"type":"string","description":"Port Name\n"},"priority":{"type":"string","description":"Port Priority\n"},"type":{"type":"string","description":"Type of Port\n"},"uuid":{"type":"string","description":"Equinix-assigned Port identifier\n"}},"type":"object","required":["accountName","bandwidth","cvpId","encapsulationProtocolType","href","locations","portName","priority","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionZSideAccessPointSelectorPortLocation:getServiceTokenServiceTokenConnectionZSideAccessPointSelectorPortLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokenServiceTokenConnectionZSideAccessPointSelectorVirtualDevice:getServiceTokenServiceTokenConnectionZSideAccessPointSelectorVirtualDevice":{"properties":{"cluster":{"type":"string","description":"Virtual Device Cluster Information\n"},"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Customer-assigned Virtual Device Name\n"},"type":{"type":"string","description":"Virtual Device type\n"},"uuid":{"type":"string","description":"Equinix-assigned Virtual Device identifier\n"}},"type":"object","required":["cluster","href","name","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensData:getServiceTokensData":{"properties":{"accounts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokensDataAccount:getServiceTokensDataAccount"},"description":"Customer account information that is associated with this service token\n"},"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokensDataChangeLog:getServiceTokensDataChangeLog"},"description":"Captures connection lifecycle change information\n"},"description":{"type":"string","description":"Optional Description to the Service Token you will be creating\n"},"expirationDateTime":{"type":"string","description":"Expiration date and time of the service token; 2020-11-06T07:00:00Z\n"},"href":{"type":"string","description":"An absolute URL that is the subject of the link's context.\n"},"issuerSide":{"type":"string","description":"Information about token side; ASIDE, ZSIDE\n"},"name":{"type":"string","description":"Name of the Service Token\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokensDataNotification:getServiceTokensDataNotification"},"description":"Preferences for notifications on Service Token configuration or status changes\n"},"projects":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokensDataProject:getServiceTokensDataProject"},"description":"Project information\n"},"serviceTokenConnections":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnection:getServiceTokensDataServiceTokenConnection"},"description":"Service Token Connection Type Information\n"},"state":{"type":"string","description":"Service token state; ACTIVE, INACTIVE, EXPIRED, DELETED\n"},"type":{"type":"string","description":"Service Token Type; VC_TOKEN,EPL_TOKEN\n"},"uuid":{"type":"string","description":"Equinix-assigned service token identifier\n"}},"type":"object","required":["accounts","changeLogs","description","expirationDateTime","href","issuerSide","name","notifications","projects","serviceTokenConnections","state","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataAccount:getServiceTokensDataAccount":{"properties":{"accountName":{"type":"string","description":"Legal name of the accountholder.\n"},"accountNumber":{"type":"integer","description":"Equinix-assigned account number.\n"},"globalCustId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrgId":{"type":"string","description":"Equinix-assigned ID of the subscriber's parent organization.\n"},"globalOrganizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's parent organization.\n"},"orgId":{"type":"integer","description":"Equinix-assigned ID of the subscriber's organization.\n"},"organizationName":{"type":"string","description":"Equinix-assigned name of the subscriber's organization.\n"},"ucmId":{"type":"string","description":"Enterprise datastore id\n"}},"type":"object","required":["accountName","accountNumber","globalCustId","globalOrgId","globalOrganizationName","orgId","organizationName","ucmId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataChangeLog:getServiceTokensDataChangeLog":{"properties":{"createdBy":{"type":"string","description":"Created by User Key\n"},"createdByEmail":{"type":"string","description":"Created by User Email Address\n"},"createdByFullName":{"type":"string","description":"Created by User Full Name\n"},"createdDateTime":{"type":"string","description":"Created by Date and Time\n"},"deletedBy":{"type":"string","description":"Deleted by User Key\n"},"deletedByEmail":{"type":"string","description":"Deleted by User Email Address\n"},"deletedByFullName":{"type":"string","description":"Deleted by User Full Name\n"},"deletedDateTime":{"type":"string","description":"Deleted by Date and Time\n"},"updatedBy":{"type":"string","description":"Updated by User Key\n"},"updatedByEmail":{"type":"string","description":"Updated by User Email Address\n"},"updatedByFullName":{"type":"string","description":"Updated by User Full Name\n"},"updatedDateTime":{"type":"string","description":"Updated by Date and Time\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataNotification:getServiceTokensDataNotification":{"properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"sendInterval":{"type":"string","description":"Send interval\n"},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS\n"}},"type":"object","required":["emails","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataProject:getServiceTokensDataProject":{"properties":{"href":{"type":"string","description":"Unique Resource URL\n"},"projectId":{"type":"string","description":"Project Id\n"}},"type":"object","required":["href","projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnection:getServiceTokensDataServiceTokenConnection":{"properties":{"aSides":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionASide:getServiceTokensDataServiceTokenConnectionASide"},"description":"A-Side Connection link protocol,virtual device or network configuration\n"},"allowCustomBandwidth":{"type":"boolean","description":"Allow custom bandwidth value\n"},"allowRemoteConnection":{"type":"boolean","description":"Authorization to connect remotely\n"},"bandwidthLimit":{"type":"integer","description":"Connection bandwidth limit in Mbps\n"},"supportedBandwidths":{"type":"array","items":{"type":"integer"},"description":"List of permitted bandwidths'; For Port-based Service Tokens, the maximum allowable bandwidth is 50 Gbps, while for Virtual Device-based Service Tokens, it is limited to 10 Gbps\n"},"type":{"type":"string","description":"Type of Connection supported by Service Token you will create; EVPL_VC, EVPLAN_VC, EPLAN_VC, IPWAN_VC\n"},"uuid":{"type":"string","description":"Equinix-assigned connection identifier\n"},"zSides":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionZSide:getServiceTokensDataServiceTokenConnectionZSide"},"description":"Z-Side Connection link protocol,virtual device or network configuration\n"}},"type":"object","required":["aSides","allowCustomBandwidth","allowRemoteConnection","bandwidthLimit","supportedBandwidths","uuid","zSides"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionASide:getServiceTokensDataServiceTokenConnectionASide":{"properties":{"accessPointSelectors":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionASideAccessPointSelector:getServiceTokensDataServiceTokenConnectionASideAccessPointSelector"},"description":"List of criteria for selecting network access points with optimal efficiency, security, compatibility, and availability\n"}},"type":"object","required":["accessPointSelectors"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionASideAccessPointSelector:getServiceTokensDataServiceTokenConnectionASideAccessPointSelector":{"properties":{"interface":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorInterface:getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorInterface","description":"Virtual Device Interface Configuration\n"},"linkProtocol":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorLinkProtocol:getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorLinkProtocol","description":"Link protocol Configuration\n"},"network":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorNetwork:getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorNetwork","description":"Network Configuration\n"},"port":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorPort:getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorPort","description":"Port Configuration\n"},"type":{"type":"string","description":"Type of Access point; COLO, VD, NETWORK\n"},"virtualDevice":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorVirtualDevice:getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorVirtualDevice","description":"Virtual Device Configuration\n"}},"type":"object","required":["network","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorInterface:getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorInterface":{"properties":{"id":{"type":"integer","description":"id\n"},"type":{"type":"string","description":"Interface type\n"},"uuid":{"type":"string","description":"Equinix-assigned interface identifier\n"}},"type":"object","required":["id","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorLinkProtocol:getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorLinkProtocol":{"properties":{"type":{"type":"string","description":"Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN\n"},"vlanCTag":{"type":"integer","description":"Vlan Customer Tag information, vlanCTag value specified for QINQ connections\n"},"vlanSTag":{"type":"integer","description":"Vlan Provider Tag information, vlanSTag value specified for QINQ connections\n"},"vlanTag":{"type":"integer","description":"Vlan Tag information, vlanTag value specified for DOT1Q connections\n"}},"type":"object","required":["type","vlanCTag","vlanSTag","vlanTag"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorNetwork:getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorNetwork":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"locations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorNetworkLocation:getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorNetworkLocation"},"description":"Location\n"},"name":{"type":"string","description":"Network Name\n"},"scope":{"type":"string","description":"Scope of Network\n"},"type":{"type":"string","description":"Type of Network\n"},"uuid":{"type":"string","description":"Equinix-assigned Network identifier\n"}},"type":"object","required":["href","locations","name","scope","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorNetworkLocation:getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorNetworkLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorPort:getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorPort":{"properties":{"accountName":{"type":"string","description":"Account Name\n"},"bandwidth":{"type":"integer","description":"Port Bandwidth\n"},"cvpId":{"type":"integer","description":"Customer virtual port Id\n"},"encapsulationProtocolType":{"type":"string","description":"Port Encapsulation\n"},"href":{"type":"string","description":"Unique Resource Identifier\n"},"locations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorPortLocation:getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorPortLocation"},"description":"Port Location\n"},"portName":{"type":"string","description":"Port Name\n"},"priority":{"type":"string","description":"Port Priority\n"},"type":{"type":"string","description":"Type of Port\n"},"uuid":{"type":"string","description":"Equinix-assigned Port identifier\n"}},"type":"object","required":["accountName","bandwidth","cvpId","encapsulationProtocolType","href","locations","portName","priority","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorPortLocation:getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorPortLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorVirtualDevice:getServiceTokensDataServiceTokenConnectionASideAccessPointSelectorVirtualDevice":{"properties":{"cluster":{"type":"string","description":"Virtual Device Cluster Information\n"},"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Customer-assigned Virtual Device Name\n"},"type":{"type":"string","description":"Virtual Device type\n"},"uuid":{"type":"string","description":"Equinix-assigned Virtual Device identifier\n"}},"type":"object","required":["cluster","href","name","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionZSide:getServiceTokensDataServiceTokenConnectionZSide":{"properties":{"accessPointSelectors":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionZSideAccessPointSelector:getServiceTokensDataServiceTokenConnectionZSideAccessPointSelector"},"description":"List of criteria for selecting network access points with optimal efficiency, security, compatibility, and availability\n"}},"type":"object","required":["accessPointSelectors"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionZSideAccessPointSelector:getServiceTokensDataServiceTokenConnectionZSideAccessPointSelector":{"properties":{"interface":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorInterface:getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorInterface","description":"Virtual Device Interface Configuration\n"},"linkProtocol":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorLinkProtocol:getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorLinkProtocol","description":"Link protocol Configuration\n"},"network":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorNetwork:getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorNetwork","description":"Network Configuration\n"},"port":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorPort:getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorPort","description":"Port Configuration\n"},"type":{"type":"string","description":"Type of Access point; COLO, VD, NETWORK\n"},"virtualDevice":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorVirtualDevice:getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorVirtualDevice","description":"Virtual Device Configuration\n"}},"type":"object","required":["network","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorInterface:getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorInterface":{"properties":{"id":{"type":"integer","description":"id\n"},"type":{"type":"string","description":"Interface type\n"},"uuid":{"type":"string","description":"Equinix-assigned interface identifier\n"}},"type":"object","required":["id","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorLinkProtocol:getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorLinkProtocol":{"properties":{"type":{"type":"string","description":"Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN\n"},"vlanCTag":{"type":"integer","description":"Vlan Customer Tag information, vlanCTag value specified for QINQ connections\n"},"vlanSTag":{"type":"integer","description":"Vlan Provider Tag information, vlanSTag value specified for QINQ connections\n"},"vlanTag":{"type":"integer","description":"Vlan Tag information, vlanTag value specified for DOT1Q connections\n"}},"type":"object","required":["type","vlanCTag","vlanSTag","vlanTag"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorNetwork:getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorNetwork":{"properties":{"href":{"type":"string","description":"Unique Resource Identifier\n"},"locations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorNetworkLocation:getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorNetworkLocation"},"description":"Location\n"},"name":{"type":"string","description":"Network Name\n"},"scope":{"type":"string","description":"Scope of Network\n"},"type":{"type":"string","description":"Type of Network\n"},"uuid":{"type":"string","description":"Equinix-assigned Network identifier\n"}},"type":"object","required":["href","locations","name","scope","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorNetworkLocation:getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorNetworkLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorPort:getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorPort":{"properties":{"accountName":{"type":"string","description":"Account Name\n"},"bandwidth":{"type":"integer","description":"Port Bandwidth\n"},"cvpId":{"type":"integer","description":"Customer virtual port Id\n"},"encapsulationProtocolType":{"type":"string","description":"Port Encapsulation\n"},"href":{"type":"string","description":"Unique Resource Identifier\n"},"locations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorPortLocation:getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorPortLocation"},"description":"Port Location\n"},"portName":{"type":"string","description":"Port Name\n"},"priority":{"type":"string","description":"Port Priority\n"},"type":{"type":"string","description":"Type of Port\n"},"uuid":{"type":"string","description":"Equinix-assigned Port identifier\n"}},"type":"object","required":["accountName","bandwidth","cvpId","encapsulationProtocolType","href","locations","portName","priority","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorPortLocation:getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorPortLocation":{"properties":{"ibx":{"type":"string","description":"IBX Code\n"},"metroCode":{"type":"string","description":"Access point metro code\n"},"metroName":{"type":"string","description":"Access point metro name\n"},"region":{"type":"string","description":"Access point region\n"}},"type":"object","required":["ibx","metroCode","metroName","region"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorVirtualDevice:getServiceTokensDataServiceTokenConnectionZSideAccessPointSelectorVirtualDevice":{"properties":{"cluster":{"type":"string","description":"Virtual Device Cluster Information\n"},"href":{"type":"string","description":"Unique Resource Identifier\n"},"name":{"type":"string","description":"Customer-assigned Virtual Device Name\n"},"type":{"type":"string","description":"Virtual Device type\n"},"uuid":{"type":"string","description":"Equinix-assigned Virtual Device identifier\n"}},"type":"object","required":["cluster","href","name","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getServiceTokensFilter:getServiceTokensFilter":{"properties":{"operator":{"type":"string","description":"Possible operators to use on the filter property. Can be one of the following: [ \"=\", \"!=\", \"[NOT] LIKE\", \"[NOT] IN\", \"ILIKE\" ]\n"},"property":{"type":"string","description":"The API response property which you want to filter your request on. Can be one of the following: \"/type\", \"/name\", \"/project/projectId\", \"/uuid\", \"/state\"\n"},"values":{"type":"array","items":{"type":"string"},"description":"The values that you want to apply the property+operator combination to in order to filter your data search\n"}},"type":"object","required":["operator","property","values"]},"equinix:fabric/getServiceTokensPagination:getServiceTokensPagination":{"properties":{"limit":{"type":"integer","description":"Number of elements to be requested per page. Number must be between 1 and 100. Default is 20\n"},"next":{"type":"string","description":"URL relative to the last item in the response.\n"},"offset":{"type":"integer","description":"The page offset for the pagination request. Index of the first element. Default is 0.\n"},"previous":{"type":"string","description":"URL relative to the first item in the response.\n"},"total":{"type":"integer","description":"Total number of elements returned.\n"}},"type":"object","required":["limit","next","offset","previous","total"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamAlertRuleChangeLog:getStreamAlertRuleChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the stream resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the stream resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the stream resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the stream resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the stream resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the stream resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the stream resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the stream resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the stream resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the stream resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the stream resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the stream resource\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamAlertRuleDetectionMethod:getStreamAlertRuleDetectionMethod":{"properties":{"criticalThreshold":{"type":"string","description":"Stream alert rule metric critical threshold\n"},"operand":{"type":"string","description":"Stream alert rule metric operand\n"},"type":{"type":"string","description":"Stream Alert Rule detection method type\n"},"warningThreshold":{"type":"string","description":"Stream alert rule metric warning threshold\n"},"windowSize":{"type":"string","description":"Stream alert rule metric window size\n"}},"type":"object","required":["criticalThreshold","operand","type","warningThreshold","windowSize"],"language":{"nodejs":{"requiredInputs":["type"]}}},"equinix:fabric/getStreamAlertRuleMetricSelector:getStreamAlertRuleMetricSelector":{"properties":{"includes":{"type":"array","items":{"type":"string"},"description":"List of metrics to include\n"}},"type":"object","required":["includes"]},"equinix:fabric/getStreamAlertRuleResourceSelector:getStreamAlertRuleResourceSelector":{"properties":{"includes":{"type":"array","items":{"type":"string"},"description":"List of metrics to include\n"}},"type":"object","required":["includes"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamAlertRulesData:getStreamAlertRulesData":{"properties":{"changeLog":{"$ref":"#/types/equinix:fabric/getStreamAlertRulesDataChangeLog:getStreamAlertRulesDataChangeLog","description":"Details of the last change on the stream resource\n"},"description":{"type":"string","description":"Customer-provided stream alert rule description\n"},"detectionMethod":{"$ref":"#/types/equinix:fabric/getStreamAlertRulesDataDetectionMethod:getStreamAlertRulesDataDetectionMethod","description":"Detection method for stream alert rule\n"},"enabled":{"type":"boolean","description":"Stream subscription enabled status\n"},"href":{"type":"string","description":"Equinix assigned URI of the stream alert rule resource\n"},"metricSelector":{"$ref":"#/types/equinix:fabric/getStreamAlertRulesDataMetricSelector:getStreamAlertRulesDataMetricSelector","description":"Metric selector for the stream alert rule\n"},"name":{"type":"string","description":"Customer-provided stream alert rule name\n"},"resourceSelector":{"$ref":"#/types/equinix:fabric/getStreamAlertRulesDataResourceSelector:getStreamAlertRulesDataResourceSelector","description":"Lists of metrics to be included/excluded on the stream alert rule\n"},"state":{"type":"string","description":"Value representing provisioning status for the stream resource\n"},"type":{"type":"string","description":"Type of the stream alert rule\n"},"uuid":{"type":"string","description":"Equinix assigned unique identifier of the stream subscription resource\n"}},"type":"object","required":["changeLog","description","detectionMethod","enabled","href","metricSelector","name","resourceSelector","state","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamAlertRulesDataChangeLog:getStreamAlertRulesDataChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the stream resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the stream resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the stream resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the stream resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the stream resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the stream resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the stream resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the stream resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the stream resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the stream resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the stream resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the stream resource\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamAlertRulesDataDetectionMethod:getStreamAlertRulesDataDetectionMethod":{"properties":{"criticalThreshold":{"type":"string","description":"Stream alert rule metric critical threshold\n"},"operand":{"type":"string","description":"Stream alert rule metric operand\n"},"type":{"type":"string","description":"Stream Alert Rule detection method type\n"},"warningThreshold":{"type":"string","description":"Stream alert rule metric warning threshold\n"},"windowSize":{"type":"string","description":"Stream alert rule metric window size\n"}},"type":"object","required":["criticalThreshold","operand","type","warningThreshold","windowSize"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamAlertRulesDataMetricSelector:getStreamAlertRulesDataMetricSelector":{"properties":{"includes":{"type":"array","items":{"type":"string"},"description":"List of metrics to include\n"}},"type":"object","required":["includes"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamAlertRulesDataResourceSelector:getStreamAlertRulesDataResourceSelector":{"properties":{"includes":{"type":"array","items":{"type":"string"},"description":"List of metrics to include\n"}},"type":"object","required":["includes"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamAlertRulesPagination:getStreamAlertRulesPagination":{"properties":{"limit":{"type":"integer","description":"Maximum number of search results returned per page. Number must be between 1 and 100, and the default is 20\n"},"next":{"type":"string","description":"The URL relative to the next item in the response\n"},"offset":{"type":"integer","description":"Index of the first item returned in the response. The default is 0\n"},"previous":{"type":"string","description":"The URL relative to the previous item in the response\n"},"total":{"type":"integer","description":"The total number of alert rules available to the user making the request\n"}},"type":"object","required":["limit","next","offset","previous","total"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamAttachmentsData:getStreamAttachmentsData":{"properties":{"attachmentStatus":{"type":"string","description":"Value representing status for the stream attachment\n"},"href":{"type":"string","description":"Equinix auto generated URI to the stream attachment in Equinix Portal\n"},"metricsEnabled":{"type":"boolean","description":"Boolean value indicating enablement of metrics for this asset stream attachment\n"},"type":{"type":"string","description":"Equinix defined type for the asset stream attachment\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for the stream attachment\n"}},"type":"object","required":["attachmentStatus","href","metricsEnabled","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamAttachmentsFilter:getStreamAttachmentsFilter":{"properties":{"operator":{"type":"string","description":"Operation applied to the values of the filter\n"},"or":{"type":"boolean","description":"Boolean value to specify if this filter is a part of the OR group. Has a maximum of 3 and only counts for 1 of the 8 possible filters\n"},"property":{"type":"string","description":"Property to apply the filter to\n"},"values":{"type":"array","items":{"type":"string"},"description":"List of values to apply the operation to for the specified property\n"}},"type":"object","required":["operator","property","values"]},"equinix:fabric/getStreamAttachmentsPagination:getStreamAttachmentsPagination":{"properties":{"limit":{"type":"integer","description":"Maximum number of search results returned per page. Number must be between 1 and 100, and the default is 20\n"},"next":{"type":"string","description":"The URL relative to the next item in the response\n"},"offset":{"type":"integer","description":"Index of the first item returned in the response. The default is 0\n"},"previous":{"type":"string","description":"The URL relative to the previous item in the response\n"},"total":{"type":"integer","description":"The total number of streams available to the user making the request\n"}},"type":"object","required":["limit","next","offset","previous","total"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamAttachmentsSort:getStreamAttachmentsSort":{"properties":{"direction":{"type":"string","description":"The sorting direction of the property chosen. ASC or DESC\n"},"property":{"type":"string","description":"The field name the sorting is performed on\n"}},"type":"object","required":["direction","property"]},"equinix:fabric/getStreamChangeLog:getStreamChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the stream resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the stream resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the stream resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the stream resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the stream resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the stream resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the stream resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the stream resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the stream resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the stream resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the stream resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the stream resource\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamProject:getStreamProject":{"properties":{"projectId":{"type":"string","description":"Equinix Subscriber-assigned project ID\n"}},"type":"object","required":["projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamSubscriptionChangeLog:getStreamSubscriptionChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the stream resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the stream resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the stream resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the stream resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the stream resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the stream resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the stream resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the stream resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the stream resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the stream resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the stream resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the stream resource\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamSubscriptionEventSelector:getStreamSubscriptionEventSelector":{"properties":{"excepts":{"type":"array","items":{"type":"string"},"description":"List of events to exclude\n"},"includes":{"type":"array","items":{"type":"string"},"description":"List of events to include\n"}},"type":"object","required":["excepts","includes"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamSubscriptionMetricSelector:getStreamSubscriptionMetricSelector":{"properties":{"excepts":{"type":"array","items":{"type":"string"},"description":"List of metrics to exclude\n"},"includes":{"type":"array","items":{"type":"string"},"description":"List of metrics to include\n"}},"type":"object","required":["excepts","includes"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamSubscriptionSink:getStreamSubscriptionSink":{"properties":{"batchEnabled":{"type":"boolean","description":"Boolean switch enabling batch delivery of data\n"},"batchSizeMax":{"type":"integer","description":"Maximum size of the batch delivery if enabled\n"},"batchWaitTimeMax":{"type":"integer","description":"Maximum time to wait for batch delivery if enabled\n"},"credential":{"$ref":"#/types/equinix:fabric/getStreamSubscriptionSinkCredential:getStreamSubscriptionSinkCredential","description":"Access details for the specified sink type\n"},"host":{"type":"string","description":"Known hostname of certain data stream subscription products. Not to be confused with a variable URI\n"},"settings":{"$ref":"#/types/equinix:fabric/getStreamSubscriptionSinkSettings:getStreamSubscriptionSinkSettings","description":"Stream subscription sink settings\n"},"type":{"type":"string","description":"Type of the subscriber\n"},"uri":{"type":"string","description":"Publicly reachable http endpoint destination for data stream\n"}},"type":"object","required":["batchEnabled","batchSizeMax","batchWaitTimeMax","credential","host","settings","type","uri"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamSubscriptionSinkCredential:getStreamSubscriptionSinkCredential":{"properties":{"accessToken":{"type":"string","description":"Passed as Authorization header value\n"},"apiKey":{"type":"string","description":"Passed as Authorization header value\n"},"integrationKey":{"type":"string","description":"Passed as Authorization header value\n"},"password":{"type":"string","description":"Passed as Authorization header value\n"},"type":{"type":"string","description":"Type of the credential being passed\n"},"username":{"type":"string","description":"Passed as Authorization header value\n"}},"type":"object","required":["accessToken","apiKey","integrationKey","password","type","username"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamSubscriptionSinkSettings:getStreamSubscriptionSinkSettings":{"properties":{"applicationKey":{"type":"string"},"eventIndex":{"type":"string"},"eventUri":{"type":"string"},"format":{"type":"string"},"metricIndex":{"type":"string"},"metricUri":{"type":"string"},"source":{"type":"string"}},"type":"object","required":["applicationKey","eventIndex","eventUri","format","metricIndex","metricUri","source"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamSubscriptionsData:getStreamSubscriptionsData":{"properties":{"changeLog":{"$ref":"#/types/equinix:fabric/getStreamSubscriptionsDataChangeLog:getStreamSubscriptionsDataChangeLog","description":"Details of the last change on the stream resource\n"},"description":{"type":"string","description":"Customer-provided stream subscription description\n"},"enabled":{"type":"boolean","description":"Stream subscription enabled status\n"},"eventSelector":{"$ref":"#/types/equinix:fabric/getStreamSubscriptionsDataEventSelector:getStreamSubscriptionsDataEventSelector","description":"Lists of events to be included/excluded on the stream subscription\n"},"href":{"type":"string","description":"Equinix assigned URI of the stream subscription resource\n"},"metricSelector":{"$ref":"#/types/equinix:fabric/getStreamSubscriptionsDataMetricSelector:getStreamSubscriptionsDataMetricSelector","description":"Lists of metrics to be included/excluded on the stream subscription\n"},"name":{"type":"string","description":"Customer-provided stream subscription name\n"},"sink":{"$ref":"#/types/equinix:fabric/getStreamSubscriptionsDataSink:getStreamSubscriptionsDataSink","description":"The details of the subscriber to the Equinix Stream\n"},"state":{"type":"string","description":"Value representing provisioning status for the stream resource\n"},"type":{"type":"string","description":"Type of the stream subscription request\n"},"uuid":{"type":"string","description":"Equinix assigned unique identifier of the stream subscription resource\n"}},"type":"object","required":["changeLog","description","enabled","eventSelector","href","metricSelector","name","sink","state","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamSubscriptionsDataChangeLog:getStreamSubscriptionsDataChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the stream resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the stream resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the stream resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the stream resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the stream resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the stream resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the stream resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the stream resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the stream resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the stream resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the stream resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the stream resource\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamSubscriptionsDataEventSelector:getStreamSubscriptionsDataEventSelector":{"properties":{"excepts":{"type":"array","items":{"type":"string"},"description":"List of events to exclude\n"},"includes":{"type":"array","items":{"type":"string"},"description":"List of events to include\n"}},"type":"object","required":["excepts","includes"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamSubscriptionsDataMetricSelector:getStreamSubscriptionsDataMetricSelector":{"properties":{"excepts":{"type":"array","items":{"type":"string"},"description":"List of metrics to exclude\n"},"includes":{"type":"array","items":{"type":"string"},"description":"List of metrics to include\n"}},"type":"object","required":["excepts","includes"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamSubscriptionsDataSink:getStreamSubscriptionsDataSink":{"properties":{"batchEnabled":{"type":"boolean","description":"Boolean switch enabling batch delivery of data\n"},"batchSizeMax":{"type":"integer","description":"Maximum size of the batch delivery if enabled\n"},"batchWaitTimeMax":{"type":"integer","description":"Maximum time to wait for batch delivery if enabled\n"},"credential":{"$ref":"#/types/equinix:fabric/getStreamSubscriptionsDataSinkCredential:getStreamSubscriptionsDataSinkCredential","description":"Access details for the specified sink type\n"},"host":{"type":"string","description":"Known hostname of certain data stream subscription products. Not to be confused with a variable URI\n"},"settings":{"$ref":"#/types/equinix:fabric/getStreamSubscriptionsDataSinkSettings:getStreamSubscriptionsDataSinkSettings","description":"Stream subscription sink settings\n"},"type":{"type":"string","description":"Type of the subscriber\n"},"uri":{"type":"string","description":"Publicly reachable http endpoint destination for data stream\n"}},"type":"object","required":["batchEnabled","batchSizeMax","batchWaitTimeMax","credential","host","settings","type","uri"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamSubscriptionsDataSinkCredential:getStreamSubscriptionsDataSinkCredential":{"properties":{"accessToken":{"type":"string","description":"Passed as Authorization header value\n"},"apiKey":{"type":"string","description":"Passed as Authorization header value\n"},"integrationKey":{"type":"string","description":"Passed as Authorization header value\n"},"password":{"type":"string","description":"Passed as Authorization header value\n"},"type":{"type":"string","description":"Type of the credential being passed\n"},"username":{"type":"string","description":"Passed as Authorization header value\n"}},"type":"object","required":["accessToken","apiKey","integrationKey","password","type","username"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamSubscriptionsDataSinkSettings:getStreamSubscriptionsDataSinkSettings":{"properties":{"applicationKey":{"type":"string"},"eventIndex":{"type":"string"},"eventUri":{"type":"string"},"format":{"type":"string"},"metricIndex":{"type":"string"},"metricUri":{"type":"string"},"source":{"type":"string"}},"type":"object","required":["applicationKey","eventIndex","eventUri","format","metricIndex","metricUri","source"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamSubscriptionsPagination:getStreamSubscriptionsPagination":{"properties":{"limit":{"type":"integer","description":"Maximum number of search results returned per page. Number must be between 1 and 100, and the default is 20\n"},"next":{"type":"string","description":"The URL relative to the next item in the response\n"},"offset":{"type":"integer","description":"Index of the first item returned in the response. The default is 0\n"},"previous":{"type":"string","description":"The URL relative to the previous item in the response\n"},"total":{"type":"integer","description":"The total number of streams available to the user making the request\n"}},"type":"object","required":["limit","next","offset","previous","total"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamsData:getStreamsData":{"properties":{"assetsCount":{"type":"integer","description":"Count of the streaming assets attached to the stream resource\n"},"changeLog":{"$ref":"#/types/equinix:fabric/getStreamsDataChangeLog:getStreamsDataChangeLog","description":"Details of the last change on the stream resource\n"},"description":{"type":"string","description":"Customer-provided description of the stream resource\n"},"href":{"type":"string","description":"Equinix auto generated URI to the stream resource in Equinix Portal\n"},"name":{"type":"string","description":"Customer-provided name of the stream resource\n"},"project":{"$ref":"#/types/equinix:fabric/getStreamsDataProject:getStreamsDataProject","description":"Equinix Project attribute object\n"},"state":{"type":"string","description":"Value representing provisioning status for the stream resource\n"},"streamSubscriptionsCount":{"type":"integer","description":"Count of the client subscriptions on the stream resource\n"},"type":{"type":"string","description":"Equinix defined Streaming Type\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for the stream resource\n"}},"type":"object","required":["assetsCount","changeLog","description","href","name","project","state","streamSubscriptionsCount","type","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamsDataChangeLog:getStreamsDataChangeLog":{"properties":{"createdBy":{"type":"string","description":"User name of creator of the stream resource\n"},"createdByEmail":{"type":"string","description":"Email of creator of the stream resource\n"},"createdByFullName":{"type":"string","description":"Legal name of creator of the stream resource\n"},"createdDateTime":{"type":"string","description":"Creation time of the stream resource\n"},"deletedBy":{"type":"string","description":"User name of deleter of the stream resource\n"},"deletedByEmail":{"type":"string","description":"Email of deleter of the stream resource\n"},"deletedByFullName":{"type":"string","description":"Legal name of deleter of the stream resource\n"},"deletedDateTime":{"type":"string","description":"Deletion time of the stream resource\n"},"updatedBy":{"type":"string","description":"User name of last updater of the stream resource\n"},"updatedByEmail":{"type":"string","description":"Email of last updater of the stream resource\n"},"updatedByFullName":{"type":"string","description":"Legal name of last updater of the stream resource\n"},"updatedDateTime":{"type":"string","description":"Last update time of the stream resource\n"}},"type":"object","required":["createdBy","createdByEmail","createdByFullName","createdDateTime","deletedBy","deletedByEmail","deletedByFullName","deletedDateTime","updatedBy","updatedByEmail","updatedByFullName","updatedDateTime"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamsDataProject:getStreamsDataProject":{"properties":{"projectId":{"type":"string","description":"Equinix Subscriber-assigned project ID\n"}},"type":"object","required":["projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/getStreamsPagination:getStreamsPagination":{"properties":{"limit":{"type":"integer","description":"Maximum number of search results returned per page. Number must be between 1 and 100, and the default is 20\n"},"next":{"type":"string","description":"The URL relative to the next item in the response\n"},"offset":{"type":"integer","description":"Index of the first item returned in the response. The default is 0\n"},"previous":{"type":"string","description":"The URL relative to the previous item in the response\n"},"total":{"type":"integer","description":"The total number of streams available to the user making the request\n"}},"type":"object","required":["limit","next","offset","previous","total"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:fabric/notificationsType:NotificationsType":{"type":"string","enum":[{"name":"All","value":"ALL"},{"name":"ConnectionApproval","value":"CONNECTION_APPROVAL"},{"name":"SalesNotifications","value":"SALES_REP_NOTIFICATIONS"},{"name":"Notifications","value":"NOTIFICATIONS"}]},"equinix:fabric/profileAccessPointType:ProfileAccessPointType":{"type":"string","enum":[{"name":"Colo","description":"Colocation","value":"COLO"},{"name":"VD","description":"Virtual Device","value":"VD"}]},"equinix:fabric/profileState:ProfileState":{"type":"string","enum":[{"name":"Active","value":"ACTIVE"},{"name":"PendingApproval","value":"PENDING_APPROVAL"},{"name":"Deleted","value":"DELETED"},{"name":"Rejected","value":"REJECTED"}]},"equinix:fabric/profileType:ProfileType":{"type":"string","enum":[{"name":"L2Profile","value":"L2_PROFILE"},{"name":"L3Profile","value":"L3_PROFILE"}]},"equinix:fabric/profileVisibility:ProfileVisibility":{"type":"string","enum":[{"name":"Public","value":"PUBLIC"},{"name":"Private","value":"PRIVATE"}]},"equinix:fabric/serviceTokenType:ServiceTokenType":{"type":"string","enum":[{"name":"VCToken","value":"VC_TOKEN"}]},"equinix:index/metro:Metro":{"type":"string","enum":[{"name":"Amsterdam","value":"AM"},{"name":"Ashburn","value":"DC"},{"name":"Atlanta","value":"AT"},{"name":"Barcelona","value":"BA"},{"name":"Bogota","value":"BG"},{"name":"Bordeaux","value":"BX"},{"name":"Boston","value":"BO"},{"name":"Brussels","value":"BL"},{"name":"Calgary","value":"CL"},{"name":"Canberra","value":"CA"},{"name":"Chicago","value":"CH"},{"name":"Dallas","value":"DA"},{"name":"Denver","value":"DE"},{"name":"Dubai","value":"DX"},{"name":"Dublin","value":"DB"},{"name":"Frankfurt","value":"FR"},{"name":"Geneva","value":"GV"},{"name":"Hamburg","value":"HH"},{"name":"Helsinki","value":"HE"},{"name":"HongKong","value":"HK"},{"name":"Istanbul","value":"IL"},{"name":"Kamloops","value":"KA"},{"name":"Lisbon","value":"LS"},{"name":"London","value":"LD"},{"name":"LosAngeles","value":"LA"},{"name":"Madrid","value":"MD"},{"name":"Manchester","value":"MA"},{"name":"Melbourne","value":"ME"},{"name":"MexicoCity","value":"MX"},{"name":"Miami","value":"MI"},{"name":"Milan","value":"ML"},{"name":"Montreal","value":"MT"},{"name":"Mumbai","value":"MB"},{"name":"Munich","value":"MU"},{"name":"NewYork","value":"NY"},{"name":"Osaka","value":"OS"},{"name":"Paris","value":"PA"},{"name":"Perth","value":"PE"},{"name":"Philadelphia","value":"PH"},{"name":"RioDeJaneiro","value":"RJ"},{"name":"SaoPaulo","value":"SP"},{"name":"Seattle","value":"SE"},{"name":"Seoul","value":"SL"},{"name":"SiliconValley","value":"SV"},{"name":"Singapore","value":"SG"},{"name":"Sofia","value":"SO"},{"name":"Stockholm","value":"SK"},{"name":"Sydney","value":"SY"},{"name":"Tokyo","value":"TY"},{"name":"Toronto","value":"TR"},{"name":"Vancouver","value":"VA"},{"name":"Warsaw","value":"WA"},{"name":"Winnipeg","value":"WI"},{"name":"Zurich","value":"ZH"}]},"equinix:metal/DeviceBehavior:DeviceBehavior":{"properties":{"allowChanges":{"type":"array","items":{"type":"string"},"description":"List of attributes that are allowed to change without recreating the instance. Supported attributes: `custom_data`, `user_data`\n"}},"type":"object"},"equinix:metal/DeviceIpAddress:DeviceIpAddress":{"properties":{"cidr":{"type":"integer","description":"CIDR suffix for IP block assigned to this device\n"},"reservationIds":{"type":"array","items":{"type":"string"},"description":"IDs of reservations to pick the blocks from\n"},"type":{"type":"string","description":"one of public*ipv4,private*ipv4,public_ipv6\n"}},"type":"object","required":["type"]},"equinix:metal/DeviceNetwork:DeviceNetwork":{"properties":{"address":{"type":"string","description":"IPv4 or IPv6 address string\n"},"cidr":{"type":"integer","description":"CIDR suffix for IP address block to be assigned, i.e. amount of addresses\n"},"family":{"type":"integer","description":"IP version - \"4\" or \"6\"\n"},"gateway":{"type":"string","description":"Address of router\n"},"public":{"type":"boolean","description":"Whether the address is routable from the Internet\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["address","cidr","family","gateway","public"]}}},"equinix:metal/DevicePort:DevicePort":{"properties":{"bonded":{"type":"boolean","description":"Whether this port is part of a bond in bonded network setup\n"},"id":{"type":"string","description":"The ID of the device\n"},"mac":{"type":"string","description":"MAC address assigned to the port\n"},"name":{"type":"string","description":"Name of the port (e.g. eth0, or bond0)\n"},"type":{"type":"string","description":"One of [private_ipv4, public_ipv4, public_ipv6]\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["bonded","id","mac","name","type"]}}},"equinix:metal/DeviceReinstall:DeviceReinstall":{"properties":{"deprovisionFast":{"type":"boolean","description":"Whether the OS disk should be filled with `00h` bytes before reinstall\n"},"enabled":{"type":"boolean","description":"Whether the device should be reinstalled instead of destroyed\n"},"preserveData":{"type":"boolean","description":"Whether the non-OS disks should be kept or wiped during reinstall\n"}},"type":"object"},"equinix:metal/GatewayTimeouts:GatewayTimeouts":{"properties":{"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"}},"type":"object"},"equinix:metal/InterconnectionPort:InterconnectionPort":{"properties":{"id":{"type":"string"},"linkStatus":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"},"speed":{"type":"integer"},"status":{"type":"string"},"virtualCircuitIds":{"type":"array","items":{"type":"string"}}},"type":"object","required":["id","linkStatus","name","role","speed","status","virtualCircuitIds"]},"equinix:metal/InterconnectionServiceToken:InterconnectionServiceToken":{"properties":{"expiresAt":{"type":"string"},"id":{"type":"string"},"maxAllowedSpeed":{"type":"string"},"role":{"type":"string"},"state":{"type":"string"},"type":{"type":"string"}},"type":"object","required":["expiresAt","id","maxAllowedSpeed","role","state","type"]},"equinix:metal/OrganizationAddress:OrganizationAddress":{"properties":{"address":{"type":"string","description":"Postal address.\n"},"city":{"type":"string","description":"City name.\n"},"country":{"type":"string","description":"Two letter country code (ISO 3166-1 alpha-2), e.g. US.\n"},"state":{"type":"string","description":"State name.\n"},"zipCode":{"type":"string","description":"Zip Code.\n"}},"type":"object","required":["address","city","country","zipCode"],"language":{"nodejs":{"requiredOutputs":["address","city","country","state","zipCode"]}}},"equinix:metal/ProjectBgpConfig:ProjectBgpConfig":{"properties":{"asn":{"type":"integer","description":"Autonomous System Number for local BGP deployment.\n"},"deploymentType":{"type":"string","description":"`local` or `global`, the `local` is likely to be usable immediately, the `global` will need to be reviewed by Equinix Metal engineers.\n"},"maxPrefix":{"type":"integer","description":"The maximum number of route filters allowed per server.\n"},"md5":{"type":"string","description":"Password for BGP session in plaintext (not a checksum).\n","secret":true},"status":{"type":"string","description":"status of BGP configuration in the project.\n"}},"type":"object","required":["asn","deploymentType"],"language":{"nodejs":{"requiredOutputs":["asn","deploymentType","maxPrefix","status"]}}},"equinix:metal/billingCycle:BillingCycle":{"type":"string","enum":[{"name":"Hourly","value":"hourly"},{"name":"Monthly","value":"monthly"}]},"equinix:metal/facility:Facility":{"description":"See https://deploy.equinix.com/developers/api/metal/#tag/Facilities/operation/findFacilities","type":"string","enum":[{"name":"AM2","description":"Amsterdam 2","value":"am2"},{"name":"AM6","description":"Amsterdam 6","value":"am6"},{"name":"MA5","description":"Manchester 5","value":"ma5"},{"name":"NRT1","description":"Tokio 1","value":"nrt1"},{"name":"PA4","description":"Paris 4","value":"pa4"},{"name":"SK2","description":"Stockholm 2","value":"sk2"},{"name":"ME2","description":"Melbourne 2","value":"me2"},{"name":"HK2","description":"Hong Kong 2","value":"hk2"},{"name":"TY11","description":"Tokyo 11","value":"ty11"},{"name":"LA4","description":"Los Angeles 4","value":"la4"},{"name":"DA6","description":"Dallas 6","value":"da6"},{"name":"DA11","description":"Dallas 11","value":"da11"},{"name":"DA3","description":"Dallas 3","value":"da3"},{"name":"SP4","description":"Sao Paulo 4","value":"sp4"},{"name":"MT1","description":"Montreal 1","value":"mt1"},{"name":"SV16","description":"Silicon Valley 16","value":"sv16"},{"name":"SJC1","description":"Sunnyvale, CA 1","value":"sjc1"},{"name":"FRA2","description":"Frankfurt 2","value":"fra2"},{"name":"FRA8","description":"Frankfurt 8","value":"fr8"},{"name":"NY5","description":"New York 5","value":"ny5"},{"name":"NY6","description":"New York 6","value":"ny6"},{"name":"NY7","description":"New York 7","value":"ny7"},{"name":"CH3","description":"Chicago 3","value":"ch3"},{"name":"SL1","description":"Seoul 1","value":"sl1"},{"name":"SY5","description":"Sydney 5","value":"sy5"},{"name":"OS3","description":"Osaka 3","value":"os3"},{"name":"LD7","description":"London 7","value":"ld7"},{"name":"DC10","description":"Washington DC 10","value":"dc10"},{"name":"AMS1","description":"Amsterdam 1","value":"ams1"},{"name":"SG4","description":"Singapore 4","value":"sg4"},{"name":"SE4","description":"Seattle 4","value":"se4"},{"name":"SY4","description":"Sydney 4","value":"sy4"},{"name":"AT4","description":"Atlanta 4","value":"at4"},{"name":"DFW2","description":"Dallas 2","value":"dfw2"},{"name":"TR2","description":"Toronto","value":"tr2"},{"name":"DC13","description":"Washington DC","value":"dc13"},{"name":"HE7","description":"Helsinki","value":"he7"},{"name":"EWR1","description":"Parsippany, NJ 1","value":"ewr1"},{"name":"SG5","description":"Singapore 5","value":"sg5"},{"name":"SG1","description":"Singapore 1","value":"sg1"},{"name":"MD2","description":"Madrid 2","value":"md2"},{"name":"SV15","description":"Silicon Valley 15","value":"sv15"}]},"equinix:metal/getDeviceBgpNeighborsBgpNeighbor:getDeviceBgpNeighborsBgpNeighbor":{"properties":{"addressFamily":{"type":"integer","description":"IP address version, 4 or 6.\n"},"customerAs":{"type":"integer","description":"Local autonomous system number.\n"},"customerIp":{"type":"string","description":"Local used peer IP address.\n"},"md5Enabled":{"type":"boolean","description":"Whether BGP session is password enabled.\n"},"md5Password":{"type":"string","description":"BGP session password in plaintext (not a checksum).\n","secret":true},"multihop":{"type":"boolean","description":"Whether the neighbor is in EBGP multihop session.\n"},"peerAs":{"type":"integer","description":"Peer AS number (different than customer_as for EBGP).\n"},"peerIps":{"type":"array","items":{"type":"string"},"description":"Array of IP addresses of this neighbor's peers.\n"},"routesIns":{"type":"array","items":{"$ref":"#/types/equinix:metal/getDeviceBgpNeighborsBgpNeighborRoutesIn:getDeviceBgpNeighborsBgpNeighborRoutesIn"},"description":"Array of incoming routes.\n"},"routesOuts":{"type":"array","items":{"$ref":"#/types/equinix:metal/getDeviceBgpNeighborsBgpNeighborRoutesOut:getDeviceBgpNeighborsBgpNeighborRoutesOut"},"description":"Array of outgoing routes in the same format.\n"}},"type":"object","required":["addressFamily","customerAs","customerIp","md5Enabled","md5Password","multihop","peerAs","routesIns","routesOuts"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:metal/getDeviceBgpNeighborsBgpNeighborRoutesIn:getDeviceBgpNeighborsBgpNeighborRoutesIn":{"properties":{"exact":{"type":"boolean","description":"(bool) Whether the route is exact.\n"},"route":{"type":"string","description":"CIDR expression of route (IP/mask).\n"}},"type":"object","required":["exact","route"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:metal/getDeviceBgpNeighborsBgpNeighborRoutesOut:getDeviceBgpNeighborsBgpNeighborRoutesOut":{"properties":{"exact":{"type":"boolean","description":"(bool) Whether the route is exact.\n"},"route":{"type":"string","description":"CIDR expression of route (IP/mask).\n"}},"type":"object","required":["exact","route"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:metal/getDeviceNetwork:getDeviceNetwork":{"properties":{"address":{"type":"string","description":"IPv4 or IPv6 address string\n"},"cidr":{"type":"integer","description":"Bit length of the network mask of the address\n"},"family":{"type":"integer","description":"IP version - \"4\" or \"6\"\n"},"gateway":{"type":"string","description":"Address of router\n"},"public":{"type":"boolean","description":"Whether the address is routable from the Internet\n"}},"type":"object","required":["address","cidr","family","gateway","public"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:metal/getDevicePort:getDevicePort":{"properties":{"bonded":{"type":"boolean","description":"Whether this port is part of a bond in bonded network setup\n"},"id":{"type":"string","description":"The ID of the device\n"},"mac":{"type":"string","description":"MAC address assigned to the port\n"},"name":{"type":"string","description":"Name of the port (e.g. eth0, or bond0)\n"},"type":{"type":"string","description":"Type of the port (e.g. NetworkPort or NetworkBondPort)\n"}},"type":"object","required":["bonded","id","mac","name","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:metal/getDevicesDevice:getDevicesDevice":{"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","description":"Device ID\n"},"facility":{"type":"string","description":"The facility where the device is deployed\n","deprecationMessage":"Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices"},"hardwareReservationId":{"type":"string","description":"The id of hardware reservation which this device occupies\n"},"hostname":{"type":"string","description":"The device name\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 oflayer3, hybrid, layer2-individual, layer2-bonded\n"},"networks":{"type":"array","items":{"$ref":"#/types/equinix:metal/getDevicesDeviceNetwork:getDevicesDeviceNetwork"},"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: ublic IPv4 at equinix_metal_device.name.network.0, IPv6 at equinix_metal_device.name.network.1 and private IPv4 at equinix_metal_device.name.network.2. Elastic 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).\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/getDevicesDevicePort:getDevicesDevicePort"},"description":"Ports assigned to the device\n"},"projectId":{"type":"string","description":"ID of project containing the devices. Exactly one of `project_id` and `organization_id` must be set.\n"},"rootPassword":{"type":"string","description":"Root password to the server (if still available)\n","secret":true},"sosHostname":{"type":"string","description":"The hostname to use for [Serial over SSH](https://docs.equinix.com/metal/resilience-recovery/serial-over-ssh/) access to the device\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","sosHostname","sshKeyIds","state","storage","tags"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:metal/getDevicesDeviceNetwork:getDevicesDeviceNetwork":{"properties":{"address":{"type":"string","description":"IPv4 or IPv6 address string\n"},"cidr":{"type":"integer","description":"Bit length of the network mask of the address\n"},"family":{"type":"integer","description":"IP version - \"4\" or \"6\"\n"},"gateway":{"type":"string","description":"Address of router\n"},"public":{"type":"boolean","description":"Whether the address is routable from the Internet\n"}},"type":"object","required":["address","cidr","family","gateway","public"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:metal/getDevicesDevicePort:getDevicesDevicePort":{"properties":{"bonded":{"type":"boolean","description":"Whether this port is part of a bond in bonded network setup\n"},"id":{"type":"string","description":"The ID of the device\n"},"mac":{"type":"string","description":"MAC address assigned to the port\n"},"name":{"type":"string","description":"Name of the port (e.g. eth0, or bond0)\n"},"type":{"type":"string","description":"Type of the port (e.g. NetworkPort or NetworkBondPort)\n"}},"type":"object","required":["bonded","id","mac","name","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:metal/getDevicesFilter:getDevicesFilter":{"properties":{"all":{"type":"boolean","description":"If is set to true, the values are joined with an AND, and the requests returns only the results that match all specified values. Default is `false`.\n\nAll fields in the `devices` block defined below can be used as attribute for both `sort` and `filter` blocks.\n"},"attribute":{"type":"string","description":"The attribute used to filter. Filter attributes are case-sensitive\n"},"matchBy":{"type":"string","description":"The type of comparison to apply. One of: `in` , `re`, `substring`, `less_than`, `less_than_or_equal`, `greater_than`, `greater_than_or_equal`. Default is `in`.\n"},"values":{"type":"array","items":{"type":"string"},"description":"The filter values. Filter values are case-sensitive. If you specify multiple values for a filter, the values are joined with an OR by default, and the request returns all results that match any of the specified values\n"}},"type":"object","required":["attribute","values"]},"equinix:metal/getDevicesSort:getDevicesSort":{"properties":{"attribute":{"type":"string","description":"The attribute used to sort the results. Sort attributes are case-sensitive\n"},"direction":{"type":"string","description":"Sort results in ascending or descending order. Strings are sorted in alphabetical order. One of: asc, desc\n"}},"type":"object","required":["attribute"]},"equinix:metal/getFacilityCapacity:getFacilityCapacity":{"properties":{"plan":{"type":"string","description":"Device plan that must be available in selected location.\n"},"quantity":{"type":"integer","description":"Minimun number of devices that must be available in selected location. Default is `1`.\n"}},"type":"object","required":["plan"]},"equinix:metal/getInterconnectionPort:getInterconnectionPort":{"properties":{"id":{"type":"string","description":"Port UUID.\n"},"linkStatus":{"type":"string","description":"Port link status.\n"},"name":{"type":"string","description":"Port name.\n"},"role":{"type":"string","description":"Port role - primary or secondary.\n"},"speed":{"type":"integer","description":"Port speed in bits per second.\n"},"status":{"type":"string","description":"Port status.\n"},"virtualCircuitIds":{"type":"array","items":{"type":"string"},"description":"List of IDs of virtual cicruits attached to this port.\n"}},"type":"object","required":["id","linkStatus","name","role","speed","status","virtualCircuitIds"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:metal/getInterconnectionServiceToken:getInterconnectionServiceToken":{"properties":{"expiresAt":{"type":"string","description":"Expiration date of the service token.\n"},"id":{"type":"string","description":"Port UUID.\n"},"maxAllowedSpeed":{"type":"string","description":"Maximum allowed speed for the service token, string like in the `speed` attribute.\n"},"role":{"type":"string","description":"Port role - primary or secondary.\n"},"state":{"type":"string"},"type":{"type":"string","description":"Token type, `a_side` or `z_side`.\n"}},"type":"object","required":["expiresAt","id","maxAllowedSpeed","role","state","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:metal/getMetroCapacity:getMetroCapacity":{"properties":{"plan":{"type":"string","description":"Device plan that must be available in selected location.\n"},"quantity":{"type":"integer","description":"Minimum number of devices that must be available in selected location. Default is `1`.\n"}},"type":"object","required":["plan"]},"equinix:metal/getOrganizationAddress:getOrganizationAddress":{"properties":{"address":{"type":"string","description":"Postal address.\n"},"city":{"type":"string","description":"City name.\n"},"country":{"type":"string","description":"Two letter country code (ISO 3166-1 alpha-2), e.g. US.\n"},"state":{"type":"string","description":"State name.\n"},"zipCode":{"type":"string","description":"Zip Code.\n"}},"type":"object","required":["address","city","country","state","zipCode"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:metal/getPlansFilter:getPlansFilter":{"properties":{"all":{"type":"boolean","description":"If is set to true, the values are joined with an AND, and the requests returns only the results that match all specified values. Default is `false`.\n\nAll fields in the `plans` block defined below can be used as attribute for both `sort` and `filter` blocks.\n"},"attribute":{"type":"string","description":"The attribute used to filter. Filter attributes are case-sensitive\n"},"matchBy":{"type":"string","description":"The type of comparison to apply. One of: `in` , `re`, `substring`, `less_than`, `less_than_or_equal`, `greater_than`, `greater_than_or_equal`. Default is `in`.\n"},"values":{"type":"array","items":{"type":"string"},"description":"The filter values. Filter values are case-sensitive. If you specify multiple values for a filter, the values are joined with an OR by default, and the request returns all results that match any of the specified values\n"}},"type":"object","required":["attribute","values"]},"equinix:metal/getPlansPlan:getPlansPlan":{"properties":{"availableInMetros":{"type":"array","items":{"type":"string"},"description":"list of metros where the plan is available\n"},"availableIns":{"type":"array","items":{"type":"string"},"description":"(**Deprecated**) list of facilities where the plan is available\n","deprecationMessage":"Use available_in_metros instead.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices"},"class":{"type":"string","description":"plan class\n"},"deploymentTypes":{"type":"array","items":{"type":"string"},"description":"list of deployment types, e.g. on_demand, spot_market\n"},"description":{"type":"string","description":"description of the plan\n"},"id":{"type":"string","description":"id of the plan\n"},"legacy":{"type":"boolean","description":"flag showing if it's a legacy plan\n"},"line":{"type":"string","description":"plan line, e.g. baremetal\n"},"name":{"type":"string","description":"name of the plan\n"},"pricingHour":{"type":"number","description":"plan hourly price\n"},"pricingMonth":{"type":"number","description":"plan monthly price\n"},"slug":{"type":"string","description":"plan slug\n"}},"type":"object","required":["availableIns","availableInMetros","class","deploymentTypes","description","id","legacy","line","name","pricingHour","pricingMonth","slug"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:metal/getPlansSort:getPlansSort":{"properties":{"attribute":{"type":"string","description":"The attribute used to sort the results. Sort attributes are case-sensitive\n"},"direction":{"type":"string","description":"Sort results in ascending or descending order. Strings are sorted in alphabetical order. One of: asc, desc\n"}},"type":"object","required":["attribute"]},"equinix:metal/getProjectBgpConfig:getProjectBgpConfig":{"properties":{"asn":{"type":"integer","description":"Autonomous System Number for local BGP deployment.\n"},"deploymentType":{"type":"string","description":"One of `private`, `public`.\n"},"maxPrefix":{"type":"integer","description":"The maximum number of route filters allowed per server.\n"},"md5":{"type":"string","description":"Password for BGP session in plaintext (not a checksum).\n"},"status":{"type":"string","description":"Status of BGP configuration in the project.\n"}},"type":"object","required":["asn","deploymentType","maxPrefix","md5","status"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:metal/ipBlockType:IpBlockType":{"type":"string","enum":[{"name":"GlobalIPv4","value":"global_ipv4"},{"name":"PublicIPv4","value":"public_ipv4"}]},"equinix:metal/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/operatingSystem:OperatingSystem":{"description":"See https://deploy.equinix.com/developers/api/metal/#tag/OperatingSystems/operation/findOperatingSystems","type":"string","enum":[{"name":"Alma8","value":"alma_8"},{"name":"Alma9","value":"alma_9"},{"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":"Debian10","value":"debian_10"},{"name":"Debian11","value":"debian_11"},{"name":"Debian7","value":"debian_7"},{"name":"Debian8","value":"debian_8"},{"name":"Debian9","value":"debian_9"},{"name":"Fedora31","value":"fedora_31"},{"name":"Fedora34","value":"fedora_34"},{"name":"FlatcarAlpha","value":"flatcar_alpha"},{"name":"FlatcarBeta","value":"flatcar_beta"},{"name":"FlatcarEdge","value":"flatcar_edge"},{"name":"FlatcarLTS","value":"flatcar_lts"},{"name":"FlatcarStable","value":"flatcar_stable"},{"name":"FreeBSD10_3","value":"freebsd_10_3"},{"name":"FreeBSD10_4","value":"freebsd_10_4"},{"name":"FreeBSD11_0","value":"freebsd_11_0"},{"name":"FreeBSD11_1","value":"freebsd_11_1"},{"name":"FreeBSD11_2","value":"freebsd_11_2"},{"name":"FreeBSD11_3","value":"freebsd_11_3"},{"name":"FreeBSD11_4","value":"freebsd_11_4"},{"name":"FreeBSD12Testing","value":"freebsd_12_testing"},{"name":"FreeBSD12_1","value":"freebsd_12_1"},{"name":"FreeBSD13_0","value":"freebsd_13_0"},{"name":"FreeBSD13_1","value":"freebsd_13_1"},{"name":"FreeBSD13_testing","value":"freebsd_13_testing"},{"name":"HookEsxi7","value":"hook_esxi7"},{"name":"NixOS17_03","value":"nixos_17_03"},{"name":"NixOS18_03","value":"nixos_18_03"},{"name":"NixOS19_03","value":"nixos_19_03"},{"name":"NixOS20_09","value":"nixos_20_09"},{"name":"NixOS21_11","value":"nixos_21_11"},{"name":"NixOS22_05","value":"nixos_22_05"},{"name":"NixOS22_11","value":"nixos_22_11"},{"name":"Nixos21_05","value":"nixos_21_05"},{"name":"NutanixCentos","value":"nutanix_centos"},{"name":"NutanixLTS5_19_1","value":"nutanix_lts_5_19_1"},{"name":"NutanixLTS5_20","value":"nutanix_lts_5_20"},{"name":"OpenSUSE42_3","value":"opensuse_42_3"},{"name":"RHEL7","value":"rhel_7"},{"name":"RHEL8","value":"rhel_8"},{"name":"RHEL9","value":"rhel_9"},{"name":"RancherOS","value":"rancher"},{"name":"Rocky8","value":"rocky_8"},{"name":"Rocky9","value":"rocky_9"},{"name":"SLES12SP3","value":"suse_sles12_sp3"},{"name":"ScientificLinux6","value":"scientific_6"},{"name":"TalosV1","value":"talos_v1"},{"name":"Ubuntu1710","value":"ubuntu_17_10"},{"name":"Ubuntu18_04","value":"ubuntu_18_04"},{"name":"Ubuntu1904","value":"ubuntu_19_04"},{"name":"Ubuntu19_10","value":"ubuntu_19_10"},{"name":"Ubuntu20_04","value":"ubuntu_20_04"},{"name":"Ubuntu20_04_legacy","value":"ubuntu_20_04_legacy"},{"name":"Ubuntu20_10","value":"ubuntu_20_10"},{"name":"Ubuntu2204","value":"ubuntu_22_04"},{"name":"VMWareAlloyVcf","value":"vmware_alloy_vcf"},{"name":"VMWareEsxi5_5","value":"vmware_esxi_5_5"},{"name":"VMWareEsxi6_0","value":"vmware_esxi_6_0"},{"name":"VMWareEsxi6_5","value":"vmware_esxi_6_5"},{"name":"VMWareEsxi6_7","value":"vmware_esxi_6_7"},{"name":"VMWareEsxi6_7_vcf","value":"vmware_esxi_6_7_vcf"},{"name":"VMWareEsxi7_0","value":"vmware_esxi_7_0"},{"name":"VMWareEsxi7_0U2a","value":"vmware_esxi_7_0U2a"},{"name":"VMWareEsxi7_0_vcf","value":"vmware_esxi_7_0_vcf"},{"name":"VMWareNsx2_5_0","value":"vmware_nsx_2_5_0"},{"name":"VMWareNsx3_0_0","value":"vmware_nsx_3_0_0"},{"name":"Virtuozzo7","value":"virtuozzo_7"},{"name":"Windows2012R2","value":"windows_2012_r2"},{"name":"Windows2016","value":"windows_2016"},{"name":"Windows2019","value":"windows_2019"},{"name":"Windows2022","value":"windows_2022"}]},"equinix:metal/plan:Plan":{"description":"See https://deploy.equinix.com/developers/api/metal/#tag/Plans/operation/findPlans","type":"string","enum":[{"name":"A3LargeX86","value":"a3.large.x86"},{"name":"C2LargeARM","value":"c2.large.arm"},{"name":"C2MediumX86","value":"c2.medium.x86"},{"name":"C3LargeARM","value":"c3.large.arm64"},{"name":"C3MediumX86","value":"c3.medium.x86"},{"name":"C3SmallX86","value":"c3.small.x86"},{"name":"F3LargeX86","value":"f3.large.x86"},{"name":"F3MediumX86","value":"f3.medium.x86"},{"name":"G2LargeX86","value":"g2.large.x86"},{"name":"M2XLargeX86","value":"m2.xlarge.x86"},{"name":"M3LargeX86","value":"m3.large.x86"},{"name":"M3SmallX86","value":"m3.small.x86"},{"name":"N2XLargeX86","value":"n2.xlarge.x86"},{"name":"N3XLargeX86","value":"n3.xlarge.x86"},{"name":"S3XLargeX86","value":"s3.xlarge.x86"},{"name":"T3SmallX86","value":"t3.small.x86"},{"name":"X2XLargeX86","value":"x2.xlarge.x86"},{"name":"X3XLargeX86","value":"x3.xlarge.x86"}]},"equinix:networkedge/AclTemplateDeviceDetail:AclTemplateDeviceDetail":{"properties":{"aclStatus":{"type":"string","description":"Device ACL provisioning status where template was applied. One of `PROVISIONING`, `PROVISIONED`.\n"},"name":{"type":"string","description":"ACL template name.\n"},"uuid":{"type":"string","description":"Device uuid.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["aclStatus","name","uuid"]}}},"equinix:networkedge/AclTemplateInboundRule:AclTemplateInboundRule":{"properties":{"description":{"type":"string","description":"Inbound rule description, up to 200 characters.\n"},"dstPort":{"type":"string","description":"Inbound traffic destination ports. Allowed values are a comma separated list of ports, e.g., `20,22,23`, port range, e.g., `1023-1040` or word `any`.\n"},"protocol":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:networkedge/aclRuleProtocolType:AclRuleProtocolType"}],"description":"Inbound traffic protocol. One of `IP`, `TCP`, `UDP`.\n"},"sequenceNumber":{"type":"integer","description":"Inbound rule sequence number\n"},"sourceType":{"type":"string","description":"Type of traffic source used in a given inbound rule\n","deprecationMessage":"Source Type will not be returned"},"srcPort":{"type":"string","description":"Inbound traffic source ports. Allowed values are a comma separated list of ports, e.g., `20,22,23`, port range, e.g., `1023-1040` or word `any`.\n"},"subnet":{"type":"string","description":"Inbound traffic source IP subnet in CIDR format.\n"},"subnets":{"type":"array","items":{"type":"string"},"description":"Inbound traffic source IP subnets in CIDR format.\n","deprecationMessage":"Use Subnet instead"}},"type":"object","required":["dstPort","protocol","srcPort"],"language":{"nodejs":{"requiredOutputs":["dstPort","protocol","sequenceNumber","sourceType","srcPort"]}}},"equinix:networkedge/DeviceClusterDetails:DeviceClusterDetails":{"properties":{"clusterId":{"type":"string","description":"The ID of the cluster.\n"},"clusterName":{"type":"string","description":"The name of the cluster device\n"},"node0":{"$ref":"#/types/equinix:networkedge/DeviceClusterDetailsNode0:DeviceClusterDetailsNode0","description":"An object that has `node0` configuration. See Cluster Details - Nodes below for more details.\n"},"node1":{"$ref":"#/types/equinix:networkedge/DeviceClusterDetailsNode1:DeviceClusterDetailsNode1","description":"An object that has `node1` configuration. See Cluster Details - Nodes below for more details.\n"},"numOfNodes":{"type":"integer","description":"The number of nodes in the cluster.\n"}},"type":"object","required":["clusterName","node0","node1"],"language":{"nodejs":{"requiredOutputs":["clusterId","clusterName","node0","node1","numOfNodes"]}}},"equinix:networkedge/DeviceClusterDetailsNode0:DeviceClusterDetailsNode0":{"properties":{"licenseFileId":{"type":"string","description":"License file id. This is necessary for Fortinet and Juniper clusters.\n","willReplaceOnChanges":true},"licenseToken":{"type":"string","description":"License token. This is necessary for Palo Alto clusters.\n","secret":true,"willReplaceOnChanges":true},"name":{"type":"string","description":"Device name.\n"},"uuid":{"type":"string","description":"Device unique identifier.\n"},"vendorConfiguration":{"$ref":"#/types/equinix:networkedge/DeviceClusterDetailsNode0VendorConfiguration:DeviceClusterDetailsNode0VendorConfiguration","description":"An object that has fields relevant to the vendor of the cluster device. See Cluster Details - Nodes - Vendor Configuration below for more details.\n","willReplaceOnChanges":true}},"type":"object","language":{"nodejs":{"requiredOutputs":["name","uuid"]}}},"equinix:networkedge/DeviceClusterDetailsNode0VendorConfiguration:DeviceClusterDetailsNode0VendorConfiguration":{"properties":{"activationKey":{"type":"string","description":"Activation key. This is required for Velocloud clusters.\n","secret":true,"willReplaceOnChanges":true},"adminPassword":{"type":"string","description":"The administrative password of the device. You can use it to log in to the console. This field is not available for all device types.\n","secret":true},"controller1":{"type":"string","description":"System IP Address. Mandatory for the Fortinet SDWAN cluster device.\n","willReplaceOnChanges":true},"controllerFqdn":{"type":"string","description":"Controller fqdn. This is required for Velocloud clusters.\n","willReplaceOnChanges":true},"gatewayIp":{"type":"string","description":"Gateway IP. This field is relevant only for the Infoblox devices.\n","willReplaceOnChanges":true},"hostname":{"type":"string","description":"Hostname. This is necessary for Palo Alto, Juniper, and Fortinet clusters.\n","willReplaceOnChanges":true},"ipAddress":{"type":"string","description":"IP Address. This field is relevant only for the Infoblox devices.\n","willReplaceOnChanges":true},"ipAddressType":{"type":"string","description":"Ip Address Type. This field is relevant only for FG VM Firewall clusters with connectivity PRIVATE option\n","willReplaceOnChanges":true},"licenseId":{"type":"string","description":"License id. This field is relevant only for the BlueCat DNS and DHCP Server\n","secret":true,"willReplaceOnChanges":true},"licenseKey":{"type":"string","description":"License key. This field is relevant only for the BlueCat DNS and DHCP Server\n","secret":true,"willReplaceOnChanges":true},"managementInterfaceId":{"type":"string","description":"Management Interface ID. This field is relevant only for FG VM Firewall clusters with connectivity PRIVATE option\n","willReplaceOnChanges":true},"managementType":{"type":"string","description":"Management Type. This field is relevant only for Cisco FTD Firewall devices\n","willReplaceOnChanges":true},"panoramaAuthKey":{"type":"string","description":"Panorama Server Auth Key. This field is relevant only for the PA-VM firewall devices to have integration with Panorama Server.\n","secret":true,"willReplaceOnChanges":true},"panoramaIpAddress":{"type":"string","description":"Panorama Server IP Address. This field is relevant only for the PA-VM firewall devices to have integration with Panorama Server.\n","willReplaceOnChanges":true},"privateAddress":{"type":"string","description":"Private address. This field is relevant only for the BlueCat DNS and DHCP Server\n","willReplaceOnChanges":true},"privateCidrMask":{"type":"string","description":"Private CIDR Mask. This field is relevant only for the BlueCat DNS and DHCP Server\n","willReplaceOnChanges":true},"privateGateway":{"type":"string","description":"Private gateway. This field is relevant only for the BlueCat DNS and DHCP Server\n","willReplaceOnChanges":true},"rootPassword":{"type":"string","description":"The CLI password of the device. This field is relevant only for the Velocloud SDWAN cluster.\n","secret":true,"willReplaceOnChanges":true},"subnetMaskIp":{"type":"string","description":"Subnet Mask IP. This field is relevant only for the Infoblox devices.\n","willReplaceOnChanges":true}},"type":"object","language":{"nodejs":{"requiredOutputs":["adminPassword"]}}},"equinix:networkedge/DeviceClusterDetailsNode1:DeviceClusterDetailsNode1":{"properties":{"licenseFileId":{"type":"string","description":"License file id. This is necessary for Fortinet and Juniper clusters.\n","willReplaceOnChanges":true},"licenseToken":{"type":"string","description":"License token. This is necessary for Palo Alto clusters.\n","secret":true,"willReplaceOnChanges":true},"name":{"type":"string","description":"Device name.\n"},"uuid":{"type":"string","description":"Device unique identifier.\n"},"vendorConfiguration":{"$ref":"#/types/equinix:networkedge/DeviceClusterDetailsNode1VendorConfiguration:DeviceClusterDetailsNode1VendorConfiguration","description":"An object that has fields relevant to the vendor of the cluster device. See Cluster Details - Nodes - Vendor Configuration below for more details.\n","willReplaceOnChanges":true}},"type":"object","language":{"nodejs":{"requiredOutputs":["name","uuid"]}}},"equinix:networkedge/DeviceClusterDetailsNode1VendorConfiguration:DeviceClusterDetailsNode1VendorConfiguration":{"properties":{"activationKey":{"type":"string","description":"Activation key. This is required for Velocloud clusters.\n","secret":true,"willReplaceOnChanges":true},"adminPassword":{"type":"string","description":"The administrative password of the device. You can use it to log in to the console. This field is not available for all device types.\n","secret":true},"controller1":{"type":"string","description":"System IP Address. Mandatory for the Fortinet SDWAN cluster device.\n","willReplaceOnChanges":true},"controllerFqdn":{"type":"string","description":"Controller fqdn. This is required for Velocloud clusters.\n","willReplaceOnChanges":true},"gatewayIp":{"type":"string","description":"Gateway IP. This field is relevant only for the Infoblox devices.\n","willReplaceOnChanges":true},"hostname":{"type":"string","description":"Hostname. This is necessary for Palo Alto, Juniper, and Fortinet clusters.\n","willReplaceOnChanges":true},"ipAddress":{"type":"string","description":"IP Address. This field is relevant only for the Infoblox devices.\n","willReplaceOnChanges":true},"ipAddressType":{"type":"string","description":"Ip Address Type. This field is relevant only for FG VM Firewall clusters with connectivity PRIVATE option\n","willReplaceOnChanges":true},"licenseId":{"type":"string","description":"License id. This field is relevant only for the BlueCat DNS and DHCP Server\n","secret":true,"willReplaceOnChanges":true},"licenseKey":{"type":"string","description":"License key. This field is relevant only for the BlueCat DNS and DHCP Server\n","secret":true,"willReplaceOnChanges":true},"managementInterfaceId":{"type":"string","description":"Management Interface ID. This field is relevant only for FG VM Firewall clusters with connectivity PRIVATE option\n","willReplaceOnChanges":true},"managementType":{"type":"string","description":"Management Type. This field is relevant only for Cisco FTD Firewall devices\n","willReplaceOnChanges":true},"panoramaAuthKey":{"type":"string","description":"Panorama Server Auth Key. This field is relevant only for the PA-VM firewall devices to have integration with Panorama Server.\n","secret":true,"willReplaceOnChanges":true},"panoramaIpAddress":{"type":"string","description":"Panorama Server IP Address. This field is relevant only for the PA-VM firewall devices to have integration with Panorama Server.\n","willReplaceOnChanges":true},"privateAddress":{"type":"string","description":"Private address. This field is relevant only for the BlueCat DNS and DHCP Server\n","willReplaceOnChanges":true},"privateCidrMask":{"type":"string","description":"Private CIDR Mask. This field is relevant only for the BlueCat DNS and DHCP Server\n","willReplaceOnChanges":true},"privateGateway":{"type":"string","description":"Private gateway. This field is relevant only for the BlueCat DNS and DHCP Server\n","willReplaceOnChanges":true},"rootPassword":{"type":"string","description":"The CLI password of the device. This field is relevant only for the Velocloud SDWAN cluster.\n","secret":true,"willReplaceOnChanges":true},"subnetMaskIp":{"type":"string","description":"Subnet Mask IP. This field is relevant only for the Infoblox devices.\n","willReplaceOnChanges":true}},"type":"object","language":{"nodejs":{"requiredOutputs":["adminPassword"]}}},"equinix:networkedge/DeviceInterface:DeviceInterface":{"properties":{"assignedType":{"type":"string","description":"interface management type (Equinix Managed or empty).\n"},"id":{"type":"integer","description":"interface identifier.\n"},"ipAddress":{"type":"string","description":"interface IP address.\n"},"macAddress":{"type":"string","description":"interface MAC address.\n"},"name":{"type":"string","description":"Device name.\n"},"operationalStatus":{"type":"string","description":"interface operational status. One of `up`, `down`.\n"},"status":{"type":"string","description":"interface status. One of `AVAILABLE`, `RESERVED`, `ASSIGNED`.\n"},"type":{"type":"string","description":"interface type.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["assignedType","id","ipAddress","macAddress","name","operationalStatus","status","type"]}}},"equinix:networkedge/DeviceLinkDevice:DeviceLinkDevice":{"properties":{"asn":{"type":"integer","description":"Device ASN number. Not required for self configured devices.\n"},"id":{"type":"string","description":"Device identifier.\n"},"interfaceId":{"type":"integer","description":"Device network interface identifier to use for device link connection.\n"},"ipAddress":{"type":"string","description":"IP address from device link subnet that was assigned to the device\n"},"status":{"type":"string","description":"device link provisioning status on a given device. One of `PROVISIONING`, `PROVISIONED`, `DEPROVISIONING`, `DEPROVISIONED`, `FAILED`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredOutputs":["id","ipAddress","status"]}}},"equinix:networkedge/DeviceLinkLink:DeviceLinkLink":{"properties":{"accountNumber":{"type":"string","description":"billing account number to be used for connection charges\n"},"dstMetroCode":{"type":"string","description":"connection destination metro code.\n"},"dstZoneCode":{"type":"string","description":"connection destination zone code is not required.\n","deprecationMessage":"DestinationZoneCode is not required"},"srcMetroCode":{"type":"string","description":"connection source metro code.\n"},"srcZoneCode":{"type":"string","description":"connection source zone code is not required.\n","deprecationMessage":"SourceZoneCode is not required"},"throughput":{"type":"string","description":"connection throughput.\n"},"throughputUnit":{"type":"string","description":"connection throughput unit (Mbps or Gbps).\n"}},"type":"object","required":["accountNumber","dstMetroCode","srcMetroCode","throughput","throughputUnit"]},"equinix:networkedge/DeviceLinkMetroLink:DeviceLinkMetroLink":{"properties":{"accountNumber":{"type":"string","description":"billing account number to be used for connection charges\n"},"metroCode":{"type":"string","description":"connection metro code.\n"},"throughput":{"type":"string","description":"connection throughput.\n"},"throughputUnit":{"type":"string","description":"connection throughput unit (Mbps or Gbps).\n"}},"type":"object","required":["accountNumber","metroCode","throughput","throughputUnit"]},"equinix:networkedge/DeviceSecondaryDevice:DeviceSecondaryDevice":{"properties":{"accountNumber":{"type":"string","description":"Billing account number for secondary device.\n"},"aclTemplateId":{"type":"string","description":"Identifier of a WAN interface ACL template that will be applied on a secondary device.\n"},"additionalBandwidth":{"type":"integer","description":"Additional Internet bandwidth, in Mbps, for a secondary device.\n"},"asn":{"type":"integer","description":"(Autonomous System Number) Unique identifier for a network on the internet.\n"},"cloudInitFileId":{"type":"string","description":"Identifier of a cloud init file that will be applied on a secondary device.\n"},"hostname":{"type":"string","description":"Secondary device hostname.\n"},"ibx":{"type":"string","description":"Device location Equinix Business Exchange name.\n"},"interfaces":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/DeviceSecondaryDeviceInterface:DeviceSecondaryDeviceInterface"},"description":"List of device interfaces. See Interface Attribute below for more details.\n"},"licenseFile":{"type":"string","description":"Path to the license file that will be uploaded and applied on a secondary device. Applicable for some device types in BYOL licensing mode.\n"},"licenseFileId":{"type":"string","description":"Identifier of a license file that will be applied on a secondary device.\n"},"licenseStatus":{"type":"string","description":"Device license registration status. Possible values are `APPLYING_LICENSE`, `REGISTERED`, `APPLIED`, `WAITING_FOR_CLUSTER_SETUP`, `REGISTRATION_FAILED`.\n"},"licenseToken":{"type":"string","description":"License Token can be provided for some device types o the device.\n"},"metroCode":{"type":"string","description":"Metro location of a secondary device.\n"},"mgmtAclTemplateUuid":{"type":"string","description":"Identifier of an MGMT interface ACL template that will be applied on a secondary device.\n* `ssh-key` - (Optional) Up to one definition of SSH key that will be provisioned on a secondary device.\n"},"name":{"type":"string","description":"Secondary device name.\n"},"notifications":{"type":"array","items":{"type":"string"},"description":"List of email addresses that will receive notifications about secondary device.\n"},"projectId":{"type":"string","description":"Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.\n"},"purchaseOrderNumber":{"type":"string","description":"Purchase order number associated with a device order.\n","willReplaceOnChanges":true},"redundancyType":{"type":"string","description":"Device redundancy type applicable for HA devices, either primary or secondary.\n"},"redundantId":{"type":"string","description":"Unique identifier for a redundant device applicable for HA devices.\n"},"region":{"type":"string","description":"Device location region.\n"},"sshIpAddress":{"type":"string","description":"IP address of SSH enabled interface on the device.\n"},"sshIpFqdn":{"type":"string","description":"FQDN of SSH enabled interface on the device.\n"},"sshKey":{"$ref":"#/types/equinix:networkedge/DeviceSecondaryDeviceSshKey:DeviceSecondaryDeviceSshKey","description":"Definition of SSH key that will be provisioned on a device\n"},"status":{"type":"string","description":"interface status. One of `AVAILABLE`, `RESERVED`, `ASSIGNED`.\n"},"uuid":{"type":"string","description":"Device unique identifier.\n"},"vendorConfiguration":{"type":"object","additionalProperties":{"type":"string"},"description":"Key/Value pairs of vendor specific configuration parameters for a secondary device. Key values are `controller1`, `activationKey`, `managementType`, `siteId`, `systemIpAddress`, `privateAddress`, `privateCidrMask`, `privateGateway`, `licenseKey`, `licenseId`, `panoramaAuthKey`, `panoramaIpAddress`, `ipAddress`, `subnetMaskIp`, `gatewayIp`.\n"},"wanInterfaceId":{"type":"string","description":"device interface id picked for WAN\n","willReplaceOnChanges":true},"zoneCode":{"type":"string","description":"Device location zone code.\n"}},"type":"object","required":["accountNumber","metroCode","name","notifications"],"language":{"nodejs":{"requiredOutputs":["accountNumber","additionalBandwidth","asn","ibx","interfaces","licenseFileId","licenseStatus","metroCode","name","notifications","projectId","purchaseOrderNumber","redundancyType","redundantId","region","sshIpAddress","sshIpFqdn","status","uuid","vendorConfiguration","zoneCode"]}}},"equinix:networkedge/DeviceSecondaryDeviceInterface:DeviceSecondaryDeviceInterface":{"properties":{"assignedType":{"type":"string","description":"interface management type (Equinix Managed or empty).\n"},"id":{"type":"integer","description":"interface identifier.\n"},"ipAddress":{"type":"string","description":"interface IP address.\n"},"macAddress":{"type":"string","description":"interface MAC address.\n"},"name":{"type":"string","description":"Device name.\n"},"operationalStatus":{"type":"string","description":"interface operational status. One of `up`, `down`.\n"},"status":{"type":"string","description":"interface status. One of `AVAILABLE`, `RESERVED`, `ASSIGNED`.\n"},"type":{"type":"string","description":"interface type.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["assignedType","id","ipAddress","macAddress","name","operationalStatus","status","type"]}}},"equinix:networkedge/DeviceSecondaryDeviceSshKey:DeviceSecondaryDeviceSshKey":{"properties":{"keyName":{"type":"string","description":"Reference by name to previously provisioned public SSH key\n"},"username":{"type":"string","description":"username associated with given key.\n"}},"type":"object","required":["username"]},"equinix:networkedge/DeviceSshKey:DeviceSshKey":{"properties":{"keyName":{"type":"string","description":"Reference by name to previously provisioned public SSH key\n"},"username":{"type":"string","description":"username associated with given key.\n"}},"type":"object","required":["username"]},"equinix:networkedge/aclRuleProtocolType:AclRuleProtocolType":{"type":"string","enum":[{"name":"IP","value":"IP"},{"name":"TCP","value":"TCP"},{"name":"UDP","value":"UDP"}]},"equinix:networkedge/fileType:FileType":{"type":"string","enum":[{"name":"License","value":"LICENSE"},{"name":"CloudInit","value":"CLOUD_INIT"}]},"equinix:networkedge/getDeviceClusterDetail:getDeviceClusterDetail":{"properties":{"clusterId":{"type":"string","description":"The id of the cluster\n"},"clusterName":{"type":"string","description":"The name of the cluster device\n"},"node0s":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/getDeviceClusterDetailNode0:getDeviceClusterDetailNode0"},"description":"An object that has node0 details\n"},"node1s":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/getDeviceClusterDetailNode1:getDeviceClusterDetailNode1"},"description":"An object that has node1 details\n"},"numOfNodes":{"type":"integer","description":"The number of nodes in the cluster\n"}},"type":"object","required":["clusterId","clusterName","node0s","node1s","numOfNodes"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:networkedge/getDeviceClusterDetailNode0:getDeviceClusterDetailNode0":{"properties":{"licenseFileId":{"type":"string","description":"Unique identifier of applied license file\n","secret":true},"licenseToken":{"type":"string","description":"License token. This is necessary for Palo Alto clusters\n"},"name":{"type":"string","description":"Name of an existing Equinix Network Edge device\n"},"uuid":{"type":"string","description":"UUID of an existing Equinix Network Edge device\n"},"vendorConfigurations":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/getDeviceClusterDetailNode0VendorConfiguration:getDeviceClusterDetailNode0VendorConfiguration"},"description":"An object that has fields relevant to the vendor of the cluster device\n"}},"type":"object","required":["licenseFileId","licenseToken","name","uuid","vendorConfigurations"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:networkedge/getDeviceClusterDetailNode0VendorConfiguration:getDeviceClusterDetailNode0VendorConfiguration":{"properties":{"activationKey":{"type":"string","description":"Activation key. This is required for Velocloud clusters\n","secret":true},"adminPassword":{"type":"string","description":"The administrative password of the device. You can use it to log in to the console. This field is not available for all device types\n","secret":true},"controller1":{"type":"string","description":"System IP Address. Mandatory for the Fortinet SDWAN cluster device\n"},"controllerFqdn":{"type":"string","description":"Controller fqdn. This is required for Velocloud clusters\n"},"hostname":{"type":"string","description":"Hostname. This is necessary for Palo Alto, Juniper, and Fortinet clusters\n"},"licenseId":{"type":"string","description":"License id. This field is relevant only for the BlueCat DNS and DHCP Server\n","secret":true},"licenseKey":{"type":"string","description":"License key. This field is relevant only for the BlueCat DNS and DHCP Server\n","secret":true},"panoramaAuthKey":{"type":"string","description":"Panorama Server Auth Key. This field is relevant only for Palo Alto Networks Firewall devices\n","secret":true},"panoramaIpAddress":{"type":"string","description":"Panorama Server IP Address. This field is relevant only for Palo Alto Networks Firewall devices\n"},"privateAddress":{"type":"string","description":"Private address. This field is relevant only for the BlueCat DNS and DHCP Server\n"},"privateCidrMask":{"type":"string","description":"Private CIDR Mask. This field is relevant only for the BlueCat DNS and DHCP Server\n"},"privateGateway":{"type":"string","description":"Private gateway. This field is relevant only for the BlueCat DNS and DHCP Server\n"},"rootPassword":{"type":"string","description":"The CLI password of the device. This field is relevant only for the Velocloud SDWAN cluster\n","secret":true}},"type":"object","required":["activationKey","adminPassword","controller1","controllerFqdn","hostname","licenseId","licenseKey","panoramaAuthKey","panoramaIpAddress","privateAddress","privateCidrMask","privateGateway","rootPassword"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:networkedge/getDeviceClusterDetailNode1:getDeviceClusterDetailNode1":{"properties":{"licenseFileId":{"type":"string","description":"Unique identifier of applied license file\n","secret":true},"licenseToken":{"type":"string","description":"License token. This is necessary for Palo Alto clusters\n"},"name":{"type":"string","description":"Name of an existing Equinix Network Edge device\n"},"uuid":{"type":"string","description":"UUID of an existing Equinix Network Edge device\n"},"vendorConfigurations":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/getDeviceClusterDetailNode1VendorConfiguration:getDeviceClusterDetailNode1VendorConfiguration"},"description":"An object that has fields relevant to the vendor of the cluster device\n"}},"type":"object","required":["licenseFileId","licenseToken","name","uuid","vendorConfigurations"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:networkedge/getDeviceClusterDetailNode1VendorConfiguration:getDeviceClusterDetailNode1VendorConfiguration":{"properties":{"activationKey":{"type":"string","description":"Activation key. This is required for Velocloud clusters\n","secret":true},"adminPassword":{"type":"string","description":"The administrative password of the device. You can use it to log in to the console. This field is not available for all device types\n","secret":true},"controller1":{"type":"string","description":"System IP Address. Mandatory for the Fortinet SDWAN cluster device\n"},"controllerFqdn":{"type":"string","description":"Controller fqdn. This is required for Velocloud clusters\n"},"hostname":{"type":"string","description":"Hostname. This is necessary for Palo Alto, Juniper, and Fortinet clusters\n"},"licenseId":{"type":"string","description":"License id. This field is relevant only for the BlueCat DNS and DHCP Server\n","secret":true},"licenseKey":{"type":"string","description":"License key. This field is relevant only for the BlueCat DNS and DHCP Server\n","secret":true},"panoramaAuthKey":{"type":"string","description":"Panorama Server Auth Key. This field is relevant only for Palo Alto Networks Firewall devices\n","secret":true},"panoramaIpAddress":{"type":"string","description":"Panorama Server IP Address. This field is relevant only for Palo Alto Networks Firewall devices\n"},"privateAddress":{"type":"string","description":"Private address. This field is relevant only for the BlueCat DNS and DHCP Server\n"},"privateCidrMask":{"type":"string","description":"Private CIDR Mask. This field is relevant only for the BlueCat DNS and DHCP Server\n"},"privateGateway":{"type":"string","description":"Private gateway. This field is relevant only for the BlueCat DNS and DHCP Server\n"},"rootPassword":{"type":"string","description":"The CLI password of the device. This field is relevant only for the Velocloud SDWAN cluster\n","secret":true}},"type":"object","required":["activationKey","adminPassword","controller1","controllerFqdn","hostname","licenseId","licenseKey","panoramaAuthKey","panoramaIpAddress","privateAddress","privateCidrMask","privateGateway","rootPassword"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:networkedge/getDeviceInterface:getDeviceInterface":{"properties":{"assignedType":{"type":"string","description":"Interface management type (Equinix Managed or empty)\n"},"id":{"type":"integer","description":"Interface identifier\n"},"ipAddress":{"type":"string","description":"interface IP address\n"},"macAddress":{"type":"string","description":"Interface MAC addres\n"},"name":{"type":"string","description":"Name of an existing Equinix Network Edge device\n"},"operationalStatus":{"type":"string","description":"Interface operational status (up or down)\n"},"status":{"type":"string","description":"Device provisioning status\n* INITIALIZING\n* PROVISIONING\n* PROVISIONED (**NOTE: By default data source will only return devices in this state. To include other states see `valid_state_list`**)\n* WAITING_FOR_PRIMARY\n* WAITING_FOR_SECONDARY\n* WAITING_FOR_REPLICA_CLUSTER_NODES\n* CLUSTER_SETUP_IN_PROGRESS\n* FAILED\n* DEPROVISIONING\n* DEPROVISIONED\n* RESOURCE_UPGRADE_IN_PROGRESS\n* RESOURCE_UPGRADE_FAILED\n"},"type":{"type":"string","description":"Interface type\n"}},"type":"object","required":["assignedType","id","ipAddress","macAddress","name","operationalStatus","status","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:networkedge/getDeviceSecondaryDevice:getDeviceSecondaryDevice":{"properties":{"accountNumber":{"type":"string","description":"Device billing account number\n"},"aclTemplateId":{"type":"string","description":"Unique identifier of applied ACL template\n"},"additionalBandwidth":{"type":"integer","description":"Additional Internet bandwidth, in Mbps, that will be allocated to the device\n"},"asn":{"type":"integer","description":"Autonomous system number\n"},"cloudInitFileId":{"type":"string","description":"Unique identifier of applied cloud init file\n"},"hostname":{"type":"string","description":"Device hostname prefix\n"},"ibx":{"type":"string","description":"Device location Equinix Business Exchange name\n"},"interfaces":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/getDeviceSecondaryDeviceInterface:getDeviceSecondaryDeviceInterface"},"description":"List of device interfaces\n* `interface.#.id` - interface identifier\n* `interface.#.name` - interface name\n* `interface.#.status` - interface status (AVAILABLE, RESERVED, ASSIGNED)\n* `interface.#.operational_status` - interface operational status (up or down)\n* `interface.#.mac_address` - interface MAC address\n* `interface.#.ip_address` - interface IP address\n* `interface.#.assigned_type` - interface management type (Equinix Managed or empty)\n* `interface.#.type` - interface type\n"},"licenseFile":{"type":"string","description":"Path to the license file that will be uploaded and applied on a device, applicable for some device types in BYOL licensing mode\n"},"licenseFileId":{"type":"string","description":"Unique identifier of applied license file\n"},"licenseStatus":{"type":"string","description":"Device license registration status\n* APPLYING_LICENSE\n* REGISTERED\n* APPLIED\n* WAITING_FOR_CLUSTER_SETUP\n* REGISTRATION_FAILED\n* NA\n"},"licenseToken":{"type":"string","description":"License Token applicable for some device types in BYOL licensing mode\n"},"metroCode":{"type":"string","description":"Device location metro code\n"},"mgmtAclTemplateUuid":{"type":"string","description":"Unique identifier of applied MGMT ACL template\n"},"name":{"type":"string","description":"Name of an existing Equinix Network Edge device\n"},"notifications":{"type":"array","items":{"type":"string"},"description":"List of email addresses that will receive device status notifications\n"},"projectId":{"type":"string","description":"The unique identifier of Project Resource to which device is scoped to\n"},"redundancyType":{"type":"string","description":"Device redundancy type applicable for HA devices, either primary or secondary\n"},"redundantId":{"type":"string","description":"Unique identifier for a redundant device applicable for HA devices\n"},"region":{"type":"string","description":"Device location region\n"},"sshIpAddress":{"type":"string","description":"IP address of SSH enabled interface on the device\n"},"sshIpFqdn":{"type":"string","description":"FQDN of SSH enabled interface on the device\n"},"sshKeys":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/getDeviceSecondaryDeviceSshKey:getDeviceSecondaryDeviceSshKey"},"description":"Definition of SSH key that will be provisioned on a device\n"},"status":{"type":"string","description":"Device provisioning status\n* INITIALIZING\n* PROVISIONING\n* PROVISIONED (**NOTE: By default data source will only return devices in this state. To include other states see `valid_state_list`**)\n* WAITING_FOR_PRIMARY\n* WAITING_FOR_SECONDARY\n* WAITING_FOR_REPLICA_CLUSTER_NODES\n* CLUSTER_SETUP_IN_PROGRESS\n* FAILED\n* DEPROVISIONING\n* DEPROVISIONED\n* RESOURCE_UPGRADE_IN_PROGRESS\n* RESOURCE_UPGRADE_FAILED\n"},"uuid":{"type":"string","description":"UUID of an existing Equinix Network Edge device\n"},"vendorConfiguration":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, managementInterfaceId, ipAddressType)\n"},"wanInterfaceId":{"type":"string","description":"device interface id picked for WAN\n"},"zoneCode":{"type":"string","description":"Device location zone code\n"}},"type":"object","required":["accountNumber","aclTemplateId","additionalBandwidth","asn","cloudInitFileId","hostname","ibx","interfaces","licenseFile","licenseFileId","licenseStatus","licenseToken","metroCode","mgmtAclTemplateUuid","name","notifications","projectId","redundancyType","redundantId","region","sshIpAddress","sshIpFqdn","sshKeys","status","uuid","vendorConfiguration","wanInterfaceId","zoneCode"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:networkedge/getDeviceSecondaryDeviceInterface:getDeviceSecondaryDeviceInterface":{"properties":{"assignedType":{"type":"string","description":"Interface management type (Equinix Managed or empty)\n"},"id":{"type":"integer","description":"Interface identifier\n"},"ipAddress":{"type":"string","description":"interface IP address\n"},"macAddress":{"type":"string","description":"Interface MAC addres\n"},"name":{"type":"string","description":"Name of an existing Equinix Network Edge device\n"},"operationalStatus":{"type":"string","description":"Interface operational status (up or down)\n"},"status":{"type":"string","description":"Device provisioning status\n* INITIALIZING\n* PROVISIONING\n* PROVISIONED (**NOTE: By default data source will only return devices in this state. To include other states see `valid_state_list`**)\n* WAITING_FOR_PRIMARY\n* WAITING_FOR_SECONDARY\n* WAITING_FOR_REPLICA_CLUSTER_NODES\n* CLUSTER_SETUP_IN_PROGRESS\n* FAILED\n* DEPROVISIONING\n* DEPROVISIONED\n* RESOURCE_UPGRADE_IN_PROGRESS\n* RESOURCE_UPGRADE_FAILED\n"},"type":{"type":"string","description":"Interface type\n"}},"type":"object","required":["assignedType","id","ipAddress","macAddress","name","operationalStatus","status","type"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:networkedge/getDeviceSecondaryDeviceSshKey:getDeviceSecondaryDeviceSshKey":{"properties":{"keyName":{"type":"string","description":"Reference by name to previously provisioned public SSH key\n"},"username":{"type":"string","description":"Username associated with given key\n"}},"type":"object","required":["keyName","username"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:networkedge/getDeviceSshKey:getDeviceSshKey":{"properties":{"keyName":{"type":"string","description":"Reference by name to previously provisioned public SSH key\n"},"username":{"type":"string","description":"Username associated with given key\n"}},"type":"object","required":["keyName","username"],"language":{"nodejs":{"requiredInputs":[]}}},"equinix:networkedge/throughputUnit:ThroughputUnit":{"type":"string","enum":[{"name":"Mbps","value":"Mbps"},{"name":"Gbps","value":"Gbps"}]}},"provider":{"description":"The provider type for the equinix 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 Equinix Metal API auth key for API operations\n"},"clientId":{"type":"string","description":"API Consumer Key available under \"My Apps\" in developer portal. This argument can also be specified with the\n`EQUINIX_API_CLIENTID` shell environment variable.\n"},"clientSecret":{"type":"string","description":"API Consumer secret available under \"My Apps\" in developer portal. This argument can also be specified with the\n`EQUINIX_API_CLIENTSECRET` shell environment variable.\n"},"endpoint":{"type":"string","description":"The Equinix API base URL to point out desired environment. This argument can also be specified with the\n`EQUINIX_API_ENDPOINT` shell environment variable. (Defaults to `https://api.equinix.com`)\n"},"maxRetries":{"type":"integer","description":"Maximum number of retries in case of network failure.\n"},"maxRetryWaitSeconds":{"type":"integer","description":"Maximum number of seconds to wait before retrying a request.\n"},"requestTimeout":{"type":"integer","description":"The duration of time, in seconds, that the Equinix Platform API Client should wait before canceling an API request.\nCanceled requests may still result in provisioned resources. (Defaults to `30`)\n"},"responseMaxPageSize":{"type":"integer","description":"The maximum number of records in a single response for REST queries that produce paginated responses. (Default is client\nspecific)\n"},"stsEndpoint":{"type":"string","description":"The STS API base URL to point to the desired environment. This argument can also be specified with the\n`EQUINIX_STS_ENDPOINT` shell environment variable. (Defaults to `https://sts.eqix.equinix.com`). Please note that STS is\nan alpha feature and not available for all users.\n"},"token":{"type":"string","description":"API tokens are generated from API Consumer clients using the [OAuth2\nAPI](https://developer.equinix.com/dev-docs/fabric/getting-started/getting-access-token#request-access-and-refresh-tokens).\nThis argument can also be specified with the `EQUINIX_API_TOKEN` shell environment variable.\n"},"tokenExchangeScope":{"type":"string","description":"The scope of the authentication token. Must be an access policy ERN or a string of the form `roleassignments:\u003corg_id\u003e`.\nThis argument can also be specified with the `EQUINIX_TOKEN_EXCHANGE_SCOPE` shell environment variable. Please note that\ntoken exchange is an alpha feature and not available for all users.\n"},"tokenExchangeSubjectToken":{"type":"string","description":"The subject token to use for token exchange authentication. Must be an OIDC ID token issued by an OIDC provider trusted\nby Equinix STS. If not set, the provider will use the environment variable specified in\n`token_exchange_subject_token_env_var`. Please note that token exchange is an alpha feature and not available for all\nusers.\n"},"tokenExchangeSubjectTokenEnvVar":{"type":"string","description":"The name of the environment variable containing the subject token for token exchange. This argument can also be\nspecified with the `EQUINIX_TOKEN_EXCHANGE_SUBJECT_TOKEN_ENV_VAR` shell environment variable. (Defaults to\n`EQUINIX_TOKEN_EXCHANGE_SUBJECT_TOKEN`). Please note that token exchange is an alpha feature and not available for all\nusers.\n"}},"inputProperties":{"authToken":{"type":"string","description":"The Equinix Metal API auth key for API operations\n"},"clientId":{"type":"string","description":"API Consumer Key available under \"My Apps\" in developer portal. This argument can also be specified with the\n`EQUINIX_API_CLIENTID` shell environment variable.\n"},"clientSecret":{"type":"string","description":"API Consumer secret available under \"My Apps\" in developer portal. This argument can also be specified with the\n`EQUINIX_API_CLIENTSECRET` shell environment variable.\n"},"endpoint":{"type":"string","description":"The Equinix API base URL to point out desired environment. This argument can also be specified with the\n`EQUINIX_API_ENDPOINT` shell environment variable. (Defaults to `https://api.equinix.com`)\n"},"maxRetries":{"type":"integer","description":"Maximum number of retries in case of network failure.\n"},"maxRetryWaitSeconds":{"type":"integer","description":"Maximum number of seconds to wait before retrying a request.\n"},"requestTimeout":{"type":"integer","description":"The duration of time, in seconds, that the Equinix Platform API Client should wait before canceling an API request.\nCanceled requests may still result in provisioned resources. (Defaults to `30`)\n"},"responseMaxPageSize":{"type":"integer","description":"The maximum number of records in a single response for REST queries that produce paginated responses. (Default is client\nspecific)\n"},"stsEndpoint":{"type":"string","description":"The STS API base URL to point to the desired environment. This argument can also be specified with the\n`EQUINIX_STS_ENDPOINT` shell environment variable. (Defaults to `https://sts.eqix.equinix.com`). Please note that STS is\nan alpha feature and not available for all users.\n"},"token":{"type":"string","description":"API tokens are generated from API Consumer clients using the [OAuth2\nAPI](https://developer.equinix.com/dev-docs/fabric/getting-started/getting-access-token#request-access-and-refresh-tokens).\nThis argument can also be specified with the `EQUINIX_API_TOKEN` shell environment variable.\n"},"tokenExchangeScope":{"type":"string","description":"The scope of the authentication token. Must be an access policy ERN or a string of the form `roleassignments:\u003corg_id\u003e`.\nThis argument can also be specified with the `EQUINIX_TOKEN_EXCHANGE_SCOPE` shell environment variable. Please note that\ntoken exchange is an alpha feature and not available for all users.\n"},"tokenExchangeSubjectToken":{"type":"string","description":"The subject token to use for token exchange authentication. Must be an OIDC ID token issued by an OIDC provider trusted\nby Equinix STS. If not set, the provider will use the environment variable specified in\n`token_exchange_subject_token_env_var`. Please note that token exchange is an alpha feature and not available for all\nusers.\n"},"tokenExchangeSubjectTokenEnvVar":{"type":"string","description":"The name of the environment variable containing the subject token for token exchange. This argument can also be\nspecified with the `EQUINIX_TOKEN_EXCHANGE_SUBJECT_TOKEN_ENV_VAR` shell environment variable. (Defaults to\n`EQUINIX_TOKEN_EXCHANGE_SUBJECT_TOKEN`). Please note that token exchange is an alpha feature and not available for all\nusers.\n"}}},"resources":{"equinix:fabric/cloudRouter:CloudRouter":{"description":"Fabric V4 API compatible resource allows creation and management of [Equinix Fabric Cloud Router](https://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-intro.htm#HowItWorks).\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-intro.htm#HowItWorks\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#fabric-cloud-routers\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n### example 1\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst newCloudRouter = new equinix.fabric.CloudRouter(\"newCloudRouter\", {\n    name: \"Router-SV\",\n    type: \"XF_ROUTER\",\n    notifications: [{\n        type: \"ALL\",\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    location: {\n        metroCode: \"SV\",\n    },\n    \"package\": {\n        code: \"STANDARD\",\n    },\n    project: {\n        projectId: \"776847000642406\",\n    },\n    account: {\n        accountNumber: 203612,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nnew_cloud_router = equinix.fabric.CloudRouter(\"newCloudRouter\",\n    name=\"Router-SV\",\n    type=\"XF_ROUTER\",\n    notifications=[{\n        \"type\": \"ALL\",\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    location={\n        \"metro_code\": \"SV\",\n    },\n    package={\n        \"code\": \"STANDARD\",\n    },\n    project={\n        \"project_id\": \"776847000642406\",\n    },\n    account={\n        \"account_number\": 203612,\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewCloudRouter(ctx, \"newCloudRouter\", \u0026fabric.CloudRouterArgs{\n\t\t\tName: pulumi.String(\"Router-SV\"),\n\t\t\tType: pulumi.String(\"XF_ROUTER\"),\n\t\t\tNotifications: fabric.CloudRouterNotificationArray{\n\t\t\t\t\u0026fabric.CloudRouterNotificationArgs{\n\t\t\t\t\tType: pulumi.String(\"ALL\"),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tOrder: \u0026fabric.CloudRouterOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tLocation: \u0026fabric.CloudRouterLocationArgs{\n\t\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t\t},\n\t\t\tPackage: \u0026fabric.CloudRouterPackageArgs{\n\t\t\t\tCode: pulumi.String(\"STANDARD\"),\n\t\t\t},\n\t\t\tProject: \u0026fabric.CloudRouterProjectArgs{\n\t\t\t\tProjectId: pulumi.String(\"776847000642406\"),\n\t\t\t},\n\t\t\tAccount: \u0026fabric.CloudRouterAccountArgs{\n\t\t\t\tAccountNumber: pulumi.Int(203612),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var newCloudRouter = new Equinix.Fabric.CloudRouter(\"newCloudRouter\", new()\n    {\n        Name = \"Router-SV\",\n        Type = \"XF_ROUTER\",\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.CloudRouterNotificationArgs\n            {\n                Type = \"ALL\",\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Order = new Equinix.Fabric.Inputs.CloudRouterOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        Location = new Equinix.Fabric.Inputs.CloudRouterLocationArgs\n        {\n            MetroCode = \"SV\",\n        },\n        Package = new Equinix.Fabric.Inputs.CloudRouterPackageArgs\n        {\n            Code = \"STANDARD\",\n        },\n        Project = new Equinix.Fabric.Inputs.CloudRouterProjectArgs\n        {\n            ProjectId = \"776847000642406\",\n        },\n        Account = new Equinix.Fabric.Inputs.CloudRouterAccountArgs\n        {\n            AccountNumber = 203612,\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.CloudRouter;\nimport com.pulumi.equinix.fabric.CloudRouterArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterLocationArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterPackageArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterProjectArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var newCloudRouter = new CloudRouter(\"newCloudRouter\", CloudRouterArgs.builder()\n            .name(\"Router-SV\")\n            .type(\"XF_ROUTER\")\n            .notifications(CloudRouterNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .order(CloudRouterOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .location(CloudRouterLocationArgs.builder()\n                .metroCode(\"SV\")\n                .build())\n            .package_(CloudRouterPackageArgs.builder()\n                .code(\"STANDARD\")\n                .build())\n            .project(CloudRouterProjectArgs.builder()\n                .projectId(\"776847000642406\")\n                .build())\n            .account(CloudRouterAccountArgs.builder()\n                .accountNumber(203612)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  newCloudRouter:\n    type: equinix:fabric:CloudRouter\n    name: new_cloud_router\n    properties:\n      name: Router-SV\n      type: XF_ROUTER\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      order:\n        purchaseOrderNumber: 1-323292\n      location:\n        metroCode: SV\n      package:\n        code: STANDARD\n      project:\n        projectId: '776847000642406'\n      account:\n        accountNumber: '203612'\n```\n{{% /example %}}\n\n{{% example %}}\n### example 2\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst newCloudRouter = new equinix.fabric.CloudRouter(\"newCloudRouter\", {\n    name: \"Router-SV\",\n    type: \"XF_ROUTER\",\n    notifications: [{\n        type: \"ALL\",\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    location: {\n        metroCode: \"SV\",\n    },\n    \"package\": {\n        code: \"STANDARD\",\n    },\n    project: {\n        projectId: \"776847000642406\",\n    },\n    marketplaceSubscription: {\n        type: \"AWS_MARKETPLACE_SUBSCRIPTION\",\n        uuid: \"2823b8ae07-a2a2-45b4-a658-c3542bb24e9\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nnew_cloud_router = equinix.fabric.CloudRouter(\"newCloudRouter\",\n    name=\"Router-SV\",\n    type=\"XF_ROUTER\",\n    notifications=[{\n        \"type\": \"ALL\",\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    location={\n        \"metro_code\": \"SV\",\n    },\n    package={\n        \"code\": \"STANDARD\",\n    },\n    project={\n        \"project_id\": \"776847000642406\",\n    },\n    marketplace_subscription={\n        \"type\": \"AWS_MARKETPLACE_SUBSCRIPTION\",\n        \"uuid\": \"2823b8ae07-a2a2-45b4-a658-c3542bb24e9\",\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewCloudRouter(ctx, \"newCloudRouter\", \u0026fabric.CloudRouterArgs{\n\t\t\tName: pulumi.String(\"Router-SV\"),\n\t\t\tType: pulumi.String(\"XF_ROUTER\"),\n\t\t\tNotifications: fabric.CloudRouterNotificationArray{\n\t\t\t\t\u0026fabric.CloudRouterNotificationArgs{\n\t\t\t\t\tType: pulumi.String(\"ALL\"),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tOrder: \u0026fabric.CloudRouterOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tLocation: \u0026fabric.CloudRouterLocationArgs{\n\t\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t\t},\n\t\t\tPackage: \u0026fabric.CloudRouterPackageArgs{\n\t\t\t\tCode: pulumi.String(\"STANDARD\"),\n\t\t\t},\n\t\t\tProject: \u0026fabric.CloudRouterProjectArgs{\n\t\t\t\tProjectId: pulumi.String(\"776847000642406\"),\n\t\t\t},\n\t\t\tMarketplaceSubscription: \u0026fabric.CloudRouterMarketplaceSubscriptionArgs{\n\t\t\t\tType: pulumi.String(\"AWS_MARKETPLACE_SUBSCRIPTION\"),\n\t\t\t\tUuid: pulumi.String(\"2823b8ae07-a2a2-45b4-a658-c3542bb24e9\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var newCloudRouter = new Equinix.Fabric.CloudRouter(\"newCloudRouter\", new()\n    {\n        Name = \"Router-SV\",\n        Type = \"XF_ROUTER\",\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.CloudRouterNotificationArgs\n            {\n                Type = \"ALL\",\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Order = new Equinix.Fabric.Inputs.CloudRouterOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        Location = new Equinix.Fabric.Inputs.CloudRouterLocationArgs\n        {\n            MetroCode = \"SV\",\n        },\n        Package = new Equinix.Fabric.Inputs.CloudRouterPackageArgs\n        {\n            Code = \"STANDARD\",\n        },\n        Project = new Equinix.Fabric.Inputs.CloudRouterProjectArgs\n        {\n            ProjectId = \"776847000642406\",\n        },\n        MarketplaceSubscription = new Equinix.Fabric.Inputs.CloudRouterMarketplaceSubscriptionArgs\n        {\n            Type = \"AWS_MARKETPLACE_SUBSCRIPTION\",\n            Uuid = \"2823b8ae07-a2a2-45b4-a658-c3542bb24e9\",\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.CloudRouter;\nimport com.pulumi.equinix.fabric.CloudRouterArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterLocationArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterPackageArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterProjectArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterMarketplaceSubscriptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var newCloudRouter = new CloudRouter(\"newCloudRouter\", CloudRouterArgs.builder()\n            .name(\"Router-SV\")\n            .type(\"XF_ROUTER\")\n            .notifications(CloudRouterNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .order(CloudRouterOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .location(CloudRouterLocationArgs.builder()\n                .metroCode(\"SV\")\n                .build())\n            .package_(CloudRouterPackageArgs.builder()\n                .code(\"STANDARD\")\n                .build())\n            .project(CloudRouterProjectArgs.builder()\n                .projectId(\"776847000642406\")\n                .build())\n            .marketplaceSubscription(CloudRouterMarketplaceSubscriptionArgs.builder()\n                .type(\"AWS_MARKETPLACE_SUBSCRIPTION\")\n                .uuid(\"2823b8ae07-a2a2-45b4-a658-c3542bb24e9\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  newCloudRouter:\n    type: equinix:fabric:CloudRouter\n    name: new_cloud_router\n    properties:\n      name: Router-SV\n      type: XF_ROUTER\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      order:\n        purchaseOrderNumber: 1-323292\n      location:\n        metroCode: SV\n      package:\n        code: STANDARD\n      project:\n        projectId: '776847000642406'\n      marketplaceSubscription:\n        type: AWS_MARKETPLACE_SUBSCRIPTION\n        uuid: 2823b8ae07-a2a2-45b4-a658-c3542bb24e9\n```\n{{% /example %}}\n\n{{% /examples %}}","properties":{"account":{"$ref":"#/types/equinix:fabric/CloudRouterAccount:CloudRouterAccount","description":"Customer account information that is associated with this Fabric Cloud Router\n"},"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/CloudRouterChangeLog:CloudRouterChangeLog"},"description":"Captures Fabric Cloud Router lifecycle change information\n"},"connectionsCount":{"type":"integer","description":"Number of connections associated with this Fabric Cloud Router instance\n"},"description":{"type":"string","description":"Customer-provided Fabric Cloud Router description\n"},"equinixAsn":{"type":"integer","description":"Equinix ASN\n"},"href":{"type":"string","description":"Fabric Cloud Router URI information\n"},"location":{"$ref":"#/types/equinix:fabric/CloudRouterLocation:CloudRouterLocation","description":"Fabric Cloud Router location\n"},"marketplaceSubscription":{"$ref":"#/types/equinix:fabric/CloudRouterMarketplaceSubscription:CloudRouterMarketplaceSubscription","description":"Equinix Fabric Entity for Marketplace Subscription\n"},"name":{"type":"string","description":"Fabric Cloud Router name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/CloudRouterNotification:CloudRouterNotification"},"description":"Preferences for notifications on Fabric Cloud Router configuration or status changes\n"},"order":{"$ref":"#/types/equinix:fabric/CloudRouterOrder:CloudRouterOrder","description":"Order information related to this Fabric Cloud Router\n"},"package":{"$ref":"#/types/equinix:fabric/CloudRouterPackage:CloudRouterPackage","description":"Fabric Cloud Router Package Type\n"},"project":{"$ref":"#/types/equinix:fabric/CloudRouterProject:CloudRouterProject","description":"Customer resource hierarchy project information. Applicable to customers onboarded to Equinix Identity and Access Management. For more information see Identity and Access Management: Projects\n"},"state":{"type":"string","description":"Fabric Cloud Router overall state\n"},"type":{"type":"string","description":"Defines the FCR type like; XF_ROUTER\n"},"uuid":{"type":"string","description":"Equinix-assigned Fabric Cloud Router identifier\n"}},"required":["account","changeLogs","connectionsCount","equinixAsn","href","location","marketplaceSubscription","name","notifications","order","package","project","state","type","uuid"],"inputProperties":{"account":{"$ref":"#/types/equinix:fabric/CloudRouterAccount:CloudRouterAccount","description":"Customer account information that is associated with this Fabric Cloud Router\n"},"description":{"type":"string","description":"Customer-provided Fabric Cloud Router description\n"},"href":{"type":"string","description":"Fabric Cloud Router URI information\n"},"location":{"$ref":"#/types/equinix:fabric/CloudRouterLocation:CloudRouterLocation","description":"Fabric Cloud Router location\n"},"marketplaceSubscription":{"$ref":"#/types/equinix:fabric/CloudRouterMarketplaceSubscription:CloudRouterMarketplaceSubscription","description":"Equinix Fabric Entity for Marketplace Subscription\n"},"name":{"type":"string","description":"Fabric Cloud Router name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/CloudRouterNotification:CloudRouterNotification"},"description":"Preferences for notifications on Fabric Cloud Router configuration or status changes\n"},"order":{"$ref":"#/types/equinix:fabric/CloudRouterOrder:CloudRouterOrder","description":"Order information related to this Fabric Cloud Router\n"},"package":{"$ref":"#/types/equinix:fabric/CloudRouterPackage:CloudRouterPackage","description":"Fabric Cloud Router Package Type\n"},"project":{"$ref":"#/types/equinix:fabric/CloudRouterProject:CloudRouterProject","description":"Customer resource hierarchy project information. Applicable to customers onboarded to Equinix Identity and Access Management. For more information see Identity and Access Management: Projects\n"},"type":{"type":"string","description":"Defines the FCR type like; XF_ROUTER\n"},"uuid":{"type":"string","description":"Equinix-assigned Fabric Cloud Router identifier\n"}},"requiredInputs":["location","notifications","package","project","type"],"stateInputs":{"description":"Input properties used for looking up and filtering CloudRouter resources.\n","properties":{"account":{"$ref":"#/types/equinix:fabric/CloudRouterAccount:CloudRouterAccount","description":"Customer account information that is associated with this Fabric Cloud Router\n"},"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/CloudRouterChangeLog:CloudRouterChangeLog"},"description":"Captures Fabric Cloud Router lifecycle change information\n"},"connectionsCount":{"type":"integer","description":"Number of connections associated with this Fabric Cloud Router instance\n"},"description":{"type":"string","description":"Customer-provided Fabric Cloud Router description\n"},"equinixAsn":{"type":"integer","description":"Equinix ASN\n"},"href":{"type":"string","description":"Fabric Cloud Router URI information\n"},"location":{"$ref":"#/types/equinix:fabric/CloudRouterLocation:CloudRouterLocation","description":"Fabric Cloud Router location\n"},"marketplaceSubscription":{"$ref":"#/types/equinix:fabric/CloudRouterMarketplaceSubscription:CloudRouterMarketplaceSubscription","description":"Equinix Fabric Entity for Marketplace Subscription\n"},"name":{"type":"string","description":"Fabric Cloud Router name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/CloudRouterNotification:CloudRouterNotification"},"description":"Preferences for notifications on Fabric Cloud Router configuration or status changes\n"},"order":{"$ref":"#/types/equinix:fabric/CloudRouterOrder:CloudRouterOrder","description":"Order information related to this Fabric Cloud Router\n"},"package":{"$ref":"#/types/equinix:fabric/CloudRouterPackage:CloudRouterPackage","description":"Fabric Cloud Router Package Type\n"},"project":{"$ref":"#/types/equinix:fabric/CloudRouterProject:CloudRouterProject","description":"Customer resource hierarchy project information. Applicable to customers onboarded to Equinix Identity and Access Management. For more information see Identity and Access Management: Projects\n"},"state":{"type":"string","description":"Fabric Cloud Router overall state\n"},"type":{"type":"string","description":"Defines the FCR type like; XF_ROUTER\n"},"uuid":{"type":"string","description":"Equinix-assigned Fabric Cloud Router identifier\n"}},"type":"object"}},"equinix:fabric/connection:Connection":{"description":"\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n### example fcr to azure\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst fcr2Azure = new equinix.fabric.Connection(\"fcr2azure\", {\n    name: \"ConnectionName\",\n    type: \"IP_VC\",\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        accessPoint: {\n            type: \"CLOUD_ROUTER\",\n            router: {\n                uuid: \"\u003ccloud_router_uuid\u003e\",\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.SP,\n            authenticationKey: \"\u003cAzure_ExpressRouter_Auth_Key\u003e\",\n            peeringType: equinix.fabric.AccessPointPeeringType.Private,\n            profile: {\n                type: equinix.fabric.ProfileType.L2Profile,\n                uuid: \"\u003cAzure_Service_Profile_UUID\u003e\",\n            },\n            location: {\n                metroCode: equinix.index.Metro.SiliconValley,\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nfcr2_azure = equinix.fabric.Connection(\"fcr2azure\",\n    name=\"ConnectionName\",\n    type=\"IP_VC\",\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": \"CLOUD_ROUTER\",\n            \"router\": {\n                \"uuid\": \"\u003ccloud_router_uuid\u003e\",\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.SP,\n            \"authentication_key\": \"\u003cAzure_ExpressRouter_Auth_Key\u003e\",\n            \"peering_type\": equinix.fabric.AccessPointPeeringType.PRIVATE,\n            \"profile\": {\n                \"type\": equinix.fabric.ProfileType.L2_PROFILE,\n                \"uuid\": \"\u003cAzure_Service_Profile_UUID\u003e\",\n            },\n            \"location\": {\n                \"metro_code\": equinix.Metro.SILICON_VALLEY,\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix\"\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"fcr2azure\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(\"IP_VC\"),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(\"CLOUD_ROUTER\"),\n\t\t\t\t\tRouter: \u0026fabric.ConnectionASideAccessPointRouterArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003ccloud_router_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType:              pulumi.String(fabric.AccessPointTypeSP),\n\t\t\t\t\tAuthenticationKey: pulumi.String(\"\u003cAzure_ExpressRouter_Auth_Key\u003e\"),\n\t\t\t\t\tPeeringType:       pulumi.String(fabric.AccessPointPeeringTypePrivate),\n\t\t\t\t\tProfile: \u0026fabric.ConnectionZSideAccessPointProfileArgs{\n\t\t\t\t\t\tType: pulumi.String(fabric.ProfileTypeL2Profile),\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cAzure_Service_Profile_UUID\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLocation: \u0026fabric.ConnectionZSideAccessPointLocationArgs{\n\t\t\t\t\t\tMetroCode: pulumi.String(equinix.MetroSiliconValley),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var fcr2Azure = new Equinix.Fabric.Connection(\"fcr2azure\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = \"IP_VC\",\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = \"CLOUD_ROUTER\",\n                Router = new Equinix.Fabric.Inputs.ConnectionASideAccessPointRouterArgs\n                {\n                    Uuid = \"\u003ccloud_router_uuid\u003e\",\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.SP,\n                AuthenticationKey = \"\u003cAzure_ExpressRouter_Auth_Key\u003e\",\n                PeeringType = Equinix.Fabric.AccessPointPeeringType.Private,\n                Profile = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointProfileArgs\n                {\n                    Type = Equinix.Fabric.ProfileType.L2Profile,\n                    Uuid = \"\u003cAzure_Service_Profile_UUID\u003e\",\n                },\n                Location = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLocationArgs\n                {\n                    MetroCode = Equinix.Metro.SiliconValley,\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointRouterArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointProfileArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var fcr2Azure = new Connection(\"fcr2Azure\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"IP_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"CLOUD_ROUTER\")\n                    .router(ConnectionASideAccessPointRouterArgs.builder()\n                        .uuid(\"\u003ccloud_router_uuid\u003e\")\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"SP\")\n                    .authenticationKey(\"\u003cAzure_ExpressRouter_Auth_Key\u003e\")\n                    .peeringType(\"PRIVATE\")\n                    .profile(ConnectionZSideAccessPointProfileArgs.builder()\n                        .type(\"L2_PROFILE\")\n                        .uuid(\"\u003cAzure_Service_Profile_UUID\u003e\")\n                        .build())\n                    .location(ConnectionZSideAccessPointLocationArgs.builder()\n                        .metroCode(\"SV\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  fcr2azure:\n    type: equinix:fabric:Connection\n    properties:\n      name: ConnectionName\n      type: IP_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        accessPoint:\n          type: CLOUD_ROUTER\n          router:\n            uuid: \u003ccloud_router_uuid\u003e\n      zSide:\n        accessPoint:\n          type: SP\n          authenticationKey: \u003cAzure_ExpressRouter_Auth_Key\u003e\n          peeringType: PRIVATE\n          profile:\n            type: L2_PROFILE\n            uuid: \u003cAzure_Service_Profile_UUID\u003e\n          location:\n            metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example fcr to metal\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst fcr2Metal = new equinix.fabric.Connection(\"fcr2metal\", {\n    name: \"ConnectionName\",\n    type: \"IP_VC\",\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        accessPoint: {\n            type: \"CLOUD_ROUTER\",\n            router: {\n                uuid: \"\u003ccloud_router_uuid\u003e\",\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: \"METAL_NETWORK\",\n            authenticationKey: \"\u003cmetal_authorization_code\u003e\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nfcr2_metal = equinix.fabric.Connection(\"fcr2metal\",\n    name=\"ConnectionName\",\n    type=\"IP_VC\",\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": \"CLOUD_ROUTER\",\n            \"router\": {\n                \"uuid\": \"\u003ccloud_router_uuid\u003e\",\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": \"METAL_NETWORK\",\n            \"authentication_key\": \"\u003cmetal_authorization_code\u003e\",\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"fcr2metal\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(\"IP_VC\"),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(\"CLOUD_ROUTER\"),\n\t\t\t\t\tRouter: \u0026fabric.ConnectionASideAccessPointRouterArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003ccloud_router_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType:              pulumi.String(\"METAL_NETWORK\"),\n\t\t\t\t\tAuthenticationKey: pulumi.String(\"\u003cmetal_authorization_code\u003e\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var fcr2Metal = new Equinix.Fabric.Connection(\"fcr2metal\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = \"IP_VC\",\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = \"CLOUD_ROUTER\",\n                Router = new Equinix.Fabric.Inputs.ConnectionASideAccessPointRouterArgs\n                {\n                    Uuid = \"\u003ccloud_router_uuid\u003e\",\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = \"METAL_NETWORK\",\n                AuthenticationKey = \"\u003cmetal_authorization_code\u003e\",\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointRouterArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var fcr2Metal = new Connection(\"fcr2Metal\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"IP_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"CLOUD_ROUTER\")\n                    .router(ConnectionASideAccessPointRouterArgs.builder()\n                        .uuid(\"\u003ccloud_router_uuid\u003e\")\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"METAL_NETWORK\")\n                    .authenticationKey(\"\u003cmetal_authorization_code\u003e\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  fcr2metal:\n    type: equinix:fabric:Connection\n    properties:\n      name: ConnectionName\n      type: IP_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        accessPoint:\n          type: CLOUD_ROUTER\n          router:\n            uuid: \u003ccloud_router_uuid\u003e\n      zSide:\n        accessPoint:\n          type: METAL_NETWORK\n          authenticationKey: \u003cmetal_authorization_code\u003e\n```\n{{% /example %}}\n\n{{% example %}}\n### example fcr to network\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst fcr2Network = new equinix.fabric.Connection(\"fcr2network\", {\n    name: \"ConnectionName\",\n    type: \"IPWAN_VC\",\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        accessPoint: {\n            type: \"CLOUD_ROUTER\",\n            router: {\n                uuid: \"\u003ccloud_router_uuid\u003e\",\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Network,\n            network: {\n                uuid: \"\u003cnetwork_uuid\u003e\",\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nfcr2_network = equinix.fabric.Connection(\"fcr2network\",\n    name=\"ConnectionName\",\n    type=\"IPWAN_VC\",\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": \"CLOUD_ROUTER\",\n            \"router\": {\n                \"uuid\": \"\u003ccloud_router_uuid\u003e\",\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.NETWORK,\n            \"network\": {\n                \"uuid\": \"\u003cnetwork_uuid\u003e\",\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"fcr2network\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(\"IPWAN_VC\"),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(\"CLOUD_ROUTER\"),\n\t\t\t\t\tRouter: \u0026fabric.ConnectionASideAccessPointRouterArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003ccloud_router_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeNetwork),\n\t\t\t\t\tNetwork: \u0026fabric.ConnectionZSideAccessPointNetworkArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cnetwork_uuid\u003e\"),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var fcr2Network = new Equinix.Fabric.Connection(\"fcr2network\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = \"IPWAN_VC\",\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = \"CLOUD_ROUTER\",\n                Router = new Equinix.Fabric.Inputs.ConnectionASideAccessPointRouterArgs\n                {\n                    Uuid = \"\u003ccloud_router_uuid\u003e\",\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Network,\n                Network = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointNetworkArgs\n                {\n                    Uuid = \"\u003cnetwork_uuid\u003e\",\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointRouterArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var fcr2Network = new Connection(\"fcr2Network\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"IPWAN_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"CLOUD_ROUTER\")\n                    .router(ConnectionASideAccessPointRouterArgs.builder()\n                        .uuid(\"\u003ccloud_router_uuid\u003e\")\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"NETWORK\")\n                    .network(ConnectionZSideAccessPointNetworkArgs.builder()\n                        .uuid(\"\u003cnetwork_uuid\u003e\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  fcr2network:\n    type: equinix:fabric:Connection\n    properties:\n      name: ConnectionName\n      type: IPWAN_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        accessPoint:\n          type: CLOUD_ROUTER\n          router:\n            uuid: \u003ccloud_router_uuid\u003e\n      zSide:\n        accessPoint:\n          type: NETWORK\n          network:\n            uuid: \u003cnetwork_uuid\u003e\n```\n{{% /example %}}\n\n{{% example %}}\n### example fcr to port\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst fcr2Port = new equinix.fabric.Connection(\"fcr2port\", {\n    name: \"ConnectionName\",\n    type: \"IP_VC\",\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        accessPoint: {\n            type: \"CLOUD_ROUTER\",\n            router: {\n                uuid: \"\u003ccloud_router_uuid\u003e\",\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Colo,\n            port: {\n                uuid: \"\u003cport_uuid\u003e\",\n            },\n            linkProtocol: {\n                type: equinix.fabric.AccessPointLinkProtocolType.Dot1q,\n                vlanTag: 2711,\n            },\n            location: {\n                metroCode: equinix.index.Metro.SiliconValley,\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nfcr2_port = equinix.fabric.Connection(\"fcr2port\",\n    name=\"ConnectionName\",\n    type=\"IP_VC\",\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": \"CLOUD_ROUTER\",\n            \"router\": {\n                \"uuid\": \"\u003ccloud_router_uuid\u003e\",\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.COLO,\n            \"port\": {\n                \"uuid\": \"\u003cport_uuid\u003e\",\n            },\n            \"link_protocol\": {\n                \"type\": equinix.fabric.AccessPointLinkProtocolType.DOT1Q,\n                \"vlan_tag\": 2711,\n            },\n            \"location\": {\n                \"metro_code\": equinix.Metro.SILICON_VALLEY,\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix\"\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"fcr2port\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(\"IP_VC\"),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(\"CLOUD_ROUTER\"),\n\t\t\t\t\tRouter: \u0026fabric.ConnectionASideAccessPointRouterArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003ccloud_router_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeColo),\n\t\t\t\t\tPort: \u0026fabric.ConnectionZSideAccessPointPortArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cport_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLinkProtocol: \u0026fabric.ConnectionZSideAccessPointLinkProtocolArgs{\n\t\t\t\t\t\tType:    pulumi.String(fabric.AccessPointLinkProtocolTypeDot1q),\n\t\t\t\t\t\tVlanTag: pulumi.Int(2711),\n\t\t\t\t\t},\n\t\t\t\t\tLocation: \u0026fabric.ConnectionZSideAccessPointLocationArgs{\n\t\t\t\t\t\tMetroCode: pulumi.String(equinix.MetroSiliconValley),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var fcr2Port = new Equinix.Fabric.Connection(\"fcr2port\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = \"IP_VC\",\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = \"CLOUD_ROUTER\",\n                Router = new Equinix.Fabric.Inputs.ConnectionASideAccessPointRouterArgs\n                {\n                    Uuid = \"\u003ccloud_router_uuid\u003e\",\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Colo,\n                Port = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointPortArgs\n                {\n                    Uuid = \"\u003cport_uuid\u003e\",\n                },\n                LinkProtocol = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLinkProtocolArgs\n                {\n                    Type = Equinix.Fabric.AccessPointLinkProtocolType.Dot1q,\n                    VlanTag = 2711,\n                },\n                Location = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLocationArgs\n                {\n                    MetroCode = Equinix.Metro.SiliconValley,\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointRouterArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointPortArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLinkProtocolArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var fcr2Port = new Connection(\"fcr2Port\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"IP_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"CLOUD_ROUTER\")\n                    .router(ConnectionASideAccessPointRouterArgs.builder()\n                        .uuid(\"\u003ccloud_router_uuid\u003e\")\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"COLO\")\n                    .port(ConnectionZSideAccessPointPortArgs.builder()\n                        .uuid(\"\u003cport_uuid\u003e\")\n                        .build())\n                    .linkProtocol(ConnectionZSideAccessPointLinkProtocolArgs.builder()\n                        .type(\"DOT1Q\")\n                        .vlanTag(2711)\n                        .build())\n                    .location(ConnectionZSideAccessPointLocationArgs.builder()\n                        .metroCode(\"SV\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  fcr2port:\n    type: equinix:fabric:Connection\n    properties:\n      name: ConnectionName\n      type: IP_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        accessPoint:\n          type: CLOUD_ROUTER\n          router:\n            uuid: \u003ccloud_router_uuid\u003e\n      zSide:\n        accessPoint:\n          type: COLO\n          port:\n            uuid: \u003cport_uuid\u003e\n          linkProtocol:\n            type: DOT1Q\n            vlanTag: '2711'\n          location:\n            metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example metal to aws\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst metal2Aws = new equinix.fabric.Connection(\"metal2aws\", {\n    name: \"ConnectionName\",\n    type: \"EVPLAN_VC\",\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        accessPoint: {\n            type: \"METAL_NETWORK\",\n            authenticationKey: \"\u003cmetal_authorization_code\u003e\",\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.SP,\n            authenticationKey: \"\u003caws_account_id\u003e\",\n            sellerRegion: \"us-west-1\",\n            profile: {\n                type: equinix.fabric.ProfileType.L2Profile,\n                uuid: \"\u003cservice_profile_uuid\u003e\",\n            },\n            location: {\n                metroCode: equinix.index.Metro.SiliconValley,\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nmetal2_aws = equinix.fabric.Connection(\"metal2aws\",\n    name=\"ConnectionName\",\n    type=\"EVPLAN_VC\",\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": \"METAL_NETWORK\",\n            \"authentication_key\": \"\u003cmetal_authorization_code\u003e\",\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.SP,\n            \"authentication_key\": \"\u003caws_account_id\u003e\",\n            \"seller_region\": \"us-west-1\",\n            \"profile\": {\n                \"type\": equinix.fabric.ProfileType.L2_PROFILE,\n                \"uuid\": \"\u003cservice_profile_uuid\u003e\",\n            },\n            \"location\": {\n                \"metro_code\": equinix.Metro.SILICON_VALLEY,\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix\"\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"metal2aws\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(\"EVPLAN_VC\"),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType:              pulumi.String(\"METAL_NETWORK\"),\n\t\t\t\t\tAuthenticationKey: pulumi.String(\"\u003cmetal_authorization_code\u003e\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType:              pulumi.String(fabric.AccessPointTypeSP),\n\t\t\t\t\tAuthenticationKey: pulumi.String(\"\u003caws_account_id\u003e\"),\n\t\t\t\t\tSellerRegion:      pulumi.String(\"us-west-1\"),\n\t\t\t\t\tProfile: \u0026fabric.ConnectionZSideAccessPointProfileArgs{\n\t\t\t\t\t\tType: pulumi.String(fabric.ProfileTypeL2Profile),\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cservice_profile_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLocation: \u0026fabric.ConnectionZSideAccessPointLocationArgs{\n\t\t\t\t\t\tMetroCode: pulumi.String(equinix.MetroSiliconValley),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var metal2Aws = new Equinix.Fabric.Connection(\"metal2aws\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = \"EVPLAN_VC\",\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = \"METAL_NETWORK\",\n                AuthenticationKey = \"\u003cmetal_authorization_code\u003e\",\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.SP,\n                AuthenticationKey = \"\u003caws_account_id\u003e\",\n                SellerRegion = \"us-west-1\",\n                Profile = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointProfileArgs\n                {\n                    Type = Equinix.Fabric.ProfileType.L2Profile,\n                    Uuid = \"\u003cservice_profile_uuid\u003e\",\n                },\n                Location = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLocationArgs\n                {\n                    MetroCode = Equinix.Metro.SiliconValley,\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointProfileArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var metal2Aws = new Connection(\"metal2Aws\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"EVPLAN_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"METAL_NETWORK\")\n                    .authenticationKey(\"\u003cmetal_authorization_code\u003e\")\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"SP\")\n                    .authenticationKey(\"\u003caws_account_id\u003e\")\n                    .sellerRegion(\"us-west-1\")\n                    .profile(ConnectionZSideAccessPointProfileArgs.builder()\n                        .type(\"L2_PROFILE\")\n                        .uuid(\"\u003cservice_profile_uuid\u003e\")\n                        .build())\n                    .location(ConnectionZSideAccessPointLocationArgs.builder()\n                        .metroCode(\"SV\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  metal2aws:\n    type: equinix:fabric:Connection\n    properties:\n      name: ConnectionName\n      type: EVPLAN_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        accessPoint:\n          type: METAL_NETWORK\n          authenticationKey: \u003cmetal_authorization_code\u003e\n      zSide:\n        accessPoint:\n          type: SP\n          authenticationKey: \u003caws_account_id\u003e\n          sellerRegion: us-west-1\n          profile:\n            type: L2_PROFILE\n            uuid: \u003cservice_profile_uuid\u003e\n          location:\n            metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example port to alibaba\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst port2Alibaba = new equinix.fabric.Connection(\"port2alibaba\", {\n    name: \"ConnectionName\",\n    type: equinix.fabric.ConnectionType.EVPL,\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    redundancy: {\n        priority: \"PRIMARY\",\n    },\n    order: {\n        purchaseOrderNumber: \"1-323929\",\n    },\n    aSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Colo,\n            port: {\n                uuid: \"\u003caside_port_uuid\u003e\",\n            },\n            linkProtocol: {\n                type: equinix.fabric.AccessPointLinkProtocolType.Dot1q,\n                vlanTag: 2019,\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.SP,\n            authenticationKey: \"\u003calibaba_account_id\u003e\",\n            sellerRegion: \"us-west-1\",\n            profile: {\n                type: equinix.fabric.ProfileType.L2Profile,\n                uuid: \"\u003cservice_profile_uuid\u003e\",\n            },\n            location: {\n                metroCode: equinix.index.Metro.SiliconValley,\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nport2_alibaba = equinix.fabric.Connection(\"port2alibaba\",\n    name=\"ConnectionName\",\n    type=equinix.fabric.ConnectionType.EVPL,\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    redundancy={\n        \"priority\": \"PRIMARY\",\n    },\n    order={\n        \"purchase_order_number\": \"1-323929\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.COLO,\n            \"port\": {\n                \"uuid\": \"\u003caside_port_uuid\u003e\",\n            },\n            \"link_protocol\": {\n                \"type\": equinix.fabric.AccessPointLinkProtocolType.DOT1Q,\n                \"vlan_tag\": 2019,\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.SP,\n            \"authentication_key\": \"\u003calibaba_account_id\u003e\",\n            \"seller_region\": \"us-west-1\",\n            \"profile\": {\n                \"type\": equinix.fabric.ProfileType.L2_PROFILE,\n                \"uuid\": \"\u003cservice_profile_uuid\u003e\",\n            },\n            \"location\": {\n                \"metro_code\": equinix.Metro.SILICON_VALLEY,\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix\"\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"port2alibaba\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(fabric.ConnectionTypeEVPL),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tRedundancy: \u0026fabric.ConnectionRedundancyArgs{\n\t\t\t\tPriority: pulumi.String(\"PRIMARY\"),\n\t\t\t},\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323929\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeColo),\n\t\t\t\t\tPort: \u0026fabric.ConnectionASideAccessPointPortArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003caside_port_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLinkProtocol: \u0026fabric.ConnectionASideAccessPointLinkProtocolArgs{\n\t\t\t\t\t\tType:    pulumi.String(fabric.AccessPointLinkProtocolTypeDot1q),\n\t\t\t\t\t\tVlanTag: pulumi.Int(2019),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType:              pulumi.String(fabric.AccessPointTypeSP),\n\t\t\t\t\tAuthenticationKey: pulumi.String(\"\u003calibaba_account_id\u003e\"),\n\t\t\t\t\tSellerRegion:      pulumi.String(\"us-west-1\"),\n\t\t\t\t\tProfile: \u0026fabric.ConnectionZSideAccessPointProfileArgs{\n\t\t\t\t\t\tType: pulumi.String(fabric.ProfileTypeL2Profile),\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cservice_profile_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLocation: \u0026fabric.ConnectionZSideAccessPointLocationArgs{\n\t\t\t\t\t\tMetroCode: pulumi.String(equinix.MetroSiliconValley),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var port2Alibaba = new Equinix.Fabric.Connection(\"port2alibaba\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = Equinix.Fabric.ConnectionType.EVPL,\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Redundancy = new Equinix.Fabric.Inputs.ConnectionRedundancyArgs\n        {\n            Priority = \"PRIMARY\",\n        },\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323929\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Colo,\n                Port = new Equinix.Fabric.Inputs.ConnectionASideAccessPointPortArgs\n                {\n                    Uuid = \"\u003caside_port_uuid\u003e\",\n                },\n                LinkProtocol = new Equinix.Fabric.Inputs.ConnectionASideAccessPointLinkProtocolArgs\n                {\n                    Type = Equinix.Fabric.AccessPointLinkProtocolType.Dot1q,\n                    VlanTag = 2019,\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.SP,\n                AuthenticationKey = \"\u003calibaba_account_id\u003e\",\n                SellerRegion = \"us-west-1\",\n                Profile = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointProfileArgs\n                {\n                    Type = Equinix.Fabric.ProfileType.L2Profile,\n                    Uuid = \"\u003cservice_profile_uuid\u003e\",\n                },\n                Location = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLocationArgs\n                {\n                    MetroCode = Equinix.Metro.SiliconValley,\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionRedundancyArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointPortArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointLinkProtocolArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointProfileArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var port2Alibaba = new Connection(\"port2Alibaba\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"EVPL_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .redundancy(ConnectionRedundancyArgs.builder()\n                .priority(\"PRIMARY\")\n                .build())\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323929\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"COLO\")\n                    .port(ConnectionASideAccessPointPortArgs.builder()\n                        .uuid(\"\u003caside_port_uuid\u003e\")\n                        .build())\n                    .linkProtocol(ConnectionASideAccessPointLinkProtocolArgs.builder()\n                        .type(\"DOT1Q\")\n                        .vlanTag(2019)\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"SP\")\n                    .authenticationKey(\"\u003calibaba_account_id\u003e\")\n                    .sellerRegion(\"us-west-1\")\n                    .profile(ConnectionZSideAccessPointProfileArgs.builder()\n                        .type(\"L2_PROFILE\")\n                        .uuid(\"\u003cservice_profile_uuid\u003e\")\n                        .build())\n                    .location(ConnectionZSideAccessPointLocationArgs.builder()\n                        .metroCode(\"SV\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  port2alibaba:\n    type: equinix:fabric:Connection\n    properties:\n      name: ConnectionName\n      type: EVPL_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      redundancy:\n        priority: PRIMARY\n      order:\n        purchaseOrderNumber: 1-323929\n      aSide:\n        accessPoint:\n          type: COLO\n          port:\n            uuid: \u003caside_port_uuid\u003e\n          linkProtocol:\n            type: DOT1Q\n            vlanTag: '2019'\n      zSide:\n        accessPoint:\n          type: SP\n          authenticationKey: \u003calibaba_account_id\u003e\n          sellerRegion: us-west-1\n          profile:\n            type: L2_PROFILE\n            uuid: \u003cservice_profile_uuid\u003e\n          location:\n            metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example port to aws\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst port2Aws = new equinix.fabric.Connection(\"port2aws\", {\n    name: \"ConnectionName\",\n    type: equinix.fabric.ConnectionType.EVPL,\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    redundancy: {\n        priority: \"PRIMARY\",\n    },\n    order: {\n        purchaseOrderNumber: \"1-323929\",\n    },\n    aSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Colo,\n            port: {\n                uuid: \"\u003caside_port_uuid\u003e\",\n            },\n            linkProtocol: {\n                type: equinix.fabric.AccessPointLinkProtocolType.QinQ,\n                vlanSTag: 2019,\n                vlanCTag: 2112,\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.SP,\n            authenticationKey: \"\u003caws_account_id\u003e\",\n            sellerRegion: \"us-west-1\",\n            profile: {\n                type: equinix.fabric.ProfileType.L2Profile,\n                uuid: \"\u003cservice_profile_uuid\u003e\",\n            },\n            location: {\n                metroCode: equinix.index.Metro.SiliconValley,\n            },\n        },\n    },\n    additionalInfo: [\n        {\n            key: \"accessKey\",\n            value: \"\u003caws_access_key\u003e\",\n        },\n        {\n            key: \"secretKey\",\n            value: \"\u003caws_secret_key\u003e\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nport2_aws = equinix.fabric.Connection(\"port2aws\",\n    name=\"ConnectionName\",\n    type=equinix.fabric.ConnectionType.EVPL,\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    redundancy={\n        \"priority\": \"PRIMARY\",\n    },\n    order={\n        \"purchase_order_number\": \"1-323929\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.COLO,\n            \"port\": {\n                \"uuid\": \"\u003caside_port_uuid\u003e\",\n            },\n            \"link_protocol\": {\n                \"type\": equinix.fabric.AccessPointLinkProtocolType.QIN_Q,\n                \"vlan_s_tag\": 2019,\n                \"vlan_c_tag\": 2112,\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.SP,\n            \"authentication_key\": \"\u003caws_account_id\u003e\",\n            \"seller_region\": \"us-west-1\",\n            \"profile\": {\n                \"type\": equinix.fabric.ProfileType.L2_PROFILE,\n                \"uuid\": \"\u003cservice_profile_uuid\u003e\",\n            },\n            \"location\": {\n                \"metro_code\": equinix.Metro.SILICON_VALLEY,\n            },\n        },\n    },\n    additional_info=[\n        {\n            \"key\": \"accessKey\",\n            \"value\": \"\u003caws_access_key\u003e\",\n        },\n        {\n            \"key\": \"secretKey\",\n            \"value\": \"\u003caws_secret_key\u003e\",\n        },\n    ])\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix\"\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"port2aws\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(fabric.ConnectionTypeEVPL),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tRedundancy: \u0026fabric.ConnectionRedundancyArgs{\n\t\t\t\tPriority: pulumi.String(\"PRIMARY\"),\n\t\t\t},\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323929\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeColo),\n\t\t\t\t\tPort: \u0026fabric.ConnectionASideAccessPointPortArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003caside_port_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLinkProtocol: \u0026fabric.ConnectionASideAccessPointLinkProtocolArgs{\n\t\t\t\t\t\tType:     pulumi.String(fabric.AccessPointLinkProtocolTypeQinQ),\n\t\t\t\t\t\tVlanSTag: pulumi.Int(2019),\n\t\t\t\t\t\tVlanCTag: pulumi.Int(2112),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType:              pulumi.String(fabric.AccessPointTypeSP),\n\t\t\t\t\tAuthenticationKey: pulumi.String(\"\u003caws_account_id\u003e\"),\n\t\t\t\t\tSellerRegion:      pulumi.String(\"us-west-1\"),\n\t\t\t\t\tProfile: \u0026fabric.ConnectionZSideAccessPointProfileArgs{\n\t\t\t\t\t\tType: pulumi.String(fabric.ProfileTypeL2Profile),\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cservice_profile_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLocation: \u0026fabric.ConnectionZSideAccessPointLocationArgs{\n\t\t\t\t\t\tMetroCode: pulumi.String(equinix.MetroSiliconValley),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdditionalInfo: pulumi.StringMapArray{\n\t\t\t\tpulumi.StringMap{\n\t\t\t\t\t\"key\":   pulumi.String(\"accessKey\"),\n\t\t\t\t\t\"value\": pulumi.String(\"\u003caws_access_key\u003e\"),\n\t\t\t\t},\n\t\t\t\tpulumi.StringMap{\n\t\t\t\t\t\"key\":   pulumi.String(\"secretKey\"),\n\t\t\t\t\t\"value\": pulumi.String(\"\u003caws_secret_key\u003e\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var port2Aws = new Equinix.Fabric.Connection(\"port2aws\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = Equinix.Fabric.ConnectionType.EVPL,\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Redundancy = new Equinix.Fabric.Inputs.ConnectionRedundancyArgs\n        {\n            Priority = \"PRIMARY\",\n        },\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323929\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Colo,\n                Port = new Equinix.Fabric.Inputs.ConnectionASideAccessPointPortArgs\n                {\n                    Uuid = \"\u003caside_port_uuid\u003e\",\n                },\n                LinkProtocol = new Equinix.Fabric.Inputs.ConnectionASideAccessPointLinkProtocolArgs\n                {\n                    Type = Equinix.Fabric.AccessPointLinkProtocolType.QinQ,\n                    VlanSTag = 2019,\n                    VlanCTag = 2112,\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.SP,\n                AuthenticationKey = \"\u003caws_account_id\u003e\",\n                SellerRegion = \"us-west-1\",\n                Profile = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointProfileArgs\n                {\n                    Type = Equinix.Fabric.ProfileType.L2Profile,\n                    Uuid = \"\u003cservice_profile_uuid\u003e\",\n                },\n                Location = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLocationArgs\n                {\n                    MetroCode = Equinix.Metro.SiliconValley,\n                },\n            },\n        },\n        AdditionalInfo = new[]\n        {\n            \n            {\n                { \"key\", \"accessKey\" },\n                { \"value\", \"\u003caws_access_key\u003e\" },\n            },\n            \n            {\n                { \"key\", \"secretKey\" },\n                { \"value\", \"\u003caws_secret_key\u003e\" },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionRedundancyArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointPortArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointLinkProtocolArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointProfileArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var port2Aws = new Connection(\"port2Aws\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"EVPL_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .redundancy(ConnectionRedundancyArgs.builder()\n                .priority(\"PRIMARY\")\n                .build())\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323929\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"COLO\")\n                    .port(ConnectionASideAccessPointPortArgs.builder()\n                        .uuid(\"\u003caside_port_uuid\u003e\")\n                        .build())\n                    .linkProtocol(ConnectionASideAccessPointLinkProtocolArgs.builder()\n                        .type(\"QINQ\")\n                        .vlanSTag(2019)\n                        .vlanCTag(2112)\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"SP\")\n                    .authenticationKey(\"\u003caws_account_id\u003e\")\n                    .sellerRegion(\"us-west-1\")\n                    .profile(ConnectionZSideAccessPointProfileArgs.builder()\n                        .type(\"L2_PROFILE\")\n                        .uuid(\"\u003cservice_profile_uuid\u003e\")\n                        .build())\n                    .location(ConnectionZSideAccessPointLocationArgs.builder()\n                        .metroCode(\"SV\")\n                        .build())\n                    .build())\n                .build())\n            .additionalInfo(            \n                Map.ofEntries(\n                    Map.entry(\"key\", \"accessKey\"),\n                    Map.entry(\"value\", \"\u003caws_access_key\u003e\")\n                ),\n                Map.ofEntries(\n                    Map.entry(\"key\", \"secretKey\"),\n                    Map.entry(\"value\", \"\u003caws_secret_key\u003e\")\n                ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  port2aws:\n    type: equinix:fabric:Connection\n    properties:\n      name: ConnectionName\n      type: EVPL_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      redundancy:\n        priority: PRIMARY\n      order:\n        purchaseOrderNumber: 1-323929\n      aSide:\n        accessPoint:\n          type: COLO\n          port:\n            uuid: \u003caside_port_uuid\u003e\n          linkProtocol:\n            type: QINQ\n            vlanSTag: '2019'\n            vlanCTag: '2112'\n      zSide:\n        accessPoint:\n          type: SP\n          authenticationKey: \u003caws_account_id\u003e\n          sellerRegion: us-west-1\n          profile:\n            type: L2_PROFILE\n            uuid: \u003cservice_profile_uuid\u003e\n          location:\n            metroCode: SV\n      additionalInfo:\n        - key: accessKey\n          value: \u003caws_access_key\u003e\n        - key: secretKey\n          value: \u003caws_secret_key\u003e\n```\n{{% /example %}}\n\n{{% example %}}\n### example port to network eplan\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst eplan = new equinix.fabric.Connection(\"eplan\", {\n    name: \"ConnectionName\",\n    type: \"EPLAN_VC\",\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Colo,\n            port: {\n                uuid: \"\u003caside_port_uuid\u003e\",\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Network,\n            network: {\n                uuid: \"\u003cnetwork_uuid\u003e\",\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\neplan = equinix.fabric.Connection(\"eplan\",\n    name=\"ConnectionName\",\n    type=\"EPLAN_VC\",\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.COLO,\n            \"port\": {\n                \"uuid\": \"\u003caside_port_uuid\u003e\",\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.NETWORK,\n            \"network\": {\n                \"uuid\": \"\u003cnetwork_uuid\u003e\",\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"eplan\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(\"EPLAN_VC\"),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeColo),\n\t\t\t\t\tPort: \u0026fabric.ConnectionASideAccessPointPortArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003caside_port_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeNetwork),\n\t\t\t\t\tNetwork: \u0026fabric.ConnectionZSideAccessPointNetworkArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cnetwork_uuid\u003e\"),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var eplan = new Equinix.Fabric.Connection(\"eplan\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = \"EPLAN_VC\",\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Colo,\n                Port = new Equinix.Fabric.Inputs.ConnectionASideAccessPointPortArgs\n                {\n                    Uuid = \"\u003caside_port_uuid\u003e\",\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Network,\n                Network = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointNetworkArgs\n                {\n                    Uuid = \"\u003cnetwork_uuid\u003e\",\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointPortArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var eplan = new Connection(\"eplan\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"EPLAN_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"COLO\")\n                    .port(ConnectionASideAccessPointPortArgs.builder()\n                        .uuid(\"\u003caside_port_uuid\u003e\")\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"NETWORK\")\n                    .network(ConnectionZSideAccessPointNetworkArgs.builder()\n                        .uuid(\"\u003cnetwork_uuid\u003e\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  eplan:\n    type: equinix:fabric:Connection\n    properties:\n      name: ConnectionName\n      type: EPLAN_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        accessPoint:\n          type: COLO\n          port:\n            uuid: \u003caside_port_uuid\u003e\n      zSide:\n        accessPoint:\n          type: NETWORK\n          network:\n            uuid: \u003cnetwork_uuid\u003e\n```\n{{% /example %}}\n\n{{% example %}}\n### example port to network evplan\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst evplan = new equinix.fabric.Connection(\"evplan\", {\n    name: \"ConnectionName\",\n    type: \"EVPLAN_VC\",\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Colo,\n            port: {\n                uuid: \"\u003caside_port_uuid\u003e\",\n            },\n            linkProtocol: {\n                type: equinix.fabric.AccessPointLinkProtocolType.Dot1q,\n                vlanSTag: 1976,\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Network,\n            network: {\n                uuid: \"\u003cnetwork_uuid\u003e\",\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nevplan = equinix.fabric.Connection(\"evplan\",\n    name=\"ConnectionName\",\n    type=\"EVPLAN_VC\",\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.COLO,\n            \"port\": {\n                \"uuid\": \"\u003caside_port_uuid\u003e\",\n            },\n            \"link_protocol\": {\n                \"type\": equinix.fabric.AccessPointLinkProtocolType.DOT1Q,\n                \"vlan_s_tag\": 1976,\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.NETWORK,\n            \"network\": {\n                \"uuid\": \"\u003cnetwork_uuid\u003e\",\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"evplan\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(\"EVPLAN_VC\"),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeColo),\n\t\t\t\t\tPort: \u0026fabric.ConnectionASideAccessPointPortArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003caside_port_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLinkProtocol: \u0026fabric.ConnectionASideAccessPointLinkProtocolArgs{\n\t\t\t\t\t\tType:     pulumi.String(fabric.AccessPointLinkProtocolTypeDot1q),\n\t\t\t\t\t\tVlanSTag: pulumi.Int(1976),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeNetwork),\n\t\t\t\t\tNetwork: \u0026fabric.ConnectionZSideAccessPointNetworkArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cnetwork_uuid\u003e\"),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var evplan = new Equinix.Fabric.Connection(\"evplan\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = \"EVPLAN_VC\",\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Colo,\n                Port = new Equinix.Fabric.Inputs.ConnectionASideAccessPointPortArgs\n                {\n                    Uuid = \"\u003caside_port_uuid\u003e\",\n                },\n                LinkProtocol = new Equinix.Fabric.Inputs.ConnectionASideAccessPointLinkProtocolArgs\n                {\n                    Type = Equinix.Fabric.AccessPointLinkProtocolType.Dot1q,\n                    VlanSTag = 1976,\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Network,\n                Network = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointNetworkArgs\n                {\n                    Uuid = \"\u003cnetwork_uuid\u003e\",\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointPortArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointLinkProtocolArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var evplan = new Connection(\"evplan\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"EVPLAN_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"COLO\")\n                    .port(ConnectionASideAccessPointPortArgs.builder()\n                        .uuid(\"\u003caside_port_uuid\u003e\")\n                        .build())\n                    .linkProtocol(ConnectionASideAccessPointLinkProtocolArgs.builder()\n                        .type(\"DOT1Q\")\n                        .vlanSTag(1976)\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"NETWORK\")\n                    .network(ConnectionZSideAccessPointNetworkArgs.builder()\n                        .uuid(\"\u003cnetwork_uuid\u003e\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  evplan:\n    type: equinix:fabric:Connection\n    properties:\n      name: ConnectionName\n      type: EVPLAN_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        accessPoint:\n          type: COLO\n          port:\n            uuid: \u003caside_port_uuid\u003e\n          linkProtocol:\n            type: DOT1Q\n            vlanSTag: '1976'\n      zSide:\n        accessPoint:\n          type: NETWORK\n          network:\n            uuid: \u003cnetwork_uuid\u003e\n```\n{{% /example %}}\n\n{{% example %}}\n### example port to port\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst port2Port = new equinix.fabric.Connection(\"port2port\", {\n    name: \"ConnectionName\",\n    type: equinix.fabric.ConnectionType.EVPL,\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Colo,\n            port: {\n                uuid: \"\u003caside_port_uuid\u003e\",\n            },\n            linkProtocol: {\n                type: equinix.fabric.AccessPointLinkProtocolType.QinQ,\n                vlanSTag: 1976,\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Colo,\n            port: {\n                uuid: \"\u003czside_port_uuid\u003e\",\n            },\n            linkProtocol: {\n                type: equinix.fabric.AccessPointLinkProtocolType.QinQ,\n                vlanSTag: 3711,\n            },\n            location: {\n                metroCode: equinix.index.Metro.SiliconValley,\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nport2_port = equinix.fabric.Connection(\"port2port\",\n    name=\"ConnectionName\",\n    type=equinix.fabric.ConnectionType.EVPL,\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.COLO,\n            \"port\": {\n                \"uuid\": \"\u003caside_port_uuid\u003e\",\n            },\n            \"link_protocol\": {\n                \"type\": equinix.fabric.AccessPointLinkProtocolType.QIN_Q,\n                \"vlan_s_tag\": 1976,\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.COLO,\n            \"port\": {\n                \"uuid\": \"\u003czside_port_uuid\u003e\",\n            },\n            \"link_protocol\": {\n                \"type\": equinix.fabric.AccessPointLinkProtocolType.QIN_Q,\n                \"vlan_s_tag\": 3711,\n            },\n            \"location\": {\n                \"metro_code\": equinix.Metro.SILICON_VALLEY,\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix\"\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"port2port\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(fabric.ConnectionTypeEVPL),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeColo),\n\t\t\t\t\tPort: \u0026fabric.ConnectionASideAccessPointPortArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003caside_port_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLinkProtocol: \u0026fabric.ConnectionASideAccessPointLinkProtocolArgs{\n\t\t\t\t\t\tType:     pulumi.String(fabric.AccessPointLinkProtocolTypeQinQ),\n\t\t\t\t\t\tVlanSTag: pulumi.Int(1976),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeColo),\n\t\t\t\t\tPort: \u0026fabric.ConnectionZSideAccessPointPortArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003czside_port_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLinkProtocol: \u0026fabric.ConnectionZSideAccessPointLinkProtocolArgs{\n\t\t\t\t\t\tType:     pulumi.String(fabric.AccessPointLinkProtocolTypeQinQ),\n\t\t\t\t\t\tVlanSTag: pulumi.Int(3711),\n\t\t\t\t\t},\n\t\t\t\t\tLocation: \u0026fabric.ConnectionZSideAccessPointLocationArgs{\n\t\t\t\t\t\tMetroCode: pulumi.String(equinix.MetroSiliconValley),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var port2Port = new Equinix.Fabric.Connection(\"port2port\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = Equinix.Fabric.ConnectionType.EVPL,\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Colo,\n                Port = new Equinix.Fabric.Inputs.ConnectionASideAccessPointPortArgs\n                {\n                    Uuid = \"\u003caside_port_uuid\u003e\",\n                },\n                LinkProtocol = new Equinix.Fabric.Inputs.ConnectionASideAccessPointLinkProtocolArgs\n                {\n                    Type = Equinix.Fabric.AccessPointLinkProtocolType.QinQ,\n                    VlanSTag = 1976,\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Colo,\n                Port = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointPortArgs\n                {\n                    Uuid = \"\u003czside_port_uuid\u003e\",\n                },\n                LinkProtocol = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLinkProtocolArgs\n                {\n                    Type = Equinix.Fabric.AccessPointLinkProtocolType.QinQ,\n                    VlanSTag = 3711,\n                },\n                Location = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLocationArgs\n                {\n                    MetroCode = Equinix.Metro.SiliconValley,\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointPortArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointLinkProtocolArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointPortArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLinkProtocolArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var port2Port = new Connection(\"port2Port\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"EVPL_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"COLO\")\n                    .port(ConnectionASideAccessPointPortArgs.builder()\n                        .uuid(\"\u003caside_port_uuid\u003e\")\n                        .build())\n                    .linkProtocol(ConnectionASideAccessPointLinkProtocolArgs.builder()\n                        .type(\"QINQ\")\n                        .vlanSTag(1976)\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"COLO\")\n                    .port(ConnectionZSideAccessPointPortArgs.builder()\n                        .uuid(\"\u003czside_port_uuid\u003e\")\n                        .build())\n                    .linkProtocol(ConnectionZSideAccessPointLinkProtocolArgs.builder()\n                        .type(\"QINQ\")\n                        .vlanSTag(3711)\n                        .build())\n                    .location(ConnectionZSideAccessPointLocationArgs.builder()\n                        .metroCode(\"SV\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  port2port:\n    type: equinix:fabric:Connection\n    properties:\n      name: ConnectionName\n      type: EVPL_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        accessPoint:\n          type: COLO\n          port:\n            uuid: \u003caside_port_uuid\u003e\n          linkProtocol:\n            type: QINQ\n            vlanSTag: '1976'\n      zSide:\n        accessPoint:\n          type: COLO\n          port:\n            uuid: \u003czside_port_uuid\u003e\n          linkProtocol:\n            type: QINQ\n            vlanSTag: '3711'\n          location:\n            metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example port to port access epl\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst accessEplVc = new equinix.fabric.Connection(\"accessEplVc\", {\n    name: \"ConnectionName\",\n    type: equinix.fabric.ConnectionType.AccessEPL,\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Colo,\n            port: {\n                uuid: \"\u003caside_port_uuid\u003e\",\n            },\n            linkProtocol: {\n                type: equinix.fabric.AccessPointLinkProtocolType.QinQ,\n                vlanSTag: 1976,\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Colo,\n            port: {\n                uuid: \"\u003czside_port_uuid\u003e\",\n            },\n            location: {\n                metroCode: equinix.index.Metro.SiliconValley,\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\naccess_epl_vc = equinix.fabric.Connection(\"accessEplVc\",\n    name=\"ConnectionName\",\n    type=equinix.fabric.ConnectionType.ACCESS_EPL,\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.COLO,\n            \"port\": {\n                \"uuid\": \"\u003caside_port_uuid\u003e\",\n            },\n            \"link_protocol\": {\n                \"type\": equinix.fabric.AccessPointLinkProtocolType.QIN_Q,\n                \"vlan_s_tag\": 1976,\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.COLO,\n            \"port\": {\n                \"uuid\": \"\u003czside_port_uuid\u003e\",\n            },\n            \"location\": {\n                \"metro_code\": equinix.Metro.SILICON_VALLEY,\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix\"\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"accessEplVc\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(fabric.ConnectionTypeAccessEPL),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeColo),\n\t\t\t\t\tPort: \u0026fabric.ConnectionASideAccessPointPortArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003caside_port_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLinkProtocol: \u0026fabric.ConnectionASideAccessPointLinkProtocolArgs{\n\t\t\t\t\t\tType:     pulumi.String(fabric.AccessPointLinkProtocolTypeQinQ),\n\t\t\t\t\t\tVlanSTag: pulumi.Int(1976),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeColo),\n\t\t\t\t\tPort: \u0026fabric.ConnectionZSideAccessPointPortArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003czside_port_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLocation: \u0026fabric.ConnectionZSideAccessPointLocationArgs{\n\t\t\t\t\t\tMetroCode: pulumi.String(equinix.MetroSiliconValley),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var accessEplVc = new Equinix.Fabric.Connection(\"accessEplVc\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = Equinix.Fabric.ConnectionType.AccessEPL,\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Colo,\n                Port = new Equinix.Fabric.Inputs.ConnectionASideAccessPointPortArgs\n                {\n                    Uuid = \"\u003caside_port_uuid\u003e\",\n                },\n                LinkProtocol = new Equinix.Fabric.Inputs.ConnectionASideAccessPointLinkProtocolArgs\n                {\n                    Type = Equinix.Fabric.AccessPointLinkProtocolType.QinQ,\n                    VlanSTag = 1976,\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Colo,\n                Port = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointPortArgs\n                {\n                    Uuid = \"\u003czside_port_uuid\u003e\",\n                },\n                Location = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLocationArgs\n                {\n                    MetroCode = Equinix.Metro.SiliconValley,\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointPortArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointLinkProtocolArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointPortArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var accessEplVc = new Connection(\"accessEplVc\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"ACCESS_EPL_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"COLO\")\n                    .port(ConnectionASideAccessPointPortArgs.builder()\n                        .uuid(\"\u003caside_port_uuid\u003e\")\n                        .build())\n                    .linkProtocol(ConnectionASideAccessPointLinkProtocolArgs.builder()\n                        .type(\"QINQ\")\n                        .vlanSTag(1976)\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"COLO\")\n                    .port(ConnectionZSideAccessPointPortArgs.builder()\n                        .uuid(\"\u003czside_port_uuid\u003e\")\n                        .build())\n                    .location(ConnectionZSideAccessPointLocationArgs.builder()\n                        .metroCode(\"SV\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  accessEplVc:\n    type: equinix:fabric:Connection\n    name: access_epl_vc\n    properties:\n      name: ConnectionName\n      type: ACCESS_EPL_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        accessPoint:\n          type: COLO\n          port:\n            uuid: \u003caside_port_uuid\u003e\n          linkProtocol:\n            type: QINQ\n            vlanSTag: '1976'\n      zSide:\n        accessPoint:\n          type: COLO\n          port:\n            uuid: \u003czside_port_uuid\u003e\n          location:\n            metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example port to port epl\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst epl = new equinix.fabric.Connection(\"epl\", {\n    name: \"ConnectionName\",\n    type: equinix.fabric.ConnectionType.EPL,\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Colo,\n            port: {\n                uuid: \"\u003caside_port_uuid\u003e\",\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Colo,\n            port: {\n                uuid: \"\u003czside_port_uuid\u003e\",\n            },\n            location: {\n                metroCode: equinix.index.Metro.SiliconValley,\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nepl = equinix.fabric.Connection(\"epl\",\n    name=\"ConnectionName\",\n    type=equinix.fabric.ConnectionType.EPL,\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.COLO,\n            \"port\": {\n                \"uuid\": \"\u003caside_port_uuid\u003e\",\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.COLO,\n            \"port\": {\n                \"uuid\": \"\u003czside_port_uuid\u003e\",\n            },\n            \"location\": {\n                \"metro_code\": equinix.Metro.SILICON_VALLEY,\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix\"\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"epl\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(fabric.ConnectionTypeEPL),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeColo),\n\t\t\t\t\tPort: \u0026fabric.ConnectionASideAccessPointPortArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003caside_port_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeColo),\n\t\t\t\t\tPort: \u0026fabric.ConnectionZSideAccessPointPortArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003czside_port_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLocation: \u0026fabric.ConnectionZSideAccessPointLocationArgs{\n\t\t\t\t\t\tMetroCode: pulumi.String(equinix.MetroSiliconValley),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var epl = new Equinix.Fabric.Connection(\"epl\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = Equinix.Fabric.ConnectionType.EPL,\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Colo,\n                Port = new Equinix.Fabric.Inputs.ConnectionASideAccessPointPortArgs\n                {\n                    Uuid = \"\u003caside_port_uuid\u003e\",\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Colo,\n                Port = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointPortArgs\n                {\n                    Uuid = \"\u003czside_port_uuid\u003e\",\n                },\n                Location = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLocationArgs\n                {\n                    MetroCode = Equinix.Metro.SiliconValley,\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointPortArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointPortArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var epl = new Connection(\"epl\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"EPL_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"COLO\")\n                    .port(ConnectionASideAccessPointPortArgs.builder()\n                        .uuid(\"\u003caside_port_uuid\u003e\")\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"COLO\")\n                    .port(ConnectionZSideAccessPointPortArgs.builder()\n                        .uuid(\"\u003czside_port_uuid\u003e\")\n                        .build())\n                    .location(ConnectionZSideAccessPointLocationArgs.builder()\n                        .metroCode(\"SV\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  epl:\n    type: equinix:fabric:Connection\n    properties:\n      name: ConnectionName\n      type: EPL_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        accessPoint:\n          type: COLO\n          port:\n            uuid: \u003caside_port_uuid\u003e\n      zSide:\n        accessPoint:\n          type: COLO\n          port:\n            uuid: \u003czside_port_uuid\u003e\n          location:\n            metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example port to vd\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst vd2Port = new equinix.fabric.Connection(\"vd2port\", {\n    name: \"ConnectionName\",\n    type: equinix.fabric.ConnectionType.EVPL,\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.VD,\n            virtualDevice: {\n                type: \"EDGE\",\n                uuid: \"\u003cdevice_uuid\u003e\",\n            },\n            \"interface\": {\n                type: \"NETWORK\",\n                id: 7,\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Colo,\n            port: {\n                uuid: \"\u003czside_port_uuid\u003e\",\n            },\n            linkProtocol: {\n                type: equinix.fabric.AccessPointLinkProtocolType.Dot1q,\n                vlanSTag: 3711,\n            },\n            location: {\n                metroCode: equinix.index.Metro.SiliconValley,\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nvd2_port = equinix.fabric.Connection(\"vd2port\",\n    name=\"ConnectionName\",\n    type=equinix.fabric.ConnectionType.EVPL,\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.VD,\n            \"virtual_device\": {\n                \"type\": \"EDGE\",\n                \"uuid\": \"\u003cdevice_uuid\u003e\",\n            },\n            \"interface\": {\n                \"type\": \"NETWORK\",\n                \"id\": 7,\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.COLO,\n            \"port\": {\n                \"uuid\": \"\u003czside_port_uuid\u003e\",\n            },\n            \"link_protocol\": {\n                \"type\": equinix.fabric.AccessPointLinkProtocolType.DOT1Q,\n                \"vlan_s_tag\": 3711,\n            },\n            \"location\": {\n                \"metro_code\": equinix.Metro.SILICON_VALLEY,\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix\"\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"vd2port\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(fabric.ConnectionTypeEVPL),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeVD),\n\t\t\t\t\tVirtualDevice: \u0026fabric.ConnectionASideAccessPointVirtualDeviceArgs{\n\t\t\t\t\t\tType: pulumi.String(\"EDGE\"),\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cdevice_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tInterface: \u0026fabric.ConnectionASideAccessPointInterfaceArgs{\n\t\t\t\t\t\tType: pulumi.String(\"NETWORK\"),\n\t\t\t\t\t\tId:   pulumi.Int(7),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeColo),\n\t\t\t\t\tPort: \u0026fabric.ConnectionZSideAccessPointPortArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003czside_port_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLinkProtocol: \u0026fabric.ConnectionZSideAccessPointLinkProtocolArgs{\n\t\t\t\t\t\tType:     pulumi.String(fabric.AccessPointLinkProtocolTypeDot1q),\n\t\t\t\t\t\tVlanSTag: pulumi.Int(3711),\n\t\t\t\t\t},\n\t\t\t\t\tLocation: \u0026fabric.ConnectionZSideAccessPointLocationArgs{\n\t\t\t\t\t\tMetroCode: pulumi.String(equinix.MetroSiliconValley),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vd2Port = new Equinix.Fabric.Connection(\"vd2port\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = Equinix.Fabric.ConnectionType.EVPL,\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.VD,\n                VirtualDevice = new Equinix.Fabric.Inputs.ConnectionASideAccessPointVirtualDeviceArgs\n                {\n                    Type = \"EDGE\",\n                    Uuid = \"\u003cdevice_uuid\u003e\",\n                },\n                Interface = new Equinix.Fabric.Inputs.ConnectionASideAccessPointInterfaceArgs\n                {\n                    Type = \"NETWORK\",\n                    Id = 7,\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Colo,\n                Port = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointPortArgs\n                {\n                    Uuid = \"\u003czside_port_uuid\u003e\",\n                },\n                LinkProtocol = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLinkProtocolArgs\n                {\n                    Type = Equinix.Fabric.AccessPointLinkProtocolType.Dot1q,\n                    VlanSTag = 3711,\n                },\n                Location = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLocationArgs\n                {\n                    MetroCode = Equinix.Metro.SiliconValley,\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointVirtualDeviceArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointInterfaceArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointPortArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLinkProtocolArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var vd2Port = new Connection(\"vd2Port\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"EVPL_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"VD\")\n                    .virtualDevice(ConnectionASideAccessPointVirtualDeviceArgs.builder()\n                        .type(\"EDGE\")\n                        .uuid(\"\u003cdevice_uuid\u003e\")\n                        .build())\n                    .interface_(ConnectionASideAccessPointInterfaceArgs.builder()\n                        .type(\"NETWORK\")\n                        .id(7)\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"COLO\")\n                    .port(ConnectionZSideAccessPointPortArgs.builder()\n                        .uuid(\"\u003czside_port_uuid\u003e\")\n                        .build())\n                    .linkProtocol(ConnectionZSideAccessPointLinkProtocolArgs.builder()\n                        .type(\"DOT1Q\")\n                        .vlanSTag(3711)\n                        .build())\n                    .location(ConnectionZSideAccessPointLocationArgs.builder()\n                        .metroCode(\"SV\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vd2port:\n    type: equinix:fabric:Connection\n    properties:\n      name: ConnectionName\n      type: EVPL_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        accessPoint:\n          type: VD\n          virtualDevice:\n            type: EDGE\n            uuid: \u003cdevice_uuid\u003e\n          interface:\n            type: NETWORK\n            id: 7\n      zSide:\n        accessPoint:\n          type: COLO\n          port:\n            uuid: \u003czside_port_uuid\u003e\n          linkProtocol:\n            type: DOT1Q\n            vlanSTag: '3711'\n          location:\n            metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example token to aws\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst token2Aws = new equinix.fabric.Connection(\"token2aws\", {\n    name: \"ConnectionName\",\n    type: equinix.fabric.ConnectionType.EVPL,\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        serviceToken: {\n            uuid: \"\u003cservice_token_uuid\u003e\",\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.SP,\n            authenticationKey: \"\u003caws_account_id\u003e\",\n            sellerRegion: \"us-west-1\",\n            profile: {\n                type: equinix.fabric.ProfileType.L2Profile,\n                uuid: \"\u003cservice_profile_uuid\u003e\",\n            },\n            location: {\n                metroCode: equinix.index.Metro.SiliconValley,\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntoken2_aws = equinix.fabric.Connection(\"token2aws\",\n    name=\"ConnectionName\",\n    type=equinix.fabric.ConnectionType.EVPL,\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"service_token\": {\n            \"uuid\": \"\u003cservice_token_uuid\u003e\",\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.SP,\n            \"authentication_key\": \"\u003caws_account_id\u003e\",\n            \"seller_region\": \"us-west-1\",\n            \"profile\": {\n                \"type\": equinix.fabric.ProfileType.L2_PROFILE,\n                \"uuid\": \"\u003cservice_profile_uuid\u003e\",\n            },\n            \"location\": {\n                \"metro_code\": equinix.Metro.SILICON_VALLEY,\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix\"\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"token2aws\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(fabric.ConnectionTypeEVPL),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tServiceToken: \u0026fabric.ConnectionASideServiceTokenArgs{\n\t\t\t\t\tUuid: pulumi.String(\"\u003cservice_token_uuid\u003e\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType:              pulumi.String(fabric.AccessPointTypeSP),\n\t\t\t\t\tAuthenticationKey: pulumi.String(\"\u003caws_account_id\u003e\"),\n\t\t\t\t\tSellerRegion:      pulumi.String(\"us-west-1\"),\n\t\t\t\t\tProfile: \u0026fabric.ConnectionZSideAccessPointProfileArgs{\n\t\t\t\t\t\tType: pulumi.String(fabric.ProfileTypeL2Profile),\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cservice_profile_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLocation: \u0026fabric.ConnectionZSideAccessPointLocationArgs{\n\t\t\t\t\t\tMetroCode: pulumi.String(equinix.MetroSiliconValley),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var token2Aws = new Equinix.Fabric.Connection(\"token2aws\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = Equinix.Fabric.ConnectionType.EVPL,\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            ServiceToken = new Equinix.Fabric.Inputs.ConnectionASideServiceTokenArgs\n            {\n                Uuid = \"\u003cservice_token_uuid\u003e\",\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.SP,\n                AuthenticationKey = \"\u003caws_account_id\u003e\",\n                SellerRegion = \"us-west-1\",\n                Profile = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointProfileArgs\n                {\n                    Type = Equinix.Fabric.ProfileType.L2Profile,\n                    Uuid = \"\u003cservice_profile_uuid\u003e\",\n                },\n                Location = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLocationArgs\n                {\n                    MetroCode = Equinix.Metro.SiliconValley,\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideServiceTokenArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointProfileArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var token2Aws = new Connection(\"token2Aws\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"EVPL_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .serviceToken(ConnectionASideServiceTokenArgs.builder()\n                    .uuid(\"\u003cservice_token_uuid\u003e\")\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"SP\")\n                    .authenticationKey(\"\u003caws_account_id\u003e\")\n                    .sellerRegion(\"us-west-1\")\n                    .profile(ConnectionZSideAccessPointProfileArgs.builder()\n                        .type(\"L2_PROFILE\")\n                        .uuid(\"\u003cservice_profile_uuid\u003e\")\n                        .build())\n                    .location(ConnectionZSideAccessPointLocationArgs.builder()\n                        .metroCode(\"SV\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  token2aws:\n    type: equinix:fabric:Connection\n    properties:\n      name: ConnectionName\n      type: EVPL_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        serviceToken:\n          uuid: \u003cservice_token_uuid\u003e\n      zSide:\n        accessPoint:\n          type: SP\n          authenticationKey: \u003caws_account_id\u003e\n          sellerRegion: us-west-1\n          profile:\n            type: L2_PROFILE\n            uuid: \u003cservice_profile_uuid\u003e\n          location:\n            metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example vd to azure\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst vd2Azure = new equinix.fabric.Connection(\"vd2azure\", {\n    name: \"ConnectionName\",\n    type: equinix.fabric.ConnectionType.EVPL,\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.VD,\n            virtualDevice: {\n                type: \"EDGE\",\n                uuid: \"\u003cdevice_uuid\u003e\",\n            },\n            \"interface\": {\n                type: \"CLOUD\",\n                id: 7,\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.SP,\n            authenticationKey: \"\u003cAzure_ExpressRouter_Auth_Key\u003e\",\n            peeringType: equinix.fabric.AccessPointPeeringType.Private,\n            profile: {\n                type: equinix.fabric.ProfileType.L2Profile,\n                uuid: \"\u003cAzure_Service_Profile_UUID\u003e\",\n            },\n            location: {\n                metroCode: equinix.index.Metro.SiliconValley,\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nvd2_azure = equinix.fabric.Connection(\"vd2azure\",\n    name=\"ConnectionName\",\n    type=equinix.fabric.ConnectionType.EVPL,\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.VD,\n            \"virtual_device\": {\n                \"type\": \"EDGE\",\n                \"uuid\": \"\u003cdevice_uuid\u003e\",\n            },\n            \"interface\": {\n                \"type\": \"CLOUD\",\n                \"id\": 7,\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.SP,\n            \"authentication_key\": \"\u003cAzure_ExpressRouter_Auth_Key\u003e\",\n            \"peering_type\": equinix.fabric.AccessPointPeeringType.PRIVATE,\n            \"profile\": {\n                \"type\": equinix.fabric.ProfileType.L2_PROFILE,\n                \"uuid\": \"\u003cAzure_Service_Profile_UUID\u003e\",\n            },\n            \"location\": {\n                \"metro_code\": equinix.Metro.SILICON_VALLEY,\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix\"\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"vd2azure\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(fabric.ConnectionTypeEVPL),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeVD),\n\t\t\t\t\tVirtualDevice: \u0026fabric.ConnectionASideAccessPointVirtualDeviceArgs{\n\t\t\t\t\t\tType: pulumi.String(\"EDGE\"),\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cdevice_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tInterface: \u0026fabric.ConnectionASideAccessPointInterfaceArgs{\n\t\t\t\t\t\tType: pulumi.String(\"CLOUD\"),\n\t\t\t\t\t\tId:   pulumi.Int(7),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType:              pulumi.String(fabric.AccessPointTypeSP),\n\t\t\t\t\tAuthenticationKey: pulumi.String(\"\u003cAzure_ExpressRouter_Auth_Key\u003e\"),\n\t\t\t\t\tPeeringType:       pulumi.String(fabric.AccessPointPeeringTypePrivate),\n\t\t\t\t\tProfile: \u0026fabric.ConnectionZSideAccessPointProfileArgs{\n\t\t\t\t\t\tType: pulumi.String(fabric.ProfileTypeL2Profile),\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cAzure_Service_Profile_UUID\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLocation: \u0026fabric.ConnectionZSideAccessPointLocationArgs{\n\t\t\t\t\t\tMetroCode: pulumi.String(equinix.MetroSiliconValley),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vd2Azure = new Equinix.Fabric.Connection(\"vd2azure\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = Equinix.Fabric.ConnectionType.EVPL,\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.VD,\n                VirtualDevice = new Equinix.Fabric.Inputs.ConnectionASideAccessPointVirtualDeviceArgs\n                {\n                    Type = \"EDGE\",\n                    Uuid = \"\u003cdevice_uuid\u003e\",\n                },\n                Interface = new Equinix.Fabric.Inputs.ConnectionASideAccessPointInterfaceArgs\n                {\n                    Type = \"CLOUD\",\n                    Id = 7,\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.SP,\n                AuthenticationKey = \"\u003cAzure_ExpressRouter_Auth_Key\u003e\",\n                PeeringType = Equinix.Fabric.AccessPointPeeringType.Private,\n                Profile = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointProfileArgs\n                {\n                    Type = Equinix.Fabric.ProfileType.L2Profile,\n                    Uuid = \"\u003cAzure_Service_Profile_UUID\u003e\",\n                },\n                Location = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLocationArgs\n                {\n                    MetroCode = Equinix.Metro.SiliconValley,\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointVirtualDeviceArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointInterfaceArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointProfileArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var vd2Azure = new Connection(\"vd2Azure\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"EVPL_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"VD\")\n                    .virtualDevice(ConnectionASideAccessPointVirtualDeviceArgs.builder()\n                        .type(\"EDGE\")\n                        .uuid(\"\u003cdevice_uuid\u003e\")\n                        .build())\n                    .interface_(ConnectionASideAccessPointInterfaceArgs.builder()\n                        .type(\"CLOUD\")\n                        .id(7)\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"SP\")\n                    .authenticationKey(\"\u003cAzure_ExpressRouter_Auth_Key\u003e\")\n                    .peeringType(\"PRIVATE\")\n                    .profile(ConnectionZSideAccessPointProfileArgs.builder()\n                        .type(\"L2_PROFILE\")\n                        .uuid(\"\u003cAzure_Service_Profile_UUID\u003e\")\n                        .build())\n                    .location(ConnectionZSideAccessPointLocationArgs.builder()\n                        .metroCode(\"SV\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vd2azure:\n    type: equinix:fabric:Connection\n    properties:\n      name: ConnectionName\n      type: EVPL_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        accessPoint:\n          type: VD\n          virtualDevice:\n            type: EDGE\n            uuid: \u003cdevice_uuid\u003e\n          interface:\n            type: CLOUD\n            id: 7\n      zSide:\n        accessPoint:\n          type: SP\n          authenticationKey: \u003cAzure_ExpressRouter_Auth_Key\u003e\n          peeringType: PRIVATE\n          profile:\n            type: L2_PROFILE\n            uuid: \u003cAzure_Service_Profile_UUID\u003e\n          location:\n            metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example vd to azure redundant\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst vd2AzurePrimary = new equinix.fabric.Connection(\"vd2azurePrimary\", {\n    name: \"ConnectionName\",\n    type: equinix.fabric.ConnectionType.EVPL,\n    redundancy: {\n        priority: \"PRIMARY\",\n    },\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.VD,\n            virtualDevice: {\n                type: \"EDGE\",\n                uuid: \"\u003cdevice_uuid\u003e\",\n            },\n            \"interface\": {\n                type: \"CLOUD\",\n                id: 7,\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.SP,\n            authenticationKey: \"\u003cAzure_ExpressRouter_Auth_Key\u003e\",\n            peeringType: equinix.fabric.AccessPointPeeringType.Private,\n            profile: {\n                type: equinix.fabric.ProfileType.L2Profile,\n                uuid: \"\u003cAzure_Service_Profile_UUID\u003e\",\n            },\n            location: {\n                metroCode: equinix.index.Metro.SiliconValley,\n            },\n        },\n    },\n});\nconst vd2AzureSecondary = new equinix.fabric.Connection(\"vd2azureSecondary\", {\n    name: \"ConnectionName\",\n    type: equinix.fabric.ConnectionType.EVPL,\n    redundancy: {\n        priority: \"SECONDARY\",\n        group: vd2AzurePrimary.redundancy.apply(redundancy =\u003e redundancy?.group),\n    },\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.VD,\n            virtualDevice: {\n                type: \"EDGE\",\n                uuid: \"\u003cdevice_uuid\u003e\",\n            },\n            \"interface\": {\n                type: \"CLOUD\",\n                id: 5,\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.SP,\n            authenticationKey: \"\u003cAzure_ExpressRouter_Auth_Key\u003e\",\n            peeringType: equinix.fabric.AccessPointPeeringType.Private,\n            profile: {\n                type: equinix.fabric.ProfileType.L2Profile,\n                uuid: \"\u003cAzure_Service_Profile_UUID\u003e\",\n            },\n            location: {\n                metroCode: equinix.index.Metro.SiliconValley,\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nvd2_azure_primary = equinix.fabric.Connection(\"vd2azurePrimary\",\n    name=\"ConnectionName\",\n    type=equinix.fabric.ConnectionType.EVPL,\n    redundancy={\n        \"priority\": \"PRIMARY\",\n    },\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.VD,\n            \"virtual_device\": {\n                \"type\": \"EDGE\",\n                \"uuid\": \"\u003cdevice_uuid\u003e\",\n            },\n            \"interface\": {\n                \"type\": \"CLOUD\",\n                \"id\": 7,\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.SP,\n            \"authentication_key\": \"\u003cAzure_ExpressRouter_Auth_Key\u003e\",\n            \"peering_type\": equinix.fabric.AccessPointPeeringType.PRIVATE,\n            \"profile\": {\n                \"type\": equinix.fabric.ProfileType.L2_PROFILE,\n                \"uuid\": \"\u003cAzure_Service_Profile_UUID\u003e\",\n            },\n            \"location\": {\n                \"metro_code\": equinix.Metro.SILICON_VALLEY,\n            },\n        },\n    })\nvd2_azure_secondary = equinix.fabric.Connection(\"vd2azureSecondary\",\n    name=\"ConnectionName\",\n    type=equinix.fabric.ConnectionType.EVPL,\n    redundancy={\n        \"priority\": \"SECONDARY\",\n        \"group\": vd2_azure_primary.redundancy.group,\n    },\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.VD,\n            \"virtual_device\": {\n                \"type\": \"EDGE\",\n                \"uuid\": \"\u003cdevice_uuid\u003e\",\n            },\n            \"interface\": {\n                \"type\": \"CLOUD\",\n                \"id\": 5,\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.SP,\n            \"authentication_key\": \"\u003cAzure_ExpressRouter_Auth_Key\u003e\",\n            \"peering_type\": equinix.fabric.AccessPointPeeringType.PRIVATE,\n            \"profile\": {\n                \"type\": equinix.fabric.ProfileType.L2_PROFILE,\n                \"uuid\": \"\u003cAzure_Service_Profile_UUID\u003e\",\n            },\n            \"location\": {\n                \"metro_code\": equinix.Metro.SILICON_VALLEY,\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix\"\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvd2AzurePrimary, err := fabric.NewConnection(ctx, \"vd2azurePrimary\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(fabric.ConnectionTypeEVPL),\n\t\t\tRedundancy: \u0026fabric.ConnectionRedundancyArgs{\n\t\t\t\tPriority: pulumi.String(\"PRIMARY\"),\n\t\t\t},\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeVD),\n\t\t\t\t\tVirtualDevice: \u0026fabric.ConnectionASideAccessPointVirtualDeviceArgs{\n\t\t\t\t\t\tType: pulumi.String(\"EDGE\"),\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cdevice_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tInterface: \u0026fabric.ConnectionASideAccessPointInterfaceArgs{\n\t\t\t\t\t\tType: pulumi.String(\"CLOUD\"),\n\t\t\t\t\t\tId:   pulumi.Int(7),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType:              pulumi.String(fabric.AccessPointTypeSP),\n\t\t\t\t\tAuthenticationKey: pulumi.String(\"\u003cAzure_ExpressRouter_Auth_Key\u003e\"),\n\t\t\t\t\tPeeringType:       pulumi.String(fabric.AccessPointPeeringTypePrivate),\n\t\t\t\t\tProfile: \u0026fabric.ConnectionZSideAccessPointProfileArgs{\n\t\t\t\t\t\tType: pulumi.String(fabric.ProfileTypeL2Profile),\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cAzure_Service_Profile_UUID\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLocation: \u0026fabric.ConnectionZSideAccessPointLocationArgs{\n\t\t\t\t\t\tMetroCode: pulumi.String(equinix.MetroSiliconValley),\n\t\t\t\t\t},\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\t_, err = fabric.NewConnection(ctx, \"vd2azureSecondary\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(fabric.ConnectionTypeEVPL),\n\t\t\tRedundancy: \u0026fabric.ConnectionRedundancyArgs{\n\t\t\t\tPriority: pulumi.String(\"SECONDARY\"),\n\t\t\t\tGroup: vd2AzurePrimary.Redundancy.ApplyT(func(redundancy fabric.ConnectionRedundancy) (*string, error) {\n\t\t\t\t\treturn \u0026redundancy.Group, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t},\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeVD),\n\t\t\t\t\tVirtualDevice: \u0026fabric.ConnectionASideAccessPointVirtualDeviceArgs{\n\t\t\t\t\t\tType: pulumi.String(\"EDGE\"),\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cdevice_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tInterface: \u0026fabric.ConnectionASideAccessPointInterfaceArgs{\n\t\t\t\t\t\tType: pulumi.String(\"CLOUD\"),\n\t\t\t\t\t\tId:   pulumi.Int(5),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType:              pulumi.String(fabric.AccessPointTypeSP),\n\t\t\t\t\tAuthenticationKey: pulumi.String(\"\u003cAzure_ExpressRouter_Auth_Key\u003e\"),\n\t\t\t\t\tPeeringType:       pulumi.String(fabric.AccessPointPeeringTypePrivate),\n\t\t\t\t\tProfile: \u0026fabric.ConnectionZSideAccessPointProfileArgs{\n\t\t\t\t\t\tType: pulumi.String(fabric.ProfileTypeL2Profile),\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cAzure_Service_Profile_UUID\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tLocation: \u0026fabric.ConnectionZSideAccessPointLocationArgs{\n\t\t\t\t\t\tMetroCode: pulumi.String(equinix.MetroSiliconValley),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vd2AzurePrimary = new Equinix.Fabric.Connection(\"vd2azurePrimary\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = Equinix.Fabric.ConnectionType.EVPL,\n        Redundancy = new Equinix.Fabric.Inputs.ConnectionRedundancyArgs\n        {\n            Priority = \"PRIMARY\",\n        },\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.VD,\n                VirtualDevice = new Equinix.Fabric.Inputs.ConnectionASideAccessPointVirtualDeviceArgs\n                {\n                    Type = \"EDGE\",\n                    Uuid = \"\u003cdevice_uuid\u003e\",\n                },\n                Interface = new Equinix.Fabric.Inputs.ConnectionASideAccessPointInterfaceArgs\n                {\n                    Type = \"CLOUD\",\n                    Id = 7,\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.SP,\n                AuthenticationKey = \"\u003cAzure_ExpressRouter_Auth_Key\u003e\",\n                PeeringType = Equinix.Fabric.AccessPointPeeringType.Private,\n                Profile = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointProfileArgs\n                {\n                    Type = Equinix.Fabric.ProfileType.L2Profile,\n                    Uuid = \"\u003cAzure_Service_Profile_UUID\u003e\",\n                },\n                Location = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLocationArgs\n                {\n                    MetroCode = Equinix.Metro.SiliconValley,\n                },\n            },\n        },\n    });\n\n    var vd2AzureSecondary = new Equinix.Fabric.Connection(\"vd2azureSecondary\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = Equinix.Fabric.ConnectionType.EVPL,\n        Redundancy = new Equinix.Fabric.Inputs.ConnectionRedundancyArgs\n        {\n            Priority = \"SECONDARY\",\n            Group = vd2AzurePrimary.Redundancy.Apply(redundancy =\u003e redundancy?.Group),\n        },\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.VD,\n                VirtualDevice = new Equinix.Fabric.Inputs.ConnectionASideAccessPointVirtualDeviceArgs\n                {\n                    Type = \"EDGE\",\n                    Uuid = \"\u003cdevice_uuid\u003e\",\n                },\n                Interface = new Equinix.Fabric.Inputs.ConnectionASideAccessPointInterfaceArgs\n                {\n                    Type = \"CLOUD\",\n                    Id = 5,\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.SP,\n                AuthenticationKey = \"\u003cAzure_ExpressRouter_Auth_Key\u003e\",\n                PeeringType = Equinix.Fabric.AccessPointPeeringType.Private,\n                Profile = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointProfileArgs\n                {\n                    Type = Equinix.Fabric.ProfileType.L2Profile,\n                    Uuid = \"\u003cAzure_Service_Profile_UUID\u003e\",\n                },\n                Location = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLocationArgs\n                {\n                    MetroCode = Equinix.Metro.SiliconValley,\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionRedundancyArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointVirtualDeviceArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointInterfaceArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointProfileArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var vd2AzurePrimary = new Connection(\"vd2AzurePrimary\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"EVPL_VC\")\n            .redundancy(ConnectionRedundancyArgs.builder()\n                .priority(\"PRIMARY\")\n                .build())\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"VD\")\n                    .virtualDevice(ConnectionASideAccessPointVirtualDeviceArgs.builder()\n                        .type(\"EDGE\")\n                        .uuid(\"\u003cdevice_uuid\u003e\")\n                        .build())\n                    .interface_(ConnectionASideAccessPointInterfaceArgs.builder()\n                        .type(\"CLOUD\")\n                        .id(7)\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"SP\")\n                    .authenticationKey(\"\u003cAzure_ExpressRouter_Auth_Key\u003e\")\n                    .peeringType(\"PRIVATE\")\n                    .profile(ConnectionZSideAccessPointProfileArgs.builder()\n                        .type(\"L2_PROFILE\")\n                        .uuid(\"\u003cAzure_Service_Profile_UUID\u003e\")\n                        .build())\n                    .location(ConnectionZSideAccessPointLocationArgs.builder()\n                        .metroCode(\"SV\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n        var vd2AzureSecondary = new Connection(\"vd2AzureSecondary\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"EVPL_VC\")\n            .redundancy(ConnectionRedundancyArgs.builder()\n                .priority(\"SECONDARY\")\n                .group(vd2AzurePrimary.redundancy().applyValue(_redundancy -\u003e _redundancy.group()))\n                .build())\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"VD\")\n                    .virtualDevice(ConnectionASideAccessPointVirtualDeviceArgs.builder()\n                        .type(\"EDGE\")\n                        .uuid(\"\u003cdevice_uuid\u003e\")\n                        .build())\n                    .interface_(ConnectionASideAccessPointInterfaceArgs.builder()\n                        .type(\"CLOUD\")\n                        .id(5)\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"SP\")\n                    .authenticationKey(\"\u003cAzure_ExpressRouter_Auth_Key\u003e\")\n                    .peeringType(\"PRIVATE\")\n                    .profile(ConnectionZSideAccessPointProfileArgs.builder()\n                        .type(\"L2_PROFILE\")\n                        .uuid(\"\u003cAzure_Service_Profile_UUID\u003e\")\n                        .build())\n                    .location(ConnectionZSideAccessPointLocationArgs.builder()\n                        .metroCode(\"SV\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vd2azurePrimary:\n    type: equinix:fabric:Connection\n    name: vd2azure_primary\n    properties:\n      name: ConnectionName\n      type: EVPL_VC\n      redundancy:\n        priority: PRIMARY\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        accessPoint:\n          type: VD\n          virtualDevice:\n            type: EDGE\n            uuid: \u003cdevice_uuid\u003e\n          interface:\n            type: CLOUD\n            id: 7\n      zSide:\n        accessPoint:\n          type: SP\n          authenticationKey: \u003cAzure_ExpressRouter_Auth_Key\u003e\n          peeringType: PRIVATE\n          profile:\n            type: L2_PROFILE\n            uuid: \u003cAzure_Service_Profile_UUID\u003e\n          location:\n            metroCode: SV\n  vd2azureSecondary:\n    type: equinix:fabric:Connection\n    name: vd2azure_secondary\n    properties:\n      name: ConnectionName\n      type: EVPL_VC\n      redundancy:\n        priority: SECONDARY\n        group: ${vd2azurePrimary.redundancy.group}\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        accessPoint:\n          type: VD\n          virtualDevice:\n            type: EDGE\n            uuid: \u003cdevice_uuid\u003e\n          interface:\n            type: CLOUD\n            id: 5\n      zSide:\n        accessPoint:\n          type: SP\n          authenticationKey: \u003cAzure_ExpressRouter_Auth_Key\u003e\n          peeringType: PRIVATE\n          profile:\n            type: L2_PROFILE\n            uuid: \u003cAzure_Service_Profile_UUID\u003e\n          location:\n            metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example vd to network\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst vd2Network = new equinix.fabric.Connection(\"vd2network\", {\n    name: \"ConnectionName\",\n    type: \"EVPLAN_VC\",\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.VD,\n            virtualDevice: {\n                type: \"EDGE\",\n                uuid: \"\u003cdevice_uuid\u003e\",\n            },\n            \"interface\": {\n                type: \"CLOUD\",\n                id: 7,\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Network,\n            network: {\n                uuid: \"\u003cnetwork_uuid\u003e\",\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nvd2_network = equinix.fabric.Connection(\"vd2network\",\n    name=\"ConnectionName\",\n    type=\"EVPLAN_VC\",\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.VD,\n            \"virtual_device\": {\n                \"type\": \"EDGE\",\n                \"uuid\": \"\u003cdevice_uuid\u003e\",\n            },\n            \"interface\": {\n                \"type\": \"CLOUD\",\n                \"id\": 7,\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.NETWORK,\n            \"network\": {\n                \"uuid\": \"\u003cnetwork_uuid\u003e\",\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"vd2network\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(\"EVPLAN_VC\"),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeVD),\n\t\t\t\t\tVirtualDevice: \u0026fabric.ConnectionASideAccessPointVirtualDeviceArgs{\n\t\t\t\t\t\tType: pulumi.String(\"EDGE\"),\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cdevice_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tInterface: \u0026fabric.ConnectionASideAccessPointInterfaceArgs{\n\t\t\t\t\t\tType: pulumi.String(\"CLOUD\"),\n\t\t\t\t\t\tId:   pulumi.Int(7),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeNetwork),\n\t\t\t\t\tNetwork: \u0026fabric.ConnectionZSideAccessPointNetworkArgs{\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cnetwork_uuid\u003e\"),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vd2Network = new Equinix.Fabric.Connection(\"vd2network\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = \"EVPLAN_VC\",\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.VD,\n                VirtualDevice = new Equinix.Fabric.Inputs.ConnectionASideAccessPointVirtualDeviceArgs\n                {\n                    Type = \"EDGE\",\n                    Uuid = \"\u003cdevice_uuid\u003e\",\n                },\n                Interface = new Equinix.Fabric.Inputs.ConnectionASideAccessPointInterfaceArgs\n                {\n                    Type = \"CLOUD\",\n                    Id = 7,\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Network,\n                Network = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointNetworkArgs\n                {\n                    Uuid = \"\u003cnetwork_uuid\u003e\",\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointVirtualDeviceArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointInterfaceArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var vd2Network = new Connection(\"vd2Network\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"EVPLAN_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"VD\")\n                    .virtualDevice(ConnectionASideAccessPointVirtualDeviceArgs.builder()\n                        .type(\"EDGE\")\n                        .uuid(\"\u003cdevice_uuid\u003e\")\n                        .build())\n                    .interface_(ConnectionASideAccessPointInterfaceArgs.builder()\n                        .type(\"CLOUD\")\n                        .id(7)\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"NETWORK\")\n                    .network(ConnectionZSideAccessPointNetworkArgs.builder()\n                        .uuid(\"\u003cnetwork_uuid\u003e\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vd2network:\n    type: equinix:fabric:Connection\n    properties:\n      name: ConnectionName\n      type: EVPLAN_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        accessPoint:\n          type: VD\n          virtualDevice:\n            type: EDGE\n            uuid: \u003cdevice_uuid\u003e\n          interface:\n            type: CLOUD\n            id: 7\n      zSide:\n        accessPoint:\n          type: NETWORK\n          network:\n            uuid: \u003cnetwork_uuid\u003e\n```\n{{% /example %}}\n\n{{% example %}}\n### example vd to token\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst vd2Token = new equinix.fabric.Connection(\"vd2token\", {\n    name: \"ConnectionName\",\n    type: equinix.fabric.ConnectionType.EVPL,\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth: 50,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.VD,\n            virtualDevice: {\n                type: \"EDGE\",\n                uuid: \"\u003cdevice_uuid\u003e\",\n            },\n            \"interface\": {\n                type: \"NETWORK\",\n                id: 7,\n            },\n        },\n    },\n    zSide: {\n        serviceToken: {\n            uuid: \"\u003cservice_token_uuid\u003e\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nvd2_token = equinix.fabric.Connection(\"vd2token\",\n    name=\"ConnectionName\",\n    type=equinix.fabric.ConnectionType.EVPL,\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n    }],\n    bandwidth=50,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.VD,\n            \"virtual_device\": {\n                \"type\": \"EDGE\",\n                \"uuid\": \"\u003cdevice_uuid\u003e\",\n            },\n            \"interface\": {\n                \"type\": \"NETWORK\",\n                \"id\": 7,\n            },\n        },\n    },\n    z_side={\n        \"service_token\": {\n            \"uuid\": \"\u003cservice_token_uuid\u003e\",\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewConnection(ctx, \"vd2token\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"ConnectionName\"),\n\t\t\tType: pulumi.String(fabric.ConnectionTypeEVPL),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(50),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeVD),\n\t\t\t\t\tVirtualDevice: \u0026fabric.ConnectionASideAccessPointVirtualDeviceArgs{\n\t\t\t\t\t\tType: pulumi.String(\"EDGE\"),\n\t\t\t\t\t\tUuid: pulumi.String(\"\u003cdevice_uuid\u003e\"),\n\t\t\t\t\t},\n\t\t\t\t\tInterface: \u0026fabric.ConnectionASideAccessPointInterfaceArgs{\n\t\t\t\t\t\tType: pulumi.String(\"NETWORK\"),\n\t\t\t\t\t\tId:   pulumi.Int(7),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tServiceToken: \u0026fabric.ConnectionZSideServiceTokenArgs{\n\t\t\t\t\tUuid: pulumi.String(\"\u003cservice_token_uuid\u003e\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vd2Token = new Equinix.Fabric.Connection(\"vd2token\", new()\n    {\n        Name = \"ConnectionName\",\n        Type = Equinix.Fabric.ConnectionType.EVPL,\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n            },\n        },\n        Bandwidth = 50,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.VD,\n                VirtualDevice = new Equinix.Fabric.Inputs.ConnectionASideAccessPointVirtualDeviceArgs\n                {\n                    Type = \"EDGE\",\n                    Uuid = \"\u003cdevice_uuid\u003e\",\n                },\n                Interface = new Equinix.Fabric.Inputs.ConnectionASideAccessPointInterfaceArgs\n                {\n                    Type = \"NETWORK\",\n                    Id = 7,\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            ServiceToken = new Equinix.Fabric.Inputs.ConnectionZSideServiceTokenArgs\n            {\n                Uuid = \"\u003cservice_token_uuid\u003e\",\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointVirtualDeviceArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointInterfaceArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideServiceTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var vd2Token = new Connection(\"vd2Token\", ConnectionArgs.builder()\n            .name(\"ConnectionName\")\n            .type(\"EVPL_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .build())\n            .bandwidth(50)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"VD\")\n                    .virtualDevice(ConnectionASideAccessPointVirtualDeviceArgs.builder()\n                        .type(\"EDGE\")\n                        .uuid(\"\u003cdevice_uuid\u003e\")\n                        .build())\n                    .interface_(ConnectionASideAccessPointInterfaceArgs.builder()\n                        .type(\"NETWORK\")\n                        .id(7)\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .serviceToken(ConnectionZSideServiceTokenArgs.builder()\n                    .uuid(\"\u003cservice_token_uuid\u003e\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vd2token:\n    type: equinix:fabric:Connection\n    properties:\n      name: ConnectionName\n      type: EVPL_VC\n      notifications:\n        - type: ALL\n          emails:\n            - example@equinix.com\n            - test1@equinix.com\n      bandwidth: 50\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        accessPoint:\n          type: VD\n          virtualDevice:\n            type: EDGE\n            uuid: \u003cdevice_uuid\u003e\n          interface:\n            type: NETWORK\n            id: 7\n      zSide:\n        serviceToken:\n          uuid: \u003cservice_token_uuid\u003e\n```\n{{% /example %}}\n\n{{% /examples %}}","properties":{"aSide":{"$ref":"#/types/equinix:fabric/ConnectionASide:ConnectionASide","description":"Requester or Customer side connection configuration object of the multi-segment connection\n"},"account":{"$ref":"#/types/equinix:fabric/ConnectionAccount:ConnectionAccount","description":"Customer account information that is associated with this connection\n"},"additionalInfo":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"description":"Connection additional information\n"},"bandwidth":{"type":"integer","description":"Connection bandwidth in Mbps\n"},"changeLog":{"$ref":"#/types/equinix:fabric/ConnectionChangeLog:ConnectionChangeLog","description":"Captures connection lifecycle change information\n"},"description":{"type":"string","description":"Customer-provided connection description\n"},"direction":{"type":"string","description":"Connection directionality from the requester point of view\n"},"href":{"type":"string","description":"Connection URI information\n"},"isRemote":{"type":"boolean","description":"Connection property derived from access point locations\n"},"name":{"type":"string","description":"Connection name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ConnectionNotification:ConnectionNotification"},"description":"Preferences for notifications on connection configuration or status changes\n"},"operation":{"$ref":"#/types/equinix:fabric/ConnectionOperation:ConnectionOperation","description":"Connection type-specific operational data\n"},"order":{"$ref":"#/types/equinix:fabric/ConnectionOrder:ConnectionOrder","description":"Order details\n"},"project":{"$ref":"#/types/equinix:fabric/ConnectionProject:ConnectionProject","description":"Project information\n"},"redundancy":{"$ref":"#/types/equinix:fabric/ConnectionRedundancy:ConnectionRedundancy","description":"Connection Redundancy Configuration\n"},"state":{"type":"string","description":"Connection overall state\n"},"type":{"type":"string","description":"Defines the connection type like EVPL*VC, EPL*VC, IPWAN*VC, IP*VC, ACCESS*EPL*VC, EVPLAN*VC, EPLAN*VC, EIA*VC, IA*VC, EC_VC\n"},"uuid":{"type":"string","description":"Equinix-assigned connection identifier\n"},"zSide":{"$ref":"#/types/equinix:fabric/ConnectionZSide:ConnectionZSide","description":"Destination or Provider side connection configuration object of the multi-segment connection\n"}},"required":["aSide","account","bandwidth","changeLog","direction","href","isRemote","name","notifications","operation","order","project","state","type","uuid","zSide"],"inputProperties":{"aSide":{"$ref":"#/types/equinix:fabric/ConnectionASide:ConnectionASide","description":"Requester or Customer side connection configuration object of the multi-segment connection\n"},"additionalInfo":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"description":"Connection additional information\n"},"bandwidth":{"type":"integer","description":"Connection bandwidth in Mbps\n"},"description":{"type":"string","description":"Customer-provided connection description\n"},"name":{"type":"string","description":"Connection name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ConnectionNotification:ConnectionNotification"},"description":"Preferences for notifications on connection configuration or status changes\n"},"order":{"$ref":"#/types/equinix:fabric/ConnectionOrder:ConnectionOrder","description":"Order details\n"},"project":{"$ref":"#/types/equinix:fabric/ConnectionProject:ConnectionProject","description":"Project information\n"},"redundancy":{"$ref":"#/types/equinix:fabric/ConnectionRedundancy:ConnectionRedundancy","description":"Connection Redundancy Configuration\n"},"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/connectionType:ConnectionType"}],"description":"Defines the connection type like EVPL*VC, EPL*VC, IPWAN*VC, IP*VC, ACCESS*EPL*VC, EVPLAN*VC, EPLAN*VC, EIA*VC, IA*VC, EC_VC\n"},"zSide":{"$ref":"#/types/equinix:fabric/ConnectionZSide:ConnectionZSide","description":"Destination or Provider side connection configuration object of the multi-segment connection\n"}},"requiredInputs":["aSide","bandwidth","notifications","type","zSide"],"stateInputs":{"description":"Input properties used for looking up and filtering Connection resources.\n","properties":{"aSide":{"$ref":"#/types/equinix:fabric/ConnectionASide:ConnectionASide","description":"Requester or Customer side connection configuration object of the multi-segment connection\n"},"account":{"$ref":"#/types/equinix:fabric/ConnectionAccount:ConnectionAccount","description":"Customer account information that is associated with this connection\n"},"additionalInfo":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"description":"Connection additional information\n"},"bandwidth":{"type":"integer","description":"Connection bandwidth in Mbps\n"},"changeLog":{"$ref":"#/types/equinix:fabric/ConnectionChangeLog:ConnectionChangeLog","description":"Captures connection lifecycle change information\n"},"description":{"type":"string","description":"Customer-provided connection description\n"},"direction":{"type":"string","description":"Connection directionality from the requester point of view\n"},"href":{"type":"string","description":"Connection URI information\n"},"isRemote":{"type":"boolean","description":"Connection property derived from access point locations\n"},"name":{"type":"string","description":"Connection name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ConnectionNotification:ConnectionNotification"},"description":"Preferences for notifications on connection configuration or status changes\n"},"operation":{"$ref":"#/types/equinix:fabric/ConnectionOperation:ConnectionOperation","description":"Connection type-specific operational data\n"},"order":{"$ref":"#/types/equinix:fabric/ConnectionOrder:ConnectionOrder","description":"Order details\n"},"project":{"$ref":"#/types/equinix:fabric/ConnectionProject:ConnectionProject","description":"Project information\n"},"redundancy":{"$ref":"#/types/equinix:fabric/ConnectionRedundancy:ConnectionRedundancy","description":"Connection Redundancy Configuration\n"},"state":{"type":"string","description":"Connection overall state\n"},"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/connectionType:ConnectionType"}],"description":"Defines the connection type like EVPL*VC, EPL*VC, IPWAN*VC, IP*VC, ACCESS*EPL*VC, EVPLAN*VC, EPLAN*VC, EIA*VC, IA*VC, EC_VC\n"},"uuid":{"type":"string","description":"Equinix-assigned connection identifier\n"},"zSide":{"$ref":"#/types/equinix:fabric/ConnectionZSide:ConnectionZSide","description":"Destination or Provider side connection configuration object of the multi-segment connection\n"}},"type":"object"}},"equinix:fabric/connectionRouteAggregation:ConnectionRouteAggregation":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst policyAttachment = new equinix.fabric.ConnectionRouteAggregation(\"policyAttachment\", {\n    routeAggregationId: \"\u003croute_aggregation_id\u003e\",\n    connectionId: \"\u003cconnection_id\u003e\",\n});\nexport const connectionRouteAggregationId = policyAttachment.id;\nexport const connectionRouteAggregationConnectionId = policyAttachment.connectionId;\nexport const connectionRouteAggregationType = policyAttachment.type;\nexport const connectionRouteAggregationAttachmentStatus = policyAttachment.attachmentStatus;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\npolicy_attachment = equinix.fabric.ConnectionRouteAggregation(\"policyAttachment\",\n    route_aggregation_id=\"\u003croute_aggregation_id\u003e\",\n    connection_id=\"\u003cconnection_id\u003e\")\npulumi.export(\"connectionRouteAggregationId\", policy_attachment.id)\npulumi.export(\"connectionRouteAggregationConnectionId\", policy_attachment.connection_id)\npulumi.export(\"connectionRouteAggregationType\", policy_attachment.type)\npulumi.export(\"connectionRouteAggregationAttachmentStatus\", policy_attachment.attachment_status)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var policyAttachment = new Equinix.Fabric.ConnectionRouteAggregation(\"policyAttachment\", new()\n    {\n        RouteAggregationId = \"\u003croute_aggregation_id\u003e\",\n        ConnectionId = \"\u003cconnection_id\u003e\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"connectionRouteAggregationId\"] = policyAttachment.Id,\n        [\"connectionRouteAggregationConnectionId\"] = policyAttachment.ConnectionId,\n        [\"connectionRouteAggregationType\"] = policyAttachment.Type,\n        [\"connectionRouteAggregationAttachmentStatus\"] = policyAttachment.AttachmentStatus,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpolicyAttachment, err := fabric.NewConnectionRouteAggregation(ctx, \"policyAttachment\", \u0026fabric.ConnectionRouteAggregationArgs{\n\t\t\tRouteAggregationId: pulumi.String(\"\u003croute_aggregation_id\u003e\"),\n\t\t\tConnectionId:       pulumi.String(\"\u003cconnection_id\u003e\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"connectionRouteAggregationId\", policyAttachment.ID())\n\t\tctx.Export(\"connectionRouteAggregationConnectionId\", policyAttachment.ConnectionId)\n\t\tctx.Export(\"connectionRouteAggregationType\", policyAttachment.Type)\n\t\tctx.Export(\"connectionRouteAggregationAttachmentStatus\", policyAttachment.AttachmentStatus)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.ConnectionRouteAggregation;\nimport com.pulumi.equinix.fabric.ConnectionRouteAggregationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var policyAttachment = new ConnectionRouteAggregation(\"policyAttachment\", ConnectionRouteAggregationArgs.builder()\n            .routeAggregationId(\"\u003croute_aggregation_id\u003e\")\n            .connectionId(\"\u003cconnection_id\u003e\")\n            .build());\n\n        ctx.export(\"connectionRouteAggregationId\", policyAttachment.id());\n        ctx.export(\"connectionRouteAggregationConnectionId\", policyAttachment.connectionId());\n        ctx.export(\"connectionRouteAggregationType\", policyAttachment.type());\n        ctx.export(\"connectionRouteAggregationAttachmentStatus\", policyAttachment.attachmentStatus());\n    }\n}\n```\n```yaml\nresources:\n  policyAttachment:\n    type: equinix:fabric:ConnectionRouteAggregation\n    properties:\n      routeAggregationId: \u003croute_aggregation_id\u003e\n      connectionId: \u003cconnection_id\u003e\noutputs:\n  connectionRouteAggregationId: ${policyAttachment.id}\n  connectionRouteAggregationConnectionId: ${policyAttachment.connectionId}\n  connectionRouteAggregationType: ${policyAttachment.type}\n  connectionRouteAggregationAttachmentStatus: ${policyAttachment.attachmentStatus}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"attachmentStatus":{"type":"string","description":"Status of the Route Aggregation Policy attachment lifecycle\n"},"connectionId":{"type":"string","description":"Equinix Assigned UUID of the Equinix Connection to attach the Route Aggregation Policy to\n"},"href":{"type":"string","description":"URI to the attached Route Aggregation Policy on the Connection\n"},"routeAggregationId":{"type":"string","description":"UUID of the Route Aggregation to apply this Rule to\n"},"timeouts":{"$ref":"#/types/equinix:fabric/ConnectionRouteAggregationTimeouts:ConnectionRouteAggregationTimeouts"},"type":{"type":"string","description":"Route Aggregation Type. One of [\"BGP*IPv4*PREFIX_AGGREGATION\"]\n"},"uuid":{"type":"string","description":"Equinix Assigned ID for Route Aggregation Policy\n"}},"required":["attachmentStatus","connectionId","href","routeAggregationId","type","uuid"],"inputProperties":{"connectionId":{"type":"string","description":"Equinix Assigned UUID of the Equinix Connection to attach the Route Aggregation Policy to\n"},"routeAggregationId":{"type":"string","description":"UUID of the Route Aggregation to apply this Rule to\n"},"timeouts":{"$ref":"#/types/equinix:fabric/ConnectionRouteAggregationTimeouts:ConnectionRouteAggregationTimeouts"}},"requiredInputs":["connectionId","routeAggregationId"],"stateInputs":{"description":"Input properties used for looking up and filtering ConnectionRouteAggregation resources.\n","properties":{"attachmentStatus":{"type":"string","description":"Status of the Route Aggregation Policy attachment lifecycle\n"},"connectionId":{"type":"string","description":"Equinix Assigned UUID of the Equinix Connection to attach the Route Aggregation Policy to\n"},"href":{"type":"string","description":"URI to the attached Route Aggregation Policy on the Connection\n"},"routeAggregationId":{"type":"string","description":"UUID of the Route Aggregation to apply this Rule to\n"},"timeouts":{"$ref":"#/types/equinix:fabric/ConnectionRouteAggregationTimeouts:ConnectionRouteAggregationTimeouts"},"type":{"type":"string","description":"Route Aggregation Type. One of [\"BGP*IPv4*PREFIX_AGGREGATION\"]\n"},"uuid":{"type":"string","description":"Equinix Assigned ID for Route Aggregation Policy\n"}},"type":"object"}},"equinix:fabric/connectionRouteFilter:ConnectionRouteFilter":{"description":"Fabric V4 API compatible resource allows attachment of Route Filter Polices to Fabric Connections\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-route-filters.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#route-filters\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst policyAttachment = new equinix.fabric.ConnectionRouteFilter(\"policyAttachment\", {\n    connectionId: \"\u003cconnection_uuid\u003e\",\n    routeFilterId: \"\u003croute_filter_policy_uuid\u003e\",\n    direction: \"INBOUND\",\n});\nexport const connectionRouteFilterId = policyAttachment.id;\nexport const connectionRouteFilterConnectionId = policyAttachment.connectionId;\nexport const connectionRouteFilterDirection = policyAttachment.direction;\nexport const connectionRouteFilterType = policyAttachment.type;\nexport const connectionRouteFilterAttachmentStatus = policyAttachment.attachmentStatus;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\npolicy_attachment = equinix.fabric.ConnectionRouteFilter(\"policyAttachment\",\n    connection_id=\"\u003cconnection_uuid\u003e\",\n    route_filter_id=\"\u003croute_filter_policy_uuid\u003e\",\n    direction=\"INBOUND\")\npulumi.export(\"connectionRouteFilterId\", policy_attachment.id)\npulumi.export(\"connectionRouteFilterConnectionId\", policy_attachment.connection_id)\npulumi.export(\"connectionRouteFilterDirection\", policy_attachment.direction)\npulumi.export(\"connectionRouteFilterType\", policy_attachment.type)\npulumi.export(\"connectionRouteFilterAttachmentStatus\", policy_attachment.attachment_status)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var policyAttachment = new Equinix.Fabric.ConnectionRouteFilter(\"policyAttachment\", new()\n    {\n        ConnectionId = \"\u003cconnection_uuid\u003e\",\n        RouteFilterId = \"\u003croute_filter_policy_uuid\u003e\",\n        Direction = \"INBOUND\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"connectionRouteFilterId\"] = policyAttachment.Id,\n        [\"connectionRouteFilterConnectionId\"] = policyAttachment.ConnectionId,\n        [\"connectionRouteFilterDirection\"] = policyAttachment.Direction,\n        [\"connectionRouteFilterType\"] = policyAttachment.Type,\n        [\"connectionRouteFilterAttachmentStatus\"] = policyAttachment.AttachmentStatus,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpolicyAttachment, err := fabric.NewConnectionRouteFilter(ctx, \"policyAttachment\", \u0026fabric.ConnectionRouteFilterArgs{\n\t\t\tConnectionId:  pulumi.String(\"\u003cconnection_uuid\u003e\"),\n\t\t\tRouteFilterId: pulumi.String(\"\u003croute_filter_policy_uuid\u003e\"),\n\t\t\tDirection:     pulumi.String(\"INBOUND\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"connectionRouteFilterId\", policyAttachment.ID())\n\t\tctx.Export(\"connectionRouteFilterConnectionId\", policyAttachment.ConnectionId)\n\t\tctx.Export(\"connectionRouteFilterDirection\", policyAttachment.Direction)\n\t\tctx.Export(\"connectionRouteFilterType\", policyAttachment.Type)\n\t\tctx.Export(\"connectionRouteFilterAttachmentStatus\", policyAttachment.AttachmentStatus)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.ConnectionRouteFilter;\nimport com.pulumi.equinix.fabric.ConnectionRouteFilterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var policyAttachment = new ConnectionRouteFilter(\"policyAttachment\", ConnectionRouteFilterArgs.builder()\n            .connectionId(\"\u003cconnection_uuid\u003e\")\n            .routeFilterId(\"\u003croute_filter_policy_uuid\u003e\")\n            .direction(\"INBOUND\")\n            .build());\n\n        ctx.export(\"connectionRouteFilterId\", policyAttachment.id());\n        ctx.export(\"connectionRouteFilterConnectionId\", policyAttachment.connectionId());\n        ctx.export(\"connectionRouteFilterDirection\", policyAttachment.direction());\n        ctx.export(\"connectionRouteFilterType\", policyAttachment.type());\n        ctx.export(\"connectionRouteFilterAttachmentStatus\", policyAttachment.attachmentStatus());\n    }\n}\n```\n```yaml\nresources:\n  policyAttachment:\n    type: equinix:fabric:ConnectionRouteFilter\n    properties:\n      connectionId: \u003cconnection_uuid\u003e\n      routeFilterId: \u003croute_filter_policy_uuid\u003e\n      direction: INBOUND\noutputs:\n  connectionRouteFilterId: ${policyAttachment.id}\n  connectionRouteFilterConnectionId: ${policyAttachment.connectionId}\n  connectionRouteFilterDirection: ${policyAttachment.direction}\n  connectionRouteFilterType: ${policyAttachment.type}\n  connectionRouteFilterAttachmentStatus: ${policyAttachment.attachmentStatus}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"attachmentStatus":{"type":"string","description":"Status of the Route Filter Policy attachment lifecycle\n"},"connectionId":{"type":"string","description":"Equinix Assigned UUID of the Equinix Connection to attach the Route Filter Policy to\n"},"direction":{"type":"string","description":"Direction of the filtering of the attached Route Filter Policy\n"},"href":{"type":"string","description":"URI to the attached Route Filter Policy on the Connection\n"},"routeFilterId":{"type":"string","description":"Equinix Assigned UUID of the Route Filter Policy to attach to the Equinix Connection\n"},"type":{"type":"string","description":"Route Filter Type. One of [ \"BGP*IPv4*PREFIX*FILTER\", \"BGP*IPv6*PREFIX*FILTER\" ]\n"},"uuid":{"type":"string","description":"Equinix Assigned ID for Route Filter Policy\n"}},"required":["attachmentStatus","connectionId","direction","href","routeFilterId","type","uuid"],"inputProperties":{"connectionId":{"type":"string","description":"Equinix Assigned UUID of the Equinix Connection to attach the Route Filter Policy to\n","willReplaceOnChanges":true},"direction":{"type":"string","description":"Direction of the filtering of the attached Route Filter Policy\n"},"routeFilterId":{"type":"string","description":"Equinix Assigned UUID of the Route Filter Policy to attach to the Equinix Connection\n","willReplaceOnChanges":true}},"requiredInputs":["connectionId","direction","routeFilterId"],"stateInputs":{"description":"Input properties used for looking up and filtering ConnectionRouteFilter resources.\n","properties":{"attachmentStatus":{"type":"string","description":"Status of the Route Filter Policy attachment lifecycle\n"},"connectionId":{"type":"string","description":"Equinix Assigned UUID of the Equinix Connection to attach the Route Filter Policy to\n","willReplaceOnChanges":true},"direction":{"type":"string","description":"Direction of the filtering of the attached Route Filter Policy\n"},"href":{"type":"string","description":"URI to the attached Route Filter Policy on the Connection\n"},"routeFilterId":{"type":"string","description":"Equinix Assigned UUID of the Route Filter Policy to attach to the Equinix Connection\n","willReplaceOnChanges":true},"type":{"type":"string","description":"Route Filter Type. One of [ \"BGP*IPv4*PREFIX*FILTER\", \"BGP*IPv6*PREFIX*FILTER\" ]\n"},"uuid":{"type":"string","description":"Equinix Assigned ID for Route Filter Policy\n"}},"type":"object"}},"equinix:fabric/network:Network":{"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric Network\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/Fabric/IMPLEMENTATION/fabric-networks-implement.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#fabric-networks\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst newNetwork = new equinix.fabric.Network(\"newNetwork\", {\n    notifications: [{\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n        type: \"ALL\",\n    }],\n    project: {\n        projectId: \"776847000642406\",\n    },\n    scope: \"GLOBAL\",\n    type: \"EVPLAN\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nnew_network = equinix.fabric.Network(\"newNetwork\",\n    notifications=[{\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n        \"type\": \"ALL\",\n    }],\n    project={\n        \"project_id\": \"776847000642406\",\n    },\n    scope=\"GLOBAL\",\n    type=\"EVPLAN\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var newNetwork = new Equinix.Fabric.Network(\"newNetwork\", new()\n    {\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.NetworkNotificationArgs\n            {\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n                Type = \"ALL\",\n            },\n        },\n        Project = new Equinix.Fabric.Inputs.NetworkProjectArgs\n        {\n            ProjectId = \"776847000642406\",\n        },\n        Scope = \"GLOBAL\",\n        Type = \"EVPLAN\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewNetwork(ctx, \"newNetwork\", \u0026fabric.NetworkArgs{\n\t\t\tNotifications: fabric.NetworkNotificationArray{\n\t\t\t\t\u0026fabric.NetworkNotificationArgs{\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tType: pulumi.String(\"ALL\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: \u0026fabric.NetworkProjectArgs{\n\t\t\t\tProjectId: pulumi.String(\"776847000642406\"),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"GLOBAL\"),\n\t\t\tType:  pulumi.String(\"EVPLAN\"),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Network;\nimport com.pulumi.equinix.fabric.NetworkArgs;\nimport com.pulumi.equinix.fabric.inputs.NetworkNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.NetworkProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var newNetwork = new Network(\"newNetwork\", NetworkArgs.builder()\n            .notifications(NetworkNotificationArgs.builder()\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .type(\"ALL\")\n                .build())\n            .project(NetworkProjectArgs.builder()\n                .projectId(\"776847000642406\")\n                .build())\n            .scope(\"GLOBAL\")\n            .type(\"EVPLAN\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  newNetwork:\n    type: equinix:fabric:Network\n    properties:\n      notifications:\n        - emails:\n            - example@equinix.com\n            - test1@equinix.com\n          type: ALL\n      project:\n        projectId: '776847000642406'\n      scope: GLOBAL\n      type: EVPLAN\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"change":{"$ref":"#/types/equinix:fabric/NetworkChange:NetworkChange","description":"Information on asset change operation\n"},"changeLog":{"$ref":"#/types/equinix:fabric/NetworkChangeLog:NetworkChangeLog","description":"A permanent record of asset creation, modification, or deletion\n"},"connectionsCount":{"type":"integer","description":"Number of connections associated with this network\n"},"href":{"type":"string","description":"Fabric Network URI information\n"},"location":{"$ref":"#/types/equinix:fabric/NetworkLocation:NetworkLocation","description":"Fabric Network location\n"},"name":{"type":"string","description":"Fabric Network name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/NetworkNotification:NetworkNotification"},"description":"Preferences for notifications on Fabric Network configuration or status changes\n"},"operation":{"$ref":"#/types/equinix:fabric/NetworkOperation:NetworkOperation","description":"Network operation information that is associated with this Fabric Network\n"},"project":{"$ref":"#/types/equinix:fabric/NetworkProject:NetworkProject","description":"Fabric Network project\n"},"scope":{"type":"string","description":"Fabric Network scope. Valid values: [REGIONAL GLOBAL LOCAL]. Note: When scope is REGIONAL, the location.region field is required.\n"},"state":{"type":"string","description":"Fabric Network overall state\n"},"type":{"type":"string","description":"Supported Network types - EVPLAN, EPLAN, IPWAN, EVPTREE, EPTREE\n"},"uuid":{"type":"string","description":"Equinix-assigned network identifier\n"}},"required":["change","changeLog","connectionsCount","href","location","name","notifications","operation","project","scope","state","type","uuid"],"inputProperties":{"location":{"$ref":"#/types/equinix:fabric/NetworkLocation:NetworkLocation","description":"Fabric Network location\n"},"name":{"type":"string","description":"Fabric Network name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/NetworkNotification:NetworkNotification"},"description":"Preferences for notifications on Fabric Network configuration or status changes\n"},"project":{"$ref":"#/types/equinix:fabric/NetworkProject:NetworkProject","description":"Fabric Network project\n"},"scope":{"type":"string","description":"Fabric Network scope. Valid values: [REGIONAL GLOBAL LOCAL]. Note: When scope is REGIONAL, the location.region field is required.\n"},"type":{"type":"string","description":"Supported Network types - EVPLAN, EPLAN, IPWAN, EVPTREE, EPTREE\n"}},"requiredInputs":["notifications","project","scope","type"],"stateInputs":{"description":"Input properties used for looking up and filtering Network resources.\n","properties":{"change":{"$ref":"#/types/equinix:fabric/NetworkChange:NetworkChange","description":"Information on asset change operation\n"},"changeLog":{"$ref":"#/types/equinix:fabric/NetworkChangeLog:NetworkChangeLog","description":"A permanent record of asset creation, modification, or deletion\n"},"connectionsCount":{"type":"integer","description":"Number of connections associated with this network\n"},"href":{"type":"string","description":"Fabric Network URI information\n"},"location":{"$ref":"#/types/equinix:fabric/NetworkLocation:NetworkLocation","description":"Fabric Network location\n"},"name":{"type":"string","description":"Fabric Network name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/NetworkNotification:NetworkNotification"},"description":"Preferences for notifications on Fabric Network configuration or status changes\n"},"operation":{"$ref":"#/types/equinix:fabric/NetworkOperation:NetworkOperation","description":"Network operation information that is associated with this Fabric Network\n"},"project":{"$ref":"#/types/equinix:fabric/NetworkProject:NetworkProject","description":"Fabric Network project\n"},"scope":{"type":"string","description":"Fabric Network scope. Valid values: [REGIONAL GLOBAL LOCAL]. Note: When scope is REGIONAL, the location.region field is required.\n"},"state":{"type":"string","description":"Fabric Network overall state\n"},"type":{"type":"string","description":"Supported Network types - EVPLAN, EPLAN, IPWAN, EVPTREE, EPTREE\n"},"uuid":{"type":"string","description":"Equinix-assigned network identifier\n"}},"type":"object"}},"equinix:fabric/port:Port":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Port;\nimport com.pulumi.equinix.fabric.PortArgs;\nimport com.pulumi.equinix.fabric.inputs.PortAccountArgs;\nimport com.pulumi.equinix.fabric.inputs.PortAdditionalInfoArgs;\nimport com.pulumi.equinix.fabric.inputs.PortEncapsulationArgs;\nimport com.pulumi.equinix.fabric.inputs.PortLocationArgs;\nimport com.pulumi.equinix.fabric.inputs.PortNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.PortPhysicalPortArgs;\nimport com.pulumi.equinix.fabric.inputs.PortProjectArgs;\nimport com.pulumi.equinix.fabric.inputs.PortRedundancyArgs;\nimport com.pulumi.equinix.fabric.inputs.PortSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var order = new Port(\"order\", PortArgs.builder()\n            .account(PortAccountArgs.builder()\n                .account_number(\"\u003caccount_number\u003e\")\n                .build())\n            .additionalInfos(PortAdditionalInfoArgs.builder()\n                .key(\"lagType\")\n                .value(\"New\")\n                .build())\n            .connectivitySourceType(\"COLO\")\n            .demarcationPointIbx(\"TR2\")\n            .encapsulation(PortEncapsulationArgs.builder()\n                .tag_protocol_id(\"0x8100\")\n                .type(\"DOT1Q\")\n                .build())\n            .lagEnabled(true)\n            .location(PortLocationArgs.builder()\n                .metro_code(\"TR\")\n                .build())\n            .notifications(            \n                PortNotificationArgs.builder()\n                    .registered_users(\"\u003cusername\u003e\")\n                    .type(\"TECHNICAL\")\n                    .build(),\n                PortNotificationArgs.builder()\n                    .registered_users(\"\u003cusername\u003e\")\n                    .type(\"NOTIFICATION\")\n                    .build())\n            .physicalPorts(PortPhysicalPortArgs.builder()\n                .demarcation_point(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n                .type(\"XF_PHYSICAL_PORT\")\n                .build())\n            .physicalPortsCount(1)\n            .physicalPortsSpeed(1000)\n            .physicalPortsType(\"1000BASE_LX\")\n            .project(PortProjectArgs.builder()\n                .project_id(\"\u003cproject_id\u003e\")\n                .build())\n            .redundancy(PortRedundancyArgs.builder()\n                .priority(\"PRIMARY\")\n                .build())\n            .settings(PortSettingsArgs.builder()\n                .package_type(\"STANDARD\")\n                .shared_port_type(false)\n                .build())\n            .type(\"XF_PORT\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  order:\n    type: equinix:fabric:Port\n    properties:\n      account:\n        account_number: \u003caccount_number\u003e\n      additionalInfos:\n        - key: lagType\n          value: New\n      connectivitySourceType: COLO\n      demarcationPointIbx: TR2\n      encapsulation:\n        tag_protocol_id: 0x8100\n        type: DOT1Q\n      lagEnabled: true\n      location:\n        metro_code: TR\n      notifications:\n        - registered_users:\n            - \u003cusername\u003e\n          type: TECHNICAL\n        - registered_users:\n            - \u003cusername\u003e\n          type: NOTIFICATION\n      physicalPorts:\n        - demarcation_point:\n            - cabinetUniqueSpaceId: Demarc\n              cageUniqueSpaceId: TR2:01:002087\n              connectorType: SC\n              ibx: TR2\n              patchPanel: PP:Demarc:00002087\n          type: XF_PHYSICAL_PORT\n      physicalPortsCount: 1\n      physicalPortsSpeed: 1000\n      physicalPortsType: 1000BASE_LX\n      project:\n        project_id: \u003cproject_id\u003e\n      redundancy:\n        priority: PRIMARY\n      settings:\n        package_type: STANDARD\n        shared_port_type: false\n      type: XF_PORT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"account":{"$ref":"#/types/equinix:fabric/PortAccount:PortAccount","description":"Port order account details\n"},"additionalInfos":{"type":"array","items":{"$ref":"#/types/equinix:fabric/PortAdditionalInfo:PortAdditionalInfo"},"description":"List of key/value objects to provide additional context to the Port order\n"},"changeLog":{"$ref":"#/types/equinix:fabric/PortChangeLog:PortChangeLog","description":"Details of the last change on the port resource\n"},"connectivitySourceType":{"type":"string","description":"Connection type that is used from the port after creation\n"},"demarcationPointIbx":{"type":"string","description":"IBX code where the port will be located\n"},"device":{"$ref":"#/types/equinix:fabric/PortDevice:PortDevice","description":"Port device configuration\n"},"encapsulation":{"$ref":"#/types/equinix:fabric/PortEncapsulation:PortEncapsulation","description":"Port encapsulation settings\n"},"href":{"type":"string","description":"Equinix assigned URI of the port resource\n"},"lagEnabled":{"type":"boolean","description":"Boolean value to enable the created port with Link Aggregation Groups\n"},"location":{"$ref":"#/types/equinix:fabric/PortLocation:PortLocation","description":"Location details for the port order\n"},"name":{"type":"string","description":"Designated name of the port\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/PortNotification:PortNotification"},"description":"List of notification types and the registered users to receive those notification types\n"},"order":{"$ref":"#/types/equinix:fabric/PortOrder:PortOrder","description":"Details of the Port Order such as purchaseOrder details and signature\n"},"physicalPorts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/PortPhysicalPort:PortPhysicalPort"},"description":"Physical ports that will implement this port order\n"},"physicalPortsCount":{"type":"integer","description":"Number of physical ports in the Port Order\n"},"physicalPortsSpeed":{"type":"integer","description":"Physical Ports Speed in Mbps\n"},"physicalPortsType":{"type":"string","description":"Physical Ports Type\n"},"project":{"$ref":"#/types/equinix:fabric/PortProject:PortProject","description":"Port order project details\n"},"redundancy":{"$ref":"#/types/equinix:fabric/PortRedundancy:PortRedundancy","description":"Port redundancy settings\n"},"settings":{"$ref":"#/types/equinix:fabric/PortSettings:PortSettings","description":"Port order configuration settings\n"},"state":{"type":"string","description":"Value representing provisioning status for the port resource\n"},"timeouts":{"$ref":"#/types/equinix:fabric/PortTimeouts:PortTimeouts"},"type":{"type":"string","description":"Type of the port order request\n"},"uuid":{"type":"string","description":"Equinix assigned unique identifier of the port resource\n"}},"required":["account","changeLog","connectivitySourceType","demarcationPointIbx","encapsulation","href","lagEnabled","location","name","notifications","order","physicalPorts","physicalPortsCount","physicalPortsSpeed","physicalPortsType","project","redundancy","settings","state","type","uuid"],"inputProperties":{"account":{"$ref":"#/types/equinix:fabric/PortAccount:PortAccount","description":"Port order account details\n"},"additionalInfos":{"type":"array","items":{"$ref":"#/types/equinix:fabric/PortAdditionalInfo:PortAdditionalInfo"},"description":"List of key/value objects to provide additional context to the Port order\n"},"connectivitySourceType":{"type":"string","description":"Connection type that is used from the port after creation\n"},"demarcationPointIbx":{"type":"string","description":"IBX code where the port will be located\n"},"device":{"$ref":"#/types/equinix:fabric/PortDevice:PortDevice","description":"Port device configuration\n"},"encapsulation":{"$ref":"#/types/equinix:fabric/PortEncapsulation:PortEncapsulation","description":"Port encapsulation settings\n"},"lagEnabled":{"type":"boolean","description":"Boolean value to enable the created port with Link Aggregation Groups\n"},"location":{"$ref":"#/types/equinix:fabric/PortLocation:PortLocation","description":"Location details for the port order\n"},"name":{"type":"string","description":"Designated name of the port\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/PortNotification:PortNotification"},"description":"List of notification types and the registered users to receive those notification types\n"},"order":{"$ref":"#/types/equinix:fabric/PortOrder:PortOrder","description":"Details of the Port Order such as purchaseOrder details and signature\n"},"physicalPorts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/PortPhysicalPort:PortPhysicalPort"},"description":"Physical ports that will implement this port order\n"},"physicalPortsCount":{"type":"integer","description":"Number of physical ports in the Port Order\n"},"physicalPortsSpeed":{"type":"integer","description":"Physical Ports Speed in Mbps\n"},"physicalPortsType":{"type":"string","description":"Physical Ports Type\n"},"project":{"$ref":"#/types/equinix:fabric/PortProject:PortProject","description":"Port order project details\n"},"redundancy":{"$ref":"#/types/equinix:fabric/PortRedundancy:PortRedundancy","description":"Port redundancy settings\n"},"settings":{"$ref":"#/types/equinix:fabric/PortSettings:PortSettings","description":"Port order configuration settings\n"},"timeouts":{"$ref":"#/types/equinix:fabric/PortTimeouts:PortTimeouts"},"type":{"type":"string","description":"Type of the port order request\n"}},"requiredInputs":["account","connectivitySourceType","demarcationPointIbx","encapsulation","lagEnabled","location","notifications","physicalPorts","physicalPortsCount","physicalPortsSpeed","physicalPortsType","project","redundancy","settings","type"],"stateInputs":{"description":"Input properties used for looking up and filtering Port resources.\n","properties":{"account":{"$ref":"#/types/equinix:fabric/PortAccount:PortAccount","description":"Port order account details\n"},"additionalInfos":{"type":"array","items":{"$ref":"#/types/equinix:fabric/PortAdditionalInfo:PortAdditionalInfo"},"description":"List of key/value objects to provide additional context to the Port order\n"},"changeLog":{"$ref":"#/types/equinix:fabric/PortChangeLog:PortChangeLog","description":"Details of the last change on the port resource\n"},"connectivitySourceType":{"type":"string","description":"Connection type that is used from the port after creation\n"},"demarcationPointIbx":{"type":"string","description":"IBX code where the port will be located\n"},"device":{"$ref":"#/types/equinix:fabric/PortDevice:PortDevice","description":"Port device configuration\n"},"encapsulation":{"$ref":"#/types/equinix:fabric/PortEncapsulation:PortEncapsulation","description":"Port encapsulation settings\n"},"href":{"type":"string","description":"Equinix assigned URI of the port resource\n"},"lagEnabled":{"type":"boolean","description":"Boolean value to enable the created port with Link Aggregation Groups\n"},"location":{"$ref":"#/types/equinix:fabric/PortLocation:PortLocation","description":"Location details for the port order\n"},"name":{"type":"string","description":"Designated name of the port\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/PortNotification:PortNotification"},"description":"List of notification types and the registered users to receive those notification types\n"},"order":{"$ref":"#/types/equinix:fabric/PortOrder:PortOrder","description":"Details of the Port Order such as purchaseOrder details and signature\n"},"physicalPorts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/PortPhysicalPort:PortPhysicalPort"},"description":"Physical ports that will implement this port order\n"},"physicalPortsCount":{"type":"integer","description":"Number of physical ports in the Port Order\n"},"physicalPortsSpeed":{"type":"integer","description":"Physical Ports Speed in Mbps\n"},"physicalPortsType":{"type":"string","description":"Physical Ports Type\n"},"project":{"$ref":"#/types/equinix:fabric/PortProject:PortProject","description":"Port order project details\n"},"redundancy":{"$ref":"#/types/equinix:fabric/PortRedundancy:PortRedundancy","description":"Port redundancy settings\n"},"settings":{"$ref":"#/types/equinix:fabric/PortSettings:PortSettings","description":"Port order configuration settings\n"},"state":{"type":"string","description":"Value representing provisioning status for the port resource\n"},"timeouts":{"$ref":"#/types/equinix:fabric/PortTimeouts:PortTimeouts"},"type":{"type":"string","description":"Type of the port order request\n"},"uuid":{"type":"string","description":"Equinix assigned unique identifier of the port resource\n"}},"type":"object"}},"equinix:fabric/precisionTimeService:PrecisionTimeService":{"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric Precision Time Service\n\nAdditional Documentation:\n* API: https://docs.equinix.com/en-us/Content/KnowledgeCenter/Fabric/API-Reference/API-Precision-Time.htm\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.PrecisionTimeService;\nimport com.pulumi.equinix.fabric.PrecisionTimeServiceArgs;\nimport com.pulumi.equinix.fabric.inputs.PrecisionTimeServicePackageArgs;\nimport com.pulumi.equinix.fabric.inputs.PrecisionTimeServiceConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.PrecisionTimeServiceIpv4Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var ptp = new PrecisionTimeService(\"ptp\", PrecisionTimeServiceArgs.builder()\n            .type(\"PTP\")\n            .package_(PrecisionTimeServicePackageArgs.builder()\n                .code(\"PTP_STANDARD\")\n                .build())\n            .connections(PrecisionTimeServiceConnectionArgs.builder()\n                .uuid(\"\u003cconnection_id\u003e\")\n                .build())\n            .ipv4(PrecisionTimeServiceIpv4Args.builder()\n                .primary(\"191.168.254.241\")\n                .secondary(\"191.168.254.242\")\n                .network_mask(\"255.255.255.240\")\n                .default_gateway(\"191.168.254.254\")\n                .build())\n            .build());\n\n        ctx.export(\"eptServiceId\", ptp.id());\n        ctx.export(\"eptServiceName\", ptp.name());\n        ctx.export(\"eptServiceState\", ptp.state());\n        ctx.export(\"eptServiceType\", ptp.type());\n        ctx.export(\"eptServiceConnection\", ptp.connections());\n        ctx.export(\"eptServiceIpv4\", ptp.ipv4());\n    }\n}\n```\n```yaml\nresources:\n  ptp:\n    type: equinix:fabric:PrecisionTimeService\n    properties:\n      type: PTP\n      package:\n        code: PTP_STANDARD\n      connections:\n        - uuid: \u003cconnection_id\u003e\n      ipv4:\n        primary: 191.168.254.241\n        secondary: 191.168.254.242\n        network_mask: 255.255.255.240\n        default_gateway: 191.168.254.254\noutputs:\n  eptServiceId: ${ptp.id}\n  eptServiceName: ${ptp.name}\n  eptServiceState: ${ptp.state}\n  eptServiceType: ${ptp.type}\n  eptServiceConnection: ${ptp.connections}\n  eptServiceIpv4: ${ptp.ipv4}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"account":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceAccount:PrecisionTimeServiceAccount","description":"Equinix User Account associated with Precision Time Service\n"},"changeLog":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceChangeLog:PrecisionTimeServiceChangeLog","description":"Details of the last change on the route aggregation resource\n"},"connections":{"type":"array","items":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceConnection:PrecisionTimeServiceConnection"},"description":"An array of objects with unique identifiers of connections.\n"},"href":{"type":"string","description":"Equinix generated Portal link for the created Precision Time Service\n"},"ipv4":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceIpv4:PrecisionTimeServiceIpv4","description":"An object that has Network IP Configurations for Timing Master Servers.\n"},"name":{"type":"string","description":"Name of Precision Time Service. Applicable values: Maximum: 24 characters; Allowed characters: alpha-numeric, hyphens ('-') and underscores ('_')\n"},"ntpAdvancedConfigurations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceNtpAdvancedConfiguration:PrecisionTimeServiceNtpAdvancedConfiguration"},"description":"NTP Advanced configuration\n"},"operation":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceOperation:PrecisionTimeServiceOperation","description":"Precision Time Service Operation\n"},"order":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceOrder:PrecisionTimeServiceOrder","description":"Precision Time Order\n"},"package":{"$ref":"#/types/equinix:fabric/PrecisionTimeServicePackage:PrecisionTimeServicePackage","description":"Precision Time Service Package Details\n"},"precisionTimePrice":{"$ref":"#/types/equinix:fabric/PrecisionTimeServicePrecisionTimePrice:PrecisionTimeServicePrecisionTimePrice","description":"Precision Time Service Price\n"},"project":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceProject:PrecisionTimeServiceProject","description":"Equinix Project attribute object\n"},"ptpAdvancedConfiguration":{"$ref":"#/types/equinix:fabric/PrecisionTimeServicePtpAdvancedConfiguration:PrecisionTimeServicePtpAdvancedConfiguration","description":"PTP Advanced Configuration\n"},"state":{"type":"string","description":"Indicator of the state of this Precision Time Service\n"},"timeouts":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceTimeouts:PrecisionTimeServiceTimeouts"},"type":{"type":"string","description":"Choose type of Precision Time Service\n"},"uuid":{"type":"string","description":"Equinix generated id for the Precision Time Service\n"}},"required":["account","changeLog","connections","href","ipv4","name","ntpAdvancedConfigurations","operation","order","package","precisionTimePrice","project","ptpAdvancedConfiguration","state","type","uuid"],"inputProperties":{"connections":{"type":"array","items":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceConnection:PrecisionTimeServiceConnection"},"description":"An array of objects with unique identifiers of connections.\n"},"ipv4":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceIpv4:PrecisionTimeServiceIpv4","description":"An object that has Network IP Configurations for Timing Master Servers.\n"},"name":{"type":"string","description":"Name of Precision Time Service. Applicable values: Maximum: 24 characters; Allowed characters: alpha-numeric, hyphens ('-') and underscores ('_')\n"},"ntpAdvancedConfigurations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceNtpAdvancedConfiguration:PrecisionTimeServiceNtpAdvancedConfiguration"},"description":"NTP Advanced configuration\n"},"package":{"$ref":"#/types/equinix:fabric/PrecisionTimeServicePackage:PrecisionTimeServicePackage","description":"Precision Time Service Package Details\n"},"ptpAdvancedConfiguration":{"$ref":"#/types/equinix:fabric/PrecisionTimeServicePtpAdvancedConfiguration:PrecisionTimeServicePtpAdvancedConfiguration","description":"PTP Advanced Configuration\n"},"timeouts":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceTimeouts:PrecisionTimeServiceTimeouts"},"type":{"type":"string","description":"Choose type of Precision Time Service\n"}},"requiredInputs":["connections","ipv4","package","type"],"stateInputs":{"description":"Input properties used for looking up and filtering PrecisionTimeService resources.\n","properties":{"account":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceAccount:PrecisionTimeServiceAccount","description":"Equinix User Account associated with Precision Time Service\n"},"changeLog":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceChangeLog:PrecisionTimeServiceChangeLog","description":"Details of the last change on the route aggregation resource\n"},"connections":{"type":"array","items":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceConnection:PrecisionTimeServiceConnection"},"description":"An array of objects with unique identifiers of connections.\n"},"href":{"type":"string","description":"Equinix generated Portal link for the created Precision Time Service\n"},"ipv4":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceIpv4:PrecisionTimeServiceIpv4","description":"An object that has Network IP Configurations for Timing Master Servers.\n"},"name":{"type":"string","description":"Name of Precision Time Service. Applicable values: Maximum: 24 characters; Allowed characters: alpha-numeric, hyphens ('-') and underscores ('_')\n"},"ntpAdvancedConfigurations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceNtpAdvancedConfiguration:PrecisionTimeServiceNtpAdvancedConfiguration"},"description":"NTP Advanced configuration\n"},"operation":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceOperation:PrecisionTimeServiceOperation","description":"Precision Time Service Operation\n"},"order":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceOrder:PrecisionTimeServiceOrder","description":"Precision Time Order\n"},"package":{"$ref":"#/types/equinix:fabric/PrecisionTimeServicePackage:PrecisionTimeServicePackage","description":"Precision Time Service Package Details\n"},"precisionTimePrice":{"$ref":"#/types/equinix:fabric/PrecisionTimeServicePrecisionTimePrice:PrecisionTimeServicePrecisionTimePrice","description":"Precision Time Service Price\n"},"project":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceProject:PrecisionTimeServiceProject","description":"Equinix Project attribute object\n"},"ptpAdvancedConfiguration":{"$ref":"#/types/equinix:fabric/PrecisionTimeServicePtpAdvancedConfiguration:PrecisionTimeServicePtpAdvancedConfiguration","description":"PTP Advanced Configuration\n"},"state":{"type":"string","description":"Indicator of the state of this Precision Time Service\n"},"timeouts":{"$ref":"#/types/equinix:fabric/PrecisionTimeServiceTimeouts:PrecisionTimeServiceTimeouts"},"type":{"type":"string","description":"Choose type of Precision Time Service\n"},"uuid":{"type":"string","description":"Equinix generated id for the Precision Time Service\n"}},"type":"object"}},"equinix:fabric/routeAggregation:RouteAggregation":{"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric Route Aggregation\n\nAdditional Documentation:\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Route-Aggregations\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.RouteAggregation;\nimport com.pulumi.equinix.fabric.RouteAggregationArgs;\nimport com.pulumi.equinix.fabric.inputs.RouteAggregationProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var new_ra = new RouteAggregation(\"new-ra\", RouteAggregationArgs.builder()\n            .description(\"Test aggregation\")\n            .project(RouteAggregationProjectArgs.builder()\n                .project_id(\"776847000642406\")\n                .build())\n            .type(\"BGP_IPv4_PREFIX_AGGREGATION\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  new-ra:\n    type: equinix:fabric:RouteAggregation\n    properties:\n      description: Test aggregation\n      project:\n        project_id: '776847000642406'\n      type: BGP_IPv4_PREFIX_AGGREGATION\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"change":{"$ref":"#/types/equinix:fabric/RouteAggregationChange:RouteAggregationChange","description":"Current state of latest Route Aggregation change\n"},"changeLog":{"$ref":"#/types/equinix:fabric/RouteAggregationChangeLog:RouteAggregationChangeLog","description":"Details of the last change on the route aggregation resource\n"},"connectionsCount":{"type":"integer","description":"Number of Connections attached to route aggregation\n"},"description":{"type":"string","description":"Customer-provided route aggregation description\n"},"href":{"type":"string","description":"Equinix auto generated URI to the route aggregation resource\n"},"name":{"type":"string","description":"Customer provided name of the route aggregation\n"},"project":{"$ref":"#/types/equinix:fabric/RouteAggregationProject:RouteAggregationProject","description":"Equinix Project attribute object\n"},"rulesCount":{"type":"integer","description":"Number of Rules attached to route aggregation\n"},"state":{"type":"string","description":"Value representing provisioning status for the route aggregation resource\n"},"timeouts":{"$ref":"#/types/equinix:fabric/RouteAggregationTimeouts:RouteAggregationTimeouts"},"type":{"type":"string","description":"Equinix defined Route Aggregation Type; BGP*IPv4*PREFIX*AGGREGATION, BGP*IPv6*PREFIX*AGGREGATION\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for the route aggregation resource\n"}},"required":["change","changeLog","connectionsCount","href","name","project","rulesCount","state","type","uuid"],"inputProperties":{"description":{"type":"string","description":"Customer-provided route aggregation description\n"},"name":{"type":"string","description":"Customer provided name of the route aggregation\n"},"project":{"$ref":"#/types/equinix:fabric/RouteAggregationProject:RouteAggregationProject","description":"Equinix Project attribute object\n"},"timeouts":{"$ref":"#/types/equinix:fabric/RouteAggregationTimeouts:RouteAggregationTimeouts"},"type":{"type":"string","description":"Equinix defined Route Aggregation Type; BGP*IPv4*PREFIX*AGGREGATION, BGP*IPv6*PREFIX*AGGREGATION\n"}},"requiredInputs":["project","type"],"stateInputs":{"description":"Input properties used for looking up and filtering RouteAggregation resources.\n","properties":{"change":{"$ref":"#/types/equinix:fabric/RouteAggregationChange:RouteAggregationChange","description":"Current state of latest Route Aggregation change\n"},"changeLog":{"$ref":"#/types/equinix:fabric/RouteAggregationChangeLog:RouteAggregationChangeLog","description":"Details of the last change on the route aggregation resource\n"},"connectionsCount":{"type":"integer","description":"Number of Connections attached to route aggregation\n"},"description":{"type":"string","description":"Customer-provided route aggregation description\n"},"href":{"type":"string","description":"Equinix auto generated URI to the route aggregation resource\n"},"name":{"type":"string","description":"Customer provided name of the route aggregation\n"},"project":{"$ref":"#/types/equinix:fabric/RouteAggregationProject:RouteAggregationProject","description":"Equinix Project attribute object\n"},"rulesCount":{"type":"integer","description":"Number of Rules attached to route aggregation\n"},"state":{"type":"string","description":"Value representing provisioning status for the route aggregation resource\n"},"timeouts":{"$ref":"#/types/equinix:fabric/RouteAggregationTimeouts:RouteAggregationTimeouts"},"type":{"type":"string","description":"Equinix defined Route Aggregation Type; BGP*IPv4*PREFIX*AGGREGATION, BGP*IPv6*PREFIX*AGGREGATION\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for the route aggregation resource\n"}},"type":"object"}},"equinix:fabric/routeAggregationRule:RouteAggregationRule":{"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric Route Aggregation \n\nAdditional Documentation:\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Route-Aggregations\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst raRule = new equinix.fabric.RouteAggregationRule(\"raRule\", {\n    routeAggregationId: \"\u003croute_aggregation_id\u003e\",\n    description: \"Route aggregation rule\",\n    prefix: \"192.168.0.0/24\",\n});\nexport const routeAggregationRuleName = raRule.name;\nexport const routeAggregationRuleDescription = raRule.description;\nexport const routeAggregationRuleType = raRule.type;\nexport const routeAggregationRulePrefix = raRule.prefix;\nexport const routeAggregationRuleState = raRule.state;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nra_rule = equinix.fabric.RouteAggregationRule(\"raRule\",\n    route_aggregation_id=\"\u003croute_aggregation_id\u003e\",\n    description=\"Route aggregation rule\",\n    prefix=\"192.168.0.0/24\")\npulumi.export(\"routeAggregationRuleName\", ra_rule.name)\npulumi.export(\"routeAggregationRuleDescription\", ra_rule.description)\npulumi.export(\"routeAggregationRuleType\", ra_rule.type)\npulumi.export(\"routeAggregationRulePrefix\", ra_rule.prefix)\npulumi.export(\"routeAggregationRuleState\", ra_rule.state)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var raRule = new Equinix.Fabric.RouteAggregationRule(\"raRule\", new()\n    {\n        RouteAggregationId = \"\u003croute_aggregation_id\u003e\",\n        Description = \"Route aggregation rule\",\n        Prefix = \"192.168.0.0/24\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"routeAggregationRuleName\"] = raRule.Name,\n        [\"routeAggregationRuleDescription\"] = raRule.Description,\n        [\"routeAggregationRuleType\"] = raRule.Type,\n        [\"routeAggregationRulePrefix\"] = raRule.Prefix,\n        [\"routeAggregationRuleState\"] = raRule.State,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\traRule, err := fabric.NewRouteAggregationRule(ctx, \"raRule\", \u0026fabric.RouteAggregationRuleArgs{\n\t\t\tRouteAggregationId: pulumi.String(\"\u003croute_aggregation_id\u003e\"),\n\t\t\tDescription:        pulumi.String(\"Route aggregation rule\"),\n\t\t\tPrefix:             pulumi.String(\"192.168.0.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"routeAggregationRuleName\", raRule.Name)\n\t\tctx.Export(\"routeAggregationRuleDescription\", raRule.Description)\n\t\tctx.Export(\"routeAggregationRuleType\", raRule.Type)\n\t\tctx.Export(\"routeAggregationRulePrefix\", raRule.Prefix)\n\t\tctx.Export(\"routeAggregationRuleState\", raRule.State)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.RouteAggregationRule;\nimport com.pulumi.equinix.fabric.RouteAggregationRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var raRule = new RouteAggregationRule(\"raRule\", RouteAggregationRuleArgs.builder()\n            .routeAggregationId(\"\u003croute_aggregation_id\u003e\")\n            .description(\"Route aggregation rule\")\n            .prefix(\"192.168.0.0/24\")\n            .build());\n\n        ctx.export(\"routeAggregationRuleName\", raRule.name());\n        ctx.export(\"routeAggregationRuleDescription\", raRule.description());\n        ctx.export(\"routeAggregationRuleType\", raRule.type());\n        ctx.export(\"routeAggregationRulePrefix\", raRule.prefix());\n        ctx.export(\"routeAggregationRuleState\", raRule.state());\n    }\n}\n```\n```yaml\nresources:\n  raRule:\n    type: equinix:fabric:RouteAggregationRule\n    properties:\n      routeAggregationId: \u003croute_aggregation_id\u003e\n      description: Route aggregation rule\n      prefix: 192.168.0.0/24\noutputs:\n  routeAggregationRuleName: ${raRule.name}\n  routeAggregationRuleDescription: ${raRule.description}\n  routeAggregationRuleType: ${raRule.type}\n  routeAggregationRulePrefix: ${raRule.prefix}\n  routeAggregationRuleState: ${raRule.state}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"change":{"$ref":"#/types/equinix:fabric/RouteAggregationRuleChange:RouteAggregationRuleChange","description":"Current state of latest route aggregation rule change\n"},"changeLog":{"$ref":"#/types/equinix:fabric/RouteAggregationRuleChangeLog:RouteAggregationRuleChangeLog","description":"Details of the last change on the stream resource\n"},"description":{"type":"string","description":"Customer-provided route aggregation rule description\n"},"href":{"type":"string","description":"Equinix auto generated URI to the route aggregation rule resource\n"},"name":{"type":"string","description":"Customer provided name of the route aggregation rule\n"},"prefix":{"type":"string","description":"Customer-provided route aggregation rule prefix\n"},"routeAggregationId":{"type":"string","description":"UUID of the Route Aggregation to apply this Rule to\n"},"state":{"type":"string","description":"Value representing provisioning status for the route aggregation rule resource\n"},"timeouts":{"$ref":"#/types/equinix:fabric/RouteAggregationRuleTimeouts:RouteAggregationRuleTimeouts"},"type":{"type":"string","description":"Equinix defined Route Aggregation Type; BGP*IPv4*PREFIX*AGGREGATION, BGP*IPv6*PREFIX*AGGREGATION\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for the route aggregation rule resource\n"}},"required":["change","changeLog","href","name","prefix","routeAggregationId","state","type","uuid"],"inputProperties":{"description":{"type":"string","description":"Customer-provided route aggregation rule description\n"},"name":{"type":"string","description":"Customer provided name of the route aggregation rule\n"},"prefix":{"type":"string","description":"Customer-provided route aggregation rule prefix\n"},"routeAggregationId":{"type":"string","description":"UUID of the Route Aggregation to apply this Rule to\n"},"timeouts":{"$ref":"#/types/equinix:fabric/RouteAggregationRuleTimeouts:RouteAggregationRuleTimeouts"}},"requiredInputs":["prefix","routeAggregationId"],"stateInputs":{"description":"Input properties used for looking up and filtering RouteAggregationRule resources.\n","properties":{"change":{"$ref":"#/types/equinix:fabric/RouteAggregationRuleChange:RouteAggregationRuleChange","description":"Current state of latest route aggregation rule change\n"},"changeLog":{"$ref":"#/types/equinix:fabric/RouteAggregationRuleChangeLog:RouteAggregationRuleChangeLog","description":"Details of the last change on the stream resource\n"},"description":{"type":"string","description":"Customer-provided route aggregation rule description\n"},"href":{"type":"string","description":"Equinix auto generated URI to the route aggregation rule resource\n"},"name":{"type":"string","description":"Customer provided name of the route aggregation rule\n"},"prefix":{"type":"string","description":"Customer-provided route aggregation rule prefix\n"},"routeAggregationId":{"type":"string","description":"UUID of the Route Aggregation to apply this Rule to\n"},"state":{"type":"string","description":"Value representing provisioning status for the route aggregation rule resource\n"},"timeouts":{"$ref":"#/types/equinix:fabric/RouteAggregationRuleTimeouts:RouteAggregationRuleTimeouts"},"type":{"type":"string","description":"Equinix defined Route Aggregation Type; BGP*IPv4*PREFIX*AGGREGATION, BGP*IPv6*PREFIX*AGGREGATION\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for the route aggregation rule resource\n"}},"type":"object"}},"equinix:fabric/routeFilter:RouteFilter":{"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric Route Filter Policy\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-route-filters.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#route-filters\n\n","properties":{"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/RouteFilterChangeLog:RouteFilterChangeLog"}},"changes":{"type":"array","items":{"$ref":"#/types/equinix:fabric/RouteFilterChange:RouteFilterChange"},"description":"An object with the details of the previous change applied on the Route Filter\n"},"connectionsCount":{"type":"integer","description":"The number of Fabric Connections that this Route Filter is attached to\n"},"description":{"type":"string","description":"Optional description to add to the Route Filter you will be creating\n"},"href":{"type":"string","description":"Route filter URI\n"},"name":{"type":"string","description":"Name of the Route Filter\n"},"notMatchedRuleAction":{"type":"string","description":"The action that will be taken on ip ranges that don't match the rules present within the Route Filter\n"},"project":{"$ref":"#/types/equinix:fabric/RouteFilterProject:RouteFilterProject","description":"The Project object that contains project_id and href that is related to the Fabric Project containing connections the Route Filter can be attached to\n"},"rulesCount":{"type":"integer","description":"The number of Route Filter Rules attached to this Route Filter\n"},"state":{"type":"string","description":"State of the Route Filter in its lifecycle\n"},"type":{"type":"string","description":"Route Filter Type. One of [ \"BGP*IPv4*PREFIX*FILTER\", \"BGP*IPv6*PREFIX*FILTER\" ]\n"},"uuid":{"type":"string","description":"Equinix Assigned ID for Route Filter\n"}},"required":["changes","changeLogs","connectionsCount","description","href","name","notMatchedRuleAction","project","rulesCount","state","type","uuid"],"inputProperties":{"description":{"type":"string","description":"Optional description to add to the Route Filter you will be creating\n"},"name":{"type":"string","description":"Name of the Route Filter\n"},"project":{"$ref":"#/types/equinix:fabric/RouteFilterProject:RouteFilterProject","description":"The Project object that contains project_id and href that is related to the Fabric Project containing connections the Route Filter can be attached to\n"},"type":{"type":"string","description":"Route Filter Type. One of [ \"BGP*IPv4*PREFIX*FILTER\", \"BGP*IPv6*PREFIX*FILTER\" ]\n"}},"requiredInputs":["project","type"],"stateInputs":{"description":"Input properties used for looking up and filtering RouteFilter resources.\n","properties":{"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/RouteFilterChangeLog:RouteFilterChangeLog"}},"changes":{"type":"array","items":{"$ref":"#/types/equinix:fabric/RouteFilterChange:RouteFilterChange"},"description":"An object with the details of the previous change applied on the Route Filter\n"},"connectionsCount":{"type":"integer","description":"The number of Fabric Connections that this Route Filter is attached to\n"},"description":{"type":"string","description":"Optional description to add to the Route Filter you will be creating\n"},"href":{"type":"string","description":"Route filter URI\n"},"name":{"type":"string","description":"Name of the Route Filter\n"},"notMatchedRuleAction":{"type":"string","description":"The action that will be taken on ip ranges that don't match the rules present within the Route Filter\n"},"project":{"$ref":"#/types/equinix:fabric/RouteFilterProject:RouteFilterProject","description":"The Project object that contains project_id and href that is related to the Fabric Project containing connections the Route Filter can be attached to\n"},"rulesCount":{"type":"integer","description":"The number of Route Filter Rules attached to this Route Filter\n"},"state":{"type":"string","description":"State of the Route Filter in its lifecycle\n"},"type":{"type":"string","description":"Route Filter Type. One of [ \"BGP*IPv4*PREFIX*FILTER\", \"BGP*IPv6*PREFIX*FILTER\" ]\n"},"uuid":{"type":"string","description":"Equinix Assigned ID for Route Filter\n"}},"type":"object"}},"equinix:fabric/routeFilterRule:RouteFilterRule":{"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric Route Filter Rule\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-route-filters.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#route-filter-rules\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst rfRule = new equinix.fabric.RouteFilterRule(\"rfRule\", {\n    routeFilterId: \"\u003croute_filter_policy_id\u003e\",\n    prefix: \"192.168.0.0/24\",\n    prefixMatch: \"exact\",\n    description: \"Route Filter Rule for X Purpose\",\n});\nexport const routeFilterRuleId = rfRule.id;\nexport const routeFilterId = rfRule.routeFilterId;\nexport const routeFilterRulePrefix = rfRule.prefix;\nexport const routeFilterRulePrefixMatch = rfRule.prefixMatch;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nrf_rule = equinix.fabric.RouteFilterRule(\"rfRule\",\n    route_filter_id=\"\u003croute_filter_policy_id\u003e\",\n    prefix=\"192.168.0.0/24\",\n    prefix_match=\"exact\",\n    description=\"Route Filter Rule for X Purpose\")\npulumi.export(\"routeFilterRuleId\", rf_rule.id)\npulumi.export(\"routeFilterId\", rf_rule.route_filter_id)\npulumi.export(\"routeFilterRulePrefix\", rf_rule.prefix)\npulumi.export(\"routeFilterRulePrefixMatch\", rf_rule.prefix_match)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rfRule = new Equinix.Fabric.RouteFilterRule(\"rfRule\", new()\n    {\n        RouteFilterId = \"\u003croute_filter_policy_id\u003e\",\n        Prefix = \"192.168.0.0/24\",\n        PrefixMatch = \"exact\",\n        Description = \"Route Filter Rule for X Purpose\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"routeFilterRuleId\"] = rfRule.Id,\n        [\"routeFilterId\"] = rfRule.RouteFilterId,\n        [\"routeFilterRulePrefix\"] = rfRule.Prefix,\n        [\"routeFilterRulePrefixMatch\"] = rfRule.PrefixMatch,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trfRule, err := fabric.NewRouteFilterRule(ctx, \"rfRule\", \u0026fabric.RouteFilterRuleArgs{\n\t\t\tRouteFilterId: pulumi.String(\"\u003croute_filter_policy_id\u003e\"),\n\t\t\tPrefix:        pulumi.String(\"192.168.0.0/24\"),\n\t\t\tPrefixMatch:   pulumi.String(\"exact\"),\n\t\t\tDescription:   pulumi.String(\"Route Filter Rule for X Purpose\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"routeFilterRuleId\", rfRule.ID())\n\t\tctx.Export(\"routeFilterId\", rfRule.RouteFilterId)\n\t\tctx.Export(\"routeFilterRulePrefix\", rfRule.Prefix)\n\t\tctx.Export(\"routeFilterRulePrefixMatch\", rfRule.PrefixMatch)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.RouteFilterRule;\nimport com.pulumi.equinix.fabric.RouteFilterRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var rfRule = new RouteFilterRule(\"rfRule\", RouteFilterRuleArgs.builder()\n            .routeFilterId(\"\u003croute_filter_policy_id\u003e\")\n            .prefix(\"192.168.0.0/24\")\n            .prefixMatch(\"exact\")\n            .description(\"Route Filter Rule for X Purpose\")\n            .build());\n\n        ctx.export(\"routeFilterRuleId\", rfRule.id());\n        ctx.export(\"routeFilterId\", rfRule.routeFilterId());\n        ctx.export(\"routeFilterRulePrefix\", rfRule.prefix());\n        ctx.export(\"routeFilterRulePrefixMatch\", rfRule.prefixMatch());\n    }\n}\n```\n```yaml\nresources:\n  rfRule:\n    type: equinix:fabric:RouteFilterRule\n    properties:\n      routeFilterId: \u003croute_filter_policy_id\u003e\n      prefix: 192.168.0.0/24\n      prefixMatch: exact\n      description: Route Filter Rule for X Purpose\noutputs:\n  routeFilterRuleId: ${rfRule.id}\n  routeFilterId: ${rfRule.routeFilterId}\n  routeFilterRulePrefix: ${rfRule.prefix}\n  routeFilterRulePrefixMatch: ${rfRule.prefixMatch}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"action":{"type":"string","description":"Action that will be taken on IP Addresses matching the rule\n"},"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/RouteFilterRuleChangeLog:RouteFilterRuleChangeLog"}},"changes":{"type":"array","items":{"$ref":"#/types/equinix:fabric/RouteFilterRuleChange:RouteFilterRuleChange"},"description":"An object with the details of the previous change applied on the Route Filter\n"},"description":{"type":"string","description":"Optional description to add to the Route Filter you will be creating\n"},"href":{"type":"string","description":"Route filter rules URI\n"},"name":{"type":"string","description":"Name of the Route Filter\n"},"prefix":{"type":"string","description":"IP Address Prefix to Filter on\n"},"prefixMatch":{"type":"string","description":"Prefix matching operator. One of [ orlonger, exact ] Default: \"orlonger\"\n"},"routeFilterId":{"type":"string","description":"UUID of the Route Filter Policy to apply this Rule to\n"},"state":{"type":"string","description":"State of the Route Filter Rule in its lifecycle\n"},"type":{"type":"string","description":"Route Filter Type. One of [ BGP*IPv4*PREFIX*FILTER*RULE, BGP*IPv6*PREFIX*FILTER*RULE ]\n"},"uuid":{"type":"string","description":"Equinix Assigned ID for Route Filter Rule\n"}},"required":["action","changes","changeLogs","description","href","name","prefix","prefixMatch","routeFilterId","state","type","uuid"],"inputProperties":{"description":{"type":"string","description":"Optional description to add to the Route Filter you will be creating\n"},"name":{"type":"string","description":"Name of the Route Filter\n"},"prefix":{"type":"string","description":"IP Address Prefix to Filter on\n"},"prefixMatch":{"type":"string","description":"Prefix matching operator. One of [ orlonger, exact ] Default: \"orlonger\"\n"},"routeFilterId":{"type":"string","description":"UUID of the Route Filter Policy to apply this Rule to\n"}},"requiredInputs":["prefix","routeFilterId"],"stateInputs":{"description":"Input properties used for looking up and filtering RouteFilterRule resources.\n","properties":{"action":{"type":"string","description":"Action that will be taken on IP Addresses matching the rule\n"},"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/RouteFilterRuleChangeLog:RouteFilterRuleChangeLog"}},"changes":{"type":"array","items":{"$ref":"#/types/equinix:fabric/RouteFilterRuleChange:RouteFilterRuleChange"},"description":"An object with the details of the previous change applied on the Route Filter\n"},"description":{"type":"string","description":"Optional description to add to the Route Filter you will be creating\n"},"href":{"type":"string","description":"Route filter rules URI\n"},"name":{"type":"string","description":"Name of the Route Filter\n"},"prefix":{"type":"string","description":"IP Address Prefix to Filter on\n"},"prefixMatch":{"type":"string","description":"Prefix matching operator. One of [ orlonger, exact ] Default: \"orlonger\"\n"},"routeFilterId":{"type":"string","description":"UUID of the Route Filter Policy to apply this Rule to\n"},"state":{"type":"string","description":"State of the Route Filter Rule in its lifecycle\n"},"type":{"type":"string","description":"Route Filter Type. One of [ BGP*IPv4*PREFIX*FILTER*RULE, BGP*IPv6*PREFIX*FILTER*RULE ]\n"},"uuid":{"type":"string","description":"Equinix Assigned ID for Route Filter Rule\n"}},"type":"object"}},"equinix:fabric/routingProtocol:RoutingProtocol":{"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric connection\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/FCR/connections/FCR-connect-azureQC.htm#ConfigureRoutingDetailsintheFabricPortal\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#routing-protocols\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n### example 1\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst direct = new equinix.fabric.RoutingProtocol(\"direct\", {\n    connectionUuid: \"\u003csome_id\u003e\",\n    type: \"DIRECT\",\n    name: \"direct_rp\",\n    directIpv4: {\n        equinixIfaceIp: \"190.1.1.1/30\",\n    },\n    directIpv6: {\n        equinixIfaceIp: \"190::1:1/126\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ndirect = equinix.fabric.RoutingProtocol(\"direct\",\n    connection_uuid=\"\u003csome_id\u003e\",\n    type=\"DIRECT\",\n    name=\"direct_rp\",\n    direct_ipv4={\n        \"equinix_iface_ip\": \"190.1.1.1/30\",\n    },\n    direct_ipv6={\n        \"equinix_iface_ip\": \"190::1:1/126\",\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewRoutingProtocol(ctx, \"direct\", \u0026fabric.RoutingProtocolArgs{\n\t\t\tConnectionUuid: pulumi.String(\"\u003csome_id\u003e\"),\n\t\t\tType:           pulumi.String(\"DIRECT\"),\n\t\t\tName:           pulumi.String(\"direct_rp\"),\n\t\t\tDirectIpv4: \u0026fabric.RoutingProtocolDirectIpv4Args{\n\t\t\t\tEquinixIfaceIp: pulumi.String(\"190.1.1.1/30\"),\n\t\t\t},\n\t\t\tDirectIpv6: \u0026fabric.RoutingProtocolDirectIpv6Args{\n\t\t\t\tEquinixIfaceIp: pulumi.String(\"190::1:1/126\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var direct = new Equinix.Fabric.RoutingProtocol(\"direct\", new()\n    {\n        ConnectionUuid = \"\u003csome_id\u003e\",\n        Type = \"DIRECT\",\n        Name = \"direct_rp\",\n        DirectIpv4 = new Equinix.Fabric.Inputs.RoutingProtocolDirectIpv4Args\n        {\n            EquinixIfaceIp = \"190.1.1.1/30\",\n        },\n        DirectIpv6 = new Equinix.Fabric.Inputs.RoutingProtocolDirectIpv6Args\n        {\n            EquinixIfaceIp = \"190::1:1/126\",\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.RoutingProtocol;\nimport com.pulumi.equinix.fabric.RoutingProtocolArgs;\nimport com.pulumi.equinix.fabric.inputs.RoutingProtocolDirectIpv4Args;\nimport com.pulumi.equinix.fabric.inputs.RoutingProtocolDirectIpv6Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var direct = new RoutingProtocol(\"direct\", RoutingProtocolArgs.builder()\n            .connectionUuid(\"\u003csome_id\u003e\")\n            .type(\"DIRECT\")\n            .name(\"direct_rp\")\n            .directIpv4(RoutingProtocolDirectIpv4Args.builder()\n                .equinixIfaceIp(\"190.1.1.1/30\")\n                .build())\n            .directIpv6(RoutingProtocolDirectIpv6Args.builder()\n                .equinixIfaceIp(\"190::1:1/126\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  direct:\n    type: equinix:fabric:RoutingProtocol\n    properties:\n      connectionUuid: \u003csome_id\u003e\n      type: DIRECT\n      name: direct_rp\n      directIpv4:\n        equinixIfaceIp: 190.1.1.1/30\n      directIpv6:\n        equinixIfaceIp: 190::1:1/126\n```\n{{% /example %}}\n\n{{% example %}}\n### example 2\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst bgp = new equinix.fabric.RoutingProtocol(\"bgp\", {\n    connectionUuid: \"\u003csame_connection_id_as_first_equinix_fabric_routing_protocol\u003e\",\n    type: \"BGP\",\n    name: \"bgp_rp\",\n    bgpIpv4: {\n        customerPeerIp: \"190.1.1.2\",\n        enabled: true,\n    },\n    bgpIpv6: {\n        customerPeerIp: \"190::1:2\",\n        enabled: true,\n    },\n    customerAsn: 4532,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nbgp = equinix.fabric.RoutingProtocol(\"bgp\",\n    connection_uuid=\"\u003csame_connection_id_as_first_equinix_fabric_routing_protocol\u003e\",\n    type=\"BGP\",\n    name=\"bgp_rp\",\n    bgp_ipv4={\n        \"customer_peer_ip\": \"190.1.1.2\",\n        \"enabled\": True,\n    },\n    bgp_ipv6={\n        \"customer_peer_ip\": \"190::1:2\",\n        \"enabled\": True,\n    },\n    customer_asn=4532)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewRoutingProtocol(ctx, \"bgp\", \u0026fabric.RoutingProtocolArgs{\n\t\t\tConnectionUuid: pulumi.String(\"\u003csame_connection_id_as_first_equinix_fabric_routing_protocol\u003e\"),\n\t\t\tType:           pulumi.String(\"BGP\"),\n\t\t\tName:           pulumi.String(\"bgp_rp\"),\n\t\t\tBgpIpv4: \u0026fabric.RoutingProtocolBgpIpv4Args{\n\t\t\t\tCustomerPeerIp: pulumi.String(\"190.1.1.2\"),\n\t\t\t\tEnabled:        pulumi.Bool(true),\n\t\t\t},\n\t\t\tBgpIpv6: \u0026fabric.RoutingProtocolBgpIpv6Args{\n\t\t\t\tCustomerPeerIp: pulumi.String(\"190::1:2\"),\n\t\t\t\tEnabled:        pulumi.Bool(true),\n\t\t\t},\n\t\t\tCustomerAsn: pulumi.Int(4532),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var bgp = new Equinix.Fabric.RoutingProtocol(\"bgp\", new()\n    {\n        ConnectionUuid = \"\u003csame_connection_id_as_first_equinix_fabric_routing_protocol\u003e\",\n        Type = \"BGP\",\n        Name = \"bgp_rp\",\n        BgpIpv4 = new Equinix.Fabric.Inputs.RoutingProtocolBgpIpv4Args\n        {\n            CustomerPeerIp = \"190.1.1.2\",\n            Enabled = true,\n        },\n        BgpIpv6 = new Equinix.Fabric.Inputs.RoutingProtocolBgpIpv6Args\n        {\n            CustomerPeerIp = \"190::1:2\",\n            Enabled = true,\n        },\n        CustomerAsn = 4532,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.RoutingProtocol;\nimport com.pulumi.equinix.fabric.RoutingProtocolArgs;\nimport com.pulumi.equinix.fabric.inputs.RoutingProtocolBgpIpv4Args;\nimport com.pulumi.equinix.fabric.inputs.RoutingProtocolBgpIpv6Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var bgp = new RoutingProtocol(\"bgp\", RoutingProtocolArgs.builder()\n            .connectionUuid(\"\u003csame_connection_id_as_first_equinix_fabric_routing_protocol\u003e\")\n            .type(\"BGP\")\n            .name(\"bgp_rp\")\n            .bgpIpv4(RoutingProtocolBgpIpv4Args.builder()\n                .customerPeerIp(\"190.1.1.2\")\n                .enabled(true)\n                .build())\n            .bgpIpv6(RoutingProtocolBgpIpv6Args.builder()\n                .customerPeerIp(\"190::1:2\")\n                .enabled(true)\n                .build())\n            .customerAsn(4532)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  bgp:\n    type: equinix:fabric:RoutingProtocol\n    properties:\n      connectionUuid: \u003csame_connection_id_as_first_equinix_fabric_routing_protocol\u003e\n      type: BGP\n      name: bgp_rp\n      bgpIpv4:\n        customerPeerIp: 190.1.1.2\n        enabled: true\n      bgpIpv6:\n        customerPeerIp: 190::1:2\n        enabled: true\n      customerAsn: 4532\n```\n{{% /example %}}\n\n{{% example %}}\n### example 3\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst direct = new equinix.fabric.RoutingProtocol(\"direct\", {\n    connectionUuid: \"\u003csome_id\u003e\",\n    type: \"DIRECT\",\n    name: \"direct_rp\",\n    directIpv4: {\n        equinixIfaceIp: \"190.1.1.1/30\",\n    },\n    directIpv6: {\n        equinixIfaceIp: \"190::1:1/126\",\n    },\n});\nconst bgp = new equinix.fabric.RoutingProtocol(\"bgp\", {\n    connectionUuid: \"\u003csame_connection_id_as_first_equinix_fabric_routing_protocol\u003e\",\n    type: \"BGP\",\n    name: \"bgp_rp\",\n    bgpIpv4: {\n        customerPeerIp: \"190.1.1.2\",\n        enabled: true,\n    },\n    bgpIpv6: {\n        customerPeerIp: \"190::1:2\",\n        enabled: true,\n    },\n    customerAsn: 4532,\n}, {\n    dependsOn: [direct],\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ndirect = equinix.fabric.RoutingProtocol(\"direct\",\n    connection_uuid=\"\u003csome_id\u003e\",\n    type=\"DIRECT\",\n    name=\"direct_rp\",\n    direct_ipv4={\n        \"equinix_iface_ip\": \"190.1.1.1/30\",\n    },\n    direct_ipv6={\n        \"equinix_iface_ip\": \"190::1:1/126\",\n    })\nbgp = equinix.fabric.RoutingProtocol(\"bgp\",\n    connection_uuid=\"\u003csame_connection_id_as_first_equinix_fabric_routing_protocol\u003e\",\n    type=\"BGP\",\n    name=\"bgp_rp\",\n    bgp_ipv4={\n        \"customer_peer_ip\": \"190.1.1.2\",\n        \"enabled\": True,\n    },\n    bgp_ipv6={\n        \"customer_peer_ip\": \"190::1:2\",\n        \"enabled\": True,\n    },\n    customer_asn=4532,\n    opts = pulumi.ResourceOptions(depends_on=[direct]))\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdirect, err := fabric.NewRoutingProtocol(ctx, \"direct\", \u0026fabric.RoutingProtocolArgs{\n\t\t\tConnectionUuid: pulumi.String(\"\u003csome_id\u003e\"),\n\t\t\tType:           pulumi.String(\"DIRECT\"),\n\t\t\tName:           pulumi.String(\"direct_rp\"),\n\t\t\tDirectIpv4: \u0026fabric.RoutingProtocolDirectIpv4Args{\n\t\t\t\tEquinixIfaceIp: pulumi.String(\"190.1.1.1/30\"),\n\t\t\t},\n\t\t\tDirectIpv6: \u0026fabric.RoutingProtocolDirectIpv6Args{\n\t\t\t\tEquinixIfaceIp: pulumi.String(\"190::1:1/126\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = fabric.NewRoutingProtocol(ctx, \"bgp\", \u0026fabric.RoutingProtocolArgs{\n\t\t\tConnectionUuid: pulumi.String(\"\u003csame_connection_id_as_first_equinix_fabric_routing_protocol\u003e\"),\n\t\t\tType:           pulumi.String(\"BGP\"),\n\t\t\tName:           pulumi.String(\"bgp_rp\"),\n\t\t\tBgpIpv4: \u0026fabric.RoutingProtocolBgpIpv4Args{\n\t\t\t\tCustomerPeerIp: pulumi.String(\"190.1.1.2\"),\n\t\t\t\tEnabled:        pulumi.Bool(true),\n\t\t\t},\n\t\t\tBgpIpv6: \u0026fabric.RoutingProtocolBgpIpv6Args{\n\t\t\t\tCustomerPeerIp: pulumi.String(\"190::1:2\"),\n\t\t\t\tEnabled:        pulumi.Bool(true),\n\t\t\t},\n\t\t\tCustomerAsn: pulumi.Int(4532),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdirect,\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var direct = new Equinix.Fabric.RoutingProtocol(\"direct\", new()\n    {\n        ConnectionUuid = \"\u003csome_id\u003e\",\n        Type = \"DIRECT\",\n        Name = \"direct_rp\",\n        DirectIpv4 = new Equinix.Fabric.Inputs.RoutingProtocolDirectIpv4Args\n        {\n            EquinixIfaceIp = \"190.1.1.1/30\",\n        },\n        DirectIpv6 = new Equinix.Fabric.Inputs.RoutingProtocolDirectIpv6Args\n        {\n            EquinixIfaceIp = \"190::1:1/126\",\n        },\n    });\n\n    var bgp = new Equinix.Fabric.RoutingProtocol(\"bgp\", new()\n    {\n        ConnectionUuid = \"\u003csame_connection_id_as_first_equinix_fabric_routing_protocol\u003e\",\n        Type = \"BGP\",\n        Name = \"bgp_rp\",\n        BgpIpv4 = new Equinix.Fabric.Inputs.RoutingProtocolBgpIpv4Args\n        {\n            CustomerPeerIp = \"190.1.1.2\",\n            Enabled = true,\n        },\n        BgpIpv6 = new Equinix.Fabric.Inputs.RoutingProtocolBgpIpv6Args\n        {\n            CustomerPeerIp = \"190::1:2\",\n            Enabled = true,\n        },\n        CustomerAsn = 4532,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            direct,\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.RoutingProtocol;\nimport com.pulumi.equinix.fabric.RoutingProtocolArgs;\nimport com.pulumi.equinix.fabric.inputs.RoutingProtocolDirectIpv4Args;\nimport com.pulumi.equinix.fabric.inputs.RoutingProtocolDirectIpv6Args;\nimport com.pulumi.equinix.fabric.inputs.RoutingProtocolBgpIpv4Args;\nimport com.pulumi.equinix.fabric.inputs.RoutingProtocolBgpIpv6Args;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var direct = new RoutingProtocol(\"direct\", RoutingProtocolArgs.builder()\n            .connectionUuid(\"\u003csome_id\u003e\")\n            .type(\"DIRECT\")\n            .name(\"direct_rp\")\n            .directIpv4(RoutingProtocolDirectIpv4Args.builder()\n                .equinixIfaceIp(\"190.1.1.1/30\")\n                .build())\n            .directIpv6(RoutingProtocolDirectIpv6Args.builder()\n                .equinixIfaceIp(\"190::1:1/126\")\n                .build())\n            .build());\n\n        var bgp = new RoutingProtocol(\"bgp\", RoutingProtocolArgs.builder()\n            .connectionUuid(\"\u003csame_connection_id_as_first_equinix_fabric_routing_protocol\u003e\")\n            .type(\"BGP\")\n            .name(\"bgp_rp\")\n            .bgpIpv4(RoutingProtocolBgpIpv4Args.builder()\n                .customerPeerIp(\"190.1.1.2\")\n                .enabled(true)\n                .build())\n            .bgpIpv6(RoutingProtocolBgpIpv6Args.builder()\n                .customerPeerIp(\"190::1:2\")\n                .enabled(true)\n                .build())\n            .customerAsn(4532)\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(direct)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  direct:\n    type: equinix:fabric:RoutingProtocol\n    properties:\n      connectionUuid: \u003csome_id\u003e\n      type: DIRECT\n      name: direct_rp\n      directIpv4:\n        equinixIfaceIp: 190.1.1.1/30\n      directIpv6:\n        equinixIfaceIp: 190::1:1/126\n  bgp:\n    type: equinix:fabric:RoutingProtocol\n    properties:\n      connectionUuid: \u003csame_connection_id_as_first_equinix_fabric_routing_protocol\u003e\n      type: BGP\n      name: bgp_rp\n      bgpIpv4:\n        customerPeerIp: 190.1.1.2\n        enabled: true\n      bgpIpv6:\n        customerPeerIp: 190::1:2\n        enabled: true\n      customerAsn: 4532\n    options:\n      dependsOn:\n        - ${direct}\n```\n{{% /example %}}\n\n{{% /examples %}}","properties":{"asOverrideEnabled":{"type":"boolean","description":"Enable AS number override\n"},"bfd":{"$ref":"#/types/equinix:fabric/RoutingProtocolBfd:RoutingProtocolBfd","description":"Bidirectional Forwarding Detection\n"},"bgpAuthKey":{"type":"string","description":"BGP authorization key\n"},"bgpIpv4":{"$ref":"#/types/equinix:fabric/RoutingProtocolBgpIpv4:RoutingProtocolBgpIpv4","description":"Routing Protocol BGP IPv4\n"},"bgpIpv6":{"$ref":"#/types/equinix:fabric/RoutingProtocolBgpIpv6:RoutingProtocolBgpIpv6","description":"Routing Protocol BGP IPv6\n"},"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/RoutingProtocolChangeLog:RoutingProtocolChangeLog"},"description":"Captures Routing Protocol lifecycle change information\n"},"changes":{"type":"array","items":{"$ref":"#/types/equinix:fabric/RoutingProtocolChange:RoutingProtocolChange"},"description":"Routing Protocol configuration Changes\n"},"connectionUuid":{"type":"string","description":"Connection URI associated with Routing Protocol\n"},"customerAsn":{"type":"integer","description":"Customer-provided ASN\n"},"description":{"type":"string","description":"Customer-provided Fabric Routing Protocol description\n"},"directIpv4":{"$ref":"#/types/equinix:fabric/RoutingProtocolDirectIpv4:RoutingProtocolDirectIpv4","description":"Routing Protocol Direct IPv4\n"},"directIpv6":{"$ref":"#/types/equinix:fabric/RoutingProtocolDirectIpv6:RoutingProtocolDirectIpv6","description":"Routing Protocol Direct IPv6\n"},"equinixAsn":{"type":"integer","description":"Equinix ASN\n"},"href":{"type":"string","description":"Routing Protocol URI information\n"},"name":{"type":"string","description":"Routing Protocol name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"},"operations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/RoutingProtocolOperation:RoutingProtocolOperation"},"description":"Routing Protocol type-specific operational data\n"},"state":{"type":"string","description":"Routing Protocol overall state\n"},"type":{"type":"string","description":"Defines the routing protocol type like BGP or DIRECT\n"},"uuid":{"type":"string","description":"Equinix-assigned routing protocol identifier\n"}},"required":["asOverrideEnabled","bfd","bgpAuthKey","bgpIpv4","bgpIpv6","changes","changeLogs","connectionUuid","customerAsn","description","directIpv4","directIpv6","equinixAsn","href","name","operations","state","type","uuid"],"inputProperties":{"asOverrideEnabled":{"type":"boolean","description":"Enable AS number override\n"},"bfd":{"$ref":"#/types/equinix:fabric/RoutingProtocolBfd:RoutingProtocolBfd","description":"Bidirectional Forwarding Detection\n"},"bgpAuthKey":{"type":"string","description":"BGP authorization key\n"},"bgpIpv4":{"$ref":"#/types/equinix:fabric/RoutingProtocolBgpIpv4:RoutingProtocolBgpIpv4","description":"Routing Protocol BGP IPv4\n"},"bgpIpv6":{"$ref":"#/types/equinix:fabric/RoutingProtocolBgpIpv6:RoutingProtocolBgpIpv6","description":"Routing Protocol BGP IPv6\n"},"connectionUuid":{"type":"string","description":"Connection URI associated with Routing Protocol\n"},"customerAsn":{"type":"integer","description":"Customer-provided ASN\n"},"description":{"type":"string","description":"Customer-provided Fabric Routing Protocol description\n"},"directIpv4":{"$ref":"#/types/equinix:fabric/RoutingProtocolDirectIpv4:RoutingProtocolDirectIpv4","description":"Routing Protocol Direct IPv4\n"},"directIpv6":{"$ref":"#/types/equinix:fabric/RoutingProtocolDirectIpv6:RoutingProtocolDirectIpv6","description":"Routing Protocol Direct IPv6\n"},"name":{"type":"string","description":"Routing Protocol name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"},"type":{"type":"string","description":"Defines the routing protocol type like BGP or DIRECT\n"},"uuid":{"type":"string","description":"Equinix-assigned routing protocol identifier\n"}},"requiredInputs":["connectionUuid"],"stateInputs":{"description":"Input properties used for looking up and filtering RoutingProtocol resources.\n","properties":{"asOverrideEnabled":{"type":"boolean","description":"Enable AS number override\n"},"bfd":{"$ref":"#/types/equinix:fabric/RoutingProtocolBfd:RoutingProtocolBfd","description":"Bidirectional Forwarding Detection\n"},"bgpAuthKey":{"type":"string","description":"BGP authorization key\n"},"bgpIpv4":{"$ref":"#/types/equinix:fabric/RoutingProtocolBgpIpv4:RoutingProtocolBgpIpv4","description":"Routing Protocol BGP IPv4\n"},"bgpIpv6":{"$ref":"#/types/equinix:fabric/RoutingProtocolBgpIpv6:RoutingProtocolBgpIpv6","description":"Routing Protocol BGP IPv6\n"},"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/RoutingProtocolChangeLog:RoutingProtocolChangeLog"},"description":"Captures Routing Protocol lifecycle change information\n"},"changes":{"type":"array","items":{"$ref":"#/types/equinix:fabric/RoutingProtocolChange:RoutingProtocolChange"},"description":"Routing Protocol configuration Changes\n"},"connectionUuid":{"type":"string","description":"Connection URI associated with Routing Protocol\n"},"customerAsn":{"type":"integer","description":"Customer-provided ASN\n"},"description":{"type":"string","description":"Customer-provided Fabric Routing Protocol description\n"},"directIpv4":{"$ref":"#/types/equinix:fabric/RoutingProtocolDirectIpv4:RoutingProtocolDirectIpv4","description":"Routing Protocol Direct IPv4\n"},"directIpv6":{"$ref":"#/types/equinix:fabric/RoutingProtocolDirectIpv6:RoutingProtocolDirectIpv6","description":"Routing Protocol Direct IPv6\n"},"equinixAsn":{"type":"integer","description":"Equinix ASN\n"},"href":{"type":"string","description":"Routing Protocol URI information\n"},"name":{"type":"string","description":"Routing Protocol name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"},"operations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/RoutingProtocolOperation:RoutingProtocolOperation"},"description":"Routing Protocol type-specific operational data\n"},"state":{"type":"string","description":"Routing Protocol overall state\n"},"type":{"type":"string","description":"Defines the routing protocol type like BGP or DIRECT\n"},"uuid":{"type":"string","description":"Equinix-assigned routing protocol identifier\n"}},"type":"object"}},"equinix:fabric/serviceProfile:ServiceProfile":{"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric Service Profile\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/Fabric/IMPLEMENTATION/fabric-Sprofiles-implement.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#service-profiles\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst newServiceProfile = new equinix.fabric.ServiceProfile(\"newServiceProfile\", {\n    description: \"Service Profile for Receiving Connections\",\n    name: \"Name Of Business + Use Case Tag\",\n    type: equinix.fabric.ProfileType.L2Profile,\n    visibility: equinix.fabric.ProfileVisibility.Public,\n    notifications: [{\n        emails: [\"someone@sample.com\"],\n        type: \"BANDWIDTH_ALERT\",\n    }],\n    allowedEmails: [\n        \"test@equinix.com\",\n        \"testagain@equinix.com\",\n    ],\n    ports: [{\n        uuid: \"c791f8cb-5cc9-cc90-8ce0-306a5c00a4ee\",\n        type: \"XF_PORT\",\n    }],\n    accessPointTypeConfigs: [{\n        type: equinix.fabric.ProfileAccessPointType.Colo,\n        allowRemoteConnections: true,\n        allowCustomBandwidth: true,\n        allowBandwidthAutoApproval: false,\n        connectionRedundancyRequired: false,\n        connectionLabel: \"Service Profile Tag1\",\n        bandwidthAlertThreshold: 10,\n        supportedBandwidths: [\n            100,\n            500,\n        ],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nnew_service_profile = equinix.fabric.ServiceProfile(\"newServiceProfile\",\n    description=\"Service Profile for Receiving Connections\",\n    name=\"Name Of Business + Use Case Tag\",\n    type=equinix.fabric.ProfileType.L2_PROFILE,\n    visibility=equinix.fabric.ProfileVisibility.PUBLIC,\n    notifications=[{\n        \"emails\": [\"someone@sample.com\"],\n        \"type\": \"BANDWIDTH_ALERT\",\n    }],\n    allowed_emails=[\n        \"test@equinix.com\",\n        \"testagain@equinix.com\",\n    ],\n    ports=[{\n        \"uuid\": \"c791f8cb-5cc9-cc90-8ce0-306a5c00a4ee\",\n        \"type\": \"XF_PORT\",\n    }],\n    access_point_type_configs=[{\n        \"type\": equinix.fabric.ProfileAccessPointType.COLO,\n        \"allow_remote_connections\": True,\n        \"allow_custom_bandwidth\": True,\n        \"allow_bandwidth_auto_approval\": False,\n        \"connection_redundancy_required\": False,\n        \"connection_label\": \"Service Profile Tag1\",\n        \"bandwidth_alert_threshold\": 10,\n        \"supported_bandwidths\": [\n            100,\n            500,\n        ],\n    }])\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewServiceProfile(ctx, \"newServiceProfile\", \u0026fabric.ServiceProfileArgs{\n\t\t\tDescription: pulumi.String(\"Service Profile for Receiving Connections\"),\n\t\t\tName:        pulumi.String(\"Name Of Business + Use Case Tag\"),\n\t\t\tType:        pulumi.String(fabric.ProfileTypeL2Profile),\n\t\t\tVisibility:  pulumi.String(fabric.ProfileVisibilityPublic),\n\t\t\tNotifications: fabric.ServiceProfileNotificationArray{\n\t\t\t\t\u0026fabric.ServiceProfileNotificationArgs{\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"someone@sample.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tType: pulumi.String(\"BANDWIDTH_ALERT\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllowedEmails: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@equinix.com\"),\n\t\t\t\tpulumi.String(\"testagain@equinix.com\"),\n\t\t\t},\n\t\t\tPorts: fabric.ServiceProfilePortArray{\n\t\t\t\t\u0026fabric.ServiceProfilePortArgs{\n\t\t\t\t\tUuid: pulumi.String(\"c791f8cb-5cc9-cc90-8ce0-306a5c00a4ee\"),\n\t\t\t\t\tType: pulumi.String(\"XF_PORT\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAccessPointTypeConfigs: fabric.ServiceProfileAccessPointTypeConfigArray{\n\t\t\t\t\u0026fabric.ServiceProfileAccessPointTypeConfigArgs{\n\t\t\t\t\tType:                         pulumi.String(fabric.ProfileAccessPointTypeColo),\n\t\t\t\t\tAllowRemoteConnections:       pulumi.Bool(true),\n\t\t\t\t\tAllowCustomBandwidth:         pulumi.Bool(true),\n\t\t\t\t\tAllowBandwidthAutoApproval:   pulumi.Bool(false),\n\t\t\t\t\tConnectionRedundancyRequired: pulumi.Bool(false),\n\t\t\t\t\tConnectionLabel:              pulumi.String(\"Service Profile Tag1\"),\n\t\t\t\t\tBandwidthAlertThreshold:      pulumi.Float64(10),\n\t\t\t\t\tSupportedBandwidths: pulumi.IntArray{\n\t\t\t\t\t\tpulumi.Int(100),\n\t\t\t\t\t\tpulumi.Int(500),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var newServiceProfile = new Equinix.Fabric.ServiceProfile(\"newServiceProfile\", new()\n    {\n        Description = \"Service Profile for Receiving Connections\",\n        Name = \"Name Of Business + Use Case Tag\",\n        Type = Equinix.Fabric.ProfileType.L2Profile,\n        Visibility = Equinix.Fabric.ProfileVisibility.Public,\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ServiceProfileNotificationArgs\n            {\n                Emails = new[]\n                {\n                    \"someone@sample.com\",\n                },\n                Type = \"BANDWIDTH_ALERT\",\n            },\n        },\n        AllowedEmails = new[]\n        {\n            \"test@equinix.com\",\n            \"testagain@equinix.com\",\n        },\n        Ports = new[]\n        {\n            new Equinix.Fabric.Inputs.ServiceProfilePortArgs\n            {\n                Uuid = \"c791f8cb-5cc9-cc90-8ce0-306a5c00a4ee\",\n                Type = \"XF_PORT\",\n            },\n        },\n        AccessPointTypeConfigs = new[]\n        {\n            new Equinix.Fabric.Inputs.ServiceProfileAccessPointTypeConfigArgs\n            {\n                Type = Equinix.Fabric.ProfileAccessPointType.Colo,\n                AllowRemoteConnections = true,\n                AllowCustomBandwidth = true,\n                AllowBandwidthAutoApproval = false,\n                ConnectionRedundancyRequired = false,\n                ConnectionLabel = \"Service Profile Tag1\",\n                BandwidthAlertThreshold = 10,\n                SupportedBandwidths = new[]\n                {\n                    100,\n                    500,\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.ServiceProfile;\nimport com.pulumi.equinix.fabric.ServiceProfileArgs;\nimport com.pulumi.equinix.fabric.inputs.ServiceProfileNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ServiceProfilePortArgs;\nimport com.pulumi.equinix.fabric.inputs.ServiceProfileAccessPointTypeConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var newServiceProfile = new ServiceProfile(\"newServiceProfile\", ServiceProfileArgs.builder()\n            .description(\"Service Profile for Receiving Connections\")\n            .name(\"Name Of Business + Use Case Tag\")\n            .type(\"L2_PROFILE\")\n            .visibility(\"PUBLIC\")\n            .notifications(ServiceProfileNotificationArgs.builder()\n                .emails(\"someone@sample.com\")\n                .type(\"BANDWIDTH_ALERT\")\n                .build())\n            .allowedEmails(            \n                \"test@equinix.com\",\n                \"testagain@equinix.com\")\n            .ports(ServiceProfilePortArgs.builder()\n                .uuid(\"c791f8cb-5cc9-cc90-8ce0-306a5c00a4ee\")\n                .type(\"XF_PORT\")\n                .build())\n            .accessPointTypeConfigs(ServiceProfileAccessPointTypeConfigArgs.builder()\n                .type(\"COLO\")\n                .allowRemoteConnections(true)\n                .allowCustomBandwidth(true)\n                .allowBandwidthAutoApproval(false)\n                .connectionRedundancyRequired(false)\n                .connectionLabel(\"Service Profile Tag1\")\n                .bandwidthAlertThreshold(10.0)\n                .supportedBandwidths(                \n                    100,\n                    500)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  newServiceProfile:\n    type: equinix:fabric:ServiceProfile\n    name: new_service_profile\n    properties:\n      description: Service Profile for Receiving Connections\n      name: Name Of Business + Use Case Tag\n      type: L2_PROFILE\n      visibility: PUBLIC\n      notifications:\n        - emails:\n            - someone@sample.com\n          type: BANDWIDTH_ALERT\n      allowedEmails:\n        - test@equinix.com\n        - testagain@equinix.com\n      ports:\n        - uuid: c791f8cb-5cc9-cc90-8ce0-306a5c00a4ee\n          type: XF_PORT\n      accessPointTypeConfigs:\n        - type: COLO\n          allowRemoteConnections: true\n          allowCustomBandwidth: true\n          allowBandwidthAutoApproval: false\n          connectionRedundancyRequired: false\n          connectionLabel: Service Profile Tag1\n          bandwidthAlertThreshold: 10\n          supportedBandwidths:\n            - 100\n            - 500\n```\n{{% /example %}}\n\n{{% /examples %}}","properties":{"accessPointTypeConfigs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfileAccessPointTypeConfig:ServiceProfileAccessPointTypeConfig"},"description":"Access point config information\n"},"account":{"$ref":"#/types/equinix:fabric/ServiceProfileAccount:ServiceProfileAccount","description":"Service Profile Owner Account Information\n"},"allowedEmails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"changeLog":{"$ref":"#/types/equinix:fabric/ServiceProfileChangeLog:ServiceProfileChangeLog","description":"Captures connection lifecycle change information\n"},"customFields":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfileCustomField:ServiceProfileCustomField"},"description":"Custom Fields\n"},"description":{"type":"string","description":"User-provided service description\n"},"href":{"type":"string","description":"Service Profile URI response attribute\n"},"marketingInfo":{"$ref":"#/types/equinix:fabric/ServiceProfileMarketingInfo:ServiceProfileMarketingInfo","description":"Marketing Info\n"},"metros":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfileMetro:ServiceProfileMetro"},"description":"Access point config information\n"},"name":{"type":"string","description":"Customer-assigned service profile name\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfileNotification:ServiceProfileNotification"},"description":"Preferences for notifications on connection configuration or status changes\n"},"ports":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfilePort:ServiceProfilePort"},"description":"Ports\n"},"project":{"$ref":"#/types/equinix:fabric/ServiceProfileProject:ServiceProfileProject","description":"Project information\n"},"selfProfile":{"type":"boolean","description":"Self Profile indicating if the profile is created for customer's  self use\n"},"state":{"type":"string","description":"Service profile state - ACTIVE, PENDING_APPROVAL, DELETED, REJECTED\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags attached to the connection\n"},"type":{"type":"string","description":"Service profile type - L2*PROFILE, L3*PROFILE, ECIA*PROFILE, ECMC*PROFILE, IA*PROFILE, IX*PROFILE\n"},"uuid":{"type":"string","description":"Equinix assigned service profile identifier\n"},"viewPoint":{"type":"string","description":"Flips view between buyer and seller representation. Available values : aSide, zSide. Default value : aSide\n"},"virtualDevices":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfileVirtualDevice:ServiceProfileVirtualDevice"},"description":"Virtual Devices\n"},"visibility":{"type":"string","description":"Service profile visibility - PUBLIC, PRIVATE\n"}},"required":["account","changeLog","description","href","name","type","uuid"],"inputProperties":{"accessPointTypeConfigs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfileAccessPointTypeConfig:ServiceProfileAccessPointTypeConfig"},"description":"Access point config information\n"},"allowedEmails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"customFields":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfileCustomField:ServiceProfileCustomField"},"description":"Custom Fields\n"},"description":{"type":"string","description":"User-provided service description\n"},"marketingInfo":{"$ref":"#/types/equinix:fabric/ServiceProfileMarketingInfo:ServiceProfileMarketingInfo","description":"Marketing Info\n"},"metros":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfileMetro:ServiceProfileMetro"},"description":"Access point config information\n"},"name":{"type":"string","description":"Customer-assigned service profile name\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfileNotification:ServiceProfileNotification"},"description":"Preferences for notifications on connection configuration or status changes\n"},"ports":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfilePort:ServiceProfilePort"},"description":"Ports\n"},"project":{"$ref":"#/types/equinix:fabric/ServiceProfileProject:ServiceProfileProject","description":"Project information\n"},"selfProfile":{"type":"boolean","description":"Self Profile indicating if the profile is created for customer's  self use\n"},"state":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/profileState:ProfileState"}],"description":"Service profile state - ACTIVE, PENDING_APPROVAL, DELETED, REJECTED\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags attached to the connection\n"},"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/profileType:ProfileType"}],"description":"Service profile type - L2*PROFILE, L3*PROFILE, ECIA*PROFILE, ECMC*PROFILE, IA*PROFILE, IX*PROFILE\n"},"viewPoint":{"type":"string","description":"Flips view between buyer and seller representation. Available values : aSide, zSide. Default value : aSide\n"},"virtualDevices":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfileVirtualDevice:ServiceProfileVirtualDevice"},"description":"Virtual Devices\n"},"visibility":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/profileVisibility:ProfileVisibility"}],"description":"Service profile visibility - PUBLIC, PRIVATE\n"}},"requiredInputs":["description","type"],"stateInputs":{"description":"Input properties used for looking up and filtering ServiceProfile resources.\n","properties":{"accessPointTypeConfigs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfileAccessPointTypeConfig:ServiceProfileAccessPointTypeConfig"},"description":"Access point config information\n"},"account":{"$ref":"#/types/equinix:fabric/ServiceProfileAccount:ServiceProfileAccount","description":"Service Profile Owner Account Information\n"},"allowedEmails":{"type":"array","items":{"type":"string"},"description":"Array of contact emails\n"},"changeLog":{"$ref":"#/types/equinix:fabric/ServiceProfileChangeLog:ServiceProfileChangeLog","description":"Captures connection lifecycle change information\n"},"customFields":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfileCustomField:ServiceProfileCustomField"},"description":"Custom Fields\n"},"description":{"type":"string","description":"User-provided service description\n"},"href":{"type":"string","description":"Service Profile URI response attribute\n"},"marketingInfo":{"$ref":"#/types/equinix:fabric/ServiceProfileMarketingInfo:ServiceProfileMarketingInfo","description":"Marketing Info\n"},"metros":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfileMetro:ServiceProfileMetro"},"description":"Access point config information\n"},"name":{"type":"string","description":"Customer-assigned service profile name\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfileNotification:ServiceProfileNotification"},"description":"Preferences for notifications on connection configuration or status changes\n"},"ports":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfilePort:ServiceProfilePort"},"description":"Ports\n"},"project":{"$ref":"#/types/equinix:fabric/ServiceProfileProject:ServiceProfileProject","description":"Project information\n"},"selfProfile":{"type":"boolean","description":"Self Profile indicating if the profile is created for customer's  self use\n"},"state":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/profileState:ProfileState"}],"description":"Service profile state - ACTIVE, PENDING_APPROVAL, DELETED, REJECTED\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags attached to the connection\n"},"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/profileType:ProfileType"}],"description":"Service profile type - L2*PROFILE, L3*PROFILE, ECIA*PROFILE, ECMC*PROFILE, IA*PROFILE, IX*PROFILE\n"},"uuid":{"type":"string","description":"Equinix assigned service profile identifier\n"},"viewPoint":{"type":"string","description":"Flips view between buyer and seller representation. Available values : aSide, zSide. Default value : aSide\n"},"virtualDevices":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceProfileVirtualDevice:ServiceProfileVirtualDevice"},"description":"Virtual Devices\n"},"visibility":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:fabric/profileVisibility:ProfileVisibility"}],"description":"Service profile visibility - PUBLIC, PRIVATE\n"}},"type":"object"}},"equinix:fabric/serviceToken:ServiceToken":{"description":"Fabric V4 API compatible resource allows creation and management of [Equinix Fabric Service Token](https://docs.equinix.com/en-us/Content/Interconnection/Fabric/service%20tokens/Fabric-Service-Tokens.htm).\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/Fabric/service%20tokens/Fabric-Service-Tokens.htm\n* API: https://docs.equinix.com/en-us/Content/KnowledgeCenter/Fabric/GettingStarted/Integrating-with-Fabric-V4-APIs/ConnectUsingServiceToken.htm\n\n## Example Usage\n\nAside Port Service Token\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst test = new equinix.fabric.ServiceToken(\"test\", {\n    description: \"Aside COLO Service Token\",\n    expirationDateTime: \"2025-01-18T06:43:49.981Z\",\n    notifications: [{\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n        type: \"ALL\",\n    }],\n    serviceTokenConnections: [{\n        aSides: [{\n            accessPointSelectors: [{\n                linkProtocol: {\n                    type: \"DOT1Q\",\n                    vlanTag: 2987,\n                },\n                port: {\n                    uuid: \"\u003cport_uuid\u003e\",\n                },\n                type: \"COLO\",\n            }],\n        }],\n        bandwidthLimit: 1000,\n        type: \"EVPL_VC\",\n    }],\n    type: \"VC_TOKEN\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.fabric.ServiceToken(\"test\",\n    description=\"Aside COLO Service Token\",\n    expiration_date_time=\"2025-01-18T06:43:49.981Z\",\n    notifications=[{\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n        \"type\": \"ALL\",\n    }],\n    service_token_connections=[{\n        \"a_sides\": [{\n            \"access_point_selectors\": [{\n                \"link_protocol\": {\n                    \"type\": \"DOT1Q\",\n                    \"vlan_tag\": 2987,\n                },\n                \"port\": {\n                    \"uuid\": \"\u003cport_uuid\u003e\",\n                },\n                \"type\": \"COLO\",\n            }],\n        }],\n        \"bandwidth_limit\": 1000,\n        \"type\": \"EVPL_VC\",\n    }],\n    type=\"VC_TOKEN\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Equinix.Fabric.ServiceToken(\"test\", new()\n    {\n        Description = \"Aside COLO Service Token\",\n        ExpirationDateTime = \"2025-01-18T06:43:49.981Z\",\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ServiceTokenNotificationArgs\n            {\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n                Type = \"ALL\",\n            },\n        },\n        ServiceTokenConnections = new[]\n        {\n            new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionArgs\n            {\n                ASides = new[]\n                {\n                    new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionASideArgs\n                    {\n                        AccessPointSelectors = new[]\n                        {\n                            new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionASideAccessPointSelectorArgs\n                            {\n                                LinkProtocol = new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionASideAccessPointSelectorLinkProtocolArgs\n                                {\n                                    Type = \"DOT1Q\",\n                                    VlanTag = 2987,\n                                },\n                                Port = new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionASideAccessPointSelectorPortArgs\n                                {\n                                    Uuid = \"\u003cport_uuid\u003e\",\n                                },\n                                Type = \"COLO\",\n                            },\n                        },\n                    },\n                },\n                BandwidthLimit = 1000,\n                Type = \"EVPL_VC\",\n            },\n        },\n        Type = \"VC_TOKEN\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewServiceToken(ctx, \"test\", \u0026fabric.ServiceTokenArgs{\n\t\t\tDescription:        pulumi.String(\"Aside COLO Service Token\"),\n\t\t\tExpirationDateTime: pulumi.String(\"2025-01-18T06:43:49.981Z\"),\n\t\t\tNotifications: fabric.ServiceTokenNotificationArray{\n\t\t\t\t\u0026fabric.ServiceTokenNotificationArgs{\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tType: pulumi.String(\"ALL\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceTokenConnections: fabric.ServiceTokenServiceTokenConnectionArray{\n\t\t\t\t\u0026fabric.ServiceTokenServiceTokenConnectionArgs{\n\t\t\t\t\tASides: fabric.ServiceTokenServiceTokenConnectionASideArray{\n\t\t\t\t\t\t\u0026fabric.ServiceTokenServiceTokenConnectionASideArgs{\n\t\t\t\t\t\t\tAccessPointSelectors: fabric.ServiceTokenServiceTokenConnectionASideAccessPointSelectorArray{\n\t\t\t\t\t\t\t\t\u0026fabric.ServiceTokenServiceTokenConnectionASideAccessPointSelectorArgs{\n\t\t\t\t\t\t\t\t\tLinkProtocol: \u0026fabric.ServiceTokenServiceTokenConnectionASideAccessPointSelectorLinkProtocolArgs{\n\t\t\t\t\t\t\t\t\t\tType:    pulumi.String(\"DOT1Q\"),\n\t\t\t\t\t\t\t\t\t\tVlanTag: pulumi.Int(2987),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tPort: \u0026fabric.ServiceTokenServiceTokenConnectionASideAccessPointSelectorPortArgs{\n\t\t\t\t\t\t\t\t\t\tUuid: pulumi.String(\"\u003cport_uuid\u003e\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tType: pulumi.String(\"COLO\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tBandwidthLimit: pulumi.Int(1000),\n\t\t\t\t\tType:           pulumi.String(\"EVPL_VC\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tType: pulumi.String(\"VC_TOKEN\"),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.ServiceToken;\nimport com.pulumi.equinix.fabric.ServiceTokenArgs;\nimport com.pulumi.equinix.fabric.inputs.ServiceTokenNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ServiceTokenServiceTokenConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var test = new ServiceToken(\"test\", ServiceTokenArgs.builder()\n            .description(\"Aside COLO Service Token\")\n            .expirationDateTime(\"2025-01-18T06:43:49.981Z\")\n            .notifications(ServiceTokenNotificationArgs.builder()\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .type(\"ALL\")\n                .build())\n            .serviceTokenConnections(ServiceTokenServiceTokenConnectionArgs.builder()\n                .aSides(ServiceTokenServiceTokenConnectionASideArgs.builder()\n                    .accessPointSelectors(ServiceTokenServiceTokenConnectionASideAccessPointSelectorArgs.builder()\n                        .linkProtocol(ServiceTokenServiceTokenConnectionASideAccessPointSelectorLinkProtocolArgs.builder()\n                            .type(\"DOT1Q\")\n                            .vlanTag(\"2987\")\n                            .build())\n                        .port(ServiceTokenServiceTokenConnectionASideAccessPointSelectorPortArgs.builder()\n                            .uuid(\"\u003cport_uuid\u003e\")\n                            .build())\n                        .type(\"COLO\")\n                        .build())\n                    .build())\n                .bandwidthLimit(1000)\n                .type(\"EVPL_VC\")\n                .build())\n            .type(\"VC_TOKEN\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: equinix:fabric:ServiceToken\n    properties:\n      description: Aside COLO Service Token\n      expirationDateTime: 2025-01-18T06:43:49.981Z\n      notifications:\n        - emails:\n            - example@equinix.com\n            - test1@equinix.com\n          type: ALL\n      serviceTokenConnections:\n        - aSides:\n            - accessPointSelectors:\n                - linkProtocol:\n                    type: DOT1Q\n                    vlanTag: '2987'\n                  port:\n                    uuid: \u003cport_uuid\u003e\n                  type: COLO\n          bandwidthLimit: 1000\n          type: EVPL_VC\n      type: VC_TOKEN\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nZside Port Service Token\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst test = new equinix.fabric.ServiceToken(\"test\", {\n    description: \"Zside COLO Service Token\",\n    expirationDateTime: \"2025-01-18T06:43:49.981Z\",\n    notifications: [{\n        emails: [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n        type: \"ALL\",\n    }],\n    serviceTokenConnections: [{\n        supportedBandwidths: [\n            50,\n            200,\n            10000,\n        ],\n        type: \"EVPL_VC\",\n        zSides: [{\n            accessPointSelectors: [{\n                linkProtocol: {\n                    type: \"DOT1Q\",\n                    vlanTag: 2087,\n                },\n                port: {\n                    uuid: \"\u003cport_uuid\u003e\",\n                },\n                type: \"COLO\",\n            }],\n        }],\n    }],\n    type: \"VC_TOKEN\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.fabric.ServiceToken(\"test\",\n    description=\"Zside COLO Service Token\",\n    expiration_date_time=\"2025-01-18T06:43:49.981Z\",\n    notifications=[{\n        \"emails\": [\n            \"example@equinix.com\",\n            \"test1@equinix.com\",\n        ],\n        \"type\": \"ALL\",\n    }],\n    service_token_connections=[{\n        \"supported_bandwidths\": [\n            50,\n            200,\n            10000,\n        ],\n        \"type\": \"EVPL_VC\",\n        \"z_sides\": [{\n            \"access_point_selectors\": [{\n                \"link_protocol\": {\n                    \"type\": \"DOT1Q\",\n                    \"vlan_tag\": 2087,\n                },\n                \"port\": {\n                    \"uuid\": \"\u003cport_uuid\u003e\",\n                },\n                \"type\": \"COLO\",\n            }],\n        }],\n    }],\n    type=\"VC_TOKEN\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Equinix.Fabric.ServiceToken(\"test\", new()\n    {\n        Description = \"Zside COLO Service Token\",\n        ExpirationDateTime = \"2025-01-18T06:43:49.981Z\",\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ServiceTokenNotificationArgs\n            {\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                    \"test1@equinix.com\",\n                },\n                Type = \"ALL\",\n            },\n        },\n        ServiceTokenConnections = new[]\n        {\n            new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionArgs\n            {\n                SupportedBandwidths = new[]\n                {\n                    50,\n                    200,\n                    10000,\n                },\n                Type = \"EVPL_VC\",\n                ZSides = new[]\n                {\n                    new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionZSideArgs\n                    {\n                        AccessPointSelectors = new[]\n                        {\n                            new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorArgs\n                            {\n                                LinkProtocol = new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorLinkProtocolArgs\n                                {\n                                    Type = \"DOT1Q\",\n                                    VlanTag = 2087,\n                                },\n                                Port = new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorPortArgs\n                                {\n                                    Uuid = \"\u003cport_uuid\u003e\",\n                                },\n                                Type = \"COLO\",\n                            },\n                        },\n                    },\n                },\n            },\n        },\n        Type = \"VC_TOKEN\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewServiceToken(ctx, \"test\", \u0026fabric.ServiceTokenArgs{\n\t\t\tDescription:        pulumi.String(\"Zside COLO Service Token\"),\n\t\t\tExpirationDateTime: pulumi.String(\"2025-01-18T06:43:49.981Z\"),\n\t\t\tNotifications: fabric.ServiceTokenNotificationArray{\n\t\t\t\t\u0026fabric.ServiceTokenNotificationArgs{\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tType: pulumi.String(\"ALL\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceTokenConnections: fabric.ServiceTokenServiceTokenConnectionArray{\n\t\t\t\t\u0026fabric.ServiceTokenServiceTokenConnectionArgs{\n\t\t\t\t\tSupportedBandwidths: pulumi.IntArray{\n\t\t\t\t\t\tpulumi.Int(50),\n\t\t\t\t\t\tpulumi.Int(200),\n\t\t\t\t\t\tpulumi.Int(10000),\n\t\t\t\t\t},\n\t\t\t\t\tType: pulumi.String(\"EVPL_VC\"),\n\t\t\t\t\tZSides: fabric.ServiceTokenServiceTokenConnectionZSideArray{\n\t\t\t\t\t\t\u0026fabric.ServiceTokenServiceTokenConnectionZSideArgs{\n\t\t\t\t\t\t\tAccessPointSelectors: fabric.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorArray{\n\t\t\t\t\t\t\t\t\u0026fabric.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorArgs{\n\t\t\t\t\t\t\t\t\tLinkProtocol: \u0026fabric.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorLinkProtocolArgs{\n\t\t\t\t\t\t\t\t\t\tType:    pulumi.String(\"DOT1Q\"),\n\t\t\t\t\t\t\t\t\t\tVlanTag: pulumi.Int(2087),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tPort: \u0026fabric.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorPortArgs{\n\t\t\t\t\t\t\t\t\t\tUuid: pulumi.String(\"\u003cport_uuid\u003e\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tType: pulumi.String(\"COLO\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tType: pulumi.String(\"VC_TOKEN\"),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.ServiceToken;\nimport com.pulumi.equinix.fabric.ServiceTokenArgs;\nimport com.pulumi.equinix.fabric.inputs.ServiceTokenNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ServiceTokenServiceTokenConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var test = new ServiceToken(\"test\", ServiceTokenArgs.builder()\n            .description(\"Zside COLO Service Token\")\n            .expirationDateTime(\"2025-01-18T06:43:49.981Z\")\n            .notifications(ServiceTokenNotificationArgs.builder()\n                .emails(                \n                    \"example@equinix.com\",\n                    \"test1@equinix.com\")\n                .type(\"ALL\")\n                .build())\n            .serviceTokenConnections(ServiceTokenServiceTokenConnectionArgs.builder()\n                .supportedBandwidths(                \n                    50,\n                    200,\n                    10000)\n                .type(\"EVPL_VC\")\n                .zSides(ServiceTokenServiceTokenConnectionZSideArgs.builder()\n                    .accessPointSelectors(ServiceTokenServiceTokenConnectionZSideAccessPointSelectorArgs.builder()\n                        .linkProtocol(ServiceTokenServiceTokenConnectionZSideAccessPointSelectorLinkProtocolArgs.builder()\n                            .type(\"DOT1Q\")\n                            .vlanTag(\"2087\")\n                            .build())\n                        .port(ServiceTokenServiceTokenConnectionZSideAccessPointSelectorPortArgs.builder()\n                            .uuid(\"\u003cport_uuid\u003e\")\n                            .build())\n                        .type(\"COLO\")\n                        .build())\n                    .build())\n                .build())\n            .type(\"VC_TOKEN\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: equinix:fabric:ServiceToken\n    properties:\n      description: Zside COLO Service Token\n      expirationDateTime: 2025-01-18T06:43:49.981Z\n      notifications:\n        - emails:\n            - example@equinix.com\n            - test1@equinix.com\n          type: ALL\n      serviceTokenConnections:\n        - supportedBandwidths:\n            - 50\n            - 200\n            - 10000\n          type: EVPL_VC\n          zSides:\n            - accessPointSelectors:\n                - linkProtocol:\n                    type: DOT1Q\n                    vlanTag: '2087'\n                  port:\n                    uuid: \u003cport_uuid\u003e\n                  type: COLO\n      type: VC_TOKEN\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nZside Network Service Token\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst test = new equinix.fabric.ServiceToken(\"test\", {\n    description: \"Zside Network Service Token\",\n    expirationDateTime: \"2025-01-18T06:43:49.986Z\",\n    notifications: [{\n        emails: [\"example@equinix.com\"],\n        type: \"ALL\",\n    }],\n    serviceTokenConnections: [{\n        supportedBandwidths: [\n            50,\n            200,\n            10000,\n        ],\n        type: \"EVPL_VC\",\n        zSides: [{\n            accessPointSelectors: [{\n                network: {\n                    uuid: \"\u003cnetwork_uuid\u003e\",\n                },\n                type: \"NETWORK\",\n            }],\n        }],\n    }],\n    type: \"VC_TOKEN\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.fabric.ServiceToken(\"test\",\n    description=\"Zside Network Service Token\",\n    expiration_date_time=\"2025-01-18T06:43:49.986Z\",\n    notifications=[{\n        \"emails\": [\"example@equinix.com\"],\n        \"type\": \"ALL\",\n    }],\n    service_token_connections=[{\n        \"supported_bandwidths\": [\n            50,\n            200,\n            10000,\n        ],\n        \"type\": \"EVPL_VC\",\n        \"z_sides\": [{\n            \"access_point_selectors\": [{\n                \"network\": {\n                    \"uuid\": \"\u003cnetwork_uuid\u003e\",\n                },\n                \"type\": \"NETWORK\",\n            }],\n        }],\n    }],\n    type=\"VC_TOKEN\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Equinix.Fabric.ServiceToken(\"test\", new()\n    {\n        Description = \"Zside Network Service Token\",\n        ExpirationDateTime = \"2025-01-18T06:43:49.986Z\",\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ServiceTokenNotificationArgs\n            {\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                },\n                Type = \"ALL\",\n            },\n        },\n        ServiceTokenConnections = new[]\n        {\n            new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionArgs\n            {\n                SupportedBandwidths = new[]\n                {\n                    50,\n                    200,\n                    10000,\n                },\n                Type = \"EVPL_VC\",\n                ZSides = new[]\n                {\n                    new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionZSideArgs\n                    {\n                        AccessPointSelectors = new[]\n                        {\n                            new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorArgs\n                            {\n                                Network = new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetworkArgs\n                                {\n                                    Uuid = \"\u003cnetwork_uuid\u003e\",\n                                },\n                                Type = \"NETWORK\",\n                            },\n                        },\n                    },\n                },\n            },\n        },\n        Type = \"VC_TOKEN\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewServiceToken(ctx, \"test\", \u0026fabric.ServiceTokenArgs{\n\t\t\tDescription:        pulumi.String(\"Zside Network Service Token\"),\n\t\t\tExpirationDateTime: pulumi.String(\"2025-01-18T06:43:49.986Z\"),\n\t\t\tNotifications: fabric.ServiceTokenNotificationArray{\n\t\t\t\t\u0026fabric.ServiceTokenNotificationArgs{\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tType: pulumi.String(\"ALL\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceTokenConnections: fabric.ServiceTokenServiceTokenConnectionArray{\n\t\t\t\t\u0026fabric.ServiceTokenServiceTokenConnectionArgs{\n\t\t\t\t\tSupportedBandwidths: pulumi.IntArray{\n\t\t\t\t\t\tpulumi.Int(50),\n\t\t\t\t\t\tpulumi.Int(200),\n\t\t\t\t\t\tpulumi.Int(10000),\n\t\t\t\t\t},\n\t\t\t\t\tType: pulumi.String(\"EVPL_VC\"),\n\t\t\t\t\tZSides: fabric.ServiceTokenServiceTokenConnectionZSideArray{\n\t\t\t\t\t\t\u0026fabric.ServiceTokenServiceTokenConnectionZSideArgs{\n\t\t\t\t\t\t\tAccessPointSelectors: fabric.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorArray{\n\t\t\t\t\t\t\t\t\u0026fabric.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorArgs{\n\t\t\t\t\t\t\t\t\tNetwork: \u0026fabric.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetworkArgs{\n\t\t\t\t\t\t\t\t\t\tUuid: pulumi.String(\"\u003cnetwork_uuid\u003e\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tType: pulumi.String(\"NETWORK\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tType: pulumi.String(\"VC_TOKEN\"),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.ServiceToken;\nimport com.pulumi.equinix.fabric.ServiceTokenArgs;\nimport com.pulumi.equinix.fabric.inputs.ServiceTokenNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ServiceTokenServiceTokenConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var test = new ServiceToken(\"test\", ServiceTokenArgs.builder()\n            .description(\"Zside Network Service Token\")\n            .expirationDateTime(\"2025-01-18T06:43:49.986Z\")\n            .notifications(ServiceTokenNotificationArgs.builder()\n                .emails(\"example@equinix.com\")\n                .type(\"ALL\")\n                .build())\n            .serviceTokenConnections(ServiceTokenServiceTokenConnectionArgs.builder()\n                .supportedBandwidths(                \n                    50,\n                    200,\n                    10000)\n                .type(\"EVPL_VC\")\n                .zSides(ServiceTokenServiceTokenConnectionZSideArgs.builder()\n                    .accessPointSelectors(ServiceTokenServiceTokenConnectionZSideAccessPointSelectorArgs.builder()\n                        .network(ServiceTokenServiceTokenConnectionZSideAccessPointSelectorNetworkArgs.builder()\n                            .uuid(\"\u003cnetwork_uuid\u003e\")\n                            .build())\n                        .type(\"NETWORK\")\n                        .build())\n                    .build())\n                .build())\n            .type(\"VC_TOKEN\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: equinix:fabric:ServiceToken\n    properties:\n      description: Zside Network Service Token\n      expirationDateTime: 2025-01-18T06:43:49.986Z\n      notifications:\n        - emails:\n            - example@equinix.com\n          type: ALL\n      serviceTokenConnections:\n        - supportedBandwidths:\n            - 50\n            - 200\n            - 10000\n          type: EVPL_VC\n          zSides:\n            - accessPointSelectors:\n                - network:\n                    uuid: \u003cnetwork_uuid\u003e\n                  type: NETWORK\n      type: VC_TOKEN\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nZside Virtual Device Service Token\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst test = new equinix.fabric.ServiceToken(\"test\", {\n    description: \"Zside VD Service Token\",\n    expirationDateTime: \"2025-01-18T06:43:49.986Z\",\n    notifications: [{\n        emails: [\"example@equinix.com\"],\n        type: \"ALL\",\n    }],\n    serviceTokenConnections: [{\n        supportedBandwidths: [\n            50,\n            200,\n            10000,\n        ],\n        type: \"EVPL_VC\",\n        zSides: [{\n            accessPointSelectors: [{\n                \"interface\": {\n                    type: \"NETWORK\",\n                },\n                type: \"VD\",\n                virtualDevice: {\n                    type: \"EDGE\",\n                    uuid: \"\u003cdevice_uuid\u003e\",\n                },\n            }],\n        }],\n    }],\n    type: \"VC_TOKEN\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.fabric.ServiceToken(\"test\",\n    description=\"Zside VD Service Token\",\n    expiration_date_time=\"2025-01-18T06:43:49.986Z\",\n    notifications=[{\n        \"emails\": [\"example@equinix.com\"],\n        \"type\": \"ALL\",\n    }],\n    service_token_connections=[{\n        \"supported_bandwidths\": [\n            50,\n            200,\n            10000,\n        ],\n        \"type\": \"EVPL_VC\",\n        \"z_sides\": [{\n            \"access_point_selectors\": [{\n                \"interface\": {\n                    \"type\": \"NETWORK\",\n                },\n                \"type\": \"VD\",\n                \"virtual_device\": {\n                    \"type\": \"EDGE\",\n                    \"uuid\": \"\u003cdevice_uuid\u003e\",\n                },\n            }],\n        }],\n    }],\n    type=\"VC_TOKEN\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Equinix.Fabric.ServiceToken(\"test\", new()\n    {\n        Description = \"Zside VD Service Token\",\n        ExpirationDateTime = \"2025-01-18T06:43:49.986Z\",\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ServiceTokenNotificationArgs\n            {\n                Emails = new[]\n                {\n                    \"example@equinix.com\",\n                },\n                Type = \"ALL\",\n            },\n        },\n        ServiceTokenConnections = new[]\n        {\n            new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionArgs\n            {\n                SupportedBandwidths = new[]\n                {\n                    50,\n                    200,\n                    10000,\n                },\n                Type = \"EVPL_VC\",\n                ZSides = new[]\n                {\n                    new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionZSideArgs\n                    {\n                        AccessPointSelectors = new[]\n                        {\n                            new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorArgs\n                            {\n                                Interface = new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorInterfaceArgs\n                                {\n                                    Type = \"NETWORK\",\n                                },\n                                Type = \"VD\",\n                                VirtualDevice = new Equinix.Fabric.Inputs.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorVirtualDeviceArgs\n                                {\n                                    Type = \"EDGE\",\n                                    Uuid = \"\u003cdevice_uuid\u003e\",\n                                },\n                            },\n                        },\n                    },\n                },\n            },\n        },\n        Type = \"VC_TOKEN\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewServiceToken(ctx, \"test\", \u0026fabric.ServiceTokenArgs{\n\t\t\tDescription:        pulumi.String(\"Zside VD Service Token\"),\n\t\t\tExpirationDateTime: pulumi.String(\"2025-01-18T06:43:49.986Z\"),\n\t\t\tNotifications: fabric.ServiceTokenNotificationArray{\n\t\t\t\t\u0026fabric.ServiceTokenNotificationArgs{\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tType: pulumi.String(\"ALL\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceTokenConnections: fabric.ServiceTokenServiceTokenConnectionArray{\n\t\t\t\t\u0026fabric.ServiceTokenServiceTokenConnectionArgs{\n\t\t\t\t\tSupportedBandwidths: pulumi.IntArray{\n\t\t\t\t\t\tpulumi.Int(50),\n\t\t\t\t\t\tpulumi.Int(200),\n\t\t\t\t\t\tpulumi.Int(10000),\n\t\t\t\t\t},\n\t\t\t\t\tType: pulumi.String(\"EVPL_VC\"),\n\t\t\t\t\tZSides: fabric.ServiceTokenServiceTokenConnectionZSideArray{\n\t\t\t\t\t\t\u0026fabric.ServiceTokenServiceTokenConnectionZSideArgs{\n\t\t\t\t\t\t\tAccessPointSelectors: fabric.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorArray{\n\t\t\t\t\t\t\t\t\u0026fabric.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorArgs{\n\t\t\t\t\t\t\t\t\tInterface: \u0026fabric.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorInterfaceArgs{\n\t\t\t\t\t\t\t\t\t\tType: pulumi.String(\"NETWORK\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tType: pulumi.String(\"VD\"),\n\t\t\t\t\t\t\t\t\tVirtualDevice: \u0026fabric.ServiceTokenServiceTokenConnectionZSideAccessPointSelectorVirtualDeviceArgs{\n\t\t\t\t\t\t\t\t\t\tType: pulumi.String(\"EDGE\"),\n\t\t\t\t\t\t\t\t\t\tUuid: pulumi.String(\"\u003cdevice_uuid\u003e\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tType: pulumi.String(\"VC_TOKEN\"),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.ServiceToken;\nimport com.pulumi.equinix.fabric.ServiceTokenArgs;\nimport com.pulumi.equinix.fabric.inputs.ServiceTokenNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ServiceTokenServiceTokenConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var test = new ServiceToken(\"test\", ServiceTokenArgs.builder()\n            .description(\"Zside VD Service Token\")\n            .expirationDateTime(\"2025-01-18T06:43:49.986Z\")\n            .notifications(ServiceTokenNotificationArgs.builder()\n                .emails(\"example@equinix.com\")\n                .type(\"ALL\")\n                .build())\n            .serviceTokenConnections(ServiceTokenServiceTokenConnectionArgs.builder()\n                .supportedBandwidths(                \n                    50,\n                    200,\n                    10000)\n                .type(\"EVPL_VC\")\n                .zSides(ServiceTokenServiceTokenConnectionZSideArgs.builder()\n                    .accessPointSelectors(ServiceTokenServiceTokenConnectionZSideAccessPointSelectorArgs.builder()\n                        .interface_(ServiceTokenServiceTokenConnectionZSideAccessPointSelectorInterfaceArgs.builder()\n                            .type(\"NETWORK\")\n                            .build())\n                        .type(\"VD\")\n                        .virtualDevice(ServiceTokenServiceTokenConnectionZSideAccessPointSelectorVirtualDeviceArgs.builder()\n                            .type(\"EDGE\")\n                            .uuid(\"\u003cdevice_uuid\u003e\")\n                            .build())\n                        .build())\n                    .build())\n                .build())\n            .type(\"VC_TOKEN\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: equinix:fabric:ServiceToken\n    properties:\n      description: Zside VD Service Token\n      expirationDateTime: 2025-01-18T06:43:49.986Z\n      notifications:\n        - emails:\n            - example@equinix.com\n          type: ALL\n      serviceTokenConnections:\n        - supportedBandwidths:\n            - 50\n            - 200\n            - 10000\n          type: EVPL_VC\n          zSides:\n            - accessPointSelectors:\n                - interface:\n                    type: NETWORK\n                  type: VD\n                  virtualDevice:\n                    type: EDGE\n                    uuid: \u003cdevice_uuid\u003e\n      type: VC_TOKEN\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"accounts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenAccount:ServiceTokenAccount"},"description":"Customer account information that is associated with this service token\n"},"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenChangeLog:ServiceTokenChangeLog"},"description":"Captures connection lifecycle change information\n"},"description":{"type":"string","description":"Optional Description to the Service Token you will be creating\n"},"expirationDateTime":{"type":"string","description":"Expiration date and time of the service token; 2020-11-06T07:00:00Z\n"},"href":{"type":"string","description":"An absolute URL that is the subject of the link's context.\n"},"issuerSide":{"type":"string","description":"Information about token side; ASIDE, ZSIDE\n"},"name":{"type":"string","description":"Name of the Service Token\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenNotification:ServiceTokenNotification"},"description":"Preferences for notifications on Service Token configuration or status changes\n"},"project":{"$ref":"#/types/equinix:fabric/ServiceTokenProject:ServiceTokenProject","description":"Project information\n"},"serviceTokenConnections":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnection:ServiceTokenServiceTokenConnection"},"description":"Service Token Connection Type Information\n"},"state":{"type":"string","description":"Service token state; ACTIVE, INACTIVE, EXPIRED, DELETED\n"},"type":{"type":"string","description":"Service Token Type; VC*TOKEN,EPL*TOKEN\n"},"uuid":{"type":"string","description":"Equinix-assigned service token identifier\n"}},"required":["accounts","changeLogs","description","expirationDateTime","href","issuerSide","name","notifications","project","serviceTokenConnections","state","type","uuid"],"inputProperties":{"description":{"type":"string","description":"Optional Description to the Service Token you will be creating\n"},"expirationDateTime":{"type":"string","description":"Expiration date and time of the service token; 2020-11-06T07:00:00Z\n"},"name":{"type":"string","description":"Name of the Service Token\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenNotification:ServiceTokenNotification"},"description":"Preferences for notifications on Service Token configuration or status changes\n"},"project":{"$ref":"#/types/equinix:fabric/ServiceTokenProject:ServiceTokenProject","description":"Project information\n"},"serviceTokenConnections":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnection:ServiceTokenServiceTokenConnection"},"description":"Service Token Connection Type Information\n"},"type":{"type":"string","description":"Service Token Type; VC*TOKEN,EPL*TOKEN\n"}},"requiredInputs":["expirationDateTime","notifications","serviceTokenConnections","type"],"stateInputs":{"description":"Input properties used for looking up and filtering ServiceToken resources.\n","properties":{"accounts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenAccount:ServiceTokenAccount"},"description":"Customer account information that is associated with this service token\n"},"changeLogs":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenChangeLog:ServiceTokenChangeLog"},"description":"Captures connection lifecycle change information\n"},"description":{"type":"string","description":"Optional Description to the Service Token you will be creating\n"},"expirationDateTime":{"type":"string","description":"Expiration date and time of the service token; 2020-11-06T07:00:00Z\n"},"href":{"type":"string","description":"An absolute URL that is the subject of the link's context.\n"},"issuerSide":{"type":"string","description":"Information about token side; ASIDE, ZSIDE\n"},"name":{"type":"string","description":"Name of the Service Token\n"},"notifications":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenNotification:ServiceTokenNotification"},"description":"Preferences for notifications on Service Token configuration or status changes\n"},"project":{"$ref":"#/types/equinix:fabric/ServiceTokenProject:ServiceTokenProject","description":"Project information\n"},"serviceTokenConnections":{"type":"array","items":{"$ref":"#/types/equinix:fabric/ServiceTokenServiceTokenConnection:ServiceTokenServiceTokenConnection"},"description":"Service Token Connection Type Information\n"},"state":{"type":"string","description":"Service token state; ACTIVE, INACTIVE, EXPIRED, DELETED\n"},"type":{"type":"string","description":"Service Token Type; VC*TOKEN,EPL*TOKEN\n"},"uuid":{"type":"string","description":"Equinix-assigned service token identifier\n"}},"type":"object"}},"equinix:fabric/stream:Stream":{"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric Stream\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/KnowledgeCenter/Fabric/GettingStarted/Integrating-with-Fabric-V4-APIs/IntegrateWithSink.htm\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Streams\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Stream;\nimport com.pulumi.equinix.fabric.StreamArgs;\nimport com.pulumi.equinix.fabric.inputs.StreamProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var newStream = new Stream(\"newStream\", StreamArgs.builder()\n            .type(\"TELEMETRY_STREAM\")\n            .description(\"\u003cdescription_of_stream_resource\u003e\")\n            .project(StreamProjectArgs.builder()\n                .project_id(\"\u003cdestination_project_id_for_stream\")\n                .build())\n            .build());\n\n        ctx.export(\"streamState\", newStream.state());\n    }\n}\n```\n```yaml\nresources:\n  newStream:\n    type: equinix:fabric:Stream\n    properties:\n      type: TELEMETRY_STREAM\n      description: \u003cdescription_of_stream_resource\u003e\n      project:\n        project_id: \u003cdestination_project_id_for_stream\noutputs:\n  streamState: ${newStream.state}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"assetsCount":{"type":"integer","description":"Count of the streaming assets attached to the stream resource\n"},"changeLog":{"$ref":"#/types/equinix:fabric/StreamChangeLog:StreamChangeLog","description":"Details of the last change on the stream resource\n"},"description":{"type":"string","description":"Customer-provided description of the stream resource\n"},"href":{"type":"string","description":"Equinix auto generated URI to the stream resource in Equinix Portal\n"},"name":{"type":"string","description":"Customer-provided name of the stream resource\n"},"project":{"$ref":"#/types/equinix:fabric/StreamProject:StreamProject","description":"Equinix Project attribute object\n"},"state":{"type":"string","description":"Value representing provisioning status for the stream resource\n"},"streamSubscriptionsCount":{"type":"integer","description":"Count of the client subscriptions on the stream resource\n"},"timeouts":{"$ref":"#/types/equinix:fabric/StreamTimeouts:StreamTimeouts"},"type":{"type":"string","description":"Equinix defined Streaming Type\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for the stream resource\n"}},"required":["assetsCount","changeLog","description","href","name","project","state","streamSubscriptionsCount","type","uuid"],"inputProperties":{"description":{"type":"string","description":"Customer-provided description of the stream resource\n"},"name":{"type":"string","description":"Customer-provided name of the stream resource\n"},"project":{"$ref":"#/types/equinix:fabric/StreamProject:StreamProject","description":"Equinix Project attribute object\n"},"timeouts":{"$ref":"#/types/equinix:fabric/StreamTimeouts:StreamTimeouts"},"type":{"type":"string","description":"Equinix defined Streaming Type\n"}},"requiredInputs":["description","project","type"],"stateInputs":{"description":"Input properties used for looking up and filtering Stream resources.\n","properties":{"assetsCount":{"type":"integer","description":"Count of the streaming assets attached to the stream resource\n"},"changeLog":{"$ref":"#/types/equinix:fabric/StreamChangeLog:StreamChangeLog","description":"Details of the last change on the stream resource\n"},"description":{"type":"string","description":"Customer-provided description of the stream resource\n"},"href":{"type":"string","description":"Equinix auto generated URI to the stream resource in Equinix Portal\n"},"name":{"type":"string","description":"Customer-provided name of the stream resource\n"},"project":{"$ref":"#/types/equinix:fabric/StreamProject:StreamProject","description":"Equinix Project attribute object\n"},"state":{"type":"string","description":"Value representing provisioning status for the stream resource\n"},"streamSubscriptionsCount":{"type":"integer","description":"Count of the client subscriptions on the stream resource\n"},"timeouts":{"$ref":"#/types/equinix:fabric/StreamTimeouts:StreamTimeouts"},"type":{"type":"string","description":"Equinix defined Streaming Type\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for the stream resource\n"}},"type":"object"}},"equinix:fabric/streamAlertRule:StreamAlertRule":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.StreamAlertRule;\nimport com.pulumi.equinix.fabric.StreamAlertRuleArgs;\nimport com.pulumi.equinix.fabric.inputs.StreamAlertRuleMetricSelectorArgs;\nimport com.pulumi.equinix.fabric.inputs.StreamAlertRuleDetectionMethodArgs;\nimport com.pulumi.equinix.fabric.inputs.StreamAlertRuleResourceSelectorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var newStreamAlertRule = new StreamAlertRule(\"newStreamAlertRule\", StreamAlertRuleArgs.builder()\n            .streamId(\"\u003cstream_id\u003e\")\n            .type(\"METRIC_ALERT\")\n            .description(\"\u003cdescription\u003e\")\n            .enabled(true)\n            .metricSelector(StreamAlertRuleMetricSelectorArgs.builder()\n                .include(\"equinix.fabric.connection.bandwidth_tx.usage\")\n                .build())\n            .detectionMethod(StreamAlertRuleDetectionMethodArgs.builder()\n                .operand(\"ABOVE\")\n                .window_size(\"\u003cwindow_size\u003e\")\n                .warning_threshold(\"\u003cwarning_threshold\u003e\")\n                .critical_threshold(\"\u003ccritical_threshold\u003e\")\n                .build())\n            .resourceSelector(StreamAlertRuleResourceSelectorArgs.builder()\n                .include(\"*/connections/\u003cconnection_id\u003e\")\n                .build())\n            .build());\n\n        ctx.export(\"streamAlertRuleType\", newStreamAlertRule.type());\n        ctx.export(\"streamAlertRuleId\", newStreamAlertRule.uuid());\n        ctx.export(\"streamAlertRuleStreamId\", newStreamAlertRule.streamId());\n        ctx.export(\"streamAlertRuleState\", newStreamAlertRule.state());\n    }\n}\n```\n```yaml\nresources:\n  newStreamAlertRule:\n    type: equinix:fabric:StreamAlertRule\n    properties:\n      streamId: \u003cstream_id\u003e\n      type: METRIC_ALERT\n      description: \u003cdescription\u003e\n      enabled: true\n      metricSelector:\n        include:\n          - equinix.fabric.connection.bandwidth_tx.usage\n      detectionMethod:\n        operand: ABOVE\n        window_size: \u003cwindow_size\u003e\n        warning_threshold: \u003cwarning_threshold\u003e\n        critical_threshold: \u003ccritical_threshold\u003e\n      resourceSelector:\n        include:\n          - '*/connections/\u003cconnection_id\u003e'\noutputs:\n  streamAlertRuleType: ${newStreamAlertRule.type}\n  streamAlertRuleId: ${newStreamAlertRule.uuid}\n  streamAlertRuleStreamId: ${newStreamAlertRule.streamId}\n  streamAlertRuleState: ${newStreamAlertRule.state}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"changeLog":{"$ref":"#/types/equinix:fabric/StreamAlertRuleChangeLog:StreamAlertRuleChangeLog","description":"Details of the last change on the stream resource\n"},"description":{"type":"string","description":"Customer-provided stream alert rule description\n"},"detectionMethod":{"$ref":"#/types/equinix:fabric/StreamAlertRuleDetectionMethod:StreamAlertRuleDetectionMethod","description":"Detection method for stream alert rule\n"},"enabled":{"type":"boolean","description":"Stream alert rule enabled status\n"},"href":{"type":"string","description":"Equinix assigned URI of the stream alert rule\n"},"metricSelector":{"$ref":"#/types/equinix:fabric/StreamAlertRuleMetricSelector:StreamAlertRuleMetricSelector","description":"Metric selector for the stream alert rule\n"},"name":{"type":"string","description":"Customer-provided stream alert rule name\n"},"resourceSelector":{"$ref":"#/types/equinix:fabric/StreamAlertRuleResourceSelector:StreamAlertRuleResourceSelector","description":"Resource selector for the stream alert rule\n"},"state":{"type":"string","description":"Value representing provisioning status for the stream alert rule\n"},"streamId":{"type":"string","description":"The stream UUID that contains this alert rule\n"},"timeouts":{"$ref":"#/types/equinix:fabric/StreamAlertRuleTimeouts:StreamAlertRuleTimeouts"},"type":{"type":"string","description":"Type of the stream alert rule\n"},"uuid":{"type":"string","description":"Equinix assigned unique identifier for the stream alert rule\n"}},"required":["changeLog","description","detectionMethod","enabled","href","metricSelector","name","resourceSelector","state","streamId","type","uuid"],"inputProperties":{"description":{"type":"string","description":"Customer-provided stream alert rule description\n"},"detectionMethod":{"$ref":"#/types/equinix:fabric/StreamAlertRuleDetectionMethod:StreamAlertRuleDetectionMethod","description":"Detection method for stream alert rule\n"},"enabled":{"type":"boolean","description":"Stream alert rule enabled status\n"},"metricSelector":{"$ref":"#/types/equinix:fabric/StreamAlertRuleMetricSelector:StreamAlertRuleMetricSelector","description":"Metric selector for the stream alert rule\n"},"name":{"type":"string","description":"Customer-provided stream alert rule name\n"},"resourceSelector":{"$ref":"#/types/equinix:fabric/StreamAlertRuleResourceSelector:StreamAlertRuleResourceSelector","description":"Resource selector for the stream alert rule\n"},"streamId":{"type":"string","description":"The stream UUID that contains this alert rule\n"},"timeouts":{"$ref":"#/types/equinix:fabric/StreamAlertRuleTimeouts:StreamAlertRuleTimeouts"},"type":{"type":"string","description":"Type of the stream alert rule\n"}},"requiredInputs":["description","detectionMethod","metricSelector","resourceSelector","streamId","type"],"stateInputs":{"description":"Input properties used for looking up and filtering StreamAlertRule resources.\n","properties":{"changeLog":{"$ref":"#/types/equinix:fabric/StreamAlertRuleChangeLog:StreamAlertRuleChangeLog","description":"Details of the last change on the stream resource\n"},"description":{"type":"string","description":"Customer-provided stream alert rule description\n"},"detectionMethod":{"$ref":"#/types/equinix:fabric/StreamAlertRuleDetectionMethod:StreamAlertRuleDetectionMethod","description":"Detection method for stream alert rule\n"},"enabled":{"type":"boolean","description":"Stream alert rule enabled status\n"},"href":{"type":"string","description":"Equinix assigned URI of the stream alert rule\n"},"metricSelector":{"$ref":"#/types/equinix:fabric/StreamAlertRuleMetricSelector:StreamAlertRuleMetricSelector","description":"Metric selector for the stream alert rule\n"},"name":{"type":"string","description":"Customer-provided stream alert rule name\n"},"resourceSelector":{"$ref":"#/types/equinix:fabric/StreamAlertRuleResourceSelector:StreamAlertRuleResourceSelector","description":"Resource selector for the stream alert rule\n"},"state":{"type":"string","description":"Value representing provisioning status for the stream alert rule\n"},"streamId":{"type":"string","description":"The stream UUID that contains this alert rule\n"},"timeouts":{"$ref":"#/types/equinix:fabric/StreamAlertRuleTimeouts:StreamAlertRuleTimeouts"},"type":{"type":"string","description":"Type of the stream alert rule\n"},"uuid":{"type":"string","description":"Equinix assigned unique identifier for the stream alert rule\n"}},"type":"object"}},"equinix:fabric/streamAttachment:StreamAttachment":{"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric Stream Attachments\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/KnowledgeCenter/Fabric/GettingStarted/Integrating-with-Fabric-V4-APIs/IntegrateWithSink.htm\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Streams\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst asset = new equinix.fabric.StreamAttachment(\"asset\", {\n    asset: \"\u003casset_group\u003e\",\n    assetId: \"\u003cid_of_the_asset_being_attached\u003e\",\n    streamId: \"\u003cid_of_the_stream_asset_is_being_attached_to\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nasset = equinix.fabric.StreamAttachment(\"asset\",\n    asset=\"\u003casset_group\u003e\",\n    asset_id=\"\u003cid_of_the_asset_being_attached\u003e\",\n    stream_id=\"\u003cid_of_the_stream_asset_is_being_attached_to\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var asset = new Equinix.Fabric.StreamAttachment(\"asset\", new()\n    {\n        Asset = \"\u003casset_group\u003e\",\n        AssetId = \"\u003cid_of_the_asset_being_attached\u003e\",\n        StreamId = \"\u003cid_of_the_stream_asset_is_being_attached_to\u003e\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.NewStreamAttachment(ctx, \"asset\", \u0026fabric.StreamAttachmentArgs{\n\t\t\tAsset:    pulumi.String(\"\u003casset_group\u003e\"),\n\t\t\tAssetId:  pulumi.String(\"\u003cid_of_the_asset_being_attached\u003e\"),\n\t\t\tStreamId: pulumi.String(\"\u003cid_of_the_stream_asset_is_being_attached_to\u003e\"),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.StreamAttachment;\nimport com.pulumi.equinix.fabric.StreamAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var asset = new StreamAttachment(\"asset\", StreamAttachmentArgs.builder()\n            .asset(\"\u003casset_group\u003e\")\n            .assetId(\"\u003cid_of_the_asset_being_attached\u003e\")\n            .streamId(\"\u003cid_of_the_stream_asset_is_being_attached_to\u003e\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  asset:\n    type: equinix:fabric:StreamAttachment\n    properties:\n      asset: \u003casset_group\u003e\n      assetId: \u003cid_of_the_asset_being_attached\u003e\n      streamId: \u003cid_of_the_stream_asset_is_being_attached_to\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"asset":{"type":"string","description":"Equinix defined asset category. Matches the product name the asset is a part of\n"},"assetId":{"type":"string","description":"Equinix defined UUID of the asset being attached to the stream\n"},"attachmentStatus":{"type":"string","description":"Value representing status for the stream attachment\n"},"href":{"type":"string","description":"Equinix auto generated URI to the stream attachment in Equinix Portal\n"},"metricsEnabled":{"type":"boolean","description":"Boolean value indicating enablement of metrics for this asset stream attachment\n"},"streamId":{"type":"string","description":"UUID of the stream that is the target of this asset attachment\n"},"timeouts":{"$ref":"#/types/equinix:fabric/StreamAttachmentTimeouts:StreamAttachmentTimeouts"},"type":{"type":"string","description":"Equinix defined type for the asset stream attachment\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for the stream attachment\n"}},"required":["asset","assetId","attachmentStatus","href","metricsEnabled","streamId","type","uuid"],"inputProperties":{"asset":{"type":"string","description":"Equinix defined asset category. Matches the product name the asset is a part of\n"},"assetId":{"type":"string","description":"Equinix defined UUID of the asset being attached to the stream\n"},"metricsEnabled":{"type":"boolean","description":"Boolean value indicating enablement of metrics for this asset stream attachment\n"},"streamId":{"type":"string","description":"UUID of the stream that is the target of this asset attachment\n"},"timeouts":{"$ref":"#/types/equinix:fabric/StreamAttachmentTimeouts:StreamAttachmentTimeouts"}},"requiredInputs":["asset","assetId","streamId"],"stateInputs":{"description":"Input properties used for looking up and filtering StreamAttachment resources.\n","properties":{"asset":{"type":"string","description":"Equinix defined asset category. Matches the product name the asset is a part of\n"},"assetId":{"type":"string","description":"Equinix defined UUID of the asset being attached to the stream\n"},"attachmentStatus":{"type":"string","description":"Value representing status for the stream attachment\n"},"href":{"type":"string","description":"Equinix auto generated URI to the stream attachment in Equinix Portal\n"},"metricsEnabled":{"type":"boolean","description":"Boolean value indicating enablement of metrics for this asset stream attachment\n"},"streamId":{"type":"string","description":"UUID of the stream that is the target of this asset attachment\n"},"timeouts":{"$ref":"#/types/equinix:fabric/StreamAttachmentTimeouts:StreamAttachmentTimeouts"},"type":{"type":"string","description":"Equinix defined type for the asset stream attachment\n"},"uuid":{"type":"string","description":"Equinix-assigned unique id for the stream attachment\n"}},"type":"object"}},"equinix:fabric/streamSubscription:StreamSubscription":{"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric Stream Subscriptions\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/KnowledgeCenter/Fabric/GettingStarted/Integrating-with-Fabric-V4-APIs/IntegrateWithSink.htm\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Stream-Subscriptions\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.StreamSubscription;\nimport com.pulumi.equinix.fabric.StreamSubscriptionArgs;\nimport com.pulumi.equinix.fabric.inputs.StreamSubscriptionEventSelectorArgs;\nimport com.pulumi.equinix.fabric.inputs.StreamSubscriptionMetricSelectorArgs;\nimport com.pulumi.equinix.fabric.inputs.StreamSubscriptionSinkArgs;\nimport com.pulumi.equinix.fabric.inputs.StreamSubscriptionSinkCredentialArgs;\nimport com.pulumi.equinix.fabric.inputs.StreamSubscriptionSinkSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var sPLUNK = new StreamSubscription(\"sPLUNK\", StreamSubscriptionArgs.builder()\n            .description(\"\u003cdescription\u003e\")\n            .enabled(true)\n            .eventSelector(StreamSubscriptionEventSelectorArgs.builder()\n                .include(\"equinix.fabric.connection.*\")\n                .build())\n            .metricSelector(StreamSubscriptionMetricSelectorArgs.builder()\n                .include(\"equinix.fabric.connection.*\")\n                .build())\n            .sink(StreamSubscriptionSinkArgs.builder()\n                .credential(StreamSubscriptionSinkCredentialArgs.builder()\n                    .accessToken(\"\u003csplunk_access_token\u003e\")\n                    .type(\"ACCESS_TOKEN\")\n                    .build())\n                .settings(StreamSubscriptionSinkSettingsArgs.builder()\n                    .eventIndex(\"\u003csplunk_event_index\u003e\")\n                    .metricIndex(\"\u003csplunk_metric_index\u003e\")\n                    .source(\"\u003csplunk_source\u003e\")\n                    .build())\n                .type(\"SPLUNK_HEC\")\n                .uri(\"\u003csplunk_uri\u003e\")\n                .build())\n            .streamId(\"\u003cstream_id\u003e\")\n            .type(\"STREAM_SUBSCRIPTION\")\n            .build());\n\n        var sLACK = new StreamSubscription(\"sLACK\", StreamSubscriptionArgs.builder()\n            .description(\"\u003cdescription\u003e\")\n            .enabled(true)\n            .sink(StreamSubscriptionSinkArgs.builder()\n                .type(\"SLACK\")\n                .uri(\"\u003cslack_uri\u003e\")\n                .build())\n            .streamId(\"\u003cstream_id\u003e\")\n            .type(\"STREAM_SUBSCRIPTION\")\n            .build());\n\n        var pAGERDUTY = new StreamSubscription(\"pAGERDUTY\", StreamSubscriptionArgs.builder()\n            .description(\"\u003cdescription\u003e\")\n            .enabled(true)\n            .sink(StreamSubscriptionSinkArgs.builder()\n                .credential(StreamSubscriptionSinkCredentialArgs.builder()\n                    .integrationKey(\"\u003cpager_duty_integration_key\u003e\")\n                    .type(\"INTEGRATION_KEY\")\n                    .build())\n                .host(\"\u003cpager_duty_host\")\n                .settings(StreamSubscriptionSinkSettingsArgs.builder()\n                    .alertUri(\"\u003cpager_duty_alert_uri\u003e\")\n                    .changeUri(\"\u003cpager_duty_change_uri\u003e\")\n                    .build())\n                .type(\"PAGERDUTY\")\n                .build())\n            .streamId(\"\u003cstream_id\u003e\")\n            .type(\"STREAM_SUBSCRIPTION\")\n            .build());\n\n        var dATADOG = new StreamSubscription(\"dATADOG\", StreamSubscriptionArgs.builder()\n            .description(\"\u003cdescription\u003e\")\n            .enabled(true)\n            .sink(StreamSubscriptionSinkArgs.builder()\n                .credential(StreamSubscriptionSinkCredentialArgs.builder()\n                    .apiKey(\"\u003cdatadog_api_key\u003e\")\n                    .type(\"API_KEY\")\n                    .build())\n                .host(\"\u003cdatadog_host\u003e\")\n                .settings(StreamSubscriptionSinkSettingsArgs.builder()\n                    .applicationKey(\"\u003cdatadog_application_key\u003e\")\n                    .eventUri(\"\u003cdatadog_event_uri\u003e\")\n                    .metricUri(\"\u003cdatadog_metric_uri\u003e\")\n                    .source(\"Equinix\")\n                    .build())\n                .type(\"DATADOG\")\n                .build())\n            .streamId(\"\u003cstream_id\u003e\")\n            .type(\"STREAM_SUBSCRIPTION\")\n            .build());\n\n        var mSTEAMS = new StreamSubscription(\"mSTEAMS\", StreamSubscriptionArgs.builder()\n            .description(\"\u003cdescription\u003e\")\n            .enabled(true)\n            .sink(StreamSubscriptionSinkArgs.builder()\n                .type(\"TEAMS\")\n                .uri(\"\u003cmsteams_uri\u003e\")\n                .build())\n            .streamId(\"\u003cstream_id\u003e\")\n            .type(\"STREAM_SUBSCRIPTION\")\n            .build());\n\n        var servicenow = new StreamSubscription(\"servicenow\", StreamSubscriptionArgs.builder()\n            .description(\"\u003cdescription\u003e\")\n            .enabled(true)\n            .sink(StreamSubscriptionSinkArgs.builder()\n                .credential(StreamSubscriptionSinkCredentialArgs.builder()\n                    .password(\"\u003cservicenow_password\u003e\")\n                    .type(\"USERNAME_PASSWORD\")\n                    .username(\"\u003cservicenow_username\u003e\")\n                    .build())\n                .host(\"\u003cservicenow_host\u003e\")\n                .settings(StreamSubscriptionSinkSettingsArgs.builder()\n                    .source(\"Equinix\")\n                    .build())\n                .type(\"SERVICENOW\")\n                .build())\n            .streamId(\"\u003cstream_id\u003e\")\n            .type(\"STREAM_SUBSCRIPTION\")\n            .build());\n\n        var webhook = new StreamSubscription(\"webhook\", StreamSubscriptionArgs.builder()\n            .description(\"\u003cdescription\u003e\")\n            .enabled(true)\n            .sink(StreamSubscriptionSinkArgs.builder()\n                .settings(StreamSubscriptionSinkSettingsArgs.builder()\n                    .eventUri(\"\u003cwebhook_event_uri\u003e\")\n                    .format(\"\u003cwebhook_format\u003e\")\n                    .metricUri(\"\u003cwebhook_metric_uri\u003e\")\n                    .build())\n                .type(\"WEBHOOK\")\n                .build())\n            .streamId(\"\u003cstream_id\u003e\")\n            .type(\"STREAM_SUBSCRIPTION\")\n            .build());\n\n        var grafana = new StreamSubscription(\"grafana\", StreamSubscriptionArgs.builder()\n            .description(\"\u003cdescription\u003e\")\n            .enabled(true)\n            .sink(StreamSubscriptionSinkArgs.builder()\n                .settings(StreamSubscriptionSinkSettingsArgs.builder()\n                    .eventUri(\"\u003cgrafana_event_uri\u003e\")\n                    .format(\"OPENTELEMETRY\")\n                    .metricUri(\"\u003cgrafana_metric_uri\u003e\")\n                    .build())\n                .type(\"WEBHOOK\")\n                .build())\n            .streamId(\"\u003cstream_id\u003e\")\n            .type(\"STREAM_SUBSCRIPTION\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  sPLUNK:\n    type: equinix:fabric:StreamSubscription\n    properties:\n      description: \u003cdescription\u003e\n      enabled: true\n      eventSelector:\n        include:\n          - equinix.fabric.connection.*\n      metricSelector:\n        include:\n          - equinix.fabric.connection.*\n      sink:\n        credential:\n          accessToken: \u003csplunk_access_token\u003e\n          type: ACCESS_TOKEN\n        settings:\n          eventIndex: \u003csplunk_event_index\u003e\n          metricIndex: \u003csplunk_metric_index\u003e\n          source: \u003csplunk_source\u003e\n        type: SPLUNK_HEC\n        uri: \u003csplunk_uri\u003e\n      streamId: \u003cstream_id\u003e\n      type: STREAM_SUBSCRIPTION\n  sLACK:\n    type: equinix:fabric:StreamSubscription\n    properties:\n      description: \u003cdescription\u003e\n      enabled: true\n      sink:\n        type: SLACK\n        uri: \u003cslack_uri\u003e\n      streamId: \u003cstream_id\u003e\n      type: STREAM_SUBSCRIPTION\n  pAGERDUTY:\n    type: equinix:fabric:StreamSubscription\n    properties:\n      description: \u003cdescription\u003e\n      enabled: true\n      sink:\n        credential:\n          integrationKey: \u003cpager_duty_integration_key\u003e\n          type: INTEGRATION_KEY\n        host: \u003cpager_duty_host\n        settings:\n          alertUri: \u003cpager_duty_alert_uri\u003e\n          changeUri: \u003cpager_duty_change_uri\u003e\n        type: PAGERDUTY\n      streamId: \u003cstream_id\u003e\n      type: STREAM_SUBSCRIPTION\n  dATADOG:\n    type: equinix:fabric:StreamSubscription\n    properties:\n      description: \u003cdescription\u003e\n      enabled: true\n      sink:\n        credential:\n          apiKey: \u003cdatadog_api_key\u003e\n          type: API_KEY\n        host: \u003cdatadog_host\u003e\n        settings:\n          applicationKey: \u003cdatadog_application_key\u003e\n          eventUri: \u003cdatadog_event_uri\u003e\n          metricUri: \u003cdatadog_metric_uri\u003e\n          source: Equinix\n        type: DATADOG\n      streamId: \u003cstream_id\u003e\n      type: STREAM_SUBSCRIPTION\n  mSTEAMS:\n    type: equinix:fabric:StreamSubscription\n    properties:\n      description: \u003cdescription\u003e\n      enabled: true\n      sink:\n        type: TEAMS\n        uri: \u003cmsteams_uri\u003e\n      streamId: \u003cstream_id\u003e\n      type: STREAM_SUBSCRIPTION\n  servicenow:\n    type: equinix:fabric:StreamSubscription\n    properties:\n      description: \u003cdescription\u003e\n      enabled: true\n      sink:\n        credential:\n          password: \u003cservicenow_password\u003e\n          type: USERNAME_PASSWORD\n          username: \u003cservicenow_username\u003e\n        host: \u003cservicenow_host\u003e\n        settings:\n          source: Equinix\n        type: SERVICENOW\n      streamId: \u003cstream_id\u003e\n      type: STREAM_SUBSCRIPTION\n  webhook:\n    type: equinix:fabric:StreamSubscription\n    properties:\n      description: \u003cdescription\u003e\n      enabled: true\n      sink:\n        settings:\n          eventUri: \u003cwebhook_event_uri\u003e\n          format: \u003cwebhook_format\u003e\n          metricUri: \u003cwebhook_metric_uri\u003e\n        type: WEBHOOK\n      streamId: \u003cstream_id\u003e\n      type: STREAM_SUBSCRIPTION\n  grafana:\n    type: equinix:fabric:StreamSubscription\n    properties:\n      description: \u003cdescription\u003e\n      enabled: true\n      sink:\n        settings:\n          eventUri: \u003cgrafana_event_uri\u003e\n          format: OPENTELEMETRY\n          metricUri: \u003cgrafana_metric_uri\u003e\n        type: WEBHOOK\n      streamId: \u003cstream_id\u003e\n      type: STREAM_SUBSCRIPTION\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"changeLog":{"$ref":"#/types/equinix:fabric/StreamSubscriptionChangeLog:StreamSubscriptionChangeLog","description":"Details of the last change on the stream resource\n"},"description":{"type":"string","description":"Customer-provided stream subscription description\n"},"enabled":{"type":"boolean","description":"Stream subscription enabled status\n"},"eventSelector":{"$ref":"#/types/equinix:fabric/StreamSubscriptionEventSelector:StreamSubscriptionEventSelector","description":"Lists of events to be included/excluded on the stream subscription\n"},"href":{"type":"string","description":"Equinix assigned URI of the stream subscription resource\n"},"metricSelector":{"$ref":"#/types/equinix:fabric/StreamSubscriptionMetricSelector:StreamSubscriptionMetricSelector","description":"Lists of metrics to be included/excluded on the stream subscription\n"},"name":{"type":"string","description":"Customer-provided stream subscription name\n"},"sink":{"$ref":"#/types/equinix:fabric/StreamSubscriptionSink:StreamSubscriptionSink","description":"The details of the subscriber to the Equinix Stream\n"},"state":{"type":"string","description":"Value representing provisioning status for the stream resource\n"},"streamId":{"type":"string","description":"The uuid of the stream that is the target of the stream subscription\n"},"timeouts":{"$ref":"#/types/equinix:fabric/StreamSubscriptionTimeouts:StreamSubscriptionTimeouts"},"type":{"type":"string","description":"Type of the stream subscription request\n"},"uuid":{"type":"string","description":"Equinix assigned unique identifier of the stream subscription resource\n"}},"required":["changeLog","description","enabled","eventSelector","href","metricSelector","name","sink","state","streamId","type","uuid"],"inputProperties":{"description":{"type":"string","description":"Customer-provided stream subscription description\n"},"enabled":{"type":"boolean","description":"Stream subscription enabled status\n"},"eventSelector":{"$ref":"#/types/equinix:fabric/StreamSubscriptionEventSelector:StreamSubscriptionEventSelector","description":"Lists of events to be included/excluded on the stream subscription\n"},"metricSelector":{"$ref":"#/types/equinix:fabric/StreamSubscriptionMetricSelector:StreamSubscriptionMetricSelector","description":"Lists of metrics to be included/excluded on the stream subscription\n"},"name":{"type":"string","description":"Customer-provided stream subscription name\n"},"sink":{"$ref":"#/types/equinix:fabric/StreamSubscriptionSink:StreamSubscriptionSink","description":"The details of the subscriber to the Equinix Stream\n"},"streamId":{"type":"string","description":"The uuid of the stream that is the target of the stream subscription\n"},"timeouts":{"$ref":"#/types/equinix:fabric/StreamSubscriptionTimeouts:StreamSubscriptionTimeouts"},"type":{"type":"string","description":"Type of the stream subscription request\n"}},"requiredInputs":["description","enabled","sink","streamId","type"],"stateInputs":{"description":"Input properties used for looking up and filtering StreamSubscription resources.\n","properties":{"changeLog":{"$ref":"#/types/equinix:fabric/StreamSubscriptionChangeLog:StreamSubscriptionChangeLog","description":"Details of the last change on the stream resource\n"},"description":{"type":"string","description":"Customer-provided stream subscription description\n"},"enabled":{"type":"boolean","description":"Stream subscription enabled status\n"},"eventSelector":{"$ref":"#/types/equinix:fabric/StreamSubscriptionEventSelector:StreamSubscriptionEventSelector","description":"Lists of events to be included/excluded on the stream subscription\n"},"href":{"type":"string","description":"Equinix assigned URI of the stream subscription resource\n"},"metricSelector":{"$ref":"#/types/equinix:fabric/StreamSubscriptionMetricSelector:StreamSubscriptionMetricSelector","description":"Lists of metrics to be included/excluded on the stream subscription\n"},"name":{"type":"string","description":"Customer-provided stream subscription name\n"},"sink":{"$ref":"#/types/equinix:fabric/StreamSubscriptionSink:StreamSubscriptionSink","description":"The details of the subscriber to the Equinix Stream\n"},"state":{"type":"string","description":"Value representing provisioning status for the stream resource\n"},"streamId":{"type":"string","description":"The uuid of the stream that is the target of the stream subscription\n"},"timeouts":{"$ref":"#/types/equinix:fabric/StreamSubscriptionTimeouts:StreamSubscriptionTimeouts"},"type":{"type":"string","description":"Type of the stream subscription request\n"},"uuid":{"type":"string","description":"Equinix assigned unique identifier of the stream subscription resource\n"}},"type":"object"}},"equinix:metal/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\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as _null from \"@pulumi/null\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst bgpPassword = \"955dB0b81Ef\";\nconst projectId = \"\u003cUUID_of_your_project\u003e\";\nconst addr = new equinix.metal.ReservedIpBlock(\"addr\", {\n    projectId: projectId,\n    metro: \"ny\",\n    quantity: 1,\n});\nconst interfaceLo0 = pulumi.interpolate`auto lo:0\niface lo:0 inet static\n   address ${addr.address}\n   netmask ${addr.netmask}\n`;\nconst test = new equinix.metal.Device(\"test\", {\n    hostname: \"terraform-test-bgp-sesh\",\n    plan: equinix.metal.Plan.C3SmallX86,\n    metro: \"ny\",\n    operatingSystem: equinix.metal.OperatingSystem.Ubuntu20_04,\n    billingCycle: equinix.metal.BillingCycle.Hourly,\n    projectId: projectId,\n});\nconst birdConf = pulumi.all([addr.address, addr.cidr, test.network, test.network]).apply(([address, cidr, testNetwork, testNetwork1]) =\u003e `filter equinix_metal_bgp {\n    if net = ${address}/${cidr} then accept;\n}\nrouter id ${testNetwork[2].address};\nprotocol direct {\n    interface \"lo\";\n}\nprotocol kernel {\n    scan time 10;\n    persist;\n    import all;\n    export all;\n}\nprotocol device {\n    scan time 10;\n}\nprotocol bgp {\n    export filter equinix_metal_bgp;\n    local as 65000;\n    neighbor ${testNetwork1[2].gateway} as 65530;\n    password \"${bgpPassword}\";\n}\n`);\nconst testBgpSession = new equinix.metal.BgpSession(\"testBgpSession\", {\n    deviceId: test.id,\n    addressFamily: \"ipv4\",\n});\nconst configureBird = new _null.Resource(\"configureBird\", {triggers: {\n    bird_conf: birdConf,\n    \"interface\": interfaceLo0,\n}});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\nimport pulumi_null as null\n\nbgp_password = \"955dB0b81Ef\"\nproject_id = \"\u003cUUID_of_your_project\u003e\"\naddr = equinix.metal.ReservedIpBlock(\"addr\",\n    project_id=project_id,\n    metro=\"ny\",\n    quantity=1)\ninterface_lo0 = pulumi.Output.all(\n    address=addr.address,\n    netmask=addr.netmask\n).apply(lambda resolved_outputs: f\"\"\"auto lo:0\niface lo:0 inet static\n   address {resolved_outputs['address']}\n   netmask {resolved_outputs['netmask']}\n\"\"\")\n\ntest = equinix.metal.Device(\"test\",\n    hostname=\"terraform-test-bgp-sesh\",\n    plan=equinix.metal.Plan.C3_SMALL_X86,\n    metro=\"ny\",\n    operating_system=equinix.metal.OperatingSystem.UBUNTU20_04,\n    billing_cycle=equinix.metal.BillingCycle.HOURLY,\n    project_id=project_id)\nbird_conf = pulumi.Output.all(\n    address=addr.address,\n    cidr=addr.cidr,\n    testNetwork=test.network,\n    testNetwork1=test.network\n).apply(lambda resolved_outputs: f\"\"\"filter equinix_metal_bgp {{\n    if net = {resolved_outputs['address']}/{resolved_outputs['cidr']} then accept;\n}}\nrouter id {test_network[2].address};\nprotocol direct {{\n    interface \"lo\";\n}}\nprotocol kernel {{\n    scan time 10;\n    persist;\n    import all;\n    export all;\n}}\nprotocol device {{\n    scan time 10;\n}}\nprotocol bgp {{\n    export filter equinix_metal_bgp;\n    local as 65000;\n    neighbor {test_network1[2].gateway} as 65530;\n    password \"{bgp_password}\";\n}}\n\"\"\")\n\ntest_bgp_session = equinix.metal.BgpSession(\"testBgpSession\",\n    device_id=test.id,\n    address_family=\"ipv4\")\nconfigure_bird = null.Resource(\"configureBird\", triggers={\n    \"bird_conf\": bird_conf,\n    \"interface\": interface_lo0,\n})\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi-null/sdk/go/null\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbgpPassword := \"955dB0b81Ef\"\n\t\tprojectId := \"\u003cUUID_of_your_project\u003e\"\n\t\taddr, err := metal.NewReservedIpBlock(ctx, \"addr\", \u0026metal.ReservedIpBlockArgs{\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tMetro:     pulumi.String(\"ny\"),\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\tinterfaceLo0 := pulumi.All(addr.Address, addr.Netmask).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\taddress := _args[0].(string)\n\t\t\tnetmask := _args[1].(string)\n\t\t\treturn fmt.Sprintf(\"auto lo:0\\niface lo:0 inet static\\n   address %v\\n   netmask %v\\n\", address, netmask), nil\n\t\t}).(pulumi.StringOutput)\n\t\ttest, err := metal.NewDevice(ctx, \"test\", \u0026metal.DeviceArgs{\n\t\t\tHostname:        pulumi.String(\"terraform-test-bgp-sesh\"),\n\t\t\tPlan:            pulumi.String(metal.PlanC3SmallX86),\n\t\t\tMetro:           pulumi.String(\"ny\"),\n\t\t\tOperatingSystem: pulumi.String(metal.OperatingSystem_Ubuntu20_04),\n\t\t\tBillingCycle:    pulumi.String(metal.BillingCycleHourly),\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\tbirdConf := pulumi.All(addr.Address, addr.Cidr, test.Network, test.Network).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\taddress := _args[0].(string)\n\t\t\tcidr := _args[1].(int)\n\t\t\ttestNetwork := _args[2].([]metal.DeviceNetwork)\n\t\t\ttestNetwork1 := _args[3].([]metal.DeviceNetwork)\n\t\t\treturn fmt.Sprintf(`filter equinix_metal_bgp {\n    if net = %v/%v then accept;\n}\nrouter id %v;\nprotocol direct {\n    interface \"lo\";\n}\nprotocol kernel {\n    scan time 10;\n    persist;\n    import all;\n    export all;\n}\nprotocol device {\n    scan time 10;\n}\nprotocol bgp {\n    export filter equinix_metal_bgp;\n    local as 65000;\n    neighbor %v as 65530;\n    password \"%v\";\n}\n`, address, cidr, testNetwork[2].Address, testNetwork1[2].Gateway, bgpPassword), nil\n\t\t}).(pulumi.StringOutput)\n\t\t_, err = metal.NewBgpSession(ctx, \"testBgpSession\", \u0026metal.BgpSessionArgs{\n\t\t\tDeviceId:      test.ID(),\n\t\t\tAddressFamily: pulumi.String(\"ipv4\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = null.NewResource(ctx, \"configureBird\", \u0026null.ResourceArgs{\n\t\t\tTriggers: pulumi.StringMap{\n\t\t\t\t\"bird_conf\": pulumi.String(birdConf),\n\t\t\t\t\"interface\": pulumi.String(interfaceLo0),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\nusing Null = Pulumi.Null;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var bgpPassword = \"955dB0b81Ef\";\n\n    var projectId = \"\u003cUUID_of_your_project\u003e\";\n\n    var addr = new Equinix.Metal.ReservedIpBlock(\"addr\", new()\n    {\n        ProjectId = projectId,\n        Metro = \"ny\",\n        Quantity = 1,\n    });\n\n    var interfaceLo0 = Output.Tuple(addr.Address, addr.Netmask).Apply(values =\u003e\n    {\n        var address = values.Item1;\n        var netmask = values.Item2;\n        return @$\"auto lo:0\niface lo:0 inet static\n   address {address}\n   netmask {netmask}\n\";\n    });\n\n    var test = new Equinix.Metal.Device(\"test\", new()\n    {\n        Hostname = \"terraform-test-bgp-sesh\",\n        Plan = Equinix.Metal.Plan.C3SmallX86,\n        Metro = \"ny\",\n        OperatingSystem = Equinix.Metal.OperatingSystem.Ubuntu20_04,\n        BillingCycle = Equinix.Metal.BillingCycle.Hourly,\n        ProjectId = projectId,\n    });\n\n    var birdConf = Output.Tuple(addr.Address, addr.Cidr, test.Network, test.Network).Apply(values =\u003e\n    {\n        var address = values.Item1;\n        var cidr = values.Item2;\n        var testNetwork = values.Item3;\n        var testNetwork1 = values.Item4;\n        return @$\"filter equinix_metal_bgp {{\n    if net = {address}/{cidr} then accept;\n}}\nrouter id {testNetwork[2].Address};\nprotocol direct {{\n    interface \"\"lo\"\";\n}}\nprotocol kernel {{\n    scan time 10;\n    persist;\n    import all;\n    export all;\n}}\nprotocol device {{\n    scan time 10;\n}}\nprotocol bgp {{\n    export filter equinix_metal_bgp;\n    local as 65000;\n    neighbor {testNetwork1[2].Gateway} as 65530;\n    password \"\"{bgpPassword}\"\";\n}}\n\";\n    });\n\n    var testBgpSession = new Equinix.Metal.BgpSession(\"testBgpSession\", new()\n    {\n        DeviceId = test.Id,\n        AddressFamily = \"ipv4\",\n    });\n\n    var configureBird = new Null.Resource(\"configureBird\", new()\n    {\n        Triggers = \n        {\n            { \"bird_conf\", birdConf },\n            { \"interface\", interfaceLo0 },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.ReservedIpBlock;\nimport com.pulumi.equinix.metal.ReservedIpBlockArgs;\nimport com.pulumi.equinix.metal.Device;\nimport com.pulumi.equinix.metal.DeviceArgs;\nimport com.pulumi.equinix.metal.BgpSession;\nimport com.pulumi.equinix.metal.BgpSessionArgs;\nimport com.pulumi.null.Resource;\nimport com.pulumi.null.ResourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var bgpPassword = \"955dB0b81Ef\";\n\n        final var projectId = \"\u003cUUID_of_your_project\u003e\";\n\n        var addr = new ReservedIpBlock(\"addr\", ReservedIpBlockArgs.builder()\n            .projectId(projectId)\n            .metro(\"ny\")\n            .quantity(1)\n            .build());\n\n        final var interfaceLo0 = Output.tuple(addr.address(), addr.netmask()).applyValue(values -\u003e {\n            var address = values.t1;\n            var netmask = values.t2;\n            return \"\"\"\nauto lo:0\niface lo:0 inet static\n   address %s\n   netmask %s\n\", address,netmask);\n        });\n\n        var test = new Device(\"test\", DeviceArgs.builder()\n            .hostname(\"terraform-test-bgp-sesh\")\n            .plan(\"c3.small.x86\")\n            .metro(\"ny\")\n            .operatingSystem(\"ubuntu_20_04\")\n            .billingCycle(\"hourly\")\n            .projectId(projectId)\n            .build());\n\n        final var birdConf = Output.tuple(addr.address(), addr.cidr(), test.network(), test.network()).applyValue(values -\u003e {\n            var address = values.t1;\n            var cidr = values.t2;\n            var testNetwork = values.t3;\n            var testNetwork1 = values.t4;\n            return \"\"\"\nfilter equinix_metal_bgp {\n    if net = %s/%s then accept;\n}\nrouter id %s;\nprotocol direct {\n    interface \"lo\";\n}\nprotocol kernel {\n    scan time 10;\n    persist;\n    import all;\n    export all;\n}\nprotocol device {\n    scan time 10;\n}\nprotocol bgp {\n    export filter equinix_metal_bgp;\n    local as 65000;\n    neighbor %s as 65530;\n    password \"%s\";\n}\n\", address,cidr,testNetwork[2].address(),testNetwork1[2].gateway(),bgpPassword);\n        });\n\n        var testBgpSession = new BgpSession(\"testBgpSession\", BgpSessionArgs.builder()\n            .deviceId(test.id())\n            .addressFamily(\"ipv4\")\n            .build());\n\n        var configureBird = new Resource(\"configureBird\", ResourceArgs.builder()\n            .triggers(Map.ofEntries(\n                Map.entry(\"bird_conf\", birdConf),\n                Map.entry(\"interface\", interfaceLo0)\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\n  # you need to enable BGP config for the project. If you decide to create new\n  # project, you can use the bgp_config section to enable BGP.\n  # resource \"equinix_metal_project\" \"test\" {\n  #   name = \"testpro\"\n  #   bgp_config {\n  #      deployment_type = \"local\"\n  #      md5 = local.bgp_password\n  #      asn = 65000\n  #   }\n  # }\n  addr:\n    type: equinix:metal:ReservedIpBlock\n    properties:\n      projectId: ${projectId}\n      metro: ny\n      quantity: 1\n  test:\n    type: equinix:metal:Device\n    properties:\n      hostname: terraform-test-bgp-sesh\n      plan: c3.small.x86\n      metro: ny\n      operatingSystem: ubuntu_20_04\n      billingCycle: hourly\n      projectId: ${projectId}\n  testBgpSession:\n    type: equinix:metal:BgpSession\n    name: test\n    properties:\n      deviceId: ${test.id}\n      addressFamily: ipv4\n  configureBird:\n    type: null:Resource\n    name: configure_bird\n    properties:\n      triggers:\n        bird_conf: ${birdConf}\n        interface: ${interfaceLo0}\nvariables:\n  bgpPassword: 955dB0b81Ef\n  projectId: \u003cUUID_of_your_project\u003e\n  interfaceLo0: |\n    auto lo:0\n    iface lo:0 inet static\n       address ${addr.address}\n       netmask ${addr.netmask}\n  birdConf: |\n    filter equinix_metal_bgp {\n        if net = ${addr.address}/${addr.cidr} then accept;\n    }\n    router id ${test.network[2].address};\n    protocol direct {\n        interface \"lo\";\n    }\n    protocol kernel {\n        scan time 10;\n        persist;\n        import all;\n        export all;\n    }\n    protocol device {\n        scan time 10;\n    }\n    protocol bgp {\n        export filter equinix_metal_bgp;\n        local as 65000;\n        neighbor ${test.network[2].gateway} as 65530;\n        password \"${bgpPassword}\";\n    }\n```\n{{% /example %}}\n\n{{% /examples %}}","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","willReplaceOnChanges":true},"defaultRoute":{"type":"boolean","description":"Boolean flag to set the default route policy. False by default.\n","willReplaceOnChanges":true},"deviceId":{"type":"string","description":"ID of device.\n","willReplaceOnChanges":true}},"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","willReplaceOnChanges":true},"defaultRoute":{"type":"boolean","description":"Boolean flag to set the default route policy. False by default.\n","willReplaceOnChanges":true},"deviceId":{"type":"string","description":"ID of device.\n","willReplaceOnChanges":true},"status":{"type":"string","description":"Status of the session - `up` or `down`\n"}},"type":"object"}},"equinix:metal/device:Device":{"description":"Provides an Equinix Metal device resource. This can be used to create, modify, and delete devices.\n\n\u003e **NOTE:** All arguments including the `root_password` and `user_data` will be stored in the raw state as plain-text. Read more about sensitive data in state.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n### example 1\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst web1 = new equinix.metal.Device(\"web1\", {\n    hostname: \"tf.coreos2\",\n    plan: equinix.metal.Plan.C3SmallX86,\n    metro: \"sv\",\n    operatingSystem: \"ubuntu_24_04\",\n    billingCycle: equinix.metal.BillingCycle.Hourly,\n    projectId: projectId,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nweb1 = equinix.metal.Device(\"web1\",\n    hostname=\"tf.coreos2\",\n    plan=equinix.metal.Plan.C3_SMALL_X86,\n    metro=\"sv\",\n    operating_system=\"ubuntu_24_04\",\n    billing_cycle=equinix.metal.BillingCycle.HOURLY,\n    project_id=project_id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewDevice(ctx, \"web1\", \u0026metal.DeviceArgs{\n\t\t\tHostname:        pulumi.String(\"tf.coreos2\"),\n\t\t\tPlan:            pulumi.String(metal.PlanC3SmallX86),\n\t\t\tMetro:           pulumi.String(\"sv\"),\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_24_04\"),\n\t\t\tBillingCycle:    pulumi.String(metal.BillingCycleHourly),\n\t\t\tProjectId:       pulumi.Any(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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var web1 = new Equinix.Metal.Device(\"web1\", new()\n    {\n        Hostname = \"tf.coreos2\",\n        Plan = Equinix.Metal.Plan.C3SmallX86,\n        Metro = \"sv\",\n        OperatingSystem = \"ubuntu_24_04\",\n        BillingCycle = Equinix.Metal.BillingCycle.Hourly,\n        ProjectId = projectId,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Device;\nimport com.pulumi.equinix.metal.DeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var web1 = new Device(\"web1\", DeviceArgs.builder()\n            .hostname(\"tf.coreos2\")\n            .plan(\"c3.small.x86\")\n            .metro(\"sv\")\n            .operatingSystem(\"ubuntu_24_04\")\n            .billingCycle(\"hourly\")\n            .projectId(projectId)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  web1:\n    type: equinix:metal:Device\n    properties:\n      hostname: tf.coreos2\n      plan: c3.small.x86\n      metro: sv\n      operatingSystem: ubuntu_24_04\n      billingCycle: hourly\n      projectId: ${projectId}\n```\n{{% /example %}}\n\n{{% example %}}\n### example 2\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst pxe1 = new equinix.metal.Device(\"pxe1\", {\n    hostname: \"tf.coreos2-pxe\",\n    plan: equinix.metal.Plan.C3SmallX86,\n    metro: \"sv\",\n    operatingSystem: equinix.metal.OperatingSystem.CustomIPXE,\n    billingCycle: equinix.metal.BillingCycle.Hourly,\n    projectId: projectId,\n    ipxeScriptUrl: \"https://rawgit.com/cloudnativelabs/pxe/master/packet/coreos-stable-metal.ipxe\",\n    alwaysPxe: false,\n    userData: example.rendered,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\npxe1 = equinix.metal.Device(\"pxe1\",\n    hostname=\"tf.coreos2-pxe\",\n    plan=equinix.metal.Plan.C3_SMALL_X86,\n    metro=\"sv\",\n    operating_system=equinix.metal.OperatingSystem.CUSTOM_IPXE,\n    billing_cycle=equinix.metal.BillingCycle.HOURLY,\n    project_id=project_id,\n    ipxe_script_url=\"https://rawgit.com/cloudnativelabs/pxe/master/packet/coreos-stable-metal.ipxe\",\n    always_pxe=False,\n    user_data=example[\"rendered\"])\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewDevice(ctx, \"pxe1\", \u0026metal.DeviceArgs{\n\t\t\tHostname:        pulumi.String(\"tf.coreos2-pxe\"),\n\t\t\tPlan:            pulumi.String(metal.PlanC3SmallX86),\n\t\t\tMetro:           pulumi.String(\"sv\"),\n\t\t\tOperatingSystem: pulumi.String(metal.OperatingSystemCustomIPXE),\n\t\t\tBillingCycle:    pulumi.String(metal.BillingCycleHourly),\n\t\t\tProjectId:       pulumi.Any(projectId),\n\t\t\tIpxeScriptUrl:   pulumi.String(\"https://rawgit.com/cloudnativelabs/pxe/master/packet/coreos-stable-metal.ipxe\"),\n\t\t\tAlwaysPxe:       pulumi.Bool(false),\n\t\t\tUserData:        pulumi.Any(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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pxe1 = new Equinix.Metal.Device(\"pxe1\", new()\n    {\n        Hostname = \"tf.coreos2-pxe\",\n        Plan = Equinix.Metal.Plan.C3SmallX86,\n        Metro = \"sv\",\n        OperatingSystem = Equinix.Metal.OperatingSystem.CustomIPXE,\n        BillingCycle = Equinix.Metal.BillingCycle.Hourly,\n        ProjectId = projectId,\n        IpxeScriptUrl = \"https://rawgit.com/cloudnativelabs/pxe/master/packet/coreos-stable-metal.ipxe\",\n        AlwaysPxe = false,\n        UserData = example.Rendered,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Device;\nimport com.pulumi.equinix.metal.DeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var pxe1 = new Device(\"pxe1\", DeviceArgs.builder()\n            .hostname(\"tf.coreos2-pxe\")\n            .plan(\"c3.small.x86\")\n            .metro(\"sv\")\n            .operatingSystem(\"custom_ipxe\")\n            .billingCycle(\"hourly\")\n            .projectId(projectId)\n            .ipxeScriptUrl(\"https://rawgit.com/cloudnativelabs/pxe/master/packet/coreos-stable-metal.ipxe\")\n            .alwaysPxe(false)\n            .userData(example.rendered())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pxe1:\n    type: equinix:metal:Device\n    properties:\n      hostname: tf.coreos2-pxe\n      plan: c3.small.x86\n      metro: sv\n      operatingSystem: custom_ipxe\n      billingCycle: hourly\n      projectId: ${projectId}\n      ipxeScriptUrl: https://rawgit.com/cloudnativelabs/pxe/master/packet/coreos-stable-metal.ipxe\n      alwaysPxe: 'false'\n      userData: ${example.rendered}\n```\n{{% /example %}}\n\n{{% example %}}\n### example 3\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst web1 = new equinix.metal.Device(\"web1\", {\n    hostname: \"tf.coreos2\",\n    plan: equinix.metal.Plan.C3SmallX86,\n    metro: \"ny\",\n    operatingSystem: \"ubuntu_24_04\",\n    billingCycle: equinix.metal.BillingCycle.Hourly,\n    projectId: projectId,\n    ipAddresses: [{\n        type: \"private_ipv4\",\n        cidr: 30,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nweb1 = equinix.metal.Device(\"web1\",\n    hostname=\"tf.coreos2\",\n    plan=equinix.metal.Plan.C3_SMALL_X86,\n    metro=\"ny\",\n    operating_system=\"ubuntu_24_04\",\n    billing_cycle=equinix.metal.BillingCycle.HOURLY,\n    project_id=project_id,\n    ip_addresses=[{\n        \"type\": \"private_ipv4\",\n        \"cidr\": 30,\n    }])\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewDevice(ctx, \"web1\", \u0026metal.DeviceArgs{\n\t\t\tHostname:        pulumi.String(\"tf.coreos2\"),\n\t\t\tPlan:            pulumi.String(metal.PlanC3SmallX86),\n\t\t\tMetro:           pulumi.String(\"ny\"),\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_24_04\"),\n\t\t\tBillingCycle:    pulumi.String(metal.BillingCycleHourly),\n\t\t\tProjectId:       pulumi.Any(projectId),\n\t\t\tIpAddresses: metal.DeviceIpAddressArray{\n\t\t\t\t\u0026metal.DeviceIpAddressArgs{\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var web1 = new Equinix.Metal.Device(\"web1\", new()\n    {\n        Hostname = \"tf.coreos2\",\n        Plan = Equinix.Metal.Plan.C3SmallX86,\n        Metro = \"ny\",\n        OperatingSystem = \"ubuntu_24_04\",\n        BillingCycle = Equinix.Metal.BillingCycle.Hourly,\n        ProjectId = projectId,\n        IpAddresses = new[]\n        {\n            new Equinix.Metal.Inputs.DeviceIpAddressArgs\n            {\n                Type = \"private_ipv4\",\n                Cidr = 30,\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Device;\nimport com.pulumi.equinix.metal.DeviceArgs;\nimport com.pulumi.equinix.metal.inputs.DeviceIpAddressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var web1 = new Device(\"web1\", DeviceArgs.builder()\n            .hostname(\"tf.coreos2\")\n            .plan(\"c3.small.x86\")\n            .metro(\"ny\")\n            .operatingSystem(\"ubuntu_24_04\")\n            .billingCycle(\"hourly\")\n            .projectId(projectId)\n            .ipAddresses(DeviceIpAddressArgs.builder()\n                .type(\"private_ipv4\")\n                .cidr(30)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  web1:\n    type: equinix:metal:Device\n    properties:\n      hostname: tf.coreos2\n      plan: c3.small.x86\n      metro: ny\n      operatingSystem: ubuntu_24_04\n      billingCycle: hourly\n      projectId: ${projectId}\n      ipAddresses:\n        - type: private_ipv4\n          cidr: 30\n```\n{{% /example %}}\n\n{{% example %}}\n### example 4\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst web1 = new equinix.metal.Device(\"web1\", {\n    hostname: \"tftest\",\n    plan: equinix.metal.Plan.C3SmallX86,\n    metro: \"ny\",\n    operatingSystem: \"ubuntu_24_04\",\n    billingCycle: equinix.metal.BillingCycle.Hourly,\n    projectId: projectId,\n    hardwareReservationId: \"next-available\",\n    storage: \"{  \\\\\"disks\\\\\": [    {      \\\\\"device\\\\\": \\\\\"/dev/sda\\\\\",      \\\\\"wipeTable\\\\\": true,      \\\\\"partitions\\\\\": [        {          \\\\\"label\\\\\": \\\\\"BIOS\\\\\",          \\\\\"number\\\\\": 1,          \\\\\"size\\\\\": \\\\\"4096\\\\\"        },        {          \\\\\"label\\\\\": \\\\\"SWAP\\\\\",          \\\\\"number\\\\\": 2,          \\\\\"size\\\\\": \\\\\"3993600\\\\\"        },        {          \\\\\"label\\\\\": \\\\\"ROOT\\\\\",          \\\\\"number\\\\\": 3,          \\\\\"size\\\\\": \\\\\"0\\\\\"        }      ]    }  ],  \\\\\"filesystems\\\\\": [    {      \\\\\"mount\\\\\": {        \\\\\"device\\\\\": \\\\\"/dev/sda3\\\\\",        \\\\\"format\\\\\": \\\\\"ext4\\\\\",        \\\\\"point\\\\\": \\\\\"/\\\\\",        \\\\\"create\\\\\": {          \\\\\"options\\\\\": [            \\\\\"-L\\\\\",            \\\\\"ROOT\\\\\"          ]        }      }    },    {      \\\\\"mount\\\\\": {        \\\\\"device\\\\\": \\\\\"/dev/sda2\\\\\",        \\\\\"format\\\\\": \\\\\"swap\\\\\",        \\\\\"point\\\\\": \\\\\"none\\\\\",        \\\\\"create\\\\\": {          \\\\\"options\\\\\": [            \\\\\"-L\\\\\",            \\\\\"SWAP\\\\\"          ]        }      }    }  ]}\n\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nweb1 = equinix.metal.Device(\"web1\",\n    hostname=\"tftest\",\n    plan=equinix.metal.Plan.C3_SMALL_X86,\n    metro=\"ny\",\n    operating_system=\"ubuntu_24_04\",\n    billing_cycle=equinix.metal.BillingCycle.HOURLY,\n    project_id=project_id,\n    hardware_reservation_id=\"next-available\",\n    storage=\"{  \\\\\"disks\\\\\": [    {      \\\\\"device\\\\\": \\\\\"/dev/sda\\\\\",      \\\\\"wipeTable\\\\\": true,      \\\\\"partitions\\\\\": [        {          \\\\\"label\\\\\": \\\\\"BIOS\\\\\",          \\\\\"number\\\\\": 1,          \\\\\"size\\\\\": \\\\\"4096\\\\\"        },        {          \\\\\"label\\\\\": \\\\\"SWAP\\\\\",          \\\\\"number\\\\\": 2,          \\\\\"size\\\\\": \\\\\"3993600\\\\\"        },        {          \\\\\"label\\\\\": \\\\\"ROOT\\\\\",          \\\\\"number\\\\\": 3,          \\\\\"size\\\\\": \\\\\"0\\\\\"        }      ]    }  ],  \\\\\"filesystems\\\\\": [    {      \\\\\"mount\\\\\": {        \\\\\"device\\\\\": \\\\\"/dev/sda3\\\\\",        \\\\\"format\\\\\": \\\\\"ext4\\\\\",        \\\\\"point\\\\\": \\\\\"/\\\\\",        \\\\\"create\\\\\": {          \\\\\"options\\\\\": [            \\\\\"-L\\\\\",            \\\\\"ROOT\\\\\"          ]        }      }    },    {      \\\\\"mount\\\\\": {        \\\\\"device\\\\\": \\\\\"/dev/sda2\\\\\",        \\\\\"format\\\\\": \\\\\"swap\\\\\",        \\\\\"point\\\\\": \\\\\"none\\\\\",        \\\\\"create\\\\\": {          \\\\\"options\\\\\": [            \\\\\"-L\\\\\",            \\\\\"SWAP\\\\\"          ]        }      }    }  ]}\n\")\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewDevice(ctx, \"web1\", \u0026metal.DeviceArgs{\n\t\t\tHostname:              pulumi.String(\"tftest\"),\n\t\t\tPlan:                  pulumi.String(metal.PlanC3SmallX86),\n\t\t\tMetro:                 pulumi.String(\"ny\"),\n\t\t\tOperatingSystem:       pulumi.String(\"ubuntu_24_04\"),\n\t\t\tBillingCycle:          pulumi.String(metal.BillingCycleHourly),\n\t\t\tProjectId:             pulumi.Any(projectId),\n\t\t\tHardwareReservationId: pulumi.String(\"next-available\"),\n\t\t\tStorage:               pulumi.String(\"{  \\\\\"disks\\\\\": [    {      \\\\\"device\\\\\": \\\\\"/dev/sda\\\\\",      \\\\\"wipeTable\\\\\": true,      \\\\\"partitions\\\\\": [        {          \\\\\"label\\\\\": \\\\\"BIOS\\\\\",          \\\\\"number\\\\\": 1,          \\\\\"size\\\\\": \\\\\"4096\\\\\"        },        {          \\\\\"label\\\\\": \\\\\"SWAP\\\\\",          \\\\\"number\\\\\": 2,          \\\\\"size\\\\\": \\\\\"3993600\\\\\"        },        {          \\\\\"label\\\\\": \\\\\"ROOT\\\\\",          \\\\\"number\\\\\": 3,          \\\\\"size\\\\\": \\\\\"0\\\\\"        }      ]    }  ],  \\\\\"filesystems\\\\\": [    {      \\\\\"mount\\\\\": {        \\\\\"device\\\\\": \\\\\"/dev/sda3\\\\\",        \\\\\"format\\\\\": \\\\\"ext4\\\\\",        \\\\\"point\\\\\": \\\\\"/\\\\\",        \\\\\"create\\\\\": {          \\\\\"options\\\\\": [            \\\\\"-L\\\\\",            \\\\\"ROOT\\\\\"          ]        }      }    },    {      \\\\\"mount\\\\\": {        \\\\\"device\\\\\": \\\\\"/dev/sda2\\\\\",        \\\\\"format\\\\\": \\\\\"swap\\\\\",        \\\\\"point\\\\\": \\\\\"none\\\\\",        \\\\\"create\\\\\": {          \\\\\"options\\\\\": [            \\\\\"-L\\\\\",            \\\\\"SWAP\\\\\"          ]        }      }    }  ]}\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var web1 = new Equinix.Metal.Device(\"web1\", new()\n    {\n        Hostname = \"tftest\",\n        Plan = Equinix.Metal.Plan.C3SmallX86,\n        Metro = \"ny\",\n        OperatingSystem = \"ubuntu_24_04\",\n        BillingCycle = Equinix.Metal.BillingCycle.Hourly,\n        ProjectId = projectId,\n        HardwareReservationId = \"next-available\",\n        Storage = @\"{  \\\"\"disks\\\"\": [    {      \\\"\"device\\\"\": \\\"\"/dev/sda\\\"\",      \\\"\"wipeTable\\\"\": true,      \\\"\"partitions\\\"\": [        {          \\\"\"label\\\"\": \\\"\"BIOS\\\"\",          \\\"\"number\\\"\": 1,          \\\"\"size\\\"\": \\\"\"4096\\\"\"        },        {          \\\"\"label\\\"\": \\\"\"SWAP\\\"\",          \\\"\"number\\\"\": 2,          \\\"\"size\\\"\": \\\"\"3993600\\\"\"        },        {          \\\"\"label\\\"\": \\\"\"ROOT\\\"\",          \\\"\"number\\\"\": 3,          \\\"\"size\\\"\": \\\"\"0\\\"\"        }      ]    }  ],  \\\"\"filesystems\\\"\": [    {      \\\"\"mount\\\"\": {        \\\"\"device\\\"\": \\\"\"/dev/sda3\\\"\",        \\\"\"format\\\"\": \\\"\"ext4\\\"\",        \\\"\"point\\\"\": \\\"\"/\\\"\",        \\\"\"create\\\"\": {          \\\"\"options\\\"\": [            \\\"\"-L\\\"\",            \\\"\"ROOT\\\"\"          ]        }      }    },    {      \\\"\"mount\\\"\": {        \\\"\"device\\\"\": \\\"\"/dev/sda2\\\"\",        \\\"\"format\\\"\": \\\"\"swap\\\"\",        \\\"\"point\\\"\": \\\"\"none\\\"\",        \\\"\"create\\\"\": {          \\\"\"options\\\"\": [            \\\"\"-L\\\"\",            \\\"\"SWAP\\\"\"          ]        }      }    }  ]}\n\",\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Device;\nimport com.pulumi.equinix.metal.DeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var web1 = new Device(\"web1\", DeviceArgs.builder()\n            .hostname(\"tftest\")\n            .plan(\"c3.small.x86\")\n            .metro(\"ny\")\n            .operatingSystem(\"ubuntu_24_04\")\n            .billingCycle(\"hourly\")\n            .projectId(projectId)\n            .hardwareReservationId(\"next-available\")\n            .storage(\"\"\"\n{  \\\"disks\\\": [    {      \\\"device\\\": \\\"/dev/sda\\\",      \\\"wipeTable\\\": true,      \\\"partitions\\\": [        {          \\\"label\\\": \\\"BIOS\\\",          \\\"number\\\": 1,          \\\"size\\\": \\\"4096\\\"        },        {          \\\"label\\\": \\\"SWAP\\\",          \\\"number\\\": 2,          \\\"size\\\": \\\"3993600\\\"        },        {          \\\"label\\\": \\\"ROOT\\\",          \\\"number\\\": 3,          \\\"size\\\": \\\"0\\\"        }      ]    }  ],  \\\"filesystems\\\": [    {      \\\"mount\\\": {        \\\"device\\\": \\\"/dev/sda3\\\",        \\\"format\\\": \\\"ext4\\\",        \\\"point\\\": \\\"/\\\",        \\\"create\\\": {          \\\"options\\\": [            \\\"-L\\\",            \\\"ROOT\\\"          ]        }      }    },    {      \\\"mount\\\": {        \\\"device\\\": \\\"/dev/sda2\\\",        \\\"format\\\": \\\"swap\\\",        \\\"point\\\": \\\"none\\\",        \\\"create\\\": {          \\\"options\\\": [            \\\"-L\\\",            \\\"SWAP\\\"          ]        }      }    }  ]}\n            \"\"\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  web1:\n    type: equinix:metal:Device\n    properties:\n      hostname: tftest\n      plan: c3.small.x86\n      metro: ny\n      operatingSystem: ubuntu_24_04\n      billingCycle: hourly\n      projectId: ${projectId}\n      hardwareReservationId: next-available\n      storage: |\n        {  \\\"disks\\\": [    {      \\\"device\\\": \\\"/dev/sda\\\",      \\\"wipeTable\\\": true,      \\\"partitions\\\": [        {          \\\"label\\\": \\\"BIOS\\\",          \\\"number\\\": 1,          \\\"size\\\": \\\"4096\\\"        },        {          \\\"label\\\": \\\"SWAP\\\",          \\\"number\\\": 2,          \\\"size\\\": \\\"3993600\\\"        },        {          \\\"label\\\": \\\"ROOT\\\",          \\\"number\\\": 3,          \\\"size\\\": \\\"0\\\"        }      ]    }  ],  \\\"filesystems\\\": [    {      \\\"mount\\\": {        \\\"device\\\": \\\"/dev/sda3\\\",        \\\"format\\\": \\\"ext4\\\",        \\\"point\\\": \\\"/\\\",        \\\"create\\\": {          \\\"options\\\": [            \\\"-L\\\",            \\\"ROOT\\\"          ]        }      }    },    {      \\\"mount\\\": {        \\\"device\\\": \\\"/dev/sda2\\\",        \\\"format\\\": \\\"swap\\\",        \\\"point\\\": \\\"none\\\",        \\\"create\\\": {          \\\"options\\\": [            \\\"-L\\\",            \\\"SWAP\\\"          ]        }      }    }  ]}\n```\n{{% /example %}}\n\n{{% example %}}\n### example 5\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst pxe1 = new equinix.metal.Device(\"pxe1\", {\n    hostname: \"tf.coreos2-pxe\",\n    plan: equinix.metal.Plan.C3SmallX86,\n    metro: \"sv\",\n    operatingSystem: equinix.metal.OperatingSystem.CustomIPXE,\n    billingCycle: equinix.metal.BillingCycle.Hourly,\n    projectId: projectId,\n    ipxeScriptUrl: \"https://rawgit.com/cloudnativelabs/pxe/master/packet/coreos-stable-metal.ipxe\",\n    alwaysPxe: false,\n    userData: userData,\n    customData: customData,\n    behavior: {\n        allowChanges: [\n            \"custom_data\",\n            \"user_data\",\n        ],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\npxe1 = equinix.metal.Device(\"pxe1\",\n    hostname=\"tf.coreos2-pxe\",\n    plan=equinix.metal.Plan.C3_SMALL_X86,\n    metro=\"sv\",\n    operating_system=equinix.metal.OperatingSystem.CUSTOM_IPXE,\n    billing_cycle=equinix.metal.BillingCycle.HOURLY,\n    project_id=project_id,\n    ipxe_script_url=\"https://rawgit.com/cloudnativelabs/pxe/master/packet/coreos-stable-metal.ipxe\",\n    always_pxe=False,\n    user_data=user_data,\n    custom_data=custom_data,\n    behavior={\n        \"allow_changes\": [\n            \"custom_data\",\n            \"user_data\",\n        ],\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewDevice(ctx, \"pxe1\", \u0026metal.DeviceArgs{\n\t\t\tHostname:        pulumi.String(\"tf.coreos2-pxe\"),\n\t\t\tPlan:            pulumi.String(metal.PlanC3SmallX86),\n\t\t\tMetro:           pulumi.String(\"sv\"),\n\t\t\tOperatingSystem: pulumi.String(metal.OperatingSystemCustomIPXE),\n\t\t\tBillingCycle:    pulumi.String(metal.BillingCycleHourly),\n\t\t\tProjectId:       pulumi.Any(projectId),\n\t\t\tIpxeScriptUrl:   pulumi.String(\"https://rawgit.com/cloudnativelabs/pxe/master/packet/coreos-stable-metal.ipxe\"),\n\t\t\tAlwaysPxe:       pulumi.Bool(false),\n\t\t\tUserData:        pulumi.Any(userData),\n\t\t\tCustomData:      pulumi.Any(customData),\n\t\t\tBehavior: \u0026metal.DeviceBehaviorArgs{\n\t\t\t\tAllowChanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"custom_data\"),\n\t\t\t\t\tpulumi.String(\"user_data\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pxe1 = new Equinix.Metal.Device(\"pxe1\", new()\n    {\n        Hostname = \"tf.coreos2-pxe\",\n        Plan = Equinix.Metal.Plan.C3SmallX86,\n        Metro = \"sv\",\n        OperatingSystem = Equinix.Metal.OperatingSystem.CustomIPXE,\n        BillingCycle = Equinix.Metal.BillingCycle.Hourly,\n        ProjectId = projectId,\n        IpxeScriptUrl = \"https://rawgit.com/cloudnativelabs/pxe/master/packet/coreos-stable-metal.ipxe\",\n        AlwaysPxe = false,\n        UserData = userData,\n        CustomData = customData,\n        Behavior = new Equinix.Metal.Inputs.DeviceBehaviorArgs\n        {\n            AllowChanges = new[]\n            {\n                \"custom_data\",\n                \"user_data\",\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Device;\nimport com.pulumi.equinix.metal.DeviceArgs;\nimport com.pulumi.equinix.metal.inputs.DeviceBehaviorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var pxe1 = new Device(\"pxe1\", DeviceArgs.builder()\n            .hostname(\"tf.coreos2-pxe\")\n            .plan(\"c3.small.x86\")\n            .metro(\"sv\")\n            .operatingSystem(\"custom_ipxe\")\n            .billingCycle(\"hourly\")\n            .projectId(projectId)\n            .ipxeScriptUrl(\"https://rawgit.com/cloudnativelabs/pxe/master/packet/coreos-stable-metal.ipxe\")\n            .alwaysPxe(false)\n            .userData(userData)\n            .customData(customData)\n            .behavior(DeviceBehaviorArgs.builder()\n                .allowChanges(                \n                    \"custom_data\",\n                    \"user_data\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pxe1:\n    type: equinix:metal:Device\n    properties:\n      hostname: tf.coreos2-pxe\n      plan: c3.small.x86\n      metro: sv\n      operatingSystem: custom_ipxe\n      billingCycle: hourly\n      projectId: ${projectId}\n      ipxeScriptUrl: https://rawgit.com/cloudnativelabs/pxe/master/packet/coreos-stable-metal.ipxe\n      alwaysPxe: 'false'\n      userData: ${userData}\n      customData: ${customData}\n      behavior:\n        allowChanges:\n          - custom_data\n          - user_data\n```\n{{% /example %}}\n\n{{% /examples %}}","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\n"},"behavior":{"$ref":"#/types/equinix:metal/DeviceBehavior:DeviceBehavior"},"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.  By default, changing this attribute will cause the provider to destroy and recreate your device.  If `reinstall` is specified or `behavior.allow_changes` includes `\"custom_data\"`, the device will be updated in-place instead of recreated.\n","secret":true},"deployedFacility":{"type":"string","description":"The facility where the device is deployed\n","deprecationMessage":"Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices"},"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":"Description string for the device\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","deprecationMessage":"Use metro instead of facilities.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices"},"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 next 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/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\n"},"locked":{"type":"boolean","description":"Whether the device is locked or unlocked. Locking a device prevents you from deleting or reinstalling the device or performing a firmware update on the device, and it prevents an instance with a termination time set from being reclaimed, even if the termination time was reached\n"},"metro":{"type":"string","description":"Metro area for the new device. Conflicts with facilities\n"},"network":{"type":"array","items":{"$ref":"#/types/equinix:metal/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 addresses: public ipv4, private ipv4 and ipv6\n"},"networkType":{"type":"string","description":"Network type of a device, used in [Layer 2 networking](https://metal.equinix.com/developers/docs/networking/layer2/). Will be one of layer3, hybrid, hybrid-bonded, layer2-individual, layer2-bonded\n","deprecationMessage":"You should handle Network Type with one of 'equinix_metal_port' or 'equinix_metal_device_network_type' resources. See section 'Guides' for more info"},"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.  By default, changing this attribute will cause your device to be deleted and recreated.  If `reinstall` is enabled, the device will be updated in-place instead of recreated.\n"},"plan":{"type":"string","description":"The device plan slug. To find the plan slug, visit the [plan documentation](https://docs.equinix.com/metal/hardware/standard-servers/)\n"},"ports":{"type":"array","items":{"$ref":"#/types/equinix:metal/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 specify this array, only the listed project SSH keys (and any SSH keys for the users specified in user*ssh*key*ids) will be added. If no SSH keys are specified (both user*ssh*keys*ids and project*ssh*key*ids are empty lists or omitted), all parent project keys, parent project members keys and organization members keys will be included.  Project SSH keys can be created with the equinix*metal*project*ssh*key resource\n"},"reinstall":{"$ref":"#/types/equinix:metal/DeviceReinstall:DeviceReinstall"},"rootPassword":{"type":"string","description":"Root password to the server (disabled after 24 hours)\n","secret":true},"sosHostname":{"type":"string","description":"The hostname to use for [Serial over SSH](https://docs.equinix.com/metal/resilience-recovery/serial-over-ssh/) access to the device\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\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.  By default, changing this attribute will cause the provider to destroy and recreate your device.  If `reinstall` is specified or `behavior.allow_changes` includes `\"user_data\"`, the device will be updated in-place instead of recreated.\n","secret":true},"userSshKeyIds":{"type":"array","items":{"type":"string"},"description":"Array of IDs of the users whose SSH keys should be added to the device. If you specify this array, only the listed users' SSH keys (and any project SSH keys specified in project*ssh*key*ids) will be added. If no SSH keys are specified (both user*ssh*keys*ids and project*ssh*key*ids are empty lists or omitted), all parent project keys, parent project members keys and organization members keys will be included. User SSH keys can be created with the equinix*metal*ssh*key resource\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","network","networkType","operatingSystem","plan","ports","projectId","rootPassword","sosHostname","sshKeyIds","state","updated"],"inputProperties":{"alwaysPxe":{"type":"boolean","description":"If true, a device with OS custom_ipxe will\n"},"behavior":{"$ref":"#/types/equinix:metal/DeviceBehavior:DeviceBehavior"},"billingCycle":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:metal/billingCycle:BillingCycle"}],"description":"monthly or hourly\n","willReplaceOnChanges":true},"customData":{"type":"string","description":"A string of the desired Custom Data for the device.  By default, changing this attribute will cause the provider to destroy and recreate your device.  If `reinstall` is specified or `behavior.allow_changes` includes `\"custom_data\"`, the device will be updated in-place instead of recreated.\n","secret":true},"description":{"type":"string","description":"Description string for the device\n"},"facilities":{"type":"array","items":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:metal/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","deprecationMessage":"Use metro instead of facilities.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices","willReplaceOnChanges":true},"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 next available reservation automatically\n","willReplaceOnChanges":true},"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/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\n"},"locked":{"type":"boolean","description":"Whether the device is locked or unlocked. Locking a device prevents you from deleting or reinstalling the device or performing a firmware update on the device, and it prevents an instance with a termination time set from being reclaimed, even if the termination time was reached\n"},"metro":{"type":"string","description":"Metro area for the new device. Conflicts with facilities\n","willReplaceOnChanges":true},"operatingSystem":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:metal/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.  By default, changing this attribute will cause your device to be deleted and recreated.  If `reinstall` is enabled, the device will be updated in-place instead of recreated.\n"},"plan":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:metal/plan:Plan"}],"description":"The device plan slug. To find the plan slug, visit the [plan documentation](https://docs.equinix.com/metal/hardware/standard-servers/)\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project in which to create the device\n","willReplaceOnChanges":true},"projectSshKeyIds":{"type":"array","items":{"type":"string"},"description":"Array of IDs of the project SSH keys which should be added to the device. If you specify this array, only the listed project SSH keys (and any SSH keys for the users specified in user*ssh*key*ids) will be added. If no SSH keys are specified (both user*ssh*keys*ids and project*ssh*key*ids are empty lists or omitted), all parent project keys, parent project members keys and organization members keys will be included.  Project SSH keys can be created with the equinix*metal*project*ssh*key resource\n","willReplaceOnChanges":true},"reinstall":{"$ref":"#/types/equinix:metal/DeviceReinstall:DeviceReinstall"},"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\n","willReplaceOnChanges":true},"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.  By default, changing this attribute will cause the provider to destroy and recreate your device.  If `reinstall` is specified or `behavior.allow_changes` includes `\"user_data\"`, the device will be updated in-place instead of recreated.\n","secret":true},"userSshKeyIds":{"type":"array","items":{"type":"string"},"description":"Array of IDs of the users whose SSH keys should be added to the device. If you specify this array, only the listed users' SSH keys (and any project SSH keys specified in project*ssh*key*ids) will be added. If no SSH keys are specified (both user*ssh*keys*ids and project*ssh*key*ids are empty lists or omitted), all parent project keys, parent project members keys and organization members keys will be included. User SSH keys can be created with the equinix*metal*ssh*key resource\n","willReplaceOnChanges":true},"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\n"},"behavior":{"$ref":"#/types/equinix:metal/DeviceBehavior:DeviceBehavior"},"billingCycle":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:metal/billingCycle:BillingCycle"}],"description":"monthly or hourly\n","willReplaceOnChanges":true},"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.  By default, changing this attribute will cause the provider to destroy and recreate your device.  If `reinstall` is specified or `behavior.allow_changes` includes `\"custom_data\"`, the device will be updated in-place instead of recreated.\n","secret":true},"deployedFacility":{"type":"string","description":"The facility where the device is deployed\n","deprecationMessage":"Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices"},"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":"Description string for the device\n"},"facilities":{"type":"array","items":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:metal/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","deprecationMessage":"Use metro instead of facilities.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices","willReplaceOnChanges":true},"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 next available reservation automatically\n","willReplaceOnChanges":true},"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/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\n"},"locked":{"type":"boolean","description":"Whether the device is locked or unlocked. Locking a device prevents you from deleting or reinstalling the device or performing a firmware update on the device, and it prevents an instance with a termination time set from being reclaimed, even if the termination time was reached\n"},"metro":{"type":"string","description":"Metro area for the new device. Conflicts with facilities\n","willReplaceOnChanges":true},"network":{"type":"array","items":{"$ref":"#/types/equinix:metal/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 addresses: public ipv4, private ipv4 and ipv6\n"},"networkType":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:metal/networkType:NetworkType"}],"description":"Network type of a device, used in [Layer 2 networking](https://metal.equinix.com/developers/docs/networking/layer2/). Will be one of layer3, hybrid, hybrid-bonded, layer2-individual, layer2-bonded\n","deprecationMessage":"You should handle Network Type with one of 'equinix_metal_port' or 'equinix_metal_device_network_type' resources. See section 'Guides' for more info"},"operatingSystem":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:metal/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.  By default, changing this attribute will cause your device to be deleted and recreated.  If `reinstall` is enabled, the device will be updated in-place instead of recreated.\n"},"plan":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:metal/plan:Plan"}],"description":"The device plan slug. To find the plan slug, visit the [plan documentation](https://docs.equinix.com/metal/hardware/standard-servers/)\n","willReplaceOnChanges":true},"ports":{"type":"array","items":{"$ref":"#/types/equinix:metal/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","willReplaceOnChanges":true},"projectSshKeyIds":{"type":"array","items":{"type":"string"},"description":"Array of IDs of the project SSH keys which should be added to the device. If you specify this array, only the listed project SSH keys (and any SSH keys for the users specified in user*ssh*key*ids) will be added. If no SSH keys are specified (both user*ssh*keys*ids and project*ssh*key*ids are empty lists or omitted), all parent project keys, parent project members keys and organization members keys will be included.  Project SSH keys can be created with the equinix*metal*project*ssh*key resource\n","willReplaceOnChanges":true},"reinstall":{"$ref":"#/types/equinix:metal/DeviceReinstall:DeviceReinstall"},"rootPassword":{"type":"string","description":"Root password to the server (disabled after 24 hours)\n","secret":true},"sosHostname":{"type":"string","description":"The hostname to use for [Serial over SSH](https://docs.equinix.com/metal/resilience-recovery/serial-over-ssh/) access to the device\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\n","willReplaceOnChanges":true},"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.  By default, changing this attribute will cause the provider to destroy and recreate your device.  If `reinstall` is specified or `behavior.allow_changes` includes `\"user_data\"`, the device will be updated in-place instead of recreated.\n","secret":true},"userSshKeyIds":{"type":"array","items":{"type":"string"},"description":"Array of IDs of the users whose SSH keys should be added to the device. If you specify this array, only the listed users' SSH keys (and any project SSH keys specified in project*ssh*key*ids) will be added. If no SSH keys are specified (both user*ssh*keys*ids and project*ssh*key*ids are empty lists or omitted), all parent project keys, parent project members keys and organization members keys will be included. User SSH keys can be created with the equinix*metal*ssh*key resource\n","willReplaceOnChanges":true},"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/deviceNetworkType:DeviceNetworkType":{"description":"\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst deviceId = config.require(\"deviceId\");\nconst networkType = config.get(\"networkType\") || \"hybrid\";\nconst deviceNetwork = new equinix.metal.DeviceNetworkType(\"deviceNetwork\", {\n    deviceId: deviceId,\n    type: networkType,\n});\nexport const deviceNetworkId = deviceNetwork.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\ndevice_id = config.require(\"deviceId\")\nnetwork_type = config.get(\"networkType\")\nif network_type is None:\n    network_type = \"hybrid\"\ndevice_network = equinix.metal.DeviceNetworkType(\"deviceNetwork\",\n    device_id=device_id,\n    type=network_type)\npulumi.export(\"deviceNetworkId\", device_network.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdeviceId := cfg.Require(\"deviceId\")\n\t\tnetworkType := \"hybrid\"\n\t\tif param := cfg.Get(\"networkType\"); param != \"\" {\n\t\t\tnetworkType = param\n\t\t}\n\t\tdeviceNetwork, err := metal.NewDeviceNetworkType(ctx, \"deviceNetwork\", \u0026metal.DeviceNetworkTypeArgs{\n\t\t\tDeviceId: pulumi.String(deviceId),\n\t\t\tType:     pulumi.String(networkType),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"deviceNetworkId\", deviceNetwork.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var deviceId = config.Require(\"deviceId\");\n    var networkType = config.Get(\"networkType\") ?? \"hybrid\";\n    var deviceNetwork = new Equinix.Metal.DeviceNetworkType(\"deviceNetwork\", new()\n    {\n        DeviceId = deviceId,\n        Type = networkType,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"deviceNetworkId\"] = deviceNetwork.Id,\n    };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.DeviceNetworkType;\nimport com.pulumi.equinix.metal.DeviceNetworkTypeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var config = ctx.config();\n        final var deviceId = config.get(\"deviceId\");\n        final var networkType = config.get(\"networkType\").orElse(\"hybrid\");\n        var deviceNetwork = new DeviceNetworkType(\"deviceNetwork\", DeviceNetworkTypeArgs.builder()\n            .deviceId(deviceId)\n            .type(networkType)\n            .build());\n\n        ctx.export(\"deviceNetworkId\", deviceNetwork.id());\n    }\n}\n```\n```yaml\nconfig:\n  deviceId:\n    type: string\n  networkType:\n    type: string\n    default: hybrid\nresources:\n  deviceNetwork:\n    type: equinix:metal:DeviceNetworkType\n    properties:\n      deviceId: ${deviceId}\n      type: ${networkType}\noutputs:\n  deviceNetworkId: ${deviceNetwork.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can also be imported using existing device ID:\n\n```sh\n$ pulumi import equinix:metal/deviceNetworkType:DeviceNetworkType equinix_metal_device_network_type {existing device_id}\n```\n\n\n{{% /examples %}}","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`, `hybrid-bonded`, `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","willReplaceOnChanges":true},"type":{"type":"string","description":"Network type to set. Must be one of `layer3`, `hybrid`, `hybrid-bonded`, `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","willReplaceOnChanges":true},"type":{"type":"string","description":"Network type to set. Must be one of `layer3`, `hybrid`, `hybrid-bonded`, `layer2-individual` and `layer2-bonded`.\n"}},"type":"object"}},"equinix:metal/gateway:Gateway":{"description":"Use this resource to create Metal Gateway resources in Equinix Metal.\n\nSee the [Virtual Routing and Forwarding documentation](https://docs.equinix.com/metal/networking/vrf/) for product details and API reference material.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n### example 1\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst test = new equinix.metal.Vlan(\"test\", {\n    description: \"test VLAN in SV\",\n    metro: \"sv\",\n    projectId: projectId,\n});\nconst testGateway = new equinix.metal.Gateway(\"testGateway\", {\n    projectId: projectId,\n    vlanId: test.id,\n    privateIpv4SubnetSize: 8,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.metal.Vlan(\"test\",\n    description=\"test VLAN in SV\",\n    metro=\"sv\",\n    project_id=project_id)\ntest_gateway = equinix.metal.Gateway(\"testGateway\",\n    project_id=project_id,\n    vlan_id=test.id,\n    private_ipv4_subnet_size=8)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewVlan(ctx, \"test\", \u0026metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"test VLAN in SV\"),\n\t\t\tMetro:       pulumi.String(\"sv\"),\n\t\t\tProjectId:   pulumi.Any(projectId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = metal.NewGateway(ctx, \"testGateway\", \u0026metal.GatewayArgs{\n\t\t\tProjectId:             pulumi.Any(projectId),\n\t\t\tVlanId:                test.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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Equinix.Metal.Vlan(\"test\", new()\n    {\n        Description = \"test VLAN in SV\",\n        Metro = \"sv\",\n        ProjectId = projectId,\n    });\n\n    var testGateway = new Equinix.Metal.Gateway(\"testGateway\", new()\n    {\n        ProjectId = projectId,\n        VlanId = test.Id,\n        PrivateIpv4SubnetSize = 8,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Vlan;\nimport com.pulumi.equinix.metal.VlanArgs;\nimport com.pulumi.equinix.metal.Gateway;\nimport com.pulumi.equinix.metal.GatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var test = new Vlan(\"test\", VlanArgs.builder()\n            .description(\"test VLAN in SV\")\n            .metro(\"sv\")\n            .projectId(projectId)\n            .build());\n\n        var testGateway = new Gateway(\"testGateway\", GatewayArgs.builder()\n            .projectId(projectId)\n            .vlanId(test.id())\n            .privateIpv4SubnetSize(8)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\n  test:\n    type: equinix:metal:Vlan\n    properties:\n      description: test VLAN in SV\n      metro: sv\n      projectId: ${projectId}\n  testGateway:\n    type: equinix:metal:Gateway\n    name: test\n    properties:\n      projectId: ${projectId}\n      vlanId: ${test.id}\n      privateIpv4SubnetSize: 8\n```\n{{% /example %}}\n\n{{% example %}}\n### example 2\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst test = new equinix.metal.Vlan(\"test\", {\n    description: \"test VLAN in SV\",\n    metro: \"sv\",\n    projectId: projectId,\n});\nconst test1 = new equinix.metal.ReservedIpBlock(\"test1\", {\n    projectId: projectId,\n    metro: \"sv\",\n    quantity: 8,\n});\nconst testGateway = new equinix.metal.Gateway(\"testGateway\", {\n    projectId: projectId,\n    vlanId: test.id,\n    ipReservationId: testEquinixMetalReservedIpBlock.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.metal.Vlan(\"test\",\n    description=\"test VLAN in SV\",\n    metro=\"sv\",\n    project_id=project_id)\ntest1 = equinix.metal.ReservedIpBlock(\"test1\",\n    project_id=project_id,\n    metro=\"sv\",\n    quantity=8)\ntest_gateway = equinix.metal.Gateway(\"testGateway\",\n    project_id=project_id,\n    vlan_id=test.id,\n    ip_reservation_id=test_equinix_metal_reserved_ip_block[\"id\"])\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewVlan(ctx, \"test\", \u0026metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"test VLAN in SV\"),\n\t\t\tMetro:       pulumi.String(\"sv\"),\n\t\t\tProjectId:   pulumi.Any(projectId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = metal.NewReservedIpBlock(ctx, \"test1\", \u0026metal.ReservedIpBlockArgs{\n\t\t\tProjectId: pulumi.Any(projectId),\n\t\t\tMetro:     pulumi.String(\"sv\"),\n\t\t\tQuantity:  pulumi.Int(8),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = metal.NewGateway(ctx, \"testGateway\", \u0026metal.GatewayArgs{\n\t\t\tProjectId:       pulumi.Any(projectId),\n\t\t\tVlanId:          test.ID(),\n\t\t\tIpReservationId: pulumi.Any(testEquinixMetalReservedIpBlock.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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Equinix.Metal.Vlan(\"test\", new()\n    {\n        Description = \"test VLAN in SV\",\n        Metro = \"sv\",\n        ProjectId = projectId,\n    });\n\n    var test1 = new Equinix.Metal.ReservedIpBlock(\"test1\", new()\n    {\n        ProjectId = projectId,\n        Metro = \"sv\",\n        Quantity = 8,\n    });\n\n    var testGateway = new Equinix.Metal.Gateway(\"testGateway\", new()\n    {\n        ProjectId = projectId,\n        VlanId = test.Id,\n        IpReservationId = testEquinixMetalReservedIpBlock.Id,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Vlan;\nimport com.pulumi.equinix.metal.VlanArgs;\nimport com.pulumi.equinix.metal.ReservedIpBlock;\nimport com.pulumi.equinix.metal.ReservedIpBlockArgs;\nimport com.pulumi.equinix.metal.Gateway;\nimport com.pulumi.equinix.metal.GatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var test = new Vlan(\"test\", VlanArgs.builder()\n            .description(\"test VLAN in SV\")\n            .metro(\"sv\")\n            .projectId(projectId)\n            .build());\n\n        var test1 = new ReservedIpBlock(\"test1\", ReservedIpBlockArgs.builder()\n            .projectId(projectId)\n            .metro(\"sv\")\n            .quantity(8)\n            .build());\n\n        var testGateway = new Gateway(\"testGateway\", GatewayArgs.builder()\n            .projectId(projectId)\n            .vlanId(test.id())\n            .ipReservationId(testEquinixMetalReservedIpBlock.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create Metal Gateway for a VLAN and reserved IP address block\n  test:\n    type: equinix:metal:Vlan\n    properties:\n      description: test VLAN in SV\n      metro: sv\n      projectId: ${projectId}\n  test1:\n    type: equinix:metal:ReservedIpBlock\n    properties:\n      projectId: ${projectId}\n      metro: sv\n      quantity: 8\n  testGateway:\n    type: equinix:metal:Gateway\n    name: test\n    properties:\n      projectId: ${projectId}\n      vlanId: ${test.id}\n      ipReservationId: ${testEquinixMetalReservedIpBlock.id}\n```\n{{% /example %}}\n\n{{% /examples %}}","properties":{"ipReservationId":{"type":"string","description":"UUID of Public or VRF IP Reservation to associate with 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"},"timeouts":{"$ref":"#/types/equinix:metal/GatewayTimeouts:GatewayTimeouts"},"vlanId":{"type":"string","description":"UUID of the VLAN where the gateway is scoped to.\n"},"vrfId":{"type":"string","description":"UUID of the VRF associated with the IP Reservation\n"}},"required":["ipReservationId","privateIpv4SubnetSize","projectId","state","vlanId","vrfId"],"inputProperties":{"ipReservationId":{"type":"string","description":"UUID of Public or VRF IP Reservation to associate with 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"},"timeouts":{"$ref":"#/types/equinix:metal/GatewayTimeouts:GatewayTimeouts"},"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 Public or VRF IP Reservation to associate with 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"},"timeouts":{"$ref":"#/types/equinix:metal/GatewayTimeouts:GatewayTimeouts"},"vlanId":{"type":"string","description":"UUID of the VLAN where the gateway is scoped to.\n"},"vrfId":{"type":"string","description":"UUID of the VRF associated with the IP Reservation\n"}},"type":"object"}},"equinix:metal/interconnection:Interconnection":{"description":"Use this resource to request the creation an Interconnection asset to connect with other parties using [Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/).\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n### example fabric billed metal from fabric port\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst aSide = equinix.fabric.getPortsOutput({\n    filter: {\n        name: \"\u003cname_of_port||port_prefix\u003e\",\n    },\n});\nconst example = new equinix.metal.Vlan(\"example\", {\n    projectId: \"\u003cmetal_project_id\u003e\",\n    metro: \"FR\",\n});\nconst exampleInterconnection = new equinix.metal.Interconnection(\"exampleInterconnection\", {\n    name: \"tf-metal-from-port\",\n    projectId: \"\u003cmetal_project_id\u003e\",\n    type: \"shared\",\n    redundancy: \"primary\",\n    metro: \"FR\",\n    speed: \"200Mbps\",\n    serviceTokenType: \"z_side\",\n    contactEmail: \"username@example.com\",\n    vlans: [example.vxlan],\n});\nconst exampleConnection = new equinix.fabric.Connection(\"exampleConnection\", {\n    name: \"tf-metal-from-port\",\n    type: equinix.fabric.ConnectionType.EVPL,\n    bandwidth: 200,\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\"username@example.com\"],\n    }],\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    project: {\n        projectId: \"\u003cfabric_project_id\u003e\",\n    },\n    aSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Colo,\n            port: {\n                uuid: aSide.apply(aSide =\u003e aSide.data?.[0]?.uuid),\n            },\n            linkProtocol: {\n                type: equinix.fabric.AccessPointLinkProtocolType.Dot1q,\n                vlanTag: 1234,\n            },\n        },\n    },\n    zSide: {\n        serviceToken: {\n            uuid: exampleInterconnection.serviceTokens.apply(serviceTokens =\u003e serviceTokens[0].id),\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\na_side = equinix.fabric.get_ports_output(filter={\n    \"name\": \"\u003cname_of_port||port_prefix\u003e\",\n})\nexample = equinix.metal.Vlan(\"example\",\n    project_id=\"\u003cmetal_project_id\u003e\",\n    metro=\"FR\")\nexample_interconnection = equinix.metal.Interconnection(\"exampleInterconnection\",\n    name=\"tf-metal-from-port\",\n    project_id=\"\u003cmetal_project_id\u003e\",\n    type=\"shared\",\n    redundancy=\"primary\",\n    metro=\"FR\",\n    speed=\"200Mbps\",\n    service_token_type=\"z_side\",\n    contact_email=\"username@example.com\",\n    vlans=[example.vxlan])\nexample_connection = equinix.fabric.Connection(\"exampleConnection\",\n    name=\"tf-metal-from-port\",\n    type=equinix.fabric.ConnectionType.EVPL,\n    bandwidth=200,\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\"username@example.com\"],\n    }],\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    project={\n        \"project_id\": \"\u003cfabric_project_id\u003e\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.COLO,\n            \"port\": {\n                \"uuid\": a_side.data[0].uuid,\n            },\n            \"link_protocol\": {\n                \"type\": equinix.fabric.AccessPointLinkProtocolType.DOT1Q,\n                \"vlan_tag\": 1234,\n            },\n        },\n    },\n    z_side={\n        \"service_token\": {\n            \"uuid\": example_interconnection.service_tokens[0].id,\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/equinix/pulumi-equinix/sdk/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\taSide := fabric.GetPortsOutput(ctx, fabric.GetPortsOutputArgs{\n\t\t\tFilter: \u0026fabric.GetPortsFilterArgs{\n\t\t\t\tName: pulumi.String(\"\u003cname_of_port||port_prefix\u003e\"),\n\t\t\t},\n\t\t}, nil)\n\t\texample, err := metal.NewVlan(ctx, \"example\", \u0026metal.VlanArgs{\n\t\t\tProjectId: pulumi.String(\"\u003cmetal_project_id\u003e\"),\n\t\t\tMetro:     pulumi.String(\"FR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleInterconnection, err := metal.NewInterconnection(ctx, \"exampleInterconnection\", \u0026metal.InterconnectionArgs{\n\t\t\tName:             pulumi.String(\"tf-metal-from-port\"),\n\t\t\tProjectId:        pulumi.String(\"\u003cmetal_project_id\u003e\"),\n\t\t\tType:             pulumi.String(\"shared\"),\n\t\t\tRedundancy:       pulumi.String(\"primary\"),\n\t\t\tMetro:            pulumi.String(\"FR\"),\n\t\t\tSpeed:            pulumi.String(\"200Mbps\"),\n\t\t\tServiceTokenType: pulumi.String(\"z_side\"),\n\t\t\tContactEmail:     pulumi.String(\"username@example.com\"),\n\t\t\tVlans: pulumi.IntArray{\n\t\t\t\texample.Vxlan,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = fabric.NewConnection(ctx, \"exampleConnection\", \u0026fabric.ConnectionArgs{\n\t\t\tName:      pulumi.String(\"tf-metal-from-port\"),\n\t\t\tType:      pulumi.String(fabric.ConnectionTypeEVPL),\n\t\t\tBandwidth: pulumi.Int(200),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"username@example.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tProject: \u0026fabric.ConnectionProjectArgs{\n\t\t\t\tProjectId: pulumi.String(\"\u003cfabric_project_id\u003e\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeColo),\n\t\t\t\t\tPort: \u0026fabric.ConnectionASideAccessPointPortArgs{\n\t\t\t\t\t\tUuid: aSide.ApplyT(func(aSide fabric.GetPortsResult) (*string, error) {\n\t\t\t\t\t\t\treturn \u0026aSide.Data[0].Uuid, nil\n\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t},\n\t\t\t\t\tLinkProtocol: \u0026fabric.ConnectionASideAccessPointLinkProtocolArgs{\n\t\t\t\t\t\tType:    pulumi.String(fabric.AccessPointLinkProtocolTypeDot1q),\n\t\t\t\t\t\tVlanTag: pulumi.Int(1234),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tServiceToken: \u0026fabric.ConnectionZSideServiceTokenArgs{\n\t\t\t\t\tUuid: exampleInterconnection.ServiceTokens.ApplyT(func(serviceTokens []metal.InterconnectionServiceToken) (*string, error) {\n\t\t\t\t\t\treturn \u0026serviceTokens[0].Id, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var aSide = Equinix.Fabric.GetPorts.Invoke(new()\n    {\n        Filter = new Equinix.Fabric.Inputs.GetPortsFilterInputArgs\n        {\n            Name = \"\u003cname_of_port||port_prefix\u003e\",\n        },\n    });\n\n    var example = new Equinix.Metal.Vlan(\"example\", new()\n    {\n        ProjectId = \"\u003cmetal_project_id\u003e\",\n        Metro = \"FR\",\n    });\n\n    var exampleInterconnection = new Equinix.Metal.Interconnection(\"exampleInterconnection\", new()\n    {\n        Name = \"tf-metal-from-port\",\n        ProjectId = \"\u003cmetal_project_id\u003e\",\n        Type = \"shared\",\n        Redundancy = \"primary\",\n        Metro = \"FR\",\n        Speed = \"200Mbps\",\n        ServiceTokenType = \"z_side\",\n        ContactEmail = \"username@example.com\",\n        Vlans = new[]\n        {\n            example.Vxlan,\n        },\n    });\n\n    var exampleConnection = new Equinix.Fabric.Connection(\"exampleConnection\", new()\n    {\n        Name = \"tf-metal-from-port\",\n        Type = Equinix.Fabric.ConnectionType.EVPL,\n        Bandwidth = 200,\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"username@example.com\",\n                },\n            },\n        },\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        Project = new Equinix.Fabric.Inputs.ConnectionProjectArgs\n        {\n            ProjectId = \"\u003cfabric_project_id\u003e\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Colo,\n                Port = new Equinix.Fabric.Inputs.ConnectionASideAccessPointPortArgs\n                {\n                    Uuid = aSide.Apply(getPortsResult =\u003e getPortsResult.Data[0]?.Uuid),\n                },\n                LinkProtocol = new Equinix.Fabric.Inputs.ConnectionASideAccessPointLinkProtocolArgs\n                {\n                    Type = Equinix.Fabric.AccessPointLinkProtocolType.Dot1q,\n                    VlanTag = 1234,\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            ServiceToken = new Equinix.Fabric.Inputs.ConnectionZSideServiceTokenArgs\n            {\n                Uuid = exampleInterconnection.ServiceTokens.Apply(serviceTokens =\u003e serviceTokens[0].Id),\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetPortsArgs;\nimport com.pulumi.equinix.fabric.inputs.GetPortsFilterArgs;\nimport com.pulumi.equinix.metal.Vlan;\nimport com.pulumi.equinix.metal.VlanArgs;\nimport com.pulumi.equinix.metal.Interconnection;\nimport com.pulumi.equinix.metal.InterconnectionArgs;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionProjectArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointPortArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointLinkProtocolArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideServiceTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var aSide = FabricFunctions.getPorts(GetPortsArgs.builder()\n            .filter(GetPortsFilterArgs.builder()\n                .name(\"\u003cname_of_port||port_prefix\u003e\")\n                .build())\n            .build());\n\n        var example = new Vlan(\"example\", VlanArgs.builder()\n            .projectId(\"\u003cmetal_project_id\u003e\")\n            .metro(\"FR\")\n            .build());\n\n        var exampleInterconnection = new Interconnection(\"exampleInterconnection\", InterconnectionArgs.builder()\n            .name(\"tf-metal-from-port\")\n            .projectId(\"\u003cmetal_project_id\u003e\")\n            .type(\"shared\")\n            .redundancy(\"primary\")\n            .metro(\"FR\")\n            .speed(\"200Mbps\")\n            .serviceTokenType(\"z_side\")\n            .contactEmail(\"username@example.com\")\n            .vlans(example.vxlan())\n            .build());\n\n        var exampleConnection = new Connection(\"exampleConnection\", ConnectionArgs.builder()\n            .name(\"tf-metal-from-port\")\n            .type(\"EVPL_VC\")\n            .bandwidth(200)\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(\"username@example.com\")\n                .build())\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .project(ConnectionProjectArgs.builder()\n                .projectId(\"\u003cfabric_project_id\u003e\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"COLO\")\n                    .port(ConnectionASideAccessPointPortArgs.builder()\n                        .uuid(aSide.applyValue(_aSide -\u003e _aSide.data()[0].uuid()))\n                        .build())\n                    .linkProtocol(ConnectionASideAccessPointLinkProtocolArgs.builder()\n                        .type(\"DOT1Q\")\n                        .vlanTag(1234)\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .serviceToken(ConnectionZSideServiceTokenArgs.builder()\n                    .uuid(exampleInterconnection.serviceTokens().applyValue(_serviceTokens -\u003e _serviceTokens[0].id()))\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: equinix:metal:Vlan\n    properties:\n      projectId: \u003cmetal_project_id\u003e\n      metro: FR\n  exampleInterconnection:\n    type: equinix:metal:Interconnection\n    name: example\n    properties:\n      name: tf-metal-from-port\n      projectId: \u003cmetal_project_id\u003e\n      type: shared\n      redundancy: primary\n      metro: FR\n      speed: 200Mbps\n      serviceTokenType: z_side\n      contactEmail: username@example.com\n      vlans:\n        - ${example.vxlan}\n  exampleConnection:\n    type: equinix:fabric:Connection\n    name: example\n    properties:\n      name: tf-metal-from-port\n      type: EVPL_VC\n      bandwidth: '200'\n      notifications:\n        - type: ALL\n          emails:\n            - username@example.com\n      order:\n        purchaseOrderNumber: 1-323292\n      project:\n        projectId: \u003cfabric_project_id\u003e\n      aSide:\n        accessPoint:\n          type: COLO\n          port:\n            uuid: ${aSide.data[0].uuid}\n          linkProtocol:\n            type: DOT1Q\n            vlanTag: 1234\n      zSide:\n        serviceToken:\n          uuid: ${exampleInterconnection.serviceTokens[0].id}\nvariables:\n  aSide:\n    fn::invoke:\n      function: equinix:fabric:getPorts\n      arguments:\n        filter:\n          name: \u003cname_of_port||port_prefix\u003e\n```\n{{% /example %}}\n\n{{% example %}}\n### example fabric billed metal from fcr\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst example1 = new equinix.metal.Vlan(\"example1\", {\n    projectId: \"\u003cmetal_project_id\u003e\",\n    metro: \"SV\",\n});\nconst example = new equinix.metal.Interconnection(\"example\", {\n    name: \"tf-metal-from-fcr\",\n    projectId: \"\u003cmetal_project_id\u003e\",\n    metro: \"SV\",\n    redundancy: \"primary\",\n    type: \"shared_port_vlan\",\n    contactEmail: \"username@example.com\",\n    speed: \"200Mbps\",\n    vlans: [example1.vxlan],\n});\nconst exampleConnection = new equinix.fabric.Connection(\"exampleConnection\", {\n    name: \"tf-metal-from-fcr\",\n    type: \"IP_VC\",\n    bandwidth: 200,\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\"username@example.com\"],\n    }],\n    project: {\n        projectId: \"\u003cfabric_project_id\u003e\",\n    },\n    aSide: {\n        accessPoint: {\n            type: \"CLOUD_ROUTER\",\n            router: {\n                uuid: exampleEquinixFabricCloudRouter.id,\n            },\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: \"METAL_NETWORK\",\n            authenticationKey: example.authorizationCode,\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexample1 = equinix.metal.Vlan(\"example1\",\n    project_id=\"\u003cmetal_project_id\u003e\",\n    metro=\"SV\")\nexample = equinix.metal.Interconnection(\"example\",\n    name=\"tf-metal-from-fcr\",\n    project_id=\"\u003cmetal_project_id\u003e\",\n    metro=\"SV\",\n    redundancy=\"primary\",\n    type=\"shared_port_vlan\",\n    contact_email=\"username@example.com\",\n    speed=\"200Mbps\",\n    vlans=[example1.vxlan])\nexample_connection = equinix.fabric.Connection(\"exampleConnection\",\n    name=\"tf-metal-from-fcr\",\n    type=\"IP_VC\",\n    bandwidth=200,\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\"username@example.com\"],\n    }],\n    project={\n        \"project_id\": \"\u003cfabric_project_id\u003e\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": \"CLOUD_ROUTER\",\n            \"router\": {\n                \"uuid\": example_equinix_fabric_cloud_router[\"id\"],\n            },\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": \"METAL_NETWORK\",\n            \"authentication_key\": example.authorization_code,\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/equinix/pulumi-equinix/sdk/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\texample1, err := metal.NewVlan(ctx, \"example1\", \u0026metal.VlanArgs{\n\t\t\tProjectId: pulumi.String(\"\u003cmetal_project_id\u003e\"),\n\t\t\tMetro:     pulumi.String(\"SV\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := metal.NewInterconnection(ctx, \"example\", \u0026metal.InterconnectionArgs{\n\t\t\tName:         pulumi.String(\"tf-metal-from-fcr\"),\n\t\t\tProjectId:    pulumi.String(\"\u003cmetal_project_id\u003e\"),\n\t\t\tMetro:        pulumi.String(\"SV\"),\n\t\t\tRedundancy:   pulumi.String(\"primary\"),\n\t\t\tType:         pulumi.String(\"shared_port_vlan\"),\n\t\t\tContactEmail: pulumi.String(\"username@example.com\"),\n\t\t\tSpeed:        pulumi.String(\"200Mbps\"),\n\t\t\tVlans: pulumi.IntArray{\n\t\t\t\texample1.Vxlan,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = fabric.NewConnection(ctx, \"exampleConnection\", \u0026fabric.ConnectionArgs{\n\t\t\tName:      pulumi.String(\"tf-metal-from-fcr\"),\n\t\t\tType:      pulumi.String(\"IP_VC\"),\n\t\t\tBandwidth: pulumi.Int(200),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"username@example.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: \u0026fabric.ConnectionProjectArgs{\n\t\t\t\tProjectId: pulumi.String(\"\u003cfabric_project_id\u003e\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(\"CLOUD_ROUTER\"),\n\t\t\t\t\tRouter: \u0026fabric.ConnectionASideAccessPointRouterArgs{\n\t\t\t\t\t\tUuid: pulumi.Any(exampleEquinixFabricCloudRouter.Id),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType:              pulumi.String(\"METAL_NETWORK\"),\n\t\t\t\t\tAuthenticationKey: example.AuthorizationCode,\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example1 = new Equinix.Metal.Vlan(\"example1\", new()\n    {\n        ProjectId = \"\u003cmetal_project_id\u003e\",\n        Metro = \"SV\",\n    });\n\n    var example = new Equinix.Metal.Interconnection(\"example\", new()\n    {\n        Name = \"tf-metal-from-fcr\",\n        ProjectId = \"\u003cmetal_project_id\u003e\",\n        Metro = \"SV\",\n        Redundancy = \"primary\",\n        Type = \"shared_port_vlan\",\n        ContactEmail = \"username@example.com\",\n        Speed = \"200Mbps\",\n        Vlans = new[]\n        {\n            example1.Vxlan,\n        },\n    });\n\n    var exampleConnection = new Equinix.Fabric.Connection(\"exampleConnection\", new()\n    {\n        Name = \"tf-metal-from-fcr\",\n        Type = \"IP_VC\",\n        Bandwidth = 200,\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"username@example.com\",\n                },\n            },\n        },\n        Project = new Equinix.Fabric.Inputs.ConnectionProjectArgs\n        {\n            ProjectId = \"\u003cfabric_project_id\u003e\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = \"CLOUD_ROUTER\",\n                Router = new Equinix.Fabric.Inputs.ConnectionASideAccessPointRouterArgs\n                {\n                    Uuid = exampleEquinixFabricCloudRouter.Id,\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = \"METAL_NETWORK\",\n                AuthenticationKey = example.AuthorizationCode,\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Vlan;\nimport com.pulumi.equinix.metal.VlanArgs;\nimport com.pulumi.equinix.metal.Interconnection;\nimport com.pulumi.equinix.metal.InterconnectionArgs;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionProjectArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointRouterArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example1 = new Vlan(\"example1\", VlanArgs.builder()\n            .projectId(\"\u003cmetal_project_id\u003e\")\n            .metro(\"SV\")\n            .build());\n\n        var example = new Interconnection(\"example\", InterconnectionArgs.builder()\n            .name(\"tf-metal-from-fcr\")\n            .projectId(\"\u003cmetal_project_id\u003e\")\n            .metro(\"SV\")\n            .redundancy(\"primary\")\n            .type(\"shared_port_vlan\")\n            .contactEmail(\"username@example.com\")\n            .speed(\"200Mbps\")\n            .vlans(example1.vxlan())\n            .build());\n\n        var exampleConnection = new Connection(\"exampleConnection\", ConnectionArgs.builder()\n            .name(\"tf-metal-from-fcr\")\n            .type(\"IP_VC\")\n            .bandwidth(200)\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(\"username@example.com\")\n                .build())\n            .project(ConnectionProjectArgs.builder()\n                .projectId(\"\u003cfabric_project_id\u003e\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"CLOUD_ROUTER\")\n                    .router(ConnectionASideAccessPointRouterArgs.builder()\n                        .uuid(exampleEquinixFabricCloudRouter.id())\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"METAL_NETWORK\")\n                    .authenticationKey(example.authorizationCode())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example1:\n    type: equinix:metal:Vlan\n    properties:\n      projectId: \u003cmetal_project_id\u003e\n      metro: SV\n  example:\n    type: equinix:metal:Interconnection\n    properties:\n      name: tf-metal-from-fcr\n      projectId: \u003cmetal_project_id\u003e\n      metro: SV\n      redundancy: primary\n      type: shared_port_vlan\n      contactEmail: username@example.com\n      speed: 200Mbps\n      vlans:\n        - ${example1.vxlan}\n  exampleConnection:\n    type: equinix:fabric:Connection\n    name: example\n    properties:\n      name: tf-metal-from-fcr\n      type: IP_VC\n      bandwidth: '200'\n      notifications:\n        - type: ALL\n          emails:\n            - username@example.com\n      project:\n        projectId: \u003cfabric_project_id\u003e\n      aSide:\n        accessPoint:\n          type: CLOUD_ROUTER\n          router:\n            uuid: ${exampleEquinixFabricCloudRouter.id}\n      zSide:\n        accessPoint:\n          type: METAL_NETWORK\n          authenticationKey: ${example.authorizationCode}\n```\n{{% /example %}}\n\n{{% example %}}\n### example fabric billed metal from network edge\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst example = new equinix.metal.Vrf(\"example\", {\n    name: \"tf-metal-from-ne\",\n    metro: \"FR\",\n    localAsn: 65001,\n    ipRanges: [\"10.99.1.0/24\"],\n    projectId: test.id,\n});\nconst exampleInterconnection = new equinix.metal.Interconnection(\"exampleInterconnection\", {\n    name: \"tf-metal-from-ne\",\n    projectId: \"\u003cmetal_project_id\u003e\",\n    type: \"shared\",\n    redundancy: \"primary\",\n    metro: \"FR\",\n    speed: \"200Mbps\",\n    serviceTokenType: \"z_side\",\n    contactEmail: \"username@example.com\",\n    vrfs: [example.vxlan],\n});\nconst exampleConnection = new equinix.fabric.Connection(\"exampleConnection\", {\n    name: \"tf-metal-from-ne\",\n    type: equinix.fabric.ConnectionType.EVPL,\n    bandwidth: 200,\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\"username@example.com\"],\n    }],\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    project: {\n        projectId: \"\u003cfabric_project_id\u003e\",\n    },\n    aSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.VD,\n            virtualDevice: {\n                type: \"EDGE\",\n                uuid: exampleEquinixNetworkDevice.id,\n            },\n        },\n    },\n    zSide: {\n        serviceToken: {\n            uuid: exampleInterconnection.serviceTokens.apply(serviceTokens =\u003e serviceTokens[0].id),\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexample = equinix.metal.Vrf(\"example\",\n    name=\"tf-metal-from-ne\",\n    metro=\"FR\",\n    local_asn=65001,\n    ip_ranges=[\"10.99.1.0/24\"],\n    project_id=test[\"id\"])\nexample_interconnection = equinix.metal.Interconnection(\"exampleInterconnection\",\n    name=\"tf-metal-from-ne\",\n    project_id=\"\u003cmetal_project_id\u003e\",\n    type=\"shared\",\n    redundancy=\"primary\",\n    metro=\"FR\",\n    speed=\"200Mbps\",\n    service_token_type=\"z_side\",\n    contact_email=\"username@example.com\",\n    vrfs=[example.vxlan])\nexample_connection = equinix.fabric.Connection(\"exampleConnection\",\n    name=\"tf-metal-from-ne\",\n    type=equinix.fabric.ConnectionType.EVPL,\n    bandwidth=200,\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\"username@example.com\"],\n    }],\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    project={\n        \"project_id\": \"\u003cfabric_project_id\u003e\",\n    },\n    a_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.VD,\n            \"virtual_device\": {\n                \"type\": \"EDGE\",\n                \"uuid\": example_equinix_network_device[\"id\"],\n            },\n        },\n    },\n    z_side={\n        \"service_token\": {\n            \"uuid\": example_interconnection.service_tokens[0].id,\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewVrf(ctx, \"example\", \u0026metal.VrfArgs{\n\t\t\tName:     pulumi.String(\"tf-metal-from-ne\"),\n\t\t\tMetro:    pulumi.String(\"FR\"),\n\t\t\tLocalAsn: pulumi.Int(65001),\n\t\t\tIpRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.99.1.0/24\"),\n\t\t\t},\n\t\t\tProjectId: pulumi.Any(test.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleInterconnection, err := metal.NewInterconnection(ctx, \"exampleInterconnection\", \u0026metal.InterconnectionArgs{\n\t\t\tName:             pulumi.String(\"tf-metal-from-ne\"),\n\t\t\tProjectId:        pulumi.String(\"\u003cmetal_project_id\u003e\"),\n\t\t\tType:             pulumi.String(\"shared\"),\n\t\t\tRedundancy:       pulumi.String(\"primary\"),\n\t\t\tMetro:            pulumi.String(\"FR\"),\n\t\t\tSpeed:            pulumi.String(\"200Mbps\"),\n\t\t\tServiceTokenType: pulumi.String(\"z_side\"),\n\t\t\tContactEmail:     pulumi.String(\"username@example.com\"),\n\t\t\tVrfs: pulumi.StringArray{\n\t\t\t\texample.Vxlan,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = fabric.NewConnection(ctx, \"exampleConnection\", \u0026fabric.ConnectionArgs{\n\t\t\tName:      pulumi.String(\"tf-metal-from-ne\"),\n\t\t\tType:      pulumi.String(fabric.ConnectionTypeEVPL),\n\t\t\tBandwidth: pulumi.Int(200),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"username@example.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tProject: \u0026fabric.ConnectionProjectArgs{\n\t\t\t\tProjectId: pulumi.String(\"\u003cfabric_project_id\u003e\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeVD),\n\t\t\t\t\tVirtualDevice: \u0026fabric.ConnectionASideAccessPointVirtualDeviceArgs{\n\t\t\t\t\t\tType: pulumi.String(\"EDGE\"),\n\t\t\t\t\t\tUuid: pulumi.Any(exampleEquinixNetworkDevice.Id),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tServiceToken: \u0026fabric.ConnectionZSideServiceTokenArgs{\n\t\t\t\t\tUuid: exampleInterconnection.ServiceTokens.ApplyT(func(serviceTokens []metal.InterconnectionServiceToken) (*string, error) {\n\t\t\t\t\t\treturn \u0026serviceTokens[0].Id, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Equinix.Metal.Vrf(\"example\", new()\n    {\n        Name = \"tf-metal-from-ne\",\n        Metro = \"FR\",\n        LocalAsn = 65001,\n        IpRanges = new[]\n        {\n            \"10.99.1.0/24\",\n        },\n        ProjectId = test.Id,\n    });\n\n    var exampleInterconnection = new Equinix.Metal.Interconnection(\"exampleInterconnection\", new()\n    {\n        Name = \"tf-metal-from-ne\",\n        ProjectId = \"\u003cmetal_project_id\u003e\",\n        Type = \"shared\",\n        Redundancy = \"primary\",\n        Metro = \"FR\",\n        Speed = \"200Mbps\",\n        ServiceTokenType = \"z_side\",\n        ContactEmail = \"username@example.com\",\n        Vrfs = new[]\n        {\n            example.Vxlan,\n        },\n    });\n\n    var exampleConnection = new Equinix.Fabric.Connection(\"exampleConnection\", new()\n    {\n        Name = \"tf-metal-from-ne\",\n        Type = Equinix.Fabric.ConnectionType.EVPL,\n        Bandwidth = 200,\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"username@example.com\",\n                },\n            },\n        },\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        Project = new Equinix.Fabric.Inputs.ConnectionProjectArgs\n        {\n            ProjectId = \"\u003cfabric_project_id\u003e\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.VD,\n                VirtualDevice = new Equinix.Fabric.Inputs.ConnectionASideAccessPointVirtualDeviceArgs\n                {\n                    Type = \"EDGE\",\n                    Uuid = exampleEquinixNetworkDevice.Id,\n                },\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            ServiceToken = new Equinix.Fabric.Inputs.ConnectionZSideServiceTokenArgs\n            {\n                Uuid = exampleInterconnection.ServiceTokens.Apply(serviceTokens =\u003e serviceTokens[0].Id),\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Vrf;\nimport com.pulumi.equinix.metal.VrfArgs;\nimport com.pulumi.equinix.metal.Interconnection;\nimport com.pulumi.equinix.metal.InterconnectionArgs;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionProjectArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointVirtualDeviceArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideServiceTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Vrf(\"example\", VrfArgs.builder()\n            .name(\"tf-metal-from-ne\")\n            .metro(\"FR\")\n            .localAsn(65001)\n            .ipRanges(\"10.99.1.0/24\")\n            .projectId(test.id())\n            .build());\n\n        var exampleInterconnection = new Interconnection(\"exampleInterconnection\", InterconnectionArgs.builder()\n            .name(\"tf-metal-from-ne\")\n            .projectId(\"\u003cmetal_project_id\u003e\")\n            .type(\"shared\")\n            .redundancy(\"primary\")\n            .metro(\"FR\")\n            .speed(\"200Mbps\")\n            .serviceTokenType(\"z_side\")\n            .contactEmail(\"username@example.com\")\n            .vrfs(example.vxlan())\n            .build());\n\n        var exampleConnection = new Connection(\"exampleConnection\", ConnectionArgs.builder()\n            .name(\"tf-metal-from-ne\")\n            .type(\"EVPL_VC\")\n            .bandwidth(200)\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(\"username@example.com\")\n                .build())\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .project(ConnectionProjectArgs.builder()\n                .projectId(\"\u003cfabric_project_id\u003e\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .accessPoint(ConnectionASideAccessPointArgs.builder()\n                    .type(\"VD\")\n                    .virtualDevice(ConnectionASideAccessPointVirtualDeviceArgs.builder()\n                        .type(\"EDGE\")\n                        .uuid(exampleEquinixNetworkDevice.id())\n                        .build())\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .serviceToken(ConnectionZSideServiceTokenArgs.builder()\n                    .uuid(exampleInterconnection.serviceTokens().applyValue(_serviceTokens -\u003e _serviceTokens[0].id()))\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: equinix:metal:Vrf\n    properties:\n      name: tf-metal-from-ne\n      metro: FR\n      localAsn: '65001'\n      ipRanges:\n        - 10.99.1.0/24\n      projectId: ${test.id}\n  exampleInterconnection:\n    type: equinix:metal:Interconnection\n    name: example\n    properties:\n      name: tf-metal-from-ne\n      projectId: \u003cmetal_project_id\u003e\n      type: shared\n      redundancy: primary\n      metro: FR\n      speed: 200Mbps\n      serviceTokenType: z_side\n      contactEmail: username@example.com\n      vrfs:\n        - ${example.vxlan}\n  exampleConnection:\n    type: equinix:fabric:Connection\n    name: example\n    properties:\n      name: tf-metal-from-ne\n      type: EVPL_VC\n      bandwidth: '200'\n      notifications:\n        - type: ALL\n          emails:\n            - username@example.com\n      order:\n        purchaseOrderNumber: 1-323292\n      project:\n        projectId: \u003cfabric_project_id\u003e\n      aSide:\n        accessPoint:\n          type: VD\n          virtualDevice:\n            type: EDGE\n            uuid: ${exampleEquinixNetworkDevice.id}\n      zSide:\n        serviceToken:\n          uuid: ${exampleInterconnection.serviceTokens[0].id}\n```\n{{% /example %}}\n\n{{% example %}}\n### example metal billed metal to fabric port\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst aSide = equinix.fabric.getPortsOutput({\n    filter: {\n        name: \"\u003cname_of_port||port_prefix\u003e\",\n    },\n});\nconst example = new equinix.metal.Interconnection(\"example\", {\n    name: \"tf-metal-2-port\",\n    projectId: \"\u003cmetal_project_id\u003e\",\n    type: \"shared\",\n    redundancy: \"redundant\",\n    metro: \"FR\",\n    speed: \"1Gbps\",\n    serviceTokenType: \"a_side\",\n    contactEmail: \"username@example.com\",\n});\nconst exampleConnection = new equinix.fabric.Connection(\"exampleConnection\", {\n    name: \"tf-metal-2-port\",\n    type: equinix.fabric.ConnectionType.EVPL,\n    notifications: [{\n        type: equinix.fabric.NotificationsType.All,\n        emails: [\"username@example.com\"],\n    }],\n    project: {\n        projectId: \"\u003cfabric_project_id\u003e\",\n    },\n    bandwidth: 100,\n    order: {\n        purchaseOrderNumber: \"1-323292\",\n    },\n    aSide: {\n        serviceToken: {\n            uuid: example.serviceTokens.apply(serviceTokens =\u003e serviceTokens[0].id),\n        },\n    },\n    zSide: {\n        accessPoint: {\n            type: equinix.fabric.AccessPointType.Colo,\n            port: {\n                uuid: aSide.apply(aSide =\u003e aSide.data?.[0]?.uuid),\n            },\n            linkProtocol: {\n                type: equinix.fabric.AccessPointLinkProtocolType.Dot1q,\n                vlanTag: 1234,\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\na_side = equinix.fabric.get_ports_output(filter={\n    \"name\": \"\u003cname_of_port||port_prefix\u003e\",\n})\nexample = equinix.metal.Interconnection(\"example\",\n    name=\"tf-metal-2-port\",\n    project_id=\"\u003cmetal_project_id\u003e\",\n    type=\"shared\",\n    redundancy=\"redundant\",\n    metro=\"FR\",\n    speed=\"1Gbps\",\n    service_token_type=\"a_side\",\n    contact_email=\"username@example.com\")\nexample_connection = equinix.fabric.Connection(\"exampleConnection\",\n    name=\"tf-metal-2-port\",\n    type=equinix.fabric.ConnectionType.EVPL,\n    notifications=[{\n        \"type\": equinix.fabric.NotificationsType.ALL,\n        \"emails\": [\"username@example.com\"],\n    }],\n    project={\n        \"project_id\": \"\u003cfabric_project_id\u003e\",\n    },\n    bandwidth=100,\n    order={\n        \"purchase_order_number\": \"1-323292\",\n    },\n    a_side={\n        \"service_token\": {\n            \"uuid\": example.service_tokens[0].id,\n        },\n    },\n    z_side={\n        \"access_point\": {\n            \"type\": equinix.fabric.AccessPointType.COLO,\n            \"port\": {\n                \"uuid\": a_side.data[0].uuid,\n            },\n            \"link_protocol\": {\n                \"type\": equinix.fabric.AccessPointLinkProtocolType.DOT1Q,\n                \"vlan_tag\": 1234,\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/equinix/pulumi-equinix/sdk/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\taSide := fabric.GetPortsOutput(ctx, fabric.GetPortsOutputArgs{\n\t\t\tFilter: \u0026fabric.GetPortsFilterArgs{\n\t\t\t\tName: pulumi.String(\"\u003cname_of_port||port_prefix\u003e\"),\n\t\t\t},\n\t\t}, nil)\n\t\texample, err := metal.NewInterconnection(ctx, \"example\", \u0026metal.InterconnectionArgs{\n\t\t\tName:             pulumi.String(\"tf-metal-2-port\"),\n\t\t\tProjectId:        pulumi.String(\"\u003cmetal_project_id\u003e\"),\n\t\t\tType:             pulumi.String(\"shared\"),\n\t\t\tRedundancy:       pulumi.String(\"redundant\"),\n\t\t\tMetro:            pulumi.String(\"FR\"),\n\t\t\tSpeed:            pulumi.String(\"1Gbps\"),\n\t\t\tServiceTokenType: pulumi.String(\"a_side\"),\n\t\t\tContactEmail:     pulumi.String(\"username@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = fabric.NewConnection(ctx, \"exampleConnection\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"tf-metal-2-port\"),\n\t\t\tType: pulumi.String(fabric.ConnectionTypeEVPL),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(fabric.NotificationsTypeAll),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"username@example.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: \u0026fabric.ConnectionProjectArgs{\n\t\t\t\tProjectId: pulumi.String(\"\u003cfabric_project_id\u003e\"),\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(100),\n\t\t\tOrder: \u0026fabric.ConnectionOrderArgs{\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"1-323292\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tServiceToken: \u0026fabric.ConnectionASideServiceTokenArgs{\n\t\t\t\t\tUuid: example.ServiceTokens.ApplyT(func(serviceTokens []metal.InterconnectionServiceToken) (*string, error) {\n\t\t\t\t\t\treturn \u0026serviceTokens[0].Id, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(fabric.AccessPointTypeColo),\n\t\t\t\t\tPort: \u0026fabric.ConnectionZSideAccessPointPortArgs{\n\t\t\t\t\t\tUuid: aSide.ApplyT(func(aSide fabric.GetPortsResult) (*string, error) {\n\t\t\t\t\t\t\treturn \u0026aSide.Data[0].Uuid, nil\n\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t},\n\t\t\t\t\tLinkProtocol: \u0026fabric.ConnectionZSideAccessPointLinkProtocolArgs{\n\t\t\t\t\t\tType:    pulumi.String(fabric.AccessPointLinkProtocolTypeDot1q),\n\t\t\t\t\t\tVlanTag: pulumi.Int(1234),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var aSide = Equinix.Fabric.GetPorts.Invoke(new()\n    {\n        Filter = new Equinix.Fabric.Inputs.GetPortsFilterInputArgs\n        {\n            Name = \"\u003cname_of_port||port_prefix\u003e\",\n        },\n    });\n\n    var example = new Equinix.Metal.Interconnection(\"example\", new()\n    {\n        Name = \"tf-metal-2-port\",\n        ProjectId = \"\u003cmetal_project_id\u003e\",\n        Type = \"shared\",\n        Redundancy = \"redundant\",\n        Metro = \"FR\",\n        Speed = \"1Gbps\",\n        ServiceTokenType = \"a_side\",\n        ContactEmail = \"username@example.com\",\n    });\n\n    var exampleConnection = new Equinix.Fabric.Connection(\"exampleConnection\", new()\n    {\n        Name = \"tf-metal-2-port\",\n        Type = Equinix.Fabric.ConnectionType.EVPL,\n        Notifications = new[]\n        {\n            new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n            {\n                Type = Equinix.Fabric.NotificationsType.All,\n                Emails = new[]\n                {\n                    \"username@example.com\",\n                },\n            },\n        },\n        Project = new Equinix.Fabric.Inputs.ConnectionProjectArgs\n        {\n            ProjectId = \"\u003cfabric_project_id\u003e\",\n        },\n        Bandwidth = 100,\n        Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs\n        {\n            PurchaseOrderNumber = \"1-323292\",\n        },\n        ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n        {\n            ServiceToken = new Equinix.Fabric.Inputs.ConnectionASideServiceTokenArgs\n            {\n                Uuid = example.ServiceTokens.Apply(serviceTokens =\u003e serviceTokens[0].Id),\n            },\n        },\n        ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n        {\n            AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n            {\n                Type = Equinix.Fabric.AccessPointType.Colo,\n                Port = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointPortArgs\n                {\n                    Uuid = aSide.Apply(getPortsResult =\u003e getPortsResult.Data[0]?.Uuid),\n                },\n                LinkProtocol = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLinkProtocolArgs\n                {\n                    Type = Equinix.Fabric.AccessPointLinkProtocolType.Dot1q,\n                    VlanTag = 1234,\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetPortsArgs;\nimport com.pulumi.equinix.fabric.inputs.GetPortsFilterArgs;\nimport com.pulumi.equinix.metal.Interconnection;\nimport com.pulumi.equinix.metal.InterconnectionArgs;\nimport com.pulumi.equinix.fabric.Connection;\nimport com.pulumi.equinix.fabric.ConnectionArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionProjectArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionASideServiceTokenArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointPortArgs;\nimport com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLinkProtocolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var aSide = FabricFunctions.getPorts(GetPortsArgs.builder()\n            .filter(GetPortsFilterArgs.builder()\n                .name(\"\u003cname_of_port||port_prefix\u003e\")\n                .build())\n            .build());\n\n        var example = new Interconnection(\"example\", InterconnectionArgs.builder()\n            .name(\"tf-metal-2-port\")\n            .projectId(\"\u003cmetal_project_id\u003e\")\n            .type(\"shared\")\n            .redundancy(\"redundant\")\n            .metro(\"FR\")\n            .speed(\"1Gbps\")\n            .serviceTokenType(\"a_side\")\n            .contactEmail(\"username@example.com\")\n            .build());\n\n        var exampleConnection = new Connection(\"exampleConnection\", ConnectionArgs.builder()\n            .name(\"tf-metal-2-port\")\n            .type(\"EVPL_VC\")\n            .notifications(ConnectionNotificationArgs.builder()\n                .type(\"ALL\")\n                .emails(\"username@example.com\")\n                .build())\n            .project(ConnectionProjectArgs.builder()\n                .projectId(\"\u003cfabric_project_id\u003e\")\n                .build())\n            .bandwidth(100)\n            .order(ConnectionOrderArgs.builder()\n                .purchaseOrderNumber(\"1-323292\")\n                .build())\n            .aSide(ConnectionASideArgs.builder()\n                .serviceToken(ConnectionASideServiceTokenArgs.builder()\n                    .uuid(example.serviceTokens().applyValue(_serviceTokens -\u003e _serviceTokens[0].id()))\n                    .build())\n                .build())\n            .zSide(ConnectionZSideArgs.builder()\n                .accessPoint(ConnectionZSideAccessPointArgs.builder()\n                    .type(\"COLO\")\n                    .port(ConnectionZSideAccessPointPortArgs.builder()\n                        .uuid(aSide.applyValue(_aSide -\u003e _aSide.data()[0].uuid()))\n                        .build())\n                    .linkProtocol(ConnectionZSideAccessPointLinkProtocolArgs.builder()\n                        .type(\"DOT1Q\")\n                        .vlanTag(1234)\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: equinix:metal:Interconnection\n    properties:\n      name: tf-metal-2-port\n      projectId: \u003cmetal_project_id\u003e\n      type: shared\n      redundancy: redundant\n      metro: FR\n      speed: 1Gbps\n      serviceTokenType: a_side\n      contactEmail: username@example.com\n  exampleConnection:\n    type: equinix:fabric:Connection\n    name: example\n    properties:\n      name: tf-metal-2-port\n      type: EVPL_VC\n      notifications:\n        - type: ALL\n          emails:\n            - username@example.com\n      project:\n        projectId: \u003cfabric_project_id\u003e\n      bandwidth: '100'\n      order:\n        purchaseOrderNumber: 1-323292\n      aSide:\n        serviceToken:\n          uuid: ${example.serviceTokens[0].id}\n      zSide:\n        accessPoint:\n          type: COLO\n          port:\n            uuid: ${aSide.data[0].uuid}\n          linkProtocol:\n            type: DOT1Q\n            vlanTag: 1234\nvariables:\n  aSide:\n    fn::invoke:\n      function: equinix:fabric:getPorts\n      arguments:\n        filter:\n          name: \u003cname_of_port||port_prefix\u003e\n```\n{{% /example %}}\n\n{{% /examples %}}","properties":{"authorizationCode":{"type":"string","description":"Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric.\n"},"contactEmail":{"type":"string","description":"The preferred email used for communication and notifications about the Equinix Fabric interconnection\n"},"description":{"type":"string","description":"Description of the connection resource\n"},"facility":{"type":"string","description":"Facility where the connection will be created\n","deprecationMessage":"Use metro instead of facility. For more information, read the migration guide."},"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. Applicable with type \"dedicated\"\n"},"ports":{"type":"array","items":{"$ref":"#/types/equinix:metal/InterconnectionPort:InterconnectionPort"},"description":"List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)\n"},"projectId":{"type":"string","description":"ID of the project where the connection is scoped to. Required with type \"shared\"\n"},"redundancy":{"type":"string","description":"Connection redundancy - redundant or primary\n"},"serviceTokenType":{"type":"string","description":"Only used with shared connection. Type of service token to use for the connection, a*side or z*side\n"},"serviceTokens":{"type":"array","items":{"$ref":"#/types/equinix:metal/InterconnectionServiceToken:InterconnectionServiceToken"},"description":"Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)\n"},"speed":{"type":"string","description":"Connection speed -  Values must be in the format '\\n\\nMbps' or '\\n\\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.\n"},"status":{"type":"string","description":"Status of the connection resource\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags attached to the connection\n"},"token":{"type":"string","description":"Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)\n","deprecationMessage":"If your organization already has connection service tokens enabled, use `service_tokens` instead"},"type":{"type":"string","description":"Connection type - dedicated, shared or shared*port*vlan\n"},"vlans":{"type":"array","items":{"type":"integer"},"description":"Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection\n"},"vrfs":{"type":"array","items":{"type":"string"},"description":"Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection\n"}},"required":["authorizationCode","contactEmail","description","facility","metro","mode","name","organizationId","ports","redundancy","serviceTokens","speed","status","token","type"],"inputProperties":{"contactEmail":{"type":"string","description":"The preferred email used for communication and notifications about the Equinix Fabric interconnection\n"},"description":{"type":"string","description":"Description of the connection resource\n"},"facility":{"type":"string","description":"Facility where the connection will be created\n","deprecationMessage":"Use metro instead of facility. For more information, read the migration guide."},"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. Applicable with type \"dedicated\"\n"},"projectId":{"type":"string","description":"ID of the project where the connection is scoped to. Required with type \"shared\"\n"},"redundancy":{"type":"string","description":"Connection redundancy - redundant or primary\n"},"serviceTokenType":{"type":"string","description":"Only used with shared connection. Type of service token to use for the connection, a*side or z*side\n"},"speed":{"type":"string","description":"Connection speed -  Values must be in the format '\\n\\nMbps' or '\\n\\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags attached to the connection\n"},"type":{"type":"string","description":"Connection type - dedicated, shared or shared*port*vlan\n"},"vlans":{"type":"array","items":{"type":"integer"},"description":"Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection\n"},"vrfs":{"type":"array","items":{"type":"string"},"description":"Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection\n"}},"requiredInputs":["redundancy","type"],"stateInputs":{"description":"Input properties used for looking up and filtering Interconnection resources.\n","properties":{"authorizationCode":{"type":"string","description":"Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric.\n"},"contactEmail":{"type":"string","description":"The preferred email used for communication and notifications about the Equinix Fabric interconnection\n"},"description":{"type":"string","description":"Description of the connection resource\n"},"facility":{"type":"string","description":"Facility where the connection will be created\n","deprecationMessage":"Use metro instead of facility. For more information, read the migration guide."},"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. Applicable with type \"dedicated\"\n"},"ports":{"type":"array","items":{"$ref":"#/types/equinix:metal/InterconnectionPort:InterconnectionPort"},"description":"List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)\n"},"projectId":{"type":"string","description":"ID of the project where the connection is scoped to. Required with type \"shared\"\n"},"redundancy":{"type":"string","description":"Connection redundancy - redundant or primary\n"},"serviceTokenType":{"type":"string","description":"Only used with shared connection. Type of service token to use for the connection, a*side or z*side\n"},"serviceTokens":{"type":"array","items":{"$ref":"#/types/equinix:metal/InterconnectionServiceToken:InterconnectionServiceToken"},"description":"Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)\n"},"speed":{"type":"string","description":"Connection speed -  Values must be in the format '\\n\\nMbps' or '\\n\\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.\n"},"status":{"type":"string","description":"Status of the connection resource\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags attached to the connection\n"},"token":{"type":"string","description":"Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)\n","deprecationMessage":"If your organization already has connection service tokens enabled, use `service_tokens` instead"},"type":{"type":"string","description":"Connection type - dedicated, shared or shared*port*vlan\n"},"vlans":{"type":"array","items":{"type":"integer"},"description":"Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection\n"},"vrfs":{"type":"array","items":{"type":"string"},"description":"Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection\n"}},"type":"object"}},"equinix:metal/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 one of your reserved blocks in the same project and metro 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 block 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 with 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 metro.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as std from \"@pulumi/std\";\n\nconst myblock = new equinix.metal.ReservedIpBlock(\"myblock\", {\n    projectId: projectId,\n    metro: \"ny\",\n    quantity: 2,\n});\nconst firstAddressAssignment = new equinix.metal.IpAttachment(\"firstAddressAssignment\", {\n    deviceId: mydevice.id,\n    cidrNotation: std.joinOutput({\n        separator: \"/\",\n        input: [\n            std.cidrhostOutput({\n                input: myblockMetalReservedIpBlock.cidrNotation,\n                host: 0,\n            }).apply(invoke =\u003e invoke.result),\n            \"32\",\n        ],\n    }).apply(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\nimport pulumi_std as std\n\nmyblock = equinix.metal.ReservedIpBlock(\"myblock\",\n    project_id=project_id,\n    metro=\"ny\",\n    quantity=2)\nfirst_address_assignment = equinix.metal.IpAttachment(\"firstAddressAssignment\",\n    device_id=mydevice[\"id\"],\n    cidr_notation=std.join_output(separator=\"/\",\n        input=[\n            std.cidrhost_output(input=myblock_metal_reserved_ip_block[\"cidrNotation\"],\n                host=0).apply(lambda invoke: invoke.result),\n            \"32\",\n        ]).apply(lambda invoke: invoke.result))\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := metal.NewReservedIpBlock(ctx, \"myblock\", \u0026metal.ReservedIpBlockArgs{\n\t\t\tProjectId: pulumi.Any(projectId),\n\t\t\tMetro:     pulumi.String(\"ny\"),\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 = metal.NewIpAttachment(ctx, \"firstAddressAssignment\", \u0026metal.IpAttachmentArgs{\n\t\t\tDeviceId: pulumi.Any(mydevice.Id),\n\t\t\tCidrNotation: pulumi.String(std.JoinOutput(ctx, std.JoinOutputArgs{\n\t\t\t\tSeparator: pulumi.String(\"/\"),\n\t\t\t\tInput: pulumi.StringArray{\n\t\t\t\t\tstd.CidrhostOutput(ctx, std.CidrhostOutputArgs{\n\t\t\t\t\t\tInput: pulumi.Any(myblockMetalReservedIpBlock.CidrNotation),\n\t\t\t\t\t\tHost:  pulumi.Int(0),\n\t\t\t\t\t}, nil).ApplyT(func(invoke std.CidrhostResult) (*string, error) {\n\t\t\t\t\t\treturn invoke.Result, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\tpulumi.String(\"32\"),\n\t\t\t\t},\n\t\t\t}, nil).ApplyT(func(invoke std.JoinResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myblock = new Equinix.Metal.ReservedIpBlock(\"myblock\", new()\n    {\n        ProjectId = projectId,\n        Metro = \"ny\",\n        Quantity = 2,\n    });\n\n    var firstAddressAssignment = new Equinix.Metal.IpAttachment(\"firstAddressAssignment\", new()\n    {\n        DeviceId = mydevice.Id,\n        CidrNotation = Std.Cidrhost.Invoke(new()\n        {\n            Input = myblockMetalReservedIpBlock.CidrNotation,\n            Host = 0,\n        }).Apply(invoke =\u003e Std.Join.Invoke(new()\n        {\n            Separator = \"/\",\n            Input = new[]\n            {\n                invoke.Result,\n                \"32\",\n            },\n        })).Apply(invoke =\u003e invoke.Result),\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.ReservedIpBlock;\nimport com.pulumi.equinix.metal.ReservedIpBlockArgs;\nimport com.pulumi.equinix.metal.IpAttachment;\nimport com.pulumi.equinix.metal.IpAttachmentArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.CidrhostArgs;\nimport com.pulumi.std.inputs.JoinArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myblock = new ReservedIpBlock(\"myblock\", ReservedIpBlockArgs.builder()\n            .projectId(projectId)\n            .metro(\"ny\")\n            .quantity(2)\n            .build());\n\n        var firstAddressAssignment = new IpAttachment(\"firstAddressAssignment\", IpAttachmentArgs.builder()\n            .deviceId(mydevice.id())\n            .cidrNotation(StdFunctions.join(JoinArgs.builder()\n                .separator(\"/\")\n                .input(                \n                    StdFunctions.cidrhost(CidrhostArgs.builder()\n                        .input(myblockMetalReservedIpBlock.cidrNotation())\n                        .host(0)\n                        .build()).applyValue(_invoke -\u003e _invoke.result()),\n                    \"32\")\n                .build()).applyValue(_invoke -\u003e _invoke.result()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Reserve /30 block of max 2 public IPv4 addresses in metro ny for myproject\n  myblock:\n    type: equinix:metal:ReservedIpBlock\n    properties:\n      projectId: ${projectId}\n      metro: ny\n      quantity: 2\n  # Assign /32 subnet (single address) from reserved block to a device\n  firstAddressAssignment:\n    type: equinix:metal:IpAttachment\n    name: first_address_assignment\n    properties:\n      deviceId: ${mydevice.id}\n      cidrNotation:\n        fn::invoke:\n          function: std:join\n          arguments:\n            separator: /\n            input:\n              - fn::invoke:\n                  function: std:cidrhost\n                  arguments:\n                    input: ${myblockMetalReservedIpBlock.cidrNotation}\n                    host: 0\n                  return: result\n              - '32'\n          return: result\n```\n{{% /example %}}\n\n{{% /examples %}}","properties":{"address":{"type":"string"},"addressFamily":{"type":"integer","description":"Address family as integer. One of `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 project and metro 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"},"vrfId":{"type":"string"}},"required":["address","addressFamily","cidr","cidrNotation","deviceId","gateway","global","manageable","management","netmask","network","public","vrfId"],"inputProperties":{"cidrNotation":{"type":"string","description":"CIDR notation of subnet from block reserved in the same project and metro as the device.\n","willReplaceOnChanges":true},"deviceId":{"type":"string","description":"ID of device to which to assign the subnet.\n","willReplaceOnChanges":true}},"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. One of `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 project and metro as the device.\n","willReplaceOnChanges":true},"deviceId":{"type":"string","description":"ID of device to which to assign the subnet.\n","willReplaceOnChanges":true},"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"},"vrfId":{"type":"string"}},"type":"object"}},"equinix:metal/organization:Organization":{"description":"Provides a resource to manage organization resource in Equinix Metal.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst tfOrganization1 = new equinix.metal.Organization(\"tfOrganization1\", {\n    name: \"foobar\",\n    description: \"quux\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntf_organization1 = equinix.metal.Organization(\"tfOrganization1\",\n    name=\"foobar\",\n    description=\"quux\")\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewOrganization(ctx, \"tfOrganization1\", \u0026metal.OrganizationArgs{\n\t\t\tName:        pulumi.String(\"foobar\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var tfOrganization1 = new Equinix.Metal.Organization(\"tfOrganization1\", new()\n    {\n        Name = \"foobar\",\n        Description = \"quux\",\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Organization;\nimport com.pulumi.equinix.metal.OrganizationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var tfOrganization1 = new Organization(\"tfOrganization1\", OrganizationArgs.builder()\n            .name(\"foobar\")\n            .description(\"quux\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new Organization\n  tfOrganization1:\n    type: equinix:metal:Organization\n    name: tf_organization_1\n    properties:\n      name: foobar\n      description: quux\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing organization ID:\n\n```sh\n$ pulumi import equinix:metal/organization:Organization equinix_metal_organization {existing_organization_id}\n```\n\n\n{{% /examples %}}","properties":{"address":{"$ref":"#/types/equinix:metal/OrganizationAddress:OrganizationAddress","description":"An object that has the address information. See Address below for more details.\n"},"created":{"type":"string","description":"The timestamp for when the organization was created.\n"},"description":{"type":"string","description":"Description string.\n"},"logo":{"type":"string","description":"Logo URL.\n","deprecationMessage":"The default (empty string) is the only valid value. Support for this field has been removed from the API"},"name":{"type":"string","description":"The name of the Organization.\n"},"twitter":{"type":"string","description":"Twitter handle.\n"},"updated":{"type":"string","description":"The timestamp for the last time the organization was updated.\n"},"website":{"type":"string","description":"Website link.\n"}},"required":["created","description","logo","name","twitter","updated","website"],"inputProperties":{"address":{"$ref":"#/types/equinix:metal/OrganizationAddress:OrganizationAddress","description":"An object that has the address information. See Address below for more details.\n"},"description":{"type":"string","description":"Description string.\n"},"logo":{"type":"string","description":"Logo URL.\n","deprecationMessage":"The default (empty string) is the only valid value. Support for this field has been removed from the API"},"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":{"address":{"$ref":"#/types/equinix:metal/OrganizationAddress:OrganizationAddress","description":"An object that has the address information. See Address below for more details.\n"},"created":{"type":"string","description":"The timestamp for when the organization was created.\n"},"description":{"type":"string","description":"Description string.\n"},"logo":{"type":"string","description":"Logo URL.\n","deprecationMessage":"The default (empty string) is the only valid value. Support for this field has been removed from the API"},"name":{"type":"string","description":"The name of the Organization.\n"},"twitter":{"type":"string","description":"Twitter handle.\n"},"updated":{"type":"string","description":"The timestamp for the last time the organization was updated.\n"},"website":{"type":"string","description":"Website link.\n"}},"type":"object"}},"equinix:metal/organizationMember:OrganizationMember":{"description":"Manage the membership of existing and new invitees within an Equinix Metal organization and its projects.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n### example 1\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst member = new equinix.metal.OrganizationMember(\"member\", {\n    invitee: \"member@example.com\",\n    roles: [\"limited_collaborator\"],\n    projectsIds: [projectId],\n    organizationId: organizationId,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nmember = equinix.metal.OrganizationMember(\"member\",\n    invitee=\"member@example.com\",\n    roles=[\"limited_collaborator\"],\n    projects_ids=[project_id],\n    organization_id=organization_id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewOrganizationMember(ctx, \"member\", \u0026metal.OrganizationMemberArgs{\n\t\t\tInvitee: pulumi.String(\"member@example.com\"),\n\t\t\tRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"limited_collaborator\"),\n\t\t\t},\n\t\t\tProjectsIds: pulumi.StringArray{\n\t\t\t\tprojectId,\n\t\t\t},\n\t\t\tOrganizationId: pulumi.Any(organizationId),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var member = new Equinix.Metal.OrganizationMember(\"member\", new()\n    {\n        Invitee = \"member@example.com\",\n        Roles = new[]\n        {\n            \"limited_collaborator\",\n        },\n        ProjectsIds = new[]\n        {\n            projectId,\n        },\n        OrganizationId = organizationId,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.OrganizationMember;\nimport com.pulumi.equinix.metal.OrganizationMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var member = new OrganizationMember(\"member\", OrganizationMemberArgs.builder()\n            .invitee(\"member@example.com\")\n            .roles(\"limited_collaborator\")\n            .projectsIds(projectId)\n            .organizationId(organizationId)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  member:\n    type: equinix:metal:OrganizationMember\n    properties:\n      invitee: member@example.com\n      roles:\n        - limited_collaborator\n      projectsIds:\n        - ${projectId}\n      organizationId: ${organizationId}\n```\n{{% /example %}}\n\n{{% example %}}\n### example 2\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst owner = new equinix.metal.OrganizationMember(\"owner\", {\n    invitee: \"admin@example.com\",\n    roles: [\"owner\"],\n    projectsIds: [],\n    organizationId: organizationId,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nowner = equinix.metal.OrganizationMember(\"owner\",\n    invitee=\"admin@example.com\",\n    roles=[\"owner\"],\n    projects_ids=[],\n    organization_id=organization_id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewOrganizationMember(ctx, \"owner\", \u0026metal.OrganizationMemberArgs{\n\t\t\tInvitee: pulumi.String(\"admin@example.com\"),\n\t\t\tRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"owner\"),\n\t\t\t},\n\t\t\tProjectsIds:    pulumi.StringArray{},\n\t\t\tOrganizationId: pulumi.Any(organizationId),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var owner = new Equinix.Metal.OrganizationMember(\"owner\", new()\n    {\n        Invitee = \"admin@example.com\",\n        Roles = new[]\n        {\n            \"owner\",\n        },\n        ProjectsIds = new[] {},\n        OrganizationId = organizationId,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.OrganizationMember;\nimport com.pulumi.equinix.metal.OrganizationMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var owner = new OrganizationMember(\"owner\", OrganizationMemberArgs.builder()\n            .invitee(\"admin@example.com\")\n            .roles(\"owner\")\n            .projectsIds()\n            .organizationId(organizationId)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  owner:\n    type: equinix:metal:OrganizationMember\n    properties:\n      invitee: admin@example.com\n      roles:\n        - owner\n      projectsIds: []\n      organizationId: ${organizationId}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using the `invitee` and `organization_id` as colon separated arguments:\n\n```sh\n$ pulumi import equinix:metal/organizationMember:OrganizationMember resource_name {invitee}:{organization_id}\n```\n\n\n{{% /examples %}}","properties":{"created":{"type":"string","description":"When the invitation was created (only known in the invitation stage)\n"},"invitedBy":{"type":"string","description":"The user_id of the user that sent the invitation (only known in the invitation stage)\n"},"invitee":{"type":"string","description":"The email address of the user to invite\n"},"message":{"type":"string","description":"A message to include in the emailed invitation.\n"},"nonce":{"type":"string","description":"The nonce for the invitation (only known in the invitation stage)\n"},"organizationId":{"type":"string","description":"The organization to invite the user to\n"},"projectsIds":{"type":"array","items":{"type":"string"},"description":"Project IDs the member has access to within the organization. If the member is an 'admin', the projects list should be empty.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"Organization roles (admin, collaborator, limited_collaborator, billing)\n"},"state":{"type":"string","description":"The state of the membership ('invited' when an invitation is open, 'active' when the user is an organization member)\n"},"updated":{"type":"string","description":"When the invitation was updated (only known in the invitation stage)\n"}},"required":["created","invitedBy","invitee","nonce","organizationId","projectsIds","roles","state","updated"],"inputProperties":{"invitee":{"type":"string","description":"The email address of the user to invite\n"},"message":{"type":"string","description":"A message to include in the emailed invitation.\n"},"organizationId":{"type":"string","description":"The organization to invite the user to\n"},"projectsIds":{"type":"array","items":{"type":"string"},"description":"Project IDs the member has access to within the organization. If the member is an 'admin', the projects list should be empty.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"Organization roles (admin, collaborator, limited_collaborator, billing)\n"}},"requiredInputs":["invitee","organizationId","projectsIds","roles"],"stateInputs":{"description":"Input properties used for looking up and filtering OrganizationMember resources.\n","properties":{"created":{"type":"string","description":"When the invitation was created (only known in the invitation stage)\n"},"invitedBy":{"type":"string","description":"The user_id of the user that sent the invitation (only known in the invitation stage)\n"},"invitee":{"type":"string","description":"The email address of the user to invite\n"},"message":{"type":"string","description":"A message to include in the emailed invitation.\n"},"nonce":{"type":"string","description":"The nonce for the invitation (only known in the invitation stage)\n"},"organizationId":{"type":"string","description":"The organization to invite the user to\n"},"projectsIds":{"type":"array","items":{"type":"string"},"description":"Project IDs the member has access to within the organization. If the member is an 'admin', the projects list should be empty.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"Organization roles (admin, collaborator, limited_collaborator, billing)\n"},"state":{"type":"string","description":"The state of the membership ('invited' when an invitation is open, 'active' when the user is an organization member)\n"},"updated":{"type":"string","description":"When the invitation was updated (only known in the invitation stage)\n"}},"type":"object"}},"equinix:metal/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).\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 (layer3 bonded mode without any vlan attached) before delete/destroy.\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).\n"},"portId":{"type":"string","description":"ID of the port to read.\n","willReplaceOnChanges":true},"resetOnDelete":{"type":"boolean","description":"Behavioral setting to reset the port to default settings (layer3 bonded mode without any vlan attached) before delete/destroy.\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).\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","willReplaceOnChanges":true},"resetOnDelete":{"type":"boolean","description":"Behavioral setting to reset the port to default settings (layer3 bonded mode without any vlan attached) before delete/destroy.\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/portVlanAttachment:PortVlanAttachment":{"description":"Provides a resource to attach device ports to VLANs.\n\nDevice and VLAN must be in the same metro.\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* https://metal.equinix.com/developers/docs/networking/layer2/\n* https://metal.equinix.com/developers/docs/networking/layer2-configs/\n\n## Attribute Referece\n\nIn addition to all arguments above, the following attributes are exported:\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\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n### example 1\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst test = new equinix.metal.Vlan(\"test\", {\n    description: \"VLAN in New York\",\n    metro: \"ny\",\n    projectId: projectId,\n});\nconst testDevice = new equinix.metal.Device(\"testDevice\", {\n    hostname: \"test\",\n    plan: equinix.metal.Plan.C3SmallX86,\n    metro: \"ny\",\n    operatingSystem: \"ubuntu_24_04\",\n    billingCycle: equinix.metal.BillingCycle.Hourly,\n    projectId: projectId,\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: test.vxlan,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.metal.Vlan(\"test\",\n    description=\"VLAN in New York\",\n    metro=\"ny\",\n    project_id=project_id)\ntest_device = equinix.metal.Device(\"testDevice\",\n    hostname=\"test\",\n    plan=equinix.metal.Plan.C3_SMALL_X86,\n    metro=\"ny\",\n    operating_system=\"ubuntu_24_04\",\n    billing_cycle=equinix.metal.BillingCycle.HOURLY,\n    project_id=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.vxlan)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewVlan(ctx, \"test\", \u0026metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"VLAN in New York\"),\n\t\t\tMetro:       pulumi.String(\"ny\"),\n\t\t\tProjectId:   pulumi.Any(projectId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDevice, err := metal.NewDevice(ctx, \"testDevice\", \u0026metal.DeviceArgs{\n\t\t\tHostname:        pulumi.String(\"test\"),\n\t\t\tPlan:            pulumi.String(metal.PlanC3SmallX86),\n\t\t\tMetro:           pulumi.String(\"ny\"),\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_24_04\"),\n\t\t\tBillingCycle:    pulumi.String(metal.BillingCycleHourly),\n\t\t\tProjectId:       pulumi.Any(projectId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDeviceNetworkType, err := metal.NewDeviceNetworkType(ctx, \"testDeviceNetworkType\", \u0026metal.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 = metal.NewPortVlanAttachment(ctx, \"testPortVlanAttachment\", \u0026metal.PortVlanAttachmentArgs{\n\t\t\tDeviceId: testDeviceNetworkType.ID(),\n\t\t\tPortName: pulumi.String(\"eth1\"),\n\t\t\tVlanVnid: test.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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Equinix.Metal.Vlan(\"test\", new()\n    {\n        Description = \"VLAN in New York\",\n        Metro = \"ny\",\n        ProjectId = projectId,\n    });\n\n    var testDevice = new Equinix.Metal.Device(\"testDevice\", new()\n    {\n        Hostname = \"test\",\n        Plan = Equinix.Metal.Plan.C3SmallX86,\n        Metro = \"ny\",\n        OperatingSystem = \"ubuntu_24_04\",\n        BillingCycle = Equinix.Metal.BillingCycle.Hourly,\n        ProjectId = projectId,\n    });\n\n    var testDeviceNetworkType = new Equinix.Metal.DeviceNetworkType(\"testDeviceNetworkType\", new()\n    {\n        DeviceId = testDevice.Id,\n        Type = \"hybrid\",\n    });\n\n    var testPortVlanAttachment = new Equinix.Metal.PortVlanAttachment(\"testPortVlanAttachment\", new()\n    {\n        DeviceId = testDeviceNetworkType.Id,\n        PortName = \"eth1\",\n        VlanVnid = test.Vxlan,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Vlan;\nimport com.pulumi.equinix.metal.VlanArgs;\nimport com.pulumi.equinix.metal.Device;\nimport com.pulumi.equinix.metal.DeviceArgs;\nimport com.pulumi.equinix.metal.DeviceNetworkType;\nimport com.pulumi.equinix.metal.DeviceNetworkTypeArgs;\nimport com.pulumi.equinix.metal.PortVlanAttachment;\nimport com.pulumi.equinix.metal.PortVlanAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var test = new Vlan(\"test\", VlanArgs.builder()\n            .description(\"VLAN in New York\")\n            .metro(\"ny\")\n            .projectId(projectId)\n            .build());\n\n        var testDevice = new Device(\"testDevice\", DeviceArgs.builder()\n            .hostname(\"test\")\n            .plan(\"c3.small.x86\")\n            .metro(\"ny\")\n            .operatingSystem(\"ubuntu_24_04\")\n            .billingCycle(\"hourly\")\n            .projectId(projectId)\n            .build());\n\n        var testDeviceNetworkType = new DeviceNetworkType(\"testDeviceNetworkType\", DeviceNetworkTypeArgs.builder()\n            .deviceId(testDevice.id())\n            .type(\"hybrid\")\n            .build());\n\n        var testPortVlanAttachment = new PortVlanAttachment(\"testPortVlanAttachment\", PortVlanAttachmentArgs.builder()\n            .deviceId(testDeviceNetworkType.id())\n            .portName(\"eth1\")\n            .vlanVnid(test.vxlan())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: equinix:metal:Vlan\n    properties:\n      description: VLAN in New York\n      metro: ny\n      projectId: ${projectId}\n  testDevice:\n    type: equinix:metal:Device\n    name: test\n    properties:\n      hostname: test\n      plan: c3.small.x86\n      metro: ny\n      operatingSystem: ubuntu_24_04\n      billingCycle: hourly\n      projectId: ${projectId}\n  testDeviceNetworkType:\n    type: equinix:metal:DeviceNetworkType\n    name: test\n    properties:\n      deviceId: ${testDevice.id}\n      type: hybrid\n  testPortVlanAttachment:\n    type: equinix:metal:PortVlanAttachment\n    name: test\n    properties:\n      deviceId: ${testDeviceNetworkType.id}\n      portName: eth1\n      vlanVnid: ${test.vxlan}\n```\n{{% /example %}}\n\n{{% example %}}\n### example 2\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst test = new equinix.metal.Device(\"test\", {\n    hostname: \"test\",\n    plan: equinix.metal.Plan.C3SmallX86,\n    metro: \"ny\",\n    operatingSystem: \"ubuntu_24_04\",\n    billingCycle: equinix.metal.BillingCycle.Hourly,\n    projectId: projectId,\n});\nconst testDeviceNetworkType = new equinix.metal.DeviceNetworkType(\"testDeviceNetworkType\", {\n    deviceId: test.id,\n    type: \"layer2-individual\",\n});\nconst test1 = new equinix.metal.Vlan(\"test1\", {\n    description: \"VLAN in New York\",\n    metro: \"ny\",\n    projectId: projectId,\n});\nconst test2 = new equinix.metal.Vlan(\"test2\", {\n    description: \"VLAN in New Jersey\",\n    metro: \"ny\",\n    projectId: projectId,\n});\nconst test1PortVlanAttachment = new equinix.metal.PortVlanAttachment(\"test1PortVlanAttachment\", {\n    deviceId: testDeviceNetworkType.id,\n    vlanVnid: test1.vxlan,\n    portName: \"eth1\",\n});\nconst test2PortVlanAttachment = new equinix.metal.PortVlanAttachment(\"test2PortVlanAttachment\", {\n    deviceId: testDeviceNetworkType.id,\n    vlanVnid: test2.vxlan,\n    portName: \"eth1\",\n    native: true,\n}, {\n    dependsOn: [test1PortVlanAttachment],\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.metal.Device(\"test\",\n    hostname=\"test\",\n    plan=equinix.metal.Plan.C3_SMALL_X86,\n    metro=\"ny\",\n    operating_system=\"ubuntu_24_04\",\n    billing_cycle=equinix.metal.BillingCycle.HOURLY,\n    project_id=project_id)\ntest_device_network_type = equinix.metal.DeviceNetworkType(\"testDeviceNetworkType\",\n    device_id=test.id,\n    type=\"layer2-individual\")\ntest1 = equinix.metal.Vlan(\"test1\",\n    description=\"VLAN in New York\",\n    metro=\"ny\",\n    project_id=project_id)\ntest2 = equinix.metal.Vlan(\"test2\",\n    description=\"VLAN in New Jersey\",\n    metro=\"ny\",\n    project_id=project_id)\ntest1_port_vlan_attachment = equinix.metal.PortVlanAttachment(\"test1PortVlanAttachment\",\n    device_id=test_device_network_type.id,\n    vlan_vnid=test1.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.vxlan,\n    port_name=\"eth1\",\n    native=True,\n    opts = pulumi.ResourceOptions(depends_on=[test1_port_vlan_attachment]))\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewDevice(ctx, \"test\", \u0026metal.DeviceArgs{\n\t\t\tHostname:        pulumi.String(\"test\"),\n\t\t\tPlan:            pulumi.String(metal.PlanC3SmallX86),\n\t\t\tMetro:           pulumi.String(\"ny\"),\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_24_04\"),\n\t\t\tBillingCycle:    pulumi.String(metal.BillingCycleHourly),\n\t\t\tProjectId:       pulumi.Any(projectId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDeviceNetworkType, err := metal.NewDeviceNetworkType(ctx, \"testDeviceNetworkType\", \u0026metal.DeviceNetworkTypeArgs{\n\t\t\tDeviceId: test.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\ttest1, err := metal.NewVlan(ctx, \"test1\", \u0026metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"VLAN in New York\"),\n\t\t\tMetro:       pulumi.String(\"ny\"),\n\t\t\tProjectId:   pulumi.Any(projectId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest2, err := metal.NewVlan(ctx, \"test2\", \u0026metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"VLAN in New Jersey\"),\n\t\t\tMetro:       pulumi.String(\"ny\"),\n\t\t\tProjectId:   pulumi.Any(projectId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest1PortVlanAttachment, err := metal.NewPortVlanAttachment(ctx, \"test1PortVlanAttachment\", \u0026metal.PortVlanAttachmentArgs{\n\t\t\tDeviceId: testDeviceNetworkType.ID(),\n\t\t\tVlanVnid: test1.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 = metal.NewPortVlanAttachment(ctx, \"test2PortVlanAttachment\", \u0026metal.PortVlanAttachmentArgs{\n\t\t\tDeviceId: testDeviceNetworkType.ID(),\n\t\t\tVlanVnid: test2.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\ttest1PortVlanAttachment,\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Equinix.Metal.Device(\"test\", new()\n    {\n        Hostname = \"test\",\n        Plan = Equinix.Metal.Plan.C3SmallX86,\n        Metro = \"ny\",\n        OperatingSystem = \"ubuntu_24_04\",\n        BillingCycle = Equinix.Metal.BillingCycle.Hourly,\n        ProjectId = projectId,\n    });\n\n    var testDeviceNetworkType = new Equinix.Metal.DeviceNetworkType(\"testDeviceNetworkType\", new()\n    {\n        DeviceId = test.Id,\n        Type = \"layer2-individual\",\n    });\n\n    var test1 = new Equinix.Metal.Vlan(\"test1\", new()\n    {\n        Description = \"VLAN in New York\",\n        Metro = \"ny\",\n        ProjectId = projectId,\n    });\n\n    var test2 = new Equinix.Metal.Vlan(\"test2\", new()\n    {\n        Description = \"VLAN in New Jersey\",\n        Metro = \"ny\",\n        ProjectId = projectId,\n    });\n\n    var test1PortVlanAttachment = new Equinix.Metal.PortVlanAttachment(\"test1PortVlanAttachment\", new()\n    {\n        DeviceId = testDeviceNetworkType.Id,\n        VlanVnid = test1.Vxlan,\n        PortName = \"eth1\",\n    });\n\n    var test2PortVlanAttachment = new Equinix.Metal.PortVlanAttachment(\"test2PortVlanAttachment\", new()\n    {\n        DeviceId = testDeviceNetworkType.Id,\n        VlanVnid = test2.Vxlan,\n        PortName = \"eth1\",\n        Native = true,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            test1PortVlanAttachment,\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Device;\nimport com.pulumi.equinix.metal.DeviceArgs;\nimport com.pulumi.equinix.metal.DeviceNetworkType;\nimport com.pulumi.equinix.metal.DeviceNetworkTypeArgs;\nimport com.pulumi.equinix.metal.Vlan;\nimport com.pulumi.equinix.metal.VlanArgs;\nimport com.pulumi.equinix.metal.PortVlanAttachment;\nimport com.pulumi.equinix.metal.PortVlanAttachmentArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var test = new Device(\"test\", DeviceArgs.builder()\n            .hostname(\"test\")\n            .plan(\"c3.small.x86\")\n            .metro(\"ny\")\n            .operatingSystem(\"ubuntu_24_04\")\n            .billingCycle(\"hourly\")\n            .projectId(projectId)\n            .build());\n\n        var testDeviceNetworkType = new DeviceNetworkType(\"testDeviceNetworkType\", DeviceNetworkTypeArgs.builder()\n            .deviceId(test.id())\n            .type(\"layer2-individual\")\n            .build());\n\n        var test1 = new Vlan(\"test1\", VlanArgs.builder()\n            .description(\"VLAN in New York\")\n            .metro(\"ny\")\n            .projectId(projectId)\n            .build());\n\n        var test2 = new Vlan(\"test2\", VlanArgs.builder()\n            .description(\"VLAN in New Jersey\")\n            .metro(\"ny\")\n            .projectId(projectId)\n            .build());\n\n        var test1PortVlanAttachment = new PortVlanAttachment(\"test1PortVlanAttachment\", PortVlanAttachmentArgs.builder()\n            .deviceId(testDeviceNetworkType.id())\n            .vlanVnid(test1.vxlan())\n            .portName(\"eth1\")\n            .build());\n\n        var test2PortVlanAttachment = new PortVlanAttachment(\"test2PortVlanAttachment\", PortVlanAttachmentArgs.builder()\n            .deviceId(testDeviceNetworkType.id())\n            .vlanVnid(test2.vxlan())\n            .portName(\"eth1\")\n            .native_(true)\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(test1PortVlanAttachment)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: equinix:metal:Device\n    properties:\n      hostname: test\n      plan: c3.small.x86\n      metro: ny\n      operatingSystem: ubuntu_24_04\n      billingCycle: hourly\n      projectId: ${projectId}\n  testDeviceNetworkType:\n    type: equinix:metal:DeviceNetworkType\n    name: test\n    properties:\n      deviceId: ${test.id}\n      type: layer2-individual\n  test1:\n    type: equinix:metal:Vlan\n    properties:\n      description: VLAN in New York\n      metro: ny\n      projectId: ${projectId}\n  test2:\n    type: equinix:metal:Vlan\n    properties:\n      description: VLAN in New Jersey\n      metro: ny\n      projectId: ${projectId}\n  test1PortVlanAttachment:\n    type: equinix:metal:PortVlanAttachment\n    name: test1\n    properties:\n      deviceId: ${testDeviceNetworkType.id}\n      vlanVnid: ${test1.vxlan}\n      portName: eth1\n  test2PortVlanAttachment:\n    type: equinix:metal:PortVlanAttachment\n    name: test2\n    properties:\n      deviceId: ${testDeviceNetworkType.id}\n      vlanVnid: ${test2.vxlan}\n      portName: eth1\n      native: true\n    options:\n      dependsOn:\n        - ${test1PortVlanAttachment}\n```\n{{% /example %}}\n\n{{% /examples %}}","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 `equinix.metal.PortVlanAttachment`, 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.\n"}},"required":["deviceId","portId","portName","vlanId","vlanVnid"],"inputProperties":{"deviceId":{"type":"string","description":"ID of device to be assigned to the VLAN.\n","willReplaceOnChanges":true},"forceBond":{"type":"boolean","description":"Add port back to the bond when this resource is removed. Default is `false`.\n","willReplaceOnChanges":true},"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 `equinix.metal.PortVlanAttachment`, just like in the layer2-individual example above.\n"},"portName":{"type":"string","description":"Name of network port to be assigned to the VLAN.\n","willReplaceOnChanges":true},"vlanVnid":{"type":"integer","description":"VXLAN Network Identifier.\n","willReplaceOnChanges":true}},"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","willReplaceOnChanges":true},"forceBond":{"type":"boolean","description":"Add port back to the bond when this resource is removed. Default is `false`.\n","willReplaceOnChanges":true},"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 `equinix.metal.PortVlanAttachment`, 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","willReplaceOnChanges":true},"vlanId":{"type":"string","description":"UUID of VLAN API resource\n"},"vlanVnid":{"type":"integer","description":"VXLAN Network Identifier.\n","willReplaceOnChanges":true}},"type":"object"}},"equinix:metal/project:Project":{"description":"Provides an Equinix Metal project resource to allow you manage devices in your projects.\n\n\u003e **NOTE:** Keep in mind that Equinix Metal invoicing is per project, so creating many `equinix.metal.Project` resources will affect the rendered invoice. If you want to keep your Equinix Metal bill simple and easy to review, please re-use your existing projects.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n### example 1\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst tfProject1 = new equinix.metal.Project(\"tfProject1\", {name: \"Terraform Fun\"});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntf_project1 = equinix.metal.Project(\"tfProject1\", name=\"Terraform Fun\")\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewProject(ctx, \"tfProject1\", \u0026metal.ProjectArgs{\n\t\t\tName: pulumi.String(\"Terraform Fun\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var tfProject1 = new Equinix.Metal.Project(\"tfProject1\", new()\n    {\n        Name = \"Terraform Fun\",\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Project;\nimport com.pulumi.equinix.metal.ProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var tfProject1 = new Project(\"tfProject1\", ProjectArgs.builder()\n            .name(\"Terraform Fun\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  tfProject1:\n    type: equinix:metal:Project\n    name: tf_project_1\n    properties:\n      name: Terraform Fun\n```\n{{% /example %}}\n\n{{% example %}}\n### example 2\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst tfProject1 = new equinix.metal.Project(\"tfProject1\", {\n    name: \"tftest\",\n    bgpConfig: {\n        deploymentType: \"local\",\n        md5: \"C179c28c41a85b\",\n        asn: 65000,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntf_project1 = equinix.metal.Project(\"tfProject1\",\n    name=\"tftest\",\n    bgp_config={\n        \"deployment_type\": \"local\",\n        \"md5\": \"C179c28c41a85b\",\n        \"asn\": 65000,\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewProject(ctx, \"tfProject1\", \u0026metal.ProjectArgs{\n\t\t\tName: pulumi.String(\"tftest\"),\n\t\t\tBgpConfig: \u0026metal.ProjectBgpConfigArgs{\n\t\t\t\tDeploymentType: pulumi.String(\"local\"),\n\t\t\t\tMd5:            pulumi.String(\"C179c28c41a85b\"),\n\t\t\t\tAsn:            pulumi.Int(65000),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var tfProject1 = new Equinix.Metal.Project(\"tfProject1\", new()\n    {\n        Name = \"tftest\",\n        BgpConfig = new Equinix.Metal.Inputs.ProjectBgpConfigArgs\n        {\n            DeploymentType = \"local\",\n            Md5 = \"C179c28c41a85b\",\n            Asn = 65000,\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Project;\nimport com.pulumi.equinix.metal.ProjectArgs;\nimport com.pulumi.equinix.metal.inputs.ProjectBgpConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var tfProject1 = new Project(\"tfProject1\", ProjectArgs.builder()\n            .name(\"tftest\")\n            .bgpConfig(ProjectBgpConfigArgs.builder()\n                .deploymentType(\"local\")\n                .md5(\"C179c28c41a85b\")\n                .asn(65000)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new Project\n  tfProject1:\n    type: equinix:metal:Project\n    name: tf_project_1\n    properties:\n      name: tftest\n      bgpConfig:\n        deploymentType: local\n        md5: C179c28c41a85b\n        asn: 65000\n```\n{{% /example %}}\n\n{{% example %}}\n### example 3\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst existingProject = new equinix.metal.Project(\"existingProject\", {\n    name: \"The name of the project (if different, will rewrite)\",\n    bgpConfig: {\n        deploymentType: \"local\",\n        md5: \"C179c28c41a85b\",\n        asn: 65000,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexisting_project = equinix.metal.Project(\"existingProject\",\n    name=\"The name of the project (if different, will rewrite)\",\n    bgp_config={\n        \"deployment_type\": \"local\",\n        \"md5\": \"C179c28c41a85b\",\n        \"asn\": 65000,\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewProject(ctx, \"existingProject\", \u0026metal.ProjectArgs{\n\t\t\tName: pulumi.String(\"The name of the project (if different, will rewrite)\"),\n\t\t\tBgpConfig: \u0026metal.ProjectBgpConfigArgs{\n\t\t\t\tDeploymentType: pulumi.String(\"local\"),\n\t\t\t\tMd5:            pulumi.String(\"C179c28c41a85b\"),\n\t\t\t\tAsn:            pulumi.Int(65000),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var existingProject = new Equinix.Metal.Project(\"existingProject\", new()\n    {\n        Name = \"The name of the project (if different, will rewrite)\",\n        BgpConfig = new Equinix.Metal.Inputs.ProjectBgpConfigArgs\n        {\n            DeploymentType = \"local\",\n            Md5 = \"C179c28c41a85b\",\n            Asn = 65000,\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Project;\nimport com.pulumi.equinix.metal.ProjectArgs;\nimport com.pulumi.equinix.metal.inputs.ProjectBgpConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var existingProject = new Project(\"existingProject\", ProjectArgs.builder()\n            .name(\"The name of the project (if different, will rewrite)\")\n            .bgpConfig(ProjectBgpConfigArgs.builder()\n                .deploymentType(\"local\")\n                .md5(\"C179c28c41a85b\")\n                .asn(65000)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  existingProject:\n    type: equinix:metal:Project\n    name: existing_project\n    properties:\n      name: The name of the project (if different, will rewrite)\n      bgpConfig:\n        deploymentType: local\n        md5: C179c28c41a85b\n        asn: 65000\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing project ID:\n\n```sh\n$ pulumi import equinix:metal/project:Project equinix_metal_project {existing_project_id}\n```\n\n\n{{% /examples %}}","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/ProjectBgpConfig:ProjectBgpConfig","description":"Optional BGP settings. Refer to [Equinix Metal guide for BGP](https://metal.equinix.com/developers/docs/networking/local-global-bgp/).\n\n\u003e **NOTE:** Once you set the BGP config in a project, it can't be removed (due to a limitation in the Equinix Metal API). It can be updated.\n"},"created":{"type":"string","description":"The timestamp for when the project was created.\n"},"name":{"type":"string","description":"The name of the project. The maximum length is 80 characters\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 created 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":["backendTransfer","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/ProjectBgpConfig:ProjectBgpConfig","description":"Optional BGP settings. Refer to [Equinix Metal guide for BGP](https://metal.equinix.com/developers/docs/networking/local-global-bgp/).\n\n\u003e **NOTE:** Once you set the BGP config in a project, it can't be removed (due to a limitation in the Equinix Metal API). It can be updated.\n"},"name":{"type":"string","description":"The name of the project. The maximum length is 80 characters\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 created 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/ProjectBgpConfig:ProjectBgpConfig","description":"Optional BGP settings. Refer to [Equinix Metal guide for BGP](https://metal.equinix.com/developers/docs/networking/local-global-bgp/).\n\n\u003e **NOTE:** Once you set the BGP config in a project, it can't be removed (due to a limitation in the Equinix Metal API). It can be updated.\n"},"created":{"type":"string","description":"The timestamp for when the project was created.\n"},"name":{"type":"string","description":"The name of the project. The maximum length is 80 characters\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 created 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/projectApiKey:ProjectApiKey":{"description":"Use this resource to create Metal Project API Key resources in Equinix Metal. Project API keys can be used to create and read resources in a single project. Each API key contains a token which can be used for authentication in Equinix Metal HTTP API (in HTTP request header `X-Auth-Token`).\n\nRead-only keys only allow to list and view existing resources, read-write keys can also be used to create resources.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst test = new equinix.metal.ProjectApiKey(\"test\", {\n    projectId: existingProjectId,\n    description: \"Read-only key scoped to a projct\",\n    readOnly: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.metal.ProjectApiKey(\"test\",\n    project_id=existing_project_id,\n    description=\"Read-only key scoped to a projct\",\n    read_only=True)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewProjectApiKey(ctx, \"test\", \u0026metal.ProjectApiKeyArgs{\n\t\t\tProjectId:   pulumi.Any(existingProjectId),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Equinix.Metal.ProjectApiKey(\"test\", new()\n    {\n        ProjectId = existingProjectId,\n        Description = \"Read-only key scoped to a projct\",\n        ReadOnly = true,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.ProjectApiKey;\nimport com.pulumi.equinix.metal.ProjectApiKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var test = new ProjectApiKey(\"test\", ProjectApiKeyArgs.builder()\n            .projectId(existingProjectId)\n            .description(\"Read-only key scoped to a projct\")\n            .readOnly(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new read-only API key in existing project\n  test:\n    type: equinix:metal:ProjectApiKey\n    properties:\n      projectId: ${existingProjectId}\n      description: Read-only key scoped to a projct\n      readOnly: true\n```\n{{% /example %}}\n\n{{% /examples %}}","properties":{"description":{"type":"string","description":"Description string for the Project API Key resource.\n* `read-only` - (Optional) 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","secret":true}},"required":["description","projectId","readOnly","token"],"inputProperties":{"description":{"type":"string","description":"Description string for the Project API Key resource.\n* `read-only` - (Optional) Flag indicating whether the API key shoud be read-only.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"UUID of the project where the API key is scoped to.\n","willReplaceOnChanges":true},"readOnly":{"type":"boolean","description":"Flag indicating whether the API key shoud be read-only\n","willReplaceOnChanges":true}},"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` - (Optional) Flag indicating whether the API key shoud be read-only.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"UUID of the project where the API key is scoped to.\n","willReplaceOnChanges":true},"readOnly":{"type":"boolean","description":"Flag indicating whether the API key shoud be read-only\n","willReplaceOnChanges":true},"token":{"type":"string","description":"API token which can be used in Equinix Metal API clients\n","secret":true}},"type":"object"}},"equinix:metal/projectSshKey:ProjectSshKey":{"description":"Provides an Equinix Metal project SSH key resource to manage project-specific SSH keys. Project 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\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst projectId = \"\u003cUUID_of_your_project\u003e\";\nconst test = new equinix.metal.ProjectSshKey(\"test\", {\n    name: \"test\",\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: equinix.metal.Plan.C3MediumX86,\n    metro: \"ny\",\n    operatingSystem: \"ubuntu_24_04\",\n    billingCycle: equinix.metal.BillingCycle.Hourly,\n    projectSshKeyIds: [test.id],\n    projectId: projectId,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nproject_id = \"\u003cUUID_of_your_project\u003e\"\ntest = equinix.metal.ProjectSshKey(\"test\",\n    name=\"test\",\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=equinix.metal.Plan.C3_MEDIUM_X86,\n    metro=\"ny\",\n    operating_system=\"ubuntu_24_04\",\n    billing_cycle=equinix.metal.BillingCycle.HOURLY,\n    project_ssh_key_ids=[test.id],\n    project_id=project_id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewProjectSshKey(ctx, \"test\", \u0026metal.ProjectSshKeyArgs{\n\t\t\tName:      pulumi.String(\"test\"),\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 = metal.NewDevice(ctx, \"testDevice\", \u0026metal.DeviceArgs{\n\t\t\tHostname:        pulumi.String(\"test\"),\n\t\t\tPlan:            pulumi.String(metal.PlanC3MediumX86),\n\t\t\tMetro:           pulumi.String(\"ny\"),\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_24_04\"),\n\t\t\tBillingCycle:    pulumi.String(metal.BillingCycleHourly),\n\t\t\tProjectSshKeyIds: pulumi.StringArray{\n\t\t\t\ttest.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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var projectId = \"\u003cUUID_of_your_project\u003e\";\n\n    var test = new Equinix.Metal.ProjectSshKey(\"test\", new()\n    {\n        Name = \"test\",\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\n    var testDevice = new Equinix.Metal.Device(\"testDevice\", new()\n    {\n        Hostname = \"test\",\n        Plan = Equinix.Metal.Plan.C3MediumX86,\n        Metro = \"ny\",\n        OperatingSystem = \"ubuntu_24_04\",\n        BillingCycle = Equinix.Metal.BillingCycle.Hourly,\n        ProjectSshKeyIds = new[]\n        {\n            test.Id,\n        },\n        ProjectId = projectId,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.ProjectSshKey;\nimport com.pulumi.equinix.metal.ProjectSshKeyArgs;\nimport com.pulumi.equinix.metal.Device;\nimport com.pulumi.equinix.metal.DeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var projectId = \"\u003cUUID_of_your_project\u003e\";\n\n        var test = new ProjectSshKey(\"test\", ProjectSshKeyArgs.builder()\n            .name(\"test\")\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            .build());\n\n        var testDevice = new Device(\"testDevice\", DeviceArgs.builder()\n            .hostname(\"test\")\n            .plan(\"c3.medium.x86\")\n            .metro(\"ny\")\n            .operatingSystem(\"ubuntu_24_04\")\n            .billingCycle(\"hourly\")\n            .projectSshKeyIds(test.id())\n            .projectId(projectId)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: equinix:metal:ProjectSshKey\n    properties:\n      name: test\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  testDevice:\n    type: equinix:metal:Device\n    name: test\n    properties:\n      hostname: test\n      plan: c3.medium.x86\n      metro: ny\n      operatingSystem: ubuntu_24_04\n      billingCycle: hourly\n      projectSshKeyIds:\n        - ${test.id}\n      projectId: ${projectId}\nvariables:\n  projectId: \u003cUUID_of_your_project\u003e\n```\n{{% /example %}}\n\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/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 metro, Equinix Metal API automatically allocates IPv6/56 and private IPv4/25 blocks. The new device then gets IPv6 and private IPv4 addresses from those block. It also gets a public IPv4/31 address. Every new device in the project and metro will automatically get IPv6 and private IPv4 addresses from these pre-allocated blocks. The 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 metro. Addresses from public blocks can only be assigned to devices in the metro. 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 metro argument.\n\nAddresses from global blocks can be assigned in any metro. 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 metro 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\nSee the [Virtual Routing and Forwarding documentation](https://docs.equinix.com/metal/networking/vrf/) for product details and API reference material.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n### example 1\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst twoElasticAddresses = new equinix.metal.ReservedIpBlock(\"twoElasticAddresses\", {\n    projectId: projectId,\n    metro: \"sv\",\n    quantity: 2,\n});\nconst test1 = new equinix.metal.ReservedIpBlock(\"test1\", {\n    projectId: projectId,\n    type: equinix.metal.IpBlockType.PublicIPv4,\n    metro: \"sv\",\n    quantity: 1,\n});\nconst test = new equinix.metal.ReservedIpBlock(\"test\", {\n    projectId: projectId,\n    type: equinix.metal.IpBlockType.GlobalIPv4,\n    quantity: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntwo_elastic_addresses = equinix.metal.ReservedIpBlock(\"twoElasticAddresses\",\n    project_id=project_id,\n    metro=\"sv\",\n    quantity=2)\ntest1 = equinix.metal.ReservedIpBlock(\"test1\",\n    project_id=project_id,\n    type=equinix.metal.IpBlockType.PUBLIC_I_PV4,\n    metro=\"sv\",\n    quantity=1)\ntest = equinix.metal.ReservedIpBlock(\"test\",\n    project_id=project_id,\n    type=equinix.metal.IpBlockType.GLOBAL_I_PV4,\n    quantity=1)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewReservedIpBlock(ctx, \"twoElasticAddresses\", \u0026metal.ReservedIpBlockArgs{\n\t\t\tProjectId: pulumi.Any(projectId),\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 = metal.NewReservedIpBlock(ctx, \"test1\", \u0026metal.ReservedIpBlockArgs{\n\t\t\tProjectId: pulumi.Any(projectId),\n\t\t\tType:      pulumi.String(metal.IpBlockTypePublicIPv4),\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 = metal.NewReservedIpBlock(ctx, \"test\", \u0026metal.ReservedIpBlockArgs{\n\t\t\tProjectId: pulumi.Any(projectId),\n\t\t\tType:      pulumi.String(metal.IpBlockTypeGlobalIPv4),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var twoElasticAddresses = new Equinix.Metal.ReservedIpBlock(\"twoElasticAddresses\", new()\n    {\n        ProjectId = projectId,\n        Metro = \"sv\",\n        Quantity = 2,\n    });\n\n    var test1 = new Equinix.Metal.ReservedIpBlock(\"test1\", new()\n    {\n        ProjectId = projectId,\n        Type = Equinix.Metal.IpBlockType.PublicIPv4,\n        Metro = \"sv\",\n        Quantity = 1,\n    });\n\n    var test = new Equinix.Metal.ReservedIpBlock(\"test\", new()\n    {\n        ProjectId = projectId,\n        Type = Equinix.Metal.IpBlockType.GlobalIPv4,\n        Quantity = 1,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.ReservedIpBlock;\nimport com.pulumi.equinix.metal.ReservedIpBlockArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var twoElasticAddresses = new ReservedIpBlock(\"twoElasticAddresses\", ReservedIpBlockArgs.builder()\n            .projectId(projectId)\n            .metro(\"sv\")\n            .quantity(2)\n            .build());\n\n        var test1 = new ReservedIpBlock(\"test1\", ReservedIpBlockArgs.builder()\n            .projectId(projectId)\n            .type(\"public_ipv4\")\n            .metro(\"sv\")\n            .quantity(1)\n            .build());\n\n        var test = new ReservedIpBlock(\"test\", ReservedIpBlockArgs.builder()\n            .projectId(projectId)\n            .type(\"global_ipv4\")\n            .quantity(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Allocate /31 block of max 2 public IPv4 addresses in Silicon Valley (sv) metro for myproject\n  twoElasticAddresses:\n    type: equinix:metal:ReservedIpBlock\n    name: two_elastic_addresses\n    properties:\n      projectId: ${projectId}\n      metro: sv\n      quantity: 2\n  # Allocate 1 floating IP in Silicon Valley (sv) metro\n  test1:\n    type: equinix:metal:ReservedIpBlock\n    properties:\n      projectId: ${projectId}\n      type: public_ipv4\n      metro: sv\n      quantity: 1\n  # Allocate 1 global floating IP, which can be assigned to device in any metro\n  test:\n    type: equinix:metal:ReservedIpBlock\n    properties:\n      projectId: ${projectId}\n      type: global_ipv4\n      quantity: 1\n```\n{{% /example %}}\n\n{{% example %}}\n### example 2\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst example = new equinix.metal.ReservedIpBlock(\"example\", {\n    projectId: projectId,\n    metro: \"sv\",\n    quantity: 2,\n});\nconst nodes = new equinix.metal.Device(\"nodes\", {\n    projectId: projectId,\n    metro: \"sv\",\n    plan: equinix.metal.Plan.C3SmallX86,\n    operatingSystem: \"ubuntu_24_04\",\n    hostname: \"test\",\n    billingCycle: equinix.metal.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 as equinix\n\nexample = equinix.metal.ReservedIpBlock(\"example\",\n    project_id=project_id,\n    metro=\"sv\",\n    quantity=2)\nnodes = equinix.metal.Device(\"nodes\",\n    project_id=project_id,\n    metro=\"sv\",\n    plan=equinix.metal.Plan.C3_SMALL_X86,\n    operating_system=\"ubuntu_24_04\",\n    hostname=\"test\",\n    billing_cycle=equinix.metal.BillingCycle.HOURLY,\n    ip_addresses=[\n        {\n            \"type\": \"public_ipv4\",\n            \"cidr\": 31,\n            \"reservation_ids\": [example.id],\n        },\n        {\n            \"type\": \"private_ipv4\",\n        },\n    ])\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewReservedIpBlock(ctx, \"example\", \u0026metal.ReservedIpBlockArgs{\n\t\t\tProjectId: pulumi.Any(projectId),\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 = metal.NewDevice(ctx, \"nodes\", \u0026metal.DeviceArgs{\n\t\t\tProjectId:       pulumi.Any(projectId),\n\t\t\tMetro:           pulumi.String(\"sv\"),\n\t\t\tPlan:            pulumi.String(metal.PlanC3SmallX86),\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_24_04\"),\n\t\t\tHostname:        pulumi.String(\"test\"),\n\t\t\tBillingCycle:    pulumi.String(metal.BillingCycleHourly),\n\t\t\tIpAddresses: metal.DeviceIpAddressArray{\n\t\t\t\t\u0026metal.DeviceIpAddressArgs{\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\u0026metal.DeviceIpAddressArgs{\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Equinix.Metal.ReservedIpBlock(\"example\", new()\n    {\n        ProjectId = projectId,\n        Metro = \"sv\",\n        Quantity = 2,\n    });\n\n    var nodes = new Equinix.Metal.Device(\"nodes\", new()\n    {\n        ProjectId = projectId,\n        Metro = \"sv\",\n        Plan = Equinix.Metal.Plan.C3SmallX86,\n        OperatingSystem = \"ubuntu_24_04\",\n        Hostname = \"test\",\n        BillingCycle = Equinix.Metal.BillingCycle.Hourly,\n        IpAddresses = new[]\n        {\n            new Equinix.Metal.Inputs.DeviceIpAddressArgs\n            {\n                Type = \"public_ipv4\",\n                Cidr = 31,\n                ReservationIds = new[]\n                {\n                    example.Id,\n                },\n            },\n            new Equinix.Metal.Inputs.DeviceIpAddressArgs\n            {\n                Type = \"private_ipv4\",\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.ReservedIpBlock;\nimport com.pulumi.equinix.metal.ReservedIpBlockArgs;\nimport com.pulumi.equinix.metal.Device;\nimport com.pulumi.equinix.metal.DeviceArgs;\nimport com.pulumi.equinix.metal.inputs.DeviceIpAddressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new ReservedIpBlock(\"example\", ReservedIpBlockArgs.builder()\n            .projectId(projectId)\n            .metro(\"sv\")\n            .quantity(2)\n            .build());\n\n        var nodes = new Device(\"nodes\", DeviceArgs.builder()\n            .projectId(projectId)\n            .metro(\"sv\")\n            .plan(\"c3.small.x86\")\n            .operatingSystem(\"ubuntu_24_04\")\n            .hostname(\"test\")\n            .billingCycle(\"hourly\")\n            .ipAddresses(            \n                DeviceIpAddressArgs.builder()\n                    .type(\"public_ipv4\")\n                    .cidr(31)\n                    .reservationIds(example.id())\n                    .build(),\n                DeviceIpAddressArgs.builder()\n                    .type(\"private_ipv4\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Allocate /31 block of max 2 public IPv4 addresses in Silicon Valley (sv) metro\n  example:\n    type: equinix:metal:ReservedIpBlock\n    properties:\n      projectId: ${projectId}\n      metro: sv\n      quantity: 2\n  # Run a device with both public IPv4 from the block assigned\n  nodes:\n    type: equinix:metal:Device\n    properties:\n      projectId: ${projectId}\n      metro: sv\n      plan: c3.small.x86\n      operatingSystem: ubuntu_24_04\n      hostname: test\n      billingCycle: hourly\n      ipAddresses:\n        - type: public_ipv4\n          cidr: 31\n          reservationIds:\n            - ${example.id}\n        - type: private_ipv4\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing IP reservation ID:\n\n```sh\n$ pulumi import equinix:metal/reservedIpBlock:ReservedIpBlock equinix_metal_reserved_ip_block {existing_ip_reservation_id}\n```\n\n\n{{% /examples %}}","properties":{"address":{"type":"string"},"addressFamily":{"type":"integer","description":"Address family as integer. One of `4` or `6`.\n"},"cidr":{"type":"integer","description":"Only valid as an argument and required when `type` is `vrf`. The size of the network to reserve from an existing VRF ip_range. `cidr` can only be specified with `vrf_id`. Range is 22-31. Virtual Circuits require 30-31. Other VRF resources must use a CIDR in the 22-29 range.\n"},"cidrNotation":{"type":"string","description":"Address and mask in CIDR notation, e.g. `147.229.15.30/31`.\n"},"customData":{"type":"string"},"description":{"type":"string","description":"Arbitrary description.\n"},"facility":{"type":"string","description":"Facility where to allocate the public IP address block, makes sense only if type is `public_ipv4` and must be empty if type is `global_ipv4`. Conflicts with `metro`. Use metro instead; read the facility to metro migration guide\n"},"gateway":{"type":"string"},"global":{"type":"boolean","description":"Boolean flag whether addresses from a block are global (i.e. can be assigned in any metro).\n"},"manageable":{"type":"boolean"},"management":{"type":"boolean"},"metro":{"type":"string","description":"Metro where to allocate the public IP address block, makes sense only if type is `public_ipv4` and must be empty if type is `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":"Only valid as an argument and required when `type` is `vrf`. An unreserved network address from an existing `ip_range` in the specified VRF.\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. Required when `type` is not `vrf`.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"String list of tags.\n"},"type":{"type":"string","description":"One of `global_ipv4`, `public_ipv4`, or `vrf`. Defaults to `public_ipv4` for backward compatibility.\n"},"vrfId":{"type":"string","description":"Only valid and required when `type` is `vrf`. VRF ID for type=vrf reservations.\n"},"waitForState":{"type":"string","description":"Wait for the IP reservation block to reach a desired state on resource creation. One of: `pending`, `created`. The `created` state is default and recommended if the addresses are needed within the configuration. An error will be returned if a timeout or the `denied` state is encountered.\n"}},"required":["address","addressFamily","cidr","cidrNotation","gateway","global","manageable","management","netmask","network","projectId","public","quantity"],"inputProperties":{"cidr":{"type":"integer","description":"Only valid as an argument and required when `type` is `vrf`. The size of the network to reserve from an existing VRF ip_range. `cidr` can only be specified with `vrf_id`. Range is 22-31. Virtual Circuits require 30-31. Other VRF resources must use a CIDR in the 22-29 range.\n","willReplaceOnChanges":true},"customData":{"type":"string"},"description":{"type":"string","description":"Arbitrary description.\n"},"facility":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:metal/facility:Facility"}],"description":"Facility where to allocate the public IP address block, makes sense only if type is `public_ipv4` and must be empty if type is `global_ipv4`. Conflicts with `metro`. Use metro instead; read the facility to metro migration guide\n","willReplaceOnChanges":true},"metro":{"type":"string","description":"Metro where to allocate the public IP address block, makes sense only if type is `public_ipv4` and must be empty if type is `global_ipv4`. Conflicts with `facility`.\n","willReplaceOnChanges":true},"network":{"type":"string","description":"Only valid as an argument and required when `type` is `vrf`. An unreserved network address from an existing `ip_range` in the specified VRF.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The metal project ID where to allocate the address block.\n","willReplaceOnChanges":true},"quantity":{"type":"integer","description":"The number of allocated `/32` addresses, a power of 2. Required when `type` is not `vrf`.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"},"description":"String list of tags.\n"},"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:metal/ipBlockType:IpBlockType"}],"description":"One of `global_ipv4`, `public_ipv4`, or `vrf`. Defaults to `public_ipv4` for backward compatibility.\n","willReplaceOnChanges":true},"vrfId":{"type":"string","description":"Only valid and required when `type` is `vrf`. VRF ID for type=vrf reservations.\n","willReplaceOnChanges":true},"waitForState":{"type":"string","description":"Wait for the IP reservation block to reach a desired state on resource creation. One of: `pending`, `created`. The `created` state is default and recommended if the addresses are needed within the configuration. An error will be returned if a timeout or the `denied` state is encountered.\n"}},"requiredInputs":["projectId"],"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. One of `4` or `6`.\n"},"cidr":{"type":"integer","description":"Only valid as an argument and required when `type` is `vrf`. The size of the network to reserve from an existing VRF ip_range. `cidr` can only be specified with `vrf_id`. Range is 22-31. Virtual Circuits require 30-31. Other VRF resources must use a CIDR in the 22-29 range.\n","willReplaceOnChanges":true},"cidrNotation":{"type":"string","description":"Address and mask in CIDR notation, e.g. `147.229.15.30/31`.\n"},"customData":{"type":"string"},"description":{"type":"string","description":"Arbitrary description.\n"},"facility":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:metal/facility:Facility"}],"description":"Facility where to allocate the public IP address block, makes sense only if type is `public_ipv4` and must be empty if type is `global_ipv4`. Conflicts with `metro`. Use metro instead; read the facility to metro migration guide\n","willReplaceOnChanges":true},"gateway":{"type":"string"},"global":{"type":"boolean","description":"Boolean flag whether addresses from a block are global (i.e. can be assigned in any metro).\n"},"manageable":{"type":"boolean"},"management":{"type":"boolean"},"metro":{"type":"string","description":"Metro where to allocate the public IP address block, makes sense only if type is `public_ipv4` and must be empty if type is `global_ipv4`. Conflicts with `facility`.\n","willReplaceOnChanges":true},"netmask":{"type":"string","description":"Mask in decimal notation, e.g. `255.255.255.0`.\n"},"network":{"type":"string","description":"Only valid as an argument and required when `type` is `vrf`. An unreserved network address from an existing `ip_range` in the specified VRF.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The metal project ID where to allocate the address block.\n","willReplaceOnChanges":true},"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. Required when `type` is not `vrf`.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"},"description":"String list of tags.\n"},"type":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:metal/ipBlockType:IpBlockType"}],"description":"One of `global_ipv4`, `public_ipv4`, or `vrf`. Defaults to `public_ipv4` for backward compatibility.\n","willReplaceOnChanges":true},"vrfId":{"type":"string","description":"Only valid and required when `type` is `vrf`. VRF ID for type=vrf reservations.\n","willReplaceOnChanges":true},"waitForState":{"type":"string","description":"Wait for the IP reservation block to reach a desired state on resource creation. One of: `pending`, `created`. The `created` state is default and recommended if the addresses are needed within the configuration. An error will be returned if a timeout or the `denied` state is encountered.\n"}},"type":"object"}},"equinix:metal/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\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as std from \"@pulumi/std\";\n\nconst key1 = new equinix.metal.SshKey(\"key1\", {\n    name: \"terraform-1\",\n    publicKey: std.fileOutput({\n        input: \"/home/terraform/.ssh/id_rsa.pub\",\n    }).apply(invoke =\u003e invoke.result),\n});\nconst test = new equinix.metal.Device(\"test\", {\n    hostname: \"test-device\",\n    plan: equinix.metal.Plan.C3SmallX86,\n    metro: \"sv\",\n    operatingSystem: \"ubuntu_24_04\",\n    billingCycle: equinix.metal.BillingCycle.Hourly,\n    projectId: projectId,\n}, {\n    dependsOn: [key1],\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\nimport pulumi_std as std\n\nkey1 = equinix.metal.SshKey(\"key1\",\n    name=\"terraform-1\",\n    public_key=std.file_output(input=\"/home/terraform/.ssh/id_rsa.pub\").apply(lambda invoke: invoke.result))\ntest = equinix.metal.Device(\"test\",\n    hostname=\"test-device\",\n    plan=equinix.metal.Plan.C3_SMALL_X86,\n    metro=\"sv\",\n    operating_system=\"ubuntu_24_04\",\n    billing_cycle=equinix.metal.BillingCycle.HOURLY,\n    project_id=project_id,\n    opts = pulumi.ResourceOptions(depends_on=[key1]))\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkey1, err := metal.NewSshKey(ctx, \"key1\", \u0026metal.SshKeyArgs{\n\t\t\tName: pulumi.String(\"terraform-1\"),\n\t\t\tPublicKey: pulumi.String(std.FileOutput(ctx, std.FileOutputArgs{\n\t\t\t\tInput: pulumi.String(\"/home/terraform/.ssh/id_rsa.pub\"),\n\t\t\t}, nil).ApplyT(func(invoke std.FileResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = metal.NewDevice(ctx, \"test\", \u0026metal.DeviceArgs{\n\t\t\tHostname:        pulumi.String(\"test-device\"),\n\t\t\tPlan:            pulumi.String(metal.PlanC3SmallX86),\n\t\t\tMetro:           pulumi.String(\"sv\"),\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_24_04\"),\n\t\t\tBillingCycle:    pulumi.String(metal.BillingCycleHourly),\n\t\t\tProjectId:       pulumi.Any(projectId),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkey1,\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var key1 = new Equinix.Metal.SshKey(\"key1\", new()\n    {\n        Name = \"terraform-1\",\n        PublicKey = Std.File.Invoke(new()\n        {\n            Input = \"/home/terraform/.ssh/id_rsa.pub\",\n        }).Apply(invoke =\u003e invoke.Result),\n    });\n\n    var test = new Equinix.Metal.Device(\"test\", new()\n    {\n        Hostname = \"test-device\",\n        Plan = Equinix.Metal.Plan.C3SmallX86,\n        Metro = \"sv\",\n        OperatingSystem = \"ubuntu_24_04\",\n        BillingCycle = Equinix.Metal.BillingCycle.Hourly,\n        ProjectId = projectId,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            key1,\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.SshKey;\nimport com.pulumi.equinix.metal.SshKeyArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport com.pulumi.equinix.metal.Device;\nimport com.pulumi.equinix.metal.DeviceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var key1 = new SshKey(\"key1\", SshKeyArgs.builder()\n            .name(\"terraform-1\")\n            .publicKey(StdFunctions.file(FileArgs.builder()\n                .input(\"/home/terraform/.ssh/id_rsa.pub\")\n                .build()).applyValue(_invoke -\u003e _invoke.result()))\n            .build());\n\n        var test = new Device(\"test\", DeviceArgs.builder()\n            .hostname(\"test-device\")\n            .plan(\"c3.small.x86\")\n            .metro(\"sv\")\n            .operatingSystem(\"ubuntu_24_04\")\n            .billingCycle(\"hourly\")\n            .projectId(projectId)\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(key1)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new SSH key\n  key1:\n    type: equinix:metal:SshKey\n    properties:\n      name: terraform-1\n      publicKey:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: /home/terraform/.ssh/id_rsa.pub\n          return: result\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  test:\n    type: equinix:metal:Device\n    properties:\n      hostname: test-device\n      plan: c3.small.x86\n      metro: sv\n      operatingSystem: ubuntu_24_04\n      billingCycle: hourly\n      projectId: ${projectId}\n    options:\n      dependsOn:\n        - ${key1}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing SSH Key ID:\n\n```sh\n$ pulumi import equinix:metal/sshKey:SshKey equinix_metal_ssh_key {existing_sshkey_id}\n```\n\n\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 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 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","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 can 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 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/userApiKey:UserApiKey":{"description":"Use this resource to create Metal User API Key resources in Equinix Metal. Each API key contains a token which can be used for authentication in Equinix Metal HTTP API (in HTTP request header `X-Auth-Token`).\n\nRead-only keys only allow to list and view existing resources, read-write keys can also be used to create resources.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst test = new equinix.metal.UserApiKey(\"test\", {\n    description: \"Read-only user key\",\n    readOnly: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.metal.UserApiKey(\"test\",\n    description=\"Read-only user key\",\n    read_only=True)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewUserApiKey(ctx, \"test\", \u0026metal.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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Equinix.Metal.UserApiKey(\"test\", new()\n    {\n        Description = \"Read-only user key\",\n        ReadOnly = true,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.UserApiKey;\nimport com.pulumi.equinix.metal.UserApiKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var test = new UserApiKey(\"test\", UserApiKeyArgs.builder()\n            .description(\"Read-only user key\")\n            .readOnly(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new read-only user API key\n  test:\n    type: equinix:metal:UserApiKey\n    properties:\n      description: Read-only user key\n      readOnly: true\n```\n{{% /example %}}\n\n{{% /examples %}}","properties":{"description":{"type":"string","description":"Description string for the User API Key resource.\n* `read-only` - (Required) 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","secret":true},"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` - (Required) Flag indicating whether the API key shoud be read-only.\n","willReplaceOnChanges":true},"readOnly":{"type":"boolean","description":"Flag indicating whether the API key shoud be read-only\n","willReplaceOnChanges":true}},"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` - (Required) Flag indicating whether the API key shoud be read-only.\n","willReplaceOnChanges":true},"readOnly":{"type":"boolean","description":"Flag indicating whether the API key shoud be read-only\n","willReplaceOnChanges":true},"token":{"type":"string","description":"API token which can be used in Equinix Metal API clients.\n","secret":true},"userId":{"type":"string","description":"UUID of the owner of the API key.\n"}},"type":"object"}},"equinix:metal/virtualCircuit:VirtualCircuit":{"description":"Use this resource to associate VLAN with a Dedicated Port from [Equinix Fabric - software-defined interconnections](https://docs.equinix.com/metal/interconnections/introduction/#associating-a-vlan-with-a-dedicated-port).\n\nSee the [Virtual Routing and Forwarding documentation](https://docs.equinix.com/metal/networking/vrf/) for product details and API reference material.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst projectId = \"52000fb2-ee46-4673-93a8-de2c2bdba33c\";\nconst connId = \"73f12f29-3e19-43a0-8e90-ae81580db1e0\";\nconst test = equinix.metal.getInterconnectionOutput({\n    connectionId: connId,\n});\nconst testVlan = new equinix.metal.Vlan(\"testVlan\", {\n    projectId: projectId,\n    metro: test.apply(test =\u003e test.metro),\n});\nconst testVirtualCircuit = new equinix.metal.VirtualCircuit(\"testVirtualCircuit\", {\n    connectionId: connId,\n    projectId: projectId,\n    portId: test.apply(test =\u003e test.ports?.[0]?.id),\n    vlanId: testVlan.id,\n    nniVlan: 1056,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nproject_id = \"52000fb2-ee46-4673-93a8-de2c2bdba33c\"\nconn_id = \"73f12f29-3e19-43a0-8e90-ae81580db1e0\"\ntest = equinix.metal.get_interconnection_output(connection_id=conn_id)\ntest_vlan = equinix.metal.Vlan(\"testVlan\",\n    project_id=project_id,\n    metro=test.metro)\ntest_virtual_circuit = equinix.metal.VirtualCircuit(\"testVirtualCircuit\",\n    connection_id=conn_id,\n    project_id=project_id,\n    port_id=test.ports[0].id,\n    vlan_id=test_vlan.id,\n    nni_vlan=1056)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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\ttest := metal.LookupInterconnectionOutput(ctx, metal.GetInterconnectionOutputArgs{\n\t\t\tConnectionId: pulumi.String(connId),\n\t\t}, nil)\n\t\ttestVlan, err := metal.NewVlan(ctx, \"testVlan\", \u0026metal.VlanArgs{\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tMetro: pulumi.String(test.ApplyT(func(test metal.GetInterconnectionResult) (*string, error) {\n\t\t\t\treturn \u0026test.Metro, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = metal.NewVirtualCircuit(ctx, \"testVirtualCircuit\", \u0026metal.VirtualCircuitArgs{\n\t\t\tConnectionId: pulumi.String(connId),\n\t\t\tProjectId:    pulumi.String(projectId),\n\t\t\tPortId: pulumi.String(test.ApplyT(func(test metal.GetInterconnectionResult) (*string, error) {\n\t\t\t\treturn \u0026test.Ports[0].Id, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var projectId = \"52000fb2-ee46-4673-93a8-de2c2bdba33c\";\n\n    var connId = \"73f12f29-3e19-43a0-8e90-ae81580db1e0\";\n\n    var test = Equinix.Metal.GetInterconnection.Invoke(new()\n    {\n        ConnectionId = connId,\n    });\n\n    var testVlan = new Equinix.Metal.Vlan(\"testVlan\", new()\n    {\n        ProjectId = projectId,\n        Metro = test.Apply(getInterconnectionResult =\u003e getInterconnectionResult.Metro),\n    });\n\n    var testVirtualCircuit = new Equinix.Metal.VirtualCircuit(\"testVirtualCircuit\", new()\n    {\n        ConnectionId = connId,\n        ProjectId = projectId,\n        PortId = test.Apply(getInterconnectionResult =\u003e getInterconnectionResult.Ports[0]?.Id),\n        VlanId = testVlan.Id,\n        NniVlan = 1056,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetInterconnectionArgs;\nimport com.pulumi.equinix.metal.Vlan;\nimport com.pulumi.equinix.metal.VlanArgs;\nimport com.pulumi.equinix.metal.VirtualCircuit;\nimport com.pulumi.equinix.metal.VirtualCircuitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var projectId = \"52000fb2-ee46-4673-93a8-de2c2bdba33c\";\n\n        final var connId = \"73f12f29-3e19-43a0-8e90-ae81580db1e0\";\n\n        final var test = MetalFunctions.getInterconnection(GetInterconnectionArgs.builder()\n            .connectionId(connId)\n            .build());\n\n        var testVlan = new Vlan(\"testVlan\", VlanArgs.builder()\n            .projectId(projectId)\n            .metro(test.applyValue(_test -\u003e _test.metro()))\n            .build());\n\n        var testVirtualCircuit = new VirtualCircuit(\"testVirtualCircuit\", VirtualCircuitArgs.builder()\n            .connectionId(connId)\n            .projectId(projectId)\n            .portId(test.applyValue(_test -\u003e _test.ports()[0].id()))\n            .vlanId(testVlan.id())\n            .nniVlan(1056)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testVlan:\n    type: equinix:metal:Vlan\n    name: test\n    properties:\n      projectId: ${projectId}\n      metro: ${test.metro}\n  testVirtualCircuit:\n    type: equinix:metal:VirtualCircuit\n    name: test\n    properties:\n      connectionId: ${connId}\n      projectId: ${projectId}\n      portId: ${test.ports[0].id}\n      vlanId: ${testVlan.id}\n      nniVlan: 1056\nvariables:\n  projectId: 52000fb2-ee46-4673-93a8-de2c2bdba33c\n  connId: 73f12f29-3e19-43a0-8e90-ae81580db1e0\n  test:\n    fn::invoke:\n      function: equinix:metal:getInterconnection\n      arguments:\n        connectionId: ${connId}\n```\n{{% /example %}}\n\n## Import\n\n```sh\n$ pulumi import equinix:metal/virtualCircuit:VirtualCircuit equinix_metal_virtual_circuit {existing_id}\n```\n\n\n{{% /examples %}}","properties":{"connectionId":{"type":"string","description":"UUID of Connection where the VC is scoped to.  Only used for dedicated connections\n"},"customerIp":{"type":"string","description":"The Customer IP address which the CSR switch will peer with. Will default to the other usable IP in the subnet.\n"},"customerIpv6":{"type":"string","description":"The Customer IPv6 address which the CSR switch will peer with. Will default to the other usable IP in the IPv6 subnet.\n"},"description":{"type":"string","description":"Description of the Virtual Circuit resource\n"},"md5":{"type":"string","description":"The password that can be set for the VRF BGP peer\n","secret":true},"metalIp":{"type":"string","description":"The Metal IP address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the subnet.\n"},"metalIpv6":{"type":"string","description":"The Metal IPv6 address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the IPv6 subnet.\n"},"name":{"type":"string","description":"Name of the Virtual Circuit resource\n"},"nniVlan":{"type":"integer","description":"Equinix Metal network-to-network VLAN ID (optional when the connection has mode=tunnel)\n"},"nniVnid":{"type":"integer","description":"Nni VLAN ID parameter, see https://docs.equinix.com/metal/interconnections/introduction/\n"},"peerAsn":{"type":"integer","description":"The BGP ASN of the peer. The same ASN may be the used across several VCs, but it cannot be the same as the local_asn of the VRF.\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":"Description of the Virtual Circuit speed. This is for information purposes and is computed when the connection type is shared.\n"},"status":{"type":"string","description":"Status of the virtual circuit resource\n"},"subnet":{"type":"string","description":"A subnet from one of the IP blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /30 or /31.\n\t\t\t * For a /31 block, it will only have two IP addresses, which will be used for the metal*ip and customer*ip.\n\t\t\t * For a /30 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.\n"},"subnetIpv6":{"type":"string","description":"A subnet from one of the IPv6 blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /126 or /127.\n\t\t\t * For a /127 block, it will only have two IP addresses, which will be used for the metal*ip and customer*ip.\n\t\t\t * For a /126 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags attached to the virtual circuit\n"},"virtualCircuitId":{"type":"string","description":"UUID of an existing VC to configure. Used in the case of shared interconnections where the VC has already been created.\n"},"vlanId":{"type":"string","description":"UUID of the VLAN to associate\n"},"vnid":{"type":"integer","description":"VNID VLAN parameter, see https://docs.equinix.com/metal/interconnections/introduction/\n"},"vrfId":{"type":"string","description":"UUID of the VRF to associate\n"}},"required":["connectionId","customerIp","customerIpv6","metalIp","metalIpv6","name","nniVlan","nniVnid","portId","projectId","speed","status","vnid"],"inputProperties":{"connectionId":{"type":"string","description":"UUID of Connection where the VC is scoped to.  Only used for dedicated connections\n","willReplaceOnChanges":true},"customerIp":{"type":"string","description":"The Customer IP address which the CSR switch will peer with. Will default to the other usable IP in the subnet.\n"},"customerIpv6":{"type":"string","description":"The Customer IPv6 address which the CSR switch will peer with. Will default to the other usable IP in the IPv6 subnet.\n"},"description":{"type":"string","description":"Description of the Virtual Circuit resource\n"},"md5":{"type":"string","description":"The password that can be set for the VRF BGP peer\n","secret":true},"metalIp":{"type":"string","description":"The Metal IP address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the subnet.\n"},"metalIpv6":{"type":"string","description":"The Metal IPv6 address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the IPv6 subnet.\n"},"name":{"type":"string","description":"Name of the Virtual Circuit resource\n"},"nniVlan":{"type":"integer","description":"Equinix Metal network-to-network VLAN ID (optional when the connection has mode=tunnel)\n","willReplaceOnChanges":true},"peerAsn":{"type":"integer","description":"The BGP ASN of the peer. The same ASN may be the used across several VCs, but it cannot be the same as the local_asn of the VRF.\n","willReplaceOnChanges":true},"portId":{"type":"string","description":"UUID of the Connection Port where the VC is scoped to\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"UUID of the Project where the VC is scoped to\n","willReplaceOnChanges":true},"speed":{"type":"string","description":"Description of the Virtual Circuit speed. This is for information purposes and is computed when the connection type is shared.\n"},"subnet":{"type":"string","description":"A subnet from one of the IP blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /30 or /31.\n\t\t\t * For a /31 block, it will only have two IP addresses, which will be used for the metal*ip and customer*ip.\n\t\t\t * For a /30 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.\n"},"subnetIpv6":{"type":"string","description":"A subnet from one of the IPv6 blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /126 or /127.\n\t\t\t * For a /127 block, it will only have two IP addresses, which will be used for the metal*ip and customer*ip.\n\t\t\t * For a /126 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags attached to the virtual circuit\n"},"virtualCircuitId":{"type":"string","description":"UUID of an existing VC to configure. Used in the case of shared interconnections where the VC has already been created.\n","willReplaceOnChanges":true},"vlanId":{"type":"string","description":"UUID of the VLAN to associate\n"},"vrfId":{"type":"string","description":"UUID of the VRF to associate\n","willReplaceOnChanges":true}},"requiredInputs":["portId","projectId"],"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.  Only used for dedicated connections\n","willReplaceOnChanges":true},"customerIp":{"type":"string","description":"The Customer IP address which the CSR switch will peer with. Will default to the other usable IP in the subnet.\n"},"customerIpv6":{"type":"string","description":"The Customer IPv6 address which the CSR switch will peer with. Will default to the other usable IP in the IPv6 subnet.\n"},"description":{"type":"string","description":"Description of the Virtual Circuit resource\n"},"md5":{"type":"string","description":"The password that can be set for the VRF BGP peer\n","secret":true},"metalIp":{"type":"string","description":"The Metal IP address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the subnet.\n"},"metalIpv6":{"type":"string","description":"The Metal IPv6 address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the IPv6 subnet.\n"},"name":{"type":"string","description":"Name of the Virtual Circuit resource\n"},"nniVlan":{"type":"integer","description":"Equinix Metal network-to-network VLAN ID (optional when the connection has mode=tunnel)\n","willReplaceOnChanges":true},"nniVnid":{"type":"integer","description":"Nni VLAN ID parameter, see https://docs.equinix.com/metal/interconnections/introduction/\n"},"peerAsn":{"type":"integer","description":"The BGP ASN of the peer. The same ASN may be the used across several VCs, but it cannot be the same as the local_asn of the VRF.\n","willReplaceOnChanges":true},"portId":{"type":"string","description":"UUID of the Connection Port where the VC is scoped to\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"UUID of the Project where the VC is scoped to\n","willReplaceOnChanges":true},"speed":{"type":"string","description":"Description of the Virtual Circuit speed. This is for information purposes and is computed when the connection type is shared.\n"},"status":{"type":"string","description":"Status of the virtual circuit resource\n"},"subnet":{"type":"string","description":"A subnet from one of the IP blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /30 or /31.\n\t\t\t * For a /31 block, it will only have two IP addresses, which will be used for the metal*ip and customer*ip.\n\t\t\t * For a /30 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.\n"},"subnetIpv6":{"type":"string","description":"A subnet from one of the IPv6 blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /126 or /127.\n\t\t\t * For a /127 block, it will only have two IP addresses, which will be used for the metal*ip and customer*ip.\n\t\t\t * For a /126 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags attached to the virtual circuit\n"},"virtualCircuitId":{"type":"string","description":"UUID of an existing VC to configure. Used in the case of shared interconnections where the VC has already been created.\n","willReplaceOnChanges":true},"vlanId":{"type":"string","description":"UUID of the VLAN to associate\n"},"vnid":{"type":"integer","description":"VNID VLAN parameter, see https://docs.equinix.com/metal/interconnections/introduction/\n"},"vrfId":{"type":"string","description":"UUID of the VRF to associate\n","willReplaceOnChanges":true}},"type":"object"}},"equinix:metal/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* https://metal.equinix.com/developers/docs/networking/layer2/\n* https://metal.equinix.com/developers/docs/networking/layer2-configs/\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst vlan1 = new equinix.metal.Vlan(\"vlan1\", {\n    description: \"VLAN in New Jersey\",\n    metro: \"sv\",\n    projectId: projectId,\n    vxlan: 1040,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nvlan1 = equinix.metal.Vlan(\"vlan1\",\n    description=\"VLAN in New Jersey\",\n    metro=\"sv\",\n    project_id=project_id,\n    vxlan=1040)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewVlan(ctx, \"vlan1\", \u0026metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"VLAN in New Jersey\"),\n\t\t\tMetro:       pulumi.String(\"sv\"),\n\t\t\tProjectId:   pulumi.Any(projectId),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vlan1 = new Equinix.Metal.Vlan(\"vlan1\", new()\n    {\n        Description = \"VLAN in New Jersey\",\n        Metro = \"sv\",\n        ProjectId = projectId,\n        Vxlan = 1040,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Vlan;\nimport com.pulumi.equinix.metal.VlanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var vlan1 = new Vlan(\"vlan1\", VlanArgs.builder()\n            .description(\"VLAN in New Jersey\")\n            .metro(\"sv\")\n            .projectId(projectId)\n            .vxlan(1040)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new VLAN in metro \"esv\"\n  vlan1:\n    type: equinix:metal:Vlan\n    properties:\n      description: VLAN in New Jersey\n      metro: sv\n      projectId: ${projectId}\n      vxlan: 1040\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing VLAN ID (UUID):\n\n```sh\n$ pulumi import equinix:metal/vlan:Vlan equinix_metal_vlan {existing_vlan_id}\n```\n\n\n{{% /examples %}}","properties":{"description":{"type":"string","description":"Description string.\n"},"facility":{"type":"string","description":"Facility where to create the VLAN. Use metro instead; read the facility to metro migration guide\n","deprecationMessage":"Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices"},"metro":{"type":"string","description":"Metro in which to create the VLAN\n"},"projectId":{"type":"string","description":"ID of parent project.\n"},"vxlan":{"type":"integer","description":"VLAN ID, must be unique in metro.\n"}},"required":["description","facility","metro","projectId","vxlan"],"inputProperties":{"description":{"type":"string","description":"Description string.\n"},"facility":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:metal/facility:Facility"}],"description":"Facility where to create the VLAN. Use metro instead; read the facility to metro migration guide\n","deprecationMessage":"Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices"},"metro":{"type":"string","description":"Metro in which to create the VLAN\n"},"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/facility:Facility"}],"description":"Facility where to create the VLAN. Use metro instead; read the facility to metro migration guide\n","deprecationMessage":"Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices"},"metro":{"type":"string","description":"Metro in which to create the VLAN\n"},"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/vrf:Vrf":{"description":"Use this resource to manage a VRF.\n\nSee the [Virtual Routing and Forwarding documentation](https://docs.equinix.com/metal/networking/vrf/) for product details and API reference material.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n### example 1\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst example = new equinix.metal.Project(\"example\", {name: \"example\"});\nconst exampleVrf = new equinix.metal.Vrf(\"exampleVrf\", {\n    description: \"VRF with ASN 65000 and a pool of address space that includes 192.168.100.0/25\",\n    name: \"example-vrf\",\n    metro: \"da\",\n    localAsn: 65000,\n    ipRanges: [\n        \"192.168.100.0/25\",\n        \"192.168.200.0/25\",\n    ],\n    projectId: example.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexample = equinix.metal.Project(\"example\", name=\"example\")\nexample_vrf = equinix.metal.Vrf(\"exampleVrf\",\n    description=\"VRF with ASN 65000 and a pool of address space that includes 192.168.100.0/25\",\n    name=\"example-vrf\",\n    metro=\"da\",\n    local_asn=65000,\n    ip_ranges=[\n        \"192.168.100.0/25\",\n        \"192.168.200.0/25\",\n    ],\n    project_id=example.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewProject(ctx, \"example\", \u0026metal.ProjectArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = metal.NewVrf(ctx, \"exampleVrf\", \u0026metal.VrfArgs{\n\t\t\tDescription: pulumi.String(\"VRF with ASN 65000 and a pool of address space that includes 192.168.100.0/25\"),\n\t\t\tName:        pulumi.String(\"example-vrf\"),\n\t\t\tMetro:       pulumi.String(\"da\"),\n\t\t\tLocalAsn:    pulumi.Int(65000),\n\t\t\tIpRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.100.0/25\"),\n\t\t\t\tpulumi.String(\"192.168.200.0/25\"),\n\t\t\t},\n\t\t\tProjectId: example.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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Equinix.Metal.Project(\"example\", new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleVrf = new Equinix.Metal.Vrf(\"exampleVrf\", new()\n    {\n        Description = \"VRF with ASN 65000 and a pool of address space that includes 192.168.100.0/25\",\n        Name = \"example-vrf\",\n        Metro = \"da\",\n        LocalAsn = 65000,\n        IpRanges = new[]\n        {\n            \"192.168.100.0/25\",\n            \"192.168.200.0/25\",\n        },\n        ProjectId = example.Id,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Project;\nimport com.pulumi.equinix.metal.ProjectArgs;\nimport com.pulumi.equinix.metal.Vrf;\nimport com.pulumi.equinix.metal.VrfArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleVrf = new Vrf(\"exampleVrf\", VrfArgs.builder()\n            .description(\"VRF with ASN 65000 and a pool of address space that includes 192.168.100.0/25\")\n            .name(\"example-vrf\")\n            .metro(\"da\")\n            .localAsn(65000)\n            .ipRanges(            \n                \"192.168.100.0/25\",\n                \"192.168.200.0/25\")\n            .projectId(example.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: equinix:metal:Project\n    properties:\n      name: example\n  exampleVrf:\n    type: equinix:metal:Vrf\n    name: example\n    properties:\n      description: VRF with ASN 65000 and a pool of address space that includes 192.168.100.0/25\n      name: example-vrf\n      metro: da\n      localAsn: '65000'\n      ipRanges:\n        - 192.168.100.0/25\n        - 192.168.200.0/25\n      projectId: ${example.id}\n```\n{{% /example %}}\n\n{{% example %}}\n### example 2\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst example = new equinix.metal.ReservedIpBlock(\"example\", {\n    description: \"Reserved IP block (192.168.100.0/29) taken from on of the ranges in the VRF's pool of address space.\",\n    projectId: exampleEquinixMetalProject.id,\n    metro: exampleEquinixMetalVrf.metro,\n    type: \"vrf\",\n    vrfId: exampleEquinixMetalVrf.id,\n    cidr: 29,\n    network: \"192.168.100.0\",\n});\nconst exampleVlan = new equinix.metal.Vlan(\"exampleVlan\", {\n    description: \"A VLAN for Layer2 and Hybrid Metal devices\",\n    metro: exampleEquinixMetalVrf.metro,\n    projectId: exampleEquinixMetalProject.id,\n});\nconst exampleGateway = new equinix.metal.Gateway(\"exampleGateway\", {\n    projectId: exampleEquinixMetalProject.id,\n    vlanId: exampleVlan.id,\n    ipReservationId: example.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexample = equinix.metal.ReservedIpBlock(\"example\",\n    description=\"Reserved IP block (192.168.100.0/29) taken from on of the ranges in the VRF's pool of address space.\",\n    project_id=example_equinix_metal_project[\"id\"],\n    metro=example_equinix_metal_vrf[\"metro\"],\n    type=\"vrf\",\n    vrf_id=example_equinix_metal_vrf[\"id\"],\n    cidr=29,\n    network=\"192.168.100.0\")\nexample_vlan = equinix.metal.Vlan(\"exampleVlan\",\n    description=\"A VLAN for Layer2 and Hybrid Metal devices\",\n    metro=example_equinix_metal_vrf[\"metro\"],\n    project_id=example_equinix_metal_project[\"id\"])\nexample_gateway = equinix.metal.Gateway(\"exampleGateway\",\n    project_id=example_equinix_metal_project[\"id\"],\n    vlan_id=example_vlan.id,\n    ip_reservation_id=example.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewReservedIpBlock(ctx, \"example\", \u0026metal.ReservedIpBlockArgs{\n\t\t\tDescription: pulumi.String(\"Reserved IP block (192.168.100.0/29) taken from on of the ranges in the VRF's pool of address space.\"),\n\t\t\tProjectId:   pulumi.Any(exampleEquinixMetalProject.Id),\n\t\t\tMetro:       pulumi.Any(exampleEquinixMetalVrf.Metro),\n\t\t\tType:        pulumi.String(\"vrf\"),\n\t\t\tVrfId:       pulumi.Any(exampleEquinixMetalVrf.Id),\n\t\t\tCidr:        pulumi.Int(29),\n\t\t\tNetwork:     pulumi.String(\"192.168.100.0\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleVlan, err := metal.NewVlan(ctx, \"exampleVlan\", \u0026metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"A VLAN for Layer2 and Hybrid Metal devices\"),\n\t\t\tMetro:       pulumi.Any(exampleEquinixMetalVrf.Metro),\n\t\t\tProjectId:   pulumi.Any(exampleEquinixMetalProject.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = metal.NewGateway(ctx, \"exampleGateway\", \u0026metal.GatewayArgs{\n\t\t\tProjectId:       pulumi.Any(exampleEquinixMetalProject.Id),\n\t\t\tVlanId:          exampleVlan.ID(),\n\t\t\tIpReservationId: example.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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Equinix.Metal.ReservedIpBlock(\"example\", new()\n    {\n        Description = \"Reserved IP block (192.168.100.0/29) taken from on of the ranges in the VRF's pool of address space.\",\n        ProjectId = exampleEquinixMetalProject.Id,\n        Metro = exampleEquinixMetalVrf.Metro,\n        Type = \"vrf\",\n        VrfId = exampleEquinixMetalVrf.Id,\n        Cidr = 29,\n        Network = \"192.168.100.0\",\n    });\n\n    var exampleVlan = new Equinix.Metal.Vlan(\"exampleVlan\", new()\n    {\n        Description = \"A VLAN for Layer2 and Hybrid Metal devices\",\n        Metro = exampleEquinixMetalVrf.Metro,\n        ProjectId = exampleEquinixMetalProject.Id,\n    });\n\n    var exampleGateway = new Equinix.Metal.Gateway(\"exampleGateway\", new()\n    {\n        ProjectId = exampleEquinixMetalProject.Id,\n        VlanId = exampleVlan.Id,\n        IpReservationId = example.Id,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.ReservedIpBlock;\nimport com.pulumi.equinix.metal.ReservedIpBlockArgs;\nimport com.pulumi.equinix.metal.Vlan;\nimport com.pulumi.equinix.metal.VlanArgs;\nimport com.pulumi.equinix.metal.Gateway;\nimport com.pulumi.equinix.metal.GatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new ReservedIpBlock(\"example\", ReservedIpBlockArgs.builder()\n            .description(\"Reserved IP block (192.168.100.0/29) taken from on of the ranges in the VRF's pool of address space.\")\n            .projectId(exampleEquinixMetalProject.id())\n            .metro(exampleEquinixMetalVrf.metro())\n            .type(\"vrf\")\n            .vrfId(exampleEquinixMetalVrf.id())\n            .cidr(29)\n            .network(\"192.168.100.0\")\n            .build());\n\n        var exampleVlan = new Vlan(\"exampleVlan\", VlanArgs.builder()\n            .description(\"A VLAN for Layer2 and Hybrid Metal devices\")\n            .metro(exampleEquinixMetalVrf.metro())\n            .projectId(exampleEquinixMetalProject.id())\n            .build());\n\n        var exampleGateway = new Gateway(\"exampleGateway\", GatewayArgs.builder()\n            .projectId(exampleEquinixMetalProject.id())\n            .vlanId(exampleVlan.id())\n            .ipReservationId(example.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: equinix:metal:ReservedIpBlock\n    properties:\n      description: Reserved IP block (192.168.100.0/29) taken from on of the ranges in the VRF's pool of address space.\n      projectId: ${exampleEquinixMetalProject.id}\n      metro: ${exampleEquinixMetalVrf.metro}\n      type: vrf\n      vrfId: ${exampleEquinixMetalVrf.id}\n      cidr: 29\n      network: 192.168.100.0\n  exampleVlan:\n    type: equinix:metal:Vlan\n    name: example\n    properties:\n      description: A VLAN for Layer2 and Hybrid Metal devices\n      metro: ${exampleEquinixMetalVrf.metro}\n      projectId: ${exampleEquinixMetalProject.id}\n  exampleGateway:\n    type: equinix:metal:Gateway\n    name: example\n    properties:\n      projectId: ${exampleEquinixMetalProject.id}\n      vlanId: ${exampleVlan.id}\n      ipReservationId: ${example.id}\n```\n{{% /example %}}\n\n{{% example %}}\n### example 3\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst exampleVirtualCircuit = new equinix.metal.VirtualCircuit(\"exampleVirtualCircuit\", {\n    name: \"example-vc\",\n    description: \"Virtual Circuit\",\n    connectionId: example.id,\n    projectId: exampleEquinixMetalProject.id,\n    portId: example.ports[0].id,\n    nniVlan: 1024,\n    vrfId: exampleEquinixMetalVrf.id,\n    peerAsn: 65530,\n    subnet: \"192.168.100.16/31\",\n    metalIp: \"192.168.100.16\",\n    customerIp: \"192.168.100.17\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexample_virtual_circuit = equinix.metal.VirtualCircuit(\"exampleVirtualCircuit\",\n    name=\"example-vc\",\n    description=\"Virtual Circuit\",\n    connection_id=example[\"id\"],\n    project_id=example_equinix_metal_project[\"id\"],\n    port_id=example[\"ports\"][0][\"id\"],\n    nni_vlan=1024,\n    vrf_id=example_equinix_metal_vrf[\"id\"],\n    peer_asn=65530,\n    subnet=\"192.168.100.16/31\",\n    metal_ip=\"192.168.100.16\",\n    customer_ip=\"192.168.100.17\")\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewVirtualCircuit(ctx, \"exampleVirtualCircuit\", \u0026metal.VirtualCircuitArgs{\n\t\t\tName:         pulumi.String(\"example-vc\"),\n\t\t\tDescription:  pulumi.String(\"Virtual Circuit\"),\n\t\t\tConnectionId: pulumi.Any(example.Id),\n\t\t\tProjectId:    pulumi.Any(exampleEquinixMetalProject.Id),\n\t\t\tPortId:       pulumi.Any(example.Ports[0].Id),\n\t\t\tNniVlan:      pulumi.Int(1024),\n\t\t\tVrfId:        pulumi.Any(exampleEquinixMetalVrf.Id),\n\t\t\tPeerAsn:      pulumi.Int(65530),\n\t\t\tSubnet:       pulumi.String(\"192.168.100.16/31\"),\n\t\t\tMetalIp:      pulumi.String(\"192.168.100.16\"),\n\t\t\tCustomerIp:   pulumi.String(\"192.168.100.17\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleVirtualCircuit = new Equinix.Metal.VirtualCircuit(\"exampleVirtualCircuit\", new()\n    {\n        Name = \"example-vc\",\n        Description = \"Virtual Circuit\",\n        ConnectionId = example.Id,\n        ProjectId = exampleEquinixMetalProject.Id,\n        PortId = example.Ports[0].Id,\n        NniVlan = 1024,\n        VrfId = exampleEquinixMetalVrf.Id,\n        PeerAsn = 65530,\n        Subnet = \"192.168.100.16/31\",\n        MetalIp = \"192.168.100.16\",\n        CustomerIp = \"192.168.100.17\",\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.VirtualCircuit;\nimport com.pulumi.equinix.metal.VirtualCircuitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleVirtualCircuit = new VirtualCircuit(\"exampleVirtualCircuit\", VirtualCircuitArgs.builder()\n            .name(\"example-vc\")\n            .description(\"Virtual Circuit\")\n            .connectionId(example.id())\n            .projectId(exampleEquinixMetalProject.id())\n            .portId(example.ports()[0].id())\n            .nniVlan(1024)\n            .vrfId(exampleEquinixMetalVrf.id())\n            .peerAsn(65530)\n            .subnet(\"192.168.100.16/31\")\n            .metalIp(\"192.168.100.16\")\n            .customerIp(\"192.168.100.17\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleVirtualCircuit:\n    type: equinix:metal:VirtualCircuit\n    name: example\n    properties:\n      name: example-vc\n      description: Virtual Circuit\n      connectionId: ${example.id}\n      projectId: ${exampleEquinixMetalProject.id}\n      portId: ${example.ports[0].id}\n      nniVlan: 1024\n      vrfId: ${exampleEquinixMetalVrf.id}\n      peerAsn: 65530\n      subnet: 192.168.100.16/31\n      metalIp: 192.168.100.16\n      customerIp: 192.168.100.17\nvariables:\n  example:\n    fn::invoke:\n      function: equinix:metal:getInterconnection\n      arguments:\n        connectionId: ${metalDedicatedConnectionId}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing VRF ID:\n\n```sh\n$ pulumi import equinix:metal/vrf:Vrf equinix_metal_vrf {existing_id}\n```\n\n\n{{% /examples %}}","properties":{"description":{"type":"string","description":"Description of the VRF\n"},"ipRanges":{"type":"array","items":{"type":"string"},"description":"All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF.\n"},"localAsn":{"type":"integer","description":"The 4-byte ASN set on the VRF.\n"},"metro":{"type":"string","description":"Metro ID or Code where the VRF will be deployed\n"},"name":{"type":"string","description":"User-supplied name of the VRF, unique to the project\n"},"projectId":{"type":"string","description":"Project ID where the VRF will be deployed\n"}},"required":["localAsn","metro","name","projectId"],"inputProperties":{"description":{"type":"string","description":"Description of the VRF\n"},"ipRanges":{"type":"array","items":{"type":"string"},"description":"All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF.\n"},"localAsn":{"type":"integer","description":"The 4-byte ASN set on the VRF.\n"},"metro":{"type":"string","description":"Metro ID or Code where the VRF will be deployed\n","willReplaceOnChanges":true},"name":{"type":"string","description":"User-supplied name of the VRF, unique to the project\n"},"projectId":{"type":"string","description":"Project ID where the VRF will be deployed\n","willReplaceOnChanges":true}},"requiredInputs":["metro","projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering Vrf resources.\n","properties":{"description":{"type":"string","description":"Description of the VRF\n"},"ipRanges":{"type":"array","items":{"type":"string"},"description":"All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF.\n"},"localAsn":{"type":"integer","description":"The 4-byte ASN set on the VRF.\n"},"metro":{"type":"string","description":"Metro ID or Code where the VRF will be deployed\n","willReplaceOnChanges":true},"name":{"type":"string","description":"User-supplied name of the VRF, unique to the project\n"},"projectId":{"type":"string","description":"Project ID where the VRF will be deployed\n","willReplaceOnChanges":true}},"type":"object"}},"equinix:networkedge/aclTemplate:AclTemplate":{"description":"Resource `equinix.networkedge.AclTemplate` allows creation and management of Equinix Network Edge device Access Control List templates.\n\nDevice ACL templates give possibility to define set of rules will allowed inbound traffic. Templates can be assigned to the network devices.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst myacl = new equinix.networkedge.AclTemplate(\"myacl\", {\n    name: \"test\",\n    description: \"Test ACL template\",\n    projectId: \"a86d7112-d740-4758-9c9c-31e66373746b\",\n    inboundRules: [\n        {\n            subnet: \"1.1.1.1/32\",\n            protocol: equinix.networkedge.AclRuleProtocolType.IP,\n            srcPort: \"any\",\n            dstPort: \"any\",\n            description: \"inbound rule description\",\n        },\n        {\n            subnet: \"172.16.25.0/24\",\n            protocol: equinix.networkedge.AclRuleProtocolType.UDP,\n            srcPort: \"any\",\n            dstPort: \"53,1045,2041\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nmyacl = equinix.networkedge.AclTemplate(\"myacl\",\n    name=\"test\",\n    description=\"Test ACL template\",\n    project_id=\"a86d7112-d740-4758-9c9c-31e66373746b\",\n    inbound_rules=[\n        {\n            \"subnet\": \"1.1.1.1/32\",\n            \"protocol\": equinix.networkedge.AclRuleProtocolType.IP,\n            \"src_port\": \"any\",\n            \"dst_port\": \"any\",\n            \"description\": \"inbound rule description\",\n        },\n        {\n            \"subnet\": \"172.16.25.0/24\",\n            \"protocol\": equinix.networkedge.AclRuleProtocolType.UDP,\n            \"src_port\": \"any\",\n            \"dst_port\": \"53,1045,2041\",\n        },\n    ])\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\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 := networkedge.NewAclTemplate(ctx, \"myacl\", \u0026networkedge.AclTemplateArgs{\n\t\t\tName:        pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"Test ACL template\"),\n\t\t\tProjectId:   pulumi.String(\"a86d7112-d740-4758-9c9c-31e66373746b\"),\n\t\t\tInboundRules: networkedge.AclTemplateInboundRuleArray{\n\t\t\t\t\u0026networkedge.AclTemplateInboundRuleArgs{\n\t\t\t\t\tSubnet:      pulumi.String(\"1.1.1.1/32\"),\n\t\t\t\t\tProtocol:    pulumi.String(networkedge.AclRuleProtocolTypeIP),\n\t\t\t\t\tSrcPort:     pulumi.String(\"any\"),\n\t\t\t\t\tDstPort:     pulumi.String(\"any\"),\n\t\t\t\t\tDescription: pulumi.String(\"inbound rule description\"),\n\t\t\t\t},\n\t\t\t\t\u0026networkedge.AclTemplateInboundRuleArgs{\n\t\t\t\t\tSubnet:   pulumi.String(\"172.16.25.0/24\"),\n\t\t\t\t\tProtocol: pulumi.String(networkedge.AclRuleProtocolTypeUDP),\n\t\t\t\t\tSrcPort:  pulumi.String(\"any\"),\n\t\t\t\t\tDstPort:  pulumi.String(\"53,1045,2041\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myacl = new Equinix.NetworkEdge.AclTemplate(\"myacl\", new()\n    {\n        Name = \"test\",\n        Description = \"Test ACL template\",\n        ProjectId = \"a86d7112-d740-4758-9c9c-31e66373746b\",\n        InboundRules = new[]\n        {\n            new Equinix.NetworkEdge.Inputs.AclTemplateInboundRuleArgs\n            {\n                Subnet = \"1.1.1.1/32\",\n                Protocol = Equinix.NetworkEdge.AclRuleProtocolType.IP,\n                SrcPort = \"any\",\n                DstPort = \"any\",\n                Description = \"inbound rule description\",\n            },\n            new Equinix.NetworkEdge.Inputs.AclTemplateInboundRuleArgs\n            {\n                Subnet = \"172.16.25.0/24\",\n                Protocol = Equinix.NetworkEdge.AclRuleProtocolType.UDP,\n                SrcPort = \"any\",\n                DstPort = \"53,1045,2041\",\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.AclTemplate;\nimport com.pulumi.equinix.networkedge.AclTemplateArgs;\nimport com.pulumi.equinix.networkedge.inputs.AclTemplateInboundRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myacl = new AclTemplate(\"myacl\", AclTemplateArgs.builder()\n            .name(\"test\")\n            .description(\"Test ACL template\")\n            .projectId(\"a86d7112-d740-4758-9c9c-31e66373746b\")\n            .inboundRules(            \n                AclTemplateInboundRuleArgs.builder()\n                    .subnet(\"1.1.1.1/32\")\n                    .protocol(\"IP\")\n                    .srcPort(\"any\")\n                    .dstPort(\"any\")\n                    .description(\"inbound rule description\")\n                    .build(),\n                AclTemplateInboundRuleArgs.builder()\n                    .subnet(\"172.16.25.0/24\")\n                    .protocol(\"UDP\")\n                    .srcPort(\"any\")\n                    .dstPort(\"53,1045,2041\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Creates ACL template and assigns it to the network device\n  myacl:\n    type: equinix:networkedge:AclTemplate\n    properties:\n      name: test\n      description: Test ACL template\n      projectId: a86d7112-d740-4758-9c9c-31e66373746b\n      inboundRules:\n        - subnet: 1.1.1.1/32\n          protocol: IP\n          srcPort: any\n          dstPort: any\n          description: inbound rule description\n        - subnet: 172.16.25.0/24\n          protocol: UDP\n          srcPort: any\n          dstPort: 53,1045,2041\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID:\n\n```sh\n$ pulumi import equinix:networkedge/aclTemplate:AclTemplate example {existing_id}\n```\n\n\n{{% /examples %}}","properties":{"description":{"type":"string","description":"Inbound rule description, up to 200 characters.\n"},"deviceAclStatus":{"type":"string","description":"Status of ACL template provisioning process, where template was applied. One of `PROVISIONING`, `PROVISIONED`.\n"},"deviceDetails":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/AclTemplateDeviceDetail:AclTemplateDeviceDetail"},"description":"List of the devices where the ACL template is applied.\n"},"deviceId":{"type":"string","description":"(Deprecated) Identifier of a network device where template was applied.\n","deprecationMessage":"Refer to device details get device information"},"inboundRules":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/AclTemplateInboundRule:AclTemplateInboundRule"},"description":"One or more rules to specify allowed inbound traffic. Rules are ordered, matching traffic rule stops processing subsequent ones.\n\nThe `inbound_rule` block has below fields:\n"},"metroCode":{"type":"string","description":"ACL template location metro code.\n","deprecationMessage":"Metro Code is no longer required"},"name":{"type":"string","description":"ACL template name.\n"},"projectId":{"type":"string","description":"Unique Identifier for the project resource where the acl template is scoped to.If you leave it out, the ACL template will be created under the default project id of your organization.\n"},"uuid":{"type":"string","description":"Device uuid.\n"}},"required":["deviceAclStatus","deviceDetails","deviceId","inboundRules","name","projectId","uuid"],"inputProperties":{"description":{"type":"string","description":"Inbound rule description, up to 200 characters.\n"},"inboundRules":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/AclTemplateInboundRule:AclTemplateInboundRule"},"description":"One or more rules to specify allowed inbound traffic. Rules are ordered, matching traffic rule stops processing subsequent ones.\n\nThe `inbound_rule` block has below fields:\n"},"metroCode":{"type":"string","description":"ACL template location metro code.\n","deprecationMessage":"Metro Code is no longer required"},"name":{"type":"string","description":"ACL template name.\n"},"projectId":{"type":"string","description":"Unique Identifier for the project resource where the acl template is scoped to.If you leave it out, the ACL template will be created under the default project id of your organization.\n","willReplaceOnChanges":true}},"requiredInputs":["inboundRules"],"stateInputs":{"description":"Input properties used for looking up and filtering AclTemplate resources.\n","properties":{"description":{"type":"string","description":"Inbound rule description, up to 200 characters.\n"},"deviceAclStatus":{"type":"string","description":"Status of ACL template provisioning process, where template was applied. One of `PROVISIONING`, `PROVISIONED`.\n"},"deviceDetails":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/AclTemplateDeviceDetail:AclTemplateDeviceDetail"},"description":"List of the devices where the ACL template is applied.\n"},"deviceId":{"type":"string","description":"(Deprecated) Identifier of a network device where template was applied.\n","deprecationMessage":"Refer to device details get device information"},"inboundRules":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/AclTemplateInboundRule:AclTemplateInboundRule"},"description":"One or more rules to specify allowed inbound traffic. Rules are ordered, matching traffic rule stops processing subsequent ones.\n\nThe `inbound_rule` block has below fields:\n"},"metroCode":{"type":"string","description":"ACL template location metro code.\n","deprecationMessage":"Metro Code is no longer required"},"name":{"type":"string","description":"ACL template name.\n"},"projectId":{"type":"string","description":"Unique Identifier for the project resource where the acl template is scoped to.If you leave it out, the ACL template will be created under the default project id of your organization.\n","willReplaceOnChanges":true},"uuid":{"type":"string","description":"Device uuid.\n"}},"type":"object"}},"equinix:networkedge/bgp:Bgp":{"description":"Resource `equinix.networkedge.Bgp` allows creation and management of Equinix Network Edge BGP peering configurations.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst test = new equinix.networkedge.Bgp(\"test\", {\n    connectionId: \"54014acf-9730-4b55-a791-459283d05fb1\",\n    localIpAddress: \"10.1.1.1/30\",\n    localAsn: 12345,\n    remoteIpAddress: \"10.1.1.2\",\n    remoteAsn: 66123,\n    authenticationKey: \"secret\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.networkedge.Bgp(\"test\",\n    connection_id=\"54014acf-9730-4b55-a791-459283d05fb1\",\n    local_ip_address=\"10.1.1.1/30\",\n    local_asn=12345,\n    remote_ip_address=\"10.1.1.2\",\n    remote_asn=66123,\n    authentication_key=\"secret\")\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\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 := networkedge.NewBgp(ctx, \"test\", \u0026networkedge.BgpArgs{\n\t\t\tConnectionId:      pulumi.String(\"54014acf-9730-4b55-a791-459283d05fb1\"),\n\t\t\tLocalIpAddress:    pulumi.String(\"10.1.1.1/30\"),\n\t\t\tLocalAsn:          pulumi.Int(12345),\n\t\t\tRemoteIpAddress:   pulumi.String(\"10.1.1.2\"),\n\t\t\tRemoteAsn:         pulumi.Int(66123),\n\t\t\tAuthenticationKey: pulumi.String(\"secret\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Equinix.NetworkEdge.Bgp(\"test\", new()\n    {\n        ConnectionId = \"54014acf-9730-4b55-a791-459283d05fb1\",\n        LocalIpAddress = \"10.1.1.1/30\",\n        LocalAsn = 12345,\n        RemoteIpAddress = \"10.1.1.2\",\n        RemoteAsn = 66123,\n        AuthenticationKey = \"secret\",\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.Bgp;\nimport com.pulumi.equinix.networkedge.BgpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var test = new Bgp(\"test\", BgpArgs.builder()\n            .connectionId(\"54014acf-9730-4b55-a791-459283d05fb1\")\n            .localIpAddress(\"10.1.1.1/30\")\n            .localAsn(12345)\n            .remoteIpAddress(\"10.1.1.2\")\n            .remoteAsn(66123)\n            .authenticationKey(\"secret\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create BGP peering configuration on a existing connection\n  # between network device and service provider\n  test:\n    type: equinix:networkedge:Bgp\n    properties:\n      connectionId: 54014acf-9730-4b55-a791-459283d05fb1\n      localIpAddress: 10.1.1.1/30\n      localAsn: 12345\n      remoteIpAddress: 10.1.1.2\n      remoteAsn: 66123\n      authenticationKey: secret\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID:\n\n```sh\n$ pulumi import equinix:networkedge/bgp:Bgp example {existing_id}\n```\n\n\n{{% /examples %}}","properties":{"authenticationKey":{"type":"string","description":"shared key used for BGP peer authentication.\n","secret":true},"connectionId":{"type":"string","description":"identifier of a connection established between. network device and remote service provider that will be used for peering.\n"},"deviceId":{"type":"string","description":"unique identifier of a network device that is a local peer in a given BGP peering configuration.\n"},"localAsn":{"type":"integer","description":"Local ASN number.\n"},"localIpAddress":{"type":"string","description":"IP address in CIDR format of a local device.\n"},"provisioningStatus":{"type":"string","description":"BGP peering configuration provisioning status, one of `PROVISIONING`, `PENDING_UPDATE`, `PROVISIONED`, `FAILED`.\n"},"remoteAsn":{"type":"integer","description":"Remote ASN number.\n"},"remoteIpAddress":{"type":"string","description":"IP address of remote peer.\n"},"state":{"type":"string","description":"BGP peer state, one of `Idle`, `Connect`, `Active`, `OpenSent`, `OpenConfirm`, `Established`.\n"},"uuid":{"type":"string","description":"BGP peering configuration unique identifier.\n"}},"required":["connectionId","deviceId","localAsn","localIpAddress","provisioningStatus","remoteAsn","remoteIpAddress","state","uuid"],"inputProperties":{"authenticationKey":{"type":"string","description":"shared key used for BGP peer authentication.\n","secret":true},"connectionId":{"type":"string","description":"identifier of a connection established between. network device and remote service provider that will be used for peering.\n","willReplaceOnChanges":true},"localAsn":{"type":"integer","description":"Local ASN number.\n"},"localIpAddress":{"type":"string","description":"IP address in CIDR format of a local device.\n"},"remoteAsn":{"type":"integer","description":"Remote ASN number.\n"},"remoteIpAddress":{"type":"string","description":"IP address of remote peer.\n"}},"requiredInputs":["connectionId","localAsn","localIpAddress","remoteAsn","remoteIpAddress"],"stateInputs":{"description":"Input properties used for looking up and filtering Bgp resources.\n","properties":{"authenticationKey":{"type":"string","description":"shared key used for BGP peer authentication.\n","secret":true},"connectionId":{"type":"string","description":"identifier of a connection established between. network device and remote service provider that will be used for peering.\n","willReplaceOnChanges":true},"deviceId":{"type":"string","description":"unique identifier of a network device that is a local peer in a given BGP peering configuration.\n"},"localAsn":{"type":"integer","description":"Local ASN number.\n"},"localIpAddress":{"type":"string","description":"IP address in CIDR format of a local device.\n"},"provisioningStatus":{"type":"string","description":"BGP peering configuration provisioning status, one of `PROVISIONING`, `PENDING_UPDATE`, `PROVISIONED`, `FAILED`.\n"},"remoteAsn":{"type":"integer","description":"Remote ASN number.\n"},"remoteIpAddress":{"type":"string","description":"IP address of remote peer.\n"},"state":{"type":"string","description":"BGP peer state, one of `Idle`, `Connect`, `Active`, `OpenSent`, `OpenConfirm`, `Established`.\n"},"uuid":{"type":"string","description":"BGP peering configuration unique identifier.\n"}},"type":"object"}},"equinix:networkedge/device:Device":{"description":"Resource `equinix.networkedge.Device` allows creation and management of Equinix Network Edge virtual network devices.\n\nNetwork Edge virtual network devices can be created in two modes:\n\n* **managed** - (default) Where Equinix manages connectivity and services in the device and customer gets limited access to the device.\n* **self-configured** - Where customer provisions and manages own services in the device with less restricted access. Some device types are offered only in this mode.\n\nIn addition to management modes, there are two software license modes available:\n\n* **subscription** - Where Equinix provides software license, including end-to-end support, and bills for the service respectively.\n* **BYOL** - [bring your own license] Where customer brings his own, already procured device software license. There are no charges associated with such license. It is the only licensing mode for `self-configured` devices.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n### example 1\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst dc = equinix.networkedge.getAccountOutput({\n    metroCode: \"DC\",\n});\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst csr1000VHa = new equinix.networkedge.Device(\"csr1000vHa\", {\n    name: \"tf-csr1000v-p\",\n    throughput: 500,\n    throughputUnit: equinix.networkedge.ThroughputUnit.Mbps,\n    metroCode: dc.apply(dc =\u003e dc.metroCode),\n    typeCode: \"CSR1000V\",\n    selfManaged: false,\n    connectivity: \"INTERNET-ACCESS\",\n    byol: false,\n    packageCode: \"SEC\",\n    notifications: [\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    hostname: \"csr1000v-p\",\n    termLength: 12,\n    accountNumber: dc.apply(dc =\u003e dc.number),\n    version: \"16.09.05\",\n    coreCount: 2,\n    secondaryDevice: {\n        name: \"tf-csr1000v-s\",\n        metroCode: sv.apply(sv =\u003e sv.metroCode),\n        hostname: \"csr1000v-s\",\n        notifications: [\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n        ],\n        accountNumber: sv.apply(sv =\u003e sv.number),\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ndc = equinix.networkedge.get_account_output(metro_code=\"DC\")\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\ncsr1000_v_ha = equinix.networkedge.Device(\"csr1000vHa\",\n    name=\"tf-csr1000v-p\",\n    throughput=500,\n    throughput_unit=equinix.networkedge.ThroughputUnit.MBPS,\n    metro_code=dc.metro_code,\n    type_code=\"CSR1000V\",\n    self_managed=False,\n    connectivity=\"INTERNET-ACCESS\",\n    byol=False,\n    package_code=\"SEC\",\n    notifications=[\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    hostname=\"csr1000v-p\",\n    term_length=12,\n    account_number=dc.number,\n    version=\"16.09.05\",\n    core_count=2,\n    secondary_device={\n        \"name\": \"tf-csr1000v-s\",\n        \"metro_code\": sv.metro_code,\n        \"hostname\": \"csr1000v-s\",\n        \"notifications\": [\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n        ],\n        \"account_number\": sv.number,\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdc := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"DC\"),\n\t\t}, nil)\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"csr1000vHa\", \u0026networkedge.DeviceArgs{\n\t\t\tName:           pulumi.String(\"tf-csr1000v-p\"),\n\t\t\tThroughput:     pulumi.Int(500),\n\t\t\tThroughputUnit: pulumi.String(networkedge.ThroughputUnitMbps),\n\t\t\tMetroCode: pulumi.String(dc.ApplyT(func(dc networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026dc.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:     pulumi.String(\"CSR1000V\"),\n\t\t\tSelfManaged:  pulumi.Bool(false),\n\t\t\tConnectivity: pulumi.String(\"INTERNET-ACCESS\"),\n\t\t\tByol:         pulumi.Bool(false),\n\t\t\tPackageCode:  pulumi.String(\"SEC\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\tpulumi.String(\"fred@equinix.com\"),\n\t\t\t},\n\t\t\tHostname:   pulumi.String(\"csr1000v-p\"),\n\t\t\tTermLength: pulumi.Int(12),\n\t\t\tAccountNumber: pulumi.String(dc.ApplyT(func(dc networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026dc.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:   pulumi.String(\"16.09.05\"),\n\t\t\tCoreCount: pulumi.Int(2),\n\t\t\tSecondaryDevice: \u0026networkedge.DeviceSecondaryDeviceArgs{\n\t\t\t\tName: pulumi.String(\"tf-csr1000v-s\"),\n\t\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHostname: pulumi.String(\"csr1000v-s\"),\n\t\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\t},\n\t\t\t\tAccountNumber: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dc = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"DC\",\n    });\n\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var csr1000VHa = new Equinix.NetworkEdge.Device(\"csr1000vHa\", new()\n    {\n        Name = \"tf-csr1000v-p\",\n        Throughput = 500,\n        ThroughputUnit = Equinix.NetworkEdge.ThroughputUnit.Mbps,\n        MetroCode = dc.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"CSR1000V\",\n        SelfManaged = false,\n        Connectivity = \"INTERNET-ACCESS\",\n        Byol = false,\n        PackageCode = \"SEC\",\n        Notifications = new[]\n        {\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n            \"fred@equinix.com\",\n        },\n        Hostname = \"csr1000v-p\",\n        TermLength = 12,\n        AccountNumber = dc.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"16.09.05\",\n        CoreCount = 2,\n        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs\n        {\n            Name = \"tf-csr1000v-s\",\n            MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n            Hostname = \"csr1000v-s\",\n            Notifications = new[]\n            {\n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n            },\n            AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dc = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"DC\")\n            .build());\n\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var csr1000VHa = new Device(\"csr1000VHa\", DeviceArgs.builder()\n            .name(\"tf-csr1000v-p\")\n            .throughput(500)\n            .throughputUnit(\"Mbps\")\n            .metroCode(dc.applyValue(_dc -\u003e _dc.metroCode()))\n            .typeCode(\"CSR1000V\")\n            .selfManaged(false)\n            .connectivity(\"INTERNET-ACCESS\")\n            .byol(false)\n            .packageCode(\"SEC\")\n            .notifications(            \n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n                \"fred@equinix.com\")\n            .hostname(\"csr1000v-p\")\n            .termLength(12)\n            .accountNumber(dc.applyValue(_dc -\u003e _dc.number()))\n            .version(\"16.09.05\")\n            .coreCount(2)\n            .secondaryDevice(DeviceSecondaryDeviceArgs.builder()\n                .name(\"tf-csr1000v-s\")\n                .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n                .hostname(\"csr1000v-s\")\n                .notifications(                \n                    \"john@equinix.com\",\n                    \"marry@equinix.com\")\n                .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  csr1000vHa:\n    type: equinix:networkedge:Device\n    name: csr1000v_ha\n    properties:\n      name: tf-csr1000v-p\n      throughput: 500\n      throughputUnit: Mbps\n      metroCode: ${dc.metroCode}\n      typeCode: CSR1000V\n      selfManaged: false\n      connectivity: INTERNET-ACCESS\n      byol: false\n      packageCode: SEC\n      notifications:\n        - john@equinix.com\n        - marry@equinix.com\n        - fred@equinix.com\n      hostname: csr1000v-p\n      termLength: 12\n      accountNumber: ${dc.number}\n      version: 16.09.05\n      coreCount: 2\n      secondaryDevice:\n        name: tf-csr1000v-s\n        metroCode: ${sv.metroCode}\n        hostname: csr1000v-s\n        notifications:\n          - john@equinix.com\n          - marry@equinix.com\n        accountNumber: ${sv.number}\nvariables:\n  # Create pair of redundant, managed CSR1000V routers with license subscription\n  # in two different metro locations\n  dc:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: DC\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example 2\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst panwCluster = new equinix.networkedge.Device(\"panwCluster\", {\n    name: \"tf-panw\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"PA-VM\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"VM100\",\n    notifications: [\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    termLength: 12,\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"10.1.3\",\n    interfaceCount: 10,\n    coreCount: 2,\n    sshKey: {\n        username: \"test\",\n        keyName: \"test-key\",\n    },\n    aclTemplateId: \"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n    clusterDetails: {\n        clusterName: \"tf-panw-cluster\",\n        node0: {\n            vendorConfiguration: {\n                hostname: \"panw-node0\",\n            },\n            licenseToken: \"licenseToken\",\n        },\n        node1: {\n            vendorConfiguration: {\n                hostname: \"panw-node1\",\n            },\n            licenseToken: \"licenseToken\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\npanw_cluster = equinix.networkedge.Device(\"panwCluster\",\n    name=\"tf-panw\",\n    metro_code=sv.metro_code,\n    type_code=\"PA-VM\",\n    self_managed=True,\n    byol=True,\n    package_code=\"VM100\",\n    notifications=[\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    term_length=12,\n    account_number=sv.number,\n    version=\"10.1.3\",\n    interface_count=10,\n    core_count=2,\n    ssh_key={\n        \"username\": \"test\",\n        \"key_name\": \"test-key\",\n    },\n    acl_template_id=\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n    cluster_details={\n        \"cluster_name\": \"tf-panw-cluster\",\n        \"node0\": {\n            \"vendor_configuration\": {\n                \"hostname\": \"panw-node0\",\n            },\n            \"license_token\": \"licenseToken\",\n        },\n        \"node1\": {\n            \"vendor_configuration\": {\n                \"hostname\": \"panw-node1\",\n            },\n            \"license_token\": \"licenseToken\",\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"panwCluster\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"tf-panw\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:    pulumi.String(\"PA-VM\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol:        pulumi.Bool(true),\n\t\t\tPackageCode: pulumi.String(\"VM100\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\tpulumi.String(\"fred@equinix.com\"),\n\t\t\t},\n\t\t\tTermLength: pulumi.Int(12),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:        pulumi.String(\"10.1.3\"),\n\t\t\tInterfaceCount: pulumi.Int(10),\n\t\t\tCoreCount:      pulumi.Int(2),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\t\tKeyName:  pulumi.String(\"test-key\"),\n\t\t\t},\n\t\t\tAclTemplateId: pulumi.String(\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\"),\n\t\t\tClusterDetails: \u0026networkedge.DeviceClusterDetailsArgs{\n\t\t\t\tClusterName: pulumi.String(\"tf-panw-cluster\"),\n\t\t\t\tNode0: \u0026networkedge.DeviceClusterDetailsNode0Args{\n\t\t\t\t\tVendorConfiguration: \u0026networkedge.DeviceClusterDetailsNode0VendorConfigurationArgs{\n\t\t\t\t\t\tHostname: pulumi.String(\"panw-node0\"),\n\t\t\t\t\t},\n\t\t\t\t\tLicenseToken: pulumi.String(\"licenseToken\"),\n\t\t\t\t},\n\t\t\t\tNode1: \u0026networkedge.DeviceClusterDetailsNode1Args{\n\t\t\t\t\tVendorConfiguration: \u0026networkedge.DeviceClusterDetailsNode1VendorConfigurationArgs{\n\t\t\t\t\t\tHostname: pulumi.String(\"panw-node1\"),\n\t\t\t\t\t},\n\t\t\t\t\tLicenseToken: pulumi.String(\"licenseToken\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var panwCluster = new Equinix.NetworkEdge.Device(\"panwCluster\", new()\n    {\n        Name = \"tf-panw\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"PA-VM\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"VM100\",\n        Notifications = new[]\n        {\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n            \"fred@equinix.com\",\n        },\n        TermLength = 12,\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"10.1.3\",\n        InterfaceCount = 10,\n        CoreCount = 2,\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"test\",\n            KeyName = \"test-key\",\n        },\n        AclTemplateId = \"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n        ClusterDetails = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsArgs\n        {\n            ClusterName = \"tf-panw-cluster\",\n            Node0 = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode0Args\n            {\n                VendorConfiguration = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode0VendorConfigurationArgs\n                {\n                    Hostname = \"panw-node0\",\n                },\n                LicenseToken = \"licenseToken\",\n            },\n            Node1 = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode1Args\n            {\n                VendorConfiguration = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode1VendorConfigurationArgs\n                {\n                    Hostname = \"panw-node1\",\n                },\n                LicenseToken = \"licenseToken\",\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode0Args;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode0VendorConfigurationArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode1Args;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode1VendorConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var panwCluster = new Device(\"panwCluster\", DeviceArgs.builder()\n            .name(\"tf-panw\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"PA-VM\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"VM100\")\n            .notifications(            \n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n                \"fred@equinix.com\")\n            .termLength(12)\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"10.1.3\")\n            .interfaceCount(10)\n            .coreCount(2)\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"test\")\n                .keyName(\"test-key\")\n                .build())\n            .aclTemplateId(\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\")\n            .clusterDetails(DeviceClusterDetailsArgs.builder()\n                .clusterName(\"tf-panw-cluster\")\n                .node0(DeviceClusterDetailsNode0Args.builder()\n                    .vendorConfiguration(DeviceClusterDetailsNode0VendorConfigurationArgs.builder()\n                        .hostname(\"panw-node0\")\n                        .build())\n                    .licenseToken(\"licenseToken\")\n                    .build())\n                .node1(DeviceClusterDetailsNode1Args.builder()\n                    .vendorConfiguration(DeviceClusterDetailsNode1VendorConfigurationArgs.builder()\n                        .hostname(\"panw-node1\")\n                        .build())\n                    .licenseToken(\"licenseToken\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  panwCluster:\n    type: equinix:networkedge:Device\n    name: panw_cluster\n    properties:\n      name: tf-panw\n      metroCode: ${sv.metroCode}\n      typeCode: PA-VM\n      selfManaged: true\n      byol: true\n      packageCode: VM100\n      notifications:\n        - john@equinix.com\n        - marry@equinix.com\n        - fred@equinix.com\n      termLength: 12\n      accountNumber: ${sv.number}\n      version: 10.1.3\n      interfaceCount: 10\n      coreCount: 2\n      sshKey:\n        username: test\n        keyName: test-key\n      aclTemplateId: 0bff6e05-f0e7-44cd-804a-25b92b835f8b\n      clusterDetails:\n        clusterName: tf-panw-cluster\n        node0:\n          vendorConfiguration:\n            hostname: panw-node0\n          licenseToken: licenseToken\n        node1:\n          vendorConfiguration:\n            hostname: panw-node1\n          licenseToken: licenseToken\nvariables:\n  # Create self configured PANW cluster with BYOL license\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example 3\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\nimport * as std from \"@pulumi/std\";\n\nconst config = new pulumi.Config();\nconst filepath = config.get(\"filepath\") || \"cloudInitFileFolder/TF-AVX-cloud-init-file.txt\";\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst aviatrixCloudinitFile = new equinix.networkedge.NetworkFile(\"aviatrixCloudinitFile\", {\n    fileName: \"TF-AVX-cloud-init-file.txt\",\n    content: std.fileOutput({\n        input: filepath,\n    }).apply(invoke =\u003e invoke.result),\n    metroCode: sv.apply(sv =\u003e sv.metroCode).apply((x) =\u003e equinix.index.Metro[x]),\n    deviceTypeCode: \"AVIATRIX_EDGE_10\",\n    processType: equinix.networkedge.FileType.CloudInit,\n    selfManaged: true,\n    byol: true,\n});\nconst aviatrixSingle = new equinix.networkedge.Device(\"aviatrixSingle\", {\n    name: \"tf-aviatrix\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"AVIATRIX_EDGE_10\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"STD\",\n    notifications: [\"john@equinix.com\"],\n    termLength: 12,\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"6.9\",\n    coreCount: 2,\n    cloudInitFileId: aviatrixCloudinitFile.uuid,\n    aclTemplateId: \"c06150ea-b604-4ad1-832a-d63936e9b938\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\nimport pulumi_std as std\n\nconfig = pulumi.Config()\nfilepath = config.get(\"filepath\")\nif filepath is None:\n    filepath = \"cloudInitFileFolder/TF-AVX-cloud-init-file.txt\"\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\naviatrix_cloudinit_file = equinix.networkedge.NetworkFile(\"aviatrixCloudinitFile\",\n    file_name=\"TF-AVX-cloud-init-file.txt\",\n    content=std.file_output(input=filepath).apply(lambda invoke: invoke.result),\n    metro_code=sv.metro_code.apply(lambda x: equinix.Metro(x)),\n    device_type_code=\"AVIATRIX_EDGE_10\",\n    process_type=equinix.networkedge.FileType.CLOUD_INIT,\n    self_managed=True,\n    byol=True)\naviatrix_single = equinix.networkedge.Device(\"aviatrixSingle\",\n    name=\"tf-aviatrix\",\n    metro_code=sv.metro_code,\n    type_code=\"AVIATRIX_EDGE_10\",\n    self_managed=True,\n    byol=True,\n    package_code=\"STD\",\n    notifications=[\"john@equinix.com\"],\n    term_length=12,\n    account_number=sv.number,\n    version=\"6.9\",\n    core_count=2,\n    cloud_init_file_id=aviatrix_cloudinit_file.uuid,\n    acl_template_id=\"c06150ea-b604-4ad1-832a-d63936e9b938\")\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix\"\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tfilepath := \"cloudInitFileFolder/TF-AVX-cloud-init-file.txt\"\n\t\tif param := cfg.Get(\"filepath\"); param != \"\" {\n\t\t\tfilepath = param\n\t\t}\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\taviatrixCloudinitFile, err := networkedge.NewNetworkFile(ctx, \"aviatrixCloudinitFile\", \u0026networkedge.NetworkFileArgs{\n\t\t\tFileName: pulumi.String(\"TF-AVX-cloud-init-file.txt\"),\n\t\t\tContent: pulumi.String(std.FileOutput(ctx, std.FileOutputArgs{\n\t\t\t\tInput: pulumi.String(filepath),\n\t\t\t}, nil).ApplyT(func(invoke std.FileResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput).ApplyT(func(x *string) equinix.Metro { return equinix.Metro(*x) }).(equinix.MetroOutput),\n\t\t\tDeviceTypeCode: pulumi.String(\"AVIATRIX_EDGE_10\"),\n\t\t\tProcessType:    pulumi.String(networkedge.FileTypeCloudInit),\n\t\t\tSelfManaged:    pulumi.Bool(true),\n\t\t\tByol:           pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkedge.NewDevice(ctx, \"aviatrixSingle\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"tf-aviatrix\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:    pulumi.String(\"AVIATRIX_EDGE_10\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol:        pulumi.Bool(true),\n\t\t\tPackageCode: pulumi.String(\"STD\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t},\n\t\t\tTermLength: pulumi.Int(12),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:         pulumi.String(\"6.9\"),\n\t\t\tCoreCount:       pulumi.Int(2),\n\t\t\tCloudInitFileId: aviatrixCloudinitFile.Uuid,\n\t\t\tAclTemplateId:   pulumi.String(\"c06150ea-b604-4ad1-832a-d63936e9b938\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var filepath = config.Get(\"filepath\") ?? \"cloudInitFileFolder/TF-AVX-cloud-init-file.txt\";\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var aviatrixCloudinitFile = new Equinix.NetworkEdge.NetworkFile(\"aviatrixCloudinitFile\", new()\n    {\n        FileName = \"TF-AVX-cloud-init-file.txt\",\n        Content = Std.File.Invoke(new()\n        {\n            Input = filepath,\n        }).Apply(invoke =\u003e invoke.Result),\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode).Apply(System.Enum.Parse\u003cEquinix.Metro\u003e),\n        DeviceTypeCode = \"AVIATRIX_EDGE_10\",\n        ProcessType = Equinix.NetworkEdge.FileType.CloudInit,\n        SelfManaged = true,\n        Byol = true,\n    });\n\n    var aviatrixSingle = new Equinix.NetworkEdge.Device(\"aviatrixSingle\", new()\n    {\n        Name = \"tf-aviatrix\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"AVIATRIX_EDGE_10\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"STD\",\n        Notifications = new[]\n        {\n            \"john@equinix.com\",\n        },\n        TermLength = 12,\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"6.9\",\n        CoreCount = 2,\n        CloudInitFileId = aviatrixCloudinitFile.Uuid,\n        AclTemplateId = \"c06150ea-b604-4ad1-832a-d63936e9b938\",\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.NetworkFile;\nimport com.pulumi.equinix.networkedge.NetworkFileArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var config = ctx.config();\n        final var filepath = config.get(\"filepath\").orElse(\"cloudInitFileFolder/TF-AVX-cloud-init-file.txt\");\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var aviatrixCloudinitFile = new NetworkFile(\"aviatrixCloudinitFile\", NetworkFileArgs.builder()\n            .fileName(\"TF-AVX-cloud-init-file.txt\")\n            .content(StdFunctions.file(FileArgs.builder()\n                .input(filepath)\n                .build()).applyValue(_invoke -\u003e _invoke.result()))\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .deviceTypeCode(\"AVIATRIX_EDGE_10\")\n            .processType(\"CLOUD_INIT\")\n            .selfManaged(true)\n            .byol(true)\n            .build());\n\n        var aviatrixSingle = new Device(\"aviatrixSingle\", DeviceArgs.builder()\n            .name(\"tf-aviatrix\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"AVIATRIX_EDGE_10\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"STD\")\n            .notifications(\"john@equinix.com\")\n            .termLength(12)\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"6.9\")\n            .coreCount(2)\n            .cloudInitFileId(aviatrixCloudinitFile.uuid())\n            .aclTemplateId(\"c06150ea-b604-4ad1-832a-d63936e9b938\")\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  filepath:\n    type: string\n    default: cloudInitFileFolder/TF-AVX-cloud-init-file.txt\nresources:\n  aviatrixCloudinitFile:\n    type: equinix:networkedge:NetworkFile\n    name: aviatrix_cloudinit_file\n    properties:\n      fileName: TF-AVX-cloud-init-file.txt\n      content:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: ${filepath}\n          return: result\n      metroCode: ${sv.metroCode}\n      deviceTypeCode: AVIATRIX_EDGE_10\n      processType: CLOUD_INIT\n      selfManaged: true\n      byol: true\n  aviatrixSingle:\n    type: equinix:networkedge:Device\n    name: aviatrix_single\n    properties:\n      name: tf-aviatrix\n      metroCode: ${sv.metroCode}\n      typeCode: AVIATRIX_EDGE_10\n      selfManaged: true\n      byol: true\n      packageCode: STD\n      notifications:\n        - john@equinix.com\n      termLength: 12\n      accountNumber: ${sv.number}\n      version: '6.9'\n      coreCount: 2\n      cloudInitFileId: ${aviatrixCloudinitFile.uuid}\n      aclTemplateId: c06150ea-b604-4ad1-832a-d63936e9b938\nvariables:\n  # Create self configured single Aviatrix device with cloud init file\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example 4\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    name: \"account-name\",\n    metroCode: \"SV\",\n});\nconst c8KvSingle = new equinix.networkedge.Device(\"c8kvSingle\", {\n    name: \"tf-c8kv\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"C8000V\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"network-essentials\",\n    notifications: [\"test@equinix.com\"],\n    hostname: \"C8KV\",\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"17.06.01a\",\n    coreCount: 2,\n    termLength: 12,\n    licenseToken: \"valid-license-token\",\n    additionalBandwidth: 5,\n    sshKey: {\n        username: \"test-username\",\n        keyName: \"valid-key-name\",\n    },\n    aclTemplateId: \"3e548c02-9164-4197-aa23-05b1f644883c\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(name=\"account-name\",\n    metro_code=\"SV\")\nc8_kv_single = equinix.networkedge.Device(\"c8kvSingle\",\n    name=\"tf-c8kv\",\n    metro_code=sv.metro_code,\n    type_code=\"C8000V\",\n    self_managed=True,\n    byol=True,\n    package_code=\"network-essentials\",\n    notifications=[\"test@equinix.com\"],\n    hostname=\"C8KV\",\n    account_number=sv.number,\n    version=\"17.06.01a\",\n    core_count=2,\n    term_length=12,\n    license_token=\"valid-license-token\",\n    additional_bandwidth=5,\n    ssh_key={\n        \"username\": \"test-username\",\n        \"key_name\": \"valid-key-name\",\n    },\n    acl_template_id=\"3e548c02-9164-4197-aa23-05b1f644883c\")\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tName:      pulumi.String(\"account-name\"),\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"c8kvSingle\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"tf-c8kv\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:    pulumi.String(\"C8000V\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol:        pulumi.Bool(true),\n\t\t\tPackageCode: pulumi.String(\"network-essentials\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@equinix.com\"),\n\t\t\t},\n\t\t\tHostname: pulumi.String(\"C8KV\"),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:             pulumi.String(\"17.06.01a\"),\n\t\t\tCoreCount:           pulumi.Int(2),\n\t\t\tTermLength:          pulumi.Int(12),\n\t\t\tLicenseToken:        pulumi.String(\"valid-license-token\"),\n\t\t\tAdditionalBandwidth: pulumi.Int(5),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"test-username\"),\n\t\t\t\tKeyName:  pulumi.String(\"valid-key-name\"),\n\t\t\t},\n\t\t\tAclTemplateId: pulumi.String(\"3e548c02-9164-4197-aa23-05b1f644883c\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        Name = \"account-name\",\n        MetroCode = \"SV\",\n    });\n\n    var c8KvSingle = new Equinix.NetworkEdge.Device(\"c8kvSingle\", new()\n    {\n        Name = \"tf-c8kv\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"C8000V\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"network-essentials\",\n        Notifications = new[]\n        {\n            \"test@equinix.com\",\n        },\n        Hostname = \"C8KV\",\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"17.06.01a\",\n        CoreCount = 2,\n        TermLength = 12,\n        LicenseToken = \"valid-license-token\",\n        AdditionalBandwidth = 5,\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"test-username\",\n            KeyName = \"valid-key-name\",\n        },\n        AclTemplateId = \"3e548c02-9164-4197-aa23-05b1f644883c\",\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .name(\"account-name\")\n            .metroCode(\"SV\")\n            .build());\n\n        var c8KvSingle = new Device(\"c8KvSingle\", DeviceArgs.builder()\n            .name(\"tf-c8kv\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"C8000V\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"network-essentials\")\n            .notifications(\"test@equinix.com\")\n            .hostname(\"C8KV\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"17.06.01a\")\n            .coreCount(2)\n            .termLength(12)\n            .licenseToken(\"valid-license-token\")\n            .additionalBandwidth(5)\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"test-username\")\n                .keyName(\"valid-key-name\")\n                .build())\n            .aclTemplateId(\"3e548c02-9164-4197-aa23-05b1f644883c\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  c8kvSingle:\n    type: equinix:networkedge:Device\n    name: c8kv_single\n    properties:\n      name: tf-c8kv\n      metroCode: ${sv.metroCode}\n      typeCode: C8000V\n      selfManaged: true\n      byol: true\n      packageCode: network-essentials\n      notifications:\n        - test@equinix.com\n      hostname: C8KV\n      accountNumber: ${sv.number}\n      version: 17.06.01a\n      coreCount: 2\n      termLength: 12\n      licenseToken: valid-license-token\n      additionalBandwidth: 5\n      sshKey:\n        username: test-username\n        keyName: valid-key-name\n      aclTemplateId: 3e548c02-9164-4197-aa23-05b1f644883c\nvariables:\n  # Create self configured single Catalyst 8000V (Autonomous Mode) router with license token\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        name: account-name\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example 5\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    name: \"account-name\",\n    metroCode: \"SV\",\n});\nconst vsrxSingle = new equinix.networkedge.Device(\"vsrxSingle\", {\n    name: \"tf-c8kv-sdwan\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"VSRX\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"STD\",\n    notifications: [\"test@equinix.com\"],\n    hostname: \"VSRX\",\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"23.2R1.13\",\n    coreCount: 2,\n    termLength: 12,\n    additionalBandwidth: 5,\n    projectId: \"a86d7112-d740-4758-9c9c-31e66373746b\",\n    diverseDeviceId: \"ed7891bd-15b4-4f72-ac56-d96cfdacddcc\",\n    sshKey: {\n        username: \"test-username\",\n        keyName: \"valid-key-name\",\n    },\n    aclTemplateId: \"3e548c02-9164-4197-aa23-05b1f644883c\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(name=\"account-name\",\n    metro_code=\"SV\")\nvsrx_single = equinix.networkedge.Device(\"vsrxSingle\",\n    name=\"tf-c8kv-sdwan\",\n    metro_code=sv.metro_code,\n    type_code=\"VSRX\",\n    self_managed=True,\n    byol=True,\n    package_code=\"STD\",\n    notifications=[\"test@equinix.com\"],\n    hostname=\"VSRX\",\n    account_number=sv.number,\n    version=\"23.2R1.13\",\n    core_count=2,\n    term_length=12,\n    additional_bandwidth=5,\n    project_id=\"a86d7112-d740-4758-9c9c-31e66373746b\",\n    diverse_device_id=\"ed7891bd-15b4-4f72-ac56-d96cfdacddcc\",\n    ssh_key={\n        \"username\": \"test-username\",\n        \"key_name\": \"valid-key-name\",\n    },\n    acl_template_id=\"3e548c02-9164-4197-aa23-05b1f644883c\")\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tName:      pulumi.String(\"account-name\"),\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"vsrxSingle\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"tf-c8kv-sdwan\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:    pulumi.String(\"VSRX\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol:        pulumi.Bool(true),\n\t\t\tPackageCode: pulumi.String(\"STD\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@equinix.com\"),\n\t\t\t},\n\t\t\tHostname: pulumi.String(\"VSRX\"),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:             pulumi.String(\"23.2R1.13\"),\n\t\t\tCoreCount:           pulumi.Int(2),\n\t\t\tTermLength:          pulumi.Int(12),\n\t\t\tAdditionalBandwidth: pulumi.Int(5),\n\t\t\tProjectId:           pulumi.String(\"a86d7112-d740-4758-9c9c-31e66373746b\"),\n\t\t\tDiverseDeviceId:     pulumi.String(\"ed7891bd-15b4-4f72-ac56-d96cfdacddcc\"),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"test-username\"),\n\t\t\t\tKeyName:  pulumi.String(\"valid-key-name\"),\n\t\t\t},\n\t\t\tAclTemplateId: pulumi.String(\"3e548c02-9164-4197-aa23-05b1f644883c\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        Name = \"account-name\",\n        MetroCode = \"SV\",\n    });\n\n    var vsrxSingle = new Equinix.NetworkEdge.Device(\"vsrxSingle\", new()\n    {\n        Name = \"tf-c8kv-sdwan\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"VSRX\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"STD\",\n        Notifications = new[]\n        {\n            \"test@equinix.com\",\n        },\n        Hostname = \"VSRX\",\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"23.2R1.13\",\n        CoreCount = 2,\n        TermLength = 12,\n        AdditionalBandwidth = 5,\n        ProjectId = \"a86d7112-d740-4758-9c9c-31e66373746b\",\n        DiverseDeviceId = \"ed7891bd-15b4-4f72-ac56-d96cfdacddcc\",\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"test-username\",\n            KeyName = \"valid-key-name\",\n        },\n        AclTemplateId = \"3e548c02-9164-4197-aa23-05b1f644883c\",\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .name(\"account-name\")\n            .metroCode(\"SV\")\n            .build());\n\n        var vsrxSingle = new Device(\"vsrxSingle\", DeviceArgs.builder()\n            .name(\"tf-c8kv-sdwan\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"VSRX\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"STD\")\n            .notifications(\"test@equinix.com\")\n            .hostname(\"VSRX\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"23.2R1.13\")\n            .coreCount(2)\n            .termLength(12)\n            .additionalBandwidth(5)\n            .projectId(\"a86d7112-d740-4758-9c9c-31e66373746b\")\n            .diverseDeviceId(\"ed7891bd-15b4-4f72-ac56-d96cfdacddcc\")\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"test-username\")\n                .keyName(\"valid-key-name\")\n                .build())\n            .aclTemplateId(\"3e548c02-9164-4197-aa23-05b1f644883c\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vsrxSingle:\n    type: equinix:networkedge:Device\n    name: vsrx_single\n    properties:\n      name: tf-c8kv-sdwan\n      metroCode: ${sv.metroCode}\n      typeCode: VSRX\n      selfManaged: true\n      byol: true\n      packageCode: STD\n      notifications:\n        - test@equinix.com\n      hostname: VSRX\n      accountNumber: ${sv.number}\n      version: 23.2R1.13\n      coreCount: 2\n      termLength: 12\n      additionalBandwidth: 5\n      projectId: a86d7112-d740-4758-9c9c-31e66373746b\n      diverseDeviceId: ed7891bd-15b4-4f72-ac56-d96cfdacddcc\n      sshKey:\n        username: test-username\n        keyName: valid-key-name\n      aclTemplateId: 3e548c02-9164-4197-aa23-05b1f644883c\nvariables:\n  # Create self configured single VSRX device with BYOL License\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        name: account-name\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example 6\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    name: \"account-name\",\n    metroCode: \"SV\",\n});\nconst testPublicKey = new equinix.networkedge.SshKey(\"testPublicKey\", {\n    name: \"key-name\",\n    publicKey: \"ssh-dss key-value\",\n    type: \"DSA\",\n});\nconst aristaHa = new equinix.networkedge.Device(\"aristaHa\", {\n    name: \"tf-arista-p\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"ARISTA-ROUTER\",\n    selfManaged: true,\n    connectivity: \"PRIVATE\",\n    byol: true,\n    packageCode: \"CloudEOS\",\n    notifications: [\"test@equinix.com\"],\n    hostname: \"arista-p\",\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"4.29.0\",\n    coreCount: 4,\n    termLength: 12,\n    additionalBandwidth: 5,\n    sshKey: {\n        username: \"test-username\",\n        keyName: testPublicKey.name,\n    },\n    aclTemplateId: \"c637a17b-7a6a-4486-924b-30e6c36904b0\",\n    secondaryDevice: {\n        name: \"tf-arista-s\",\n        metroCode: sv.apply(sv =\u003e sv.metroCode),\n        hostname: \"arista-s\",\n        notifications: [\"test@eq.com\"],\n        accountNumber: sv.apply(sv =\u003e sv.number),\n        aclTemplateId: \"fee5e2c0-6198-4ce6-9cbd-bbe6c1dbe138\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(name=\"account-name\",\n    metro_code=\"SV\")\ntest_public_key = equinix.networkedge.SshKey(\"testPublicKey\",\n    name=\"key-name\",\n    public_key=\"ssh-dss key-value\",\n    type=\"DSA\")\narista_ha = equinix.networkedge.Device(\"aristaHa\",\n    name=\"tf-arista-p\",\n    metro_code=sv.metro_code,\n    type_code=\"ARISTA-ROUTER\",\n    self_managed=True,\n    connectivity=\"PRIVATE\",\n    byol=True,\n    package_code=\"CloudEOS\",\n    notifications=[\"test@equinix.com\"],\n    hostname=\"arista-p\",\n    account_number=sv.number,\n    version=\"4.29.0\",\n    core_count=4,\n    term_length=12,\n    additional_bandwidth=5,\n    ssh_key={\n        \"username\": \"test-username\",\n        \"key_name\": test_public_key.name,\n    },\n    acl_template_id=\"c637a17b-7a6a-4486-924b-30e6c36904b0\",\n    secondary_device={\n        \"name\": \"tf-arista-s\",\n        \"metro_code\": sv.metro_code,\n        \"hostname\": \"arista-s\",\n        \"notifications\": [\"test@eq.com\"],\n        \"account_number\": sv.number,\n        \"acl_template_id\": \"fee5e2c0-6198-4ce6-9cbd-bbe6c1dbe138\",\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tName:      pulumi.String(\"account-name\"),\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\ttestPublicKey, err := networkedge.NewSshKey(ctx, \"testPublicKey\", \u0026networkedge.SshKeyArgs{\n\t\t\tName:      pulumi.String(\"key-name\"),\n\t\t\tPublicKey: pulumi.String(\"ssh-dss key-value\"),\n\t\t\tType:      pulumi.String(\"DSA\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkedge.NewDevice(ctx, \"aristaHa\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"tf-arista-p\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:     pulumi.String(\"ARISTA-ROUTER\"),\n\t\t\tSelfManaged:  pulumi.Bool(true),\n\t\t\tConnectivity: pulumi.String(\"PRIVATE\"),\n\t\t\tByol:         pulumi.Bool(true),\n\t\t\tPackageCode:  pulumi.String(\"CloudEOS\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@equinix.com\"),\n\t\t\t},\n\t\t\tHostname: pulumi.String(\"arista-p\"),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:             pulumi.String(\"4.29.0\"),\n\t\t\tCoreCount:           pulumi.Int(4),\n\t\t\tTermLength:          pulumi.Int(12),\n\t\t\tAdditionalBandwidth: pulumi.Int(5),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"test-username\"),\n\t\t\t\tKeyName:  testPublicKey.Name,\n\t\t\t},\n\t\t\tAclTemplateId: pulumi.String(\"c637a17b-7a6a-4486-924b-30e6c36904b0\"),\n\t\t\tSecondaryDevice: \u0026networkedge.DeviceSecondaryDeviceArgs{\n\t\t\t\tName: pulumi.String(\"tf-arista-s\"),\n\t\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHostname: pulumi.String(\"arista-s\"),\n\t\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t\t},\n\t\t\t\tAccountNumber: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tAclTemplateId: pulumi.String(\"fee5e2c0-6198-4ce6-9cbd-bbe6c1dbe138\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        Name = \"account-name\",\n        MetroCode = \"SV\",\n    });\n\n    var testPublicKey = new Equinix.NetworkEdge.SshKey(\"testPublicKey\", new()\n    {\n        Name = \"key-name\",\n        PublicKey = \"ssh-dss key-value\",\n        Type = \"DSA\",\n    });\n\n    var aristaHa = new Equinix.NetworkEdge.Device(\"aristaHa\", new()\n    {\n        Name = \"tf-arista-p\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"ARISTA-ROUTER\",\n        SelfManaged = true,\n        Connectivity = \"PRIVATE\",\n        Byol = true,\n        PackageCode = \"CloudEOS\",\n        Notifications = new[]\n        {\n            \"test@equinix.com\",\n        },\n        Hostname = \"arista-p\",\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"4.29.0\",\n        CoreCount = 4,\n        TermLength = 12,\n        AdditionalBandwidth = 5,\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"test-username\",\n            KeyName = testPublicKey.Name,\n        },\n        AclTemplateId = \"c637a17b-7a6a-4486-924b-30e6c36904b0\",\n        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs\n        {\n            Name = \"tf-arista-s\",\n            MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n            Hostname = \"arista-s\",\n            Notifications = new[]\n            {\n                \"test@eq.com\",\n            },\n            AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n            AclTemplateId = \"fee5e2c0-6198-4ce6-9cbd-bbe6c1dbe138\",\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.SshKey;\nimport com.pulumi.equinix.networkedge.SshKeyArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .name(\"account-name\")\n            .metroCode(\"SV\")\n            .build());\n\n        var testPublicKey = new SshKey(\"testPublicKey\", SshKeyArgs.builder()\n            .name(\"key-name\")\n            .publicKey(\"ssh-dss key-value\")\n            .type(\"DSA\")\n            .build());\n\n        var aristaHa = new Device(\"aristaHa\", DeviceArgs.builder()\n            .name(\"tf-arista-p\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"ARISTA-ROUTER\")\n            .selfManaged(true)\n            .connectivity(\"PRIVATE\")\n            .byol(true)\n            .packageCode(\"CloudEOS\")\n            .notifications(\"test@equinix.com\")\n            .hostname(\"arista-p\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"4.29.0\")\n            .coreCount(4)\n            .termLength(12)\n            .additionalBandwidth(5)\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"test-username\")\n                .keyName(testPublicKey.name())\n                .build())\n            .aclTemplateId(\"c637a17b-7a6a-4486-924b-30e6c36904b0\")\n            .secondaryDevice(DeviceSecondaryDeviceArgs.builder()\n                .name(\"tf-arista-s\")\n                .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n                .hostname(\"arista-s\")\n                .notifications(\"test@eq.com\")\n                .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n                .aclTemplateId(\"fee5e2c0-6198-4ce6-9cbd-bbe6c1dbe138\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testPublicKey:\n    type: equinix:networkedge:SshKey\n    name: test_public_key\n    properties:\n      name: key-name\n      publicKey: ssh-dss key-value\n      type: DSA\n  aristaHa:\n    type: equinix:networkedge:Device\n    name: arista_ha\n    properties:\n      name: tf-arista-p\n      metroCode: ${sv.metroCode}\n      typeCode: ARISTA-ROUTER\n      selfManaged: true\n      connectivity: PRIVATE\n      byol: true\n      packageCode: CloudEOS\n      notifications:\n        - test@equinix.com\n      hostname: arista-p\n      accountNumber: ${sv.number}\n      version: 4.29.0\n      coreCount: 4\n      termLength: 12\n      additionalBandwidth: 5\n      sshKey:\n        username: test-username\n        keyName: ${testPublicKey.name}\n      aclTemplateId: c637a17b-7a6a-4486-924b-30e6c36904b0\n      secondaryDevice:\n        name: tf-arista-s\n        metroCode: ${sv.metroCode}\n        hostname: arista-s\n        notifications:\n          - test@eq.com\n        accountNumber: ${sv.number}\n        aclTemplateId: fee5e2c0-6198-4ce6-9cbd-bbe6c1dbe138\nvariables:\n  # Create self configured redundant Arista router with DSA key\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        name: account-name\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example 7\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    name: \"account-name\",\n    metroCode: \"SV\",\n});\nconst testPublicKey = new equinix.networkedge.SshKey(\"testPublicKey\", {\n    name: \"key-name\",\n    publicKey: \"ssh-dss key-value\",\n    type: \"DSA\",\n});\nconst bluecatBddsHa = new equinix.networkedge.Device(\"bluecatBddsHa\", {\n    name: \"tf-bluecat-bdds-p\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"BLUECAT\",\n    selfManaged: true,\n    connectivity: \"PRIVATE\",\n    byol: true,\n    packageCode: \"STD\",\n    notifications: [\"test@equinix.com\"],\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"9.6.0\",\n    coreCount: 2,\n    termLength: 12,\n    vendorConfiguration: {\n        hostname: \"test\",\n        privateAddress: \"x.x.x.x\",\n        privateCidrMask: \"24\",\n        privateGateway: \"x.x.x.x\",\n        licenseKey: \"xxxxx-xxxxx-xxxxx-xxxxx-xxxxx\",\n        licenseId: \"xxxxxxxxxxxxxxx\",\n    },\n    sshKey: {\n        username: \"test-username\",\n        keyName: testPublicKey.name,\n    },\n    secondaryDevice: {\n        name: \"tf-bluecat-bdds-s\",\n        metroCode: sv.apply(sv =\u003e sv.metroCode),\n        notifications: [\"test@eq.com\"],\n        accountNumber: sv.apply(sv =\u003e sv.number),\n        vendorConfiguration: {\n            hostname: \"test\",\n            privateAddress: \"x.x.x.x\",\n            privateCidrMask: \"24\",\n            privateGateway: \"x.x.x.x\",\n            licenseKey: \"xxxxx-xxxxx-xxxxx-xxxxx-xxxxx\",\n            licenseId: \"xxxxxxxxxxxxxxx\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(name=\"account-name\",\n    metro_code=\"SV\")\ntest_public_key = equinix.networkedge.SshKey(\"testPublicKey\",\n    name=\"key-name\",\n    public_key=\"ssh-dss key-value\",\n    type=\"DSA\")\nbluecat_bdds_ha = equinix.networkedge.Device(\"bluecatBddsHa\",\n    name=\"tf-bluecat-bdds-p\",\n    metro_code=sv.metro_code,\n    type_code=\"BLUECAT\",\n    self_managed=True,\n    connectivity=\"PRIVATE\",\n    byol=True,\n    package_code=\"STD\",\n    notifications=[\"test@equinix.com\"],\n    account_number=sv.number,\n    version=\"9.6.0\",\n    core_count=2,\n    term_length=12,\n    vendor_configuration={\n        \"hostname\": \"test\",\n        \"privateAddress\": \"x.x.x.x\",\n        \"privateCidrMask\": \"24\",\n        \"privateGateway\": \"x.x.x.x\",\n        \"licenseKey\": \"xxxxx-xxxxx-xxxxx-xxxxx-xxxxx\",\n        \"licenseId\": \"xxxxxxxxxxxxxxx\",\n    },\n    ssh_key={\n        \"username\": \"test-username\",\n        \"key_name\": test_public_key.name,\n    },\n    secondary_device={\n        \"name\": \"tf-bluecat-bdds-s\",\n        \"metro_code\": sv.metro_code,\n        \"notifications\": [\"test@eq.com\"],\n        \"account_number\": sv.number,\n        \"vendor_configuration\": {\n            \"hostname\": \"test\",\n            \"privateAddress\": \"x.x.x.x\",\n            \"privateCidrMask\": \"24\",\n            \"privateGateway\": \"x.x.x.x\",\n            \"licenseKey\": \"xxxxx-xxxxx-xxxxx-xxxxx-xxxxx\",\n            \"licenseId\": \"xxxxxxxxxxxxxxx\",\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tName:      pulumi.String(\"account-name\"),\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\ttestPublicKey, err := networkedge.NewSshKey(ctx, \"testPublicKey\", \u0026networkedge.SshKeyArgs{\n\t\t\tName:      pulumi.String(\"key-name\"),\n\t\t\tPublicKey: pulumi.String(\"ssh-dss key-value\"),\n\t\t\tType:      pulumi.String(\"DSA\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkedge.NewDevice(ctx, \"bluecatBddsHa\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"tf-bluecat-bdds-p\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:     pulumi.String(\"BLUECAT\"),\n\t\t\tSelfManaged:  pulumi.Bool(true),\n\t\t\tConnectivity: pulumi.String(\"PRIVATE\"),\n\t\t\tByol:         pulumi.Bool(true),\n\t\t\tPackageCode:  pulumi.String(\"STD\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@equinix.com\"),\n\t\t\t},\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:    pulumi.String(\"9.6.0\"),\n\t\t\tCoreCount:  pulumi.Int(2),\n\t\t\tTermLength: pulumi.Int(12),\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"hostname\":        pulumi.String(\"test\"),\n\t\t\t\t\"privateAddress\":  pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\"privateCidrMask\": pulumi.String(\"24\"),\n\t\t\t\t\"privateGateway\":  pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\"licenseKey\":      pulumi.String(\"xxxxx-xxxxx-xxxxx-xxxxx-xxxxx\"),\n\t\t\t\t\"licenseId\":       pulumi.String(\"xxxxxxxxxxxxxxx\"),\n\t\t\t},\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"test-username\"),\n\t\t\t\tKeyName:  testPublicKey.Name,\n\t\t\t},\n\t\t\tSecondaryDevice: \u0026networkedge.DeviceSecondaryDeviceArgs{\n\t\t\t\tName: pulumi.String(\"tf-bluecat-bdds-s\"),\n\t\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t\t},\n\t\t\t\tAccountNumber: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\t\"hostname\":        pulumi.String(\"test\"),\n\t\t\t\t\t\"privateAddress\":  pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\t\"privateCidrMask\": pulumi.String(\"24\"),\n\t\t\t\t\t\"privateGateway\":  pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\t\"licenseKey\":      pulumi.String(\"xxxxx-xxxxx-xxxxx-xxxxx-xxxxx\"),\n\t\t\t\t\t\"licenseId\":       pulumi.String(\"xxxxxxxxxxxxxxx\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        Name = \"account-name\",\n        MetroCode = \"SV\",\n    });\n\n    var testPublicKey = new Equinix.NetworkEdge.SshKey(\"testPublicKey\", new()\n    {\n        Name = \"key-name\",\n        PublicKey = \"ssh-dss key-value\",\n        Type = \"DSA\",\n    });\n\n    var bluecatBddsHa = new Equinix.NetworkEdge.Device(\"bluecatBddsHa\", new()\n    {\n        Name = \"tf-bluecat-bdds-p\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"BLUECAT\",\n        SelfManaged = true,\n        Connectivity = \"PRIVATE\",\n        Byol = true,\n        PackageCode = \"STD\",\n        Notifications = new[]\n        {\n            \"test@equinix.com\",\n        },\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"9.6.0\",\n        CoreCount = 2,\n        TermLength = 12,\n        VendorConfiguration = \n        {\n            { \"hostname\", \"test\" },\n            { \"privateAddress\", \"x.x.x.x\" },\n            { \"privateCidrMask\", \"24\" },\n            { \"privateGateway\", \"x.x.x.x\" },\n            { \"licenseKey\", \"xxxxx-xxxxx-xxxxx-xxxxx-xxxxx\" },\n            { \"licenseId\", \"xxxxxxxxxxxxxxx\" },\n        },\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"test-username\",\n            KeyName = testPublicKey.Name,\n        },\n        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs\n        {\n            Name = \"tf-bluecat-bdds-s\",\n            MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n            Notifications = new[]\n            {\n                \"test@eq.com\",\n            },\n            AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n            VendorConfiguration = \n            {\n                { \"hostname\", \"test\" },\n                { \"privateAddress\", \"x.x.x.x\" },\n                { \"privateCidrMask\", \"24\" },\n                { \"privateGateway\", \"x.x.x.x\" },\n                { \"licenseKey\", \"xxxxx-xxxxx-xxxxx-xxxxx-xxxxx\" },\n                { \"licenseId\", \"xxxxxxxxxxxxxxx\" },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.SshKey;\nimport com.pulumi.equinix.networkedge.SshKeyArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .name(\"account-name\")\n            .metroCode(\"SV\")\n            .build());\n\n        var testPublicKey = new SshKey(\"testPublicKey\", SshKeyArgs.builder()\n            .name(\"key-name\")\n            .publicKey(\"ssh-dss key-value\")\n            .type(\"DSA\")\n            .build());\n\n        var bluecatBddsHa = new Device(\"bluecatBddsHa\", DeviceArgs.builder()\n            .name(\"tf-bluecat-bdds-p\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"BLUECAT\")\n            .selfManaged(true)\n            .connectivity(\"PRIVATE\")\n            .byol(true)\n            .packageCode(\"STD\")\n            .notifications(\"test@equinix.com\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"9.6.0\")\n            .coreCount(2)\n            .termLength(12)\n            .vendorConfiguration(Map.ofEntries(\n                Map.entry(\"hostname\", \"test\"),\n                Map.entry(\"privateAddress\", \"x.x.x.x\"),\n                Map.entry(\"privateCidrMask\", \"24\"),\n                Map.entry(\"privateGateway\", \"x.x.x.x\"),\n                Map.entry(\"licenseKey\", \"xxxxx-xxxxx-xxxxx-xxxxx-xxxxx\"),\n                Map.entry(\"licenseId\", \"xxxxxxxxxxxxxxx\")\n            ))\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"test-username\")\n                .keyName(testPublicKey.name())\n                .build())\n            .secondaryDevice(DeviceSecondaryDeviceArgs.builder()\n                .name(\"tf-bluecat-bdds-s\")\n                .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n                .notifications(\"test@eq.com\")\n                .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n                .vendorConfiguration(Map.ofEntries(\n                    Map.entry(\"hostname\", \"test\"),\n                    Map.entry(\"privateAddress\", \"x.x.x.x\"),\n                    Map.entry(\"privateCidrMask\", \"24\"),\n                    Map.entry(\"privateGateway\", \"x.x.x.x\"),\n                    Map.entry(\"licenseKey\", \"xxxxx-xxxxx-xxxxx-xxxxx-xxxxx\"),\n                    Map.entry(\"licenseId\", \"xxxxxxxxxxxxxxx\")\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testPublicKey:\n    type: equinix:networkedge:SshKey\n    name: test_public_key\n    properties:\n      name: key-name\n      publicKey: ssh-dss key-value\n      type: DSA\n  bluecatBddsHa:\n    type: equinix:networkedge:Device\n    name: bluecat_bdds_ha\n    properties:\n      name: tf-bluecat-bdds-p\n      metroCode: ${sv.metroCode}\n      typeCode: BLUECAT\n      selfManaged: true\n      connectivity: PRIVATE\n      byol: true\n      packageCode: STD\n      notifications:\n        - test@equinix.com\n      accountNumber: ${sv.number}\n      version: 9.6.0\n      coreCount: 2\n      termLength: 12\n      vendorConfiguration:\n        hostname: test\n        privateAddress: x.x.x.x\n        privateCidrMask: '24'\n        privateGateway: x.x.x.x\n        licenseKey: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx\n        licenseId: xxxxxxxxxxxxxxx\n      sshKey:\n        username: test-username\n        keyName: ${testPublicKey.name}\n      secondaryDevice:\n        name: tf-bluecat-bdds-s\n        metroCode: ${sv.metroCode}\n        notifications:\n          - test@eq.com\n        accountNumber: ${sv.number}\n        vendorConfiguration:\n          hostname: test\n          privateAddress: x.x.x.x\n          privateCidrMask: '24'\n          privateGateway: x.x.x.x\n          licenseKey: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx\n          licenseId: xxxxxxxxxxxxxxx\nvariables:\n  # Create self configured redundant BlueCat DNS and DHCP Server\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        name: account-name\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example 8\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\nimport * as std from \"@pulumi/std\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    name: \"account-name\",\n    metroCode: \"SV\",\n});\nconst bluecatEdgeServicePointCloudinitPrimaryFile = new equinix.networkedge.NetworkFile(\"bluecatEdgeServicePointCloudinitPrimaryFile\", {\n    fileName: \"TF-BLUECAT-ESP-cloud-init-file.txt\",\n    content: std.fileOutput({\n        input: filepath,\n    }).apply(invoke =\u003e invoke.result),\n    metroCode: sv.apply(sv =\u003e sv.metroCode).apply((x) =\u003e equinix.index.Metro[x]),\n    deviceTypeCode: \"BLUECAT-EDGE-SERVICE-POINT\",\n    processType: equinix.networkedge.FileType.CloudInit,\n    selfManaged: true,\n    byol: true,\n});\nconst bluecatEdgeServicePointCloudinitSecondaryFile = new equinix.networkedge.NetworkFile(\"bluecatEdgeServicePointCloudinitSecondaryFile\", {\n    fileName: \"TF-BLUECAT-ESP-cloud-init-file.txt\",\n    content: std.fileOutput({\n        input: filepath,\n    }).apply(invoke =\u003e invoke.result),\n    metroCode: sv.apply(sv =\u003e sv.metroCode).apply((x) =\u003e equinix.index.Metro[x]),\n    deviceTypeCode: \"BLUECAT-EDGE-SERVICE-POINT\",\n    processType: equinix.networkedge.FileType.CloudInit,\n    selfManaged: true,\n    byol: true,\n});\nconst bluecatEdgeServicePointHa = new equinix.networkedge.Device(\"bluecatEdgeServicePointHa\", {\n    name: \"tf-bluecat-edge-service-point-p\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"BLUECAT-EDGE-SERVICE-POINT\",\n    selfManaged: true,\n    connectivity: \"PRIVATE\",\n    byol: true,\n    packageCode: \"STD\",\n    notifications: [\"test@equinix.com\"],\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    cloudInitFileId: bluecatEdgeServicePointCloudinitPrimaryFile.uuid,\n    version: \"4.6.3\",\n    coreCount: 4,\n    termLength: 12,\n    secondaryDevice: {\n        name: \"tf-bluecat-edge-service-point-s\",\n        metroCode: sv.apply(sv =\u003e sv.metroCode),\n        notifications: [\"test@eq.com\"],\n        accountNumber: sv.apply(sv =\u003e sv.number),\n        cloudInitFileId: bluecatEdgeServicePointCloudinitSecondaryFile.uuid,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\nimport pulumi_std as std\n\nsv = equinix.networkedge.get_account_output(name=\"account-name\",\n    metro_code=\"SV\")\nbluecat_edge_service_point_cloudinit_primary_file = equinix.networkedge.NetworkFile(\"bluecatEdgeServicePointCloudinitPrimaryFile\",\n    file_name=\"TF-BLUECAT-ESP-cloud-init-file.txt\",\n    content=std.file_output(input=filepath).apply(lambda invoke: invoke.result),\n    metro_code=sv.metro_code.apply(lambda x: equinix.Metro(x)),\n    device_type_code=\"BLUECAT-EDGE-SERVICE-POINT\",\n    process_type=equinix.networkedge.FileType.CLOUD_INIT,\n    self_managed=True,\n    byol=True)\nbluecat_edge_service_point_cloudinit_secondary_file = equinix.networkedge.NetworkFile(\"bluecatEdgeServicePointCloudinitSecondaryFile\",\n    file_name=\"TF-BLUECAT-ESP-cloud-init-file.txt\",\n    content=std.file_output(input=filepath).apply(lambda invoke: invoke.result),\n    metro_code=sv.metro_code.apply(lambda x: equinix.Metro(x)),\n    device_type_code=\"BLUECAT-EDGE-SERVICE-POINT\",\n    process_type=equinix.networkedge.FileType.CLOUD_INIT,\n    self_managed=True,\n    byol=True)\nbluecat_edge_service_point_ha = equinix.networkedge.Device(\"bluecatEdgeServicePointHa\",\n    name=\"tf-bluecat-edge-service-point-p\",\n    metro_code=sv.metro_code,\n    type_code=\"BLUECAT-EDGE-SERVICE-POINT\",\n    self_managed=True,\n    connectivity=\"PRIVATE\",\n    byol=True,\n    package_code=\"STD\",\n    notifications=[\"test@equinix.com\"],\n    account_number=sv.number,\n    cloud_init_file_id=bluecat_edge_service_point_cloudinit_primary_file.uuid,\n    version=\"4.6.3\",\n    core_count=4,\n    term_length=12,\n    secondary_device={\n        \"name\": \"tf-bluecat-edge-service-point-s\",\n        \"metro_code\": sv.metro_code,\n        \"notifications\": [\"test@eq.com\"],\n        \"account_number\": sv.number,\n        \"cloud_init_file_id\": bluecat_edge_service_point_cloudinit_secondary_file.uuid,\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix\"\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tName:      pulumi.String(\"account-name\"),\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\tbluecatEdgeServicePointCloudinitPrimaryFile, err := networkedge.NewNetworkFile(ctx, \"bluecatEdgeServicePointCloudinitPrimaryFile\", \u0026networkedge.NetworkFileArgs{\n\t\t\tFileName: pulumi.String(\"TF-BLUECAT-ESP-cloud-init-file.txt\"),\n\t\t\tContent: pulumi.String(std.FileOutput(ctx, std.FileOutputArgs{\n\t\t\t\tInput: pulumi.Any(filepath),\n\t\t\t}, nil).ApplyT(func(invoke std.FileResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput).ApplyT(func(x *string) equinix.Metro { return equinix.Metro(*x) }).(equinix.MetroOutput),\n\t\t\tDeviceTypeCode: pulumi.String(\"BLUECAT-EDGE-SERVICE-POINT\"),\n\t\t\tProcessType:    pulumi.String(networkedge.FileTypeCloudInit),\n\t\t\tSelfManaged:    pulumi.Bool(true),\n\t\t\tByol:           pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbluecatEdgeServicePointCloudinitSecondaryFile, err := networkedge.NewNetworkFile(ctx, \"bluecatEdgeServicePointCloudinitSecondaryFile\", \u0026networkedge.NetworkFileArgs{\n\t\t\tFileName: pulumi.String(\"TF-BLUECAT-ESP-cloud-init-file.txt\"),\n\t\t\tContent: pulumi.String(std.FileOutput(ctx, std.FileOutputArgs{\n\t\t\t\tInput: pulumi.Any(filepath),\n\t\t\t}, nil).ApplyT(func(invoke std.FileResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput).ApplyT(func(x *string) equinix.Metro { return equinix.Metro(*x) }).(equinix.MetroOutput),\n\t\t\tDeviceTypeCode: pulumi.String(\"BLUECAT-EDGE-SERVICE-POINT\"),\n\t\t\tProcessType:    pulumi.String(networkedge.FileTypeCloudInit),\n\t\t\tSelfManaged:    pulumi.Bool(true),\n\t\t\tByol:           pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkedge.NewDevice(ctx, \"bluecatEdgeServicePointHa\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"tf-bluecat-edge-service-point-p\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:     pulumi.String(\"BLUECAT-EDGE-SERVICE-POINT\"),\n\t\t\tSelfManaged:  pulumi.Bool(true),\n\t\t\tConnectivity: pulumi.String(\"PRIVATE\"),\n\t\t\tByol:         pulumi.Bool(true),\n\t\t\tPackageCode:  pulumi.String(\"STD\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@equinix.com\"),\n\t\t\t},\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tCloudInitFileId: bluecatEdgeServicePointCloudinitPrimaryFile.Uuid,\n\t\t\tVersion:         pulumi.String(\"4.6.3\"),\n\t\t\tCoreCount:       pulumi.Int(4),\n\t\t\tTermLength:      pulumi.Int(12),\n\t\t\tSecondaryDevice: \u0026networkedge.DeviceSecondaryDeviceArgs{\n\t\t\t\tName: pulumi.String(\"tf-bluecat-edge-service-point-s\"),\n\t\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t\t},\n\t\t\t\tAccountNumber: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tCloudInitFileId: bluecatEdgeServicePointCloudinitSecondaryFile.Uuid,\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        Name = \"account-name\",\n        MetroCode = \"SV\",\n    });\n\n    var bluecatEdgeServicePointCloudinitPrimaryFile = new Equinix.NetworkEdge.NetworkFile(\"bluecatEdgeServicePointCloudinitPrimaryFile\", new()\n    {\n        FileName = \"TF-BLUECAT-ESP-cloud-init-file.txt\",\n        Content = Std.File.Invoke(new()\n        {\n            Input = filepath,\n        }).Apply(invoke =\u003e invoke.Result),\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode).Apply(System.Enum.Parse\u003cEquinix.Metro\u003e),\n        DeviceTypeCode = \"BLUECAT-EDGE-SERVICE-POINT\",\n        ProcessType = Equinix.NetworkEdge.FileType.CloudInit,\n        SelfManaged = true,\n        Byol = true,\n    });\n\n    var bluecatEdgeServicePointCloudinitSecondaryFile = new Equinix.NetworkEdge.NetworkFile(\"bluecatEdgeServicePointCloudinitSecondaryFile\", new()\n    {\n        FileName = \"TF-BLUECAT-ESP-cloud-init-file.txt\",\n        Content = Std.File.Invoke(new()\n        {\n            Input = filepath,\n        }).Apply(invoke =\u003e invoke.Result),\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode).Apply(System.Enum.Parse\u003cEquinix.Metro\u003e),\n        DeviceTypeCode = \"BLUECAT-EDGE-SERVICE-POINT\",\n        ProcessType = Equinix.NetworkEdge.FileType.CloudInit,\n        SelfManaged = true,\n        Byol = true,\n    });\n\n    var bluecatEdgeServicePointHa = new Equinix.NetworkEdge.Device(\"bluecatEdgeServicePointHa\", new()\n    {\n        Name = \"tf-bluecat-edge-service-point-p\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"BLUECAT-EDGE-SERVICE-POINT\",\n        SelfManaged = true,\n        Connectivity = \"PRIVATE\",\n        Byol = true,\n        PackageCode = \"STD\",\n        Notifications = new[]\n        {\n            \"test@equinix.com\",\n        },\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        CloudInitFileId = bluecatEdgeServicePointCloudinitPrimaryFile.Uuid,\n        Version = \"4.6.3\",\n        CoreCount = 4,\n        TermLength = 12,\n        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs\n        {\n            Name = \"tf-bluecat-edge-service-point-s\",\n            MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n            Notifications = new[]\n            {\n                \"test@eq.com\",\n            },\n            AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n            CloudInitFileId = bluecatEdgeServicePointCloudinitSecondaryFile.Uuid,\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.NetworkFile;\nimport com.pulumi.equinix.networkedge.NetworkFileArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .name(\"account-name\")\n            .metroCode(\"SV\")\n            .build());\n\n        var bluecatEdgeServicePointCloudinitPrimaryFile = new NetworkFile(\"bluecatEdgeServicePointCloudinitPrimaryFile\", NetworkFileArgs.builder()\n            .fileName(\"TF-BLUECAT-ESP-cloud-init-file.txt\")\n            .content(StdFunctions.file(FileArgs.builder()\n                .input(filepath)\n                .build()).applyValue(_invoke -\u003e _invoke.result()))\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .deviceTypeCode(\"BLUECAT-EDGE-SERVICE-POINT\")\n            .processType(\"CLOUD_INIT\")\n            .selfManaged(true)\n            .byol(true)\n            .build());\n\n        var bluecatEdgeServicePointCloudinitSecondaryFile = new NetworkFile(\"bluecatEdgeServicePointCloudinitSecondaryFile\", NetworkFileArgs.builder()\n            .fileName(\"TF-BLUECAT-ESP-cloud-init-file.txt\")\n            .content(StdFunctions.file(FileArgs.builder()\n                .input(filepath)\n                .build()).applyValue(_invoke -\u003e _invoke.result()))\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .deviceTypeCode(\"BLUECAT-EDGE-SERVICE-POINT\")\n            .processType(\"CLOUD_INIT\")\n            .selfManaged(true)\n            .byol(true)\n            .build());\n\n        var bluecatEdgeServicePointHa = new Device(\"bluecatEdgeServicePointHa\", DeviceArgs.builder()\n            .name(\"tf-bluecat-edge-service-point-p\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"BLUECAT-EDGE-SERVICE-POINT\")\n            .selfManaged(true)\n            .connectivity(\"PRIVATE\")\n            .byol(true)\n            .packageCode(\"STD\")\n            .notifications(\"test@equinix.com\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .cloudInitFileId(bluecatEdgeServicePointCloudinitPrimaryFile.uuid())\n            .version(\"4.6.3\")\n            .coreCount(4)\n            .termLength(12)\n            .secondaryDevice(DeviceSecondaryDeviceArgs.builder()\n                .name(\"tf-bluecat-edge-service-point-s\")\n                .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n                .notifications(\"test@eq.com\")\n                .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n                .cloudInitFileId(bluecatEdgeServicePointCloudinitSecondaryFile.uuid())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  bluecatEdgeServicePointCloudinitPrimaryFile:\n    type: equinix:networkedge:NetworkFile\n    name: bluecat_edge_service_point_cloudinit_primary_file\n    properties:\n      fileName: TF-BLUECAT-ESP-cloud-init-file.txt\n      content:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: ${filepath}\n          return: result\n      metroCode: ${sv.metroCode}\n      deviceTypeCode: BLUECAT-EDGE-SERVICE-POINT\n      processType: CLOUD_INIT\n      selfManaged: true\n      byol: true\n  bluecatEdgeServicePointCloudinitSecondaryFile:\n    type: equinix:networkedge:NetworkFile\n    name: bluecat_edge_service_point_cloudinit_secondary_file\n    properties:\n      fileName: TF-BLUECAT-ESP-cloud-init-file.txt\n      content:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: ${filepath}\n          return: result\n      metroCode: ${sv.metroCode}\n      deviceTypeCode: BLUECAT-EDGE-SERVICE-POINT\n      processType: CLOUD_INIT\n      selfManaged: true\n      byol: true\n  bluecatEdgeServicePointHa:\n    type: equinix:networkedge:Device\n    name: bluecat_edge_service_point_ha\n    properties:\n      name: tf-bluecat-edge-service-point-p\n      metroCode: ${sv.metroCode}\n      typeCode: BLUECAT-EDGE-SERVICE-POINT\n      selfManaged: true\n      connectivity: PRIVATE\n      byol: true\n      packageCode: STD\n      notifications:\n        - test@equinix.com\n      accountNumber: ${sv.number}\n      cloudInitFileId: ${bluecatEdgeServicePointCloudinitPrimaryFile.uuid}\n      version: 4.6.3\n      coreCount: 4\n      termLength: 12\n      secondaryDevice:\n        name: tf-bluecat-edge-service-point-s\n        metroCode: ${sv.metroCode}\n        notifications:\n          - test@eq.com\n        accountNumber: ${sv.number}\n        cloudInitFileId: ${bluecatEdgeServicePointCloudinitSecondaryFile.uuid}\nvariables:\n  # Create self configured redundant BlueCat Edge Service Point\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        name: account-name\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example 9\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst panwCluster = new equinix.networkedge.Device(\"panwCluster\", {\n    name: \"tf-panw\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"PA-VM\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"VM100\",\n    notifications: [\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    termLength: 12,\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"11.1.3\",\n    interfaceCount: 10,\n    coreCount: 2,\n    sshKey: {\n        username: \"test\",\n        keyName: \"test-key\",\n    },\n    aclTemplateId: \"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n    clusterDetails: {\n        clusterName: \"tf-panw-cluster\",\n        node0: {\n            vendorConfiguration: {\n                hostname: \"panw-node0\",\n                panoramaIpAddress: \"x.x.x.x\",\n                panoramaAuthKey: \"xxxxxxxxxxx\",\n            },\n            licenseToken: \"licenseToken\",\n        },\n        node1: {\n            vendorConfiguration: {\n                hostname: \"panw-node1\",\n                panoramaIpAddress: \"x.x.x.x\",\n                panoramaAuthKey: \"xxxxxxxxxxx\",\n            },\n            licenseToken: \"licenseToken\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\npanw_cluster = equinix.networkedge.Device(\"panwCluster\",\n    name=\"tf-panw\",\n    metro_code=sv.metro_code,\n    type_code=\"PA-VM\",\n    self_managed=True,\n    byol=True,\n    package_code=\"VM100\",\n    notifications=[\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    term_length=12,\n    account_number=sv.number,\n    version=\"11.1.3\",\n    interface_count=10,\n    core_count=2,\n    ssh_key={\n        \"username\": \"test\",\n        \"key_name\": \"test-key\",\n    },\n    acl_template_id=\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n    cluster_details={\n        \"cluster_name\": \"tf-panw-cluster\",\n        \"node0\": {\n            \"vendor_configuration\": {\n                \"hostname\": \"panw-node0\",\n                \"panorama_ip_address\": \"x.x.x.x\",\n                \"panorama_auth_key\": \"xxxxxxxxxxx\",\n            },\n            \"license_token\": \"licenseToken\",\n        },\n        \"node1\": {\n            \"vendor_configuration\": {\n                \"hostname\": \"panw-node1\",\n                \"panorama_ip_address\": \"x.x.x.x\",\n                \"panorama_auth_key\": \"xxxxxxxxxxx\",\n            },\n            \"license_token\": \"licenseToken\",\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"panwCluster\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"tf-panw\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:    pulumi.String(\"PA-VM\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol:        pulumi.Bool(true),\n\t\t\tPackageCode: pulumi.String(\"VM100\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\tpulumi.String(\"fred@equinix.com\"),\n\t\t\t},\n\t\t\tTermLength: pulumi.Int(12),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:        pulumi.String(\"11.1.3\"),\n\t\t\tInterfaceCount: pulumi.Int(10),\n\t\t\tCoreCount:      pulumi.Int(2),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\t\tKeyName:  pulumi.String(\"test-key\"),\n\t\t\t},\n\t\t\tAclTemplateId: pulumi.String(\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\"),\n\t\t\tClusterDetails: \u0026networkedge.DeviceClusterDetailsArgs{\n\t\t\t\tClusterName: pulumi.String(\"tf-panw-cluster\"),\n\t\t\t\tNode0: \u0026networkedge.DeviceClusterDetailsNode0Args{\n\t\t\t\t\tVendorConfiguration: \u0026networkedge.DeviceClusterDetailsNode0VendorConfigurationArgs{\n\t\t\t\t\t\tHostname:          pulumi.String(\"panw-node0\"),\n\t\t\t\t\t\tPanoramaIpAddress: pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\t\tPanoramaAuthKey:   pulumi.String(\"xxxxxxxxxxx\"),\n\t\t\t\t\t},\n\t\t\t\t\tLicenseToken: pulumi.String(\"licenseToken\"),\n\t\t\t\t},\n\t\t\t\tNode1: \u0026networkedge.DeviceClusterDetailsNode1Args{\n\t\t\t\t\tVendorConfiguration: \u0026networkedge.DeviceClusterDetailsNode1VendorConfigurationArgs{\n\t\t\t\t\t\tHostname:          pulumi.String(\"panw-node1\"),\n\t\t\t\t\t\tPanoramaIpAddress: pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\t\tPanoramaAuthKey:   pulumi.String(\"xxxxxxxxxxx\"),\n\t\t\t\t\t},\n\t\t\t\t\tLicenseToken: pulumi.String(\"licenseToken\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var panwCluster = new Equinix.NetworkEdge.Device(\"panwCluster\", new()\n    {\n        Name = \"tf-panw\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"PA-VM\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"VM100\",\n        Notifications = new[]\n        {\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n            \"fred@equinix.com\",\n        },\n        TermLength = 12,\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"11.1.3\",\n        InterfaceCount = 10,\n        CoreCount = 2,\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"test\",\n            KeyName = \"test-key\",\n        },\n        AclTemplateId = \"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n        ClusterDetails = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsArgs\n        {\n            ClusterName = \"tf-panw-cluster\",\n            Node0 = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode0Args\n            {\n                VendorConfiguration = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode0VendorConfigurationArgs\n                {\n                    Hostname = \"panw-node0\",\n                    PanoramaIpAddress = \"x.x.x.x\",\n                    PanoramaAuthKey = \"xxxxxxxxxxx\",\n                },\n                LicenseToken = \"licenseToken\",\n            },\n            Node1 = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode1Args\n            {\n                VendorConfiguration = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode1VendorConfigurationArgs\n                {\n                    Hostname = \"panw-node1\",\n                    PanoramaIpAddress = \"x.x.x.x\",\n                    PanoramaAuthKey = \"xxxxxxxxxxx\",\n                },\n                LicenseToken = \"licenseToken\",\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode0Args;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode0VendorConfigurationArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode1Args;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode1VendorConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var panwCluster = new Device(\"panwCluster\", DeviceArgs.builder()\n            .name(\"tf-panw\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"PA-VM\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"VM100\")\n            .notifications(            \n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n                \"fred@equinix.com\")\n            .termLength(12)\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"11.1.3\")\n            .interfaceCount(10)\n            .coreCount(2)\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"test\")\n                .keyName(\"test-key\")\n                .build())\n            .aclTemplateId(\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\")\n            .clusterDetails(DeviceClusterDetailsArgs.builder()\n                .clusterName(\"tf-panw-cluster\")\n                .node0(DeviceClusterDetailsNode0Args.builder()\n                    .vendorConfiguration(DeviceClusterDetailsNode0VendorConfigurationArgs.builder()\n                        .hostname(\"panw-node0\")\n                        .panoramaIpAddress(\"x.x.x.x\")\n                        .panoramaAuthKey(\"xxxxxxxxxxx\")\n                        .build())\n                    .licenseToken(\"licenseToken\")\n                    .build())\n                .node1(DeviceClusterDetailsNode1Args.builder()\n                    .vendorConfiguration(DeviceClusterDetailsNode1VendorConfigurationArgs.builder()\n                        .hostname(\"panw-node1\")\n                        .panoramaIpAddress(\"x.x.x.x\")\n                        .panoramaAuthKey(\"xxxxxxxxxxx\")\n                        .build())\n                    .licenseToken(\"licenseToken\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  panwCluster:\n    type: equinix:networkedge:Device\n    name: panw_cluster\n    properties:\n      name: tf-panw\n      metroCode: ${sv.metroCode}\n      typeCode: PA-VM\n      selfManaged: true\n      byol: true\n      packageCode: VM100\n      notifications:\n        - john@equinix.com\n        - marry@equinix.com\n        - fred@equinix.com\n      termLength: 12\n      accountNumber: ${sv.number}\n      version: 11.1.3\n      interfaceCount: 10\n      coreCount: 2\n      sshKey:\n        username: test\n        keyName: test-key\n      aclTemplateId: 0bff6e05-f0e7-44cd-804a-25b92b835f8b\n      clusterDetails:\n        clusterName: tf-panw-cluster\n        node0:\n          vendorConfiguration:\n            hostname: panw-node0\n            panoramaIpAddress: x.x.x.x\n            panoramaAuthKey: xxxxxxxxxxx\n          licenseToken: licenseToken\n        node1:\n          vendorConfiguration:\n            hostname: panw-node1\n            panoramaIpAddress: x.x.x.x\n            panoramaAuthKey: xxxxxxxxxxx\n          licenseToken: licenseToken\nvariables:\n  # Create PA-VM firewall cluster with Panorama Server Integration\n  # with Panorama Server IP and Panorama Auth Key in vendor Configuration\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example Aviatrix Transit Edge\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\nimport * as std from \"@pulumi/std\";\n\nconst config = new pulumi.Config();\nconst filepath = config.get(\"filepath\") || \"cloudInitFileFolder/TF-AVX-cloud-init-file.txt\";\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst aviatrixCloudinitFile = new equinix.networkedge.NetworkFile(\"aviatrixCloudinitFile\", {\n    fileName: \"TF-AVX-cloud-init-file.txt\",\n    content: std.fileOutput({\n        input: filepath,\n    }).apply(invoke =\u003e invoke.result),\n    metroCode: sv.apply(sv =\u003e sv.metroCode).apply((x) =\u003e equinix.index.Metro[x]),\n    deviceTypeCode: \"AVIATRIX_TRANSIT_EDGE\",\n    processType: equinix.networkedge.FileType.CloudInit,\n    selfManaged: true,\n    byol: true,\n});\nconst aviatrixTransitEdgeSingle = new equinix.networkedge.Device(\"aviatrix-transit-edge-single\", {\n    name: \"tf-aviatrix\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"AVIATRIX_TRANSIT_EDGE\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"STD\",\n    notifications: [\"john@equinix.com\"],\n    termLength: 12,\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"7.2.a\",\n    coreCount: 2,\n    cloudInitFileId: aviatrixCloudinitFile.uuid,\n    aclTemplateId: \"c06150ea-b604-4ad1-832a-d63936e9b938\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\nimport pulumi_std as std\n\nconfig = pulumi.Config()\nfilepath = config.get(\"filepath\")\nif filepath is None:\n    filepath = \"cloudInitFileFolder/TF-AVX-cloud-init-file.txt\"\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\naviatrix_cloudinit_file = equinix.networkedge.NetworkFile(\"aviatrixCloudinitFile\",\n    file_name=\"TF-AVX-cloud-init-file.txt\",\n    content=std.file_output(input=filepath).apply(lambda invoke: invoke.result),\n    metro_code=sv.metro_code.apply(lambda x: equinix.Metro(x)),\n    device_type_code=\"AVIATRIX_TRANSIT_EDGE\",\n    process_type=equinix.networkedge.FileType.CLOUD_INIT,\n    self_managed=True,\n    byol=True)\naviatrix_transit_edge_single = equinix.networkedge.Device(\"aviatrix-transit-edge-single\",\n    name=\"tf-aviatrix\",\n    metro_code=sv.metro_code,\n    type_code=\"AVIATRIX_TRANSIT_EDGE\",\n    self_managed=True,\n    byol=True,\n    package_code=\"STD\",\n    notifications=[\"john@equinix.com\"],\n    term_length=12,\n    account_number=sv.number,\n    version=\"7.2.a\",\n    core_count=2,\n    cloud_init_file_id=aviatrix_cloudinit_file.uuid,\n    acl_template_id=\"c06150ea-b604-4ad1-832a-d63936e9b938\")\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix\"\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tfilepath := \"cloudInitFileFolder/TF-AVX-cloud-init-file.txt\"\n\t\tif param := cfg.Get(\"filepath\"); param != \"\" {\n\t\t\tfilepath = param\n\t\t}\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\taviatrixCloudinitFile, err := networkedge.NewNetworkFile(ctx, \"aviatrixCloudinitFile\", \u0026networkedge.NetworkFileArgs{\n\t\t\tFileName: pulumi.String(\"TF-AVX-cloud-init-file.txt\"),\n\t\t\tContent: pulumi.String(std.FileOutput(ctx, std.FileOutputArgs{\n\t\t\t\tInput: pulumi.String(filepath),\n\t\t\t}, nil).ApplyT(func(invoke std.FileResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput).ApplyT(func(x *string) equinix.Metro { return equinix.Metro(*x) }).(equinix.MetroOutput),\n\t\t\tDeviceTypeCode: pulumi.String(\"AVIATRIX_TRANSIT_EDGE\"),\n\t\t\tProcessType:    pulumi.String(networkedge.FileTypeCloudInit),\n\t\t\tSelfManaged:    pulumi.Bool(true),\n\t\t\tByol:           pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkedge.NewDevice(ctx, \"aviatrix-transit-edge-single\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"tf-aviatrix\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:    pulumi.String(\"AVIATRIX_TRANSIT_EDGE\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol:        pulumi.Bool(true),\n\t\t\tPackageCode: pulumi.String(\"STD\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t},\n\t\t\tTermLength: pulumi.Int(12),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:         pulumi.String(\"7.2.a\"),\n\t\t\tCoreCount:       pulumi.Int(2),\n\t\t\tCloudInitFileId: aviatrixCloudinitFile.Uuid,\n\t\t\tAclTemplateId:   pulumi.String(\"c06150ea-b604-4ad1-832a-d63936e9b938\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var filepath = config.Get(\"filepath\") ?? \"cloudInitFileFolder/TF-AVX-cloud-init-file.txt\";\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var aviatrixCloudinitFile = new Equinix.NetworkEdge.NetworkFile(\"aviatrixCloudinitFile\", new()\n    {\n        FileName = \"TF-AVX-cloud-init-file.txt\",\n        Content = Std.File.Invoke(new()\n        {\n            Input = filepath,\n        }).Apply(invoke =\u003e invoke.Result),\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode).Apply(System.Enum.Parse\u003cEquinix.Metro\u003e),\n        DeviceTypeCode = \"AVIATRIX_TRANSIT_EDGE\",\n        ProcessType = Equinix.NetworkEdge.FileType.CloudInit,\n        SelfManaged = true,\n        Byol = true,\n    });\n\n    var aviatrixTransitEdgeSingle = new Equinix.NetworkEdge.Device(\"aviatrix-transit-edge-single\", new()\n    {\n        Name = \"tf-aviatrix\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"AVIATRIX_TRANSIT_EDGE\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"STD\",\n        Notifications = new[]\n        {\n            \"john@equinix.com\",\n        },\n        TermLength = 12,\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"7.2.a\",\n        CoreCount = 2,\n        CloudInitFileId = aviatrixCloudinitFile.Uuid,\n        AclTemplateId = \"c06150ea-b604-4ad1-832a-d63936e9b938\",\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.NetworkFile;\nimport com.pulumi.equinix.networkedge.NetworkFileArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var config = ctx.config();\n        final var filepath = config.get(\"filepath\").orElse(\"cloudInitFileFolder/TF-AVX-cloud-init-file.txt\");\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var aviatrixCloudinitFile = new NetworkFile(\"aviatrixCloudinitFile\", NetworkFileArgs.builder()\n            .fileName(\"TF-AVX-cloud-init-file.txt\")\n            .content(StdFunctions.file(FileArgs.builder()\n                .input(filepath)\n                .build()).applyValue(_invoke -\u003e _invoke.result()))\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .deviceTypeCode(\"AVIATRIX_TRANSIT_EDGE\")\n            .processType(\"CLOUD_INIT\")\n            .selfManaged(true)\n            .byol(true)\n            .build());\n\n        var aviatrixTransitEdgeSingle = new Device(\"aviatrixTransitEdgeSingle\", DeviceArgs.builder()\n            .name(\"tf-aviatrix\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"AVIATRIX_TRANSIT_EDGE\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"STD\")\n            .notifications(\"john@equinix.com\")\n            .termLength(12)\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"7.2.a\")\n            .coreCount(2)\n            .cloudInitFileId(aviatrixCloudinitFile.uuid())\n            .aclTemplateId(\"c06150ea-b604-4ad1-832a-d63936e9b938\")\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  filepath:\n    type: string\n    default: cloudInitFileFolder/TF-AVX-cloud-init-file.txt\nresources:\n  aviatrixCloudinitFile:\n    type: equinix:networkedge:NetworkFile\n    name: aviatrix_cloudinit_file\n    properties:\n      fileName: TF-AVX-cloud-init-file.txt\n      content:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: ${filepath}\n          return: result\n      metroCode: ${sv.metroCode}\n      deviceTypeCode: AVIATRIX_TRANSIT_EDGE\n      processType: CLOUD_INIT\n      selfManaged: true\n      byol: true\n  aviatrix-transit-edge-single:\n    type: equinix:networkedge:Device\n    properties:\n      name: tf-aviatrix\n      metroCode: ${sv.metroCode}\n      typeCode: AVIATRIX_TRANSIT_EDGE\n      selfManaged: true\n      byol: true\n      packageCode: STD\n      notifications:\n        - john@equinix.com\n      termLength: 12\n      accountNumber: ${sv.number}\n      version: 7.2.a\n      coreCount: 2\n      cloudInitFileId: ${aviatrixCloudinitFile.uuid}\n      aclTemplateId: c06150ea-b604-4ad1-832a-d63936e9b938\nvariables:\n  # Create self configured single Aviatrix Transit Edge device with cloud init file\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example aruba edgeconnect ha device\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst aRUBAEDGECONNECTAM = new equinix.networkedge.Device(\"ARUBA-EDGECONNECT-AM\", {\n    name: \"TF_Aruba_Edge_Connect\",\n    projectId: \"XXXXX\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"EDGECONNECT-SDWAN\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"EC-V\",\n    notifications: [\"test@eq.com\"],\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"9.4.2.3\",\n    coreCount: 2,\n    termLength: 1,\n    additionalBandwidth: 50,\n    interfaceCount: 32,\n    aclTemplateId: \"XXXXXXX\",\n    vendorConfiguration: {\n        accountKey: \"xxxxx\",\n        accountName: \"xxxx\",\n        applianceTag: \"tests\",\n        hostname: \"test\",\n    },\n    secondaryDevice: {\n        name: \"TF_CHECKPOINT\",\n        metroCode: sv.apply(sv =\u003e sv.metroCode),\n        accountNumber: sv.apply(sv =\u003e sv.number),\n        aclTemplateId: \"XXXXXXX\",\n        notifications: [\"test@eq.com\"],\n        vendorConfiguration: {\n            accountKey: \"xxxxx\",\n            accountName: \"xxxx\",\n            applianceTag: \"test\",\n            hostname: \"test\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\na_rubaedgeconnectam = equinix.networkedge.Device(\"ARUBA-EDGECONNECT-AM\",\n    name=\"TF_Aruba_Edge_Connect\",\n    project_id=\"XXXXX\",\n    metro_code=sv.metro_code,\n    type_code=\"EDGECONNECT-SDWAN\",\n    self_managed=True,\n    byol=True,\n    package_code=\"EC-V\",\n    notifications=[\"test@eq.com\"],\n    account_number=sv.number,\n    version=\"9.4.2.3\",\n    core_count=2,\n    term_length=1,\n    additional_bandwidth=50,\n    interface_count=32,\n    acl_template_id=\"XXXXXXX\",\n    vendor_configuration={\n        \"accountKey\": \"xxxxx\",\n        \"accountName\": \"xxxx\",\n        \"applianceTag\": \"tests\",\n        \"hostname\": \"test\",\n    },\n    secondary_device={\n        \"name\": \"TF_CHECKPOINT\",\n        \"metro_code\": sv.metro_code,\n        \"account_number\": sv.number,\n        \"acl_template_id\": \"XXXXXXX\",\n        \"notifications\": [\"test@eq.com\"],\n        \"vendor_configuration\": {\n            \"accountKey\": \"xxxxx\",\n            \"accountName\": \"xxxx\",\n            \"applianceTag\": \"test\",\n            \"hostname\": \"test\",\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"ARUBA-EDGECONNECT-AM\", \u0026networkedge.DeviceArgs{\n\t\t\tName:      pulumi.String(\"TF_Aruba_Edge_Connect\"),\n\t\t\tProjectId: pulumi.String(\"XXXXX\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:    pulumi.String(\"EDGECONNECT-SDWAN\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol:        pulumi.Bool(true),\n\t\t\tPackageCode: pulumi.String(\"EC-V\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t},\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:             pulumi.String(\"9.4.2.3\"),\n\t\t\tCoreCount:           pulumi.Int(2),\n\t\t\tTermLength:          pulumi.Int(1),\n\t\t\tAdditionalBandwidth: pulumi.Int(50),\n\t\t\tInterfaceCount:      pulumi.Int(32),\n\t\t\tAclTemplateId:       pulumi.String(\"XXXXXXX\"),\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"accountKey\":   pulumi.String(\"xxxxx\"),\n\t\t\t\t\"accountName\":  pulumi.String(\"xxxx\"),\n\t\t\t\t\"applianceTag\": pulumi.String(\"tests\"),\n\t\t\t\t\"hostname\":     pulumi.String(\"test\"),\n\t\t\t},\n\t\t\tSecondaryDevice: \u0026networkedge.DeviceSecondaryDeviceArgs{\n\t\t\t\tName: pulumi.String(\"TF_CHECKPOINT\"),\n\t\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tAccountNumber: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tAclTemplateId: pulumi.String(\"XXXXXXX\"),\n\t\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t\t},\n\t\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\t\"accountKey\":   pulumi.String(\"xxxxx\"),\n\t\t\t\t\t\"accountName\":  pulumi.String(\"xxxx\"),\n\t\t\t\t\t\"applianceTag\": pulumi.String(\"test\"),\n\t\t\t\t\t\"hostname\":     pulumi.String(\"test\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var aRUBAEDGECONNECTAM = new Equinix.NetworkEdge.Device(\"ARUBA-EDGECONNECT-AM\", new()\n    {\n        Name = \"TF_Aruba_Edge_Connect\",\n        ProjectId = \"XXXXX\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"EDGECONNECT-SDWAN\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"EC-V\",\n        Notifications = new[]\n        {\n            \"test@eq.com\",\n        },\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"9.4.2.3\",\n        CoreCount = 2,\n        TermLength = 1,\n        AdditionalBandwidth = 50,\n        InterfaceCount = 32,\n        AclTemplateId = \"XXXXXXX\",\n        VendorConfiguration = \n        {\n            { \"accountKey\", \"xxxxx\" },\n            { \"accountName\", \"xxxx\" },\n            { \"applianceTag\", \"tests\" },\n            { \"hostname\", \"test\" },\n        },\n        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs\n        {\n            Name = \"TF_CHECKPOINT\",\n            MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n            AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n            AclTemplateId = \"XXXXXXX\",\n            Notifications = new[]\n            {\n                \"test@eq.com\",\n            },\n            VendorConfiguration = \n            {\n                { \"accountKey\", \"xxxxx\" },\n                { \"accountName\", \"xxxx\" },\n                { \"applianceTag\", \"test\" },\n                { \"hostname\", \"test\" },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var aRUBAEDGECONNECTAM = new Device(\"aRUBAEDGECONNECTAM\", DeviceArgs.builder()\n            .name(\"TF_Aruba_Edge_Connect\")\n            .projectId(\"XXXXX\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"EDGECONNECT-SDWAN\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"EC-V\")\n            .notifications(\"test@eq.com\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"9.4.2.3\")\n            .coreCount(2)\n            .termLength(1)\n            .additionalBandwidth(50)\n            .interfaceCount(32)\n            .aclTemplateId(\"XXXXXXX\")\n            .vendorConfiguration(Map.ofEntries(\n                Map.entry(\"accountKey\", \"xxxxx\"),\n                Map.entry(\"accountName\", \"xxxx\"),\n                Map.entry(\"applianceTag\", \"tests\"),\n                Map.entry(\"hostname\", \"test\")\n            ))\n            .secondaryDevice(DeviceSecondaryDeviceArgs.builder()\n                .name(\"TF_CHECKPOINT\")\n                .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n                .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n                .aclTemplateId(\"XXXXXXX\")\n                .notifications(\"test@eq.com\")\n                .vendorConfiguration(Map.ofEntries(\n                    Map.entry(\"accountKey\", \"xxxxx\"),\n                    Map.entry(\"accountName\", \"xxxx\"),\n                    Map.entry(\"applianceTag\", \"test\"),\n                    Map.entry(\"hostname\", \"test\")\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ARUBA-EDGECONNECT-AM:\n    type: equinix:networkedge:Device\n    properties:\n      name: TF_Aruba_Edge_Connect\n      projectId: XXXXX\n      metroCode: ${sv.metroCode}\n      typeCode: EDGECONNECT-SDWAN\n      selfManaged: true\n      byol: true\n      packageCode: EC-V\n      notifications:\n        - test@eq.com\n      accountNumber: ${sv.number}\n      version: 9.4.2.3\n      coreCount: 2\n      termLength: 1\n      additionalBandwidth: 50\n      interfaceCount: 32\n      aclTemplateId: XXXXXXX\n      vendorConfiguration:\n        accountKey: xxxxx\n        accountName: xxxx\n        applianceTag: tests\n        hostname: test\n      secondaryDevice:\n        name: TF_CHECKPOINT\n        metroCode: ${sv.metroCode}\n        accountNumber: ${sv.number}\n        aclTemplateId: XXXXXXX\n        notifications:\n          - test@eq.com\n        vendorConfiguration:\n          accountKey: xxxxx\n          accountName: xxxx\n          applianceTag: test\n          hostname: test\nvariables:\n  # Create Aruba Edgeconnect SDWAN HA device\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example aruba edgeconnect ha device wth purchase order\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst aRUBAEDGECONNECTAM = new equinix.networkedge.Device(\"ARUBA-EDGECONNECT-AM\", {\n    name: \"TF_Aruba_Edge_Connect\",\n    projectId: \"XXXXX\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"EDGECONNECT-SDWAN\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"EC-V\",\n    notifications: [\"test@eq.com\"],\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"9.4.2.3\",\n    coreCount: 2,\n    termLength: 1,\n    additionalBandwidth: 50,\n    interfaceCount: 32,\n    aclTemplateId: \"XXXXXXX\",\n    purchaseOrderNumber: \"PO-Primary-Account-123\",\n    vendorConfiguration: {\n        accountKey: \"xxxxx\",\n        accountName: \"xxxx\",\n        applianceTag: \"tests\",\n        hostname: \"test\",\n    },\n    secondaryDevice: {\n        name: \"TF_CHECKPOINT\",\n        metroCode: sv.apply(sv =\u003e sv.metroCode),\n        accountNumber: sv.apply(sv =\u003e sv.number),\n        purchaseOrderNumber: \"PO-Secondary-Account-123\",\n        aclTemplateId: \"XXXXXXX\",\n        notifications: [\"test@eq.com\"],\n        vendorConfiguration: {\n            accountKey: \"xxxxx\",\n            accountName: \"xxxx\",\n            applianceTag: \"test\",\n            hostname: \"test\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\na_rubaedgeconnectam = equinix.networkedge.Device(\"ARUBA-EDGECONNECT-AM\",\n    name=\"TF_Aruba_Edge_Connect\",\n    project_id=\"XXXXX\",\n    metro_code=sv.metro_code,\n    type_code=\"EDGECONNECT-SDWAN\",\n    self_managed=True,\n    byol=True,\n    package_code=\"EC-V\",\n    notifications=[\"test@eq.com\"],\n    account_number=sv.number,\n    version=\"9.4.2.3\",\n    core_count=2,\n    term_length=1,\n    additional_bandwidth=50,\n    interface_count=32,\n    acl_template_id=\"XXXXXXX\",\n    purchase_order_number=\"PO-Primary-Account-123\",\n    vendor_configuration={\n        \"accountKey\": \"xxxxx\",\n        \"accountName\": \"xxxx\",\n        \"applianceTag\": \"tests\",\n        \"hostname\": \"test\",\n    },\n    secondary_device={\n        \"name\": \"TF_CHECKPOINT\",\n        \"metro_code\": sv.metro_code,\n        \"account_number\": sv.number,\n        \"purchase_order_number\": \"PO-Secondary-Account-123\",\n        \"acl_template_id\": \"XXXXXXX\",\n        \"notifications\": [\"test@eq.com\"],\n        \"vendor_configuration\": {\n            \"accountKey\": \"xxxxx\",\n            \"accountName\": \"xxxx\",\n            \"applianceTag\": \"test\",\n            \"hostname\": \"test\",\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"ARUBA-EDGECONNECT-AM\", \u0026networkedge.DeviceArgs{\n\t\t\tName:      pulumi.String(\"TF_Aruba_Edge_Connect\"),\n\t\t\tProjectId: pulumi.String(\"XXXXX\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:    pulumi.String(\"EDGECONNECT-SDWAN\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol:        pulumi.Bool(true),\n\t\t\tPackageCode: pulumi.String(\"EC-V\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t},\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:             pulumi.String(\"9.4.2.3\"),\n\t\t\tCoreCount:           pulumi.Int(2),\n\t\t\tTermLength:          pulumi.Int(1),\n\t\t\tAdditionalBandwidth: pulumi.Int(50),\n\t\t\tInterfaceCount:      pulumi.Int(32),\n\t\t\tAclTemplateId:       pulumi.String(\"XXXXXXX\"),\n\t\t\tPurchaseOrderNumber: pulumi.String(\"PO-Primary-Account-123\"),\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"accountKey\":   pulumi.String(\"xxxxx\"),\n\t\t\t\t\"accountName\":  pulumi.String(\"xxxx\"),\n\t\t\t\t\"applianceTag\": pulumi.String(\"tests\"),\n\t\t\t\t\"hostname\":     pulumi.String(\"test\"),\n\t\t\t},\n\t\t\tSecondaryDevice: \u0026networkedge.DeviceSecondaryDeviceArgs{\n\t\t\t\tName: pulumi.String(\"TF_CHECKPOINT\"),\n\t\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tAccountNumber: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tPurchaseOrderNumber: pulumi.String(\"PO-Secondary-Account-123\"),\n\t\t\t\tAclTemplateId:       pulumi.String(\"XXXXXXX\"),\n\t\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t\t},\n\t\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\t\"accountKey\":   pulumi.String(\"xxxxx\"),\n\t\t\t\t\t\"accountName\":  pulumi.String(\"xxxx\"),\n\t\t\t\t\t\"applianceTag\": pulumi.String(\"test\"),\n\t\t\t\t\t\"hostname\":     pulumi.String(\"test\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var aRUBAEDGECONNECTAM = new Equinix.NetworkEdge.Device(\"ARUBA-EDGECONNECT-AM\", new()\n    {\n        Name = \"TF_Aruba_Edge_Connect\",\n        ProjectId = \"XXXXX\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"EDGECONNECT-SDWAN\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"EC-V\",\n        Notifications = new[]\n        {\n            \"test@eq.com\",\n        },\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"9.4.2.3\",\n        CoreCount = 2,\n        TermLength = 1,\n        AdditionalBandwidth = 50,\n        InterfaceCount = 32,\n        AclTemplateId = \"XXXXXXX\",\n        PurchaseOrderNumber = \"PO-Primary-Account-123\",\n        VendorConfiguration = \n        {\n            { \"accountKey\", \"xxxxx\" },\n            { \"accountName\", \"xxxx\" },\n            { \"applianceTag\", \"tests\" },\n            { \"hostname\", \"test\" },\n        },\n        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs\n        {\n            Name = \"TF_CHECKPOINT\",\n            MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n            AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n            PurchaseOrderNumber = \"PO-Secondary-Account-123\",\n            AclTemplateId = \"XXXXXXX\",\n            Notifications = new[]\n            {\n                \"test@eq.com\",\n            },\n            VendorConfiguration = \n            {\n                { \"accountKey\", \"xxxxx\" },\n                { \"accountName\", \"xxxx\" },\n                { \"applianceTag\", \"test\" },\n                { \"hostname\", \"test\" },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var aRUBAEDGECONNECTAM = new Device(\"aRUBAEDGECONNECTAM\", DeviceArgs.builder()\n            .name(\"TF_Aruba_Edge_Connect\")\n            .projectId(\"XXXXX\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"EDGECONNECT-SDWAN\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"EC-V\")\n            .notifications(\"test@eq.com\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"9.4.2.3\")\n            .coreCount(2)\n            .termLength(1)\n            .additionalBandwidth(50)\n            .interfaceCount(32)\n            .aclTemplateId(\"XXXXXXX\")\n            .purchaseOrderNumber(\"PO-Primary-Account-123\")\n            .vendorConfiguration(Map.ofEntries(\n                Map.entry(\"accountKey\", \"xxxxx\"),\n                Map.entry(\"accountName\", \"xxxx\"),\n                Map.entry(\"applianceTag\", \"tests\"),\n                Map.entry(\"hostname\", \"test\")\n            ))\n            .secondaryDevice(DeviceSecondaryDeviceArgs.builder()\n                .name(\"TF_CHECKPOINT\")\n                .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n                .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n                .purchaseOrderNumber(\"PO-Secondary-Account-123\")\n                .aclTemplateId(\"XXXXXXX\")\n                .notifications(\"test@eq.com\")\n                .vendorConfiguration(Map.ofEntries(\n                    Map.entry(\"accountKey\", \"xxxxx\"),\n                    Map.entry(\"accountName\", \"xxxx\"),\n                    Map.entry(\"applianceTag\", \"test\"),\n                    Map.entry(\"hostname\", \"test\")\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ARUBA-EDGECONNECT-AM:\n    type: equinix:networkedge:Device\n    properties:\n      name: TF_Aruba_Edge_Connect\n      projectId: XXXXX\n      metroCode: ${sv.metroCode}\n      typeCode: EDGECONNECT-SDWAN\n      selfManaged: true\n      byol: true\n      packageCode: EC-V\n      notifications:\n        - test@eq.com\n      accountNumber: ${sv.number}\n      version: 9.4.2.3\n      coreCount: 2\n      termLength: 1\n      additionalBandwidth: 50\n      interfaceCount: 32\n      aclTemplateId: XXXXXXX\n      purchaseOrderNumber: PO-Primary-Account-123\n      vendorConfiguration:\n        accountKey: xxxxx\n        accountName: xxxx\n        applianceTag: tests\n        hostname: test\n      secondaryDevice:\n        name: TF_CHECKPOINT\n        metroCode: ${sv.metroCode}\n        accountNumber: ${sv.number}\n        purchaseOrderNumber: PO-Secondary-Account-123\n        aclTemplateId: XXXXXXX\n        notifications:\n          - test@eq.com\n        vendorConfiguration:\n          accountKey: xxxxx\n          accountName: xxxx\n          applianceTag: test\n          hostname: test\nvariables:\n  # Create Aruba Edgeconnect SDWAN HA device with 2different account numbers with purchase orders\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example c8000v byol without default password\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst c8000VByolWithtoutDefaultPassword = new equinix.networkedge.Device(\"c8000v-byol-withtout-default-password\", {\n    name: \"tf-c8000v-byol\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"C8000V\",\n    selfManaged: true,\n    byol: true,\n    generateDefaultPassword: false,\n    packageCode: \"network-essentials\",\n    notifications: [\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    termLength: 12,\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"17.11.01a\",\n    interfaceCount: 10,\n    coreCount: 2,\n    tier: 1,\n    sshKey: {\n        username: \"test\",\n        keyName: \"test-key\",\n    },\n    aclTemplateId: \"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\nc8000_v_byol_withtout_default_password = equinix.networkedge.Device(\"c8000v-byol-withtout-default-password\",\n    name=\"tf-c8000v-byol\",\n    metro_code=sv.metro_code,\n    type_code=\"C8000V\",\n    self_managed=True,\n    byol=True,\n    generate_default_password=False,\n    package_code=\"network-essentials\",\n    notifications=[\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    term_length=12,\n    account_number=sv.number,\n    version=\"17.11.01a\",\n    interface_count=10,\n    core_count=2,\n    tier=1,\n    ssh_key={\n        \"username\": \"test\",\n        \"key_name\": \"test-key\",\n    },\n    acl_template_id=\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\")\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"c8000v-byol-withtout-default-password\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"tf-c8000v-byol\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:                pulumi.String(\"C8000V\"),\n\t\t\tSelfManaged:             pulumi.Bool(true),\n\t\t\tByol:                    pulumi.Bool(true),\n\t\t\tGenerateDefaultPassword: pulumi.Bool(false),\n\t\t\tPackageCode:             pulumi.String(\"network-essentials\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\tpulumi.String(\"fred@equinix.com\"),\n\t\t\t},\n\t\t\tTermLength: pulumi.Int(12),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:        pulumi.String(\"17.11.01a\"),\n\t\t\tInterfaceCount: pulumi.Int(10),\n\t\t\tCoreCount:      pulumi.Int(2),\n\t\t\tTier:           pulumi.Int(1),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\t\tKeyName:  pulumi.String(\"test-key\"),\n\t\t\t},\n\t\t\tAclTemplateId: pulumi.String(\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var c8000VByolWithtoutDefaultPassword = new Equinix.NetworkEdge.Device(\"c8000v-byol-withtout-default-password\", new()\n    {\n        Name = \"tf-c8000v-byol\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"C8000V\",\n        SelfManaged = true,\n        Byol = true,\n        GenerateDefaultPassword = false,\n        PackageCode = \"network-essentials\",\n        Notifications = new[]\n        {\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n            \"fred@equinix.com\",\n        },\n        TermLength = 12,\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"17.11.01a\",\n        InterfaceCount = 10,\n        CoreCount = 2,\n        Tier = 1,\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"test\",\n            KeyName = \"test-key\",\n        },\n        AclTemplateId = \"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var c8000VByolWithtoutDefaultPassword = new Device(\"c8000VByolWithtoutDefaultPassword\", DeviceArgs.builder()\n            .name(\"tf-c8000v-byol\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"C8000V\")\n            .selfManaged(true)\n            .byol(true)\n            .generateDefaultPassword(false)\n            .packageCode(\"network-essentials\")\n            .notifications(            \n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n                \"fred@equinix.com\")\n            .termLength(12)\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"17.11.01a\")\n            .interfaceCount(10)\n            .coreCount(2)\n            .tier(1)\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"test\")\n                .keyName(\"test-key\")\n                .build())\n            .aclTemplateId(\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  c8000v-byol-withtout-default-password:\n    type: equinix:networkedge:Device\n    properties:\n      name: tf-c8000v-byol\n      metroCode: ${sv.metroCode}\n      typeCode: C8000V\n      selfManaged: true\n      byol: true\n      generateDefaultPassword: false\n      packageCode: network-essentials\n      notifications:\n        - john@equinix.com\n        - marry@equinix.com\n        - fred@equinix.com\n      termLength: 12\n      accountNumber: ${sv.number}\n      version: 17.11.01a\n      interfaceCount: 10\n      coreCount: 2\n      tier: 1\n      sshKey:\n        username: test\n        keyName: test-key\n      aclTemplateId: 0bff6e05-f0e7-44cd-804a-25b92b835f8b\nvariables:\n  # Create C8000V BYOL device with bandwidth tier information\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example c8000v byol with bandwidth throughput\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst c8000VByolThroughput = new equinix.networkedge.Device(\"c8000v-byol-throughput\", {\n    name: \"tf-c8000v-byol\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"C8000V\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"network-essentials\",\n    notifications: [\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    termLength: 12,\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"17.11.01a\",\n    interfaceCount: 10,\n    coreCount: 2,\n    throughput: 100,\n    throughputUnit: equinix.networkedge.ThroughputUnit.Mbps,\n    sshKey: {\n        username: \"test\",\n        keyName: \"test-key\",\n    },\n    aclTemplateId: \"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\nc8000_v_byol_throughput = equinix.networkedge.Device(\"c8000v-byol-throughput\",\n    name=\"tf-c8000v-byol\",\n    metro_code=sv.metro_code,\n    type_code=\"C8000V\",\n    self_managed=True,\n    byol=True,\n    package_code=\"network-essentials\",\n    notifications=[\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    term_length=12,\n    account_number=sv.number,\n    version=\"17.11.01a\",\n    interface_count=10,\n    core_count=2,\n    throughput=100,\n    throughput_unit=equinix.networkedge.ThroughputUnit.MBPS,\n    ssh_key={\n        \"username\": \"test\",\n        \"key_name\": \"test-key\",\n    },\n    acl_template_id=\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\")\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"c8000v-byol-throughput\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"tf-c8000v-byol\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:    pulumi.String(\"C8000V\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol:        pulumi.Bool(true),\n\t\t\tPackageCode: pulumi.String(\"network-essentials\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\tpulumi.String(\"fred@equinix.com\"),\n\t\t\t},\n\t\t\tTermLength: pulumi.Int(12),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:        pulumi.String(\"17.11.01a\"),\n\t\t\tInterfaceCount: pulumi.Int(10),\n\t\t\tCoreCount:      pulumi.Int(2),\n\t\t\tThroughput:     pulumi.Int(100),\n\t\t\tThroughputUnit: pulumi.String(networkedge.ThroughputUnitMbps),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\t\tKeyName:  pulumi.String(\"test-key\"),\n\t\t\t},\n\t\t\tAclTemplateId: pulumi.String(\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var c8000VByolThroughput = new Equinix.NetworkEdge.Device(\"c8000v-byol-throughput\", new()\n    {\n        Name = \"tf-c8000v-byol\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"C8000V\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"network-essentials\",\n        Notifications = new[]\n        {\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n            \"fred@equinix.com\",\n        },\n        TermLength = 12,\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"17.11.01a\",\n        InterfaceCount = 10,\n        CoreCount = 2,\n        Throughput = 100,\n        ThroughputUnit = Equinix.NetworkEdge.ThroughputUnit.Mbps,\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"test\",\n            KeyName = \"test-key\",\n        },\n        AclTemplateId = \"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var c8000VByolThroughput = new Device(\"c8000VByolThroughput\", DeviceArgs.builder()\n            .name(\"tf-c8000v-byol\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"C8000V\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"network-essentials\")\n            .notifications(            \n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n                \"fred@equinix.com\")\n            .termLength(12)\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"17.11.01a\")\n            .interfaceCount(10)\n            .coreCount(2)\n            .throughput(100)\n            .throughputUnit(\"Mbps\")\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"test\")\n                .keyName(\"test-key\")\n                .build())\n            .aclTemplateId(\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  c8000v-byol-throughput:\n    type: equinix:networkedge:Device\n    properties:\n      name: tf-c8000v-byol\n      metroCode: ${sv.metroCode}\n      typeCode: C8000V\n      selfManaged: true\n      byol: true\n      packageCode: network-essentials\n      notifications:\n        - john@equinix.com\n        - marry@equinix.com\n        - fred@equinix.com\n      termLength: 12\n      accountNumber: ${sv.number}\n      version: 17.11.01a\n      interfaceCount: 10\n      coreCount: 2\n      throughput: '100'\n      throughputUnit: Mbps\n      sshKey:\n        username: test\n        keyName: test-key\n      aclTemplateId: 0bff6e05-f0e7-44cd-804a-25b92b835f8b\nvariables:\n  # Create C8000V BYOL device with numeric bandwidth throughput information\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example c8000v byol with bandwidth tier\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst c8000VByolTier = new equinix.networkedge.Device(\"c8000v-byol-tier\", {\n    name: \"tf-c8000v-byol\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"C8000V\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"network-essentials\",\n    notifications: [\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    termLength: 12,\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"17.11.01a\",\n    interfaceCount: 10,\n    coreCount: 2,\n    tier: 1,\n    sshKey: {\n        username: \"test\",\n        keyName: \"test-key\",\n    },\n    aclTemplateId: \"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\nc8000_v_byol_tier = equinix.networkedge.Device(\"c8000v-byol-tier\",\n    name=\"tf-c8000v-byol\",\n    metro_code=sv.metro_code,\n    type_code=\"C8000V\",\n    self_managed=True,\n    byol=True,\n    package_code=\"network-essentials\",\n    notifications=[\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    term_length=12,\n    account_number=sv.number,\n    version=\"17.11.01a\",\n    interface_count=10,\n    core_count=2,\n    tier=1,\n    ssh_key={\n        \"username\": \"test\",\n        \"key_name\": \"test-key\",\n    },\n    acl_template_id=\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\")\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"c8000v-byol-tier\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"tf-c8000v-byol\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:    pulumi.String(\"C8000V\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol:        pulumi.Bool(true),\n\t\t\tPackageCode: pulumi.String(\"network-essentials\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\tpulumi.String(\"fred@equinix.com\"),\n\t\t\t},\n\t\t\tTermLength: pulumi.Int(12),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:        pulumi.String(\"17.11.01a\"),\n\t\t\tInterfaceCount: pulumi.Int(10),\n\t\t\tCoreCount:      pulumi.Int(2),\n\t\t\tTier:           pulumi.Int(1),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\t\tKeyName:  pulumi.String(\"test-key\"),\n\t\t\t},\n\t\t\tAclTemplateId: pulumi.String(\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var c8000VByolTier = new Equinix.NetworkEdge.Device(\"c8000v-byol-tier\", new()\n    {\n        Name = \"tf-c8000v-byol\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"C8000V\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"network-essentials\",\n        Notifications = new[]\n        {\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n            \"fred@equinix.com\",\n        },\n        TermLength = 12,\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"17.11.01a\",\n        InterfaceCount = 10,\n        CoreCount = 2,\n        Tier = 1,\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"test\",\n            KeyName = \"test-key\",\n        },\n        AclTemplateId = \"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var c8000VByolTier = new Device(\"c8000VByolTier\", DeviceArgs.builder()\n            .name(\"tf-c8000v-byol\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"C8000V\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"network-essentials\")\n            .notifications(            \n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n                \"fred@equinix.com\")\n            .termLength(12)\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"17.11.01a\")\n            .interfaceCount(10)\n            .coreCount(2)\n            .tier(1)\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"test\")\n                .keyName(\"test-key\")\n                .build())\n            .aclTemplateId(\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  c8000v-byol-tier:\n    type: equinix:networkedge:Device\n    properties:\n      name: tf-c8000v-byol\n      metroCode: ${sv.metroCode}\n      typeCode: C8000V\n      selfManaged: true\n      byol: true\n      packageCode: network-essentials\n      notifications:\n        - john@equinix.com\n        - marry@equinix.com\n        - fred@equinix.com\n      termLength: 12\n      accountNumber: ${sv.number}\n      version: 17.11.01a\n      interfaceCount: 10\n      coreCount: 2\n      tier: 1\n      sshKey:\n        username: test\n        keyName: test-key\n      aclTemplateId: 0bff6e05-f0e7-44cd-804a-25b92b835f8b\nvariables:\n  # Create C8000V BYOL device with bandwidth tier information\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example c8000v ha with cloud init rest api support\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst c8000VByol = new equinix.networkedge.Device(\"c8000v-byol\", {\n    name: \"tf-c8000v-byol\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"C8000V\",\n    selfManaged: true,\n    byol: true,\n    generateDefaultPassword: true,\n    packageCode: \"network-essentials\",\n    notifications: [\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    termLength: 12,\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"17.11.01a\",\n    interfaceCount: 10,\n    coreCount: 2,\n    tier: 1,\n    sshKey: {\n        username: \"test\",\n        keyName: \"test-key\",\n    },\n    vendorConfiguration: {\n        restApiSupportRequirement: \"true\",\n    },\n    aclTemplateId: \"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n    secondaryDevice: {\n        name: \"tf-c8000v-byol-secondary\",\n        metroCode: sv.apply(sv =\u003e sv.metroCode),\n        hostname: \"csr1000v-s\",\n        notifications: [\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n        ],\n        accountNumber: sv.apply(sv =\u003e sv.number),\n        vendorConfiguration: {\n            restApiSupportRequirement: \"true\",\n        },\n        aclTemplateId: \"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\nc8000_v_byol = equinix.networkedge.Device(\"c8000v-byol\",\n    name=\"tf-c8000v-byol\",\n    metro_code=sv.metro_code,\n    type_code=\"C8000V\",\n    self_managed=True,\n    byol=True,\n    generate_default_password=True,\n    package_code=\"network-essentials\",\n    notifications=[\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    term_length=12,\n    account_number=sv.number,\n    version=\"17.11.01a\",\n    interface_count=10,\n    core_count=2,\n    tier=1,\n    ssh_key={\n        \"username\": \"test\",\n        \"key_name\": \"test-key\",\n    },\n    vendor_configuration={\n        \"restApiSupportRequirement\": \"true\",\n    },\n    acl_template_id=\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n    secondary_device={\n        \"name\": \"tf-c8000v-byol-secondary\",\n        \"metro_code\": sv.metro_code,\n        \"hostname\": \"csr1000v-s\",\n        \"notifications\": [\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n        ],\n        \"account_number\": sv.number,\n        \"vendor_configuration\": {\n            \"restApiSupportRequirement\": \"true\",\n        },\n        \"acl_template_id\": \"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"c8000v-byol\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"tf-c8000v-byol\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:                pulumi.String(\"C8000V\"),\n\t\t\tSelfManaged:             pulumi.Bool(true),\n\t\t\tByol:                    pulumi.Bool(true),\n\t\t\tGenerateDefaultPassword: pulumi.Bool(true),\n\t\t\tPackageCode:             pulumi.String(\"network-essentials\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\tpulumi.String(\"fred@equinix.com\"),\n\t\t\t},\n\t\t\tTermLength: pulumi.Int(12),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:        pulumi.String(\"17.11.01a\"),\n\t\t\tInterfaceCount: pulumi.Int(10),\n\t\t\tCoreCount:      pulumi.Int(2),\n\t\t\tTier:           pulumi.Int(1),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\t\tKeyName:  pulumi.String(\"test-key\"),\n\t\t\t},\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"restApiSupportRequirement\": pulumi.String(\"true\"),\n\t\t\t},\n\t\t\tAclTemplateId: pulumi.String(\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\"),\n\t\t\tSecondaryDevice: \u0026networkedge.DeviceSecondaryDeviceArgs{\n\t\t\t\tName: pulumi.String(\"tf-c8000v-byol-secondary\"),\n\t\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHostname: pulumi.String(\"csr1000v-s\"),\n\t\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\t},\n\t\t\t\tAccountNumber: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\t\"restApiSupportRequirement\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t\tAclTemplateId: pulumi.String(\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var c8000VByol = new Equinix.NetworkEdge.Device(\"c8000v-byol\", new()\n    {\n        Name = \"tf-c8000v-byol\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"C8000V\",\n        SelfManaged = true,\n        Byol = true,\n        GenerateDefaultPassword = true,\n        PackageCode = \"network-essentials\",\n        Notifications = new[]\n        {\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n            \"fred@equinix.com\",\n        },\n        TermLength = 12,\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"17.11.01a\",\n        InterfaceCount = 10,\n        CoreCount = 2,\n        Tier = 1,\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"test\",\n            KeyName = \"test-key\",\n        },\n        VendorConfiguration = \n        {\n            { \"restApiSupportRequirement\", \"true\" },\n        },\n        AclTemplateId = \"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs\n        {\n            Name = \"tf-c8000v-byol-secondary\",\n            MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n            Hostname = \"csr1000v-s\",\n            Notifications = new[]\n            {\n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n            },\n            AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n            VendorConfiguration = \n            {\n                { \"restApiSupportRequirement\", \"true\" },\n            },\n            AclTemplateId = \"0bff6e05-f0e7-44cd-804a-25b92b835f8b\",\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var c8000VByol = new Device(\"c8000VByol\", DeviceArgs.builder()\n            .name(\"tf-c8000v-byol\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"C8000V\")\n            .selfManaged(true)\n            .byol(true)\n            .generateDefaultPassword(true)\n            .packageCode(\"network-essentials\")\n            .notifications(            \n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n                \"fred@equinix.com\")\n            .termLength(12)\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"17.11.01a\")\n            .interfaceCount(10)\n            .coreCount(2)\n            .tier(1)\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"test\")\n                .keyName(\"test-key\")\n                .build())\n            .vendorConfiguration(Map.of(\"restApiSupportRequirement\", \"true\"))\n            .aclTemplateId(\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\")\n            .secondaryDevice(DeviceSecondaryDeviceArgs.builder()\n                .name(\"tf-c8000v-byol-secondary\")\n                .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n                .hostname(\"csr1000v-s\")\n                .notifications(                \n                    \"john@equinix.com\",\n                    \"marry@equinix.com\")\n                .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n                .vendorConfiguration(Map.of(\"restApiSupportRequirement\", \"true\"))\n                .aclTemplateId(\"0bff6e05-f0e7-44cd-804a-25b92b835f8b\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  c8000v-byol:\n    type: equinix:networkedge:Device\n    properties:\n      name: tf-c8000v-byol\n      metroCode: ${sv.metroCode}\n      typeCode: C8000V\n      selfManaged: true\n      byol: true\n      generateDefaultPassword: true\n      packageCode: network-essentials\n      notifications:\n        - john@equinix.com\n        - marry@equinix.com\n        - fred@equinix.com\n      termLength: 12\n      accountNumber: ${sv.number}\n      version: 17.11.01a\n      interfaceCount: 10\n      coreCount: 2\n      tier: 1\n      sshKey:\n        username: test\n        keyName: test-key\n      vendorConfiguration:\n        restApiSupportRequirement: 'true'\n      aclTemplateId: 0bff6e05-f0e7-44cd-804a-25b92b835f8b\n      secondaryDevice:\n        name: tf-c8000v-byol-secondary\n        metroCode: ${sv.metroCode}\n        hostname: csr1000v-s\n        notifications:\n          - john@equinix.com\n          - marry@equinix.com\n        accountNumber: ${sv.number}\n        vendorConfiguration:\n          restApiSupportRequirement: 'true'\n        aclTemplateId: 0bff6e05-f0e7-44cd-804a-25b92b835f8b\nvariables:\n  # Create C8000V HA - BYOL device with cloud init rest api support\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example c8000v znpd ha dhcp\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n    name: \"account-name\",\n});\nconst c8000VByol = new equinix.networkedge.Device(\"c8000v-byol\", {\n    name: \"tf-c8000v-byol\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"C8000V\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"network-essentials\",\n    connectivity: \"PRIVATE\",\n    notifications: [\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    termLength: 12,\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"17.11.01a\",\n    interfaceCount: 10,\n    coreCount: 2,\n    tier: 1,\n    sshKey: {\n        username: \"test\",\n        keyName: \"test-key\",\n    },\n    vendorConfiguration: {\n        restApiSupportRequirement: \"true\",\n        ipAddressType: \"DHCP\",\n        managementInterfaceId: \"6\",\n    },\n    secondaryDevice: {\n        name: \"tf-c8000v-byol-secondary\",\n        metroCode: sv.apply(sv =\u003e sv.metroCode),\n        hostname: \"c8000v-s\",\n        notifications: [\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n        ],\n        accountNumber: sv.apply(sv =\u003e sv.number),\n        vendorConfiguration: {\n            restApiSupportRequirement: \"true\",\n            ipAddressType: \"DHCP\",\n            managementInterfaceId: \"6\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\",\n    name=\"account-name\")\nc8000_v_byol = equinix.networkedge.Device(\"c8000v-byol\",\n    name=\"tf-c8000v-byol\",\n    metro_code=sv.metro_code,\n    type_code=\"C8000V\",\n    self_managed=True,\n    byol=True,\n    package_code=\"network-essentials\",\n    connectivity=\"PRIVATE\",\n    notifications=[\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    term_length=12,\n    account_number=sv.number,\n    version=\"17.11.01a\",\n    interface_count=10,\n    core_count=2,\n    tier=1,\n    ssh_key={\n        \"username\": \"test\",\n        \"key_name\": \"test-key\",\n    },\n    vendor_configuration={\n        \"restApiSupportRequirement\": \"true\",\n        \"ipAddressType\": \"DHCP\",\n        \"managementInterfaceId\": \"6\",\n    },\n    secondary_device={\n        \"name\": \"tf-c8000v-byol-secondary\",\n        \"metro_code\": sv.metro_code,\n        \"hostname\": \"c8000v-s\",\n        \"notifications\": [\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n        ],\n        \"account_number\": sv.number,\n        \"vendor_configuration\": {\n            \"restApiSupportRequirement\": \"true\",\n            \"ipAddressType\": \"DHCP\",\n            \"managementInterfaceId\": \"6\",\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t\tName:      pulumi.String(\"account-name\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"c8000v-byol\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"tf-c8000v-byol\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:     pulumi.String(\"C8000V\"),\n\t\t\tSelfManaged:  pulumi.Bool(true),\n\t\t\tByol:         pulumi.Bool(true),\n\t\t\tPackageCode:  pulumi.String(\"network-essentials\"),\n\t\t\tConnectivity: pulumi.String(\"PRIVATE\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\tpulumi.String(\"fred@equinix.com\"),\n\t\t\t},\n\t\t\tTermLength: pulumi.Int(12),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:        pulumi.String(\"17.11.01a\"),\n\t\t\tInterfaceCount: pulumi.Int(10),\n\t\t\tCoreCount:      pulumi.Int(2),\n\t\t\tTier:           pulumi.Int(1),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\t\tKeyName:  pulumi.String(\"test-key\"),\n\t\t\t},\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"restApiSupportRequirement\": pulumi.String(\"true\"),\n\t\t\t\t\"ipAddressType\":             pulumi.String(\"DHCP\"),\n\t\t\t\t\"managementInterfaceId\":     pulumi.String(\"6\"),\n\t\t\t},\n\t\t\tSecondaryDevice: \u0026networkedge.DeviceSecondaryDeviceArgs{\n\t\t\t\tName: pulumi.String(\"tf-c8000v-byol-secondary\"),\n\t\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHostname: pulumi.String(\"c8000v-s\"),\n\t\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\t},\n\t\t\t\tAccountNumber: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\t\"restApiSupportRequirement\": pulumi.String(\"true\"),\n\t\t\t\t\t\"ipAddressType\":             pulumi.String(\"DHCP\"),\n\t\t\t\t\t\"managementInterfaceId\":     pulumi.String(\"6\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n        Name = \"account-name\",\n    });\n\n    var c8000VByol = new Equinix.NetworkEdge.Device(\"c8000v-byol\", new()\n    {\n        Name = \"tf-c8000v-byol\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"C8000V\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"network-essentials\",\n        Connectivity = \"PRIVATE\",\n        Notifications = new[]\n        {\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n            \"fred@equinix.com\",\n        },\n        TermLength = 12,\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"17.11.01a\",\n        InterfaceCount = 10,\n        CoreCount = 2,\n        Tier = 1,\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"test\",\n            KeyName = \"test-key\",\n        },\n        VendorConfiguration = \n        {\n            { \"restApiSupportRequirement\", \"true\" },\n            { \"ipAddressType\", \"DHCP\" },\n            { \"managementInterfaceId\", \"6\" },\n        },\n        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs\n        {\n            Name = \"tf-c8000v-byol-secondary\",\n            MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n            Hostname = \"c8000v-s\",\n            Notifications = new[]\n            {\n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n            },\n            AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n            VendorConfiguration = \n            {\n                { \"restApiSupportRequirement\", \"true\" },\n                { \"ipAddressType\", \"DHCP\" },\n                { \"managementInterfaceId\", \"6\" },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .name(\"account-name\")\n            .build());\n\n        var c8000VByol = new Device(\"c8000VByol\", DeviceArgs.builder()\n            .name(\"tf-c8000v-byol\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"C8000V\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"network-essentials\")\n            .connectivity(\"PRIVATE\")\n            .notifications(            \n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n                \"fred@equinix.com\")\n            .termLength(12)\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"17.11.01a\")\n            .interfaceCount(10)\n            .coreCount(2)\n            .tier(1)\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"test\")\n                .keyName(\"test-key\")\n                .build())\n            .vendorConfiguration(Map.ofEntries(\n                Map.entry(\"restApiSupportRequirement\", \"true\"),\n                Map.entry(\"ipAddressType\", \"DHCP\"),\n                Map.entry(\"managementInterfaceId\", \"6\")\n            ))\n            .secondaryDevice(DeviceSecondaryDeviceArgs.builder()\n                .name(\"tf-c8000v-byol-secondary\")\n                .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n                .hostname(\"c8000v-s\")\n                .notifications(                \n                    \"john@equinix.com\",\n                    \"marry@equinix.com\")\n                .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n                .vendorConfiguration(Map.ofEntries(\n                    Map.entry(\"restApiSupportRequirement\", \"true\"),\n                    Map.entry(\"ipAddressType\", \"DHCP\"),\n                    Map.entry(\"managementInterfaceId\", \"6\")\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  c8000v-byol:\n    type: equinix:networkedge:Device\n    properties:\n      name: tf-c8000v-byol\n      metroCode: ${sv.metroCode}\n      typeCode: C8000V\n      selfManaged: true\n      byol: true\n      packageCode: network-essentials\n      connectivity: PRIVATE\n      notifications:\n        - john@equinix.com\n        - marry@equinix.com\n        - fred@equinix.com\n      termLength: 12\n      accountNumber: ${sv.number}\n      version: 17.11.01a\n      interfaceCount: 10\n      coreCount: 2\n      tier: 1\n      sshKey:\n        username: test\n        keyName: test-key\n      vendorConfiguration:\n        restApiSupportRequirement: 'true'\n        ipAddressType: DHCP\n        managementInterfaceId: '6'\n      secondaryDevice:\n        name: tf-c8000v-byol-secondary\n        metroCode: ${sv.metroCode}\n        hostname: c8000v-s\n        notifications:\n          - john@equinix.com\n          - marry@equinix.com\n        accountNumber: ${sv.number}\n        vendorConfiguration:\n          restApiSupportRequirement: 'true'\n          ipAddressType: DHCP\n          managementInterfaceId: '6'\nvariables:\n  # Create C8000V HA - BYOL device with connectivity PRIVATE with DHCP IP address type\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n        name: account-name\n```\n{{% /example %}}\n\n{{% example %}}\n### example c8000v znpd ha no ip address\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n    name: \"account-name\",\n});\nconst c8000VByol = new equinix.networkedge.Device(\"c8000v-byol\", {\n    name: \"tf-c8000v-byol\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"C8000V\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"network-essentials\",\n    connectivity: \"PRIVATE\",\n    notifications: [\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    termLength: 12,\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"17.11.01a\",\n    interfaceCount: 10,\n    coreCount: 2,\n    tier: 1,\n    sshKey: {\n        username: \"test\",\n        keyName: \"test-key\",\n    },\n    vendorConfiguration: {\n        restApiSupportRequirement: \"true\",\n        ipAddressType: \"NO_IP_ADDRESS\",\n    },\n    secondaryDevice: {\n        name: \"tf-c8000v-byol-secondary\",\n        metroCode: sv.apply(sv =\u003e sv.metroCode),\n        hostname: \"csr8000v-s\",\n        notifications: [\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n        ],\n        accountNumber: sv.apply(sv =\u003e sv.number),\n        vendorConfiguration: {\n            restApiSupportRequirement: \"true\",\n            ipAddressType: \"NO_IP_ADDRESS\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\",\n    name=\"account-name\")\nc8000_v_byol = equinix.networkedge.Device(\"c8000v-byol\",\n    name=\"tf-c8000v-byol\",\n    metro_code=sv.metro_code,\n    type_code=\"C8000V\",\n    self_managed=True,\n    byol=True,\n    package_code=\"network-essentials\",\n    connectivity=\"PRIVATE\",\n    notifications=[\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    term_length=12,\n    account_number=sv.number,\n    version=\"17.11.01a\",\n    interface_count=10,\n    core_count=2,\n    tier=1,\n    ssh_key={\n        \"username\": \"test\",\n        \"key_name\": \"test-key\",\n    },\n    vendor_configuration={\n        \"restApiSupportRequirement\": \"true\",\n        \"ipAddressType\": \"NO_IP_ADDRESS\",\n    },\n    secondary_device={\n        \"name\": \"tf-c8000v-byol-secondary\",\n        \"metro_code\": sv.metro_code,\n        \"hostname\": \"csr8000v-s\",\n        \"notifications\": [\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n        ],\n        \"account_number\": sv.number,\n        \"vendor_configuration\": {\n            \"restApiSupportRequirement\": \"true\",\n            \"ipAddressType\": \"NO_IP_ADDRESS\",\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t\tName:      pulumi.String(\"account-name\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"c8000v-byol\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"tf-c8000v-byol\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:     pulumi.String(\"C8000V\"),\n\t\t\tSelfManaged:  pulumi.Bool(true),\n\t\t\tByol:         pulumi.Bool(true),\n\t\t\tPackageCode:  pulumi.String(\"network-essentials\"),\n\t\t\tConnectivity: pulumi.String(\"PRIVATE\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\tpulumi.String(\"fred@equinix.com\"),\n\t\t\t},\n\t\t\tTermLength: pulumi.Int(12),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:        pulumi.String(\"17.11.01a\"),\n\t\t\tInterfaceCount: pulumi.Int(10),\n\t\t\tCoreCount:      pulumi.Int(2),\n\t\t\tTier:           pulumi.Int(1),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\t\tKeyName:  pulumi.String(\"test-key\"),\n\t\t\t},\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"restApiSupportRequirement\": pulumi.String(\"true\"),\n\t\t\t\t\"ipAddressType\":             pulumi.String(\"NO_IP_ADDRESS\"),\n\t\t\t},\n\t\t\tSecondaryDevice: \u0026networkedge.DeviceSecondaryDeviceArgs{\n\t\t\t\tName: pulumi.String(\"tf-c8000v-byol-secondary\"),\n\t\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHostname: pulumi.String(\"csr8000v-s\"),\n\t\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\t},\n\t\t\t\tAccountNumber: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\t\"restApiSupportRequirement\": pulumi.String(\"true\"),\n\t\t\t\t\t\"ipAddressType\":             pulumi.String(\"NO_IP_ADDRESS\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n        Name = \"account-name\",\n    });\n\n    var c8000VByol = new Equinix.NetworkEdge.Device(\"c8000v-byol\", new()\n    {\n        Name = \"tf-c8000v-byol\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"C8000V\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"network-essentials\",\n        Connectivity = \"PRIVATE\",\n        Notifications = new[]\n        {\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n            \"fred@equinix.com\",\n        },\n        TermLength = 12,\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"17.11.01a\",\n        InterfaceCount = 10,\n        CoreCount = 2,\n        Tier = 1,\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"test\",\n            KeyName = \"test-key\",\n        },\n        VendorConfiguration = \n        {\n            { \"restApiSupportRequirement\", \"true\" },\n            { \"ipAddressType\", \"NO_IP_ADDRESS\" },\n        },\n        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs\n        {\n            Name = \"tf-c8000v-byol-secondary\",\n            MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n            Hostname = \"csr8000v-s\",\n            Notifications = new[]\n            {\n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n            },\n            AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n            VendorConfiguration = \n            {\n                { \"restApiSupportRequirement\", \"true\" },\n                { \"ipAddressType\", \"NO_IP_ADDRESS\" },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .name(\"account-name\")\n            .build());\n\n        var c8000VByol = new Device(\"c8000VByol\", DeviceArgs.builder()\n            .name(\"tf-c8000v-byol\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"C8000V\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"network-essentials\")\n            .connectivity(\"PRIVATE\")\n            .notifications(            \n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n                \"fred@equinix.com\")\n            .termLength(12)\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"17.11.01a\")\n            .interfaceCount(10)\n            .coreCount(2)\n            .tier(1)\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"test\")\n                .keyName(\"test-key\")\n                .build())\n            .vendorConfiguration(Map.ofEntries(\n                Map.entry(\"restApiSupportRequirement\", \"true\"),\n                Map.entry(\"ipAddressType\", \"NO_IP_ADDRESS\")\n            ))\n            .secondaryDevice(DeviceSecondaryDeviceArgs.builder()\n                .name(\"tf-c8000v-byol-secondary\")\n                .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n                .hostname(\"csr8000v-s\")\n                .notifications(                \n                    \"john@equinix.com\",\n                    \"marry@equinix.com\")\n                .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n                .vendorConfiguration(Map.ofEntries(\n                    Map.entry(\"restApiSupportRequirement\", \"true\"),\n                    Map.entry(\"ipAddressType\", \"NO_IP_ADDRESS\")\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  c8000v-byol:\n    type: equinix:networkedge:Device\n    properties:\n      name: tf-c8000v-byol\n      metroCode: ${sv.metroCode}\n      typeCode: C8000V\n      selfManaged: true\n      byol: true\n      packageCode: network-essentials\n      connectivity: PRIVATE\n      notifications:\n        - john@equinix.com\n        - marry@equinix.com\n        - fred@equinix.com\n      termLength: 12\n      accountNumber: ${sv.number}\n      version: 17.11.01a\n      interfaceCount: 10\n      coreCount: 2\n      tier: 1\n      sshKey:\n        username: test\n        keyName: test-key\n      vendorConfiguration:\n        restApiSupportRequirement: 'true'\n        ipAddressType: NO_IP_ADDRESS\n      secondaryDevice:\n        name: tf-c8000v-byol-secondary\n        metroCode: ${sv.metroCode}\n        hostname: csr8000v-s\n        notifications:\n          - john@equinix.com\n          - marry@equinix.com\n        accountNumber: ${sv.number}\n        vendorConfiguration:\n          restApiSupportRequirement: 'true'\n          ipAddressType: NO_IP_ADDRESS\nvariables:\n  # Create C8000V HA - BYOL device with connectivity PRIVATE with NO IP address type\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n        name: account-name\n```\n{{% /example %}}\n\n{{% example %}}\n### example c8000v znpd ha static\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n    name: \"account-name\",\n});\nconst c8000VByol = new equinix.networkedge.Device(\"c8000v-byol\", {\n    name: \"tf-c8000v-byol\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"C8000V\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"network-essentials\",\n    connectivity: \"PRIVATE\",\n    notifications: [\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    termLength: 12,\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"17.11.01a\",\n    interfaceCount: 10,\n    coreCount: 2,\n    tier: 1,\n    sshKey: {\n        username: \"test\",\n        keyName: \"test-key\",\n    },\n    vendorConfiguration: {\n        restApiSupportRequirement: \"true\",\n        ipAddressType: \"STATIC\",\n        ipAddress: \"x.x.x.x\",\n        gatewayIp: \"x.x.x.x\",\n        subnetMaskIp: \"x.x.x.x\",\n        managementInterfaceId: \"6\",\n    },\n    secondaryDevice: {\n        name: \"tf-c8000v-byol-secondary\",\n        metroCode: sv.apply(sv =\u003e sv.metroCode),\n        hostname: \"csr8000v-s\",\n        notifications: [\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n        ],\n        accountNumber: sv.apply(sv =\u003e sv.number),\n        vendorConfiguration: {\n            restApiSupportRequirement: \"true\",\n            ipAddressType: \"STATIC\",\n            ipAddress: \"x.x.x.x\",\n            gatewayIp: \"x.x.x.x\",\n            subnetMaskIp: \"x.x.x.x\",\n            managementInterfaceId: \"6\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\",\n    name=\"account-name\")\nc8000_v_byol = equinix.networkedge.Device(\"c8000v-byol\",\n    name=\"tf-c8000v-byol\",\n    metro_code=sv.metro_code,\n    type_code=\"C8000V\",\n    self_managed=True,\n    byol=True,\n    package_code=\"network-essentials\",\n    connectivity=\"PRIVATE\",\n    notifications=[\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    term_length=12,\n    account_number=sv.number,\n    version=\"17.11.01a\",\n    interface_count=10,\n    core_count=2,\n    tier=1,\n    ssh_key={\n        \"username\": \"test\",\n        \"key_name\": \"test-key\",\n    },\n    vendor_configuration={\n        \"restApiSupportRequirement\": \"true\",\n        \"ipAddressType\": \"STATIC\",\n        \"ipAddress\": \"x.x.x.x\",\n        \"gatewayIp\": \"x.x.x.x\",\n        \"subnetMaskIp\": \"x.x.x.x\",\n        \"managementInterfaceId\": \"6\",\n    },\n    secondary_device={\n        \"name\": \"tf-c8000v-byol-secondary\",\n        \"metro_code\": sv.metro_code,\n        \"hostname\": \"csr8000v-s\",\n        \"notifications\": [\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n        ],\n        \"account_number\": sv.number,\n        \"vendor_configuration\": {\n            \"restApiSupportRequirement\": \"true\",\n            \"ipAddressType\": \"STATIC\",\n            \"ipAddress\": \"x.x.x.x\",\n            \"gatewayIp\": \"x.x.x.x\",\n            \"subnetMaskIp\": \"x.x.x.x\",\n            \"managementInterfaceId\": \"6\",\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t\tName:      pulumi.String(\"account-name\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"c8000v-byol\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"tf-c8000v-byol\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:     pulumi.String(\"C8000V\"),\n\t\t\tSelfManaged:  pulumi.Bool(true),\n\t\t\tByol:         pulumi.Bool(true),\n\t\t\tPackageCode:  pulumi.String(\"network-essentials\"),\n\t\t\tConnectivity: pulumi.String(\"PRIVATE\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\tpulumi.String(\"fred@equinix.com\"),\n\t\t\t},\n\t\t\tTermLength: pulumi.Int(12),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:        pulumi.String(\"17.11.01a\"),\n\t\t\tInterfaceCount: pulumi.Int(10),\n\t\t\tCoreCount:      pulumi.Int(2),\n\t\t\tTier:           pulumi.Int(1),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\t\tKeyName:  pulumi.String(\"test-key\"),\n\t\t\t},\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"restApiSupportRequirement\": pulumi.String(\"true\"),\n\t\t\t\t\"ipAddressType\":             pulumi.String(\"STATIC\"),\n\t\t\t\t\"ipAddress\":                 pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\"gatewayIp\":                 pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\"subnetMaskIp\":              pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\"managementInterfaceId\":     pulumi.String(\"6\"),\n\t\t\t},\n\t\t\tSecondaryDevice: \u0026networkedge.DeviceSecondaryDeviceArgs{\n\t\t\t\tName: pulumi.String(\"tf-c8000v-byol-secondary\"),\n\t\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHostname: pulumi.String(\"csr8000v-s\"),\n\t\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\t},\n\t\t\t\tAccountNumber: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\t\"restApiSupportRequirement\": pulumi.String(\"true\"),\n\t\t\t\t\t\"ipAddressType\":             pulumi.String(\"STATIC\"),\n\t\t\t\t\t\"ipAddress\":                 pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\t\"gatewayIp\":                 pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\t\"subnetMaskIp\":              pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\t\"managementInterfaceId\":     pulumi.String(\"6\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n        Name = \"account-name\",\n    });\n\n    var c8000VByol = new Equinix.NetworkEdge.Device(\"c8000v-byol\", new()\n    {\n        Name = \"tf-c8000v-byol\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"C8000V\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"network-essentials\",\n        Connectivity = \"PRIVATE\",\n        Notifications = new[]\n        {\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n            \"fred@equinix.com\",\n        },\n        TermLength = 12,\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"17.11.01a\",\n        InterfaceCount = 10,\n        CoreCount = 2,\n        Tier = 1,\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"test\",\n            KeyName = \"test-key\",\n        },\n        VendorConfiguration = \n        {\n            { \"restApiSupportRequirement\", \"true\" },\n            { \"ipAddressType\", \"STATIC\" },\n            { \"ipAddress\", \"x.x.x.x\" },\n            { \"gatewayIp\", \"x.x.x.x\" },\n            { \"subnetMaskIp\", \"x.x.x.x\" },\n            { \"managementInterfaceId\", \"6\" },\n        },\n        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs\n        {\n            Name = \"tf-c8000v-byol-secondary\",\n            MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n            Hostname = \"csr8000v-s\",\n            Notifications = new[]\n            {\n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n            },\n            AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n            VendorConfiguration = \n            {\n                { \"restApiSupportRequirement\", \"true\" },\n                { \"ipAddressType\", \"STATIC\" },\n                { \"ipAddress\", \"x.x.x.x\" },\n                { \"gatewayIp\", \"x.x.x.x\" },\n                { \"subnetMaskIp\", \"x.x.x.x\" },\n                { \"managementInterfaceId\", \"6\" },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .name(\"account-name\")\n            .build());\n\n        var c8000VByol = new Device(\"c8000VByol\", DeviceArgs.builder()\n            .name(\"tf-c8000v-byol\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"C8000V\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"network-essentials\")\n            .connectivity(\"PRIVATE\")\n            .notifications(            \n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n                \"fred@equinix.com\")\n            .termLength(12)\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"17.11.01a\")\n            .interfaceCount(10)\n            .coreCount(2)\n            .tier(1)\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"test\")\n                .keyName(\"test-key\")\n                .build())\n            .vendorConfiguration(Map.ofEntries(\n                Map.entry(\"restApiSupportRequirement\", \"true\"),\n                Map.entry(\"ipAddressType\", \"STATIC\"),\n                Map.entry(\"ipAddress\", \"x.x.x.x\"),\n                Map.entry(\"gatewayIp\", \"x.x.x.x\"),\n                Map.entry(\"subnetMaskIp\", \"x.x.x.x\"),\n                Map.entry(\"managementInterfaceId\", \"6\")\n            ))\n            .secondaryDevice(DeviceSecondaryDeviceArgs.builder()\n                .name(\"tf-c8000v-byol-secondary\")\n                .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n                .hostname(\"csr8000v-s\")\n                .notifications(                \n                    \"john@equinix.com\",\n                    \"marry@equinix.com\")\n                .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n                .vendorConfiguration(Map.ofEntries(\n                    Map.entry(\"restApiSupportRequirement\", \"true\"),\n                    Map.entry(\"ipAddressType\", \"STATIC\"),\n                    Map.entry(\"ipAddress\", \"x.x.x.x\"),\n                    Map.entry(\"gatewayIp\", \"x.x.x.x\"),\n                    Map.entry(\"subnetMaskIp\", \"x.x.x.x\"),\n                    Map.entry(\"managementInterfaceId\", \"6\")\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  c8000v-byol:\n    type: equinix:networkedge:Device\n    properties:\n      name: tf-c8000v-byol\n      metroCode: ${sv.metroCode}\n      typeCode: C8000V\n      selfManaged: true\n      byol: true\n      packageCode: network-essentials\n      connectivity: PRIVATE\n      notifications:\n        - john@equinix.com\n        - marry@equinix.com\n        - fred@equinix.com\n      termLength: 12\n      accountNumber: ${sv.number}\n      version: 17.11.01a\n      interfaceCount: 10\n      coreCount: 2\n      tier: 1\n      sshKey:\n        username: test\n        keyName: test-key\n      vendorConfiguration:\n        restApiSupportRequirement: 'true'\n        ipAddressType: STATIC\n        ipAddress: x.x.x.x\n        gatewayIp: x.x.x.x\n        subnetMaskIp: x.x.x.x\n        managementInterfaceId: '6'\n      secondaryDevice:\n        name: tf-c8000v-byol-secondary\n        metroCode: ${sv.metroCode}\n        hostname: csr8000v-s\n        notifications:\n          - john@equinix.com\n          - marry@equinix.com\n        accountNumber: ${sv.number}\n        vendorConfiguration:\n          restApiSupportRequirement: 'true'\n          ipAddressType: STATIC\n          ipAddress: x.x.x.x\n          gatewayIp: x.x.x.x\n          subnetMaskIp: x.x.x.x\n          managementInterfaceId: '6'\nvariables:\n  # Create C8000V HA - BYOL device with connectivity PRIVATE with static IP address type\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n        name: account-name\n```\n{{% /example %}}\n\n{{% example %}}\n### example checkpoint single device\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst cHECKPOINTSV = new equinix.networkedge.Device(\"CHECKPOINT-SV\", {\n    name: \"TF_CHECKPOINT\",\n    projectId: \"XXXX\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"CGUARD\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"STD\",\n    notifications: [\"test@eq.com\"],\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"R81.20\",\n    hostname: \"test\",\n    coreCount: 2,\n    termLength: 1,\n    additionalBandwidth: 5,\n    aclTemplateId: \"XXXXXXX\",\n    sshKey: {\n        username: \"XXXXX\",\n        keyName: \"XXXXXX\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\nc_heckpointsv = equinix.networkedge.Device(\"CHECKPOINT-SV\",\n    name=\"TF_CHECKPOINT\",\n    project_id=\"XXXX\",\n    metro_code=sv.metro_code,\n    type_code=\"CGUARD\",\n    self_managed=True,\n    byol=True,\n    package_code=\"STD\",\n    notifications=[\"test@eq.com\"],\n    account_number=sv.number,\n    version=\"R81.20\",\n    hostname=\"test\",\n    core_count=2,\n    term_length=1,\n    additional_bandwidth=5,\n    acl_template_id=\"XXXXXXX\",\n    ssh_key={\n        \"username\": \"XXXXX\",\n        \"key_name\": \"XXXXXX\",\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"CHECKPOINT-SV\", \u0026networkedge.DeviceArgs{\n\t\t\tName:      pulumi.String(\"TF_CHECKPOINT\"),\n\t\t\tProjectId: pulumi.String(\"XXXX\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:    pulumi.String(\"CGUARD\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol:        pulumi.Bool(true),\n\t\t\tPackageCode: pulumi.String(\"STD\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t},\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:             pulumi.String(\"R81.20\"),\n\t\t\tHostname:            pulumi.String(\"test\"),\n\t\t\tCoreCount:           pulumi.Int(2),\n\t\t\tTermLength:          pulumi.Int(1),\n\t\t\tAdditionalBandwidth: pulumi.Int(5),\n\t\t\tAclTemplateId:       pulumi.String(\"XXXXXXX\"),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"XXXXX\"),\n\t\t\t\tKeyName:  pulumi.String(\"XXXXXX\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var cHECKPOINTSV = new Equinix.NetworkEdge.Device(\"CHECKPOINT-SV\", new()\n    {\n        Name = \"TF_CHECKPOINT\",\n        ProjectId = \"XXXX\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"CGUARD\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"STD\",\n        Notifications = new[]\n        {\n            \"test@eq.com\",\n        },\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"R81.20\",\n        Hostname = \"test\",\n        CoreCount = 2,\n        TermLength = 1,\n        AdditionalBandwidth = 5,\n        AclTemplateId = \"XXXXXXX\",\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"XXXXX\",\n            KeyName = \"XXXXXX\",\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var cHECKPOINTSV = new Device(\"cHECKPOINTSV\", DeviceArgs.builder()\n            .name(\"TF_CHECKPOINT\")\n            .projectId(\"XXXX\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"CGUARD\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"STD\")\n            .notifications(\"test@eq.com\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"R81.20\")\n            .hostname(\"test\")\n            .coreCount(2)\n            .termLength(1)\n            .additionalBandwidth(5)\n            .aclTemplateId(\"XXXXXXX\")\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"XXXXX\")\n                .keyName(\"XXXXXX\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  CHECKPOINT-SV:\n    type: equinix:networkedge:Device\n    properties:\n      name: TF_CHECKPOINT\n      projectId: XXXX\n      metroCode: ${sv.metroCode}\n      typeCode: CGUARD\n      selfManaged: true\n      byol: true\n      packageCode: STD\n      notifications:\n        - test@eq.com\n      accountNumber: ${sv.number}\n      version: R81.20\n      hostname: test\n      coreCount: 2\n      termLength: 1\n      additionalBandwidth: 5\n      aclTemplateId: XXXXXXX\n      sshKey:\n        username: XXXXX\n        keyName: XXXXXX\nvariables:\n  # Create Checkpoint single device\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example cisco ftd cluster znpd\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst ciscoFTDSV = new equinix.networkedge.Device(\"cisco-FTD-SV\", {\n    name: \"TF_Cisco_NGFW_CLUSTER_ZNPD\",\n    projectId: \"XXXXXXX\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"Cisco_NGFW\",\n    selfManaged: true,\n    connectivity: \"PRIVATE\",\n    byol: true,\n    packageCode: \"FTDv10\",\n    notifications: [\"test@eq.com\"],\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"7.0.4-55\",\n    hostname: \"test\",\n    coreCount: 4,\n    termLength: 1,\n    interfaceCount: 10,\n    clusterDetails: {\n        clusterName: \"tf-ftd-cluster\",\n        node0: {\n            vendorConfiguration: {\n                hostname: \"test\",\n                activationKey: \"XXXXX\",\n                controller1: \"X.X.X.X\",\n                managementType: \"FMC\",\n            },\n        },\n        node1: {\n            vendorConfiguration: {\n                hostname: \"test\",\n                managementType: \"FMC\",\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\ncisco_ftdsv = equinix.networkedge.Device(\"cisco-FTD-SV\",\n    name=\"TF_Cisco_NGFW_CLUSTER_ZNPD\",\n    project_id=\"XXXXXXX\",\n    metro_code=sv.metro_code,\n    type_code=\"Cisco_NGFW\",\n    self_managed=True,\n    connectivity=\"PRIVATE\",\n    byol=True,\n    package_code=\"FTDv10\",\n    notifications=[\"test@eq.com\"],\n    account_number=sv.number,\n    version=\"7.0.4-55\",\n    hostname=\"test\",\n    core_count=4,\n    term_length=1,\n    interface_count=10,\n    cluster_details={\n        \"cluster_name\": \"tf-ftd-cluster\",\n        \"node0\": {\n            \"vendor_configuration\": {\n                \"hostname\": \"test\",\n                \"activation_key\": \"XXXXX\",\n                \"controller1\": \"X.X.X.X\",\n                \"management_type\": \"FMC\",\n            },\n        },\n        \"node1\": {\n            \"vendor_configuration\": {\n                \"hostname\": \"test\",\n                \"management_type\": \"FMC\",\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"cisco-FTD-SV\", \u0026networkedge.DeviceArgs{\n\t\t\tName:      pulumi.String(\"TF_Cisco_NGFW_CLUSTER_ZNPD\"),\n\t\t\tProjectId: pulumi.String(\"XXXXXXX\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:     pulumi.String(\"Cisco_NGFW\"),\n\t\t\tSelfManaged:  pulumi.Bool(true),\n\t\t\tConnectivity: pulumi.String(\"PRIVATE\"),\n\t\t\tByol:         pulumi.Bool(true),\n\t\t\tPackageCode:  pulumi.String(\"FTDv10\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t},\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:        pulumi.String(\"7.0.4-55\"),\n\t\t\tHostname:       pulumi.String(\"test\"),\n\t\t\tCoreCount:      pulumi.Int(4),\n\t\t\tTermLength:     pulumi.Int(1),\n\t\t\tInterfaceCount: pulumi.Int(10),\n\t\t\tClusterDetails: \u0026networkedge.DeviceClusterDetailsArgs{\n\t\t\t\tClusterName: pulumi.String(\"tf-ftd-cluster\"),\n\t\t\t\tNode0: \u0026networkedge.DeviceClusterDetailsNode0Args{\n\t\t\t\t\tVendorConfiguration: \u0026networkedge.DeviceClusterDetailsNode0VendorConfigurationArgs{\n\t\t\t\t\t\tHostname:       pulumi.String(\"test\"),\n\t\t\t\t\t\tActivationKey:  pulumi.String(\"XXXXX\"),\n\t\t\t\t\t\tController1:    pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\t\tManagementType: pulumi.String(\"FMC\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNode1: \u0026networkedge.DeviceClusterDetailsNode1Args{\n\t\t\t\t\tVendorConfiguration: \u0026networkedge.DeviceClusterDetailsNode1VendorConfigurationArgs{\n\t\t\t\t\t\tHostname:       pulumi.String(\"test\"),\n\t\t\t\t\t\tManagementType: pulumi.String(\"FMC\"),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var ciscoFTDSV = new Equinix.NetworkEdge.Device(\"cisco-FTD-SV\", new()\n    {\n        Name = \"TF_Cisco_NGFW_CLUSTER_ZNPD\",\n        ProjectId = \"XXXXXXX\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"Cisco_NGFW\",\n        SelfManaged = true,\n        Connectivity = \"PRIVATE\",\n        Byol = true,\n        PackageCode = \"FTDv10\",\n        Notifications = new[]\n        {\n            \"test@eq.com\",\n        },\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"7.0.4-55\",\n        Hostname = \"test\",\n        CoreCount = 4,\n        TermLength = 1,\n        InterfaceCount = 10,\n        ClusterDetails = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsArgs\n        {\n            ClusterName = \"tf-ftd-cluster\",\n            Node0 = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode0Args\n            {\n                VendorConfiguration = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode0VendorConfigurationArgs\n                {\n                    Hostname = \"test\",\n                    ActivationKey = \"XXXXX\",\n                    Controller1 = \"X.X.X.X\",\n                    ManagementType = \"FMC\",\n                },\n            },\n            Node1 = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode1Args\n            {\n                VendorConfiguration = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode1VendorConfigurationArgs\n                {\n                    Hostname = \"test\",\n                    ManagementType = \"FMC\",\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode0Args;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode0VendorConfigurationArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode1Args;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode1VendorConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var ciscoFTDSV = new Device(\"ciscoFTDSV\", DeviceArgs.builder()\n            .name(\"TF_Cisco_NGFW_CLUSTER_ZNPD\")\n            .projectId(\"XXXXXXX\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"Cisco_NGFW\")\n            .selfManaged(true)\n            .connectivity(\"PRIVATE\")\n            .byol(true)\n            .packageCode(\"FTDv10\")\n            .notifications(\"test@eq.com\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"7.0.4-55\")\n            .hostname(\"test\")\n            .coreCount(4)\n            .termLength(1)\n            .interfaceCount(10)\n            .clusterDetails(DeviceClusterDetailsArgs.builder()\n                .clusterName(\"tf-ftd-cluster\")\n                .node0(DeviceClusterDetailsNode0Args.builder()\n                    .vendorConfiguration(DeviceClusterDetailsNode0VendorConfigurationArgs.builder()\n                        .hostname(\"test\")\n                        .activationKey(\"XXXXX\")\n                        .controller1(\"X.X.X.X\")\n                        .managementType(\"FMC\")\n                        .build())\n                    .build())\n                .node1(DeviceClusterDetailsNode1Args.builder()\n                    .vendorConfiguration(DeviceClusterDetailsNode1VendorConfigurationArgs.builder()\n                        .hostname(\"test\")\n                        .managementType(\"FMC\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cisco-FTD-SV:\n    type: equinix:networkedge:Device\n    name: Cisco-FTD-SV\n    properties:\n      name: TF_Cisco_NGFW_CLUSTER_ZNPD\n      projectId: XXXXXXX\n      metroCode: ${sv.metroCode}\n      typeCode: Cisco_NGFW\n      selfManaged: true\n      connectivity: PRIVATE\n      byol: true\n      packageCode: FTDv10\n      notifications:\n        - test@eq.com\n      accountNumber: ${sv.number}\n      version: 7.0.4-55\n      hostname: test\n      coreCount: 4\n      termLength: 1\n      interfaceCount: 10\n      clusterDetails:\n        clusterName: tf-ftd-cluster\n        node0:\n          vendorConfiguration:\n            hostname: test\n            activationKey: XXXXX\n            controller1: X.X.X.X\n            managementType: FMC\n        node1:\n          vendorConfiguration:\n            hostname: test\n            managementType: FMC\nvariables:\n  # Create Cisco FTD Cluster with Connectivity- PRIVATE\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example f5xc single\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst f5XcSingle = new equinix.networkedge.Device(\"f5xc-single\", {\n    name: \"tf-f5xc\",\n    projectId: \"XXXXXX\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"F5XC\",\n    selfManaged: true,\n    byol: true,\n    connectivity: \"INTERNET-ACCESS\",\n    packageCode: \"STD\",\n    notifications: [\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    termLength: 1,\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    aclTemplateId: \"xxxx\",\n    version: \"9.2025.17\",\n    interfaceCount: 8,\n    coreCount: 8,\n    vendorConfiguration: {\n        token: \"XXXXXXXXXX\",\n        hostname: \"XXXX\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\nf5_xc_single = equinix.networkedge.Device(\"f5xc-single\",\n    name=\"tf-f5xc\",\n    project_id=\"XXXXXX\",\n    metro_code=sv.metro_code,\n    type_code=\"F5XC\",\n    self_managed=True,\n    byol=True,\n    connectivity=\"INTERNET-ACCESS\",\n    package_code=\"STD\",\n    notifications=[\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    term_length=1,\n    account_number=sv.number,\n    acl_template_id=\"xxxx\",\n    version=\"9.2025.17\",\n    interface_count=8,\n    core_count=8,\n    vendor_configuration={\n        \"token\": \"XXXXXXXXXX\",\n        \"hostname\": \"XXXX\",\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"f5xc-single\", \u0026networkedge.DeviceArgs{\n\t\t\tName:      pulumi.String(\"tf-f5xc\"),\n\t\t\tProjectId: pulumi.String(\"XXXXXX\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:     pulumi.String(\"F5XC\"),\n\t\t\tSelfManaged:  pulumi.Bool(true),\n\t\t\tByol:         pulumi.Bool(true),\n\t\t\tConnectivity: pulumi.String(\"INTERNET-ACCESS\"),\n\t\t\tPackageCode:  pulumi.String(\"STD\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\tpulumi.String(\"fred@equinix.com\"),\n\t\t\t},\n\t\t\tTermLength: pulumi.Int(1),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tAclTemplateId:  pulumi.String(\"xxxx\"),\n\t\t\tVersion:        pulumi.String(\"9.2025.17\"),\n\t\t\tInterfaceCount: pulumi.Int(8),\n\t\t\tCoreCount:      pulumi.Int(8),\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"token\":    pulumi.String(\"XXXXXXXXXX\"),\n\t\t\t\t\"hostname\": pulumi.String(\"XXXX\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var f5XcSingle = new Equinix.NetworkEdge.Device(\"f5xc-single\", new()\n    {\n        Name = \"tf-f5xc\",\n        ProjectId = \"XXXXXX\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"F5XC\",\n        SelfManaged = true,\n        Byol = true,\n        Connectivity = \"INTERNET-ACCESS\",\n        PackageCode = \"STD\",\n        Notifications = new[]\n        {\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n            \"fred@equinix.com\",\n        },\n        TermLength = 1,\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        AclTemplateId = \"xxxx\",\n        Version = \"9.2025.17\",\n        InterfaceCount = 8,\n        CoreCount = 8,\n        VendorConfiguration = \n        {\n            { \"token\", \"XXXXXXXXXX\" },\n            { \"hostname\", \"XXXX\" },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var f5XcSingle = new Device(\"f5XcSingle\", DeviceArgs.builder()\n            .name(\"tf-f5xc\")\n            .projectId(\"XXXXXX\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"F5XC\")\n            .selfManaged(true)\n            .byol(true)\n            .connectivity(\"INTERNET-ACCESS\")\n            .packageCode(\"STD\")\n            .notifications(            \n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n                \"fred@equinix.com\")\n            .termLength(1)\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .aclTemplateId(\"xxxx\")\n            .version(\"9.2025.17\")\n            .interfaceCount(8)\n            .coreCount(8)\n            .vendorConfiguration(Map.ofEntries(\n                Map.entry(\"token\", \"XXXXXXXXXX\"),\n                Map.entry(\"hostname\", \"XXXX\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  f5xc-single:\n    type: equinix:networkedge:Device\n    properties:\n      name: tf-f5xc\n      projectId: XXXXXX\n      metroCode: ${sv.metroCode}\n      typeCode: F5XC\n      selfManaged: true\n      byol: true\n      connectivity: INTERNET-ACCESS\n      packageCode: STD\n      notifications:\n        - john@equinix.com\n        - marry@equinix.com\n        - fred@equinix.com\n      termLength: 1\n      accountNumber: ${sv.number}\n      aclTemplateId: xxxx\n      version: 9.2025.17\n      interfaceCount: 8\n      coreCount: 8\n      vendorConfiguration:\n        token: XXXXXXXXXX\n        hostname: XXXX\nvariables:\n  # Create F5XC device\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example fortigate firewall cluster device znpd static ip\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n    name: \"account-name\",\n});\nconst fGVMSV = new equinix.networkedge.Device(\"FGVM-SV\", {\n    name: \"tf-fgvm-cluster-static-znpd\",\n    metroCode: \"DC\",\n    typeCode: \"FG-VM\",\n    projectId: \"xxxxxxx\",\n    selfManaged: true,\n    connectivity: \"PRIVATE\",\n    byol: true,\n    packageCode: \"VM02\",\n    notifications: [\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    termLength: 12,\n    accountNumber: xxxxxx,\n    version: \"7.6.2\",\n    interfaceCount: 10,\n    coreCount: 2,\n    sshKey: {\n        username: \"sanity1\",\n        keyName: \"\",\n    },\n    clusterDetails: {\n        clusterName: \"tf-fgvm--cluster\",\n        node0: {\n            vendorConfiguration: {\n                ipAddress: \"x.x.x.x\",\n                subnetMaskIp: \"x.x.x.x\",\n                gatewayIp: \"x.x.x.x\",\n                managementInterfaceId: \"5\",\n                hostname: \"test\",\n                ipAddressType: \"STATIC\",\n            },\n        },\n        node1: {\n            vendorConfiguration: {\n                ipAddress: \"x.x.x.x\",\n                subnetMaskIp: \"x.x.x.x\",\n                gatewayIp: \"x.x.x.x\",\n                managementInterfaceId: \"5\",\n                hostname: \"test\",\n                ipAddressType: \"STATIC\",\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\",\n    name=\"account-name\")\nf_gvmsv = equinix.networkedge.Device(\"FGVM-SV\",\n    name=\"tf-fgvm-cluster-static-znpd\",\n    metro_code=\"DC\",\n    type_code=\"FG-VM\",\n    project_id=\"xxxxxxx\",\n    self_managed=True,\n    connectivity=\"PRIVATE\",\n    byol=True,\n    package_code=\"VM02\",\n    notifications=[\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    term_length=12,\n    account_number=xxxxxx,\n    version=\"7.6.2\",\n    interface_count=10,\n    core_count=2,\n    ssh_key={\n        \"username\": \"sanity1\",\n        \"key_name\": \"\",\n    },\n    cluster_details={\n        \"cluster_name\": \"tf-fgvm--cluster\",\n        \"node0\": {\n            \"vendor_configuration\": {\n                \"ip_address\": \"x.x.x.x\",\n                \"subnet_mask_ip\": \"x.x.x.x\",\n                \"gateway_ip\": \"x.x.x.x\",\n                \"management_interface_id\": \"5\",\n                \"hostname\": \"test\",\n                \"ip_address_type\": \"STATIC\",\n            },\n        },\n        \"node1\": {\n            \"vendor_configuration\": {\n                \"ip_address\": \"x.x.x.x\",\n                \"subnet_mask_ip\": \"x.x.x.x\",\n                \"gateway_ip\": \"x.x.x.x\",\n                \"management_interface_id\": \"5\",\n                \"hostname\": \"test\",\n                \"ip_address_type\": \"STATIC\",\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\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_ = networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t\tName:      pulumi.String(\"account-name\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"FGVM-SV\", \u0026networkedge.DeviceArgs{\n\t\t\tName:         pulumi.String(\"tf-fgvm-cluster-static-znpd\"),\n\t\t\tMetroCode:    pulumi.String(\"DC\"),\n\t\t\tTypeCode:     pulumi.String(\"FG-VM\"),\n\t\t\tProjectId:    pulumi.String(\"xxxxxxx\"),\n\t\t\tSelfManaged:  pulumi.Bool(true),\n\t\t\tConnectivity: pulumi.String(\"PRIVATE\"),\n\t\t\tByol:         pulumi.Bool(true),\n\t\t\tPackageCode:  pulumi.String(\"VM02\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\tpulumi.String(\"fred@equinix.com\"),\n\t\t\t},\n\t\t\tTermLength:     pulumi.Int(12),\n\t\t\tAccountNumber:  pulumi.Any(xxxxxx),\n\t\t\tVersion:        pulumi.String(\"7.6.2\"),\n\t\t\tInterfaceCount: pulumi.Int(10),\n\t\t\tCoreCount:      pulumi.Int(2),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"sanity1\"),\n\t\t\t\tKeyName:  pulumi.String(\"\"),\n\t\t\t},\n\t\t\tClusterDetails: \u0026networkedge.DeviceClusterDetailsArgs{\n\t\t\t\tClusterName: pulumi.String(\"tf-fgvm--cluster\"),\n\t\t\t\tNode0: \u0026networkedge.DeviceClusterDetailsNode0Args{\n\t\t\t\t\tVendorConfiguration: \u0026networkedge.DeviceClusterDetailsNode0VendorConfigurationArgs{\n\t\t\t\t\t\tIpAddress:             pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\t\tSubnetMaskIp:          pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\t\tGatewayIp:             pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\t\tManagementInterfaceId: pulumi.String(\"5\"),\n\t\t\t\t\t\tHostname:              pulumi.String(\"test\"),\n\t\t\t\t\t\tIpAddressType:         pulumi.String(\"STATIC\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNode1: \u0026networkedge.DeviceClusterDetailsNode1Args{\n\t\t\t\t\tVendorConfiguration: \u0026networkedge.DeviceClusterDetailsNode1VendorConfigurationArgs{\n\t\t\t\t\t\tIpAddress:             pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\t\tSubnetMaskIp:          pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\t\tGatewayIp:             pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\t\tManagementInterfaceId: pulumi.String(\"5\"),\n\t\t\t\t\t\tHostname:              pulumi.String(\"test\"),\n\t\t\t\t\t\tIpAddressType:         pulumi.String(\"STATIC\"),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n        Name = \"account-name\",\n    });\n\n    var fGVMSV = new Equinix.NetworkEdge.Device(\"FGVM-SV\", new()\n    {\n        Name = \"tf-fgvm-cluster-static-znpd\",\n        MetroCode = \"DC\",\n        TypeCode = \"FG-VM\",\n        ProjectId = \"xxxxxxx\",\n        SelfManaged = true,\n        Connectivity = \"PRIVATE\",\n        Byol = true,\n        PackageCode = \"VM02\",\n        Notifications = new[]\n        {\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n            \"fred@equinix.com\",\n        },\n        TermLength = 12,\n        AccountNumber = xxxxxx,\n        Version = \"7.6.2\",\n        InterfaceCount = 10,\n        CoreCount = 2,\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"sanity1\",\n            KeyName = \"\",\n        },\n        ClusterDetails = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsArgs\n        {\n            ClusterName = \"tf-fgvm--cluster\",\n            Node0 = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode0Args\n            {\n                VendorConfiguration = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode0VendorConfigurationArgs\n                {\n                    IpAddress = \"x.x.x.x\",\n                    SubnetMaskIp = \"x.x.x.x\",\n                    GatewayIp = \"x.x.x.x\",\n                    ManagementInterfaceId = \"5\",\n                    Hostname = \"test\",\n                    IpAddressType = \"STATIC\",\n                },\n            },\n            Node1 = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode1Args\n            {\n                VendorConfiguration = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode1VendorConfigurationArgs\n                {\n                    IpAddress = \"x.x.x.x\",\n                    SubnetMaskIp = \"x.x.x.x\",\n                    GatewayIp = \"x.x.x.x\",\n                    ManagementInterfaceId = \"5\",\n                    Hostname = \"test\",\n                    IpAddressType = \"STATIC\",\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode0Args;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode0VendorConfigurationArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode1Args;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode1VendorConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .name(\"account-name\")\n            .build());\n\n        var fGVMSV = new Device(\"fGVMSV\", DeviceArgs.builder()\n            .name(\"tf-fgvm-cluster-static-znpd\")\n            .metroCode(\"DC\")\n            .typeCode(\"FG-VM\")\n            .projectId(\"xxxxxxx\")\n            .selfManaged(true)\n            .connectivity(\"PRIVATE\")\n            .byol(true)\n            .packageCode(\"VM02\")\n            .notifications(            \n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n                \"fred@equinix.com\")\n            .termLength(12)\n            .accountNumber(xxxxxx)\n            .version(\"7.6.2\")\n            .interfaceCount(10)\n            .coreCount(2)\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"sanity1\")\n                .keyName(\"\")\n                .build())\n            .clusterDetails(DeviceClusterDetailsArgs.builder()\n                .clusterName(\"tf-fgvm--cluster\")\n                .node0(DeviceClusterDetailsNode0Args.builder()\n                    .vendorConfiguration(DeviceClusterDetailsNode0VendorConfigurationArgs.builder()\n                        .ipAddress(\"x.x.x.x\")\n                        .subnetMaskIp(\"x.x.x.x\")\n                        .gatewayIp(\"x.x.x.x\")\n                        .managementInterfaceId(\"5\")\n                        .hostname(\"test\")\n                        .ipAddressType(\"STATIC\")\n                        .build())\n                    .build())\n                .node1(DeviceClusterDetailsNode1Args.builder()\n                    .vendorConfiguration(DeviceClusterDetailsNode1VendorConfigurationArgs.builder()\n                        .ipAddress(\"x.x.x.x\")\n                        .subnetMaskIp(\"x.x.x.x\")\n                        .gatewayIp(\"x.x.x.x\")\n                        .managementInterfaceId(\"5\")\n                        .hostname(\"test\")\n                        .ipAddressType(\"STATIC\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  FGVM-SV:\n    type: equinix:networkedge:Device\n    properties:\n      name: tf-fgvm-cluster-static-znpd\n      metroCode: DC\n      typeCode: FG-VM\n      projectId: xxxxxxx\n      selfManaged: true\n      connectivity: PRIVATE\n      byol: true\n      packageCode: VM02\n      notifications:\n        - john@equinix.com\n        - marry@equinix.com\n        - fred@equinix.com\n      termLength: 12\n      accountNumber: ${xxxxxx}\n      version: 7.6.2\n      interfaceCount: 10\n      coreCount: 2\n      sshKey:\n        username: sanity1\n        keyName: \"\"\n      clusterDetails:\n        clusterName: tf-fgvm--cluster\n        node0:\n          vendorConfiguration:\n            ipAddress: x.x.x.x\n            subnetMaskIp: x.x.x.x\n            gatewayIp: x.x.x.x\n            managementInterfaceId: '5'\n            hostname: test\n            ipAddressType: STATIC\n        node1:\n          vendorConfiguration:\n            ipAddress: x.x.x.x\n            subnetMaskIp: x.x.x.x\n            gatewayIp: x.x.x.x\n            managementInterfaceId: '5'\n            hostname: test\n            ipAddressType: STATIC\nvariables:\n  # Create FG VM Cluster with connectivity PRIVATE and IP Address Type as STATIC\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n        name: account-name\n```\n{{% /example %}}\n\n{{% example %}}\n### example fortigate firewall ha device znpd dhcp\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n    name: \"account-name\",\n});\nconst fTNTFIREWALLSV = new equinix.networkedge.Device(\"FTNT-FIREWALL-SV\", {\n    name: \"TF_FTNT-FIREWALL\",\n    projectId: \"XXXXXXXXXX\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"FG-VM\",\n    selfManaged: true,\n    byol: true,\n    interfaceCount: 10,\n    connectivity: \"PRIVATE\",\n    packageCode: \"VM02\",\n    notifications: [\"test@eq.com\"],\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"7.6.3\",\n    hostname: \"test\",\n    coreCount: 2,\n    termLength: 1,\n    vendorConfiguration: {\n        ipAddressType: \"DHCP\",\n        managementInterfaceId: \"6\",\n    },\n    secondaryDevice: {\n        name: \"TF_FTNT-FIREWALL-secondary\",\n        metroCode: sv.apply(sv =\u003e sv.metroCode),\n        hostname: \"fg-vm-znpd\",\n        notifications: [\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n        ],\n        accountNumber: sv.apply(sv =\u003e sv.number),\n        vendorConfiguration: {\n            ipAddressType: \"DHCP\",\n            managementInterfaceId: \"6\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\",\n    name=\"account-name\")\nf_tntfirewallsv = equinix.networkedge.Device(\"FTNT-FIREWALL-SV\",\n    name=\"TF_FTNT-FIREWALL\",\n    project_id=\"XXXXXXXXXX\",\n    metro_code=sv.metro_code,\n    type_code=\"FG-VM\",\n    self_managed=True,\n    byol=True,\n    interface_count=10,\n    connectivity=\"PRIVATE\",\n    package_code=\"VM02\",\n    notifications=[\"test@eq.com\"],\n    account_number=sv.number,\n    version=\"7.6.3\",\n    hostname=\"test\",\n    core_count=2,\n    term_length=1,\n    vendor_configuration={\n        \"ipAddressType\": \"DHCP\",\n        \"managementInterfaceId\": \"6\",\n    },\n    secondary_device={\n        \"name\": \"TF_FTNT-FIREWALL-secondary\",\n        \"metro_code\": sv.metro_code,\n        \"hostname\": \"fg-vm-znpd\",\n        \"notifications\": [\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n        ],\n        \"account_number\": sv.number,\n        \"vendor_configuration\": {\n            \"ipAddressType\": \"DHCP\",\n            \"managementInterfaceId\": \"6\",\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t\tName:      pulumi.String(\"account-name\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"FTNT-FIREWALL-SV\", \u0026networkedge.DeviceArgs{\n\t\t\tName:      pulumi.String(\"TF_FTNT-FIREWALL\"),\n\t\t\tProjectId: pulumi.String(\"XXXXXXXXXX\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:       pulumi.String(\"FG-VM\"),\n\t\t\tSelfManaged:    pulumi.Bool(true),\n\t\t\tByol:           pulumi.Bool(true),\n\t\t\tInterfaceCount: pulumi.Int(10),\n\t\t\tConnectivity:   pulumi.String(\"PRIVATE\"),\n\t\t\tPackageCode:    pulumi.String(\"VM02\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t},\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:    pulumi.String(\"7.6.3\"),\n\t\t\tHostname:   pulumi.String(\"test\"),\n\t\t\tCoreCount:  pulumi.Int(2),\n\t\t\tTermLength: pulumi.Int(1),\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"ipAddressType\":         pulumi.String(\"DHCP\"),\n\t\t\t\t\"managementInterfaceId\": pulumi.String(\"6\"),\n\t\t\t},\n\t\t\tSecondaryDevice: \u0026networkedge.DeviceSecondaryDeviceArgs{\n\t\t\t\tName: pulumi.String(\"TF_FTNT-FIREWALL-secondary\"),\n\t\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHostname: pulumi.String(\"fg-vm-znpd\"),\n\t\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\t},\n\t\t\t\tAccountNumber: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\t\"ipAddressType\":         pulumi.String(\"DHCP\"),\n\t\t\t\t\t\"managementInterfaceId\": pulumi.String(\"6\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n        Name = \"account-name\",\n    });\n\n    var fTNTFIREWALLSV = new Equinix.NetworkEdge.Device(\"FTNT-FIREWALL-SV\", new()\n    {\n        Name = \"TF_FTNT-FIREWALL\",\n        ProjectId = \"XXXXXXXXXX\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"FG-VM\",\n        SelfManaged = true,\n        Byol = true,\n        InterfaceCount = 10,\n        Connectivity = \"PRIVATE\",\n        PackageCode = \"VM02\",\n        Notifications = new[]\n        {\n            \"test@eq.com\",\n        },\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"7.6.3\",\n        Hostname = \"test\",\n        CoreCount = 2,\n        TermLength = 1,\n        VendorConfiguration = \n        {\n            { \"ipAddressType\", \"DHCP\" },\n            { \"managementInterfaceId\", \"6\" },\n        },\n        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs\n        {\n            Name = \"TF_FTNT-FIREWALL-secondary\",\n            MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n            Hostname = \"fg-vm-znpd\",\n            Notifications = new[]\n            {\n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n            },\n            AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n            VendorConfiguration = \n            {\n                { \"ipAddressType\", \"DHCP\" },\n                { \"managementInterfaceId\", \"6\" },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .name(\"account-name\")\n            .build());\n\n        var fTNTFIREWALLSV = new Device(\"fTNTFIREWALLSV\", DeviceArgs.builder()\n            .name(\"TF_FTNT-FIREWALL\")\n            .projectId(\"XXXXXXXXXX\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"FG-VM\")\n            .selfManaged(true)\n            .byol(true)\n            .interfaceCount(10)\n            .connectivity(\"PRIVATE\")\n            .packageCode(\"VM02\")\n            .notifications(\"test@eq.com\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"7.6.3\")\n            .hostname(\"test\")\n            .coreCount(2)\n            .termLength(1)\n            .vendorConfiguration(Map.ofEntries(\n                Map.entry(\"ipAddressType\", \"DHCP\"),\n                Map.entry(\"managementInterfaceId\", \"6\")\n            ))\n            .secondaryDevice(DeviceSecondaryDeviceArgs.builder()\n                .name(\"TF_FTNT-FIREWALL-secondary\")\n                .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n                .hostname(\"fg-vm-znpd\")\n                .notifications(                \n                    \"john@equinix.com\",\n                    \"marry@equinix.com\")\n                .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n                .vendorConfiguration(Map.ofEntries(\n                    Map.entry(\"ipAddressType\", \"DHCP\"),\n                    Map.entry(\"managementInterfaceId\", \"6\")\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  FTNT-FIREWALL-SV:\n    type: equinix:networkedge:Device\n    properties:\n      name: TF_FTNT-FIREWALL\n      projectId: XXXXXXXXXX\n      metroCode: ${sv.metroCode}\n      typeCode: FG-VM\n      selfManaged: true\n      byol: true\n      interfaceCount: 10\n      connectivity: PRIVATE\n      packageCode: VM02\n      notifications:\n        - test@eq.com\n      accountNumber: ${sv.number}\n      version: 7.6.3\n      hostname: test\n      coreCount: 2\n      termLength: 1\n      vendorConfiguration:\n        ipAddressType: DHCP\n        managementInterfaceId: '6'\n      secondaryDevice:\n        name: TF_FTNT-FIREWALL-secondary\n        metroCode: ${sv.metroCode}\n        hostname: fg-vm-znpd\n        notifications:\n          - john@equinix.com\n          - marry@equinix.com\n        accountNumber: ${sv.number}\n        vendorConfiguration:\n          ipAddressType: DHCP\n          managementInterfaceId: '6'\nvariables:\n  # Create Fortinet VM firewall ha device with connectivity PRIVATE and IP Address Type as DHCP\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n        name: account-name\n```\n{{% /example %}}\n\n{{% example %}}\n### example fortigate firewall ha device znpd no ip\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n    name: \"account-name\",\n});\nconst fTNTFIREWALLSV = new equinix.networkedge.Device(\"FTNT-FIREWALL-SV\", {\n    name: \"TF_FTNT-FIREWALL\",\n    projectId: \"XXXXXXXXXX\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"FG-VM\",\n    interfaceCount: 10,\n    selfManaged: true,\n    byol: true,\n    connectivity: \"PRIVATE\",\n    packageCode: \"VM02\",\n    notifications: [\"test@eq.com\"],\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"7.6.3\",\n    hostname: \"test\",\n    coreCount: 2,\n    termLength: 1,\n    vendorConfiguration: {\n        ipAddressType: \"NO_IP_ADDRESS\",\n    },\n    secondaryDevice: {\n        name: \"TF_FTNT-FIREWALL-secondary\",\n        metroCode: sv.apply(sv =\u003e sv.metroCode),\n        hostname: \"fg-vm-znpd\",\n        notifications: [\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n        ],\n        accountNumber: sv.apply(sv =\u003e sv.number),\n        vendorConfiguration: {\n            ipAddressType: \"NO_IP_ADDRESS\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\",\n    name=\"account-name\")\nf_tntfirewallsv = equinix.networkedge.Device(\"FTNT-FIREWALL-SV\",\n    name=\"TF_FTNT-FIREWALL\",\n    project_id=\"XXXXXXXXXX\",\n    metro_code=sv.metro_code,\n    type_code=\"FG-VM\",\n    interface_count=10,\n    self_managed=True,\n    byol=True,\n    connectivity=\"PRIVATE\",\n    package_code=\"VM02\",\n    notifications=[\"test@eq.com\"],\n    account_number=sv.number,\n    version=\"7.6.3\",\n    hostname=\"test\",\n    core_count=2,\n    term_length=1,\n    vendor_configuration={\n        \"ipAddressType\": \"NO_IP_ADDRESS\",\n    },\n    secondary_device={\n        \"name\": \"TF_FTNT-FIREWALL-secondary\",\n        \"metro_code\": sv.metro_code,\n        \"hostname\": \"fg-vm-znpd\",\n        \"notifications\": [\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n        ],\n        \"account_number\": sv.number,\n        \"vendor_configuration\": {\n            \"ipAddressType\": \"NO_IP_ADDRESS\",\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t\tName:      pulumi.String(\"account-name\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"FTNT-FIREWALL-SV\", \u0026networkedge.DeviceArgs{\n\t\t\tName:      pulumi.String(\"TF_FTNT-FIREWALL\"),\n\t\t\tProjectId: pulumi.String(\"XXXXXXXXXX\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:       pulumi.String(\"FG-VM\"),\n\t\t\tInterfaceCount: pulumi.Int(10),\n\t\t\tSelfManaged:    pulumi.Bool(true),\n\t\t\tByol:           pulumi.Bool(true),\n\t\t\tConnectivity:   pulumi.String(\"PRIVATE\"),\n\t\t\tPackageCode:    pulumi.String(\"VM02\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t},\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:    pulumi.String(\"7.6.3\"),\n\t\t\tHostname:   pulumi.String(\"test\"),\n\t\t\tCoreCount:  pulumi.Int(2),\n\t\t\tTermLength: pulumi.Int(1),\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"ipAddressType\": pulumi.String(\"NO_IP_ADDRESS\"),\n\t\t\t},\n\t\t\tSecondaryDevice: \u0026networkedge.DeviceSecondaryDeviceArgs{\n\t\t\t\tName: pulumi.String(\"TF_FTNT-FIREWALL-secondary\"),\n\t\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHostname: pulumi.String(\"fg-vm-znpd\"),\n\t\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\t},\n\t\t\t\tAccountNumber: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\t\"ipAddressType\": pulumi.String(\"NO_IP_ADDRESS\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n        Name = \"account-name\",\n    });\n\n    var fTNTFIREWALLSV = new Equinix.NetworkEdge.Device(\"FTNT-FIREWALL-SV\", new()\n    {\n        Name = \"TF_FTNT-FIREWALL\",\n        ProjectId = \"XXXXXXXXXX\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"FG-VM\",\n        InterfaceCount = 10,\n        SelfManaged = true,\n        Byol = true,\n        Connectivity = \"PRIVATE\",\n        PackageCode = \"VM02\",\n        Notifications = new[]\n        {\n            \"test@eq.com\",\n        },\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"7.6.3\",\n        Hostname = \"test\",\n        CoreCount = 2,\n        TermLength = 1,\n        VendorConfiguration = \n        {\n            { \"ipAddressType\", \"NO_IP_ADDRESS\" },\n        },\n        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs\n        {\n            Name = \"TF_FTNT-FIREWALL-secondary\",\n            MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n            Hostname = \"fg-vm-znpd\",\n            Notifications = new[]\n            {\n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n            },\n            AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n            VendorConfiguration = \n            {\n                { \"ipAddressType\", \"NO_IP_ADDRESS\" },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .name(\"account-name\")\n            .build());\n\n        var fTNTFIREWALLSV = new Device(\"fTNTFIREWALLSV\", DeviceArgs.builder()\n            .name(\"TF_FTNT-FIREWALL\")\n            .projectId(\"XXXXXXXXXX\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"FG-VM\")\n            .interfaceCount(10)\n            .selfManaged(true)\n            .byol(true)\n            .connectivity(\"PRIVATE\")\n            .packageCode(\"VM02\")\n            .notifications(\"test@eq.com\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"7.6.3\")\n            .hostname(\"test\")\n            .coreCount(2)\n            .termLength(1)\n            .vendorConfiguration(Map.of(\"ipAddressType\", \"NO_IP_ADDRESS\"))\n            .secondaryDevice(DeviceSecondaryDeviceArgs.builder()\n                .name(\"TF_FTNT-FIREWALL-secondary\")\n                .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n                .hostname(\"fg-vm-znpd\")\n                .notifications(                \n                    \"john@equinix.com\",\n                    \"marry@equinix.com\")\n                .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n                .vendorConfiguration(Map.of(\"ipAddressType\", \"NO_IP_ADDRESS\"))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  FTNT-FIREWALL-SV:\n    type: equinix:networkedge:Device\n    properties:\n      name: TF_FTNT-FIREWALL\n      projectId: XXXXXXXXXX\n      metroCode: ${sv.metroCode}\n      typeCode: FG-VM\n      interfaceCount: 10\n      selfManaged: true\n      byol: true\n      connectivity: PRIVATE\n      packageCode: VM02\n      notifications:\n        - test@eq.com\n      accountNumber: ${sv.number}\n      version: 7.6.3\n      hostname: test\n      coreCount: 2\n      termLength: 1\n      vendorConfiguration:\n        ipAddressType: NO_IP_ADDRESS\n      secondaryDevice:\n        name: TF_FTNT-FIREWALL-secondary\n        metroCode: ${sv.metroCode}\n        hostname: fg-vm-znpd\n        notifications:\n          - john@equinix.com\n          - marry@equinix.com\n        accountNumber: ${sv.number}\n        vendorConfiguration:\n          ipAddressType: NO_IP_ADDRESS\nvariables:\n  # Create Fortinet firewall ha device with connectivity PRIVATE and IP Address Type as NO IP Address\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n        name: account-name\n```\n{{% /example %}}\n\n{{% example %}}\n### example fortigate firewall ha device znpd static\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n    name: \"account-name\",\n});\nconst fTNTFIREWALLSV = new equinix.networkedge.Device(\"FTNT-FIREWALL-SV\", {\n    name: \"TF_FTNT-FIREWALL\",\n    projectId: \"XXXXXXXXXX\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    interfaceCount: 10,\n    typeCode: \"FG-VM\",\n    selfManaged: true,\n    byol: true,\n    connectivity: \"PRIVATE\",\n    packageCode: \"VM02\",\n    notifications: [\"test@eq.com\"],\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"7.6.3\",\n    hostname: \"test\",\n    coreCount: 2,\n    termLength: 1,\n    vendorConfiguration: {\n        gatewayIp: \"X.X.X.X\",\n        ipAddress: \"X.X.X.X\",\n        ipAddressType: \"STATIC\",\n        subnetMaskIp: \"x.x.x.x\",\n    },\n    secondaryDevice: {\n        name: \"TF_FTNT-FIREWALL-secondary\",\n        metroCode: sv.apply(sv =\u003e sv.metroCode),\n        hostname: \"fg-vm-znpd\",\n        notifications: [\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n        ],\n        accountNumber: sv.apply(sv =\u003e sv.number),\n        vendorConfiguration: {\n            ipAddressType: \"STATIC\",\n            ipAddress: \"x.x.x.x\",\n            gatewayIp: \"x.x.x.x\",\n            subnetMaskIp: \"x.x.x.x\",\n            managementInterfaceId: \"6\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\",\n    name=\"account-name\")\nf_tntfirewallsv = equinix.networkedge.Device(\"FTNT-FIREWALL-SV\",\n    name=\"TF_FTNT-FIREWALL\",\n    project_id=\"XXXXXXXXXX\",\n    metro_code=sv.metro_code,\n    interface_count=10,\n    type_code=\"FG-VM\",\n    self_managed=True,\n    byol=True,\n    connectivity=\"PRIVATE\",\n    package_code=\"VM02\",\n    notifications=[\"test@eq.com\"],\n    account_number=sv.number,\n    version=\"7.6.3\",\n    hostname=\"test\",\n    core_count=2,\n    term_length=1,\n    vendor_configuration={\n        \"gatewayIp\": \"X.X.X.X\",\n        \"ipAddress\": \"X.X.X.X\",\n        \"ipAddressType\": \"STATIC\",\n        \"subnetMaskIp\": \"x.x.x.x\",\n    },\n    secondary_device={\n        \"name\": \"TF_FTNT-FIREWALL-secondary\",\n        \"metro_code\": sv.metro_code,\n        \"hostname\": \"fg-vm-znpd\",\n        \"notifications\": [\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n        ],\n        \"account_number\": sv.number,\n        \"vendor_configuration\": {\n            \"ipAddressType\": \"STATIC\",\n            \"ipAddress\": \"x.x.x.x\",\n            \"gatewayIp\": \"x.x.x.x\",\n            \"subnetMaskIp\": \"x.x.x.x\",\n            \"managementInterfaceId\": \"6\",\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t\tName:      pulumi.String(\"account-name\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"FTNT-FIREWALL-SV\", \u0026networkedge.DeviceArgs{\n\t\t\tName:      pulumi.String(\"TF_FTNT-FIREWALL\"),\n\t\t\tProjectId: pulumi.String(\"XXXXXXXXXX\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tInterfaceCount: pulumi.Int(10),\n\t\t\tTypeCode:       pulumi.String(\"FG-VM\"),\n\t\t\tSelfManaged:    pulumi.Bool(true),\n\t\t\tByol:           pulumi.Bool(true),\n\t\t\tConnectivity:   pulumi.String(\"PRIVATE\"),\n\t\t\tPackageCode:    pulumi.String(\"VM02\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t},\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:    pulumi.String(\"7.6.3\"),\n\t\t\tHostname:   pulumi.String(\"test\"),\n\t\t\tCoreCount:  pulumi.Int(2),\n\t\t\tTermLength: pulumi.Int(1),\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"gatewayIp\":     pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\"ipAddress\":     pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\"ipAddressType\": pulumi.String(\"STATIC\"),\n\t\t\t\t\"subnetMaskIp\":  pulumi.String(\"x.x.x.x\"),\n\t\t\t},\n\t\t\tSecondaryDevice: \u0026networkedge.DeviceSecondaryDeviceArgs{\n\t\t\t\tName: pulumi.String(\"TF_FTNT-FIREWALL-secondary\"),\n\t\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHostname: pulumi.String(\"fg-vm-znpd\"),\n\t\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\t},\n\t\t\t\tAccountNumber: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\t\"ipAddressType\":         pulumi.String(\"STATIC\"),\n\t\t\t\t\t\"ipAddress\":             pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\t\"gatewayIp\":             pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\t\"subnetMaskIp\":          pulumi.String(\"x.x.x.x\"),\n\t\t\t\t\t\"managementInterfaceId\": pulumi.String(\"6\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n        Name = \"account-name\",\n    });\n\n    var fTNTFIREWALLSV = new Equinix.NetworkEdge.Device(\"FTNT-FIREWALL-SV\", new()\n    {\n        Name = \"TF_FTNT-FIREWALL\",\n        ProjectId = \"XXXXXXXXXX\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        InterfaceCount = 10,\n        TypeCode = \"FG-VM\",\n        SelfManaged = true,\n        Byol = true,\n        Connectivity = \"PRIVATE\",\n        PackageCode = \"VM02\",\n        Notifications = new[]\n        {\n            \"test@eq.com\",\n        },\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"7.6.3\",\n        Hostname = \"test\",\n        CoreCount = 2,\n        TermLength = 1,\n        VendorConfiguration = \n        {\n            { \"gatewayIp\", \"X.X.X.X\" },\n            { \"ipAddress\", \"X.X.X.X\" },\n            { \"ipAddressType\", \"STATIC\" },\n            { \"subnetMaskIp\", \"x.x.x.x\" },\n        },\n        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs\n        {\n            Name = \"TF_FTNT-FIREWALL-secondary\",\n            MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n            Hostname = \"fg-vm-znpd\",\n            Notifications = new[]\n            {\n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n            },\n            AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n            VendorConfiguration = \n            {\n                { \"ipAddressType\", \"STATIC\" },\n                { \"ipAddress\", \"x.x.x.x\" },\n                { \"gatewayIp\", \"x.x.x.x\" },\n                { \"subnetMaskIp\", \"x.x.x.x\" },\n                { \"managementInterfaceId\", \"6\" },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .name(\"account-name\")\n            .build());\n\n        var fTNTFIREWALLSV = new Device(\"fTNTFIREWALLSV\", DeviceArgs.builder()\n            .name(\"TF_FTNT-FIREWALL\")\n            .projectId(\"XXXXXXXXXX\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .interfaceCount(10)\n            .typeCode(\"FG-VM\")\n            .selfManaged(true)\n            .byol(true)\n            .connectivity(\"PRIVATE\")\n            .packageCode(\"VM02\")\n            .notifications(\"test@eq.com\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"7.6.3\")\n            .hostname(\"test\")\n            .coreCount(2)\n            .termLength(1)\n            .vendorConfiguration(Map.ofEntries(\n                Map.entry(\"gatewayIp\", \"X.X.X.X\"),\n                Map.entry(\"ipAddress\", \"X.X.X.X\"),\n                Map.entry(\"ipAddressType\", \"STATIC\"),\n                Map.entry(\"subnetMaskIp\", \"x.x.x.x\")\n            ))\n            .secondaryDevice(DeviceSecondaryDeviceArgs.builder()\n                .name(\"TF_FTNT-FIREWALL-secondary\")\n                .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n                .hostname(\"fg-vm-znpd\")\n                .notifications(                \n                    \"john@equinix.com\",\n                    \"marry@equinix.com\")\n                .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n                .vendorConfiguration(Map.ofEntries(\n                    Map.entry(\"ipAddressType\", \"STATIC\"),\n                    Map.entry(\"ipAddress\", \"x.x.x.x\"),\n                    Map.entry(\"gatewayIp\", \"x.x.x.x\"),\n                    Map.entry(\"subnetMaskIp\", \"x.x.x.x\"),\n                    Map.entry(\"managementInterfaceId\", \"6\")\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  FTNT-FIREWALL-SV:\n    type: equinix:networkedge:Device\n    properties:\n      name: TF_FTNT-FIREWALL\n      projectId: XXXXXXXXXX\n      metroCode: ${sv.metroCode}\n      interfaceCount: 10\n      typeCode: FG-VM\n      selfManaged: true\n      byol: true\n      connectivity: PRIVATE\n      packageCode: VM02\n      notifications:\n        - test@eq.com\n      accountNumber: ${sv.number}\n      version: 7.6.3\n      hostname: test\n      coreCount: 2\n      termLength: 1\n      vendorConfiguration:\n        gatewayIp: X.X.X.X\n        ipAddress: X.X.X.X\n        ipAddressType: STATIC\n        subnetMaskIp: x.x.x.x\n      secondaryDevice:\n        name: TF_FTNT-FIREWALL-secondary\n        metroCode: ${sv.metroCode}\n        hostname: fg-vm-znpd\n        notifications:\n          - john@equinix.com\n          - marry@equinix.com\n        accountNumber: ${sv.number}\n        vendorConfiguration:\n          ipAddressType: STATIC\n          ipAddress: x.x.x.x\n          gatewayIp: x.x.x.x\n          subnetMaskIp: x.x.x.x\n          managementInterfaceId: '6'\nvariables:\n  # Create FG VM ha device with connectivity PRIVATE and IP Address Type as STATIC\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n        name: account-name\n```\n{{% /example %}}\n\n{{% example %}}\n### example fortigate sdwan single device\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst fTNTSDWANSV = new equinix.networkedge.Device(\"FTNT-SDWAN-SV\", {\n    name: \"TF_FTNT-SDWAN\",\n    projectId: \"XXXXXXXXXX\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"FG-SDWAN\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"VM02\",\n    notifications: [\"test@eq.com\"],\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"7.0.14\",\n    hostname: \"test\",\n    coreCount: 2,\n    termLength: 1,\n    additionalBandwidth: 50,\n    aclTemplateId: \"XXXXXXXX\",\n    vendorConfiguration: {\n        adminPassword: \"XXXXX\",\n        controller1: \"X.X.X.X\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\nf_tntsdwansv = equinix.networkedge.Device(\"FTNT-SDWAN-SV\",\n    name=\"TF_FTNT-SDWAN\",\n    project_id=\"XXXXXXXXXX\",\n    metro_code=sv.metro_code,\n    type_code=\"FG-SDWAN\",\n    self_managed=True,\n    byol=True,\n    package_code=\"VM02\",\n    notifications=[\"test@eq.com\"],\n    account_number=sv.number,\n    version=\"7.0.14\",\n    hostname=\"test\",\n    core_count=2,\n    term_length=1,\n    additional_bandwidth=50,\n    acl_template_id=\"XXXXXXXX\",\n    vendor_configuration={\n        \"adminPassword\": \"XXXXX\",\n        \"controller1\": \"X.X.X.X\",\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"FTNT-SDWAN-SV\", \u0026networkedge.DeviceArgs{\n\t\t\tName:      pulumi.String(\"TF_FTNT-SDWAN\"),\n\t\t\tProjectId: pulumi.String(\"XXXXXXXXXX\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:    pulumi.String(\"FG-SDWAN\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol:        pulumi.Bool(true),\n\t\t\tPackageCode: pulumi.String(\"VM02\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t},\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:             pulumi.String(\"7.0.14\"),\n\t\t\tHostname:            pulumi.String(\"test\"),\n\t\t\tCoreCount:           pulumi.Int(2),\n\t\t\tTermLength:          pulumi.Int(1),\n\t\t\tAdditionalBandwidth: pulumi.Int(50),\n\t\t\tAclTemplateId:       pulumi.String(\"XXXXXXXX\"),\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"adminPassword\": pulumi.String(\"XXXXX\"),\n\t\t\t\t\"controller1\":   pulumi.String(\"X.X.X.X\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var fTNTSDWANSV = new Equinix.NetworkEdge.Device(\"FTNT-SDWAN-SV\", new()\n    {\n        Name = \"TF_FTNT-SDWAN\",\n        ProjectId = \"XXXXXXXXXX\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"FG-SDWAN\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"VM02\",\n        Notifications = new[]\n        {\n            \"test@eq.com\",\n        },\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"7.0.14\",\n        Hostname = \"test\",\n        CoreCount = 2,\n        TermLength = 1,\n        AdditionalBandwidth = 50,\n        AclTemplateId = \"XXXXXXXX\",\n        VendorConfiguration = \n        {\n            { \"adminPassword\", \"XXXXX\" },\n            { \"controller1\", \"X.X.X.X\" },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var fTNTSDWANSV = new Device(\"fTNTSDWANSV\", DeviceArgs.builder()\n            .name(\"TF_FTNT-SDWAN\")\n            .projectId(\"XXXXXXXXXX\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"FG-SDWAN\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"VM02\")\n            .notifications(\"test@eq.com\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"7.0.14\")\n            .hostname(\"test\")\n            .coreCount(2)\n            .termLength(1)\n            .additionalBandwidth(50)\n            .aclTemplateId(\"XXXXXXXX\")\n            .vendorConfiguration(Map.ofEntries(\n                Map.entry(\"adminPassword\", \"XXXXX\"),\n                Map.entry(\"controller1\", \"X.X.X.X\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  FTNT-SDWAN-SV:\n    type: equinix:networkedge:Device\n    properties:\n      name: TF_FTNT-SDWAN\n      projectId: XXXXXXXXXX\n      metroCode: ${sv.metroCode}\n      typeCode: FG-SDWAN\n      selfManaged: true\n      byol: true\n      packageCode: VM02\n      notifications:\n        - test@eq.com\n      accountNumber: ${sv.number}\n      version: 7.0.14\n      hostname: test\n      coreCount: 2\n      termLength: 1\n      additionalBandwidth: 50\n      aclTemplateId: XXXXXXXX\n      vendorConfiguration:\n        adminPassword: XXXXX\n        controller1: X.X.X.X\nvariables:\n  # Create Fortinet SDWAN single device\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example infoblox cluster device\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst iNFOBLOXSV = new equinix.networkedge.Device(\"INFOBLOX-SV\", {\n    name: \"TF_INFOBLOX\",\n    projectId: \"XXXXXXXXXX\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"INFOBLOX-GRID-MEMBER\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"STD\",\n    notifications: [\"test@eq.com\"],\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"9.0.5\",\n    connectivity: \"PRIVATE\",\n    coreCount: 8,\n    termLength: 1,\n    clusterDetails: {\n        clusterName: \"tf-infoblox-cluster\",\n        node0: {\n            vendorConfiguration: {\n                adminPassword: \"xxxxxxx\",\n                ipAddress: \"X.X.X.X\",\n                subnetMaskIp: \"X.X.X.X\",\n                gatewayIp: \"X.X.X.X\",\n            },\n        },\n        node1: {\n            vendorConfiguration: {\n                adminPassword: \"xxxxxxx\",\n                ipAddress: \"X.X.X.X\",\n                subnetMaskIp: \"X.X.X.X\",\n                gatewayIp: \"X.X.X.X\",\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\ni_nfobloxsv = equinix.networkedge.Device(\"INFOBLOX-SV\",\n    name=\"TF_INFOBLOX\",\n    project_id=\"XXXXXXXXXX\",\n    metro_code=sv.metro_code,\n    type_code=\"INFOBLOX-GRID-MEMBER\",\n    self_managed=True,\n    byol=True,\n    package_code=\"STD\",\n    notifications=[\"test@eq.com\"],\n    account_number=sv.number,\n    version=\"9.0.5\",\n    connectivity=\"PRIVATE\",\n    core_count=8,\n    term_length=1,\n    cluster_details={\n        \"cluster_name\": \"tf-infoblox-cluster\",\n        \"node0\": {\n            \"vendor_configuration\": {\n                \"admin_password\": \"xxxxxxx\",\n                \"ip_address\": \"X.X.X.X\",\n                \"subnet_mask_ip\": \"X.X.X.X\",\n                \"gateway_ip\": \"X.X.X.X\",\n            },\n        },\n        \"node1\": {\n            \"vendor_configuration\": {\n                \"admin_password\": \"xxxxxxx\",\n                \"ip_address\": \"X.X.X.X\",\n                \"subnet_mask_ip\": \"X.X.X.X\",\n                \"gateway_ip\": \"X.X.X.X\",\n            },\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"INFOBLOX-SV\", \u0026networkedge.DeviceArgs{\n\t\t\tName:      pulumi.String(\"TF_INFOBLOX\"),\n\t\t\tProjectId: pulumi.String(\"XXXXXXXXXX\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:    pulumi.String(\"INFOBLOX-GRID-MEMBER\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol:        pulumi.Bool(true),\n\t\t\tPackageCode: pulumi.String(\"STD\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t},\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:      pulumi.String(\"9.0.5\"),\n\t\t\tConnectivity: pulumi.String(\"PRIVATE\"),\n\t\t\tCoreCount:    pulumi.Int(8),\n\t\t\tTermLength:   pulumi.Int(1),\n\t\t\tClusterDetails: \u0026networkedge.DeviceClusterDetailsArgs{\n\t\t\t\tClusterName: pulumi.String(\"tf-infoblox-cluster\"),\n\t\t\t\tNode0: \u0026networkedge.DeviceClusterDetailsNode0Args{\n\t\t\t\t\tVendorConfiguration: \u0026networkedge.DeviceClusterDetailsNode0VendorConfigurationArgs{\n\t\t\t\t\t\tAdminPassword: pulumi.String(\"xxxxxxx\"),\n\t\t\t\t\t\tIpAddress:     pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\t\tSubnetMaskIp:  pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\t\tGatewayIp:     pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNode1: \u0026networkedge.DeviceClusterDetailsNode1Args{\n\t\t\t\t\tVendorConfiguration: \u0026networkedge.DeviceClusterDetailsNode1VendorConfigurationArgs{\n\t\t\t\t\t\tAdminPassword: pulumi.String(\"xxxxxxx\"),\n\t\t\t\t\t\tIpAddress:     pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\t\tSubnetMaskIp:  pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\t\tGatewayIp:     pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\t},\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var iNFOBLOXSV = new Equinix.NetworkEdge.Device(\"INFOBLOX-SV\", new()\n    {\n        Name = \"TF_INFOBLOX\",\n        ProjectId = \"XXXXXXXXXX\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"INFOBLOX-GRID-MEMBER\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"STD\",\n        Notifications = new[]\n        {\n            \"test@eq.com\",\n        },\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"9.0.5\",\n        Connectivity = \"PRIVATE\",\n        CoreCount = 8,\n        TermLength = 1,\n        ClusterDetails = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsArgs\n        {\n            ClusterName = \"tf-infoblox-cluster\",\n            Node0 = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode0Args\n            {\n                VendorConfiguration = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode0VendorConfigurationArgs\n                {\n                    AdminPassword = \"xxxxxxx\",\n                    IpAddress = \"X.X.X.X\",\n                    SubnetMaskIp = \"X.X.X.X\",\n                    GatewayIp = \"X.X.X.X\",\n                },\n            },\n            Node1 = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode1Args\n            {\n                VendorConfiguration = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode1VendorConfigurationArgs\n                {\n                    AdminPassword = \"xxxxxxx\",\n                    IpAddress = \"X.X.X.X\",\n                    SubnetMaskIp = \"X.X.X.X\",\n                    GatewayIp = \"X.X.X.X\",\n                },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode0Args;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode0VendorConfigurationArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode1Args;\nimport com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode1VendorConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var iNFOBLOXSV = new Device(\"iNFOBLOXSV\", DeviceArgs.builder()\n            .name(\"TF_INFOBLOX\")\n            .projectId(\"XXXXXXXXXX\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"INFOBLOX-GRID-MEMBER\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"STD\")\n            .notifications(\"test@eq.com\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"9.0.5\")\n            .connectivity(\"PRIVATE\")\n            .coreCount(8)\n            .termLength(1)\n            .clusterDetails(DeviceClusterDetailsArgs.builder()\n                .clusterName(\"tf-infoblox-cluster\")\n                .node0(DeviceClusterDetailsNode0Args.builder()\n                    .vendorConfiguration(DeviceClusterDetailsNode0VendorConfigurationArgs.builder()\n                        .adminPassword(\"xxxxxxx\")\n                        .ipAddress(\"X.X.X.X\")\n                        .subnetMaskIp(\"X.X.X.X\")\n                        .gatewayIp(\"X.X.X.X\")\n                        .build())\n                    .build())\n                .node1(DeviceClusterDetailsNode1Args.builder()\n                    .vendorConfiguration(DeviceClusterDetailsNode1VendorConfigurationArgs.builder()\n                        .adminPassword(\"xxxxxxx\")\n                        .ipAddress(\"X.X.X.X\")\n                        .subnetMaskIp(\"X.X.X.X\")\n                        .gatewayIp(\"X.X.X.X\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  INFOBLOX-SV:\n    type: equinix:networkedge:Device\n    properties:\n      name: TF_INFOBLOX\n      projectId: XXXXXXXXXX\n      metroCode: ${sv.metroCode}\n      typeCode: INFOBLOX-GRID-MEMBER\n      selfManaged: true\n      byol: true\n      packageCode: STD\n      notifications:\n        - test@eq.com\n      accountNumber: ${sv.number}\n      version: 9.0.5\n      connectivity: PRIVATE\n      coreCount: 8\n      termLength: 1\n      clusterDetails:\n        clusterName: tf-infoblox-cluster\n        node0:\n          vendorConfiguration:\n            adminPassword: xxxxxxx\n            ipAddress: X.X.X.X\n            subnetMaskIp: X.X.X.X\n            gatewayIp: X.X.X.X\n        node1:\n          vendorConfiguration:\n            adminPassword: xxxxxxx\n            ipAddress: X.X.X.X\n            subnetMaskIp: X.X.X.X\n            gatewayIp: X.X.X.X\nvariables:\n  # Create Infoblox Grid Member HA device\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example infoblox ha device\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst iNFOBLOXSV = new equinix.networkedge.Device(\"INFOBLOX-SV\", {\n    name: \"TF_INFOBLOX\",\n    projectId: \"XXXXXXXXXX\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"INFOBLOX-GRID-MEMBER\",\n    selfManaged: true,\n    connectivity: \"PRIVATE\",\n    byol: true,\n    packageCode: \"STD\",\n    notifications: [\"test@eq.com\"],\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"9.0.5\",\n    coreCount: 8,\n    termLength: 1,\n    vendorConfiguration: {\n        adminPassword: \"X.X.X.X\",\n        ipAddress: \"X.X.X.X\",\n        subnetMaskIp: \"X.X.X.X\",\n        gatewayIp: \"X.X.X.X\",\n    },\n    secondaryDevice: {\n        name: \"TF_INFOBLOX-Sec\",\n        metroCode: sv.apply(sv =\u003e sv.metroCode),\n        accountNumber: sv.apply(sv =\u003e sv.number),\n        notifications: [\"test@eq.com\"],\n        vendorConfiguration: {\n            adminPassword: \"X.X.X.X\",\n            ipAddress: \"X.X.X.X\",\n            subnetMaskIp: \"X.X.X.X\",\n            gatewayIp: \"X.X.X.X\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\ni_nfobloxsv = equinix.networkedge.Device(\"INFOBLOX-SV\",\n    name=\"TF_INFOBLOX\",\n    project_id=\"XXXXXXXXXX\",\n    metro_code=sv.metro_code,\n    type_code=\"INFOBLOX-GRID-MEMBER\",\n    self_managed=True,\n    connectivity=\"PRIVATE\",\n    byol=True,\n    package_code=\"STD\",\n    notifications=[\"test@eq.com\"],\n    account_number=sv.number,\n    version=\"9.0.5\",\n    core_count=8,\n    term_length=1,\n    vendor_configuration={\n        \"adminPassword\": \"X.X.X.X\",\n        \"ipAddress\": \"X.X.X.X\",\n        \"subnetMaskIp\": \"X.X.X.X\",\n        \"gatewayIp\": \"X.X.X.X\",\n    },\n    secondary_device={\n        \"name\": \"TF_INFOBLOX-Sec\",\n        \"metro_code\": sv.metro_code,\n        \"account_number\": sv.number,\n        \"notifications\": [\"test@eq.com\"],\n        \"vendor_configuration\": {\n            \"adminPassword\": \"X.X.X.X\",\n            \"ipAddress\": \"X.X.X.X\",\n            \"subnetMaskIp\": \"X.X.X.X\",\n            \"gatewayIp\": \"X.X.X.X\",\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"INFOBLOX-SV\", \u0026networkedge.DeviceArgs{\n\t\t\tName:      pulumi.String(\"TF_INFOBLOX\"),\n\t\t\tProjectId: pulumi.String(\"XXXXXXXXXX\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:     pulumi.String(\"INFOBLOX-GRID-MEMBER\"),\n\t\t\tSelfManaged:  pulumi.Bool(true),\n\t\t\tConnectivity: pulumi.String(\"PRIVATE\"),\n\t\t\tByol:         pulumi.Bool(true),\n\t\t\tPackageCode:  pulumi.String(\"STD\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t},\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:    pulumi.String(\"9.0.5\"),\n\t\t\tCoreCount:  pulumi.Int(8),\n\t\t\tTermLength: pulumi.Int(1),\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"adminPassword\": pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\"ipAddress\":     pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\"subnetMaskIp\":  pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\"gatewayIp\":     pulumi.String(\"X.X.X.X\"),\n\t\t\t},\n\t\t\tSecondaryDevice: \u0026networkedge.DeviceSecondaryDeviceArgs{\n\t\t\t\tName: pulumi.String(\"TF_INFOBLOX-Sec\"),\n\t\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tAccountNumber: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t\t},\n\t\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\t\"adminPassword\": pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\t\"ipAddress\":     pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\t\"subnetMaskIp\":  pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\t\"gatewayIp\":     pulumi.String(\"X.X.X.X\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var iNFOBLOXSV = new Equinix.NetworkEdge.Device(\"INFOBLOX-SV\", new()\n    {\n        Name = \"TF_INFOBLOX\",\n        ProjectId = \"XXXXXXXXXX\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"INFOBLOX-GRID-MEMBER\",\n        SelfManaged = true,\n        Connectivity = \"PRIVATE\",\n        Byol = true,\n        PackageCode = \"STD\",\n        Notifications = new[]\n        {\n            \"test@eq.com\",\n        },\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"9.0.5\",\n        CoreCount = 8,\n        TermLength = 1,\n        VendorConfiguration = \n        {\n            { \"adminPassword\", \"X.X.X.X\" },\n            { \"ipAddress\", \"X.X.X.X\" },\n            { \"subnetMaskIp\", \"X.X.X.X\" },\n            { \"gatewayIp\", \"X.X.X.X\" },\n        },\n        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs\n        {\n            Name = \"TF_INFOBLOX-Sec\",\n            MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n            AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n            Notifications = new[]\n            {\n                \"test@eq.com\",\n            },\n            VendorConfiguration = \n            {\n                { \"adminPassword\", \"X.X.X.X\" },\n                { \"ipAddress\", \"X.X.X.X\" },\n                { \"subnetMaskIp\", \"X.X.X.X\" },\n                { \"gatewayIp\", \"X.X.X.X\" },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var iNFOBLOXSV = new Device(\"iNFOBLOXSV\", DeviceArgs.builder()\n            .name(\"TF_INFOBLOX\")\n            .projectId(\"XXXXXXXXXX\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"INFOBLOX-GRID-MEMBER\")\n            .selfManaged(true)\n            .connectivity(\"PRIVATE\")\n            .byol(true)\n            .packageCode(\"STD\")\n            .notifications(\"test@eq.com\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"9.0.5\")\n            .coreCount(8)\n            .termLength(1)\n            .vendorConfiguration(Map.ofEntries(\n                Map.entry(\"adminPassword\", \"X.X.X.X\"),\n                Map.entry(\"ipAddress\", \"X.X.X.X\"),\n                Map.entry(\"subnetMaskIp\", \"X.X.X.X\"),\n                Map.entry(\"gatewayIp\", \"X.X.X.X\")\n            ))\n            .secondaryDevice(DeviceSecondaryDeviceArgs.builder()\n                .name(\"TF_INFOBLOX-Sec\")\n                .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n                .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n                .notifications(\"test@eq.com\")\n                .vendorConfiguration(Map.ofEntries(\n                    Map.entry(\"adminPassword\", \"X.X.X.X\"),\n                    Map.entry(\"ipAddress\", \"X.X.X.X\"),\n                    Map.entry(\"subnetMaskIp\", \"X.X.X.X\"),\n                    Map.entry(\"gatewayIp\", \"X.X.X.X\")\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  INFOBLOX-SV:\n    type: equinix:networkedge:Device\n    properties:\n      name: TF_INFOBLOX\n      projectId: XXXXXXXXXX\n      metroCode: ${sv.metroCode}\n      typeCode: INFOBLOX-GRID-MEMBER\n      selfManaged: true\n      connectivity: PRIVATE\n      byol: true\n      packageCode: STD\n      notifications:\n        - test@eq.com\n      accountNumber: ${sv.number}\n      version: 9.0.5\n      coreCount: 8\n      termLength: 1\n      vendorConfiguration:\n        adminPassword: X.X.X.X\n        ipAddress: X.X.X.X\n        subnetMaskIp: X.X.X.X\n        gatewayIp: X.X.X.X\n      secondaryDevice:\n        name: TF_INFOBLOX-Sec\n        metroCode: ${sv.metroCode}\n        accountNumber: ${sv.number}\n        notifications:\n          - test@eq.com\n        vendorConfiguration:\n          adminPassword: X.X.X.X\n          ipAddress: X.X.X.X\n          subnetMaskIp: X.X.X.X\n          gatewayIp: X.X.X.X\nvariables:\n  # Create Infoblox Grid Member HA device\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example infoblox single device\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst iNFOBLOXSV = new equinix.networkedge.Device(\"INFOBLOX-SV\", {\n    name: \"TF_INFOBLOX\",\n    projectId: \"XXXXXXXXXX\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"INFOBLOX-GRID-MEMBER\",\n    selfManaged: true,\n    byol: true,\n    connectivity: \"PRIVATE\",\n    packageCode: \"STD\",\n    notifications: [\"test@eq.com\"],\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"9.0.5\",\n    coreCount: 8,\n    termLength: 1,\n    vendorConfiguration: {\n        adminPassword: \"xxxxxx\",\n        ipAddress: \"X.X.X.X\",\n        subnetMaskIp: \"X.X.X.X\",\n        gatewayIp: \"X.X.X.X\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\ni_nfobloxsv = equinix.networkedge.Device(\"INFOBLOX-SV\",\n    name=\"TF_INFOBLOX\",\n    project_id=\"XXXXXXXXXX\",\n    metro_code=sv.metro_code,\n    type_code=\"INFOBLOX-GRID-MEMBER\",\n    self_managed=True,\n    byol=True,\n    connectivity=\"PRIVATE\",\n    package_code=\"STD\",\n    notifications=[\"test@eq.com\"],\n    account_number=sv.number,\n    version=\"9.0.5\",\n    core_count=8,\n    term_length=1,\n    vendor_configuration={\n        \"adminPassword\": \"xxxxxx\",\n        \"ipAddress\": \"X.X.X.X\",\n        \"subnetMaskIp\": \"X.X.X.X\",\n        \"gatewayIp\": \"X.X.X.X\",\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"INFOBLOX-SV\", \u0026networkedge.DeviceArgs{\n\t\t\tName:      pulumi.String(\"TF_INFOBLOX\"),\n\t\t\tProjectId: pulumi.String(\"XXXXXXXXXX\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:     pulumi.String(\"INFOBLOX-GRID-MEMBER\"),\n\t\t\tSelfManaged:  pulumi.Bool(true),\n\t\t\tByol:         pulumi.Bool(true),\n\t\t\tConnectivity: pulumi.String(\"PRIVATE\"),\n\t\t\tPackageCode:  pulumi.String(\"STD\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t},\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:    pulumi.String(\"9.0.5\"),\n\t\t\tCoreCount:  pulumi.Int(8),\n\t\t\tTermLength: pulumi.Int(1),\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"adminPassword\": pulumi.String(\"xxxxxx\"),\n\t\t\t\t\"ipAddress\":     pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\"subnetMaskIp\":  pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\"gatewayIp\":     pulumi.String(\"X.X.X.X\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var iNFOBLOXSV = new Equinix.NetworkEdge.Device(\"INFOBLOX-SV\", new()\n    {\n        Name = \"TF_INFOBLOX\",\n        ProjectId = \"XXXXXXXXXX\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"INFOBLOX-GRID-MEMBER\",\n        SelfManaged = true,\n        Byol = true,\n        Connectivity = \"PRIVATE\",\n        PackageCode = \"STD\",\n        Notifications = new[]\n        {\n            \"test@eq.com\",\n        },\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"9.0.5\",\n        CoreCount = 8,\n        TermLength = 1,\n        VendorConfiguration = \n        {\n            { \"adminPassword\", \"xxxxxx\" },\n            { \"ipAddress\", \"X.X.X.X\" },\n            { \"subnetMaskIp\", \"X.X.X.X\" },\n            { \"gatewayIp\", \"X.X.X.X\" },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var iNFOBLOXSV = new Device(\"iNFOBLOXSV\", DeviceArgs.builder()\n            .name(\"TF_INFOBLOX\")\n            .projectId(\"XXXXXXXXXX\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"INFOBLOX-GRID-MEMBER\")\n            .selfManaged(true)\n            .byol(true)\n            .connectivity(\"PRIVATE\")\n            .packageCode(\"STD\")\n            .notifications(\"test@eq.com\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"9.0.5\")\n            .coreCount(8)\n            .termLength(1)\n            .vendorConfiguration(Map.ofEntries(\n                Map.entry(\"adminPassword\", \"xxxxxx\"),\n                Map.entry(\"ipAddress\", \"X.X.X.X\"),\n                Map.entry(\"subnetMaskIp\", \"X.X.X.X\"),\n                Map.entry(\"gatewayIp\", \"X.X.X.X\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  INFOBLOX-SV:\n    type: equinix:networkedge:Device\n    properties:\n      name: TF_INFOBLOX\n      projectId: XXXXXXXXXX\n      metroCode: ${sv.metroCode}\n      typeCode: INFOBLOX-GRID-MEMBER\n      selfManaged: true\n      byol: true\n      connectivity: PRIVATE\n      packageCode: STD\n      notifications:\n        - test@eq.com\n      accountNumber: ${sv.number}\n      version: 9.0.5\n      coreCount: 8\n      termLength: 1\n      vendorConfiguration:\n        adminPassword: xxxxxx\n        ipAddress: X.X.X.X\n        subnetMaskIp: X.X.X.X\n        gatewayIp: X.X.X.X\nvariables:\n  # Create Infoblox Grid Member Single device\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example versa sdwan ha device\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst fTNTSDWANSV = new equinix.networkedge.Device(\"FTNT-SDWAN-SV\", {\n    name: \"TF_VERSA-SDWAN\",\n    projectId: \"XXXXXXXXX\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"VERSA_SDWAN\",\n    selfManaged: true,\n    byol: true,\n    packageCode: \"FLEX_VNF_2\",\n    notifications: [\"test@eq.com\"],\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"21.2.3\",\n    coreCount: 2,\n    termLength: 1,\n    additionalBandwidth: 50,\n    aclTemplateId: \"XXXXXXXXX\",\n    vendorConfiguration: {\n        controller1: \"X.X.X.X\",\n        controller2: \"X.X.X.X\",\n        localId: \"test@test.com\",\n        remoteId: \"test@test.com\",\n        serialNumber: \"4\",\n    },\n    secondaryDevice: {\n        name: \"Praveena_TF_VERSA\",\n        metroCode: sv.apply(sv =\u003e sv.metroCode),\n        accountNumber: sv.apply(sv =\u003e sv.number),\n        aclTemplateId: \"XXXXXXXX\",\n        notifications: [\"test@eq.com\"],\n        vendorConfiguration: {\n            controller1: \"X.X.X.X\",\n            controller2: \"X.X.X.X\",\n            localId: \"test@test.com\",\n            remoteId: \"test@test.com\",\n            serialNumber: \"4\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\nf_tntsdwansv = equinix.networkedge.Device(\"FTNT-SDWAN-SV\",\n    name=\"TF_VERSA-SDWAN\",\n    project_id=\"XXXXXXXXX\",\n    metro_code=sv.metro_code,\n    type_code=\"VERSA_SDWAN\",\n    self_managed=True,\n    byol=True,\n    package_code=\"FLEX_VNF_2\",\n    notifications=[\"test@eq.com\"],\n    account_number=sv.number,\n    version=\"21.2.3\",\n    core_count=2,\n    term_length=1,\n    additional_bandwidth=50,\n    acl_template_id=\"XXXXXXXXX\",\n    vendor_configuration={\n        \"controller1\": \"X.X.X.X\",\n        \"controller2\": \"X.X.X.X\",\n        \"localId\": \"test@test.com\",\n        \"remoteId\": \"test@test.com\",\n        \"serialNumber\": \"4\",\n    },\n    secondary_device={\n        \"name\": \"Praveena_TF_VERSA\",\n        \"metro_code\": sv.metro_code,\n        \"account_number\": sv.number,\n        \"acl_template_id\": \"XXXXXXXX\",\n        \"notifications\": [\"test@eq.com\"],\n        \"vendor_configuration\": {\n            \"controller1\": \"X.X.X.X\",\n            \"controller2\": \"X.X.X.X\",\n            \"localId\": \"test@test.com\",\n            \"remoteId\": \"test@test.com\",\n            \"serialNumber\": \"4\",\n        },\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"FTNT-SDWAN-SV\", \u0026networkedge.DeviceArgs{\n\t\t\tName:      pulumi.String(\"TF_VERSA-SDWAN\"),\n\t\t\tProjectId: pulumi.String(\"XXXXXXXXX\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:    pulumi.String(\"VERSA_SDWAN\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol:        pulumi.Bool(true),\n\t\t\tPackageCode: pulumi.String(\"FLEX_VNF_2\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t},\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:             pulumi.String(\"21.2.3\"),\n\t\t\tCoreCount:           pulumi.Int(2),\n\t\t\tTermLength:          pulumi.Int(1),\n\t\t\tAdditionalBandwidth: pulumi.Int(50),\n\t\t\tAclTemplateId:       pulumi.String(\"XXXXXXXXX\"),\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"controller1\":  pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\"controller2\":  pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\"localId\":      pulumi.String(\"test@test.com\"),\n\t\t\t\t\"remoteId\":     pulumi.String(\"test@test.com\"),\n\t\t\t\t\"serialNumber\": pulumi.String(\"4\"),\n\t\t\t},\n\t\t\tSecondaryDevice: \u0026networkedge.DeviceSecondaryDeviceArgs{\n\t\t\t\tName: pulumi.String(\"Praveena_TF_VERSA\"),\n\t\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tAccountNumber: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tAclTemplateId: pulumi.String(\"XXXXXXXX\"),\n\t\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t\t},\n\t\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\t\"controller1\":  pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\t\"controller2\":  pulumi.String(\"X.X.X.X\"),\n\t\t\t\t\t\"localId\":      pulumi.String(\"test@test.com\"),\n\t\t\t\t\t\"remoteId\":     pulumi.String(\"test@test.com\"),\n\t\t\t\t\t\"serialNumber\": pulumi.String(\"4\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var fTNTSDWANSV = new Equinix.NetworkEdge.Device(\"FTNT-SDWAN-SV\", new()\n    {\n        Name = \"TF_VERSA-SDWAN\",\n        ProjectId = \"XXXXXXXXX\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"VERSA_SDWAN\",\n        SelfManaged = true,\n        Byol = true,\n        PackageCode = \"FLEX_VNF_2\",\n        Notifications = new[]\n        {\n            \"test@eq.com\",\n        },\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"21.2.3\",\n        CoreCount = 2,\n        TermLength = 1,\n        AdditionalBandwidth = 50,\n        AclTemplateId = \"XXXXXXXXX\",\n        VendorConfiguration = \n        {\n            { \"controller1\", \"X.X.X.X\" },\n            { \"controller2\", \"X.X.X.X\" },\n            { \"localId\", \"test@test.com\" },\n            { \"remoteId\", \"test@test.com\" },\n            { \"serialNumber\", \"4\" },\n        },\n        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs\n        {\n            Name = \"Praveena_TF_VERSA\",\n            MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n            AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n            AclTemplateId = \"XXXXXXXX\",\n            Notifications = new[]\n            {\n                \"test@eq.com\",\n            },\n            VendorConfiguration = \n            {\n                { \"controller1\", \"X.X.X.X\" },\n                { \"controller2\", \"X.X.X.X\" },\n                { \"localId\", \"test@test.com\" },\n                { \"remoteId\", \"test@test.com\" },\n                { \"serialNumber\", \"4\" },\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var fTNTSDWANSV = new Device(\"fTNTSDWANSV\", DeviceArgs.builder()\n            .name(\"TF_VERSA-SDWAN\")\n            .projectId(\"XXXXXXXXX\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"VERSA_SDWAN\")\n            .selfManaged(true)\n            .byol(true)\n            .packageCode(\"FLEX_VNF_2\")\n            .notifications(\"test@eq.com\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"21.2.3\")\n            .coreCount(2)\n            .termLength(1)\n            .additionalBandwidth(50)\n            .aclTemplateId(\"XXXXXXXXX\")\n            .vendorConfiguration(Map.ofEntries(\n                Map.entry(\"controller1\", \"X.X.X.X\"),\n                Map.entry(\"controller2\", \"X.X.X.X\"),\n                Map.entry(\"localId\", \"test@test.com\"),\n                Map.entry(\"remoteId\", \"test@test.com\"),\n                Map.entry(\"serialNumber\", \"4\")\n            ))\n            .secondaryDevice(DeviceSecondaryDeviceArgs.builder()\n                .name(\"Praveena_TF_VERSA\")\n                .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n                .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n                .aclTemplateId(\"XXXXXXXX\")\n                .notifications(\"test@eq.com\")\n                .vendorConfiguration(Map.ofEntries(\n                    Map.entry(\"controller1\", \"X.X.X.X\"),\n                    Map.entry(\"controller2\", \"X.X.X.X\"),\n                    Map.entry(\"localId\", \"test@test.com\"),\n                    Map.entry(\"remoteId\", \"test@test.com\"),\n                    Map.entry(\"serialNumber\", \"4\")\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  FTNT-SDWAN-SV:\n    type: equinix:networkedge:Device\n    properties:\n      name: TF_VERSA-SDWAN\n      projectId: XXXXXXXXX\n      metroCode: ${sv.metroCode}\n      typeCode: VERSA_SDWAN\n      selfManaged: true\n      byol: true\n      packageCode: FLEX_VNF_2\n      notifications:\n        - test@eq.com\n      accountNumber: ${sv.number}\n      version: 21.2.3\n      coreCount: 2\n      termLength: 1\n      additionalBandwidth: 50\n      aclTemplateId: XXXXXXXXX\n      vendorConfiguration:\n        controller1: X.X.X.X\n        controller2: X.X.X.X\n        localId: test@test.com\n        remoteId: test@test.com\n        serialNumber: '4'\n      secondaryDevice:\n        name: Praveena_TF_VERSA\n        metroCode: ${sv.metroCode}\n        accountNumber: ${sv.number}\n        aclTemplateId: XXXXXXXX\n        notifications:\n          - test@eq.com\n        vendorConfiguration:\n          controller1: X.X.X.X\n          controller2: X.X.X.X\n          localId: test@test.com\n          remoteId: test@test.com\n          serialNumber: '4'\nvariables:\n  # Create Fortinet SDWAN single device\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example vyos router ha device\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst vYOSAM = new equinix.networkedge.Device(\"VYOS-AM\", {\n    name: \"TF_VYOS\",\n    projectId: \"XXXXXXX\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"VYOS-ROUTER\",\n    selfManaged: true,\n    byol: false,\n    packageCode: \"STD\",\n    notifications: [\"test@eq.com\"],\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"1.4.1-2501\",\n    hostname: \"test\",\n    coreCount: 2,\n    termLength: 1,\n    additionalBandwidth: 50,\n    aclTemplateId: \"XXXXXXXX\",\n    sshKey: {\n        username: \"test\",\n        keyName: \"xxxxxxxx\",\n    },\n    secondaryDevice: {\n        name: \"TF_CHECKPOINT\",\n        metroCode: sv.apply(sv =\u003e sv.metroCode),\n        accountNumber: sv.apply(sv =\u003e sv.number),\n        hostname: \"test\",\n        aclTemplateId: \"XXXXXXXXXXX\",\n        notifications: [\"test@eq.com\"],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\nv_yosam = equinix.networkedge.Device(\"VYOS-AM\",\n    name=\"TF_VYOS\",\n    project_id=\"XXXXXXX\",\n    metro_code=sv.metro_code,\n    type_code=\"VYOS-ROUTER\",\n    self_managed=True,\n    byol=False,\n    package_code=\"STD\",\n    notifications=[\"test@eq.com\"],\n    account_number=sv.number,\n    version=\"1.4.1-2501\",\n    hostname=\"test\",\n    core_count=2,\n    term_length=1,\n    additional_bandwidth=50,\n    acl_template_id=\"XXXXXXXX\",\n    ssh_key={\n        \"username\": \"test\",\n        \"key_name\": \"xxxxxxxx\",\n    },\n    secondary_device={\n        \"name\": \"TF_CHECKPOINT\",\n        \"metro_code\": sv.metro_code,\n        \"account_number\": sv.number,\n        \"hostname\": \"test\",\n        \"acl_template_id\": \"XXXXXXXXXXX\",\n        \"notifications\": [\"test@eq.com\"],\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"VYOS-AM\", \u0026networkedge.DeviceArgs{\n\t\t\tName:      pulumi.String(\"TF_VYOS\"),\n\t\t\tProjectId: pulumi.String(\"XXXXXXX\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:    pulumi.String(\"VYOS-ROUTER\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol:        pulumi.Bool(false),\n\t\t\tPackageCode: pulumi.String(\"STD\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test@eq.com\"),\n\t\t\t},\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:             pulumi.String(\"1.4.1-2501\"),\n\t\t\tHostname:            pulumi.String(\"test\"),\n\t\t\tCoreCount:           pulumi.Int(2),\n\t\t\tTermLength:          pulumi.Int(1),\n\t\t\tAdditionalBandwidth: pulumi.Int(50),\n\t\t\tAclTemplateId:       pulumi.String(\"XXXXXXXX\"),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\t\tKeyName:  pulumi.String(\"xxxxxxxx\"),\n\t\t\t},\n\t\t\tSecondaryDevice: \u0026networkedge.DeviceSecondaryDeviceArgs{\n\t\t\t\tName: pulumi.String(\"TF_CHECKPOINT\"),\n\t\t\t\tMetroCode: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tAccountNumber: sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHostname:      pulumi.String(\"test\"),\n\t\t\t\tAclTemplateId: pulumi.String(\"XXXXXXXXXXX\"),\n\t\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test@eq.com\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var vYOSAM = new Equinix.NetworkEdge.Device(\"VYOS-AM\", new()\n    {\n        Name = \"TF_VYOS\",\n        ProjectId = \"XXXXXXX\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"VYOS-ROUTER\",\n        SelfManaged = true,\n        Byol = false,\n        PackageCode = \"STD\",\n        Notifications = new[]\n        {\n            \"test@eq.com\",\n        },\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"1.4.1-2501\",\n        Hostname = \"test\",\n        CoreCount = 2,\n        TermLength = 1,\n        AdditionalBandwidth = 50,\n        AclTemplateId = \"XXXXXXXX\",\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"test\",\n            KeyName = \"xxxxxxxx\",\n        },\n        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs\n        {\n            Name = \"TF_CHECKPOINT\",\n            MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n            AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n            Hostname = \"test\",\n            AclTemplateId = \"XXXXXXXXXXX\",\n            Notifications = new[]\n            {\n                \"test@eq.com\",\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var vYOSAM = new Device(\"vYOSAM\", DeviceArgs.builder()\n            .name(\"TF_VYOS\")\n            .projectId(\"XXXXXXX\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"VYOS-ROUTER\")\n            .selfManaged(true)\n            .byol(false)\n            .packageCode(\"STD\")\n            .notifications(\"test@eq.com\")\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"1.4.1-2501\")\n            .hostname(\"test\")\n            .coreCount(2)\n            .termLength(1)\n            .additionalBandwidth(50)\n            .aclTemplateId(\"XXXXXXXX\")\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"test\")\n                .keyName(\"xxxxxxxx\")\n                .build())\n            .secondaryDevice(DeviceSecondaryDeviceArgs.builder()\n                .name(\"TF_CHECKPOINT\")\n                .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n                .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n                .hostname(\"test\")\n                .aclTemplateId(\"XXXXXXXXXXX\")\n                .notifications(\"test@eq.com\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  VYOS-AM:\n    type: equinix:networkedge:Device\n    properties:\n      name: TF_VYOS\n      projectId: XXXXXXX\n      metroCode: ${sv.metroCode}\n      typeCode: VYOS-ROUTER\n      selfManaged: true\n      byol: false\n      packageCode: STD\n      notifications:\n        - test@eq.com\n      accountNumber: ${sv.number}\n      version: 1.4.1-2501\n      hostname: test\n      coreCount: 2\n      termLength: 1\n      additionalBandwidth: 50\n      aclTemplateId: XXXXXXXX\n      sshKey:\n        username: test\n        keyName: xxxxxxxx\n      secondaryDevice:\n        name: TF_CHECKPOINT\n        metroCode: ${sv.metroCode}\n        accountNumber: ${sv.number}\n        hostname: test\n        aclTemplateId: XXXXXXXXXXX\n        notifications:\n          - test@eq.com\nvariables:\n  # Create VYos Router HA device\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example zscaler appc\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst zscalerAppcSingle = new equinix.networkedge.Device(\"zscaler-appc-single\", {\n    name: \"tf-zscaler-appc\",\n    projectId: \"XXXXXX\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"ZSCALER-APPC\",\n    selfManaged: true,\n    byol: true,\n    connectivity: \"PRIVATE\",\n    packageCode: \"STD\",\n    notifications: [\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    termLength: 12,\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"23.395.1\",\n    interfaceCount: 1,\n    coreCount: 4,\n    vendorConfiguration: {\n        provisioningKey: \"XXXXXXXXXX\",\n        hostname: \"XXXX\",\n    },\n    sshKey: {\n        username: \"test\",\n        keyName: \"test-key\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\nzscaler_appc_single = equinix.networkedge.Device(\"zscaler-appc-single\",\n    name=\"tf-zscaler-appc\",\n    project_id=\"XXXXXX\",\n    metro_code=sv.metro_code,\n    type_code=\"ZSCALER-APPC\",\n    self_managed=True,\n    byol=True,\n    connectivity=\"PRIVATE\",\n    package_code=\"STD\",\n    notifications=[\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    term_length=12,\n    account_number=sv.number,\n    version=\"23.395.1\",\n    interface_count=1,\n    core_count=4,\n    vendor_configuration={\n        \"provisioningKey\": \"XXXXXXXXXX\",\n        \"hostname\": \"XXXX\",\n    },\n    ssh_key={\n        \"username\": \"test\",\n        \"key_name\": \"test-key\",\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"zscaler-appc-single\", \u0026networkedge.DeviceArgs{\n\t\t\tName:      pulumi.String(\"tf-zscaler-appc\"),\n\t\t\tProjectId: pulumi.String(\"XXXXXX\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:     pulumi.String(\"ZSCALER-APPC\"),\n\t\t\tSelfManaged:  pulumi.Bool(true),\n\t\t\tByol:         pulumi.Bool(true),\n\t\t\tConnectivity: pulumi.String(\"PRIVATE\"),\n\t\t\tPackageCode:  pulumi.String(\"STD\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\tpulumi.String(\"fred@equinix.com\"),\n\t\t\t},\n\t\t\tTermLength: pulumi.Int(12),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:        pulumi.String(\"23.395.1\"),\n\t\t\tInterfaceCount: pulumi.Int(1),\n\t\t\tCoreCount:      pulumi.Int(4),\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"provisioningKey\": pulumi.String(\"XXXXXXXXXX\"),\n\t\t\t\t\"hostname\":        pulumi.String(\"XXXX\"),\n\t\t\t},\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\t\tKeyName:  pulumi.String(\"test-key\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var zscalerAppcSingle = new Equinix.NetworkEdge.Device(\"zscaler-appc-single\", new()\n    {\n        Name = \"tf-zscaler-appc\",\n        ProjectId = \"XXXXXX\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"ZSCALER-APPC\",\n        SelfManaged = true,\n        Byol = true,\n        Connectivity = \"PRIVATE\",\n        PackageCode = \"STD\",\n        Notifications = new[]\n        {\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n            \"fred@equinix.com\",\n        },\n        TermLength = 12,\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"23.395.1\",\n        InterfaceCount = 1,\n        CoreCount = 4,\n        VendorConfiguration = \n        {\n            { \"provisioningKey\", \"XXXXXXXXXX\" },\n            { \"hostname\", \"XXXX\" },\n        },\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"test\",\n            KeyName = \"test-key\",\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var zscalerAppcSingle = new Device(\"zscalerAppcSingle\", DeviceArgs.builder()\n            .name(\"tf-zscaler-appc\")\n            .projectId(\"XXXXXX\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"ZSCALER-APPC\")\n            .selfManaged(true)\n            .byol(true)\n            .connectivity(\"PRIVATE\")\n            .packageCode(\"STD\")\n            .notifications(            \n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n                \"fred@equinix.com\")\n            .termLength(12)\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"23.395.1\")\n            .interfaceCount(1)\n            .coreCount(4)\n            .vendorConfiguration(Map.ofEntries(\n                Map.entry(\"provisioningKey\", \"XXXXXXXXXX\"),\n                Map.entry(\"hostname\", \"XXXX\")\n            ))\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"test\")\n                .keyName(\"test-key\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  zscaler-appc-single:\n    type: equinix:networkedge:Device\n    properties:\n      name: tf-zscaler-appc\n      projectId: XXXXXX\n      metroCode: ${sv.metroCode}\n      typeCode: ZSCALER-APPC\n      selfManaged: true\n      byol: true\n      connectivity: PRIVATE\n      packageCode: STD\n      notifications:\n        - john@equinix.com\n        - marry@equinix.com\n        - fred@equinix.com\n      termLength: 12\n      accountNumber: ${sv.number}\n      version: 23.395.1\n      interfaceCount: 1\n      coreCount: 4\n      vendorConfiguration:\n        provisioningKey: XXXXXXXXXX\n        hostname: XXXX\n      sshKey:\n        username: test\n        keyName: test-key\nvariables:\n  # Create ZSCALER APPC device\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n{{% example %}}\n### example zscaler pse\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.networkedge.getAccountOutput({\n    metroCode: \"SV\",\n});\nconst zscalerPseSingle = new equinix.networkedge.Device(\"zscaler-pse-single\", {\n    name: \"tf-zscaler-pse\",\n    projectId: \"XXXXXX\",\n    metroCode: sv.apply(sv =\u003e sv.metroCode),\n    typeCode: \"ZSCALER-PSE\",\n    selfManaged: true,\n    byol: true,\n    connectivity: \"PRIVATE\",\n    packageCode: \"STD\",\n    notifications: [\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    termLength: 12,\n    accountNumber: sv.apply(sv =\u003e sv.number),\n    version: \"23.395.1\",\n    interfaceCount: 1,\n    coreCount: 4,\n    vendorConfiguration: {\n        provisioningKey: \"XXXXXXXXXX\",\n        hostname: \"XXXX\",\n    },\n    sshKey: {\n        username: \"test\",\n        keyName: \"test-key\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.networkedge.get_account_output(metro_code=\"SV\")\nzscaler_pse_single = equinix.networkedge.Device(\"zscaler-pse-single\",\n    name=\"tf-zscaler-pse\",\n    project_id=\"XXXXXX\",\n    metro_code=sv.metro_code,\n    type_code=\"ZSCALER-PSE\",\n    self_managed=True,\n    byol=True,\n    connectivity=\"PRIVATE\",\n    package_code=\"STD\",\n    notifications=[\n        \"john@equinix.com\",\n        \"marry@equinix.com\",\n        \"fred@equinix.com\",\n    ],\n    term_length=12,\n    account_number=sv.number,\n    version=\"23.395.1\",\n    interface_count=1,\n    core_count=4,\n    vendor_configuration={\n        \"provisioningKey\": \"XXXXXXXXXX\",\n        \"hostname\": \"XXXX\",\n    },\n    ssh_key={\n        \"username\": \"test\",\n        \"key_name\": \"test-key\",\n    })\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsv := networkedge.GetAccountOutput(ctx, networkedge.GetAccountOutputArgs{\n\t\t\tMetroCode: pulumi.String(\"SV\"),\n\t\t}, nil)\n\t\t_, err := networkedge.NewDevice(ctx, \"zscaler-pse-single\", \u0026networkedge.DeviceArgs{\n\t\t\tName:      pulumi.String(\"tf-zscaler-pse\"),\n\t\t\tProjectId: pulumi.String(\"XXXXXX\"),\n\t\t\tMetroCode: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.MetroCode, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tTypeCode:     pulumi.String(\"ZSCALER-PSE\"),\n\t\t\tSelfManaged:  pulumi.Bool(true),\n\t\t\tByol:         pulumi.Bool(true),\n\t\t\tConnectivity: pulumi.String(\"PRIVATE\"),\n\t\t\tPackageCode:  pulumi.String(\"STD\"),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"john@equinix.com\"),\n\t\t\t\tpulumi.String(\"marry@equinix.com\"),\n\t\t\t\tpulumi.String(\"fred@equinix.com\"),\n\t\t\t},\n\t\t\tTermLength: pulumi.Int(12),\n\t\t\tAccountNumber: pulumi.String(sv.ApplyT(func(sv networkedge.GetAccountResult) (*string, error) {\n\t\t\t\treturn \u0026sv.Number, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tVersion:        pulumi.String(\"23.395.1\"),\n\t\t\tInterfaceCount: pulumi.Int(1),\n\t\t\tCoreCount:      pulumi.Int(4),\n\t\t\tVendorConfiguration: pulumi.StringMap{\n\t\t\t\t\"provisioningKey\": pulumi.String(\"XXXXXXXXXX\"),\n\t\t\t\t\"hostname\":        pulumi.String(\"XXXX\"),\n\t\t\t},\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\t\tKeyName:  pulumi.String(\"test-key\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"SV\",\n    });\n\n    var zscalerPseSingle = new Equinix.NetworkEdge.Device(\"zscaler-pse-single\", new()\n    {\n        Name = \"tf-zscaler-pse\",\n        ProjectId = \"XXXXXX\",\n        MetroCode = sv.Apply(getAccountResult =\u003e getAccountResult.MetroCode),\n        TypeCode = \"ZSCALER-PSE\",\n        SelfManaged = true,\n        Byol = true,\n        Connectivity = \"PRIVATE\",\n        PackageCode = \"STD\",\n        Notifications = new[]\n        {\n            \"john@equinix.com\",\n            \"marry@equinix.com\",\n            \"fred@equinix.com\",\n        },\n        TermLength = 12,\n        AccountNumber = sv.Apply(getAccountResult =\u003e getAccountResult.Number),\n        Version = \"23.395.1\",\n        InterfaceCount = 1,\n        CoreCount = 4,\n        VendorConfiguration = \n        {\n            { \"provisioningKey\", \"XXXXXXXXXX\" },\n            { \"hostname\", \"XXXX\" },\n        },\n        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n        {\n            Username = \"test\",\n            KeyName = \"test-key\",\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport com.pulumi.equinix.networkedge.Device;\nimport com.pulumi.equinix.networkedge.DeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"SV\")\n            .build());\n\n        var zscalerPseSingle = new Device(\"zscalerPseSingle\", DeviceArgs.builder()\n            .name(\"tf-zscaler-pse\")\n            .projectId(\"XXXXXX\")\n            .metroCode(sv.applyValue(_sv -\u003e _sv.metroCode()))\n            .typeCode(\"ZSCALER-PSE\")\n            .selfManaged(true)\n            .byol(true)\n            .connectivity(\"PRIVATE\")\n            .packageCode(\"STD\")\n            .notifications(            \n                \"john@equinix.com\",\n                \"marry@equinix.com\",\n                \"fred@equinix.com\")\n            .termLength(12)\n            .accountNumber(sv.applyValue(_sv -\u003e _sv.number()))\n            .version(\"23.395.1\")\n            .interfaceCount(1)\n            .coreCount(4)\n            .vendorConfiguration(Map.ofEntries(\n                Map.entry(\"provisioningKey\", \"XXXXXXXXXX\"),\n                Map.entry(\"hostname\", \"XXXX\")\n            ))\n            .sshKey(DeviceSshKeyArgs.builder()\n                .username(\"test\")\n                .keyName(\"test-key\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  zscaler-pse-single:\n    type: equinix:networkedge:Device\n    properties:\n      name: tf-zscaler-pse\n      projectId: XXXXXX\n      metroCode: ${sv.metroCode}\n      typeCode: ZSCALER-PSE\n      selfManaged: true\n      byol: true\n      connectivity: PRIVATE\n      packageCode: STD\n      notifications:\n        - john@equinix.com\n        - marry@equinix.com\n        - fred@equinix.com\n      termLength: 12\n      accountNumber: ${sv.number}\n      version: 23.395.1\n      interfaceCount: 1\n      coreCount: 4\n      vendorConfiguration:\n        provisioningKey: XXXXXXXXXX\n        hostname: XXXX\n      sshKey:\n        username: test\n        keyName: test-key\nvariables:\n  # Create ZSCALER APPC device\n  sv:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: SV\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID:\n\n```sh\n$ pulumi import equinix:networkedge/device:Device example {existing_id}\n```\n\nThe `license_token`, `mgmt_acl_template_uuid` and `cloud_init_file_id` fields can not be imported.\n\n\n{{% /examples %}}","properties":{"accountNumber":{"type":"string","description":"Billing account number for a device.\n"},"aclTemplateId":{"type":"string","description":"Identifier of a WAN interface ACL template that will be applied on the device.\n"},"additionalBandwidth":{"type":"integer","description":"Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).\n"},"asn":{"type":"integer","description":"(Autonomous System Number) Unique identifier for a network on the internet.\n"},"byol":{"type":"boolean","description":"Boolean value that determines device licensing mode, i.e., `bring your own license` or `subscription` (default).\n"},"cloudInitFileId":{"type":"string","description":"Identifier of a cloud init file that will be applied on the device.\n"},"clusterDetails":{"$ref":"#/types/equinix:networkedge/DeviceClusterDetails:DeviceClusterDetails","description":"An object that has the cluster details. See Cluster Details below for more details.\n"},"connectivity":{"type":"string","description":"Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS\n"},"coreCount":{"type":"integer","description":"Number of CPU cores used by device. (**NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.**)\n"},"diverseDeviceId":{"type":"string","description":"Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.\n"},"diverseDeviceName":{"type":"string","description":"Name of the device with diverse device UUID. This field is returned in device details if the device is created by passing diverse_device_id.\n"},"generateDefaultPassword":{"type":"boolean","description":"Boolean value that determines to create device with or without default password. Use this field to let Equinix know if you want your new device to be create with default admin password.\nThis field is only meaningful for C8000V Autonomous(single/ha) and Fortinet Firewall devices(single/ha/cluster). If not specified, by default device is created with admin password.\n"},"hostname":{"type":"string","description":"Device hostname prefix.\n"},"ibx":{"type":"string","description":"Device location Equinix Business Exchange name.\n"},"interfaceCount":{"type":"integer","description":"Number of network interfaces on a device. If not specified, default number for a given device type will be used.\n"},"interfaces":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/DeviceInterface:DeviceInterface"},"description":"List of device interfaces. See Interface Attribute below for more details.\n"},"licenseFile":{"type":"string","description":"Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.\n"},"licenseFileId":{"type":"string","description":"Identifier of a license file that will be applied on the device.\n"},"licenseStatus":{"type":"string","description":"Device license registration status. Possible values are `APPLYING_LICENSE`, `REGISTERED`, `APPLIED`, `WAITING_FOR_CLUSTER_SETUP`, `REGISTRATION_FAILED`.\n"},"licenseToken":{"type":"string","description":"License Token applicable for some device types in BYOL licensing mode.\n"},"metroCode":{"type":"string","description":"Device location metro code.\n"},"mgmtAclTemplateUuid":{"type":"string","description":"Identifier of an MGMT interface ACL template that will be applied on the device.\n"},"name":{"type":"string","description":"Device name.\n"},"notifications":{"type":"array","items":{"type":"string"},"description":"List of email addresses that will receive device status notifications.\n"},"orderReference":{"type":"string","description":"Name/number used to identify device order on the invoice.\n"},"packageCode":{"type":"string","description":"Device software package code.\n"},"projectId":{"type":"string","description":"Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.\n"},"purchaseOrderNumber":{"type":"string","description":"Purchase order number associated with a device order.\n"},"redundancyType":{"type":"string","description":"Device redundancy type applicable for HA devices, either primary or secondary.\n"},"redundantId":{"type":"string","description":"Unique identifier for a redundant device applicable for HA devices.\n"},"region":{"type":"string","description":"Device location region.\n"},"secondaryDevice":{"$ref":"#/types/equinix:networkedge/DeviceSecondaryDevice:DeviceSecondaryDevice","description":"Definition of secondary device for redundant device configurations. See Secondary Device below for more details.\n"},"selfManaged":{"type":"boolean","description":"Boolean value that determines device management mode, i.e., `self-managed` or `Equinix-managed` (default).\n"},"sshIpAddress":{"type":"string","description":"IP address of SSH enabled interface on the device.\n"},"sshIpFqdn":{"type":"string","description":"FQDN of SSH enabled interface on the device.\n"},"sshKey":{"$ref":"#/types/equinix:networkedge/DeviceSshKey:DeviceSshKey","description":"Definition of SSH key that will be provisioned on a device\n"},"status":{"type":"string","description":"interface status. One of `AVAILABLE`, `RESERVED`, `ASSIGNED`.\n"},"termLength":{"type":"integer","description":"Device term length.\n"},"throughput":{"type":"integer","description":"Device license throughput.\n"},"throughputUnit":{"type":"string","description":"License throughput unit. One of `Mbps` or `Gbps`.\n"},"tier":{"type":"integer","description":"Select bandwidth tier for your own license, i.e., `0` or `1` or `2` or `3`. Tiers applicable only for C8000V Autonomous or C8000V SDWAN (controller) device types. If not provided, tier is defaulted to '2'.\n"},"typeCode":{"type":"string","description":"Device type code.\n"},"uuid":{"type":"string","description":"Device unique identifier.\n"},"vendorConfiguration":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress, provisioningKey, ipAddress(applicable for infoblox only), subnetMaskIp(applicable for infoblox only), gatewayIp(applicable for infoblox only))\n* `ssh-key` - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.\n"},"version":{"type":"string","description":"Device software software version.\n"},"wanInterfaceId":{"type":"string","description":"device interface id picked for WAN\n"},"zoneCode":{"type":"string","description":"Device location zone code.\n"}},"required":["accountNumber","additionalBandwidth","asn","coreCount","diverseDeviceId","diverseDeviceName","hostname","ibx","interfaces","interfaceCount","licenseFileId","licenseStatus","metroCode","name","notifications","packageCode","projectId","redundancyType","redundantId","region","sshIpAddress","sshIpFqdn","status","termLength","tier","typeCode","uuid","vendorConfiguration","version","zoneCode"],"inputProperties":{"accountNumber":{"type":"string","description":"Billing account number for a device.\n","willReplaceOnChanges":true},"aclTemplateId":{"type":"string","description":"Identifier of a WAN interface ACL template that will be applied on the device.\n"},"additionalBandwidth":{"type":"integer","description":"Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).\n"},"byol":{"type":"boolean","description":"Boolean value that determines device licensing mode, i.e., `bring your own license` or `subscription` (default).\n","willReplaceOnChanges":true},"cloudInitFileId":{"type":"string","description":"Identifier of a cloud init file that will be applied on the device.\n","willReplaceOnChanges":true},"clusterDetails":{"$ref":"#/types/equinix:networkedge/DeviceClusterDetails:DeviceClusterDetails","description":"An object that has the cluster details. See Cluster Details below for more details.\n","willReplaceOnChanges":true},"connectivity":{"type":"string","description":"Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS\n","willReplaceOnChanges":true},"coreCount":{"type":"integer","description":"Number of CPU cores used by device. (**NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.**)\n"},"diverseDeviceId":{"type":"string","description":"Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.\n"},"generateDefaultPassword":{"type":"boolean","description":"Boolean value that determines to create device with or without default password. Use this field to let Equinix know if you want your new device to be create with default admin password.\nThis field is only meaningful for C8000V Autonomous(single/ha) and Fortinet Firewall devices(single/ha/cluster). If not specified, by default device is created with admin password.\n","willReplaceOnChanges":true},"hostname":{"type":"string","description":"Device hostname prefix.\n"},"interfaceCount":{"type":"integer","description":"Number of network interfaces on a device. If not specified, default number for a given device type will be used.\n","willReplaceOnChanges":true},"licenseFile":{"type":"string","description":"Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.\n","willReplaceOnChanges":true},"licenseFileId":{"type":"string","description":"Identifier of a license file that will be applied on the device.\n","willReplaceOnChanges":true},"licenseToken":{"type":"string","description":"License Token applicable for some device types in BYOL licensing mode.\n","willReplaceOnChanges":true},"metroCode":{"type":"string","description":"Device location metro code.\n","willReplaceOnChanges":true},"mgmtAclTemplateUuid":{"type":"string","description":"Identifier of an MGMT interface ACL template that will be applied on the device.\n"},"name":{"type":"string","description":"Device name.\n"},"notifications":{"type":"array","items":{"type":"string"},"description":"List of email addresses that will receive device status notifications.\n"},"orderReference":{"type":"string","description":"Name/number used to identify device order on the invoice.\n","willReplaceOnChanges":true},"packageCode":{"type":"string","description":"Device software package code.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.\n","willReplaceOnChanges":true},"purchaseOrderNumber":{"type":"string","description":"Purchase order number associated with a device order.\n","willReplaceOnChanges":true},"secondaryDevice":{"$ref":"#/types/equinix:networkedge/DeviceSecondaryDevice:DeviceSecondaryDevice","description":"Definition of secondary device for redundant device configurations. See Secondary Device below for more details.\n"},"selfManaged":{"type":"boolean","description":"Boolean value that determines device management mode, i.e., `self-managed` or `Equinix-managed` (default).\n","willReplaceOnChanges":true},"sshKey":{"$ref":"#/types/equinix:networkedge/DeviceSshKey:DeviceSshKey","description":"Definition of SSH key that will be provisioned on a device\n"},"termLength":{"type":"integer","description":"Device term length.\n"},"throughput":{"type":"integer","description":"Device license throughput.\n"},"throughputUnit":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:networkedge/throughputUnit:ThroughputUnit"}],"description":"License throughput unit. One of `Mbps` or `Gbps`.\n"},"tier":{"type":"integer","description":"Select bandwidth tier for your own license, i.e., `0` or `1` or `2` or `3`. Tiers applicable only for C8000V Autonomous or C8000V SDWAN (controller) device types. If not provided, tier is defaulted to '2'.\n","willReplaceOnChanges":true},"typeCode":{"type":"string","description":"Device type code.\n","willReplaceOnChanges":true},"vendorConfiguration":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress, provisioningKey, ipAddress(applicable for infoblox only), subnetMaskIp(applicable for infoblox only), gatewayIp(applicable for infoblox only))\n* `ssh-key` - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.\n"},"version":{"type":"string","description":"Device software software version.\n","willReplaceOnChanges":true},"wanInterfaceId":{"type":"string","description":"device interface id picked for WAN\n","willReplaceOnChanges":true}},"requiredInputs":["accountNumber","coreCount","metroCode","notifications","packageCode","termLength","typeCode","version"],"stateInputs":{"description":"Input properties used for looking up and filtering Device resources.\n","properties":{"accountNumber":{"type":"string","description":"Billing account number for a device.\n","willReplaceOnChanges":true},"aclTemplateId":{"type":"string","description":"Identifier of a WAN interface ACL template that will be applied on the device.\n"},"additionalBandwidth":{"type":"integer","description":"Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).\n"},"asn":{"type":"integer","description":"(Autonomous System Number) Unique identifier for a network on the internet.\n"},"byol":{"type":"boolean","description":"Boolean value that determines device licensing mode, i.e., `bring your own license` or `subscription` (default).\n","willReplaceOnChanges":true},"cloudInitFileId":{"type":"string","description":"Identifier of a cloud init file that will be applied on the device.\n","willReplaceOnChanges":true},"clusterDetails":{"$ref":"#/types/equinix:networkedge/DeviceClusterDetails:DeviceClusterDetails","description":"An object that has the cluster details. See Cluster Details below for more details.\n","willReplaceOnChanges":true},"connectivity":{"type":"string","description":"Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS\n","willReplaceOnChanges":true},"coreCount":{"type":"integer","description":"Number of CPU cores used by device. (**NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.**)\n"},"diverseDeviceId":{"type":"string","description":"Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.\n"},"diverseDeviceName":{"type":"string","description":"Name of the device with diverse device UUID. This field is returned in device details if the device is created by passing diverse_device_id.\n"},"generateDefaultPassword":{"type":"boolean","description":"Boolean value that determines to create device with or without default password. Use this field to let Equinix know if you want your new device to be create with default admin password.\nThis field is only meaningful for C8000V Autonomous(single/ha) and Fortinet Firewall devices(single/ha/cluster). If not specified, by default device is created with admin password.\n","willReplaceOnChanges":true},"hostname":{"type":"string","description":"Device hostname prefix.\n"},"ibx":{"type":"string","description":"Device location Equinix Business Exchange name.\n"},"interfaceCount":{"type":"integer","description":"Number of network interfaces on a device. If not specified, default number for a given device type will be used.\n","willReplaceOnChanges":true},"interfaces":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/DeviceInterface:DeviceInterface"},"description":"List of device interfaces. See Interface Attribute below for more details.\n"},"licenseFile":{"type":"string","description":"Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.\n","willReplaceOnChanges":true},"licenseFileId":{"type":"string","description":"Identifier of a license file that will be applied on the device.\n","willReplaceOnChanges":true},"licenseStatus":{"type":"string","description":"Device license registration status. Possible values are `APPLYING_LICENSE`, `REGISTERED`, `APPLIED`, `WAITING_FOR_CLUSTER_SETUP`, `REGISTRATION_FAILED`.\n"},"licenseToken":{"type":"string","description":"License Token applicable for some device types in BYOL licensing mode.\n","willReplaceOnChanges":true},"metroCode":{"type":"string","description":"Device location metro code.\n","willReplaceOnChanges":true},"mgmtAclTemplateUuid":{"type":"string","description":"Identifier of an MGMT interface ACL template that will be applied on the device.\n"},"name":{"type":"string","description":"Device name.\n"},"notifications":{"type":"array","items":{"type":"string"},"description":"List of email addresses that will receive device status notifications.\n"},"orderReference":{"type":"string","description":"Name/number used to identify device order on the invoice.\n","willReplaceOnChanges":true},"packageCode":{"type":"string","description":"Device software package code.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.\n","willReplaceOnChanges":true},"purchaseOrderNumber":{"type":"string","description":"Purchase order number associated with a device order.\n","willReplaceOnChanges":true},"redundancyType":{"type":"string","description":"Device redundancy type applicable for HA devices, either primary or secondary.\n"},"redundantId":{"type":"string","description":"Unique identifier for a redundant device applicable for HA devices.\n"},"region":{"type":"string","description":"Device location region.\n"},"secondaryDevice":{"$ref":"#/types/equinix:networkedge/DeviceSecondaryDevice:DeviceSecondaryDevice","description":"Definition of secondary device for redundant device configurations. See Secondary Device below for more details.\n"},"selfManaged":{"type":"boolean","description":"Boolean value that determines device management mode, i.e., `self-managed` or `Equinix-managed` (default).\n","willReplaceOnChanges":true},"sshIpAddress":{"type":"string","description":"IP address of SSH enabled interface on the device.\n"},"sshIpFqdn":{"type":"string","description":"FQDN of SSH enabled interface on the device.\n"},"sshKey":{"$ref":"#/types/equinix:networkedge/DeviceSshKey:DeviceSshKey","description":"Definition of SSH key that will be provisioned on a device\n"},"status":{"type":"string","description":"interface status. One of `AVAILABLE`, `RESERVED`, `ASSIGNED`.\n"},"termLength":{"type":"integer","description":"Device term length.\n"},"throughput":{"type":"integer","description":"Device license throughput.\n"},"throughputUnit":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:networkedge/throughputUnit:ThroughputUnit"}],"description":"License throughput unit. One of `Mbps` or `Gbps`.\n"},"tier":{"type":"integer","description":"Select bandwidth tier for your own license, i.e., `0` or `1` or `2` or `3`. Tiers applicable only for C8000V Autonomous or C8000V SDWAN (controller) device types. If not provided, tier is defaulted to '2'.\n","willReplaceOnChanges":true},"typeCode":{"type":"string","description":"Device type code.\n","willReplaceOnChanges":true},"uuid":{"type":"string","description":"Device unique identifier.\n"},"vendorConfiguration":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress, provisioningKey, ipAddress(applicable for infoblox only), subnetMaskIp(applicable for infoblox only), gatewayIp(applicable for infoblox only))\n* `ssh-key` - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.\n"},"version":{"type":"string","description":"Device software software version.\n","willReplaceOnChanges":true},"wanInterfaceId":{"type":"string","description":"device interface id picked for WAN\n","willReplaceOnChanges":true},"zoneCode":{"type":"string","description":"Device location zone code.\n"}},"type":"object"}},"equinix:networkedge/deviceLink:DeviceLink":{"description":"Resource `equinix.networkedge.DeviceLink` allows creation and management of Equinix Network Edge virtual network device links.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst test = new equinix.networkedge.DeviceLink(\"test\", {\n    name: \"test-link\",\n    subnet: \"192.168.40.64/27\",\n    projectId: \"a86d7112-d740-4758-9c9c-31e66373746b\",\n    devices: [\n        {\n            id: testEquinixNetworkDevice.uuid,\n            asn: 22111,\n            interfaceId: 6,\n        },\n        {\n            id: testEquinixNetworkDevice.secondaryDevice[0].uuid,\n            asn: 22333,\n            interfaceId: 7,\n        },\n    ],\n    links: [{\n        accountNumber: testEquinixNetworkDevice.accountNumber,\n        srcMetroCode: testEquinixNetworkDevice.metroCode,\n        dstMetroCode: testEquinixNetworkDevice.secondaryDevice[0].metroCode,\n        throughput: \"50\",\n        throughputUnit: \"Mbps\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.networkedge.DeviceLink(\"test\",\n    name=\"test-link\",\n    subnet=\"192.168.40.64/27\",\n    project_id=\"a86d7112-d740-4758-9c9c-31e66373746b\",\n    devices=[\n        {\n            \"id\": test_equinix_network_device[\"uuid\"],\n            \"asn\": 22111,\n            \"interface_id\": 6,\n        },\n        {\n            \"id\": test_equinix_network_device[\"secondaryDevice\"][0][\"uuid\"],\n            \"asn\": 22333,\n            \"interface_id\": 7,\n        },\n    ],\n    links=[{\n        \"account_number\": test_equinix_network_device[\"accountNumber\"],\n        \"src_metro_code\": test_equinix_network_device[\"metroCode\"],\n        \"dst_metro_code\": test_equinix_network_device[\"secondaryDevice\"][0][\"metroCode\"],\n        \"throughput\": \"50\",\n        \"throughput_unit\": \"Mbps\",\n    }])\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\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 := networkedge.NewDeviceLink(ctx, \"test\", \u0026networkedge.DeviceLinkArgs{\n\t\t\tName:      pulumi.String(\"test-link\"),\n\t\t\tSubnet:    pulumi.String(\"192.168.40.64/27\"),\n\t\t\tProjectId: pulumi.String(\"a86d7112-d740-4758-9c9c-31e66373746b\"),\n\t\t\tDevices: networkedge.DeviceLinkDeviceArray{\n\t\t\t\t\u0026networkedge.DeviceLinkDeviceArgs{\n\t\t\t\t\tId:          pulumi.Any(testEquinixNetworkDevice.Uuid),\n\t\t\t\t\tAsn:         pulumi.Int(22111),\n\t\t\t\t\tInterfaceId: pulumi.Int(6),\n\t\t\t\t},\n\t\t\t\t\u0026networkedge.DeviceLinkDeviceArgs{\n\t\t\t\t\tId:          pulumi.Any(testEquinixNetworkDevice.SecondaryDevice[0].Uuid),\n\t\t\t\t\tAsn:         pulumi.Int(22333),\n\t\t\t\t\tInterfaceId: pulumi.Int(7),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLinks: networkedge.DeviceLinkLinkArray{\n\t\t\t\t\u0026networkedge.DeviceLinkLinkArgs{\n\t\t\t\t\tAccountNumber:  pulumi.Any(testEquinixNetworkDevice.AccountNumber),\n\t\t\t\t\tSrcMetroCode:   pulumi.Any(testEquinixNetworkDevice.MetroCode),\n\t\t\t\t\tDstMetroCode:   pulumi.Any(testEquinixNetworkDevice.SecondaryDevice[0].MetroCode),\n\t\t\t\t\tThroughput:     pulumi.String(\"50\"),\n\t\t\t\t\tThroughputUnit: pulumi.String(\"Mbps\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Equinix.NetworkEdge.DeviceLink(\"test\", new()\n    {\n        Name = \"test-link\",\n        Subnet = \"192.168.40.64/27\",\n        ProjectId = \"a86d7112-d740-4758-9c9c-31e66373746b\",\n        Devices = new[]\n        {\n            new Equinix.NetworkEdge.Inputs.DeviceLinkDeviceArgs\n            {\n                Id = testEquinixNetworkDevice.Uuid,\n                Asn = 22111,\n                InterfaceId = 6,\n            },\n            new Equinix.NetworkEdge.Inputs.DeviceLinkDeviceArgs\n            {\n                Id = testEquinixNetworkDevice.SecondaryDevice[0].Uuid,\n                Asn = 22333,\n                InterfaceId = 7,\n            },\n        },\n        Links = new[]\n        {\n            new Equinix.NetworkEdge.Inputs.DeviceLinkLinkArgs\n            {\n                AccountNumber = testEquinixNetworkDevice.AccountNumber,\n                SrcMetroCode = testEquinixNetworkDevice.MetroCode,\n                DstMetroCode = testEquinixNetworkDevice.SecondaryDevice[0].MetroCode,\n                Throughput = \"50\",\n                ThroughputUnit = \"Mbps\",\n            },\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.DeviceLink;\nimport com.pulumi.equinix.networkedge.DeviceLinkArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceLinkDeviceArgs;\nimport com.pulumi.equinix.networkedge.inputs.DeviceLinkLinkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var test = new DeviceLink(\"test\", DeviceLinkArgs.builder()\n            .name(\"test-link\")\n            .subnet(\"192.168.40.64/27\")\n            .projectId(\"a86d7112-d740-4758-9c9c-31e66373746b\")\n            .devices(            \n                DeviceLinkDeviceArgs.builder()\n                    .id(testEquinixNetworkDevice.uuid())\n                    .asn(22111)\n                    .interfaceId(6)\n                    .build(),\n                DeviceLinkDeviceArgs.builder()\n                    .id(testEquinixNetworkDevice.secondaryDevice()[0].uuid())\n                    .asn(22333)\n                    .interfaceId(7)\n                    .build())\n            .links(DeviceLinkLinkArgs.builder()\n                .accountNumber(testEquinixNetworkDevice.accountNumber())\n                .srcMetroCode(testEquinixNetworkDevice.metroCode())\n                .dstMetroCode(testEquinixNetworkDevice.secondaryDevice()[0].metroCode())\n                .throughput(\"50\")\n                .throughputUnit(\"Mbps\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Example of device link with HA device pair\n  # where each device is in different metro\n  test:\n    type: equinix:networkedge:DeviceLink\n    properties:\n      name: test-link\n      subnet: 192.168.40.64/27\n      projectId: a86d7112-d740-4758-9c9c-31e66373746b\n      devices:\n        - id: ${testEquinixNetworkDevice.uuid}\n          asn: 22111\n          interfaceId: 6\n        - id: ${testEquinixNetworkDevice.secondaryDevice[0].uuid}\n          asn: 22333\n          interfaceId: 7\n      links:\n        - accountNumber: ${testEquinixNetworkDevice.accountNumber}\n          srcMetroCode: ${testEquinixNetworkDevice.metroCode}\n          dstMetroCode: ${testEquinixNetworkDevice.secondaryDevice[0].metroCode}\n          throughput: '50'\n          throughputUnit: Mbps\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID:\n\n```sh\n$ pulumi import equinix:networkedge/deviceLink:DeviceLink example {existing_id}\n```\n\n\n{{% /examples %}}","properties":{"devices":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/DeviceLinkDevice:DeviceLinkDevice"},"description":"definition of one or more devices belonging to the device link. See Device section below for more details.\n"},"links":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/DeviceLinkLink:DeviceLinkLink"},"description":"definition of one or more, inter metro, connections belonging to the device link. See Link section below for more details.\n","deprecationMessage":"Links is deprecated. Please use metro links instead."},"metroLinks":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/DeviceLinkMetroLink:DeviceLinkMetroLink"},"description":"definition of one or more, inter metro, connections belonging to the device link. See Metro Link section below for more details.\n"},"name":{"type":"string","description":"device link name.\n"},"projectId":{"type":"string","description":"Unique Identifier for the project resource where the device link is scoped to.If you leave it out, the device link will be created under the default project id of your organization.\n"},"redundancyType":{"type":"string","description":"Whether the connection should be created through Fabric's primary or secondary port. Supported values: `PRIMARY` (Default), `SECONDARY`, `HYBRID`\n"},"status":{"type":"string","description":"device link provisioning status on a given device. One of `PROVISIONING`, `PROVISIONED`, `DEPROVISIONING`, `DEPROVISIONED`, `FAILED`.\n"},"subnet":{"type":"string","description":"device link subnet in CIDR format. Not required for link between self configured devices.\n"},"uuid":{"type":"string","description":"Device link unique identifier.\n"}},"required":["devices","name","projectId","status","uuid"],"inputProperties":{"devices":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/DeviceLinkDevice:DeviceLinkDevice"},"description":"definition of one or more devices belonging to the device link. See Device section below for more details.\n"},"links":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/DeviceLinkLink:DeviceLinkLink"},"description":"definition of one or more, inter metro, connections belonging to the device link. See Link section below for more details.\n","deprecationMessage":"Links is deprecated. Please use metro links instead."},"metroLinks":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/DeviceLinkMetroLink:DeviceLinkMetroLink"},"description":"definition of one or more, inter metro, connections belonging to the device link. See Metro Link section below for more details.\n"},"name":{"type":"string","description":"device link name.\n"},"projectId":{"type":"string","description":"Unique Identifier for the project resource where the device link is scoped to.If you leave it out, the device link will be created under the default project id of your organization.\n","willReplaceOnChanges":true},"redundancyType":{"type":"string","description":"Whether the connection should be created through Fabric's primary or secondary port. Supported values: `PRIMARY` (Default), `SECONDARY`, `HYBRID`\n","willReplaceOnChanges":true},"subnet":{"type":"string","description":"device link subnet in CIDR format. Not required for link between self configured devices.\n"}},"requiredInputs":["devices"],"stateInputs":{"description":"Input properties used for looking up and filtering DeviceLink resources.\n","properties":{"devices":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/DeviceLinkDevice:DeviceLinkDevice"},"description":"definition of one or more devices belonging to the device link. See Device section below for more details.\n"},"links":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/DeviceLinkLink:DeviceLinkLink"},"description":"definition of one or more, inter metro, connections belonging to the device link. See Link section below for more details.\n","deprecationMessage":"Links is deprecated. Please use metro links instead."},"metroLinks":{"type":"array","items":{"$ref":"#/types/equinix:networkedge/DeviceLinkMetroLink:DeviceLinkMetroLink"},"description":"definition of one or more, inter metro, connections belonging to the device link. See Metro Link section below for more details.\n"},"name":{"type":"string","description":"device link name.\n"},"projectId":{"type":"string","description":"Unique Identifier for the project resource where the device link is scoped to.If you leave it out, the device link will be created under the default project id of your organization.\n","willReplaceOnChanges":true},"redundancyType":{"type":"string","description":"Whether the connection should be created through Fabric's primary or secondary port. Supported values: `PRIMARY` (Default), `SECONDARY`, `HYBRID`\n","willReplaceOnChanges":true},"status":{"type":"string","description":"device link provisioning status on a given device. One of `PROVISIONING`, `PROVISIONED`, `DEPROVISIONING`, `DEPROVISIONED`, `FAILED`.\n"},"subnet":{"type":"string","description":"device link subnet in CIDR format. Not required for link between self configured devices.\n"},"uuid":{"type":"string","description":"Device link unique identifier.\n"}},"type":"object"}},"equinix:networkedge/networkFile:NetworkFile":{"description":"Resource `equinix.networkedge.NetworkFile` allows creation and management of Equinix Network Edge files.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as std from \"@pulumi/std\";\n\nconst config = new pulumi.Config();\nconst filepath = config.get(\"filepath\") || \"fileFolder/fileName.txt\";\nconst testFile = new equinix.networkedge.NetworkFile(\"test-file\", {\n    fileName: \"fileName.txt\",\n    content: std.fileOutput({\n        input: filepath,\n    }).apply(invoke =\u003e invoke.result),\n    metroCode: equinix.index.Metro.SiliconValley,\n    deviceTypeCode: \"AVIATRIX_EDGE_10\",\n    processType: equinix.networkedge.FileType.CloudInit,\n    selfManaged: true,\n    byol: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\nimport pulumi_std as std\n\nconfig = pulumi.Config()\nfilepath = config.get(\"filepath\")\nif filepath is None:\n    filepath = \"fileFolder/fileName.txt\"\ntest_file = equinix.networkedge.NetworkFile(\"test-file\",\n    file_name=\"fileName.txt\",\n    content=std.file_output(input=filepath).apply(lambda invoke: invoke.result),\n    metro_code=equinix.Metro.SILICON_VALLEY,\n    device_type_code=\"AVIATRIX_EDGE_10\",\n    process_type=equinix.networkedge.FileType.CLOUD_INIT,\n    self_managed=True,\n    byol=True)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix\"\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tfilepath := \"fileFolder/fileName.txt\"\n\t\tif param := cfg.Get(\"filepath\"); param != \"\" {\n\t\t\tfilepath = param\n\t\t}\n\t\t_, err := networkedge.NewNetworkFile(ctx, \"test-file\", \u0026networkedge.NetworkFileArgs{\n\t\t\tFileName: pulumi.String(\"fileName.txt\"),\n\t\t\tContent: pulumi.String(std.FileOutput(ctx, std.FileOutputArgs{\n\t\t\t\tInput: pulumi.String(filepath),\n\t\t\t}, nil).ApplyT(func(invoke std.FileResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tMetroCode:      pulumi.String(equinix.MetroSiliconValley),\n\t\t\tDeviceTypeCode: pulumi.String(\"AVIATRIX_EDGE_10\"),\n\t\t\tProcessType:    pulumi.String(networkedge.FileTypeCloudInit),\n\t\t\tSelfManaged:    pulumi.Bool(true),\n\t\t\tByol:           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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var filepath = config.Get(\"filepath\") ?? \"fileFolder/fileName.txt\";\n    var testFile = new Equinix.NetworkEdge.NetworkFile(\"test-file\", new()\n    {\n        FileName = \"fileName.txt\",\n        Content = Std.File.Invoke(new()\n        {\n            Input = filepath,\n        }).Apply(invoke =\u003e invoke.Result),\n        MetroCode = Equinix.Metro.SiliconValley,\n        DeviceTypeCode = \"AVIATRIX_EDGE_10\",\n        ProcessType = Equinix.NetworkEdge.FileType.CloudInit,\n        SelfManaged = true,\n        Byol = true,\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkFile;\nimport com.pulumi.equinix.networkedge.NetworkFileArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var config = ctx.config();\n        final var filepath = config.get(\"filepath\").orElse(\"fileFolder/fileName.txt\");\n        var testFile = new NetworkFile(\"testFile\", NetworkFileArgs.builder()\n            .fileName(\"fileName.txt\")\n            .content(StdFunctions.file(FileArgs.builder()\n                .input(filepath)\n                .build()).applyValue(_invoke -\u003e _invoke.result()))\n            .metroCode(\"SV\")\n            .deviceTypeCode(\"AVIATRIX_EDGE_10\")\n            .processType(\"CLOUD_INIT\")\n            .selfManaged(true)\n            .byol(true)\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  filepath:\n    type: string\n    default: fileFolder/fileName.txt\nresources:\n  test-file:\n    type: equinix:networkedge:NetworkFile\n    properties:\n      fileName: fileName.txt\n      content:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: ${filepath}\n          return: result\n      metroCode: SV\n      deviceTypeCode: AVIATRIX_EDGE_10\n      processType: CLOUD_INIT\n      selfManaged: true\n      byol: true\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID:\n\n```sh\n$ pulumi import equinix:networkedge/networkFile:NetworkFile example {existing_id}\n```\n\nThe `content`, `self_managed` and `byol` fields can not be imported.\n\n\n{{% /examples %}}","properties":{"byol":{"type":"boolean","description":"Boolean value that determines device licensing mode, i.e., `bring your own license` or `subscription`.\n"},"content":{"type":"string","description":"Uploaded file content, expected to be a UTF-8 encoded string.\n","secret":true},"deviceTypeCode":{"type":"string","description":"Device type code\n"},"fileName":{"type":"string","description":"File name.\n"},"metroCode":{"type":"string","description":"File upload location metro code. It should match the device location metro code.\n"},"processType":{"type":"string","description":"File process type (LICENSE or CLOUD_INIT).\n"},"selfManaged":{"type":"boolean","description":"Boolean value that determines device management mode, i.e., `self-managed` or `Equinix-managed`.\n"},"status":{"type":"string","description":"File upload status.\n"},"uuid":{"type":"string","description":"Unique identifier of file resource.\n"}},"required":["byol","content","deviceTypeCode","fileName","metroCode","processType","selfManaged","status","uuid"],"inputProperties":{"byol":{"type":"boolean","description":"Boolean value that determines device licensing mode, i.e., `bring your own license` or `subscription`.\n","willReplaceOnChanges":true},"content":{"type":"string","description":"Uploaded file content, expected to be a UTF-8 encoded string.\n","secret":true,"willReplaceOnChanges":true},"deviceTypeCode":{"type":"string","description":"Device type code\n","willReplaceOnChanges":true},"fileName":{"type":"string","description":"File name.\n","willReplaceOnChanges":true},"metroCode":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:index/metro:Metro"}],"description":"File upload location metro code. It should match the device location metro code.\n","willReplaceOnChanges":true},"processType":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:networkedge/fileType:FileType"}],"description":"File process type (LICENSE or CLOUD_INIT).\n","willReplaceOnChanges":true},"selfManaged":{"type":"boolean","description":"Boolean value that determines device management mode, i.e., `self-managed` or `Equinix-managed`.\n","willReplaceOnChanges":true}},"requiredInputs":["byol","content","deviceTypeCode","fileName","metroCode","processType","selfManaged"],"stateInputs":{"description":"Input properties used for looking up and filtering NetworkFile resources.\n","properties":{"byol":{"type":"boolean","description":"Boolean value that determines device licensing mode, i.e., `bring your own license` or `subscription`.\n","willReplaceOnChanges":true},"content":{"type":"string","description":"Uploaded file content, expected to be a UTF-8 encoded string.\n","secret":true,"willReplaceOnChanges":true},"deviceTypeCode":{"type":"string","description":"Device type code\n","willReplaceOnChanges":true},"fileName":{"type":"string","description":"File name.\n","willReplaceOnChanges":true},"metroCode":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:index/metro:Metro"}],"description":"File upload location metro code. It should match the device location metro code.\n","willReplaceOnChanges":true},"processType":{"type":"string","oneOf":[{"type":"string"},{"type":"string","$ref":"#/types/equinix:networkedge/fileType:FileType"}],"description":"File process type (LICENSE or CLOUD_INIT).\n","willReplaceOnChanges":true},"selfManaged":{"type":"boolean","description":"Boolean value that determines device management mode, i.e., `self-managed` or `Equinix-managed`.\n","willReplaceOnChanges":true},"status":{"type":"string","description":"File upload status.\n"},"uuid":{"type":"string","description":"Unique identifier of file resource.\n"}},"type":"object"}},"equinix:networkedge/sshKey:SshKey":{"description":"Resource `equinix.networkedge.SshKey` allows creation and management of Equinix Network Edge SSH keys.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst john = new equinix.networkedge.SshKey(\"john\", {\n    name: \"johnKent\",\n    publicKey: \"  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDpXGdxljAyPp9vH97436U171cX  2gRkfPnpL8ebrk7ZBeeIpdjtd8mYpXf6fOI0o91TQXZTYtjABzeRgg6/m9hsMOnTHjzWpFyuj/hiPu  iie1WtT4NffSH1ALQFX/azouBLmdNiYFMLfEVPZleergAqsYOHGCiQuR6Qh5j0yc5Wx+LKxiRZyjsS  qo+EB8V6xBXi2i5PDJXK+dYG8YU9vdNeQdB84HvTWcGEnLR5w7pgC74pBVwzs3oWLy+3jWS0TKKtfl  mryeFRufXq87gEkC1MOWX88uQgjyCsemuhPdN++2WS57gu7vcqCMwMDZa7dukRS3JANBtbs7qQhp9N  w2PB4q6tohqUnSDxNjCqcoGeMNg/0kHeZcoVuznsjOrIDt0HgUApflkbtw1DP7Epfc2MJ0anf5GizM  8UjMYiXEvv2U/qu8Vb7d5bxAshXM5nh67NSrgst9YzSSodjUCnFQkniz6KLrTkX6c2y2gJ5c9tWhg5  SPkAc8OqLrmIwf5jGoHGh6eUJy7AtMcwE3iUpbrLw8EEoZDoDXkzh+RbOtSNKXWV4EAXsIhjQusCOW  WQnuAHCy9N4Td0Sntzu/xhCZ8xN0oO67Cqlsk98xSRLXeg21PuuhOYJw0DLF6L68zU2OO0RzqoNq/F  jIsltSUJPAIfYKL0yEefeNWOXSrasI1ezw== John.Kent@company.com\\n\",\n    type: \"RSA\",\n    projectId: \"a86d7112-d740-4758-9c9c-31e66373746b\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\njohn = equinix.networkedge.SshKey(\"john\",\n    name=\"johnKent\",\n    public_key=\"  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDpXGdxljAyPp9vH97436U171cX  2gRkfPnpL8ebrk7ZBeeIpdjtd8mYpXf6fOI0o91TQXZTYtjABzeRgg6/m9hsMOnTHjzWpFyuj/hiPu  iie1WtT4NffSH1ALQFX/azouBLmdNiYFMLfEVPZleergAqsYOHGCiQuR6Qh5j0yc5Wx+LKxiRZyjsS  qo+EB8V6xBXi2i5PDJXK+dYG8YU9vdNeQdB84HvTWcGEnLR5w7pgC74pBVwzs3oWLy+3jWS0TKKtfl  mryeFRufXq87gEkC1MOWX88uQgjyCsemuhPdN++2WS57gu7vcqCMwMDZa7dukRS3JANBtbs7qQhp9N  w2PB4q6tohqUnSDxNjCqcoGeMNg/0kHeZcoVuznsjOrIDt0HgUApflkbtw1DP7Epfc2MJ0anf5GizM  8UjMYiXEvv2U/qu8Vb7d5bxAshXM5nh67NSrgst9YzSSodjUCnFQkniz6KLrTkX6c2y2gJ5c9tWhg5  SPkAc8OqLrmIwf5jGoHGh6eUJy7AtMcwE3iUpbrLw8EEoZDoDXkzh+RbOtSNKXWV4EAXsIhjQusCOW  WQnuAHCy9N4Td0Sntzu/xhCZ8xN0oO67Cqlsk98xSRLXeg21PuuhOYJw0DLF6L68zU2OO0RzqoNq/F  jIsltSUJPAIfYKL0yEefeNWOXSrasI1ezw== John.Kent@company.com\\n\",\n    type=\"RSA\",\n    project_id=\"a86d7112-d740-4758-9c9c-31e66373746b\")\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\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 := networkedge.NewSshKey(ctx, \"john\", \u0026networkedge.SshKeyArgs{\n\t\t\tName:      pulumi.String(\"johnKent\"),\n\t\t\tPublicKey: pulumi.String(\"  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDpXGdxljAyPp9vH97436U171cX  2gRkfPnpL8ebrk7ZBeeIpdjtd8mYpXf6fOI0o91TQXZTYtjABzeRgg6/m9hsMOnTHjzWpFyuj/hiPu  iie1WtT4NffSH1ALQFX/azouBLmdNiYFMLfEVPZleergAqsYOHGCiQuR6Qh5j0yc5Wx+LKxiRZyjsS  qo+EB8V6xBXi2i5PDJXK+dYG8YU9vdNeQdB84HvTWcGEnLR5w7pgC74pBVwzs3oWLy+3jWS0TKKtfl  mryeFRufXq87gEkC1MOWX88uQgjyCsemuhPdN++2WS57gu7vcqCMwMDZa7dukRS3JANBtbs7qQhp9N  w2PB4q6tohqUnSDxNjCqcoGeMNg/0kHeZcoVuznsjOrIDt0HgUApflkbtw1DP7Epfc2MJ0anf5GizM  8UjMYiXEvv2U/qu8Vb7d5bxAshXM5nh67NSrgst9YzSSodjUCnFQkniz6KLrTkX6c2y2gJ5c9tWhg5  SPkAc8OqLrmIwf5jGoHGh6eUJy7AtMcwE3iUpbrLw8EEoZDoDXkzh+RbOtSNKXWV4EAXsIhjQusCOW  WQnuAHCy9N4Td0Sntzu/xhCZ8xN0oO67Cqlsk98xSRLXeg21PuuhOYJw0DLF6L68zU2OO0RzqoNq/F  jIsltSUJPAIfYKL0yEefeNWOXSrasI1ezw== John.Kent@company.com\\n\"),\n\t\t\tType:      pulumi.String(\"RSA\"),\n\t\t\tProjectId: pulumi.String(\"a86d7112-d740-4758-9c9c-31e66373746b\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var john = new Equinix.NetworkEdge.SshKey(\"john\", new()\n    {\n        Name = \"johnKent\",\n        PublicKey = @\"  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDpXGdxljAyPp9vH97436U171cX  2gRkfPnpL8ebrk7ZBeeIpdjtd8mYpXf6fOI0o91TQXZTYtjABzeRgg6/m9hsMOnTHjzWpFyuj/hiPu  iie1WtT4NffSH1ALQFX/azouBLmdNiYFMLfEVPZleergAqsYOHGCiQuR6Qh5j0yc5Wx+LKxiRZyjsS  qo+EB8V6xBXi2i5PDJXK+dYG8YU9vdNeQdB84HvTWcGEnLR5w7pgC74pBVwzs3oWLy+3jWS0TKKtfl  mryeFRufXq87gEkC1MOWX88uQgjyCsemuhPdN++2WS57gu7vcqCMwMDZa7dukRS3JANBtbs7qQhp9N  w2PB4q6tohqUnSDxNjCqcoGeMNg/0kHeZcoVuznsjOrIDt0HgUApflkbtw1DP7Epfc2MJ0anf5GizM  8UjMYiXEvv2U/qu8Vb7d5bxAshXM5nh67NSrgst9YzSSodjUCnFQkniz6KLrTkX6c2y2gJ5c9tWhg5  SPkAc8OqLrmIwf5jGoHGh6eUJy7AtMcwE3iUpbrLw8EEoZDoDXkzh+RbOtSNKXWV4EAXsIhjQusCOW  WQnuAHCy9N4Td0Sntzu/xhCZ8xN0oO67Cqlsk98xSRLXeg21PuuhOYJw0DLF6L68zU2OO0RzqoNq/F  jIsltSUJPAIfYKL0yEefeNWOXSrasI1ezw== John.Kent@company.com\n\",\n        Type = \"RSA\",\n        ProjectId = \"a86d7112-d740-4758-9c9c-31e66373746b\",\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.SshKey;\nimport com.pulumi.equinix.networkedge.SshKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var john = new SshKey(\"john\", SshKeyArgs.builder()\n            .name(\"johnKent\")\n            .publicKey(\"\"\"\n  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDpXGdxljAyPp9vH97436U171cX  2gRkfPnpL8ebrk7ZBeeIpdjtd8mYpXf6fOI0o91TQXZTYtjABzeRgg6/m9hsMOnTHjzWpFyuj/hiPu  iie1WtT4NffSH1ALQFX/azouBLmdNiYFMLfEVPZleergAqsYOHGCiQuR6Qh5j0yc5Wx+LKxiRZyjsS  qo+EB8V6xBXi2i5PDJXK+dYG8YU9vdNeQdB84HvTWcGEnLR5w7pgC74pBVwzs3oWLy+3jWS0TKKtfl  mryeFRufXq87gEkC1MOWX88uQgjyCsemuhPdN++2WS57gu7vcqCMwMDZa7dukRS3JANBtbs7qQhp9N  w2PB4q6tohqUnSDxNjCqcoGeMNg/0kHeZcoVuznsjOrIDt0HgUApflkbtw1DP7Epfc2MJ0anf5GizM  8UjMYiXEvv2U/qu8Vb7d5bxAshXM5nh67NSrgst9YzSSodjUCnFQkniz6KLrTkX6c2y2gJ5c9tWhg5  SPkAc8OqLrmIwf5jGoHGh6eUJy7AtMcwE3iUpbrLw8EEoZDoDXkzh+RbOtSNKXWV4EAXsIhjQusCOW  WQnuAHCy9N4Td0Sntzu/xhCZ8xN0oO67Cqlsk98xSRLXeg21PuuhOYJw0DLF6L68zU2OO0RzqoNq/F  jIsltSUJPAIfYKL0yEefeNWOXSrasI1ezw== John.Kent@company.com\n            \"\"\")\n            .type(\"RSA\")\n            .projectId(\"a86d7112-d740-4758-9c9c-31e66373746b\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  john:\n    type: equinix:networkedge:SshKey\n    properties:\n      name: johnKent\n      publicKey: |2\n          ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDpXGdxljAyPp9vH97436U171cX  2gRkfPnpL8ebrk7ZBeeIpdjtd8mYpXf6fOI0o91TQXZTYtjABzeRgg6/m9hsMOnTHjzWpFyuj/hiPu  iie1WtT4NffSH1ALQFX/azouBLmdNiYFMLfEVPZleergAqsYOHGCiQuR6Qh5j0yc5Wx+LKxiRZyjsS  qo+EB8V6xBXi2i5PDJXK+dYG8YU9vdNeQdB84HvTWcGEnLR5w7pgC74pBVwzs3oWLy+3jWS0TKKtfl  mryeFRufXq87gEkC1MOWX88uQgjyCsemuhPdN++2WS57gu7vcqCMwMDZa7dukRS3JANBtbs7qQhp9N  w2PB4q6tohqUnSDxNjCqcoGeMNg/0kHeZcoVuznsjOrIDt0HgUApflkbtw1DP7Epfc2MJ0anf5GizM  8UjMYiXEvv2U/qu8Vb7d5bxAshXM5nh67NSrgst9YzSSodjUCnFQkniz6KLrTkX6c2y2gJ5c9tWhg5  SPkAc8OqLrmIwf5jGoHGh6eUJy7AtMcwE3iUpbrLw8EEoZDoDXkzh+RbOtSNKXWV4EAXsIhjQusCOW  WQnuAHCy9N4Td0Sntzu/xhCZ8xN0oO67Cqlsk98xSRLXeg21PuuhOYJw0DLF6L68zU2OO0RzqoNq/F  jIsltSUJPAIfYKL0yEefeNWOXSrasI1ezw== John.Kent@company.com\n      type: RSA\n      projectId: a86d7112-d740-4758-9c9c-31e66373746b\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID:\n\n```sh\n$ pulumi import equinix:networkedge/sshKey:SshKey example {existing_id}\n```\n\n\n{{% /examples %}}","properties":{"name":{"type":"string","description":"The name of SSH key used for identification.\n"},"projectId":{"type":"string","description":"Unique Identifier for the project resource where the SSH key is scoped to.If you leave it out, the ssh key will be created under the default project id of your organization.\n"},"publicKey":{"type":"string","description":"The SSH public key. If this is a file, it can be read using the file interpolation function.\n"},"type":{"type":"string","description":"The type of SSH key: `RSA` (default) or `DSA`.\n"},"uuid":{"type":"string","description":"The unique identifier of the key\n"}},"required":["name","projectId","publicKey","uuid"],"inputProperties":{"name":{"type":"string","description":"The name of SSH key used for identification.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"Unique Identifier for the project resource where the SSH key is scoped to.If you leave it out, the ssh key will be created under the default project id of your organization.\n","willReplaceOnChanges":true},"publicKey":{"type":"string","description":"The SSH public key. If this is a file, it can be read using the file interpolation function.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The type of SSH key: `RSA` (default) or `DSA`.\n","willReplaceOnChanges":true}},"requiredInputs":["publicKey"],"stateInputs":{"description":"Input properties used for looking up and filtering SshKey resources.\n","properties":{"name":{"type":"string","description":"The name of SSH key used for identification.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"Unique Identifier for the project resource where the SSH key is scoped to.If you leave it out, the ssh key will be created under the default project id of your organization.\n","willReplaceOnChanges":true},"publicKey":{"type":"string","description":"The SSH public key. If this is a file, it can be read using the file interpolation function.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The type of SSH key: `RSA` (default) or `DSA`.\n","willReplaceOnChanges":true},"uuid":{"type":"string","description":"The unique identifier of the key\n"}},"type":"object"}},"equinix:networkedge/sshUser:SshUser":{"description":"Resource `equinix.networkedge.SshUser` allows creation and management of Equinix Network Edge SSH users.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst john = new equinix.networkedge.SshUser(\"john\", {\n    username: \"john\",\n    password: \"secret\",\n    deviceIds: [\n        \"csr1000v-ha-uuid\",\n        \"csr1000v-ha-redundant-uuid\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\njohn = equinix.networkedge.SshUser(\"john\",\n    username=\"john\",\n    password=\"secret\",\n    device_ids=[\n        \"csr1000v-ha-uuid\",\n        \"csr1000v-ha-redundant-uuid\",\n    ])\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\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 := networkedge.NewSshUser(ctx, \"john\", \u0026networkedge.SshUserArgs{\n\t\t\tUsername: pulumi.String(\"john\"),\n\t\t\tPassword: pulumi.String(\"secret\"),\n\t\t\tDeviceIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"csr1000v-ha-uuid\"),\n\t\t\t\tpulumi.String(\"csr1000v-ha-redundant-uuid\"),\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var john = new Equinix.NetworkEdge.SshUser(\"john\", new()\n    {\n        Username = \"john\",\n        Password = \"secret\",\n        DeviceIds = new[]\n        {\n            \"csr1000v-ha-uuid\",\n            \"csr1000v-ha-redundant-uuid\",\n        },\n    });\n\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.SshUser;\nimport com.pulumi.equinix.networkedge.SshUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var john = new SshUser(\"john\", SshUserArgs.builder()\n            .username(\"john\")\n            .password(\"secret\")\n            .deviceIds(            \n                \"csr1000v-ha-uuid\",\n                \"csr1000v-ha-redundant-uuid\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create SSH user with password auth method and associate it with\n  # two virtual network devices\n  john:\n    type: equinix:networkedge:SshUser\n    properties:\n      username: john\n      password: secret\n      deviceIds:\n        - csr1000v-ha-uuid\n        - csr1000v-ha-redundant-uuid\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID:\n\n```sh\n$ pulumi import equinix:networkedge/sshUser:SshUser example {existing_id}\n```\n\n\n{{% /examples %}}","properties":{"deviceIds":{"type":"array","items":{"type":"string"},"description":"list of device identifiers to which user will have access.\n"},"password":{"type":"string","description":"SSH user password.\n","secret":true},"username":{"type":"string","description":"SSH user login name.\n"},"uuid":{"type":"string","description":"SSH user unique identifier.\n"}},"required":["deviceIds","password","username","uuid"],"inputProperties":{"deviceIds":{"type":"array","items":{"type":"string"},"description":"list of device identifiers to which user will have access.\n"},"password":{"type":"string","description":"SSH user password.\n","secret":true},"username":{"type":"string","description":"SSH user login name.\n","willReplaceOnChanges":true}},"requiredInputs":["deviceIds","password","username"],"stateInputs":{"description":"Input properties used for looking up and filtering SshUser resources.\n","properties":{"deviceIds":{"type":"array","items":{"type":"string"},"description":"list of device identifiers to which user will have access.\n"},"password":{"type":"string","description":"SSH user password.\n","secret":true},"username":{"type":"string","description":"SSH user login name.\n","willReplaceOnChanges":true},"uuid":{"type":"string","description":"SSH user unique identifier.\n"}},"type":"object"}}},"functions":{"equinix:fabric/getAdvertisedRoutes:getAdvertisedRoutes":{"inputs":{"description":"A collection of arguments for invoking getAdvertisedRoutes.\n","properties":{"connectionId":{"type":"string","description":"The uuid of the routes this data source should retrieve\n"},"filter":{"$ref":"#/types/equinix:fabric/getAdvertisedRoutesFilter:getAdvertisedRoutesFilter","description":"Filters for the Data Source Search Request\n"},"pagination":{"$ref":"#/types/equinix:fabric/getAdvertisedRoutesPagination:getAdvertisedRoutesPagination","description":"Pagination details for the returned advertised routes list\n"},"sort":{"$ref":"#/types/equinix:fabric/getAdvertisedRoutesSort:getAdvertisedRoutesSort","description":"Sort details for the returned advertised routes list\n"}},"type":"object","required":["connectionId","filter","pagination"]},"outputs":{"description":"A collection of values returned by getAdvertisedRoutes.\n","properties":{"connectionId":{"description":"The uuid of the routes this data source should retrieve\n","type":"string"},"datas":{"description":"Returned list of advertised routes objects\n","items":{"$ref":"#/types/equinix:fabric/getAdvertisedRoutesData:getAdvertisedRoutesData"},"type":"array"},"filter":{"$ref":"#/types/equinix:fabric/getAdvertisedRoutesFilter:getAdvertisedRoutesFilter","description":"Filters for the Data Source Search Request\n"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getAdvertisedRoutesPagination:getAdvertisedRoutesPagination","description":"Pagination details for the returned advertised routes list\n"},"sort":{"$ref":"#/types/equinix:fabric/getAdvertisedRoutesSort:getAdvertisedRoutesSort","description":"Sort details for the returned advertised routes list\n"}},"required":["connectionId","datas","filter","id","pagination"],"type":"object"}},"equinix:fabric/getCloudRouter:getCloudRouter":{"description":"Fabric V4 API compatible data resource that allow user to fetch Fabric Cloud Router for a given UUID\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-intro.htm#HowItWorks\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#fabric-cloud-routers\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst cloudRouterDataName = equinix.fabric.getCloudRouter({\n    uuid: \"\u003cuuid_of_cloud_router\u003e\",\n});\nexport const id = cloudRouterDataName.then(cloudRouterDataName =\u003e cloudRouterDataName.id);\nexport const name = cloudRouterDataName.then(cloudRouterDataName =\u003e cloudRouterDataName.name);\nexport const accountNumber = cloudRouterDataName.then(cloudRouterDataName =\u003e .map(account =\u003e (account.accountNumber)));\nexport const equinixAsn = cloudRouterDataName.then(cloudRouterDataName =\u003e cloudRouterDataName.equinixAsn);\nexport const metroCode = cloudRouterDataName.then(cloudRouterDataName =\u003e .map(location =\u003e (location.metroCode)));\nexport const metroName = cloudRouterDataName.then(cloudRouterDataName =\u003e .map(location =\u003e (location.metroName)));\nexport const region = cloudRouterDataName.then(cloudRouterDataName =\u003e .map(location =\u003e (location.region)));\nexport const packageCode = cloudRouterDataName.then(cloudRouterDataName =\u003e .map(package =\u003e (_package.code)));\nexport const projectId = cloudRouterDataName.then(cloudRouterDataName =\u003e .map(project =\u003e (project.projectId)));\nexport const type = cloudRouterDataName.then(cloudRouterDataName =\u003e cloudRouterDataName.type);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ncloud_router_data_name = equinix.fabric.get_cloud_router(uuid=\"\u003cuuid_of_cloud_router\u003e\")\npulumi.export(\"id\", cloud_router_data_name.id)\npulumi.export(\"name\", cloud_router_data_name.name)\npulumi.export(\"accountNumber\", [account.account_number for account in cloud_router_data_name.accounts])\npulumi.export(\"equinixAsn\", cloud_router_data_name.equinix_asn)\npulumi.export(\"metroCode\", [location.metro_code for location in cloud_router_data_name.locations])\npulumi.export(\"metroName\", [location.metro_name for location in cloud_router_data_name.locations])\npulumi.export(\"region\", [location.region for location in cloud_router_data_name.locations])\npulumi.export(\"packageCode\", [package.code for package in cloud_router_data_name.packages])\npulumi.export(\"projectId\", [project.project_id for project in cloud_router_data_name.projects])\npulumi.export(\"type\", cloud_router_data_name.type)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cloudRouterDataName = Equinix.Fabric.GetCloudRouter.Invoke(new()\n    {\n        Uuid = \"\u003cuuid_of_cloud_router\u003e\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"id\"] = cloudRouterDataName.Apply(getCloudRouterResult =\u003e getCloudRouterResult.Id),\n        [\"name\"] = cloudRouterDataName.Apply(getCloudRouterResult =\u003e getCloudRouterResult.Name),\n        [\"accountNumber\"] = .Select(account =\u003e \n        {\n            return account.AccountNumber;\n        }).ToList(),\n        [\"equinixAsn\"] = cloudRouterDataName.Apply(getCloudRouterResult =\u003e getCloudRouterResult.EquinixAsn),\n        [\"metroCode\"] = .Select(location =\u003e \n        {\n            return location.MetroCode;\n        }).ToList(),\n        [\"metroName\"] = .Select(location =\u003e \n        {\n            return location.MetroName;\n        }).ToList(),\n        [\"region\"] = .Select(location =\u003e \n        {\n            return location.Region;\n        }).ToList(),\n        [\"packageCode\"] = .Select(package =\u003e \n        {\n            return package.Code;\n        }).ToList(),\n        [\"projectId\"] = .Select(project =\u003e \n        {\n            return project.ProjectId;\n        }).ToList(),\n        [\"type\"] = cloudRouterDataName.Apply(getCloudRouterResult =\u003e getCloudRouterResult.Type),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcloudRouterDataName, err := fabric.LookupCloudRouter(ctx, \u0026fabric.LookupCloudRouterArgs{\n\t\t\tUuid: \"\u003cuuid_of_cloud_router\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"id\", cloudRouterDataName.Id)\n\t\tctx.Export(\"name\", cloudRouterDataName.Name)\n\t\tctx.Export(\"accountNumber\", pulumi.IntArray(\"TODO: For expression\"))\n\t\tctx.Export(\"equinixAsn\", cloudRouterDataName.EquinixAsn)\n\t\tctx.Export(\"metroCode\", pulumi.StringArray(\"TODO: For expression\"))\n\t\tctx.Export(\"metroName\", pulumi.StringArray(\"TODO: For expression\"))\n\t\tctx.Export(\"region\", pulumi.StringArray(\"TODO: For expression\"))\n\t\tctx.Export(\"packageCode\", pulumi.StringArray(\"TODO: For expression\"))\n\t\tctx.Export(\"projectId\", pulumi.StringArray(\"TODO: For expression\"))\n\t\tctx.Export(\"type\", cloudRouterDataName.Type)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetCloudRouterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var cloudRouterDataName = FabricFunctions.getCloudRouter(GetCloudRouterArgs.builder()\n            .uuid(\"\u003cuuid_of_cloud_router\u003e\")\n            .build());\n\n        ctx.export(\"id\", cloudRouterDataName.applyValue(getCloudRouterResult -\u003e getCloudRouterResult.id()));\n        ctx.export(\"name\", cloudRouterDataName.applyValue(getCloudRouterResult -\u003e getCloudRouterResult.name()));\n        ctx.export(\"accountNumber\", \"TODO: ForExpression\");\n        ctx.export(\"equinixAsn\", cloudRouterDataName.applyValue(getCloudRouterResult -\u003e getCloudRouterResult.equinixAsn()));\n        ctx.export(\"metroCode\", \"TODO: ForExpression\");\n        ctx.export(\"metroName\", \"TODO: ForExpression\");\n        ctx.export(\"region\", \"TODO: ForExpression\");\n        ctx.export(\"packageCode\", \"TODO: ForExpression\");\n        ctx.export(\"projectId\", \"TODO: ForExpression\");\n        ctx.export(\"type\", cloudRouterDataName.applyValue(getCloudRouterResult -\u003e getCloudRouterResult.type()));\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getCloudRouter.\n","properties":{"uuid":{"type":"string","description":"Equinix-assigned Fabric Cloud Router identifier\n"}},"type":"object","required":["uuid"]},"outputs":{"description":"A collection of values returned by getCloudRouter.\n","properties":{"accounts":{"description":"Customer account information that is associated with this Fabric Cloud Router\n","items":{"$ref":"#/types/equinix:fabric/getCloudRouterAccount:getCloudRouterAccount"},"type":"array"},"changeLogs":{"description":"Captures Fabric Cloud Router lifecycle change information\n","items":{"$ref":"#/types/equinix:fabric/getCloudRouterChangeLog:getCloudRouterChangeLog"},"type":"array"},"connectionsCount":{"description":"Number of connections associated with this Fabric Cloud Router instance\n","type":"integer"},"description":{"description":"Customer-provided Fabric Cloud Router description\n","type":"string"},"equinixAsn":{"description":"Equinix ASN\n","type":"integer"},"href":{"description":"Fabric Cloud Router URI information\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"locations":{"description":"Fabric Cloud Router location\n","items":{"$ref":"#/types/equinix:fabric/getCloudRouterLocation:getCloudRouterLocation"},"type":"array"},"marketplaceSubscriptions":{"description":"Equinix Fabric Entity for Marketplace Subscription\n","items":{"$ref":"#/types/equinix:fabric/getCloudRouterMarketplaceSubscription:getCloudRouterMarketplaceSubscription"},"type":"array"},"name":{"description":"Fabric Cloud Router name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n","type":"string"},"notifications":{"description":"Preferences for notifications on Fabric Cloud Router configuration or status changes\n","items":{"$ref":"#/types/equinix:fabric/getCloudRouterNotification:getCloudRouterNotification"},"type":"array"},"orders":{"description":"Order information related to this Fabric Cloud Router\n","items":{"$ref":"#/types/equinix:fabric/getCloudRouterOrder:getCloudRouterOrder"},"type":"array"},"packages":{"description":"Fabric Cloud Router Package Type\n","items":{"$ref":"#/types/equinix:fabric/getCloudRouterPackage:getCloudRouterPackage"},"type":"array"},"projects":{"description":"Customer resource hierarchy project information. Applicable to customers onboarded to Equinix Identity and Access Management. For more information see Identity and Access Management: Projects\n","items":{"$ref":"#/types/equinix:fabric/getCloudRouterProject:getCloudRouterProject"},"type":"array"},"state":{"description":"Fabric Cloud Router overall state\n","type":"string"},"type":{"description":"Defines the FCR type like; XF_ROUTER\n","type":"string"},"uuid":{"description":"Equinix-assigned Fabric Cloud Router identifier\n","type":"string"}},"required":["accounts","changeLogs","connectionsCount","description","equinixAsn","href","locations","marketplaceSubscriptions","name","notifications","orders","packages","projects","state","type","uuid","id"],"type":"object"}},"equinix:fabric/getCloudRouters:getCloudRouters":{"description":"Fabric V4 API compatible data resource that allow user to fetch Fabric Cloud Routers matching custom search criteria\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-intro.htm#HowItWorks\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#fabric-cloud-routers\n\n","inputs":{"description":"A collection of arguments for invoking getCloudRouters.\n","properties":{"filters":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getCloudRoutersFilter:getCloudRoutersFilter"},"description":"Filters for the Data Source Search Request. Maximum of 8 total filters.\n"},"pagination":{"$ref":"#/types/equinix:fabric/getCloudRoutersPagination:getCloudRoutersPagination","description":"Pagination details for the Data Source Search Request\n"},"sort":{"$ref":"#/types/equinix:fabric/getCloudRoutersSort:getCloudRoutersSort","description":"Filters for the Data Source Search Request\n"}},"type":"object","required":["filters"]},"outputs":{"description":"A collection of values returned by getCloudRouters.\n","properties":{"datas":{"description":"List of Cloud Routers\n","items":{"$ref":"#/types/equinix:fabric/getCloudRoutersData:getCloudRoutersData"},"type":"array"},"filters":{"description":"Filters for the Data Source Search Request. Maximum of 8 total filters.\n","items":{"$ref":"#/types/equinix:fabric/getCloudRoutersFilter:getCloudRoutersFilter"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getCloudRoutersPagination:getCloudRoutersPagination","description":"Pagination details for the Data Source Search Request\n"},"sort":{"$ref":"#/types/equinix:fabric/getCloudRoutersSort:getCloudRoutersSort","description":"Filters for the Data Source Search Request\n"}},"required":["datas","filters","id"],"type":"object"}},"equinix:fabric/getConnection:getConnection":{"description":"Fabric V4 API compatible data resource that allow user to fetch connection for a given UUID \n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/Fabric/IMPLEMENTATION/fabric-connections-implement.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#connections\n\n","inputs":{"description":"A collection of arguments for invoking getConnection.\n","properties":{"uuid":{"type":"string","description":"Equinix-assigned connection identifier\n"}},"type":"object","required":["uuid"]},"outputs":{"description":"A collection of values returned by getConnection.\n","properties":{"aSide":{"$ref":"#/types/equinix:fabric/getConnectionASide:getConnectionASide","description":"Requester or Customer side connection configuration object of the multi-segment connection\n"},"account":{"$ref":"#/types/equinix:fabric/getConnectionAccount:getConnectionAccount","description":"Customer account information that is associated with this connection\n"},"additionalInfo":{"description":"Connection additional information\n","items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},"bandwidth":{"description":"Connection bandwidth in Mbps\n","type":"integer"},"changeLog":{"$ref":"#/types/equinix:fabric/getConnectionChangeLog:getConnectionChangeLog","description":"Captures connection lifecycle change information\n"},"description":{"description":"Customer-provided connection description\n","type":"string"},"direction":{"description":"Connection directionality from the requester point of view\n","type":"string"},"href":{"description":"Connection URI information\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"isRemote":{"description":"Connection property derived from access point locations\n","type":"boolean"},"name":{"description":"Connection name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n","type":"string"},"notifications":{"description":"Preferences for notifications on connection configuration or status changes\n","items":{"$ref":"#/types/equinix:fabric/getConnectionNotification:getConnectionNotification"},"type":"array"},"operation":{"$ref":"#/types/equinix:fabric/getConnectionOperation:getConnectionOperation","description":"Connection type-specific operational data\n"},"order":{"$ref":"#/types/equinix:fabric/getConnectionOrder:getConnectionOrder","description":"Order details\n"},"project":{"$ref":"#/types/equinix:fabric/getConnectionProject:getConnectionProject","description":"Project information\n"},"redundancy":{"$ref":"#/types/equinix:fabric/getConnectionRedundancy:getConnectionRedundancy","description":"Connection Redundancy Configuration\n"},"state":{"description":"Connection overall state\n","type":"string"},"type":{"description":"Defines the connection type like EVPL*VC, EPL*VC, IPWAN*VC, IP*VC, ACCESS*EPL*VC, EVPLAN*VC, EPLAN*VC, EIA*VC, IA*VC, EC_VC\n","type":"string"},"uuid":{"description":"Equinix-assigned connection identifier\n","type":"string"},"zSide":{"$ref":"#/types/equinix:fabric/getConnectionZSide:getConnectionZSide","description":"Destination or Provider side connection configuration object of the multi-segment connection\n"}},"required":["aSide","account","additionalInfo","bandwidth","changeLog","description","direction","href","isRemote","name","notifications","operation","order","project","redundancy","state","type","uuid","zSide","id"],"type":"object"}},"equinix:fabric/getConnectionRouteAggregation:getConnectionRouteAggregation":{"description":"Fabric V4 API compatible data resource that allow user to fetch Equinix Fabric Connection Route Aggregation by UUID\nAdditional Documentation:\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Route-Aggregations\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst attachedPolicy = equinix.fabric.getConnectionRouteAggregation({\n    routeAggregationId: \"\u003croute_aggregation_id\u003e\",\n    connectionId: \"\u003cconnection_id\u003e\",\n});\nexport const connectionRouteAggregationId = attachedPolicy.then(attachedPolicy =\u003e attachedPolicy.id);\nexport const connectionRouteAggregationConnectionId = attachedPolicy.then(attachedPolicy =\u003e attachedPolicy.connectionId);\nexport const connectionRouteAggregationType = attachedPolicy.then(attachedPolicy =\u003e attachedPolicy.type);\nexport const connectionRouteAggregationAttachmentStatus = attachedPolicy.then(attachedPolicy =\u003e attachedPolicy.attachmentStatus);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nattached_policy = equinix.fabric.get_connection_route_aggregation(route_aggregation_id=\"\u003croute_aggregation_id\u003e\",\n    connection_id=\"\u003cconnection_id\u003e\")\npulumi.export(\"connectionRouteAggregationId\", attached_policy.id)\npulumi.export(\"connectionRouteAggregationConnectionId\", attached_policy.connection_id)\npulumi.export(\"connectionRouteAggregationType\", attached_policy.type)\npulumi.export(\"connectionRouteAggregationAttachmentStatus\", attached_policy.attachment_status)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var attachedPolicy = Equinix.Fabric.GetConnectionRouteAggregation.Invoke(new()\n    {\n        RouteAggregationId = \"\u003croute_aggregation_id\u003e\",\n        ConnectionId = \"\u003cconnection_id\u003e\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"connectionRouteAggregationId\"] = attachedPolicy.Apply(getConnectionRouteAggregationResult =\u003e getConnectionRouteAggregationResult.Id),\n        [\"connectionRouteAggregationConnectionId\"] = attachedPolicy.Apply(getConnectionRouteAggregationResult =\u003e getConnectionRouteAggregationResult.ConnectionId),\n        [\"connectionRouteAggregationType\"] = attachedPolicy.Apply(getConnectionRouteAggregationResult =\u003e getConnectionRouteAggregationResult.Type),\n        [\"connectionRouteAggregationAttachmentStatus\"] = attachedPolicy.Apply(getConnectionRouteAggregationResult =\u003e getConnectionRouteAggregationResult.AttachmentStatus),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tattachedPolicy, err := fabric.LookupConnectionRouteAggregation(ctx, \u0026fabric.LookupConnectionRouteAggregationArgs{\n\t\t\tRouteAggregationId: \"\u003croute_aggregation_id\u003e\",\n\t\t\tConnectionId:       \"\u003cconnection_id\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"connectionRouteAggregationId\", attachedPolicy.Id)\n\t\tctx.Export(\"connectionRouteAggregationConnectionId\", attachedPolicy.ConnectionId)\n\t\tctx.Export(\"connectionRouteAggregationType\", attachedPolicy.Type)\n\t\tctx.Export(\"connectionRouteAggregationAttachmentStatus\", attachedPolicy.AttachmentStatus)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetConnectionRouteAggregationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var attachedPolicy = FabricFunctions.getConnectionRouteAggregation(GetConnectionRouteAggregationArgs.builder()\n            .routeAggregationId(\"\u003croute_aggregation_id\u003e\")\n            .connectionId(\"\u003cconnection_id\u003e\")\n            .build());\n\n        ctx.export(\"connectionRouteAggregationId\", attachedPolicy.applyValue(getConnectionRouteAggregationResult -\u003e getConnectionRouteAggregationResult.id()));\n        ctx.export(\"connectionRouteAggregationConnectionId\", attachedPolicy.applyValue(getConnectionRouteAggregationResult -\u003e getConnectionRouteAggregationResult.connectionId()));\n        ctx.export(\"connectionRouteAggregationType\", attachedPolicy.applyValue(getConnectionRouteAggregationResult -\u003e getConnectionRouteAggregationResult.type()));\n        ctx.export(\"connectionRouteAggregationAttachmentStatus\", attachedPolicy.applyValue(getConnectionRouteAggregationResult -\u003e getConnectionRouteAggregationResult.attachmentStatus()));\n    }\n}\n```\n```yaml\nvariables:\n  attachedPolicy:\n    fn::invoke:\n      function: equinix:fabric:getConnectionRouteAggregation\n      arguments:\n        routeAggregationId: \u003croute_aggregation_id\u003e\n        connectionId: \u003cconnection_id\u003e\noutputs:\n  connectionRouteAggregationId: ${attachedPolicy.id}\n  connectionRouteAggregationConnectionId: ${attachedPolicy.connectionId}\n  connectionRouteAggregationType: ${attachedPolicy.type}\n  connectionRouteAggregationAttachmentStatus: ${attachedPolicy.attachmentStatus}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getConnectionRouteAggregation.\n","properties":{"connectionId":{"type":"string","description":"The uuid of the connection this data source should retrieve\n"},"routeAggregationId":{"type":"string","description":"The uuid of the route aggregation this data source should retrieve\n"}},"type":"object","required":["connectionId","routeAggregationId"]},"outputs":{"description":"A collection of values returned by getConnectionRouteAggregation.\n","properties":{"attachmentStatus":{"description":"Status of the Route Aggregation Policy attachment lifecycle\n","type":"string"},"connectionId":{"description":"The uuid of the connection this data source should retrieve\n","type":"string"},"href":{"description":"URI to the attached Route Aggregation Policy on the Connection\n","type":"string"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"routeAggregationId":{"description":"The uuid of the route aggregation this data source should retrieve\n","type":"string"},"type":{"description":"Route Aggregation Type. One of [\"BGP*IPv4*PREFIX_AGGREGATION\"]\n","type":"string"},"uuid":{"description":"Equinix Assigned ID for Route Aggregation Policy\n","type":"string"}},"required":["attachmentStatus","connectionId","href","id","routeAggregationId","type","uuid"],"type":"object"}},"equinix:fabric/getConnectionRouteAggregations:getConnectionRouteAggregations":{"description":"Fabric V4 API compatible data resource that allow user to fetch Equinix Fabric Connection Route Aggregations with pagination details\nAdditional Documentation:\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Route-Aggregations\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst attachedPolicies = equinix.fabric.getConnectionRouteAggregations({\n    connectionId: \"connection_id\",\n});\nexport const connectionFirstRouteAggregationUuid = attachedPolicies.then(attachedPolicies =\u003e attachedPolicies.datas?.[0]?.uuid);\nexport const connectionFirstRouteAggregationType = attachedPolicies.then(attachedPolicies =\u003e attachedPolicies.datas?.[0]?.type);\nexport const connectionFirstRouteAggregationAttachmentStatus = attachedPolicies.then(attachedPolicies =\u003e attachedPolicies.datas?.[0]?.attachmentStatus);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nattached_policies = equinix.fabric.get_connection_route_aggregations(connection_id=\"connection_id\")\npulumi.export(\"connectionFirstRouteAggregationUuid\", attached_policies.datas[0].uuid)\npulumi.export(\"connectionFirstRouteAggregationType\", attached_policies.datas[0].type)\npulumi.export(\"connectionFirstRouteAggregationAttachmentStatus\", attached_policies.datas[0].attachment_status)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var attachedPolicies = Equinix.Fabric.GetConnectionRouteAggregations.Invoke(new()\n    {\n        ConnectionId = \"connection_id\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"connectionFirstRouteAggregationUuid\"] = attachedPolicies.Apply(getConnectionRouteAggregationsResult =\u003e getConnectionRouteAggregationsResult.Datas[0]?.Uuid),\n        [\"connectionFirstRouteAggregationType\"] = attachedPolicies.Apply(getConnectionRouteAggregationsResult =\u003e getConnectionRouteAggregationsResult.Datas[0]?.Type),\n        [\"connectionFirstRouteAggregationAttachmentStatus\"] = attachedPolicies.Apply(getConnectionRouteAggregationsResult =\u003e getConnectionRouteAggregationsResult.Datas[0]?.AttachmentStatus),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tattachedPolicies, err := fabric.GetConnectionRouteAggregations(ctx, \u0026fabric.GetConnectionRouteAggregationsArgs{\n\t\t\tConnectionId: \"connection_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"connectionFirstRouteAggregationUuid\", attachedPolicies.Datas[0].Uuid)\n\t\tctx.Export(\"connectionFirstRouteAggregationType\", attachedPolicies.Datas[0].Type)\n\t\tctx.Export(\"connectionFirstRouteAggregationAttachmentStatus\", attachedPolicies.Datas[0].AttachmentStatus)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetConnectionRouteAggregationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var attachedPolicies = FabricFunctions.getConnectionRouteAggregations(GetConnectionRouteAggregationsArgs.builder()\n            .connectionId(\"connection_id\")\n            .build());\n\n        ctx.export(\"connectionFirstRouteAggregationUuid\", attachedPolicies.applyValue(getConnectionRouteAggregationsResult -\u003e getConnectionRouteAggregationsResult.datas()[0].uuid()));\n        ctx.export(\"connectionFirstRouteAggregationType\", attachedPolicies.applyValue(getConnectionRouteAggregationsResult -\u003e getConnectionRouteAggregationsResult.datas()[0].type()));\n        ctx.export(\"connectionFirstRouteAggregationAttachmentStatus\", attachedPolicies.applyValue(getConnectionRouteAggregationsResult -\u003e getConnectionRouteAggregationsResult.datas()[0].attachmentStatus()));\n    }\n}\n```\n```yaml\nvariables:\n  attachedPolicies:\n    fn::invoke:\n      function: equinix:fabric:getConnectionRouteAggregations\n      arguments:\n        connectionId: connection_id\noutputs:\n  connectionFirstRouteAggregationUuid: ${attachedPolicies.datas[0].uuid}\n  connectionFirstRouteAggregationType: ${attachedPolicies.datas[0].type}\n  connectionFirstRouteAggregationAttachmentStatus: ${attachedPolicies.datas[0].attachmentStatus}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getConnectionRouteAggregations.\n","properties":{"connectionId":{"type":"string","description":"The uuid of the connection this data source should retrieve\n"},"pagination":{"$ref":"#/types/equinix:fabric/getConnectionRouteAggregationsPagination:getConnectionRouteAggregationsPagination","description":"Pagination details for the returned connection route aggregations list\n"}},"type":"object","required":["connectionId"]},"outputs":{"description":"A collection of values returned by getConnectionRouteAggregations.\n","properties":{"connectionId":{"description":"The uuid of the connection this data source should retrieve\n","type":"string"},"datas":{"description":"Returned list of connection route aggregation objects\n","items":{"$ref":"#/types/equinix:fabric/getConnectionRouteAggregationsData:getConnectionRouteAggregationsData"},"type":"array"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getConnectionRouteAggregationsPagination:getConnectionRouteAggregationsPagination","description":"Pagination details for the returned connection route aggregations list\n"}},"required":["connectionId","datas","id"],"type":"object"}},"equinix:fabric/getConnectionRouteFilter:getConnectionRouteFilter":{"description":"Fabric V4 API compatible data resource that allow user to fetch route filter policy attachment to a fabric connection\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-route-filters.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#route-filter-rules\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst attachedPolicy = equinix.fabric.getConnectionRouteFilter({\n    connectionId: \"\u003cconnection_uuid\u003e\",\n    routeFilterId: \"\u003croute_filter_uuid\u003e\",\n});\nexport const connectionRouteFilterId = attachedPolicy.then(attachedPolicy =\u003e attachedPolicy.id);\nexport const connectionRouteFilterConnectionId = attachedPolicy.then(attachedPolicy =\u003e attachedPolicy.connectionId);\nexport const connectionRouteFilterDirection = attachedPolicy.then(attachedPolicy =\u003e attachedPolicy.direction);\nexport const connectionRouteFilterType = attachedPolicy.then(attachedPolicy =\u003e attachedPolicy.type);\nexport const connectionRouteFilterAttachmentStatus = attachedPolicy.then(attachedPolicy =\u003e attachedPolicy.attachmentStatus);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nattached_policy = equinix.fabric.get_connection_route_filter(connection_id=\"\u003cconnection_uuid\u003e\",\n    route_filter_id=\"\u003croute_filter_uuid\u003e\")\npulumi.export(\"connectionRouteFilterId\", attached_policy.id)\npulumi.export(\"connectionRouteFilterConnectionId\", attached_policy.connection_id)\npulumi.export(\"connectionRouteFilterDirection\", attached_policy.direction)\npulumi.export(\"connectionRouteFilterType\", attached_policy.type)\npulumi.export(\"connectionRouteFilterAttachmentStatus\", attached_policy.attachment_status)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var attachedPolicy = Equinix.Fabric.GetConnectionRouteFilter.Invoke(new()\n    {\n        ConnectionId = \"\u003cconnection_uuid\u003e\",\n        RouteFilterId = \"\u003croute_filter_uuid\u003e\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"connectionRouteFilterId\"] = attachedPolicy.Apply(getConnectionRouteFilterResult =\u003e getConnectionRouteFilterResult.Id),\n        [\"connectionRouteFilterConnectionId\"] = attachedPolicy.Apply(getConnectionRouteFilterResult =\u003e getConnectionRouteFilterResult.ConnectionId),\n        [\"connectionRouteFilterDirection\"] = attachedPolicy.Apply(getConnectionRouteFilterResult =\u003e getConnectionRouteFilterResult.Direction),\n        [\"connectionRouteFilterType\"] = attachedPolicy.Apply(getConnectionRouteFilterResult =\u003e getConnectionRouteFilterResult.Type),\n        [\"connectionRouteFilterAttachmentStatus\"] = attachedPolicy.Apply(getConnectionRouteFilterResult =\u003e getConnectionRouteFilterResult.AttachmentStatus),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tattachedPolicy, err := fabric.LookupConnectionRouteFilter(ctx, \u0026fabric.LookupConnectionRouteFilterArgs{\n\t\t\tConnectionId:  \"\u003cconnection_uuid\u003e\",\n\t\t\tRouteFilterId: \"\u003croute_filter_uuid\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"connectionRouteFilterId\", attachedPolicy.Id)\n\t\tctx.Export(\"connectionRouteFilterConnectionId\", attachedPolicy.ConnectionId)\n\t\tctx.Export(\"connectionRouteFilterDirection\", attachedPolicy.Direction)\n\t\tctx.Export(\"connectionRouteFilterType\", attachedPolicy.Type)\n\t\tctx.Export(\"connectionRouteFilterAttachmentStatus\", attachedPolicy.AttachmentStatus)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetConnectionRouteFilterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var attachedPolicy = FabricFunctions.getConnectionRouteFilter(GetConnectionRouteFilterArgs.builder()\n            .connectionId(\"\u003cconnection_uuid\u003e\")\n            .routeFilterId(\"\u003croute_filter_uuid\u003e\")\n            .build());\n\n        ctx.export(\"connectionRouteFilterId\", attachedPolicy.applyValue(getConnectionRouteFilterResult -\u003e getConnectionRouteFilterResult.id()));\n        ctx.export(\"connectionRouteFilterConnectionId\", attachedPolicy.applyValue(getConnectionRouteFilterResult -\u003e getConnectionRouteFilterResult.connectionId()));\n        ctx.export(\"connectionRouteFilterDirection\", attachedPolicy.applyValue(getConnectionRouteFilterResult -\u003e getConnectionRouteFilterResult.direction()));\n        ctx.export(\"connectionRouteFilterType\", attachedPolicy.applyValue(getConnectionRouteFilterResult -\u003e getConnectionRouteFilterResult.type()));\n        ctx.export(\"connectionRouteFilterAttachmentStatus\", attachedPolicy.applyValue(getConnectionRouteFilterResult -\u003e getConnectionRouteFilterResult.attachmentStatus()));\n    }\n}\n```\n```yaml\nvariables:\n  attachedPolicy:\n    fn::invoke:\n      function: equinix:fabric:getConnectionRouteFilter\n      arguments:\n        connectionId: \u003cconnection_uuid\u003e\n        routeFilterId: \u003croute_filter_uuid\u003e\noutputs:\n  connectionRouteFilterId: ${attachedPolicy.id}\n  connectionRouteFilterConnectionId: ${attachedPolicy.connectionId}\n  connectionRouteFilterDirection: ${attachedPolicy.direction}\n  connectionRouteFilterType: ${attachedPolicy.type}\n  connectionRouteFilterAttachmentStatus: ${attachedPolicy.attachmentStatus}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getConnectionRouteFilter.\n","properties":{"connectionId":{"type":"string","description":"Equinix Assigned UUID of the Equinix Connection to attach the Route Filter Policy to\n"},"routeFilterId":{"type":"string","description":"Equinix Assigned UUID of the Route Filter Policy to attach to the Equinix Connection\n"}},"type":"object","required":["connectionId","routeFilterId"]},"outputs":{"description":"A collection of values returned by getConnectionRouteFilter.\n","properties":{"attachmentStatus":{"description":"Status of the Route Filter Policy attachment lifecycle\n","type":"string"},"connectionId":{"description":"Equinix Assigned UUID of the Equinix Connection to attach the Route Filter Policy to\n","type":"string"},"direction":{"description":"Direction of the filtering of the attached Route Filter Policy\n","type":"string"},"href":{"description":"URI to the attached Route Filter Policy on the Connection\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"routeFilterId":{"description":"Equinix Assigned UUID of the Route Filter Policy to attach to the Equinix Connection\n","type":"string"},"type":{"description":"Route Filter Type. One of [ \"BGP*IPv4*PREFIX*FILTER\", \"BGP*IPv6*PREFIX*FILTER\" ]\n","type":"string"},"uuid":{"description":"Equinix Assigned ID for Route Filter Policy\n","type":"string"}},"required":["attachmentStatus","connectionId","direction","href","routeFilterId","type","uuid","id"],"type":"object"}},"equinix:fabric/getConnectionRouteFilters:getConnectionRouteFilters":{"description":"Fabric V4 API compatible data resource that allow user to fetch all route filter policies attached to a fabric connection\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-route-filters.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#route-filter-rules\n\n","inputs":{"description":"A collection of arguments for invoking getConnectionRouteFilters.\n","properties":{"connectionId":{"type":"string","description":"Equinix Assigned UUID of the Equinix Connection to attach the Route Filter Policy to\n"}},"type":"object","required":["connectionId"]},"outputs":{"description":"A collection of values returned by getConnectionRouteFilters.\n","properties":{"connectionId":{"description":"Equinix Assigned UUID of the Equinix Connection to attach the Route Filter Policy to\n","type":"string"},"datas":{"description":"The list of Rules attached to the given Route Filter Policy UUID\n","items":{"$ref":"#/types/equinix:fabric/getConnectionRouteFiltersData:getConnectionRouteFiltersData"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"paginations":{"description":"Pagination details for the Data Source Search Request\n","items":{"$ref":"#/types/equinix:fabric/getConnectionRouteFiltersPagination:getConnectionRouteFiltersPagination"},"type":"array"}},"required":["connectionId","datas","paginations","id"],"type":"object"}},"equinix:fabric/getConnections:getConnections":{"description":"Fabric V4 API compatible data resource that allow user to fetch connection for a given UUID\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/Fabric/IMPLEMENTATION/fabric-connections-implement.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#connections\n\n","inputs":{"description":"A collection of arguments for invoking getConnections.\n","properties":{"filters":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsFilter:getConnectionsFilter"},"description":"Filters for the Data Source Search Request\n"},"outerOperator":{"type":"string","description":"Determines if the filter list will be grouped by AND or by OR. One of [AND, OR]\n"},"pagination":{"$ref":"#/types/equinix:fabric/getConnectionsPagination:getConnectionsPagination","description":"Pagination details for the Data Source Search Request\n"},"sorts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getConnectionsSort:getConnectionsSort"},"description":"Filters for the Data Source Search Request\n"}},"type":"object","required":["filters","outerOperator"]},"outputs":{"description":"A collection of values returned by getConnections.\n","properties":{"datas":{"description":"List of Cloud Routers\n","items":{"$ref":"#/types/equinix:fabric/getConnectionsData:getConnectionsData"},"type":"array"},"filters":{"description":"Filters for the Data Source Search Request\n","items":{"$ref":"#/types/equinix:fabric/getConnectionsFilter:getConnectionsFilter"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"outerOperator":{"description":"Determines if the filter list will be grouped by AND or by OR. One of [AND, OR]\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getConnectionsPagination:getConnectionsPagination","description":"Pagination details for the Data Source Search Request\n"},"sorts":{"description":"Filters for the Data Source Search Request\n","items":{"$ref":"#/types/equinix:fabric/getConnectionsSort:getConnectionsSort"},"type":"array"}},"required":["datas","filters","outerOperator","id"],"type":"object"}},"equinix:fabric/getMarketplaceSubscription:getMarketplaceSubscription":{"description":"Fabric V4 API compatible data resource that allow user to fetch Marketplace Subscription detail for a given UUID\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst subscription_test = equinix.fabric.getMarketplaceSubscription({\n    uuid: \"\u003cuuid_of_marketplace_subscription\u003e\",\n});\nexport const id = subscription_test.then(subscription_test =\u003e subscription_test.id);\nexport const status = subscription_test.then(subscription_test =\u003e subscription_test.status);\nexport const marketplace = subscription_test.then(subscription_test =\u003e subscription_test.marketplace);\nexport const offerType = subscription_test.then(subscription_test =\u003e subscription_test.offerType);\nexport const isAutoRenew = subscription_test.then(subscription_test =\u003e subscription_test.isAutoRenew);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsubscription_test = equinix.fabric.get_marketplace_subscription(uuid=\"\u003cuuid_of_marketplace_subscription\u003e\")\npulumi.export(\"id\", subscription_test.id)\npulumi.export(\"status\", subscription_test.status)\npulumi.export(\"marketplace\", subscription_test.marketplace)\npulumi.export(\"offerType\", subscription_test.offer_type)\npulumi.export(\"isAutoRenew\", subscription_test.is_auto_renew)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var subscription_test = Equinix.Fabric.GetMarketplaceSubscription.Invoke(new()\n    {\n        Uuid = \"\u003cuuid_of_marketplace_subscription\u003e\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"id\"] = subscription_test.Apply(subscription_test =\u003e subscription_test.Apply(getMarketplaceSubscriptionResult =\u003e getMarketplaceSubscriptionResult.Id)),\n        [\"status\"] = subscription_test.Apply(subscription_test =\u003e subscription_test.Apply(getMarketplaceSubscriptionResult =\u003e getMarketplaceSubscriptionResult.Status)),\n        [\"marketplace\"] = subscription_test.Apply(subscription_test =\u003e subscription_test.Apply(getMarketplaceSubscriptionResult =\u003e getMarketplaceSubscriptionResult.Marketplace)),\n        [\"offerType\"] = subscription_test.Apply(subscription_test =\u003e subscription_test.Apply(getMarketplaceSubscriptionResult =\u003e getMarketplaceSubscriptionResult.OfferType)),\n        [\"isAutoRenew\"] = subscription_test.Apply(subscription_test =\u003e subscription_test.Apply(getMarketplaceSubscriptionResult =\u003e getMarketplaceSubscriptionResult.IsAutoRenew)),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsubscription_test, err := fabric.GetMarketplaceSubscription(ctx, \u0026fabric.GetMarketplaceSubscriptionArgs{\n\t\t\tUuid: \"\u003cuuid_of_marketplace_subscription\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"id\", subscription_test.Id)\n\t\tctx.Export(\"status\", subscription_test.Status)\n\t\tctx.Export(\"marketplace\", subscription_test.Marketplace)\n\t\tctx.Export(\"offerType\", subscription_test.OfferType)\n\t\tctx.Export(\"isAutoRenew\", subscription_test.IsAutoRenew)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetMarketplaceSubscriptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var subscription-test = FabricFunctions.getMarketplaceSubscription(GetMarketplaceSubscriptionArgs.builder()\n            .uuid(\"\u003cuuid_of_marketplace_subscription\u003e\")\n            .build());\n\n        ctx.export(\"id\", subscription_test.id());\n        ctx.export(\"status\", subscription_test.status());\n        ctx.export(\"marketplace\", subscription_test.marketplace());\n        ctx.export(\"offerType\", subscription_test.offerType());\n        ctx.export(\"isAutoRenew\", subscription_test.isAutoRenew());\n    }\n}\n```\n```yaml\nvariables:\n  subscription-test:\n    fn::invoke:\n      function: equinix:fabric:getMarketplaceSubscription\n      arguments:\n        uuid: \u003cuuid_of_marketplace_subscription\u003e\noutputs:\n  id: ${[\"subscription-test\"].id}\n  status: ${[\"subscription-test\"].status}\n  marketplace: ${[\"subscription-test\"].marketplace}\n  offerType: ${[\"subscription-test\"].offerType}\n  isAutoRenew: ${[\"subscription-test\"].isAutoRenew}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getMarketplaceSubscription.\n","properties":{"uuid":{"type":"string","description":"Equinix-assigned marketplace identifier\n"}},"type":"object","required":["uuid"]},"outputs":{"description":"A collection of values returned by getMarketplaceSubscription.\n","properties":{"entitlements":{"description":"Subscription entitlements\n","items":{"$ref":"#/types/equinix:fabric/getMarketplaceSubscriptionEntitlement:getMarketplaceSubscriptionEntitlement"},"type":"array"},"href":{"description":"Subscription URI information\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"isAutoRenew":{"description":"Information about subscription auto renewal\n","type":"boolean"},"marketplace":{"description":"Marketplace like; AWS, GCP, AZURE, REDHAT\n","type":"string"},"offerType":{"description":"Marketplace Offer Type like; PUBLIC, PRIVATE_OFFER\n","type":"string"},"status":{"description":"Subscription Status like; ACTIVE, EXPIRED, CANCELLED, GRACE_PERIOD\n","type":"string"},"trial":{"$ref":"#/types/equinix:fabric/getMarketplaceSubscriptionTrial:getMarketplaceSubscriptionTrial","description":"Subscription Trial\n"},"uuid":{"description":"Equinix-assigned marketplace identifier\n","type":"string"}},"required":["entitlements","href","isAutoRenew","marketplace","offerType","status","trial","uuid","id"],"type":"object"}},"equinix:fabric/getMetro:getMetro":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst metro = equinix.fabric.getMetro({\n    metroCode: \"\u003cmetro_code\u003e\",\n});\nexport const type = metro.then(metro =\u003e metro.type);\nexport const metroCode = metro.then(metro =\u003e metro.metroCode);\nexport const region = metro.then(metro =\u003e metro.region);\nexport const name = metro.then(metro =\u003e metro.name);\nexport const equinixAsn = metro.then(metro =\u003e metro.equinixAsn);\nexport const localVcBandwidthMax = metro.then(metro =\u003e metro.localVcBandwidthMax);\nexport const geoCoordinates = metro.then(metro =\u003e metro.geoCoordinates);\nexport const connectedMetros = metro.then(metro =\u003e metro.connectedMetros);\nexport const geoScopes = metro.then(metro =\u003e metro.geoScopes);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nmetro = equinix.fabric.get_metro(metro_code=\"\u003cmetro_code\u003e\")\npulumi.export(\"type\", metro.type)\npulumi.export(\"metroCode\", metro.metro_code)\npulumi.export(\"region\", metro.region)\npulumi.export(\"name\", metro.name)\npulumi.export(\"equinixAsn\", metro.equinix_asn)\npulumi.export(\"localVcBandwidthMax\", metro.local_vc_bandwidth_max)\npulumi.export(\"geoCoordinates\", metro.geo_coordinates)\npulumi.export(\"connectedMetros\", metro.connected_metros)\npulumi.export(\"geoScopes\", metro.geo_scopes)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var metro = Equinix.Fabric.GetMetro.Invoke(new()\n    {\n        MetroCode = \"\u003cmetro_code\u003e\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"type\"] = metro.Apply(getMetroResult =\u003e getMetroResult.Type),\n        [\"metroCode\"] = metro.Apply(getMetroResult =\u003e getMetroResult.MetroCode),\n        [\"region\"] = metro.Apply(getMetroResult =\u003e getMetroResult.Region),\n        [\"name\"] = metro.Apply(getMetroResult =\u003e getMetroResult.Name),\n        [\"equinixAsn\"] = metro.Apply(getMetroResult =\u003e getMetroResult.EquinixAsn),\n        [\"localVcBandwidthMax\"] = metro.Apply(getMetroResult =\u003e getMetroResult.LocalVcBandwidthMax),\n        [\"geoCoordinates\"] = metro.Apply(getMetroResult =\u003e getMetroResult.GeoCoordinates),\n        [\"connectedMetros\"] = metro.Apply(getMetroResult =\u003e getMetroResult.ConnectedMetros),\n        [\"geoScopes\"] = metro.Apply(getMetroResult =\u003e getMetroResult.GeoScopes),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmetro, err := fabric.GetMetro(ctx, \u0026fabric.GetMetroArgs{\n\t\t\tMetroCode: \"\u003cmetro_code\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"type\", metro.Type)\n\t\tctx.Export(\"metroCode\", metro.MetroCode)\n\t\tctx.Export(\"region\", metro.Region)\n\t\tctx.Export(\"name\", metro.Name)\n\t\tctx.Export(\"equinixAsn\", metro.EquinixAsn)\n\t\tctx.Export(\"localVcBandwidthMax\", metro.LocalVcBandwidthMax)\n\t\tctx.Export(\"geoCoordinates\", metro.GeoCoordinates)\n\t\tctx.Export(\"connectedMetros\", metro.ConnectedMetros)\n\t\tctx.Export(\"geoScopes\", metro.GeoScopes)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetMetroArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var metro = FabricFunctions.getMetro(GetMetroArgs.builder()\n            .metroCode(\"\u003cmetro_code\u003e\")\n            .build());\n\n        ctx.export(\"type\", metro.applyValue(getMetroResult -\u003e getMetroResult.type()));\n        ctx.export(\"metroCode\", metro.applyValue(getMetroResult -\u003e getMetroResult.metroCode()));\n        ctx.export(\"region\", metro.applyValue(getMetroResult -\u003e getMetroResult.region()));\n        ctx.export(\"name\", metro.applyValue(getMetroResult -\u003e getMetroResult.name()));\n        ctx.export(\"equinixAsn\", metro.applyValue(getMetroResult -\u003e getMetroResult.equinixAsn()));\n        ctx.export(\"localVcBandwidthMax\", metro.applyValue(getMetroResult -\u003e getMetroResult.localVcBandwidthMax()));\n        ctx.export(\"geoCoordinates\", metro.applyValue(getMetroResult -\u003e getMetroResult.geoCoordinates()));\n        ctx.export(\"connectedMetros\", metro.applyValue(getMetroResult -\u003e getMetroResult.connectedMetros()));\n        ctx.export(\"geoScopes\", metro.applyValue(getMetroResult -\u003e getMetroResult.geoScopes()));\n    }\n}\n```\n```yaml\nvariables:\n  metro:\n    fn::invoke:\n      function: equinix:fabric:getMetro\n      arguments:\n        metroCode: \u003cmetro_code\u003e\noutputs:\n  type: ${metro.type}\n  metroCode: ${metro.metroCode}\n  region: ${metro.region}\n  name: ${metro.name}\n  equinixAsn: ${metro.equinixAsn}\n  localVcBandwidthMax: ${metro.localVcBandwidthMax}\n  geoCoordinates: ${metro.geoCoordinates}\n  connectedMetros: ${metro.connectedMetros}\n  geoScopes: ${metro.geoScopes}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getMetro.\n","properties":{"metroCode":{"type":"string","description":"The metro code this data source should retrieve\n"}},"type":"object","required":["metroCode"]},"outputs":{"description":"A collection of values returned by getMetro.\n","properties":{"code":{"description":"Code assigned to an Equinix IBX data center in a specified metropolitan area\n","type":"string"},"connectedMetros":{"description":"Arrays of objects containing latency data for the specified metro\n","items":{"$ref":"#/types/equinix:fabric/getMetroConnectedMetro:getMetroConnectedMetro"},"type":"array"},"country":{"description":"Country in which the data center is located\n","type":"string"},"equinixAsn":{"description":"Autonomous system number (ASN) for a specified Fabric metro. The ASN is a unique identifier that carries the network routing protocol and exchanges that data with other internal systems via border gateway protocol.\n","type":"integer"},"geoCoordinates":{"$ref":"#/types/equinix:fabric/getMetroGeoCoordinates:getMetroGeoCoordinates","description":"Geographic location data of Fabric Metro\n"},"geoScopes":{"description":"List of supported geographic boundaries of a Fabric Metro. Example values: CANADA, CONUS.\n","items":{"type":"string"},"type":"array"},"href":{"description":"The canonical URL at which the resource resides\n","type":"string"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"localVcBandwidthMax":{"description":"This field holds Max Connection speed within the metro.\n","type":"integer"},"metroCode":{"description":"The metro code this data source should retrieve\n","type":"string"},"name":{"description":"Name of the region in which the data center is located\n","type":"string"},"region":{"description":"Board geographical area in which the data center is located\n","type":"string"},"type":{"description":"Indicator of a fabric metro\n","type":"string"}},"required":["code","connectedMetros","country","equinixAsn","geoCoordinates","geoScopes","href","id","localVcBandwidthMax","metroCode","name","region","type"],"type":"object"}},"equinix:fabric/getMetros:getMetros":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst metros = equinix.fabric.getMetros({\n    pagination: {\n        limit: 12,\n        offset: 6,\n    },\n});\nexport const numberOfReturnedMetros = metros.then(metros =\u003e metros.datas).length;\nexport const firstMetroType = metros.then(metros =\u003e metros.datas?.[0]?.type);\nexport const firstMetroCode = metros.then(metros =\u003e metros.datas?.[0]?.code);\nexport const firstMetroRegion = metros.then(metros =\u003e metros.datas?.[0]?.region);\nexport const firstMetroName = metros.then(metros =\u003e metros.datas?.[0]?.name);\nexport const firstMetroEquinixAsn = metros.then(metros =\u003e metros.datas?.[0]?.equinixAsn);\nexport const firstMetroLocalVcBandwidthMax = metros.then(metros =\u003e metros.datas?.[0]?.localVcBandwidthMax);\nexport const firstMetroGeoCoordinates = metros.then(metros =\u003e metros.datas?.[0]?.geoCoordinates);\nexport const firstMetroConnectedMetros = metros.then(metros =\u003e metros.datas?.[0]?.connectedMetros);\nexport const firstMetroGeoScopes = metros.then(metros =\u003e metros.datas?.[0]?.geoScopes);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nmetros = equinix.fabric.get_metros(pagination={\n    \"limit\": 12,\n    \"offset\": 6,\n})\npulumi.export(\"numberOfReturnedMetros\", len(metros.datas))\npulumi.export(\"firstMetroType\", metros.datas[0].type)\npulumi.export(\"firstMetroCode\", metros.datas[0].code)\npulumi.export(\"firstMetroRegion\", metros.datas[0].region)\npulumi.export(\"firstMetroName\", metros.datas[0].name)\npulumi.export(\"firstMetroEquinixAsn\", metros.datas[0].equinix_asn)\npulumi.export(\"firstMetroLocalVcBandwidthMax\", metros.datas[0].local_vc_bandwidth_max)\npulumi.export(\"firstMetroGeoCoordinates\", metros.datas[0].geo_coordinates)\npulumi.export(\"firstMetroConnectedMetros\", metros.datas[0].connected_metros)\npulumi.export(\"firstMetroGeoScopes\", metros.datas[0].geo_scopes)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var metros = Equinix.Fabric.GetMetros.Invoke(new()\n    {\n        Pagination = new Equinix.Fabric.Inputs.GetMetrosPaginationInputArgs\n        {\n            Limit = 12,\n            Offset = 6,\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"numberOfReturnedMetros\"] = metros.Apply(getMetrosResult =\u003e getMetrosResult.Datas).Length,\n        [\"firstMetroType\"] = metros.Apply(getMetrosResult =\u003e getMetrosResult.Datas[0]?.Type),\n        [\"firstMetroCode\"] = metros.Apply(getMetrosResult =\u003e getMetrosResult.Datas[0]?.Code),\n        [\"firstMetroRegion\"] = metros.Apply(getMetrosResult =\u003e getMetrosResult.Datas[0]?.Region),\n        [\"firstMetroName\"] = metros.Apply(getMetrosResult =\u003e getMetrosResult.Datas[0]?.Name),\n        [\"firstMetroEquinixAsn\"] = metros.Apply(getMetrosResult =\u003e getMetrosResult.Datas[0]?.EquinixAsn),\n        [\"firstMetroLocalVcBandwidthMax\"] = metros.Apply(getMetrosResult =\u003e getMetrosResult.Datas[0]?.LocalVcBandwidthMax),\n        [\"firstMetroGeoCoordinates\"] = metros.Apply(getMetrosResult =\u003e getMetrosResult.Datas[0]?.GeoCoordinates),\n        [\"firstMetroConnectedMetros\"] = metros.Apply(getMetrosResult =\u003e getMetrosResult.Datas[0]?.ConnectedMetros),\n        [\"firstMetroGeoScopes\"] = metros.Apply(getMetrosResult =\u003e getMetrosResult.Datas[0]?.GeoScopes),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmetros, err := fabric.GetMetros(ctx, \u0026fabric.GetMetrosArgs{\n\t\t\tPagination: fabric.GetMetrosPagination{\n\t\t\t\tLimit:  pulumi.IntRef(12),\n\t\t\t\tOffset: pulumi.IntRef(6),\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"numberOfReturnedMetros\", pulumi.Int(len(metros.Datas)))\n\t\tctx.Export(\"firstMetroType\", metros.Datas[0].Type)\n\t\tctx.Export(\"firstMetroCode\", metros.Datas[0].Code)\n\t\tctx.Export(\"firstMetroRegion\", metros.Datas[0].Region)\n\t\tctx.Export(\"firstMetroName\", metros.Datas[0].Name)\n\t\tctx.Export(\"firstMetroEquinixAsn\", metros.Datas[0].EquinixAsn)\n\t\tctx.Export(\"firstMetroLocalVcBandwidthMax\", metros.Datas[0].LocalVcBandwidthMax)\n\t\tctx.Export(\"firstMetroGeoCoordinates\", metros.Datas[0].GeoCoordinates)\n\t\tctx.Export(\"firstMetroConnectedMetros\", metros.Datas[0].ConnectedMetros)\n\t\tctx.Export(\"firstMetroGeoScopes\", metros.Datas[0].GeoScopes)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetMetrosArgs;\nimport com.pulumi.equinix.fabric.inputs.GetMetrosPaginationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var metros = FabricFunctions.getMetros(GetMetrosArgs.builder()\n            .pagination(GetMetrosPaginationArgs.builder()\n                .limit(12)\n                .offset(6)\n                .build())\n            .build());\n\n        ctx.export(\"numberOfReturnedMetros\", metros.applyValue(getMetrosResult -\u003e getMetrosResult.datas()).length());\n        ctx.export(\"firstMetroType\", metros.applyValue(getMetrosResult -\u003e getMetrosResult.datas()[0].type()));\n        ctx.export(\"firstMetroCode\", metros.applyValue(getMetrosResult -\u003e getMetrosResult.datas()[0].code()));\n        ctx.export(\"firstMetroRegion\", metros.applyValue(getMetrosResult -\u003e getMetrosResult.datas()[0].region()));\n        ctx.export(\"firstMetroName\", metros.applyValue(getMetrosResult -\u003e getMetrosResult.datas()[0].name()));\n        ctx.export(\"firstMetroEquinixAsn\", metros.applyValue(getMetrosResult -\u003e getMetrosResult.datas()[0].equinixAsn()));\n        ctx.export(\"firstMetroLocalVcBandwidthMax\", metros.applyValue(getMetrosResult -\u003e getMetrosResult.datas()[0].localVcBandwidthMax()));\n        ctx.export(\"firstMetroGeoCoordinates\", metros.applyValue(getMetrosResult -\u003e getMetrosResult.datas()[0].geoCoordinates()));\n        ctx.export(\"firstMetroConnectedMetros\", metros.applyValue(getMetrosResult -\u003e getMetrosResult.datas()[0].connectedMetros()));\n        ctx.export(\"firstMetroGeoScopes\", metros.applyValue(getMetrosResult -\u003e getMetrosResult.datas()[0].geoScopes()));\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getMetros.\n","properties":{"pagination":{"$ref":"#/types/equinix:fabric/getMetrosPagination:getMetrosPagination","description":"Pagination details for the returned metro list\n"},"presence":{"type":"string","description":"User On Boarded Metros based on Fabric resource availability\n"}},"type":"object","required":["pagination"]},"outputs":{"description":"A collection of values returned by getMetros.\n","properties":{"datas":{"description":"Returned list of metro objects\n","items":{"$ref":"#/types/equinix:fabric/getMetrosData:getMetrosData"},"type":"array"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getMetrosPagination:getMetrosPagination","description":"Pagination details for the returned metro list\n"},"presence":{"description":"User On Boarded Metros based on Fabric resource availability\n","type":"string"}},"required":["datas","id","pagination"],"type":"object"}},"equinix:fabric/getNetwork:getNetwork":{"description":"Fabric V4 API compatible data resource that allow user to fetch Fabric Network for a given UUID\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/Fabric/IMPLEMENTATION/fabric-networks-implement.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#fabric-networks\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst networkDataName = equinix.fabric.getNetwork({\n    uuid: \"\u003cuuid_of_network\u003e\",\n});\nexport const id = networkDataName.then(networkDataName =\u003e networkDataName.id);\nexport const name = networkDataName.then(networkDataName =\u003e networkDataName.name);\nexport const scope = networkDataName.then(networkDataName =\u003e networkDataName.scope);\nexport const type = networkDataName.then(networkDataName =\u003e networkDataName.type);\nexport const region = networkDataName.then(networkDataName =\u003e .map(location =\u003e (location.region)));\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nnetwork_data_name = equinix.fabric.get_network(uuid=\"\u003cuuid_of_network\u003e\")\npulumi.export(\"id\", network_data_name.id)\npulumi.export(\"name\", network_data_name.name)\npulumi.export(\"scope\", network_data_name.scope)\npulumi.export(\"type\", network_data_name.type)\npulumi.export(\"region\", [location.region for location in network_data_name.locations])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var networkDataName = Equinix.Fabric.GetNetwork.Invoke(new()\n    {\n        Uuid = \"\u003cuuid_of_network\u003e\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"id\"] = networkDataName.Apply(getNetworkResult =\u003e getNetworkResult.Id),\n        [\"name\"] = networkDataName.Apply(getNetworkResult =\u003e getNetworkResult.Name),\n        [\"scope\"] = networkDataName.Apply(getNetworkResult =\u003e getNetworkResult.Scope),\n        [\"type\"] = networkDataName.Apply(getNetworkResult =\u003e getNetworkResult.Type),\n        [\"region\"] = .Select(location =\u003e \n        {\n            return location.Region;\n        }).ToList(),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetworkDataName, err := fabric.LookupNetwork(ctx, \u0026fabric.LookupNetworkArgs{\n\t\t\tUuid: \"\u003cuuid_of_network\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"id\", networkDataName.Id)\n\t\tctx.Export(\"name\", networkDataName.Name)\n\t\tctx.Export(\"scope\", networkDataName.Scope)\n\t\tctx.Export(\"type\", networkDataName.Type)\n\t\tctx.Export(\"region\", pulumi.StringArray(\"TODO: For expression\"))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var networkDataName = FabricFunctions.getNetwork(GetNetworkArgs.builder()\n            .uuid(\"\u003cuuid_of_network\u003e\")\n            .build());\n\n        ctx.export(\"id\", networkDataName.applyValue(getNetworkResult -\u003e getNetworkResult.id()));\n        ctx.export(\"name\", networkDataName.applyValue(getNetworkResult -\u003e getNetworkResult.name()));\n        ctx.export(\"scope\", networkDataName.applyValue(getNetworkResult -\u003e getNetworkResult.scope()));\n        ctx.export(\"type\", networkDataName.applyValue(getNetworkResult -\u003e getNetworkResult.type()));\n        ctx.export(\"region\", \"TODO: ForExpression\");\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getNetwork.\n","properties":{"uuid":{"type":"string","description":"Equinix-assigned network identifier\n"}},"type":"object","required":["uuid"]},"outputs":{"description":"A collection of values returned by getNetwork.\n","properties":{"change":{"$ref":"#/types/equinix:fabric/getNetworkChange:getNetworkChange","description":"Information on asset change operation\n"},"changeLog":{"$ref":"#/types/equinix:fabric/getNetworkChangeLog:getNetworkChangeLog","description":"A permanent record of asset creation, modification, or deletion\n"},"connectionsCount":{"description":"Number of connections associated with this network\n","type":"integer"},"href":{"description":"Fabric Network URI information\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"locations":{"description":"Fabric Network location\n","items":{"$ref":"#/types/equinix:fabric/getNetworkLocation:getNetworkLocation"},"type":"array"},"name":{"description":"Fabric Network name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n","type":"string"},"notifications":{"description":"Preferences for notifications on Fabric Network configuration or status changes\n","items":{"$ref":"#/types/equinix:fabric/getNetworkNotification:getNetworkNotification"},"type":"array"},"operation":{"$ref":"#/types/equinix:fabric/getNetworkOperation:getNetworkOperation","description":"Network operation information that is associated with this Fabric Network\n"},"project":{"$ref":"#/types/equinix:fabric/getNetworkProject:getNetworkProject","description":"Fabric Network project\n"},"scope":{"description":"Fabric Network scope. Valid values: [REGIONAL GLOBAL LOCAL]. Note: When scope is REGIONAL, the location.region field is required.\n","type":"string"},"state":{"description":"Fabric Network overall state\n","type":"string"},"type":{"description":"Supported Network types - EVPLAN, EPLAN, IPWAN, EVPTREE, EPTREE\n","type":"string"},"uuid":{"description":"Equinix-assigned network identifier\n","type":"string"}},"required":["change","changeLog","connectionsCount","href","locations","name","notifications","operation","project","scope","state","type","uuid","id"],"type":"object"}},"equinix:fabric/getNetworks:getNetworks":{"description":"Fabric V4 API compatible data resource that allow user to fetch Fabric Network for a given UUID\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/Fabric/IMPLEMENTATION/fabric-networks-implement.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#fabric-networks\n\n","inputs":{"description":"A collection of arguments for invoking getNetworks.\n","properties":{"filters":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getNetworksFilter:getNetworksFilter"},"description":"Filters for the Data Source Search Request\n"},"outerOperator":{"type":"string","description":"Determines if the filter list will be grouped by AND or by OR. One of [AND, OR]\n"},"pagination":{"$ref":"#/types/equinix:fabric/getNetworksPagination:getNetworksPagination","description":"Pagination details for the Data Source Search Request\n"},"sorts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getNetworksSort:getNetworksSort"},"description":"Filters for the Data Source Search Request\n"}},"type":"object","required":["filters","outerOperator"]},"outputs":{"description":"A collection of values returned by getNetworks.\n","properties":{"datas":{"description":"List of Cloud Routers\n","items":{"$ref":"#/types/equinix:fabric/getNetworksData:getNetworksData"},"type":"array"},"filters":{"description":"Filters for the Data Source Search Request\n","items":{"$ref":"#/types/equinix:fabric/getNetworksFilter:getNetworksFilter"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"outerOperator":{"description":"Determines if the filter list will be grouped by AND or by OR. One of [AND, OR]\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getNetworksPagination:getNetworksPagination","description":"Pagination details for the Data Source Search Request\n"},"sorts":{"description":"Filters for the Data Source Search Request\n","items":{"$ref":"#/types/equinix:fabric/getNetworksSort:getNetworksSort"},"type":"array"}},"required":["datas","filters","outerOperator","id"],"type":"object"}},"equinix:fabric/getPort:getPort":{"description":"Fabric V4 API compatible data resource that allow user to fetch port by uuid\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/Fabric/IMPLEMENTATION/fabric-ports-implement.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#ports\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst portDataName = equinix.fabric.getPort({\n    uuid: \"\u003cuuid_of_port\u003e\",\n});\nexport const id = portDataName.then(portDataName =\u003e portDataName.id);\nexport const name = portDataName.then(portDataName =\u003e portDataName.name);\nexport const state = portDataName.then(portDataName =\u003e portDataName.state);\nexport const accountName = portDataName.then(portDataName =\u003e portDataName.account?.accountName);\nexport const type = portDataName.then(portDataName =\u003e portDataName.type);\nexport const bandwidth = portDataName.then(portDataName =\u003e portDataName.bandwidth);\nexport const usedBandwidth = portDataName.then(portDataName =\u003e portDataName.usedBandwidth);\nexport const encapsulationType = portDataName.then(portDataName =\u003e portDataName.encapsulation?.type);\nexport const ibx = portDataName.then(portDataName =\u003e portDataName.location?.ibx);\nexport const metroCode = portDataName.then(portDataName =\u003e portDataName.location?.metroCode);\nexport const metroName = portDataName.then(portDataName =\u003e portDataName.location?.metroName);\nexport const region = portDataName.then(portDataName =\u003e portDataName.location?.region);\nexport const deviceRedundancyEnabled = portDataName.then(portDataName =\u003e portDataName.device?.redundancies?.[0]?.enabled);\nexport const deviceRedundancyPriority = portDataName.then(portDataName =\u003e portDataName.device?.redundancies?.[0]?.priority);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nport_data_name = equinix.fabric.get_port(uuid=\"\u003cuuid_of_port\u003e\")\npulumi.export(\"id\", port_data_name.id)\npulumi.export(\"name\", port_data_name.name)\npulumi.export(\"state\", port_data_name.state)\npulumi.export(\"accountName\", port_data_name.account.account_name)\npulumi.export(\"type\", port_data_name.type)\npulumi.export(\"bandwidth\", port_data_name.bandwidth)\npulumi.export(\"usedBandwidth\", port_data_name.used_bandwidth)\npulumi.export(\"encapsulationType\", port_data_name.encapsulation.type)\npulumi.export(\"ibx\", port_data_name.location.ibx)\npulumi.export(\"metroCode\", port_data_name.location.metro_code)\npulumi.export(\"metroName\", port_data_name.location.metro_name)\npulumi.export(\"region\", port_data_name.location.region)\npulumi.export(\"deviceRedundancyEnabled\", port_data_name.device.redundancies[0].enabled)\npulumi.export(\"deviceRedundancyPriority\", port_data_name.device.redundancies[0].priority)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var portDataName = Equinix.Fabric.GetPort.Invoke(new()\n    {\n        Uuid = \"\u003cuuid_of_port\u003e\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"id\"] = portDataName.Apply(getPortResult =\u003e getPortResult.Id),\n        [\"name\"] = portDataName.Apply(getPortResult =\u003e getPortResult.Name),\n        [\"state\"] = portDataName.Apply(getPortResult =\u003e getPortResult.State),\n        [\"accountName\"] = portDataName.Apply(getPortResult =\u003e getPortResult.Account?.AccountName),\n        [\"type\"] = portDataName.Apply(getPortResult =\u003e getPortResult.Type),\n        [\"bandwidth\"] = portDataName.Apply(getPortResult =\u003e getPortResult.Bandwidth),\n        [\"usedBandwidth\"] = portDataName.Apply(getPortResult =\u003e getPortResult.UsedBandwidth),\n        [\"encapsulationType\"] = portDataName.Apply(getPortResult =\u003e getPortResult.Encapsulation?.Type),\n        [\"ibx\"] = portDataName.Apply(getPortResult =\u003e getPortResult.Location?.Ibx),\n        [\"metroCode\"] = portDataName.Apply(getPortResult =\u003e getPortResult.Location?.MetroCode),\n        [\"metroName\"] = portDataName.Apply(getPortResult =\u003e getPortResult.Location?.MetroName),\n        [\"region\"] = portDataName.Apply(getPortResult =\u003e getPortResult.Location?.Region),\n        [\"deviceRedundancyEnabled\"] = portDataName.Apply(getPortResult =\u003e getPortResult.Device?.Redundancies[0]?.Enabled),\n        [\"deviceRedundancyPriority\"] = portDataName.Apply(getPortResult =\u003e getPortResult.Device?.Redundancies[0]?.Priority),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tportDataName, err := fabric.LookupPort(ctx, \u0026fabric.LookupPortArgs{\n\t\t\tUuid: \"\u003cuuid_of_port\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"id\", portDataName.Id)\n\t\tctx.Export(\"name\", portDataName.Name)\n\t\tctx.Export(\"state\", portDataName.State)\n\t\tctx.Export(\"accountName\", portDataName.Account.AccountName)\n\t\tctx.Export(\"type\", portDataName.Type)\n\t\tctx.Export(\"bandwidth\", portDataName.Bandwidth)\n\t\tctx.Export(\"usedBandwidth\", portDataName.UsedBandwidth)\n\t\tctx.Export(\"encapsulationType\", portDataName.Encapsulation.Type)\n\t\tctx.Export(\"ibx\", portDataName.Location.Ibx)\n\t\tctx.Export(\"metroCode\", portDataName.Location.MetroCode)\n\t\tctx.Export(\"metroName\", portDataName.Location.MetroName)\n\t\tctx.Export(\"region\", portDataName.Location.Region)\n\t\tctx.Export(\"deviceRedundancyEnabled\", portDataName.Device.Redundancies[0].Enabled)\n\t\tctx.Export(\"deviceRedundancyPriority\", portDataName.Device.Redundancies[0].Priority)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetPortArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var portDataName = FabricFunctions.getPort(GetPortArgs.builder()\n            .uuid(\"\u003cuuid_of_port\u003e\")\n            .build());\n\n        ctx.export(\"id\", portDataName.applyValue(getPortResult -\u003e getPortResult.id()));\n        ctx.export(\"name\", portDataName.applyValue(getPortResult -\u003e getPortResult.name()));\n        ctx.export(\"state\", portDataName.applyValue(getPortResult -\u003e getPortResult.state()));\n        ctx.export(\"accountName\", portDataName.applyValue(getPortResult -\u003e getPortResult.account().accountName()));\n        ctx.export(\"type\", portDataName.applyValue(getPortResult -\u003e getPortResult.type()));\n        ctx.export(\"bandwidth\", portDataName.applyValue(getPortResult -\u003e getPortResult.bandwidth()));\n        ctx.export(\"usedBandwidth\", portDataName.applyValue(getPortResult -\u003e getPortResult.usedBandwidth()));\n        ctx.export(\"encapsulationType\", portDataName.applyValue(getPortResult -\u003e getPortResult.encapsulation().type()));\n        ctx.export(\"ibx\", portDataName.applyValue(getPortResult -\u003e getPortResult.location().ibx()));\n        ctx.export(\"metroCode\", portDataName.applyValue(getPortResult -\u003e getPortResult.location().metroCode()));\n        ctx.export(\"metroName\", portDataName.applyValue(getPortResult -\u003e getPortResult.location().metroName()));\n        ctx.export(\"region\", portDataName.applyValue(getPortResult -\u003e getPortResult.location().region()));\n        ctx.export(\"deviceRedundancyEnabled\", portDataName.applyValue(getPortResult -\u003e getPortResult.device().redundancies()[0].enabled()));\n        ctx.export(\"deviceRedundancyPriority\", portDataName.applyValue(getPortResult -\u003e getPortResult.device().redundancies()[0].priority()));\n    }\n}\n```\n```yaml\nvariables:\n  portDataName:\n    fn::invoke:\n      function: equinix:fabric:getPort\n      arguments:\n        uuid: \u003cuuid_of_port\u003e\noutputs:\n  id: ${portDataName.id}\n  name: ${portDataName.name}\n  state: ${portDataName.state}\n  accountName: ${portDataName.account.accountName}\n  type: ${portDataName.type}\n  bandwidth: ${portDataName.bandwidth}\n  usedBandwidth: ${portDataName.usedBandwidth}\n  encapsulationType: ${portDataName.encapsulation.type}\n  ibx: ${portDataName.location.ibx}\n  metroCode: ${portDataName.location.metroCode}\n  metroName: ${portDataName.location.metroName}\n  region: ${portDataName.location.region}\n  deviceRedundancyEnabled: ${portDataName.device.redundancies[0].enabled}\n  deviceRedundancyPriority: ${portDataName.device.redundancies[0].priority}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPort.\n","properties":{"uuid":{"type":"string","description":"Equinix-assigned port identifier\n"}},"type":"object","required":["uuid"]},"outputs":{"description":"A collection of values returned by getPort.\n","properties":{"account":{"$ref":"#/types/equinix:fabric/getPortAccount:getPortAccount","description":"Customer account information that is associated with this port\n"},"availableBandwidth":{"description":"Port available bandwidth in Mbps\n","type":"integer"},"bandwidth":{"description":"Port bandwidth in Mbps\n","type":"integer"},"changeLog":{"$ref":"#/types/equinix:fabric/getPortChangeLog:getPortChangeLog","description":"Captures port lifecycle change information\n"},"description":{"description":"Port description\n","type":"string"},"device":{"$ref":"#/types/equinix:fabric/getPortDevice:getPortDevice","description":"Port device\n"},"encapsulation":{"$ref":"#/types/equinix:fabric/getPortEncapsulation:getPortEncapsulation","description":"Port encapsulation protocol\n"},"href":{"description":"Port URI information\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"lagEnabled":{"description":"Port Lag\n","type":"boolean"},"location":{"$ref":"#/types/equinix:fabric/getPortLocation:getPortLocation","description":"Port location information\n"},"name":{"description":"Port name\n","type":"string"},"operation":{"$ref":"#/types/equinix:fabric/getPortOperation:getPortOperation","description":"Port specific operational data\n"},"redundancy":{"$ref":"#/types/equinix:fabric/getPortRedundancy:getPortRedundancy","description":"Port redundancy information\n"},"serviceType":{"description":"Port service type\n","type":"string"},"state":{"description":"Port state\n","type":"string"},"type":{"description":"Port type\n","type":"string"},"usedBandwidth":{"description":"Port used bandwidth in Mbps\n","type":"integer"},"uuid":{"description":"Equinix-assigned port identifier\n","type":"string"}},"required":["account","availableBandwidth","bandwidth","changeLog","description","device","encapsulation","href","lagEnabled","location","name","operation","redundancy","serviceType","state","type","usedBandwidth","uuid","id"],"type":"object"}},"equinix:fabric/getPorts:getPorts":{"description":"Fabric V4 API compatible data resource that allow user to fetch ports by name or uuid\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/Fabric/IMPLEMENTATION/fabric-ports-implement.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#ports\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst portsDataName = equinix.fabric.getPorts({\n    filter: {\n        name: \"\u003cname_of_port||port_prefix\u003e\",\n    },\n});\nexport const id = data.equinix_fabric_port.ports_data_name.data[0].id;\nexport const name = data.equinix_fabric_port.ports_data_name.data[0].name;\nexport const state = data.equinix_fabric_port.ports_data_name.data[0].state;\nexport const accountName = data.equinix_fabric_port.ports_data_name.data[0].account[0].account_name;\nexport const type = data.equinix_fabric_port.ports_data_name.data[0].type;\nexport const bandwidth = data.equinix_fabric_port.ports_data_name.data[0].bandwidth;\nexport const usedBandwidth = data.equinix_fabric_port.ports_data_name.data[0].used_bandwidth;\nexport const encapsulationType = data.equinix_fabric_port.ports_data_name.data[0].encapsulation[0].type;\nexport const ibx = data.equinix_fabric_port.ports_data_name.data[0].location[0].ibx;\nexport const metroCode = data.equinix_fabric_port.ports_data_name.data[0].location[0].metro_code;\nexport const metroName = data.equinix_fabric_port.ports_data_name.data[0].location[0].metro_name;\nexport const region = data.equinix_fabric_port.ports_data_name.data[0].location[0].region;\nexport const deviceRedundancyEnabled = data.equinix_fabric_port.ports_data_name.data[0].device[0].redundancy[0].enabled;\nexport const deviceRedundancyPriority = data.equinix_fabric_port.ports_data_name.data[0].device[0].redundancy[0].priority;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nports_data_name = equinix.fabric.get_ports(filter={\n    \"name\": \"\u003cname_of_port||port_prefix\u003e\",\n})\npulumi.export(\"id\", data[\"equinix_fabric_port\"][\"ports_data_name\"][\"data\"][0][\"id\"])\npulumi.export(\"name\", data[\"equinix_fabric_port\"][\"ports_data_name\"][\"data\"][0][\"name\"])\npulumi.export(\"state\", data[\"equinix_fabric_port\"][\"ports_data_name\"][\"data\"][0][\"state\"])\npulumi.export(\"accountName\", data[\"equinix_fabric_port\"][\"ports_data_name\"][\"data\"][0][\"account\"][0][\"account_name\"])\npulumi.export(\"type\", data[\"equinix_fabric_port\"][\"ports_data_name\"][\"data\"][0][\"type\"])\npulumi.export(\"bandwidth\", data[\"equinix_fabric_port\"][\"ports_data_name\"][\"data\"][0][\"bandwidth\"])\npulumi.export(\"usedBandwidth\", data[\"equinix_fabric_port\"][\"ports_data_name\"][\"data\"][0][\"used_bandwidth\"])\npulumi.export(\"encapsulationType\", data[\"equinix_fabric_port\"][\"ports_data_name\"][\"data\"][0][\"encapsulation\"][0][\"type\"])\npulumi.export(\"ibx\", data[\"equinix_fabric_port\"][\"ports_data_name\"][\"data\"][0][\"location\"][0][\"ibx\"])\npulumi.export(\"metroCode\", data[\"equinix_fabric_port\"][\"ports_data_name\"][\"data\"][0][\"location\"][0][\"metro_code\"])\npulumi.export(\"metroName\", data[\"equinix_fabric_port\"][\"ports_data_name\"][\"data\"][0][\"location\"][0][\"metro_name\"])\npulumi.export(\"region\", data[\"equinix_fabric_port\"][\"ports_data_name\"][\"data\"][0][\"location\"][0][\"region\"])\npulumi.export(\"deviceRedundancyEnabled\", data[\"equinix_fabric_port\"][\"ports_data_name\"][\"data\"][0][\"device\"][0][\"redundancy\"][0][\"enabled\"])\npulumi.export(\"deviceRedundancyPriority\", data[\"equinix_fabric_port\"][\"ports_data_name\"][\"data\"][0][\"device\"][0][\"redundancy\"][0][\"priority\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var portsDataName = Equinix.Fabric.GetPorts.Invoke(new()\n    {\n        Filter = new Equinix.Fabric.Inputs.GetPortsFilterInputArgs\n        {\n            Name = \"\u003cname_of_port||port_prefix\u003e\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"id\"] = data.Equinix_fabric_port.Ports_data_name.Data[0].Id,\n        [\"name\"] = data.Equinix_fabric_port.Ports_data_name.Data[0].Name,\n        [\"state\"] = data.Equinix_fabric_port.Ports_data_name.Data[0].State,\n        [\"accountName\"] = data.Equinix_fabric_port.Ports_data_name.Data[0].Account[0].Account_name,\n        [\"type\"] = data.Equinix_fabric_port.Ports_data_name.Data[0].Type,\n        [\"bandwidth\"] = data.Equinix_fabric_port.Ports_data_name.Data[0].Bandwidth,\n        [\"usedBandwidth\"] = data.Equinix_fabric_port.Ports_data_name.Data[0].Used_bandwidth,\n        [\"encapsulationType\"] = data.Equinix_fabric_port.Ports_data_name.Data[0].Encapsulation[0].Type,\n        [\"ibx\"] = data.Equinix_fabric_port.Ports_data_name.Data[0].Location[0].Ibx,\n        [\"metroCode\"] = data.Equinix_fabric_port.Ports_data_name.Data[0].Location[0].Metro_code,\n        [\"metroName\"] = data.Equinix_fabric_port.Ports_data_name.Data[0].Location[0].Metro_name,\n        [\"region\"] = data.Equinix_fabric_port.Ports_data_name.Data[0].Location[0].Region,\n        [\"deviceRedundancyEnabled\"] = data.Equinix_fabric_port.Ports_data_name.Data[0].Device[0].Redundancy[0].Enabled,\n        [\"deviceRedundancyPriority\"] = data.Equinix_fabric_port.Ports_data_name.Data[0].Device[0].Redundancy[0].Priority,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.GetPorts(ctx, \u0026fabric.GetPortsArgs{\n\t\t\tFilter: fabric.GetPortsFilter{\n\t\t\t\tName: \"\u003cname_of_port||port_prefix\u003e\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"id\", data.Equinix_fabric_port.Ports_data_name.Data[0].Id)\n\t\tctx.Export(\"name\", data.Equinix_fabric_port.Ports_data_name.Data[0].Name)\n\t\tctx.Export(\"state\", data.Equinix_fabric_port.Ports_data_name.Data[0].State)\n\t\tctx.Export(\"accountName\", data.Equinix_fabric_port.Ports_data_name.Data[0].Account[0].Account_name)\n\t\tctx.Export(\"type\", data.Equinix_fabric_port.Ports_data_name.Data[0].Type)\n\t\tctx.Export(\"bandwidth\", data.Equinix_fabric_port.Ports_data_name.Data[0].Bandwidth)\n\t\tctx.Export(\"usedBandwidth\", data.Equinix_fabric_port.Ports_data_name.Data[0].Used_bandwidth)\n\t\tctx.Export(\"encapsulationType\", data.Equinix_fabric_port.Ports_data_name.Data[0].Encapsulation[0].Type)\n\t\tctx.Export(\"ibx\", data.Equinix_fabric_port.Ports_data_name.Data[0].Location[0].Ibx)\n\t\tctx.Export(\"metroCode\", data.Equinix_fabric_port.Ports_data_name.Data[0].Location[0].Metro_code)\n\t\tctx.Export(\"metroName\", data.Equinix_fabric_port.Ports_data_name.Data[0].Location[0].Metro_name)\n\t\tctx.Export(\"region\", data.Equinix_fabric_port.Ports_data_name.Data[0].Location[0].Region)\n\t\tctx.Export(\"deviceRedundancyEnabled\", data.Equinix_fabric_port.Ports_data_name.Data[0].Device[0].Redundancy[0].Enabled)\n\t\tctx.Export(\"deviceRedundancyPriority\", data.Equinix_fabric_port.Ports_data_name.Data[0].Device[0].Redundancy[0].Priority)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetPortsArgs;\nimport com.pulumi.equinix.fabric.inputs.GetPortsFilterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var portsDataName = FabricFunctions.getPorts(GetPortsArgs.builder()\n            .filter(GetPortsFilterArgs.builder()\n                .name(\"\u003cname_of_port||port_prefix\u003e\")\n                .build())\n            .build());\n\n        ctx.export(\"id\", data.equinix_fabric_port().ports_data_name().data()[0].id());\n        ctx.export(\"name\", data.equinix_fabric_port().ports_data_name().data()[0].name());\n        ctx.export(\"state\", data.equinix_fabric_port().ports_data_name().data()[0].state());\n        ctx.export(\"accountName\", data.equinix_fabric_port().ports_data_name().data()[0].account()[0].account_name());\n        ctx.export(\"type\", data.equinix_fabric_port().ports_data_name().data()[0].type());\n        ctx.export(\"bandwidth\", data.equinix_fabric_port().ports_data_name().data()[0].bandwidth());\n        ctx.export(\"usedBandwidth\", data.equinix_fabric_port().ports_data_name().data()[0].used_bandwidth());\n        ctx.export(\"encapsulationType\", data.equinix_fabric_port().ports_data_name().data()[0].encapsulation()[0].type());\n        ctx.export(\"ibx\", data.equinix_fabric_port().ports_data_name().data()[0].location()[0].ibx());\n        ctx.export(\"metroCode\", data.equinix_fabric_port().ports_data_name().data()[0].location()[0].metro_code());\n        ctx.export(\"metroName\", data.equinix_fabric_port().ports_data_name().data()[0].location()[0].metro_name());\n        ctx.export(\"region\", data.equinix_fabric_port().ports_data_name().data()[0].location()[0].region());\n        ctx.export(\"deviceRedundancyEnabled\", data.equinix_fabric_port().ports_data_name().data()[0].device()[0].redundancy()[0].enabled());\n        ctx.export(\"deviceRedundancyPriority\", data.equinix_fabric_port().ports_data_name().data()[0].device()[0].redundancy()[0].priority());\n    }\n}\n```\n```yaml\nvariables:\n  portsDataName:\n    fn::invoke:\n      function: equinix:fabric:getPorts\n      arguments:\n        filter:\n          name: \u003cname_of_port||port_prefix\u003e\noutputs:\n  id: ${data.equinix_fabric_port.ports_data_name.data[0].id}\n  name: ${data.equinix_fabric_port.ports_data_name.data[0].name}\n  state: ${data.equinix_fabric_port.ports_data_name.data[0].state}\n  accountName: ${data.equinix_fabric_port.ports_data_name.data[0].account[0].account_name}\n  type: ${data.equinix_fabric_port.ports_data_name.data[0].type}\n  bandwidth: ${data.equinix_fabric_port.ports_data_name.data[0].bandwidth}\n  usedBandwidth: ${data.equinix_fabric_port.ports_data_name.data[0].used_bandwidth}\n  encapsulationType: ${data.equinix_fabric_port.ports_data_name.data[0].encapsulation[0].type}\n  ibx: ${data.equinix_fabric_port.ports_data_name.data[0].location[0].ibx}\n  metroCode: ${data.equinix_fabric_port.ports_data_name.data[0].location[0].metro_code}\n  metroName: ${data.equinix_fabric_port.ports_data_name.data[0].location[0].metro_name}\n  region: ${data.equinix_fabric_port.ports_data_name.data[0].location[0].region}\n  deviceRedundancyEnabled: ${data.equinix_fabric_port.ports_data_name.data[0].device[0].redundancy[0].enabled}\n  deviceRedundancyPriority: ${data.equinix_fabric_port.ports_data_name.data[0].device[0].redundancy[0].priority}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPorts.\n","properties":{"filter":{"$ref":"#/types/equinix:fabric/getPortsFilter:getPortsFilter","description":"(Deprecated) Use 'filter' instead.\n","deprecationMessage":"Use 'filter' instead."},"filters":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPortsFilter:getPortsFilter"},"description":"List of filter objects for SearchPorts API. Each filter must have property, operator, and value.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getPorts.\n","properties":{"data":{"description":"List of Ports\n","items":{"$ref":"#/types/equinix:fabric/getPortsDatum:getPortsDatum"},"type":"array"},"filter":{"$ref":"#/types/equinix:fabric/getPortsFilter:getPortsFilter","deprecationMessage":"Use 'filter' instead.","description":"(Deprecated) Use 'filter' instead.\n"},"filters":{"description":"List of filter objects for SearchPorts API. Each filter must have property, operator, and value.\n","items":{"$ref":"#/types/equinix:fabric/getPortsFilter:getPortsFilter"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"}},"required":["data","id"],"type":"object"}},"equinix:fabric/getPrecisionTimeService:getPrecisionTimeService":{"description":"Fabric V4 API compatible data resource that allow user to fetch Equinix Precision Time Service by UUID\nAdditional Documentation:\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Precision-Time\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst ept_test = equinix.fabric.getPrecisionTimeService({\n    eptServiceId: \"\u003cept_service_id\",\n});\nexport const eptServiceId = ept_test.then(ept_test =\u003e ept_test.id);\nexport const eptServiceName = ept_test.then(ept_test =\u003e ept_test.name);\nexport const eptServiceState = ept_test.then(ept_test =\u003e ept_test.state);\nexport const eptServiceType = ept_test.then(ept_test =\u003e ept_test.type);\nexport const eptServiceIpv4 = ept_test.then(ept_test =\u003e ept_test.ipv4);\nexport const eptServiceConnection = equinix_fabric_precision_time_service.ptp.connections;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nept_test = equinix.fabric.get_precision_time_service(ept_service_id=\"\u003cept_service_id\")\npulumi.export(\"eptServiceId\", ept_test.id)\npulumi.export(\"eptServiceName\", ept_test.name)\npulumi.export(\"eptServiceState\", ept_test.state)\npulumi.export(\"eptServiceType\", ept_test.type)\npulumi.export(\"eptServiceIpv4\", ept_test.ipv4)\npulumi.export(\"eptServiceConnection\", equinix_fabric_precision_time_service[\"ptp\"][\"connections\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ept_test = Equinix.Fabric.GetPrecisionTimeService.Invoke(new()\n    {\n        EptServiceId = \"\u003cept_service_id\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"eptServiceId\"] = ept_test.Apply(ept_test =\u003e ept_test.Apply(getPrecisionTimeServiceResult =\u003e getPrecisionTimeServiceResult.Id)),\n        [\"eptServiceName\"] = ept_test.Apply(ept_test =\u003e ept_test.Apply(getPrecisionTimeServiceResult =\u003e getPrecisionTimeServiceResult.Name)),\n        [\"eptServiceState\"] = ept_test.Apply(ept_test =\u003e ept_test.Apply(getPrecisionTimeServiceResult =\u003e getPrecisionTimeServiceResult.State)),\n        [\"eptServiceType\"] = ept_test.Apply(ept_test =\u003e ept_test.Apply(getPrecisionTimeServiceResult =\u003e getPrecisionTimeServiceResult.Type)),\n        [\"eptServiceIpv4\"] = ept_test.Apply(ept_test =\u003e ept_test.Apply(getPrecisionTimeServiceResult =\u003e getPrecisionTimeServiceResult.Ipv4)),\n        [\"eptServiceConnection\"] = equinix_fabric_precision_time_service.Ptp.Connections,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tept_test, err := fabric.LookupPrecisionTimeService(ctx, \u0026fabric.LookupPrecisionTimeServiceArgs{\n\t\t\tEptServiceId: \"\u003cept_service_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"eptServiceId\", ept_test.Id)\n\t\tctx.Export(\"eptServiceName\", ept_test.Name)\n\t\tctx.Export(\"eptServiceState\", ept_test.State)\n\t\tctx.Export(\"eptServiceType\", ept_test.Type)\n\t\tctx.Export(\"eptServiceIpv4\", ept_test.Ipv4)\n\t\tctx.Export(\"eptServiceConnection\", equinix_fabric_precision_time_service.Ptp.Connections)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetPrecisionTimeServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var ept-test = FabricFunctions.getPrecisionTimeService(GetPrecisionTimeServiceArgs.builder()\n            .eptServiceId(\"\u003cept_service_id\")\n            .build());\n\n        ctx.export(\"eptServiceId\", ept_test.id());\n        ctx.export(\"eptServiceName\", ept_test.name());\n        ctx.export(\"eptServiceState\", ept_test.state());\n        ctx.export(\"eptServiceType\", ept_test.type());\n        ctx.export(\"eptServiceIpv4\", ept_test.ipv4());\n        ctx.export(\"eptServiceConnection\", equinix_fabric_precision_time_service.ptp().connections());\n    }\n}\n```\n```yaml\nvariables:\n  ept-test:\n    fn::invoke:\n      function: equinix:fabric:getPrecisionTimeService\n      arguments:\n        eptServiceId: \u003cept_service_id\noutputs:\n  eptServiceId: ${[\"ept-test\"].id}\n  eptServiceName: ${[\"ept-test\"].name}\n  eptServiceState: ${[\"ept-test\"].state}\n  eptServiceType: ${[\"ept-test\"].type}\n  eptServiceIpv4: ${[\"ept-test\"].ipv4}\n  eptServiceConnection: ${equinix_fabric_precision_time_service.ptp.connections}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPrecisionTimeService.\n","properties":{"eptServiceId":{"type":"string","description":"The uuid of the EPT Service this data source should retrieve\n"},"ntpAdvancedConfigurations":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServiceNtpAdvancedConfiguration:getPrecisionTimeServiceNtpAdvancedConfiguration"},"description":"NTP Advanced configuration\n"},"project":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServiceProject:getPrecisionTimeServiceProject","description":"Equinix Project attribute object\n"},"ptpAdvancedConfiguration":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicePtpAdvancedConfiguration:getPrecisionTimeServicePtpAdvancedConfiguration","description":"PTP Advanced Configuration\n"}},"type":"object","required":["eptServiceId"]},"outputs":{"description":"A collection of values returned by getPrecisionTimeService.\n","properties":{"account":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServiceAccount:getPrecisionTimeServiceAccount","description":"Equinix User Account associated with Precision Time Service\n"},"changeLog":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServiceChangeLog:getPrecisionTimeServiceChangeLog","description":"Details of the last change on the route aggregation resource\n"},"connections":{"description":"An array of objects with unique identifiers of connections.\n","items":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServiceConnection:getPrecisionTimeServiceConnection"},"type":"array"},"eptServiceId":{"description":"The uuid of the EPT Service this data source should retrieve\n","type":"string"},"href":{"description":"Equinix generated Portal link for the created Precision Time Service\n","type":"string"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"ipv4":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServiceIpv4:getPrecisionTimeServiceIpv4","description":"An object that has Network IP Configurations for Timing Master Servers.\n"},"name":{"description":"Name of Precision Time Service. Applicable values: Maximum: 24 characters; Allowed characters: alpha-numeric, hyphens ('-') and underscores ('_')\n","type":"string"},"ntpAdvancedConfigurations":{"description":"NTP Advanced configuration\n","items":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServiceNtpAdvancedConfiguration:getPrecisionTimeServiceNtpAdvancedConfiguration"},"type":"array"},"operation":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServiceOperation:getPrecisionTimeServiceOperation","description":"Precision Time Service Operation\n"},"order":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServiceOrder:getPrecisionTimeServiceOrder","description":"Precision Time Order\n"},"package":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicePackage:getPrecisionTimeServicePackage","description":"Precision Time Service Package Details\n"},"precisionTimePrice":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicePrecisionTimePrice:getPrecisionTimeServicePrecisionTimePrice","description":"Precision Time Service Price\n"},"project":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServiceProject:getPrecisionTimeServiceProject","description":"Equinix Project attribute object\n"},"ptpAdvancedConfiguration":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicePtpAdvancedConfiguration:getPrecisionTimeServicePtpAdvancedConfiguration","description":"PTP Advanced Configuration\n"},"state":{"description":"Indicator of the state of this Precision Time Service\n","type":"string"},"type":{"description":"Choose type of Precision Time Service\n","type":"string"},"uuid":{"description":"Equinix generated id for the Precision Time Service\n","type":"string"}},"required":["account","changeLog","connections","eptServiceId","href","id","ipv4","name","operation","order","package","precisionTimePrice","state","type","uuid"],"type":"object"}},"equinix:fabric/getPrecisionTimeServices:getPrecisionTimeServices":{"description":"Fabric V4 API compatible data resource that allow user to fetch Equinix Fabric Precision Time Services with pagination details\nAdditional Documentation:\n* API: https://docs.equinix.com/en-us/Content/KnowledgeCenter/Fabric/API-Reference/API-Precision-Time.htm\n\n","inputs":{"description":"A collection of arguments for invoking getPrecisionTimeServices.\n","properties":{"filters":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesFilter:getPrecisionTimeServicesFilter"},"description":"List of filters to apply to the stream attachment get request. Maximum of 8. All will be AND'd together with 1 of the 8 being a possible OR group of 3\n"},"pagination":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesPagination:getPrecisionTimeServicesPagination","description":"Pagination details for the returned route aggregations list\n"},"sorts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesSort:getPrecisionTimeServicesSort"},"description":"Filters for the Data Source Search Request\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getPrecisionTimeServices.\n","properties":{"datas":{"description":"Returned list of route aggregation objects\n","items":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesData:getPrecisionTimeServicesData"},"type":"array"},"filters":{"description":"List of filters to apply to the stream attachment get request. Maximum of 8. All will be AND'd together with 1 of the 8 being a possible OR group of 3\n","items":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesFilter:getPrecisionTimeServicesFilter"},"type":"array"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesPagination:getPrecisionTimeServicesPagination","description":"Pagination details for the returned route aggregations list\n"},"sorts":{"description":"Filters for the Data Source Search Request\n","items":{"$ref":"#/types/equinix:fabric/getPrecisionTimeServicesSort:getPrecisionTimeServicesSort"},"type":"array"}},"required":["datas","filters","id"],"type":"object"}},"equinix:fabric/getReceivedRoutes:getReceivedRoutes":{"inputs":{"description":"A collection of arguments for invoking getReceivedRoutes.\n","properties":{"connectionId":{"type":"string","description":"The uuid of the routes this data source should retrieve\n"},"filter":{"$ref":"#/types/equinix:fabric/getReceivedRoutesFilter:getReceivedRoutesFilter","description":"Filters for the Data Source Search Request\n"},"pagination":{"$ref":"#/types/equinix:fabric/getReceivedRoutesPagination:getReceivedRoutesPagination","description":"Pagination details for the returned received routes list\n"},"sort":{"$ref":"#/types/equinix:fabric/getReceivedRoutesSort:getReceivedRoutesSort","description":"Sort details for the returned received routes list\n"}},"type":"object","required":["connectionId","filter","pagination"]},"outputs":{"description":"A collection of values returned by getReceivedRoutes.\n","properties":{"connectionId":{"description":"The uuid of the routes this data source should retrieve\n","type":"string"},"datas":{"description":"Returned list of received routes objects\n","items":{"$ref":"#/types/equinix:fabric/getReceivedRoutesData:getReceivedRoutesData"},"type":"array"},"filter":{"$ref":"#/types/equinix:fabric/getReceivedRoutesFilter:getReceivedRoutesFilter","description":"Filters for the Data Source Search Request\n"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getReceivedRoutesPagination:getReceivedRoutesPagination","description":"Pagination details for the returned received routes list\n"},"sort":{"$ref":"#/types/equinix:fabric/getReceivedRoutesSort:getReceivedRoutesSort","description":"Sort details for the returned received routes list\n"}},"required":["connectionId","datas","filter","id","pagination"],"type":"object"}},"equinix:fabric/getRouteAggregation:getRouteAggregation":{"description":"Fabric V4 API compatible data resource that allow user to fetch Equinix Fabric Route Aggregation by UUID\nAdditional Documentation:\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Route-Aggregations\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetRouteAggregationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var raPolicy = FabricFunctions.getRouteAggregation(GetRouteAggregationArgs.builder()\n            .uuid(\"\u003cuuid_of_route_aggregation\u003e\")\n            .build());\n\n        ctx.export(\"id\", raPolicy.applyValue(getRouteAggregationResult -\u003e getRouteAggregationResult.id()));\n        ctx.export(\"type\", raPolicy.applyValue(getRouteAggregationResult -\u003e getRouteAggregationResult.type()));\n        ctx.export(\"state\", raPolicy.applyValue(getRouteAggregationResult -\u003e getRouteAggregationResult.state()));\n        ctx.export(\"connectionsCount\", raPolicy.applyValue(getRouteAggregationResult -\u003e getRouteAggregationResult.connectionsCount()));\n        ctx.export(\"rulesCount\", raPolicy.applyValue(getRouteAggregationResult -\u003e getRouteAggregationResult.rulesCount()));\n    }\n}\n```\n```yaml\nvariables:\n  raPolicy:\n    fn::invoke:\n      function: equinix:fabric:getRouteAggregation\n      arguments:\n        uuid: \u003cuuid_of_route_aggregation\u003e\noutputs:\n  id: ${raPolicy.id}\n  type: ${raPolicy.type}\n  state: ${raPolicy.state}\n  connectionsCount: ${raPolicy.connectionsCount}\n  rulesCount: ${raPolicy.rulesCount}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRouteAggregation.\n","properties":{"routeAggregationId":{"type":"string","description":"The uuid of the route aggregation this data source should retrieve\n"}},"type":"object","required":["routeAggregationId"]},"outputs":{"description":"A collection of values returned by getRouteAggregation.\n","properties":{"change":{"$ref":"#/types/equinix:fabric/getRouteAggregationChange:getRouteAggregationChange","description":"Current state of latest Route Aggregation change\n"},"changeLog":{"$ref":"#/types/equinix:fabric/getRouteAggregationChangeLog:getRouteAggregationChangeLog","description":"Details of the last change on the route aggregation resource\n"},"connectionsCount":{"description":"Number of Connections attached to route aggregation\n","type":"integer"},"description":{"description":"Customer-provided route aggregation description\n","type":"string"},"href":{"description":"Equinix auto generated URI to the route aggregation resource\n","type":"string"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"name":{"description":"Customer provided name of the route aggregation\n","type":"string"},"project":{"$ref":"#/types/equinix:fabric/getRouteAggregationProject:getRouteAggregationProject","description":"Equinix Project attribute object\n"},"routeAggregationId":{"description":"The uuid of the route aggregation this data source should retrieve\n","type":"string"},"rulesCount":{"description":"Number of Rules attached to route aggregation\n","type":"integer"},"state":{"description":"Value representing provisioning status for the route aggregation resource\n","type":"string"},"type":{"description":"Equinix defined Route Aggregation Type; BGP*IPv4*PREFIX*AGGREGATION, BGP*IPv6*PREFIX*AGGREGATION\n","type":"string"},"uuid":{"description":"Equinix-assigned unique id for the route aggregation resource\n","type":"string"}},"required":["change","changeLog","connectionsCount","description","href","id","name","project","routeAggregationId","rulesCount","state","type","uuid"],"type":"object"}},"equinix:fabric/getRouteAggregationRule:getRouteAggregationRule":{"description":"Fabric V4 API compatible data resource that allow user to fetch Equinix Fabric Route Aggregation Rule by UUID\nAdditional Documentation:\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Route-Aggregations\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst raRule = equinix.fabric.getRouteAggregationRule({\n    routeAggregationId: \"\u003croute_aggregation_id\u003e\",\n    routeAggregationRuleId: \"\u003croute_aggregation_rule_id\u003e\",\n});\nexport const routeAggregationRuleName = raRule.then(raRule =\u003e raRule.name);\nexport const routeAggregationRuleDescription = raRule.then(raRule =\u003e raRule.description);\nexport const routeAggregationRuleType = raRule.then(raRule =\u003e raRule.type);\nexport const routeAggregationRulePrefix = raRule.then(raRule =\u003e raRule.prefix);\nexport const routeAggregationRuleState = raRule.then(raRule =\u003e raRule.state);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nra_rule = equinix.fabric.get_route_aggregation_rule(route_aggregation_id=\"\u003croute_aggregation_id\u003e\",\n    route_aggregation_rule_id=\"\u003croute_aggregation_rule_id\u003e\")\npulumi.export(\"routeAggregationRuleName\", ra_rule.name)\npulumi.export(\"routeAggregationRuleDescription\", ra_rule.description)\npulumi.export(\"routeAggregationRuleType\", ra_rule.type)\npulumi.export(\"routeAggregationRulePrefix\", ra_rule.prefix)\npulumi.export(\"routeAggregationRuleState\", ra_rule.state)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var raRule = Equinix.Fabric.GetRouteAggregationRule.Invoke(new()\n    {\n        RouteAggregationId = \"\u003croute_aggregation_id\u003e\",\n        RouteAggregationRuleId = \"\u003croute_aggregation_rule_id\u003e\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"routeAggregationRuleName\"] = raRule.Apply(getRouteAggregationRuleResult =\u003e getRouteAggregationRuleResult.Name),\n        [\"routeAggregationRuleDescription\"] = raRule.Apply(getRouteAggregationRuleResult =\u003e getRouteAggregationRuleResult.Description),\n        [\"routeAggregationRuleType\"] = raRule.Apply(getRouteAggregationRuleResult =\u003e getRouteAggregationRuleResult.Type),\n        [\"routeAggregationRulePrefix\"] = raRule.Apply(getRouteAggregationRuleResult =\u003e getRouteAggregationRuleResult.Prefix),\n        [\"routeAggregationRuleState\"] = raRule.Apply(getRouteAggregationRuleResult =\u003e getRouteAggregationRuleResult.State),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\traRule, err := fabric.LookupRouteAggregationRule(ctx, \u0026fabric.LookupRouteAggregationRuleArgs{\n\t\t\tRouteAggregationId:     \"\u003croute_aggregation_id\u003e\",\n\t\t\tRouteAggregationRuleId: \"\u003croute_aggregation_rule_id\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"routeAggregationRuleName\", raRule.Name)\n\t\tctx.Export(\"routeAggregationRuleDescription\", raRule.Description)\n\t\tctx.Export(\"routeAggregationRuleType\", raRule.Type)\n\t\tctx.Export(\"routeAggregationRulePrefix\", raRule.Prefix)\n\t\tctx.Export(\"routeAggregationRuleState\", raRule.State)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetRouteAggregationRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var raRule = FabricFunctions.getRouteAggregationRule(GetRouteAggregationRuleArgs.builder()\n            .routeAggregationId(\"\u003croute_aggregation_id\u003e\")\n            .routeAggregationRuleId(\"\u003croute_aggregation_rule_id\u003e\")\n            .build());\n\n        ctx.export(\"routeAggregationRuleName\", raRule.applyValue(getRouteAggregationRuleResult -\u003e getRouteAggregationRuleResult.name()));\n        ctx.export(\"routeAggregationRuleDescription\", raRule.applyValue(getRouteAggregationRuleResult -\u003e getRouteAggregationRuleResult.description()));\n        ctx.export(\"routeAggregationRuleType\", raRule.applyValue(getRouteAggregationRuleResult -\u003e getRouteAggregationRuleResult.type()));\n        ctx.export(\"routeAggregationRulePrefix\", raRule.applyValue(getRouteAggregationRuleResult -\u003e getRouteAggregationRuleResult.prefix()));\n        ctx.export(\"routeAggregationRuleState\", raRule.applyValue(getRouteAggregationRuleResult -\u003e getRouteAggregationRuleResult.state()));\n    }\n}\n```\n```yaml\nvariables:\n  raRule:\n    fn::invoke:\n      function: equinix:fabric:getRouteAggregationRule\n      arguments:\n        routeAggregationId: \u003croute_aggregation_id\u003e\n        routeAggregationRuleId: \u003croute_aggregation_rule_id\u003e\noutputs:\n  routeAggregationRuleName: ${raRule.name}\n  routeAggregationRuleDescription: ${raRule.description}\n  routeAggregationRuleType: ${raRule.type}\n  routeAggregationRulePrefix: ${raRule.prefix}\n  routeAggregationRuleState: ${raRule.state}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRouteAggregationRule.\n","properties":{"description":{"type":"string","description":"Customer-provided route aggregation rule description\n"},"routeAggregationId":{"type":"string","description":"The uuid of the route aggregation this data source should retrieve\n"},"routeAggregationRuleId":{"type":"string","description":"The uuid of the route aggregation rule this data source should retrieve\n"}},"type":"object","required":["routeAggregationId","routeAggregationRuleId"]},"outputs":{"description":"A collection of values returned by getRouteAggregationRule.\n","properties":{"change":{"$ref":"#/types/equinix:fabric/getRouteAggregationRuleChange:getRouteAggregationRuleChange","description":"Current state of latest route aggregation rule change\n"},"changeLog":{"$ref":"#/types/equinix:fabric/getRouteAggregationRuleChangeLog:getRouteAggregationRuleChangeLog","description":"Details of the last change on the stream resource\n"},"description":{"description":"Customer-provided route aggregation rule description\n","type":"string"},"href":{"description":"Equinix auto generated URI to the route aggregation rule resource\n","type":"string"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"name":{"description":"Customer provided name of the route aggregation rule\n","type":"string"},"prefix":{"description":"Customer-provided route aggregation rule prefix\n","type":"string"},"routeAggregationId":{"description":"The uuid of the route aggregation this data source should retrieve\n","type":"string"},"routeAggregationRuleId":{"description":"The uuid of the route aggregation rule this data source should retrieve\n","type":"string"},"state":{"description":"Value representing provisioning status for the route aggregation rule resource\n","type":"string"},"type":{"description":"Equinix defined Route Aggregation Type; BGP*IPv4*PREFIX*AGGREGATION, BGP*IPv6*PREFIX*AGGREGATION\n","type":"string"},"uuid":{"description":"Equinix-assigned unique id for the route aggregation rule resource\n","type":"string"}},"required":["change","changeLog","href","id","name","prefix","routeAggregationId","routeAggregationRuleId","state","type","uuid"],"type":"object"}},"equinix:fabric/getRouteAggregationRules:getRouteAggregationRules":{"description":"Fabric V4 API compatible data resource that allow user to fetch Equinix Fabric Route Aggregation Rules with pagination details\nAdditional Documentation:\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Route-Aggregations\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst raRules = equinix.fabric.getRouteAggregationRules({\n    routeAggregationId: \"\u003croute_aggregation_id\u003e\",\n    pagination: {\n        limit: 2,\n        offset: 1,\n    },\n});\nexport const routeAggregationRuleName = raRules.then(raRules =\u003e raRules.datas?.[0]?.name);\nexport const routeAggregationRuleDescription = raRules.then(raRules =\u003e raRules.datas?.[0]?.description);\nexport const routeAggregationRulePrefix = raRules.then(raRules =\u003e raRules.datas?.[0]?.prefix);\nexport const routeAggregationRuleState = raRules.then(raRules =\u003e raRules.datas?.[0]?.state);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nra_rules = equinix.fabric.get_route_aggregation_rules(route_aggregation_id=\"\u003croute_aggregation_id\u003e\",\n    pagination={\n        \"limit\": 2,\n        \"offset\": 1,\n    })\npulumi.export(\"routeAggregationRuleName\", ra_rules.datas[0].name)\npulumi.export(\"routeAggregationRuleDescription\", ra_rules.datas[0].description)\npulumi.export(\"routeAggregationRulePrefix\", ra_rules.datas[0].prefix)\npulumi.export(\"routeAggregationRuleState\", ra_rules.datas[0].state)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var raRules = Equinix.Fabric.GetRouteAggregationRules.Invoke(new()\n    {\n        RouteAggregationId = \"\u003croute_aggregation_id\u003e\",\n        Pagination = new Equinix.Fabric.Inputs.GetRouteAggregationRulesPaginationInputArgs\n        {\n            Limit = 2,\n            Offset = 1,\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"routeAggregationRuleName\"] = raRules.Apply(getRouteAggregationRulesResult =\u003e getRouteAggregationRulesResult.Datas[0]?.Name),\n        [\"routeAggregationRuleDescription\"] = raRules.Apply(getRouteAggregationRulesResult =\u003e getRouteAggregationRulesResult.Datas[0]?.Description),\n        [\"routeAggregationRulePrefix\"] = raRules.Apply(getRouteAggregationRulesResult =\u003e getRouteAggregationRulesResult.Datas[0]?.Prefix),\n        [\"routeAggregationRuleState\"] = raRules.Apply(getRouteAggregationRulesResult =\u003e getRouteAggregationRulesResult.Datas[0]?.State),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\traRules, err := fabric.GetRouteAggregationRules(ctx, \u0026fabric.GetRouteAggregationRulesArgs{\n\t\t\tRouteAggregationId: \"\u003croute_aggregation_id\u003e\",\n\t\t\tPagination: fabric.GetRouteAggregationRulesPagination{\n\t\t\t\tLimit:  2,\n\t\t\t\tOffset: 1,\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"routeAggregationRuleName\", raRules.Datas[0].Name)\n\t\tctx.Export(\"routeAggregationRuleDescription\", raRules.Datas[0].Description)\n\t\tctx.Export(\"routeAggregationRulePrefix\", raRules.Datas[0].Prefix)\n\t\tctx.Export(\"routeAggregationRuleState\", raRules.Datas[0].State)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetRouteAggregationRulesArgs;\nimport com.pulumi.equinix.fabric.inputs.GetRouteAggregationRulesPaginationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var raRules = FabricFunctions.getRouteAggregationRules(GetRouteAggregationRulesArgs.builder()\n            .routeAggregationId(\"\u003croute_aggregation_id\u003e\")\n            .pagination(GetRouteAggregationRulesPaginationArgs.builder()\n                .limit(2)\n                .offset(1)\n                .build())\n            .build());\n\n        ctx.export(\"routeAggregationRuleName\", raRules.applyValue(getRouteAggregationRulesResult -\u003e getRouteAggregationRulesResult.datas()[0].name()));\n        ctx.export(\"routeAggregationRuleDescription\", raRules.applyValue(getRouteAggregationRulesResult -\u003e getRouteAggregationRulesResult.datas()[0].description()));\n        ctx.export(\"routeAggregationRulePrefix\", raRules.applyValue(getRouteAggregationRulesResult -\u003e getRouteAggregationRulesResult.datas()[0].prefix()));\n        ctx.export(\"routeAggregationRuleState\", raRules.applyValue(getRouteAggregationRulesResult -\u003e getRouteAggregationRulesResult.datas()[0].state()));\n    }\n}\n```\n```yaml\nvariables:\n  raRules:\n    fn::invoke:\n      function: equinix:fabric:getRouteAggregationRules\n      arguments:\n        routeAggregationId: \u003croute_aggregation_id\u003e\n        pagination:\n          limit: 2\n          offset: 1\noutputs:\n  routeAggregationRuleName: ${raRules.datas[0].name}\n  routeAggregationRuleDescription: ${raRules.datas[0].description}\n  routeAggregationRulePrefix: ${raRules.datas[0].prefix}\n  routeAggregationRuleState: ${raRules.datas[0].state}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRouteAggregationRules.\n","properties":{"pagination":{"$ref":"#/types/equinix:fabric/getRouteAggregationRulesPagination:getRouteAggregationRulesPagination","description":"Pagination details for the returned route aggregation rules list\n"},"routeAggregationId":{"type":"string","description":"The uuid of the route aggregation rule this data source should retrieve\n"}},"type":"object","required":["routeAggregationId"]},"outputs":{"description":"A collection of values returned by getRouteAggregationRules.\n","properties":{"datas":{"description":"Returned list of route aggregation rule objects\n","items":{"$ref":"#/types/equinix:fabric/getRouteAggregationRulesData:getRouteAggregationRulesData"},"type":"array"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getRouteAggregationRulesPagination:getRouteAggregationRulesPagination","description":"Pagination details for the returned route aggregation rules list\n"},"routeAggregationId":{"description":"The uuid of the route aggregation rule this data source should retrieve\n","type":"string"}},"required":["datas","id","routeAggregationId"],"type":"object"}},"equinix:fabric/getRouteAggregations:getRouteAggregations":{"description":"Fabric V4 API compatible data resource that allow user to fetch Equinix Fabric Route Aggregations with pagination details\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/KnowledgeCenter/Fabric/GettingStarted/Integrating-with-Fabric-V4-APIs/IntegrateWithSink.htm\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Streams\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst raPolicy = equinix.fabric.getRouteAggregations({\n    filter: {\n        property: \"/project/projectId\",\n        operator: \"=\",\n        values: [\"\u003croute_aggregation_project_id\u003e\"],\n    },\n    pagination: {\n        limit: 2,\n        offset: 1,\n    },\n});\nexport const firstRouteAggregationName = raPolicy.then(raPolicy =\u003e raPolicy.datas?.[0]?.name);\nexport const firstRouteAggregationDescription = raPolicy.then(raPolicy =\u003e raPolicy.datas?.[0]?.description);\nexport const firstRouteAggregationConnectionsCount = raPolicy.then(raPolicy =\u003e raPolicy.datas?.[0]?.connectionsCount);\nexport const firstRouteAggregationRulesCount = raPolicy.then(raPolicy =\u003e raPolicy.datas?.[0]?.rulesCount);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nra_policy = equinix.fabric.get_route_aggregations(filter={\n        \"property\": \"/project/projectId\",\n        \"operator\": \"=\",\n        \"values\": [\"\u003croute_aggregation_project_id\u003e\"],\n    },\n    pagination={\n        \"limit\": 2,\n        \"offset\": 1,\n    })\npulumi.export(\"firstRouteAggregationName\", ra_policy.datas[0].name)\npulumi.export(\"firstRouteAggregationDescription\", ra_policy.datas[0].description)\npulumi.export(\"firstRouteAggregationConnectionsCount\", ra_policy.datas[0].connections_count)\npulumi.export(\"firstRouteAggregationRulesCount\", ra_policy.datas[0].rules_count)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var raPolicy = Equinix.Fabric.GetRouteAggregations.Invoke(new()\n    {\n        Filter = new Equinix.Fabric.Inputs.GetRouteAggregationsFilterInputArgs\n        {\n            Property = \"/project/projectId\",\n            Operator = \"=\",\n            Values = new[]\n            {\n                \"\u003croute_aggregation_project_id\u003e\",\n            },\n        },\n        Pagination = new Equinix.Fabric.Inputs.GetRouteAggregationsPaginationInputArgs\n        {\n            Limit = 2,\n            Offset = 1,\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"firstRouteAggregationName\"] = raPolicy.Apply(getRouteAggregationsResult =\u003e getRouteAggregationsResult.Datas[0]?.Name),\n        [\"firstRouteAggregationDescription\"] = raPolicy.Apply(getRouteAggregationsResult =\u003e getRouteAggregationsResult.Datas[0]?.Description),\n        [\"firstRouteAggregationConnectionsCount\"] = raPolicy.Apply(getRouteAggregationsResult =\u003e getRouteAggregationsResult.Datas[0]?.ConnectionsCount),\n        [\"firstRouteAggregationRulesCount\"] = raPolicy.Apply(getRouteAggregationsResult =\u003e getRouteAggregationsResult.Datas[0]?.RulesCount),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\traPolicy, err := fabric.GetRouteAggregations(ctx, \u0026fabric.GetRouteAggregationsArgs{\n\t\t\tFilter: fabric.GetRouteAggregationsFilter{\n\t\t\t\tProperty: \"/project/projectId\",\n\t\t\t\tOperator: \"=\",\n\t\t\t\tValues: []string{\n\t\t\t\t\t\"\u003croute_aggregation_project_id\u003e\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tPagination: fabric.GetRouteAggregationsPagination{\n\t\t\t\tLimit:  2,\n\t\t\t\tOffset: 1,\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"firstRouteAggregationName\", raPolicy.Datas[0].Name)\n\t\tctx.Export(\"firstRouteAggregationDescription\", raPolicy.Datas[0].Description)\n\t\tctx.Export(\"firstRouteAggregationConnectionsCount\", raPolicy.Datas[0].ConnectionsCount)\n\t\tctx.Export(\"firstRouteAggregationRulesCount\", raPolicy.Datas[0].RulesCount)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetRouteAggregationsArgs;\nimport com.pulumi.equinix.fabric.inputs.GetRouteAggregationsFilterArgs;\nimport com.pulumi.equinix.fabric.inputs.GetRouteAggregationsPaginationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var raPolicy = FabricFunctions.getRouteAggregations(GetRouteAggregationsArgs.builder()\n            .filter(GetRouteAggregationsFilterArgs.builder()\n                .property(\"/project/projectId\")\n                .operator(\"=\")\n                .values(\"\u003croute_aggregation_project_id\u003e\")\n                .build())\n            .pagination(GetRouteAggregationsPaginationArgs.builder()\n                .limit(2)\n                .offset(1)\n                .build())\n            .build());\n\n        ctx.export(\"firstRouteAggregationName\", raPolicy.applyValue(getRouteAggregationsResult -\u003e getRouteAggregationsResult.datas()[0].name()));\n        ctx.export(\"firstRouteAggregationDescription\", raPolicy.applyValue(getRouteAggregationsResult -\u003e getRouteAggregationsResult.datas()[0].description()));\n        ctx.export(\"firstRouteAggregationConnectionsCount\", raPolicy.applyValue(getRouteAggregationsResult -\u003e getRouteAggregationsResult.datas()[0].connectionsCount()));\n        ctx.export(\"firstRouteAggregationRulesCount\", raPolicy.applyValue(getRouteAggregationsResult -\u003e getRouteAggregationsResult.datas()[0].rulesCount()));\n    }\n}\n```\n```yaml\nvariables:\n  raPolicy:\n    fn::invoke:\n      function: equinix:fabric:getRouteAggregations\n      arguments:\n        filter:\n          property: /project/projectId\n          operator: =\n          values:\n            - \u003croute_aggregation_project_id\u003e\n        pagination:\n          limit: 2\n          offset: 1\noutputs:\n  firstRouteAggregationName: ${raPolicy.datas[0].name}\n  firstRouteAggregationDescription: ${raPolicy.datas[0].description}\n  firstRouteAggregationConnectionsCount: ${raPolicy.datas[0].connectionsCount}\n  firstRouteAggregationRulesCount: ${raPolicy.datas[0].rulesCount}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRouteAggregations.\n","properties":{"filter":{"$ref":"#/types/equinix:fabric/getRouteAggregationsFilter:getRouteAggregationsFilter","description":"Filters for the Data Source Search Request\n"},"pagination":{"$ref":"#/types/equinix:fabric/getRouteAggregationsPagination:getRouteAggregationsPagination","description":"Pagination details for the returned route aggregations list\n"},"sort":{"$ref":"#/types/equinix:fabric/getRouteAggregationsSort:getRouteAggregationsSort","description":"Filters for the Data Source Search Request\n"}},"type":"object","required":["filter"]},"outputs":{"description":"A collection of values returned by getRouteAggregations.\n","properties":{"datas":{"description":"Returned list of route aggregation objects\n","items":{"$ref":"#/types/equinix:fabric/getRouteAggregationsData:getRouteAggregationsData"},"type":"array"},"filter":{"$ref":"#/types/equinix:fabric/getRouteAggregationsFilter:getRouteAggregationsFilter","description":"Filters for the Data Source Search Request\n"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getRouteAggregationsPagination:getRouteAggregationsPagination","description":"Pagination details for the returned route aggregations list\n"},"sort":{"$ref":"#/types/equinix:fabric/getRouteAggregationsSort:getRouteAggregationsSort","description":"Filters for the Data Source Search Request\n"}},"required":["datas","filter","id"],"type":"object"}},"equinix:fabric/getRouteFilter:getRouteFilter":{"description":"Fabric V4 API compatible data resource that allow user to fetch route filter for a given UUID\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-route-filters.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#route-filters\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst rfPolicy = equinix.fabric.getRouteFilter({\n    uuid: \"\u003cuuid_of_route_filter\",\n});\nexport const id = rfPolicy.then(rfPolicy =\u003e rfPolicy.id);\nexport const type = rfPolicy.then(rfPolicy =\u003e rfPolicy.type);\nexport const state = rfPolicy.then(rfPolicy =\u003e rfPolicy.state);\nexport const notMatchedRulesAction = rfPolicy.then(rfPolicy =\u003e rfPolicy.notMatchedRuleAction);\nexport const connectionsCount = rfPolicy.then(rfPolicy =\u003e rfPolicy.connectionsCount);\nexport const rulesCount = rfPolicy.then(rfPolicy =\u003e rfPolicy.rulesCount);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nrf_policy = equinix.fabric.get_route_filter(uuid=\"\u003cuuid_of_route_filter\")\npulumi.export(\"id\", rf_policy.id)\npulumi.export(\"type\", rf_policy.type)\npulumi.export(\"state\", rf_policy.state)\npulumi.export(\"notMatchedRulesAction\", rf_policy.not_matched_rule_action)\npulumi.export(\"connectionsCount\", rf_policy.connections_count)\npulumi.export(\"rulesCount\", rf_policy.rules_count)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rfPolicy = Equinix.Fabric.GetRouteFilter.Invoke(new()\n    {\n        Uuid = \"\u003cuuid_of_route_filter\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"id\"] = rfPolicy.Apply(getRouteFilterResult =\u003e getRouteFilterResult.Id),\n        [\"type\"] = rfPolicy.Apply(getRouteFilterResult =\u003e getRouteFilterResult.Type),\n        [\"state\"] = rfPolicy.Apply(getRouteFilterResult =\u003e getRouteFilterResult.State),\n        [\"notMatchedRulesAction\"] = rfPolicy.Apply(getRouteFilterResult =\u003e getRouteFilterResult.NotMatchedRuleAction),\n        [\"connectionsCount\"] = rfPolicy.Apply(getRouteFilterResult =\u003e getRouteFilterResult.ConnectionsCount),\n        [\"rulesCount\"] = rfPolicy.Apply(getRouteFilterResult =\u003e getRouteFilterResult.RulesCount),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trfPolicy, err := fabric.LookupRouteFilter(ctx, \u0026fabric.LookupRouteFilterArgs{\n\t\t\tUuid: \"\u003cuuid_of_route_filter\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"id\", rfPolicy.Id)\n\t\tctx.Export(\"type\", rfPolicy.Type)\n\t\tctx.Export(\"state\", rfPolicy.State)\n\t\tctx.Export(\"notMatchedRulesAction\", rfPolicy.NotMatchedRuleAction)\n\t\tctx.Export(\"connectionsCount\", rfPolicy.ConnectionsCount)\n\t\tctx.Export(\"rulesCount\", rfPolicy.RulesCount)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetRouteFilterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var rfPolicy = FabricFunctions.getRouteFilter(GetRouteFilterArgs.builder()\n            .uuid(\"\u003cuuid_of_route_filter\")\n            .build());\n\n        ctx.export(\"id\", rfPolicy.applyValue(getRouteFilterResult -\u003e getRouteFilterResult.id()));\n        ctx.export(\"type\", rfPolicy.applyValue(getRouteFilterResult -\u003e getRouteFilterResult.type()));\n        ctx.export(\"state\", rfPolicy.applyValue(getRouteFilterResult -\u003e getRouteFilterResult.state()));\n        ctx.export(\"notMatchedRulesAction\", rfPolicy.applyValue(getRouteFilterResult -\u003e getRouteFilterResult.notMatchedRuleAction()));\n        ctx.export(\"connectionsCount\", rfPolicy.applyValue(getRouteFilterResult -\u003e getRouteFilterResult.connectionsCount()));\n        ctx.export(\"rulesCount\", rfPolicy.applyValue(getRouteFilterResult -\u003e getRouteFilterResult.rulesCount()));\n    }\n}\n```\n```yaml\nvariables:\n  rfPolicy:\n    fn::invoke:\n      function: equinix:fabric:getRouteFilter\n      arguments:\n        uuid: \u003cuuid_of_route_filter\noutputs:\n  id: ${rfPolicy.id}\n  type: ${rfPolicy.type}\n  state: ${rfPolicy.state}\n  notMatchedRulesAction: ${rfPolicy.notMatchedRuleAction}\n  connectionsCount: ${rfPolicy.connectionsCount}\n  rulesCount: ${rfPolicy.rulesCount}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRouteFilter.\n","properties":{"uuid":{"type":"string","description":"Equinix Assigned ID for Route Filter\n"}},"type":"object","required":["uuid"]},"outputs":{"description":"A collection of values returned by getRouteFilter.\n","properties":{"changeLogs":{"items":{"$ref":"#/types/equinix:fabric/getRouteFilterChangeLog:getRouteFilterChangeLog"},"type":"array"},"changes":{"description":"An object with the details of the previous change applied on the Route Filter\n","items":{"$ref":"#/types/equinix:fabric/getRouteFilterChange:getRouteFilterChange"},"type":"array"},"connectionsCount":{"description":"The number of Fabric Connections that this Route Filter is attached to\n","type":"integer"},"description":{"description":"Optional description to add to the Route Filter you will be creating\n","type":"string"},"href":{"description":"Route filter URI\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"name":{"description":"Name of the Route Filter\n","type":"string"},"notMatchedRuleAction":{"description":"The action that will be taken on ip ranges that don't match the rules present within the Route Filter\n","type":"string"},"projects":{"description":"The Project object that contains project_id and href that is related to the Fabric Project containing connections the Route Filter can be attached to\n","items":{"$ref":"#/types/equinix:fabric/getRouteFilterProject:getRouteFilterProject"},"type":"array"},"rulesCount":{"description":"The number of Route Filter Rules attached to this Route Filter\n","type":"integer"},"state":{"description":"State of the Route Filter in its lifecycle\n","type":"string"},"type":{"description":"Route Filter Type. One of [ \"BGP*IPv4*PREFIX*FILTER\", \"BGP*IPv6*PREFIX*FILTER\" ]\n","type":"string"},"uuid":{"description":"Equinix Assigned ID for Route Filter\n","type":"string"}},"required":["changes","changeLogs","connectionsCount","description","href","name","notMatchedRuleAction","projects","rulesCount","state","type","uuid","id"],"type":"object"}},"equinix:fabric/getRouteFilterRule:getRouteFilterRule":{"description":"Fabric V4 API compatible data resource that allow user to fetch route filter for a given UUID\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-route-filters.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#route-filter-rules\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst rfRule = equinix.fabric.getRouteFilterRule({\n    routeFilterId: \"\u003croute_filter_policy_id\u003e\",\n    uuid: \"\u003croute_filter_rule_uuid\u003e\",\n});\nexport const routeFilterRuleName = rfRule.then(rfRule =\u003e rfRule.name);\nexport const routeFilterRuleDescription = rfRule.then(rfRule =\u003e rfRule.description);\nexport const routeFilterRulePrefix = rfRule.then(rfRule =\u003e rfRule.prefix);\nexport const routeFilterRulePrefixMatch = rfRule.then(rfRule =\u003e rfRule.prefixMatch);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nrf_rule = equinix.fabric.get_route_filter_rule(route_filter_id=\"\u003croute_filter_policy_id\u003e\",\n    uuid=\"\u003croute_filter_rule_uuid\u003e\")\npulumi.export(\"routeFilterRuleName\", rf_rule.name)\npulumi.export(\"routeFilterRuleDescription\", rf_rule.description)\npulumi.export(\"routeFilterRulePrefix\", rf_rule.prefix)\npulumi.export(\"routeFilterRulePrefixMatch\", rf_rule.prefix_match)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rfRule = Equinix.Fabric.GetRouteFilterRule.Invoke(new()\n    {\n        RouteFilterId = \"\u003croute_filter_policy_id\u003e\",\n        Uuid = \"\u003croute_filter_rule_uuid\u003e\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"routeFilterRuleName\"] = rfRule.Apply(getRouteFilterRuleResult =\u003e getRouteFilterRuleResult.Name),\n        [\"routeFilterRuleDescription\"] = rfRule.Apply(getRouteFilterRuleResult =\u003e getRouteFilterRuleResult.Description),\n        [\"routeFilterRulePrefix\"] = rfRule.Apply(getRouteFilterRuleResult =\u003e getRouteFilterRuleResult.Prefix),\n        [\"routeFilterRulePrefixMatch\"] = rfRule.Apply(getRouteFilterRuleResult =\u003e getRouteFilterRuleResult.PrefixMatch),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trfRule, err := fabric.LookupRouteFilterRule(ctx, \u0026fabric.LookupRouteFilterRuleArgs{\n\t\t\tRouteFilterId: \"\u003croute_filter_policy_id\u003e\",\n\t\t\tUuid:          \"\u003croute_filter_rule_uuid\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"routeFilterRuleName\", rfRule.Name)\n\t\tctx.Export(\"routeFilterRuleDescription\", rfRule.Description)\n\t\tctx.Export(\"routeFilterRulePrefix\", rfRule.Prefix)\n\t\tctx.Export(\"routeFilterRulePrefixMatch\", rfRule.PrefixMatch)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetRouteFilterRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var rfRule = FabricFunctions.getRouteFilterRule(GetRouteFilterRuleArgs.builder()\n            .routeFilterId(\"\u003croute_filter_policy_id\u003e\")\n            .uuid(\"\u003croute_filter_rule_uuid\u003e\")\n            .build());\n\n        ctx.export(\"routeFilterRuleName\", rfRule.applyValue(getRouteFilterRuleResult -\u003e getRouteFilterRuleResult.name()));\n        ctx.export(\"routeFilterRuleDescription\", rfRule.applyValue(getRouteFilterRuleResult -\u003e getRouteFilterRuleResult.description()));\n        ctx.export(\"routeFilterRulePrefix\", rfRule.applyValue(getRouteFilterRuleResult -\u003e getRouteFilterRuleResult.prefix()));\n        ctx.export(\"routeFilterRulePrefixMatch\", rfRule.applyValue(getRouteFilterRuleResult -\u003e getRouteFilterRuleResult.prefixMatch()));\n    }\n}\n```\n```yaml\nvariables:\n  rfRule:\n    fn::invoke:\n      function: equinix:fabric:getRouteFilterRule\n      arguments:\n        routeFilterId: \u003croute_filter_policy_id\u003e\n        uuid: \u003croute_filter_rule_uuid\u003e\noutputs:\n  routeFilterRuleName: ${rfRule.name}\n  routeFilterRuleDescription: ${rfRule.description}\n  routeFilterRulePrefix: ${rfRule.prefix}\n  routeFilterRulePrefixMatch: ${rfRule.prefixMatch}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRouteFilterRule.\n","properties":{"routeFilterId":{"type":"string","description":"UUID of the Route Filter Policy the rule is attached to\n"},"uuid":{"type":"string","description":"Equinix Assigned ID for Route Filter Rule to retrieve data for\n"}},"type":"object","required":["routeFilterId","uuid"]},"outputs":{"description":"A collection of values returned by getRouteFilterRule.\n","properties":{"action":{"description":"Action that will be taken on IP Addresses matching the rule\n","type":"string"},"changeLogs":{"items":{"$ref":"#/types/equinix:fabric/getRouteFilterRuleChangeLog:getRouteFilterRuleChangeLog"},"type":"array"},"changes":{"description":"An object with the details of the previous change applied on the Route Filter\n","items":{"$ref":"#/types/equinix:fabric/getRouteFilterRuleChange:getRouteFilterRuleChange"},"type":"array"},"description":{"description":"Optional description to add to the Route Filter you will be creating\n","type":"string"},"href":{"description":"Route filter rules URI\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"name":{"description":"Name of the Route Filter\n","type":"string"},"prefix":{"description":"IP Address Prefix to Filter on\n","type":"string"},"prefixMatch":{"description":"Prefix matching operator. One of [ orlonger, exact ] Default: \"orlonger\"\n","type":"string"},"routeFilterId":{"description":"UUID of the Route Filter Policy the rule is attached to\n","type":"string"},"state":{"description":"State of the Route Filter Rule in its lifecycle\n","type":"string"},"type":{"description":"Route Filter Type. One of [ BGP*IPv4*PREFIX*FILTER*RULE, BGP*IPv6*PREFIX*FILTER*RULE ]\n","type":"string"},"uuid":{"description":"Equinix Assigned ID for Route Filter Rule to retrieve data for\n","type":"string"}},"required":["action","changes","changeLogs","description","href","name","prefix","prefixMatch","routeFilterId","state","type","uuid","id"],"type":"object"}},"equinix:fabric/getRouteFilterRules:getRouteFilterRules":{"description":"Fabric V4 API compatible data resource that allow user to fetch route filter for a given search data set\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-route-filters.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#route-filter-rules\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst rfRules = equinix.fabric.getRouteFilterRules({\n    routeFilterId: \"\u003croute_filter_policy_id\",\n    limit: 100,\n    offset: 5,\n});\nexport const firstRouteFilterRuleName = rfRules.then(rfRules =\u003e rfRules.datas?.[0]?.name);\nexport const firstRouteFilterRuleDescription = rfRules.then(rfRules =\u003e rfRules.datas?.[0]?.description);\nexport const firstRouteFilterRulePrefix = rfRules.then(rfRules =\u003e rfRules.datas?.[0]?.prefix);\nexport const firstRouteFilterRulePrefixMatch = rfRules.then(rfRules =\u003e rfRules.datas?.[0]?.prefixMatch);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nrf_rules = equinix.fabric.get_route_filter_rules(route_filter_id=\"\u003croute_filter_policy_id\",\n    limit=100,\n    offset=5)\npulumi.export(\"firstRouteFilterRuleName\", rf_rules.datas[0].name)\npulumi.export(\"firstRouteFilterRuleDescription\", rf_rules.datas[0].description)\npulumi.export(\"firstRouteFilterRulePrefix\", rf_rules.datas[0].prefix)\npulumi.export(\"firstRouteFilterRulePrefixMatch\", rf_rules.datas[0].prefix_match)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rfRules = Equinix.Fabric.GetRouteFilterRules.Invoke(new()\n    {\n        RouteFilterId = \"\u003croute_filter_policy_id\",\n        Limit = 100,\n        Offset = 5,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"firstRouteFilterRuleName\"] = rfRules.Apply(getRouteFilterRulesResult =\u003e getRouteFilterRulesResult.Datas[0]?.Name),\n        [\"firstRouteFilterRuleDescription\"] = rfRules.Apply(getRouteFilterRulesResult =\u003e getRouteFilterRulesResult.Datas[0]?.Description),\n        [\"firstRouteFilterRulePrefix\"] = rfRules.Apply(getRouteFilterRulesResult =\u003e getRouteFilterRulesResult.Datas[0]?.Prefix),\n        [\"firstRouteFilterRulePrefixMatch\"] = rfRules.Apply(getRouteFilterRulesResult =\u003e getRouteFilterRulesResult.Datas[0]?.PrefixMatch),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trfRules, err := fabric.GetRouteFilterRules(ctx, \u0026fabric.GetRouteFilterRulesArgs{\n\t\t\tRouteFilterId: \"\u003croute_filter_policy_id\",\n\t\t\tLimit:         pulumi.IntRef(100),\n\t\t\tOffset:        pulumi.IntRef(5),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"firstRouteFilterRuleName\", rfRules.Datas[0].Name)\n\t\tctx.Export(\"firstRouteFilterRuleDescription\", rfRules.Datas[0].Description)\n\t\tctx.Export(\"firstRouteFilterRulePrefix\", rfRules.Datas[0].Prefix)\n\t\tctx.Export(\"firstRouteFilterRulePrefixMatch\", rfRules.Datas[0].PrefixMatch)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetRouteFilterRulesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var rfRules = FabricFunctions.getRouteFilterRules(GetRouteFilterRulesArgs.builder()\n            .routeFilterId(\"\u003croute_filter_policy_id\")\n            .limit(100)\n            .offset(5)\n            .build());\n\n        ctx.export(\"firstRouteFilterRuleName\", rfRules.applyValue(getRouteFilterRulesResult -\u003e getRouteFilterRulesResult.datas()[0].name()));\n        ctx.export(\"firstRouteFilterRuleDescription\", rfRules.applyValue(getRouteFilterRulesResult -\u003e getRouteFilterRulesResult.datas()[0].description()));\n        ctx.export(\"firstRouteFilterRulePrefix\", rfRules.applyValue(getRouteFilterRulesResult -\u003e getRouteFilterRulesResult.datas()[0].prefix()));\n        ctx.export(\"firstRouteFilterRulePrefixMatch\", rfRules.applyValue(getRouteFilterRulesResult -\u003e getRouteFilterRulesResult.datas()[0].prefixMatch()));\n    }\n}\n```\n```yaml\nvariables:\n  rfRules:\n    fn::invoke:\n      function: equinix:fabric:getRouteFilterRules\n      arguments:\n        routeFilterId: \u003croute_filter_policy_id\n        limit: 100\n        offset: 5\noutputs:\n  firstRouteFilterRuleName: ${rfRules.datas[0].name}\n  firstRouteFilterRuleDescription: ${rfRules.datas[0].description}\n  firstRouteFilterRulePrefix: ${rfRules.datas[0].prefix}\n  firstRouteFilterRulePrefixMatch: ${rfRules.datas[0].prefixMatch}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRouteFilterRules.\n","properties":{"limit":{"type":"integer","description":"Number of elements to be requested per page. Number must be between 1 and 100. Default is 20\n"},"offset":{"type":"integer","description":"The page offset for the pagination request. Index of the first element. Default is 0.\n"},"routeFilterId":{"type":"string","description":"UUID of the Route Filter Policy the rule is attached to\n"}},"type":"object","required":["routeFilterId"]},"outputs":{"description":"A collection of values returned by getRouteFilterRules.\n","properties":{"datas":{"description":"The list of Rules attached to the given Route Filter Policy UUID\n","items":{"$ref":"#/types/equinix:fabric/getRouteFilterRulesData:getRouteFilterRulesData"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"limit":{"description":"Number of elements to be requested per page. Number must be between 1 and 100. Default is 20\n","type":"integer"},"offset":{"description":"The page offset for the pagination request. Index of the first element. Default is 0.\n","type":"integer"},"paginations":{"description":"Pagination details for the Data Source Search Request\n","items":{"$ref":"#/types/equinix:fabric/getRouteFilterRulesPagination:getRouteFilterRulesPagination"},"type":"array"},"routeFilterId":{"description":"UUID of the Route Filter Policy the rule is attached to\n","type":"string"}},"required":["datas","paginations","routeFilterId","id"],"type":"object"}},"equinix:fabric/getRouteFilters:getRouteFilters":{"description":"Fabric V4 API compatible data resource that allow user to fetch route filter for a given search data set\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-route-filters.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#route-filters\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst rfPolicies = equinix.fabric.getRouteFilters({\n    filters: [\n        {\n            property: \"/type\",\n            operator: \"=\",\n            values: [\"BGP_IPv4_PREFIX_FILTER\"],\n        },\n        {\n            property: \"/state\",\n            operator: \"=\",\n            values: [\"PROVISIONED\"],\n        },\n        {\n            property: \"/project/projectId\",\n            operator: \"=\",\n            values: [\"\u003cproject_id\u003e\"],\n        },\n    ],\n    pagination: {\n        offset: 0,\n        limit: 5,\n        total: 25,\n    },\n    sorts: [{\n        direction: \"ASC\",\n        property: \"/name\",\n    }],\n});\nexport const firstRfUuid = rfPolicies.then(rfPolicies =\u003e rfPolicies.datas?.[0]?.uuid);\nexport const type = rfPolicies.then(rfPolicies =\u003e rfPolicies.datas?.[0]?.type);\nexport const state = rfPolicies.then(rfPolicies =\u003e rfPolicies.datas?.[0]?.state);\nexport const notMatchedRuleAction = rfPolicies.then(rfPolicies =\u003e rfPolicies.datas?.[0]?.notMatchedRuleAction);\nexport const connectionsCount = rfPolicies.then(rfPolicies =\u003e rfPolicies.datas?.[0]?.connectionsCount);\nexport const rulesCount = rfPolicies.then(rfPolicies =\u003e rfPolicies.datas?.[0]?.rulesCount);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nrf_policies = equinix.fabric.get_route_filters(filters=[\n        {\n            \"property\": \"/type\",\n            \"operator\": \"=\",\n            \"values\": [\"BGP_IPv4_PREFIX_FILTER\"],\n        },\n        {\n            \"property\": \"/state\",\n            \"operator\": \"=\",\n            \"values\": [\"PROVISIONED\"],\n        },\n        {\n            \"property\": \"/project/projectId\",\n            \"operator\": \"=\",\n            \"values\": [\"\u003cproject_id\u003e\"],\n        },\n    ],\n    pagination={\n        \"offset\": 0,\n        \"limit\": 5,\n        \"total\": 25,\n    },\n    sorts=[{\n        \"direction\": \"ASC\",\n        \"property\": \"/name\",\n    }])\npulumi.export(\"firstRfUuid\", rf_policies.datas[0].uuid)\npulumi.export(\"type\", rf_policies.datas[0].type)\npulumi.export(\"state\", rf_policies.datas[0].state)\npulumi.export(\"notMatchedRuleAction\", rf_policies.datas[0].not_matched_rule_action)\npulumi.export(\"connectionsCount\", rf_policies.datas[0].connections_count)\npulumi.export(\"rulesCount\", rf_policies.datas[0].rules_count)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rfPolicies = Equinix.Fabric.GetRouteFilters.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new Equinix.Fabric.Inputs.GetRouteFiltersFilterInputArgs\n            {\n                Property = \"/type\",\n                Operator = \"=\",\n                Values = new[]\n                {\n                    \"BGP_IPv4_PREFIX_FILTER\",\n                },\n            },\n            new Equinix.Fabric.Inputs.GetRouteFiltersFilterInputArgs\n            {\n                Property = \"/state\",\n                Operator = \"=\",\n                Values = new[]\n                {\n                    \"PROVISIONED\",\n                },\n            },\n            new Equinix.Fabric.Inputs.GetRouteFiltersFilterInputArgs\n            {\n                Property = \"/project/projectId\",\n                Operator = \"=\",\n                Values = new[]\n                {\n                    \"\u003cproject_id\u003e\",\n                },\n            },\n        },\n        Pagination = new Equinix.Fabric.Inputs.GetRouteFiltersPaginationInputArgs\n        {\n            Offset = 0,\n            Limit = 5,\n            Total = 25,\n        },\n        Sorts = new[]\n        {\n            new Equinix.Fabric.Inputs.GetRouteFiltersSortInputArgs\n            {\n                Direction = \"ASC\",\n                Property = \"/name\",\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"firstRfUuid\"] = rfPolicies.Apply(getRouteFiltersResult =\u003e getRouteFiltersResult.Datas[0]?.Uuid),\n        [\"type\"] = rfPolicies.Apply(getRouteFiltersResult =\u003e getRouteFiltersResult.Datas[0]?.Type),\n        [\"state\"] = rfPolicies.Apply(getRouteFiltersResult =\u003e getRouteFiltersResult.Datas[0]?.State),\n        [\"notMatchedRuleAction\"] = rfPolicies.Apply(getRouteFiltersResult =\u003e getRouteFiltersResult.Datas[0]?.NotMatchedRuleAction),\n        [\"connectionsCount\"] = rfPolicies.Apply(getRouteFiltersResult =\u003e getRouteFiltersResult.Datas[0]?.ConnectionsCount),\n        [\"rulesCount\"] = rfPolicies.Apply(getRouteFiltersResult =\u003e getRouteFiltersResult.Datas[0]?.RulesCount),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trfPolicies, err := fabric.GetRouteFilters(ctx, \u0026fabric.GetRouteFiltersArgs{\n\t\t\tFilters: []fabric.GetRouteFiltersFilter{\n\t\t\t\t{\n\t\t\t\t\tProperty: \"/type\",\n\t\t\t\t\tOperator: \"=\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"BGP_IPv4_PREFIX_FILTER\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProperty: \"/state\",\n\t\t\t\t\tOperator: \"=\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"PROVISIONED\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProperty: \"/project/projectId\",\n\t\t\t\t\tOperator: \"=\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"\u003cproject_id\u003e\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPagination: fabric.GetRouteFiltersPagination{\n\t\t\t\tOffset: 0,\n\t\t\t\tLimit:  5,\n\t\t\t\tTotal:  25,\n\t\t\t},\n\t\t\tSorts: []fabric.GetRouteFiltersSort{\n\t\t\t\t{\n\t\t\t\t\tDirection: pulumi.StringRef(\"ASC\"),\n\t\t\t\t\tProperty:  pulumi.StringRef(\"/name\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"firstRfUuid\", rfPolicies.Datas[0].Uuid)\n\t\tctx.Export(\"type\", rfPolicies.Datas[0].Type)\n\t\tctx.Export(\"state\", rfPolicies.Datas[0].State)\n\t\tctx.Export(\"notMatchedRuleAction\", rfPolicies.Datas[0].NotMatchedRuleAction)\n\t\tctx.Export(\"connectionsCount\", rfPolicies.Datas[0].ConnectionsCount)\n\t\tctx.Export(\"rulesCount\", rfPolicies.Datas[0].RulesCount)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetRouteFiltersArgs;\nimport com.pulumi.equinix.fabric.inputs.GetRouteFiltersPaginationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var rfPolicies = FabricFunctions.getRouteFilters(GetRouteFiltersArgs.builder()\n            .filters(            \n                GetRouteFiltersFilterArgs.builder()\n                    .property(\"/type\")\n                    .operator(\"=\")\n                    .values(\"BGP_IPv4_PREFIX_FILTER\")\n                    .build(),\n                GetRouteFiltersFilterArgs.builder()\n                    .property(\"/state\")\n                    .operator(\"=\")\n                    .values(\"PROVISIONED\")\n                    .build(),\n                GetRouteFiltersFilterArgs.builder()\n                    .property(\"/project/projectId\")\n                    .operator(\"=\")\n                    .values(\"\u003cproject_id\u003e\")\n                    .build())\n            .pagination(GetRouteFiltersPaginationArgs.builder()\n                .offset(0)\n                .limit(5)\n                .total(25)\n                .build())\n            .sorts(GetRouteFiltersSortArgs.builder()\n                .direction(\"ASC\")\n                .property(\"/name\")\n                .build())\n            .build());\n\n        ctx.export(\"firstRfUuid\", rfPolicies.applyValue(getRouteFiltersResult -\u003e getRouteFiltersResult.datas()[0].uuid()));\n        ctx.export(\"type\", rfPolicies.applyValue(getRouteFiltersResult -\u003e getRouteFiltersResult.datas()[0].type()));\n        ctx.export(\"state\", rfPolicies.applyValue(getRouteFiltersResult -\u003e getRouteFiltersResult.datas()[0].state()));\n        ctx.export(\"notMatchedRuleAction\", rfPolicies.applyValue(getRouteFiltersResult -\u003e getRouteFiltersResult.datas()[0].notMatchedRuleAction()));\n        ctx.export(\"connectionsCount\", rfPolicies.applyValue(getRouteFiltersResult -\u003e getRouteFiltersResult.datas()[0].connectionsCount()));\n        ctx.export(\"rulesCount\", rfPolicies.applyValue(getRouteFiltersResult -\u003e getRouteFiltersResult.datas()[0].rulesCount()));\n    }\n}\n```\n```yaml\nvariables:\n  rfPolicies:\n    fn::invoke:\n      function: equinix:fabric:getRouteFilters\n      arguments:\n        filters:\n          - property: /type\n            operator: =\n            values:\n              - BGP_IPv4_PREFIX_FILTER\n          - property: /state\n            operator: =\n            values:\n              - PROVISIONED\n          - property: /project/projectId\n            operator: =\n            values:\n              - \u003cproject_id\u003e\n        pagination:\n          offset: 0\n          limit: 5\n          total: 25\n        sorts:\n          - direction: ASC\n            property: /name\noutputs:\n  firstRfUuid: ${rfPolicies.datas[0].uuid}\n  type: ${rfPolicies.datas[0].type}\n  state: ${rfPolicies.datas[0].state}\n  notMatchedRuleAction: ${rfPolicies.datas[0].notMatchedRuleAction}\n  connectionsCount: ${rfPolicies.datas[0].connectionsCount}\n  rulesCount: ${rfPolicies.datas[0].rulesCount}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRouteFilters.\n","properties":{"filters":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getRouteFiltersFilter:getRouteFiltersFilter"},"description":"Filters for the Data Source Search Request. Maximum of 8 total filters.\n"},"pagination":{"$ref":"#/types/equinix:fabric/getRouteFiltersPagination:getRouteFiltersPagination","description":"Pagination details for the Data Source Search Request\n"},"sorts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getRouteFiltersSort:getRouteFiltersSort"},"description":"Filters for the Data Source Search Request\n"}},"type":"object","required":["filters"]},"outputs":{"description":"A collection of values returned by getRouteFilters.\n","properties":{"datas":{"description":"List of Route Filters\n","items":{"$ref":"#/types/equinix:fabric/getRouteFiltersData:getRouteFiltersData"},"type":"array"},"filters":{"description":"Filters for the Data Source Search Request. Maximum of 8 total filters.\n","items":{"$ref":"#/types/equinix:fabric/getRouteFiltersFilter:getRouteFiltersFilter"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getRouteFiltersPagination:getRouteFiltersPagination","description":"Pagination details for the Data Source Search Request\n"},"sorts":{"description":"Filters for the Data Source Search Request\n","items":{"$ref":"#/types/equinix:fabric/getRouteFiltersSort:getRouteFiltersSort"},"type":"array"}},"required":["datas","filters","id"],"type":"object"}},"equinix:fabric/getRoutingProtocol:getRoutingProtocol":{"description":"Fabric V4 API compatible data resource that allow user to fetch routing protocol for a given UUID\n\nAPI documentation can be found here - https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#routing-protocols\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/FCR/connections/FCR-connect-azureQC.htm#ConfigureRoutingDetailsintheFabricPortal\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#routing-protocols\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst routingProtocolDataName = equinix.fabric.getRoutingProtocol({\n    connectionUuid: \"\u003cuuid_of_connection_routing_protocol_is_applied_to\u003e\",\n    uuid: \"\u003cuuid_of_routing_protocol\u003e\",\n});\nexport const id = routingProtocolDataName.then(routingProtocolDataName =\u003e routingProtocolDataName.id);\nexport const name = routingProtocolDataName.then(routingProtocolDataName =\u003e routingProtocolDataName.name);\nexport const type = routingProtocolDataName.then(routingProtocolDataName =\u003e routingProtocolDataName.type);\nexport const directIpv4 = routingProtocolDataName.then(routingProtocolDataName =\u003e routingProtocolDataName.directIpv4?.equinixIfaceIp);\nexport const directIpv6 = routingProtocolDataName.then(routingProtocolDataName =\u003e routingProtocolDataName.directIpv6?.equinixIfaceIp);\nexport const bgpIpv4CustomerPeerIp = routingProtocolDataName.then(routingProtocolDataName =\u003e routingProtocolDataName.bgpIpv4?.customerPeerIp);\nexport const bgpIpv4EquinixPeerIp = routingProtocolDataName.then(routingProtocolDataName =\u003e routingProtocolDataName.bgpIpv4?.equinixPeerIp);\nexport const bgpIpv4Enabled = routingProtocolDataName.then(routingProtocolDataName =\u003e routingProtocolDataName.bgpIpv4?.enabled);\nexport const bgpIpv6CustomerPeerIp = routingProtocolDataName.then(routingProtocolDataName =\u003e routingProtocolDataName.bgpIpv6?.customerPeerIp);\nexport const bgpIpv6EquinixPeerIp = routingProtocolDataName.then(routingProtocolDataName =\u003e routingProtocolDataName.bgpIpv6?.equinixPeerIp);\nexport const bgpIpv6Enabled = routingProtocolDataName.then(routingProtocolDataName =\u003e routingProtocolDataName.bgpIpv6?.enabled);\nexport const customerAsn = routingProtocolDataName.then(routingProtocolDataName =\u003e routingProtocolDataName.customerAsn);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nrouting_protocol_data_name = equinix.fabric.get_routing_protocol(connection_uuid=\"\u003cuuid_of_connection_routing_protocol_is_applied_to\u003e\",\n    uuid=\"\u003cuuid_of_routing_protocol\u003e\")\npulumi.export(\"id\", routing_protocol_data_name.id)\npulumi.export(\"name\", routing_protocol_data_name.name)\npulumi.export(\"type\", routing_protocol_data_name.type)\npulumi.export(\"directIpv4\", routing_protocol_data_name.direct_ipv4.equinix_iface_ip)\npulumi.export(\"directIpv6\", routing_protocol_data_name.direct_ipv6.equinix_iface_ip)\npulumi.export(\"bgpIpv4CustomerPeerIp\", routing_protocol_data_name.bgp_ipv4.customer_peer_ip)\npulumi.export(\"bgpIpv4EquinixPeerIp\", routing_protocol_data_name.bgp_ipv4.equinix_peer_ip)\npulumi.export(\"bgpIpv4Enabled\", routing_protocol_data_name.bgp_ipv4.enabled)\npulumi.export(\"bgpIpv6CustomerPeerIp\", routing_protocol_data_name.bgp_ipv6.customer_peer_ip)\npulumi.export(\"bgpIpv6EquinixPeerIp\", routing_protocol_data_name.bgp_ipv6.equinix_peer_ip)\npulumi.export(\"bgpIpv6Enabled\", routing_protocol_data_name.bgp_ipv6.enabled)\npulumi.export(\"customerAsn\", routing_protocol_data_name.customer_asn)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var routingProtocolDataName = Equinix.Fabric.GetRoutingProtocol.Invoke(new()\n    {\n        ConnectionUuid = \"\u003cuuid_of_connection_routing_protocol_is_applied_to\u003e\",\n        Uuid = \"\u003cuuid_of_routing_protocol\u003e\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"id\"] = routingProtocolDataName.Apply(getRoutingProtocolResult =\u003e getRoutingProtocolResult.Id),\n        [\"name\"] = routingProtocolDataName.Apply(getRoutingProtocolResult =\u003e getRoutingProtocolResult.Name),\n        [\"type\"] = routingProtocolDataName.Apply(getRoutingProtocolResult =\u003e getRoutingProtocolResult.Type),\n        [\"directIpv4\"] = routingProtocolDataName.Apply(getRoutingProtocolResult =\u003e getRoutingProtocolResult.DirectIpv4?.EquinixIfaceIp),\n        [\"directIpv6\"] = routingProtocolDataName.Apply(getRoutingProtocolResult =\u003e getRoutingProtocolResult.DirectIpv6?.EquinixIfaceIp),\n        [\"bgpIpv4CustomerPeerIp\"] = routingProtocolDataName.Apply(getRoutingProtocolResult =\u003e getRoutingProtocolResult.BgpIpv4?.CustomerPeerIp),\n        [\"bgpIpv4EquinixPeerIp\"] = routingProtocolDataName.Apply(getRoutingProtocolResult =\u003e getRoutingProtocolResult.BgpIpv4?.EquinixPeerIp),\n        [\"bgpIpv4Enabled\"] = routingProtocolDataName.Apply(getRoutingProtocolResult =\u003e getRoutingProtocolResult.BgpIpv4?.Enabled),\n        [\"bgpIpv6CustomerPeerIp\"] = routingProtocolDataName.Apply(getRoutingProtocolResult =\u003e getRoutingProtocolResult.BgpIpv6?.CustomerPeerIp),\n        [\"bgpIpv6EquinixPeerIp\"] = routingProtocolDataName.Apply(getRoutingProtocolResult =\u003e getRoutingProtocolResult.BgpIpv6?.EquinixPeerIp),\n        [\"bgpIpv6Enabled\"] = routingProtocolDataName.Apply(getRoutingProtocolResult =\u003e getRoutingProtocolResult.BgpIpv6?.Enabled),\n        [\"customerAsn\"] = routingProtocolDataName.Apply(getRoutingProtocolResult =\u003e getRoutingProtocolResult.CustomerAsn),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\troutingProtocolDataName, err := fabric.LookupRoutingProtocol(ctx, \u0026fabric.LookupRoutingProtocolArgs{\n\t\t\tConnectionUuid: \"\u003cuuid_of_connection_routing_protocol_is_applied_to\u003e\",\n\t\t\tUuid:           \"\u003cuuid_of_routing_protocol\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"id\", routingProtocolDataName.Id)\n\t\tctx.Export(\"name\", routingProtocolDataName.Name)\n\t\tctx.Export(\"type\", routingProtocolDataName.Type)\n\t\tctx.Export(\"directIpv4\", routingProtocolDataName.DirectIpv4.EquinixIfaceIp)\n\t\tctx.Export(\"directIpv6\", routingProtocolDataName.DirectIpv6.EquinixIfaceIp)\n\t\tctx.Export(\"bgpIpv4CustomerPeerIp\", routingProtocolDataName.BgpIpv4.CustomerPeerIp)\n\t\tctx.Export(\"bgpIpv4EquinixPeerIp\", routingProtocolDataName.BgpIpv4.EquinixPeerIp)\n\t\tctx.Export(\"bgpIpv4Enabled\", routingProtocolDataName.BgpIpv4.Enabled)\n\t\tctx.Export(\"bgpIpv6CustomerPeerIp\", routingProtocolDataName.BgpIpv6.CustomerPeerIp)\n\t\tctx.Export(\"bgpIpv6EquinixPeerIp\", routingProtocolDataName.BgpIpv6.EquinixPeerIp)\n\t\tctx.Export(\"bgpIpv6Enabled\", routingProtocolDataName.BgpIpv6.Enabled)\n\t\tctx.Export(\"customerAsn\", routingProtocolDataName.CustomerAsn)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetRoutingProtocolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var routingProtocolDataName = FabricFunctions.getRoutingProtocol(GetRoutingProtocolArgs.builder()\n            .connectionUuid(\"\u003cuuid_of_connection_routing_protocol_is_applied_to\u003e\")\n            .uuid(\"\u003cuuid_of_routing_protocol\u003e\")\n            .build());\n\n        ctx.export(\"id\", routingProtocolDataName.applyValue(getRoutingProtocolResult -\u003e getRoutingProtocolResult.id()));\n        ctx.export(\"name\", routingProtocolDataName.applyValue(getRoutingProtocolResult -\u003e getRoutingProtocolResult.name()));\n        ctx.export(\"type\", routingProtocolDataName.applyValue(getRoutingProtocolResult -\u003e getRoutingProtocolResult.type()));\n        ctx.export(\"directIpv4\", routingProtocolDataName.applyValue(getRoutingProtocolResult -\u003e getRoutingProtocolResult.directIpv4().equinixIfaceIp()));\n        ctx.export(\"directIpv6\", routingProtocolDataName.applyValue(getRoutingProtocolResult -\u003e getRoutingProtocolResult.directIpv6().equinixIfaceIp()));\n        ctx.export(\"bgpIpv4CustomerPeerIp\", routingProtocolDataName.applyValue(getRoutingProtocolResult -\u003e getRoutingProtocolResult.bgpIpv4().customerPeerIp()));\n        ctx.export(\"bgpIpv4EquinixPeerIp\", routingProtocolDataName.applyValue(getRoutingProtocolResult -\u003e getRoutingProtocolResult.bgpIpv4().equinixPeerIp()));\n        ctx.export(\"bgpIpv4Enabled\", routingProtocolDataName.applyValue(getRoutingProtocolResult -\u003e getRoutingProtocolResult.bgpIpv4().enabled()));\n        ctx.export(\"bgpIpv6CustomerPeerIp\", routingProtocolDataName.applyValue(getRoutingProtocolResult -\u003e getRoutingProtocolResult.bgpIpv6().customerPeerIp()));\n        ctx.export(\"bgpIpv6EquinixPeerIp\", routingProtocolDataName.applyValue(getRoutingProtocolResult -\u003e getRoutingProtocolResult.bgpIpv6().equinixPeerIp()));\n        ctx.export(\"bgpIpv6Enabled\", routingProtocolDataName.applyValue(getRoutingProtocolResult -\u003e getRoutingProtocolResult.bgpIpv6().enabled()));\n        ctx.export(\"customerAsn\", routingProtocolDataName.applyValue(getRoutingProtocolResult -\u003e getRoutingProtocolResult.customerAsn()));\n    }\n}\n```\n```yaml\nvariables:\n  routingProtocolDataName:\n    fn::invoke:\n      function: equinix:fabric:getRoutingProtocol\n      arguments:\n        connectionUuid: \u003cuuid_of_connection_routing_protocol_is_applied_to\u003e\n        uuid: \u003cuuid_of_routing_protocol\u003e\noutputs:\n  id: ${routingProtocolDataName.id}\n  name: ${routingProtocolDataName.name}\n  type: ${routingProtocolDataName.type}\n  directIpv4: ${routingProtocolDataName.directIpv4.equinixIfaceIp}\n  directIpv6: ${routingProtocolDataName.directIpv6.equinixIfaceIp}\n  bgpIpv4CustomerPeerIp: ${routingProtocolDataName.bgpIpv4.customerPeerIp}\n  bgpIpv4EquinixPeerIp: ${routingProtocolDataName.bgpIpv4.equinixPeerIp}\n  bgpIpv4Enabled: ${routingProtocolDataName.bgpIpv4.enabled}\n  bgpIpv6CustomerPeerIp: ${routingProtocolDataName.bgpIpv6.customerPeerIp}\n  bgpIpv6EquinixPeerIp: ${routingProtocolDataName.bgpIpv6.equinixPeerIp}\n  bgpIpv6Enabled: ${routingProtocolDataName.bgpIpv6.enabled}\n  customerAsn: ${routingProtocolDataName.customerAsn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRoutingProtocol.\n","properties":{"connectionUuid":{"type":"string","description":"Connection URI associated with Routing Protocol\n"},"uuid":{"type":"string","description":"Equinix-assigned routing protocol identifier\n"}},"type":"object","required":["connectionUuid","uuid"]},"outputs":{"description":"A collection of values returned by getRoutingProtocol.\n","properties":{"asOverrideEnabled":{"description":"Enable AS number override\n","type":"boolean"},"bfd":{"$ref":"#/types/equinix:fabric/getRoutingProtocolBfd:getRoutingProtocolBfd","description":"Bidirectional Forwarding Detection\n"},"bgpAuthKey":{"description":"BGP authorization key\n","type":"string"},"bgpIpv4":{"$ref":"#/types/equinix:fabric/getRoutingProtocolBgpIpv4:getRoutingProtocolBgpIpv4","description":"Routing Protocol BGP IPv4\n"},"bgpIpv6":{"$ref":"#/types/equinix:fabric/getRoutingProtocolBgpIpv6:getRoutingProtocolBgpIpv6","description":"Routing Protocol BGP IPv6\n"},"changeLogs":{"description":"Captures Routing Protocol lifecycle change information\n","items":{"$ref":"#/types/equinix:fabric/getRoutingProtocolChangeLog:getRoutingProtocolChangeLog"},"type":"array"},"changes":{"description":"Routing Protocol configuration Changes\n","items":{"$ref":"#/types/equinix:fabric/getRoutingProtocolChange:getRoutingProtocolChange"},"type":"array"},"connectionUuid":{"description":"Connection URI associated with Routing Protocol\n","type":"string"},"customerAsn":{"description":"Customer-provided ASN\n","type":"integer"},"description":{"description":"Customer-provided Fabric Routing Protocol description\n","type":"string"},"directIpv4":{"$ref":"#/types/equinix:fabric/getRoutingProtocolDirectIpv4:getRoutingProtocolDirectIpv4","description":"Routing Protocol Direct IPv4\n"},"directIpv6":{"$ref":"#/types/equinix:fabric/getRoutingProtocolDirectIpv6:getRoutingProtocolDirectIpv6","description":"Routing Protocol Direct IPv6\n"},"equinixAsn":{"description":"Equinix ASN\n","type":"integer"},"href":{"description":"Routing Protocol URI information\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"name":{"description":"Routing Protocol name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n","type":"string"},"operations":{"description":"Routing Protocol type-specific operational data\n","items":{"$ref":"#/types/equinix:fabric/getRoutingProtocolOperation:getRoutingProtocolOperation"},"type":"array"},"state":{"description":"Routing Protocol overall state\n","type":"string"},"type":{"description":"Defines the routing protocol type like BGP or DIRECT\n","type":"string"},"uuid":{"description":"Equinix-assigned routing protocol identifier\n","type":"string"}},"required":["asOverrideEnabled","bfd","bgpAuthKey","bgpIpv4","bgpIpv6","changes","changeLogs","connectionUuid","customerAsn","description","directIpv4","directIpv6","equinixAsn","href","name","operations","state","type","uuid","id"],"type":"object"}},"equinix:fabric/getServiceProfile:getServiceProfile":{"description":"Fabric V4 API compatible data resource that allow user to fetch Service Profile by UUID filter criteria\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/Fabric/IMPLEMENTATION/fabric-Sprofiles-implement.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#service-profiles\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst serviceProfileDataName = equinix.fabric.getServiceProfile({\n    uuid: \"\u003cuuid_of_service_profile\u003e\",\n});\nexport const id = serviceProfileDataName.then(serviceProfileDataName =\u003e serviceProfileDataName.id);\nexport const name = serviceProfileDataName.then(serviceProfileDataName =\u003e serviceProfileDataName.name);\nexport const type = serviceProfileDataName.then(serviceProfileDataName =\u003e serviceProfileDataName.type);\nexport const visibility = serviceProfileDataName.then(serviceProfileDataName =\u003e serviceProfileDataName.visibility);\nexport const orgName = serviceProfileDataName.then(serviceProfileDataName =\u003e serviceProfileDataName.account?.organizationName);\nexport const accessPointTypeConfigsType = serviceProfileDataName.then(serviceProfileDataName =\u003e serviceProfileDataName.accessPointTypeConfigs?.[0]?.type);\nexport const allowRemoteConnections = serviceProfileDataName.then(serviceProfileDataName =\u003e serviceProfileDataName.accessPointTypeConfigs?.[0]?.allowRemoteConnections);\nexport const supportedBandwidth0 = serviceProfileDataName.then(serviceProfileDataName =\u003e serviceProfileDataName.accessPointTypeConfigs?.[0]?.supportedBandwidths?.[0]);\nexport const supportedBandwidth1 = serviceProfileDataName.then(serviceProfileDataName =\u003e serviceProfileDataName.accessPointTypeConfigs?.[0]?.supportedBandwidths?.[1]);\nexport const redundandyRequired = serviceProfileDataName.then(serviceProfileDataName =\u003e serviceProfileDataName.accessPointTypeConfigs?.[0]?.connectionRedundancyRequired);\nexport const allowOverSubscription = serviceProfileDataName.then(serviceProfileDataName =\u003e serviceProfileDataName.accessPointTypeConfigs?.[0]?.apiConfig?.allowOverSubscription);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nservice_profile_data_name = equinix.fabric.get_service_profile(uuid=\"\u003cuuid_of_service_profile\u003e\")\npulumi.export(\"id\", service_profile_data_name.id)\npulumi.export(\"name\", service_profile_data_name.name)\npulumi.export(\"type\", service_profile_data_name.type)\npulumi.export(\"visibility\", service_profile_data_name.visibility)\npulumi.export(\"orgName\", service_profile_data_name.account.organization_name)\npulumi.export(\"accessPointTypeConfigsType\", service_profile_data_name.access_point_type_configs[0].type)\npulumi.export(\"allowRemoteConnections\", service_profile_data_name.access_point_type_configs[0].allow_remote_connections)\npulumi.export(\"supportedBandwidth0\", service_profile_data_name.access_point_type_configs[0].supported_bandwidths[0])\npulumi.export(\"supportedBandwidth1\", service_profile_data_name.access_point_type_configs[0].supported_bandwidths[1])\npulumi.export(\"redundandyRequired\", service_profile_data_name.access_point_type_configs[0].connection_redundancy_required)\npulumi.export(\"allowOverSubscription\", service_profile_data_name.access_point_type_configs[0].api_config.allow_over_subscription)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var serviceProfileDataName = Equinix.Fabric.GetServiceProfile.Invoke(new()\n    {\n        Uuid = \"\u003cuuid_of_service_profile\u003e\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"id\"] = serviceProfileDataName.Apply(getServiceProfileResult =\u003e getServiceProfileResult.Id),\n        [\"name\"] = serviceProfileDataName.Apply(getServiceProfileResult =\u003e getServiceProfileResult.Name),\n        [\"type\"] = serviceProfileDataName.Apply(getServiceProfileResult =\u003e getServiceProfileResult.Type),\n        [\"visibility\"] = serviceProfileDataName.Apply(getServiceProfileResult =\u003e getServiceProfileResult.Visibility),\n        [\"orgName\"] = serviceProfileDataName.Apply(getServiceProfileResult =\u003e getServiceProfileResult.Account?.OrganizationName),\n        [\"accessPointTypeConfigsType\"] = serviceProfileDataName.Apply(getServiceProfileResult =\u003e getServiceProfileResult.AccessPointTypeConfigs[0]?.Type),\n        [\"allowRemoteConnections\"] = serviceProfileDataName.Apply(getServiceProfileResult =\u003e getServiceProfileResult.AccessPointTypeConfigs[0]?.AllowRemoteConnections),\n        [\"supportedBandwidth0\"] = serviceProfileDataName.Apply(getServiceProfileResult =\u003e getServiceProfileResult.AccessPointTypeConfigs[0]?.SupportedBandwidths[0]),\n        [\"supportedBandwidth1\"] = serviceProfileDataName.Apply(getServiceProfileResult =\u003e getServiceProfileResult.AccessPointTypeConfigs[0]?.SupportedBandwidths[1]),\n        [\"redundandyRequired\"] = serviceProfileDataName.Apply(getServiceProfileResult =\u003e getServiceProfileResult.AccessPointTypeConfigs[0]?.ConnectionRedundancyRequired),\n        [\"allowOverSubscription\"] = serviceProfileDataName.Apply(getServiceProfileResult =\u003e getServiceProfileResult.AccessPointTypeConfigs[0]?.ApiConfig?.AllowOverSubscription),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tserviceProfileDataName, err := fabric.LookupServiceProfile(ctx, \u0026fabric.LookupServiceProfileArgs{\n\t\t\tUuid: \"\u003cuuid_of_service_profile\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"id\", serviceProfileDataName.Id)\n\t\tctx.Export(\"name\", serviceProfileDataName.Name)\n\t\tctx.Export(\"type\", serviceProfileDataName.Type)\n\t\tctx.Export(\"visibility\", serviceProfileDataName.Visibility)\n\t\tctx.Export(\"orgName\", serviceProfileDataName.Account.OrganizationName)\n\t\tctx.Export(\"accessPointTypeConfigsType\", serviceProfileDataName.AccessPointTypeConfigs[0].Type)\n\t\tctx.Export(\"allowRemoteConnections\", serviceProfileDataName.AccessPointTypeConfigs[0].AllowRemoteConnections)\n\t\tctx.Export(\"supportedBandwidth0\", serviceProfileDataName.AccessPointTypeConfigs[0].SupportedBandwidths[0])\n\t\tctx.Export(\"supportedBandwidth1\", serviceProfileDataName.AccessPointTypeConfigs[0].SupportedBandwidths[1])\n\t\tctx.Export(\"redundandyRequired\", serviceProfileDataName.AccessPointTypeConfigs[0].ConnectionRedundancyRequired)\n\t\tctx.Export(\"allowOverSubscription\", serviceProfileDataName.AccessPointTypeConfigs[0].ApiConfig.AllowOverSubscription)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetServiceProfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var serviceProfileDataName = FabricFunctions.getServiceProfile(GetServiceProfileArgs.builder()\n            .uuid(\"\u003cuuid_of_service_profile\u003e\")\n            .build());\n\n        ctx.export(\"id\", serviceProfileDataName.applyValue(getServiceProfileResult -\u003e getServiceProfileResult.id()));\n        ctx.export(\"name\", serviceProfileDataName.applyValue(getServiceProfileResult -\u003e getServiceProfileResult.name()));\n        ctx.export(\"type\", serviceProfileDataName.applyValue(getServiceProfileResult -\u003e getServiceProfileResult.type()));\n        ctx.export(\"visibility\", serviceProfileDataName.applyValue(getServiceProfileResult -\u003e getServiceProfileResult.visibility()));\n        ctx.export(\"orgName\", serviceProfileDataName.applyValue(getServiceProfileResult -\u003e getServiceProfileResult.account().organizationName()));\n        ctx.export(\"accessPointTypeConfigsType\", serviceProfileDataName.applyValue(getServiceProfileResult -\u003e getServiceProfileResult.accessPointTypeConfigs()[0].type()));\n        ctx.export(\"allowRemoteConnections\", serviceProfileDataName.applyValue(getServiceProfileResult -\u003e getServiceProfileResult.accessPointTypeConfigs()[0].allowRemoteConnections()));\n        ctx.export(\"supportedBandwidth0\", serviceProfileDataName.applyValue(getServiceProfileResult -\u003e getServiceProfileResult.accessPointTypeConfigs()[0].supportedBandwidths()[0]));\n        ctx.export(\"supportedBandwidth1\", serviceProfileDataName.applyValue(getServiceProfileResult -\u003e getServiceProfileResult.accessPointTypeConfigs()[0].supportedBandwidths()[1]));\n        ctx.export(\"redundandyRequired\", serviceProfileDataName.applyValue(getServiceProfileResult -\u003e getServiceProfileResult.accessPointTypeConfigs()[0].connectionRedundancyRequired()));\n        ctx.export(\"allowOverSubscription\", serviceProfileDataName.applyValue(getServiceProfileResult -\u003e getServiceProfileResult.accessPointTypeConfigs()[0].apiConfig().allowOverSubscription()));\n    }\n}\n```\n```yaml\nvariables:\n  serviceProfileDataName:\n    fn::invoke:\n      function: equinix:fabric:getServiceProfile\n      arguments:\n        uuid: \u003cuuid_of_service_profile\u003e\noutputs:\n  id: ${serviceProfileDataName.id}\n  name: ${serviceProfileDataName.name}\n  type: ${serviceProfileDataName.type}\n  visibility: ${serviceProfileDataName.visibility}\n  orgName: ${serviceProfileDataName.account.organizationName}\n  accessPointTypeConfigsType: ${serviceProfileDataName.accessPointTypeConfigs[0].type}\n  allowRemoteConnections: ${serviceProfileDataName.accessPointTypeConfigs[0].allowRemoteConnections}\n  supportedBandwidth0: ${serviceProfileDataName.accessPointTypeConfigs[0].supportedBandwidths[0]}\n  supportedBandwidth1: ${serviceProfileDataName.accessPointTypeConfigs[0].supportedBandwidths[1]}\n  redundandyRequired: ${serviceProfileDataName.accessPointTypeConfigs[0].connectionRedundancyRequired}\n  allowOverSubscription: ${serviceProfileDataName.accessPointTypeConfigs[0].apiConfig.allowOverSubscription}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getServiceProfile.\n","properties":{"uuid":{"type":"string","description":"Equinix assigned service profile identifier\n"}},"type":"object","required":["uuid"]},"outputs":{"description":"A collection of values returned by getServiceProfile.\n","properties":{"accessPointTypeConfigs":{"description":"Access point config information\n","items":{"$ref":"#/types/equinix:fabric/getServiceProfileAccessPointTypeConfig:getServiceProfileAccessPointTypeConfig"},"type":"array"},"account":{"$ref":"#/types/equinix:fabric/getServiceProfileAccount:getServiceProfileAccount","description":"Service Profile Owner Account Information\n"},"allowedEmails":{"description":"Array of contact emails\n","items":{"type":"string"},"type":"array"},"changeLog":{"$ref":"#/types/equinix:fabric/getServiceProfileChangeLog:getServiceProfileChangeLog","description":"Captures connection lifecycle change information\n"},"customFields":{"description":"Custom Fields\n","items":{"$ref":"#/types/equinix:fabric/getServiceProfileCustomField:getServiceProfileCustomField"},"type":"array"},"description":{"description":"User-provided service description\n","type":"string"},"href":{"description":"Service Profile URI response attribute\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"marketingInfo":{"$ref":"#/types/equinix:fabric/getServiceProfileMarketingInfo:getServiceProfileMarketingInfo","description":"Marketing Info\n"},"metros":{"description":"Access point config information\n","items":{"$ref":"#/types/equinix:fabric/getServiceProfileMetro:getServiceProfileMetro"},"type":"array"},"name":{"description":"Customer-assigned service profile name\n","type":"string"},"notifications":{"description":"Preferences for notifications on connection configuration or status changes\n","items":{"$ref":"#/types/equinix:fabric/getServiceProfileNotification:getServiceProfileNotification"},"type":"array"},"ports":{"description":"Ports\n","items":{"$ref":"#/types/equinix:fabric/getServiceProfilePort:getServiceProfilePort"},"type":"array"},"project":{"$ref":"#/types/equinix:fabric/getServiceProfileProject:getServiceProfileProject","description":"Project information\n"},"selfProfile":{"description":"Self Profile indicating if the profile is created for customer's  self use\n","type":"boolean"},"state":{"description":"Service profile state - ACTIVE, PENDING_APPROVAL, DELETED, REJECTED\n","type":"string"},"tags":{"description":"Tags attached to the connection\n","items":{"type":"string"},"type":"array"},"type":{"description":"Service profile type - L2*PROFILE, L3*PROFILE, ECIA*PROFILE, ECMC*PROFILE, IA*PROFILE, IX*PROFILE\n","type":"string"},"uuid":{"description":"Equinix assigned service profile identifier\n","type":"string"},"viewPoint":{"description":"Flips view between buyer and seller representation. Available values : aSide, zSide. Default value : aSide\n","type":"string"},"virtualDevices":{"description":"Virtual Devices\n","items":{"$ref":"#/types/equinix:fabric/getServiceProfileVirtualDevice:getServiceProfileVirtualDevice"},"type":"array"},"visibility":{"description":"Service profile visibility - PUBLIC, PRIVATE\n","type":"string"}},"required":["accessPointTypeConfigs","account","allowedEmails","changeLog","customFields","description","href","marketingInfo","metros","name","notifications","ports","project","selfProfile","state","tags","type","uuid","viewPoint","virtualDevices","visibility","id"],"type":"object"}},"equinix:fabric/getServiceProfiles:getServiceProfiles":{"description":"Fabric V4 API compatible data resource that allow user to fetch Service Profile by name filter criteria\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/Fabric/IMPLEMENTATION/fabric-Sprofiles-implement.htm\n* API: https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#service-profiles\n\n","inputs":{"description":"A collection of arguments for invoking getServiceProfiles.\n","properties":{"andFilters":{"type":"boolean","description":"Optional boolean flag to indicate if the filters will be AND'd together. Defaults to false\n"},"filter":{"$ref":"#/types/equinix:fabric/getServiceProfilesFilter:getServiceProfilesFilter","description":"Filters for the Data Source Search Request (If and_filters is not set to true you cannot provide more than one filter block)\n"},"pagination":{"$ref":"#/types/equinix:fabric/getServiceProfilesPagination:getServiceProfilesPagination","description":"Pagination details for the Data Source Search Request\n"},"sort":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceProfilesSort:getServiceProfilesSort"},"description":"Filters for the Data Source Search Request\n"},"viewPoint":{"type":"string","description":"flips view between buyer and seller representation. Available values : aSide, zSide. Default value : aSide\n"}},"type":"object","required":["filter"]},"outputs":{"description":"A collection of values returned by getServiceProfiles.\n","properties":{"andFilters":{"description":"Optional boolean flag to indicate if the filters will be AND'd together. Defaults to false\n","type":"boolean"},"data":{"description":"List of Service Profiles\n","items":{"$ref":"#/types/equinix:fabric/getServiceProfilesDatum:getServiceProfilesDatum"},"type":"array"},"filter":{"$ref":"#/types/equinix:fabric/getServiceProfilesFilter:getServiceProfilesFilter","description":"Filters for the Data Source Search Request (If and_filters is not set to true you cannot provide more than one filter block)\n"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getServiceProfilesPagination:getServiceProfilesPagination","description":"Pagination details for the Data Source Search Request\n"},"sort":{"description":"Filters for the Data Source Search Request\n","items":{"$ref":"#/types/equinix:fabric/getServiceProfilesSort:getServiceProfilesSort"},"type":"array"},"viewPoint":{"description":"flips view between buyer and seller representation. Available values : aSide, zSide. Default value : aSide\n","type":"string"}},"required":["data","filter","id"],"type":"object"}},"equinix:fabric/getServiceToken:getServiceToken":{"description":"Fabric V4 API compatible data resource that allow user to fetch service token for a given UUID\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/Fabric/service%20tokens/Fabric-Service-Tokens.htm\n* API: https://docs.equinix.com/en-us/Content/KnowledgeCenter/Fabric/GettingStarted/Integrating-with-Fabric-V4-APIs/ConnectUsingServiceToken.htm\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst service_token = equinix.fabric.getServiceToken({\n    uuid: \"\u003cuuid_of_service_token\u003e\",\n});\nexport const id = service_token.then(service_token =\u003e service_token.id);\nexport const type = service_token.then(service_token =\u003e service_token.type);\nexport const expirationDateTime = service_token.then(service_token =\u003e service_token.expirationDateTime);\nexport const supportedBandwidths = service_token.then(service_token =\u003e service_token.serviceTokenConnections?.[0]?.supportedBandwidths);\nexport const virtualDeviceType = service_token.then(service_token =\u003e service_token.serviceTokenConnections?.[0]?.zSides?.[0]?.accessPointSelectors?.[0]?.virtualDevice?.type);\nexport const virtualDeviceUuid = service_token.then(service_token =\u003e service_token.serviceTokenConnections?.[0]?.zSides?.[0]?.accessPointSelectors?.[0]?.virtualDevice?.uuid);\nexport const interfaceType = service_token.then(service_token =\u003e service_token.serviceTokenConnections?.[0]?.zSides?.[0]?.accessPointSelectors?.[0]?.[\"interface\"]?.type);\nexport const interfaceUuid = service_token.then(service_token =\u003e service_token.serviceTokenConnections?.[0]?.zSides?.[0]?.accessPointSelectors?.[0]?.[\"interface\"]?.id);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nservice_token = equinix.fabric.get_service_token(uuid=\"\u003cuuid_of_service_token\u003e\")\npulumi.export(\"id\", service_token.id)\npulumi.export(\"type\", service_token.type)\npulumi.export(\"expirationDateTime\", service_token.expiration_date_time)\npulumi.export(\"supportedBandwidths\", service_token.service_token_connections[0].supported_bandwidths)\npulumi.export(\"virtualDeviceType\", service_token.service_token_connections[0].z_sides[0].access_point_selectors[0].virtual_device.type)\npulumi.export(\"virtualDeviceUuid\", service_token.service_token_connections[0].z_sides[0].access_point_selectors[0].virtual_device.uuid)\npulumi.export(\"interfaceType\", service_token.service_token_connections[0].z_sides[0].access_point_selectors[0].interface.type)\npulumi.export(\"interfaceUuid\", service_token.service_token_connections[0].z_sides[0].access_point_selectors[0].interface.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var service_token = Equinix.Fabric.GetServiceToken.Invoke(new()\n    {\n        Uuid = \"\u003cuuid_of_service_token\u003e\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"id\"] = service_token.Apply(service_token =\u003e service_token.Apply(getServiceTokenResult =\u003e getServiceTokenResult.Id)),\n        [\"type\"] = service_token.Apply(service_token =\u003e service_token.Apply(getServiceTokenResult =\u003e getServiceTokenResult.Type)),\n        [\"expirationDateTime\"] = service_token.Apply(service_token =\u003e service_token.Apply(getServiceTokenResult =\u003e getServiceTokenResult.ExpirationDateTime)),\n        [\"supportedBandwidths\"] = service_token.Apply(service_token =\u003e service_token.Apply(getServiceTokenResult =\u003e getServiceTokenResult.ServiceTokenConnections[0]?.SupportedBandwidths)),\n        [\"virtualDeviceType\"] = service_token.Apply(service_token =\u003e service_token.Apply(getServiceTokenResult =\u003e getServiceTokenResult.ServiceTokenConnections[0]?.ZSides[0]?.AccessPointSelectors[0]?.VirtualDevice?.Type)),\n        [\"virtualDeviceUuid\"] = service_token.Apply(service_token =\u003e service_token.Apply(getServiceTokenResult =\u003e getServiceTokenResult.ServiceTokenConnections[0]?.ZSides[0]?.AccessPointSelectors[0]?.VirtualDevice?.Uuid)),\n        [\"interfaceType\"] = service_token.Apply(service_token =\u003e service_token.Apply(getServiceTokenResult =\u003e getServiceTokenResult.ServiceTokenConnections[0]?.ZSides[0]?.AccessPointSelectors[0]?.Interface?.Type)),\n        [\"interfaceUuid\"] = service_token.Apply(service_token =\u003e service_token.Apply(getServiceTokenResult =\u003e getServiceTokenResult.ServiceTokenConnections[0]?.ZSides[0]?.AccessPointSelectors[0]?.Interface?.Id)),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tservice_token, err := fabric.LookupServiceToken(ctx, \u0026fabric.LookupServiceTokenArgs{\n\t\t\tUuid: \"\u003cuuid_of_service_token\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"id\", service_token.Id)\n\t\tctx.Export(\"type\", service_token.Type)\n\t\tctx.Export(\"expirationDateTime\", service_token.ExpirationDateTime)\n\t\tctx.Export(\"supportedBandwidths\", service_token.ServiceTokenConnections[0].SupportedBandwidths)\n\t\tctx.Export(\"virtualDeviceType\", service_token.ServiceTokenConnections[0].ZSides[0].AccessPointSelectors[0].VirtualDevice.Type)\n\t\tctx.Export(\"virtualDeviceUuid\", service_token.ServiceTokenConnections[0].ZSides[0].AccessPointSelectors[0].VirtualDevice.Uuid)\n\t\tctx.Export(\"interfaceType\", service_token.ServiceTokenConnections[0].ZSides[0].AccessPointSelectors[0].Interface.Type)\n\t\tctx.Export(\"interfaceUuid\", service_token.ServiceTokenConnections[0].ZSides[0].AccessPointSelectors[0].Interface.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetServiceTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var service-token = FabricFunctions.getServiceToken(GetServiceTokenArgs.builder()\n            .uuid(\"\u003cuuid_of_service_token\u003e\")\n            .build());\n\n        ctx.export(\"id\", service_token.id());\n        ctx.export(\"type\", service_token.type());\n        ctx.export(\"expirationDateTime\", service_token.expirationDateTime());\n        ctx.export(\"supportedBandwidths\", service_token.serviceTokenConnections()[0].supportedBandwidths());\n        ctx.export(\"virtualDeviceType\", service_token.serviceTokenConnections()[0].zSides()[0].accessPointSelectors()[0].virtualDevice().type());\n        ctx.export(\"virtualDeviceUuid\", service_token.serviceTokenConnections()[0].zSides()[0].accessPointSelectors()[0].virtualDevice().uuid());\n        ctx.export(\"interfaceType\", service_token.serviceTokenConnections()[0].zSides()[0].accessPointSelectors()[0].interface().type());\n        ctx.export(\"interfaceUuid\", service_token.serviceTokenConnections()[0].zSides()[0].accessPointSelectors()[0].interface().id());\n    }\n}\n```\n```yaml\nvariables:\n  service-token:\n    fn::invoke:\n      function: equinix:fabric:getServiceToken\n      arguments:\n        uuid: \u003cuuid_of_service_token\u003e\noutputs:\n  id: ${[\"service-token\"].id}\n  type: ${[\"service-token\"].type}\n  expirationDateTime: ${[\"service-token\"].expirationDateTime}\n  supportedBandwidths: ${[\"service-token\"].serviceTokenConnections[0].supportedBandwidths}\n  virtualDeviceType: ${[\"service-token\"].serviceTokenConnections[0].zSides[0].accessPointSelectors[0].virtualDevice.type}\n  virtualDeviceUuid: ${[\"service-token\"].serviceTokenConnections[0].zSides[0].accessPointSelectors[0].virtualDevice.uuid}\n  interfaceType: ${[\"service-token\"].serviceTokenConnections[0].zSides[0].accessPointSelectors[0].interface.type}\n  interfaceUuid: ${[\"service-token\"].serviceTokenConnections[0].zSides[0].accessPointSelectors[0].interface.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getServiceToken.\n","properties":{"uuid":{"type":"string","description":"Equinix-assigned service token identifier\n"}},"type":"object","required":["uuid"]},"outputs":{"description":"A collection of values returned by getServiceToken.\n","properties":{"accounts":{"description":"Customer account information that is associated with this service token\n","items":{"$ref":"#/types/equinix:fabric/getServiceTokenAccount:getServiceTokenAccount"},"type":"array"},"changeLogs":{"description":"Captures connection lifecycle change information\n","items":{"$ref":"#/types/equinix:fabric/getServiceTokenChangeLog:getServiceTokenChangeLog"},"type":"array"},"description":{"description":"Optional Description to the Service Token you will be creating\n","type":"string"},"expirationDateTime":{"description":"Expiration date and time of the service token; 2020-11-06T07:00:00Z\n","type":"string"},"href":{"description":"An absolute URL that is the subject of the link's context.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"issuerSide":{"description":"Information about token side; ASIDE, ZSIDE\n","type":"string"},"name":{"description":"Name of the Service Token\n","type":"string"},"notifications":{"description":"Preferences for notifications on Service Token configuration or status changes\n","items":{"$ref":"#/types/equinix:fabric/getServiceTokenNotification:getServiceTokenNotification"},"type":"array"},"projects":{"description":"Project information\n","items":{"$ref":"#/types/equinix:fabric/getServiceTokenProject:getServiceTokenProject"},"type":"array"},"serviceTokenConnections":{"description":"Service Token Connection Type Information\n","items":{"$ref":"#/types/equinix:fabric/getServiceTokenServiceTokenConnection:getServiceTokenServiceTokenConnection"},"type":"array"},"state":{"description":"Service token state; ACTIVE, INACTIVE, EXPIRED, DELETED\n","type":"string"},"type":{"description":"Service Token Type; VC*TOKEN,EPL*TOKEN\n","type":"string"},"uuid":{"description":"Equinix-assigned service token identifier\n","type":"string"}},"required":["accounts","changeLogs","description","expirationDateTime","href","issuerSide","name","notifications","projects","serviceTokenConnections","state","type","uuid","id"],"type":"object"}},"equinix:fabric/getServiceTokens:getServiceTokens":{"description":"Fabric V4 API compatible data resource that allow user to fetch service token for a given search data set\n\nAdditional documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/Fabric/service%20tokens/Fabric-Service-Tokens.htm\n* API: https://docs.equinix.com/en-us/Content/KnowledgeCenter/Fabric/GettingStarted/Integrating-with-Fabric-V4-APIs/ConnectUsingServiceToken.htm\n\n","inputs":{"description":"A collection of arguments for invoking getServiceTokens.\n","properties":{"filters":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getServiceTokensFilter:getServiceTokensFilter"},"description":"Filters for the Data Source Search Request\n"},"pagination":{"$ref":"#/types/equinix:fabric/getServiceTokensPagination:getServiceTokensPagination","description":"Pagination details for the Data Source Search Request\n"}},"type":"object","required":["filters"]},"outputs":{"description":"A collection of values returned by getServiceTokens.\n","properties":{"datas":{"description":"List of Service Tokens\n","items":{"$ref":"#/types/equinix:fabric/getServiceTokensData:getServiceTokensData"},"type":"array"},"filters":{"description":"Filters for the Data Source Search Request\n","items":{"$ref":"#/types/equinix:fabric/getServiceTokensFilter:getServiceTokensFilter"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getServiceTokensPagination:getServiceTokensPagination","description":"Pagination details for the Data Source Search Request\n"}},"required":["datas","filters","id"],"type":"object"}},"equinix:fabric/getStream:getStream":{"description":"Fabric V4 API compatible data resource that allow user to fetch Equinix Fabric Stream by UUID\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/KnowledgeCenter/Fabric/GettingStarted/Integrating-with-Fabric-V4-APIs/IntegrateWithSink.htm\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Streams\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst dataStream = equinix.fabric.getStream({\n    streamId: \"\u003cuuid_of_stream\u003e\",\n});\nexport const streamState = dataStream.then(dataStream =\u003e dataStream.state);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ndata_stream = equinix.fabric.get_stream(stream_id=\"\u003cuuid_of_stream\u003e\")\npulumi.export(\"streamState\", data_stream.state)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dataStream = Equinix.Fabric.GetStream.Invoke(new()\n    {\n        StreamId = \"\u003cuuid_of_stream\u003e\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"streamState\"] = dataStream.Apply(getStreamResult =\u003e getStreamResult.State),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdataStream, err := fabric.LookupStream(ctx, \u0026fabric.LookupStreamArgs{\n\t\t\tStreamId: \"\u003cuuid_of_stream\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"streamState\", dataStream.State)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetStreamArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dataStream = FabricFunctions.getStream(GetStreamArgs.builder()\n            .streamId(\"\u003cuuid_of_stream\u003e\")\n            .build());\n\n        ctx.export(\"streamState\", dataStream.applyValue(getStreamResult -\u003e getStreamResult.state()));\n    }\n}\n```\n```yaml\nvariables:\n  dataStream:\n    fn::invoke:\n      function: equinix:fabric:getStream\n      arguments:\n        streamId: \u003cuuid_of_stream\u003e\noutputs:\n  streamState: ${dataStream.state}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getStream.\n","properties":{"streamId":{"type":"string","description":"The uuid of the stream this data source should retrieve\n"}},"type":"object","required":["streamId"]},"outputs":{"description":"A collection of values returned by getStream.\n","properties":{"assetsCount":{"description":"Count of the streaming assets attached to the stream resource\n","type":"integer"},"changeLog":{"$ref":"#/types/equinix:fabric/getStreamChangeLog:getStreamChangeLog","description":"Details of the last change on the stream resource\n"},"description":{"description":"Customer-provided description of the stream resource\n","type":"string"},"href":{"description":"Equinix auto generated URI to the stream resource in Equinix Portal\n","type":"string"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"name":{"description":"Customer-provided name of the stream resource\n","type":"string"},"project":{"$ref":"#/types/equinix:fabric/getStreamProject:getStreamProject","description":"Equinix Project attribute object\n"},"state":{"description":"Value representing provisioning status for the stream resource\n","type":"string"},"streamId":{"description":"The uuid of the stream this data source should retrieve\n","type":"string"},"streamSubscriptionsCount":{"description":"Count of the client subscriptions on the stream resource\n","type":"integer"},"type":{"description":"Equinix defined Streaming Type\n","type":"string"},"uuid":{"description":"Equinix-assigned unique id for the stream resource\n","type":"string"}},"required":["assetsCount","changeLog","description","href","id","name","project","state","streamId","streamSubscriptionsCount","type","uuid"],"type":"object"}},"equinix:fabric/getStreamAlertRule:getStreamAlertRule":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetStreamAlertRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dataStreamAlertRule = FabricFunctions.getStreamAlertRule(GetStreamAlertRuleArgs.builder()\n            .streamId(\"\u003cuuid_of_stream\u003e\")\n            .streamAlertRuleId(\"\u003cuuid_of_stream_alert_rule\u003e\")\n            .build());\n\n        ctx.export(\"streamAlertRuleType\", data.equinix_fabric_stream_alert_rule().alert_rule().type());\n        ctx.export(\"streamAlertRuleId\", data.equinix_fabric_stream_alert_rule().alert_rule().uuid());\n        ctx.export(\"streamAlertRuleState\", data.equinix_fabric_stream_alert_rule().alert_rule().state());\n        ctx.export(\"streamAlertRuleStreamId\", data.equinix_fabric_stream_alert_rule().alert_rule().stream_id());\n    }\n}\n```\n```yaml\nvariables:\n  dataStreamAlertRule:\n    fn::invoke:\n      function: equinix:fabric:getStreamAlertRule\n      arguments:\n        streamId: \u003cuuid_of_stream\u003e\n        streamAlertRuleId: \u003cuuid_of_stream_alert_rule\u003e\noutputs:\n  streamAlertRuleType: ${data.equinix_fabric_stream_alert_rule.alert_rule.type}\n  streamAlertRuleId: ${data.equinix_fabric_stream_alert_rule.alert_rule.uuid}\n  streamAlertRuleState: ${data.equinix_fabric_stream_alert_rule.alert_rule.state}\n  streamAlertRuleStreamId: ${data.equinix_fabric_stream_alert_rule.alert_rule.stream_id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getStreamAlertRule.\n","properties":{"alertRuleId":{"type":"string","description":"The uuid of the stream alert rule\n"},"detectionMethod":{"$ref":"#/types/equinix:fabric/getStreamAlertRuleDetectionMethod:getStreamAlertRuleDetectionMethod","description":"Detection method for stream alert rule\n"},"metricSelector":{"$ref":"#/types/equinix:fabric/getStreamAlertRuleMetricSelector:getStreamAlertRuleMetricSelector","description":"Metric selector for the stream alert rule\n"},"streamId":{"type":"string","description":"The uuid of the stream that is the target of the stream alert rule\n"}},"type":"object","required":["alertRuleId","streamId"]},"outputs":{"description":"A collection of values returned by getStreamAlertRule.\n","properties":{"alertRuleId":{"description":"The uuid of the stream alert rule\n","type":"string"},"changeLog":{"$ref":"#/types/equinix:fabric/getStreamAlertRuleChangeLog:getStreamAlertRuleChangeLog","description":"Details of the last change on the stream resource\n"},"description":{"description":"Customer-provided stream alert rule description\n","type":"string"},"detectionMethod":{"$ref":"#/types/equinix:fabric/getStreamAlertRuleDetectionMethod:getStreamAlertRuleDetectionMethod","description":"Detection method for stream alert rule\n"},"enabled":{"description":"Stream subscription enabled status\n","type":"boolean"},"href":{"description":"Equinix assigned URI of the stream alert rule resource\n","type":"string"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"metricSelector":{"$ref":"#/types/equinix:fabric/getStreamAlertRuleMetricSelector:getStreamAlertRuleMetricSelector","description":"Metric selector for the stream alert rule\n"},"name":{"description":"Customer-provided stream alert rule name\n","type":"string"},"resourceSelector":{"$ref":"#/types/equinix:fabric/getStreamAlertRuleResourceSelector:getStreamAlertRuleResourceSelector","description":"Lists of metrics to be included/excluded on the stream alert rule\n"},"state":{"description":"Value representing provisioning status for the stream resource\n","type":"string"},"streamId":{"description":"The uuid of the stream that is the target of the stream alert rule\n","type":"string"},"type":{"description":"Type of the stream alert rule\n","type":"string"},"uuid":{"description":"Equinix assigned unique identifier of the stream subscription resource\n","type":"string"}},"required":["alertRuleId","changeLog","description","detectionMethod","enabled","href","id","metricSelector","name","resourceSelector","state","streamId","type","uuid"],"type":"object"}},"equinix:fabric/getStreamAlertRules:getStreamAlertRules":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst dataStreamAlertRules = equinix.fabric.getStreamAlertRules({\n    streamId: \"\u003cuuid_of_stream\u003e\",\n    pagination: {\n        limit: 5,\n        offset: 1,\n    },\n});\nexport const streamAlertRulesType = data.equinix_fabric_stream_alert_rules.alert_rules.data[0].type;\nexport const streamAlertRulesId = data.equinix_fabric_stream_alert_rules.alert_rules.data[0].uuid;\nexport const streamAlertRulesState = data.equinix_fabric_stream_alert_rules.alert_rules.data[0].state;\nexport const streamAlertRulesStreamId = data.equinix_fabric_stream_alert_rules.alert_rules.data[0].stream_id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ndata_stream_alert_rules = equinix.fabric.get_stream_alert_rules(stream_id=\"\u003cuuid_of_stream\u003e\",\n    pagination={\n        \"limit\": 5,\n        \"offset\": 1,\n    })\npulumi.export(\"streamAlertRulesType\", data[\"equinix_fabric_stream_alert_rules\"][\"alert_rules\"][\"data\"][0][\"type\"])\npulumi.export(\"streamAlertRulesId\", data[\"equinix_fabric_stream_alert_rules\"][\"alert_rules\"][\"data\"][0][\"uuid\"])\npulumi.export(\"streamAlertRulesState\", data[\"equinix_fabric_stream_alert_rules\"][\"alert_rules\"][\"data\"][0][\"state\"])\npulumi.export(\"streamAlertRulesStreamId\", data[\"equinix_fabric_stream_alert_rules\"][\"alert_rules\"][\"data\"][0][\"stream_id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dataStreamAlertRules = Equinix.Fabric.GetStreamAlertRules.Invoke(new()\n    {\n        StreamId = \"\u003cuuid_of_stream\u003e\",\n        Pagination = new Equinix.Fabric.Inputs.GetStreamAlertRulesPaginationInputArgs\n        {\n            Limit = 5,\n            Offset = 1,\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"streamAlertRulesType\"] = data.Equinix_fabric_stream_alert_rules.Alert_rules.Data[0].Type,\n        [\"streamAlertRulesId\"] = data.Equinix_fabric_stream_alert_rules.Alert_rules.Data[0].Uuid,\n        [\"streamAlertRulesState\"] = data.Equinix_fabric_stream_alert_rules.Alert_rules.Data[0].State,\n        [\"streamAlertRulesStreamId\"] = data.Equinix_fabric_stream_alert_rules.Alert_rules.Data[0].Stream_id,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.GetStreamAlertRules(ctx, \u0026fabric.GetStreamAlertRulesArgs{\n\t\t\tStreamId: \"\u003cuuid_of_stream\u003e\",\n\t\t\tPagination: fabric.GetStreamAlertRulesPagination{\n\t\t\t\tLimit:  5,\n\t\t\t\tOffset: 1,\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"streamAlertRulesType\", data.Equinix_fabric_stream_alert_rules.Alert_rules.Data[0].Type)\n\t\tctx.Export(\"streamAlertRulesId\", data.Equinix_fabric_stream_alert_rules.Alert_rules.Data[0].Uuid)\n\t\tctx.Export(\"streamAlertRulesState\", data.Equinix_fabric_stream_alert_rules.Alert_rules.Data[0].State)\n\t\tctx.Export(\"streamAlertRulesStreamId\", data.Equinix_fabric_stream_alert_rules.Alert_rules.Data[0].Stream_id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetStreamAlertRulesArgs;\nimport com.pulumi.equinix.fabric.inputs.GetStreamAlertRulesPaginationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dataStreamAlertRules = FabricFunctions.getStreamAlertRules(GetStreamAlertRulesArgs.builder()\n            .streamId(\"\u003cuuid_of_stream\u003e\")\n            .pagination(GetStreamAlertRulesPaginationArgs.builder()\n                .limit(5)\n                .offset(1)\n                .build())\n            .build());\n\n        ctx.export(\"streamAlertRulesType\", data.equinix_fabric_stream_alert_rules().alert_rules().data()[0].type());\n        ctx.export(\"streamAlertRulesId\", data.equinix_fabric_stream_alert_rules().alert_rules().data()[0].uuid());\n        ctx.export(\"streamAlertRulesState\", data.equinix_fabric_stream_alert_rules().alert_rules().data()[0].state());\n        ctx.export(\"streamAlertRulesStreamId\", data.equinix_fabric_stream_alert_rules().alert_rules().data()[0].stream_id());\n    }\n}\n```\n```yaml\nvariables:\n  dataStreamAlertRules:\n    fn::invoke:\n      function: equinix:fabric:getStreamAlertRules\n      arguments:\n        streamId: \u003cuuid_of_stream\u003e\n        pagination:\n          limit: 5\n          offset: 1\noutputs:\n  streamAlertRulesType: ${data.equinix_fabric_stream_alert_rules.alert_rules.data[0].type}\n  streamAlertRulesId: ${data.equinix_fabric_stream_alert_rules.alert_rules.data[0].uuid}\n  streamAlertRulesState: ${data.equinix_fabric_stream_alert_rules.alert_rules.data[0].state}\n  streamAlertRulesStreamId: ${data.equinix_fabric_stream_alert_rules.alert_rules.data[0].stream_id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getStreamAlertRules.\n","properties":{"pagination":{"$ref":"#/types/equinix:fabric/getStreamAlertRulesPagination:getStreamAlertRulesPagination","description":"Pagination details for the returned stream alert rules list\n"},"streamId":{"type":"string","description":"The uuid of the stream that is the target of the stream alert rule\n"}},"type":"object","required":["pagination","streamId"]},"outputs":{"description":"A collection of values returned by getStreamAlertRules.\n","properties":{"datas":{"description":"Returned list of stream objects\n","items":{"$ref":"#/types/equinix:fabric/getStreamAlertRulesData:getStreamAlertRulesData"},"type":"array"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getStreamAlertRulesPagination:getStreamAlertRulesPagination","description":"Pagination details for the returned stream alert rules list\n"},"streamId":{"description":"The uuid of the stream that is the target of the stream alert rule\n","type":"string"}},"required":["datas","id","pagination","streamId"],"type":"object"}},"equinix:fabric/getStreamAttachment:getStreamAttachment":{"description":"Fabric V4 API compatible data resource that allow user to fetch Equinix Fabric Stream Asset Attachment by IDs\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/KnowledgeCenter/Fabric/GettingStarted/Integrating-with-Fabric-V4-APIs/IntegrateWithSink.htm\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Streams\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst byIds = equinix.fabric.getStreamAttachment({\n    asset: \"\u003casset_group\u003e\",\n    assetId: \"\u003cid_of_the_asset_being_attached\u003e\",\n    streamId: \"\u003cid_of_the_stream_asset_is_being_attached_to\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nby_ids = equinix.fabric.get_stream_attachment(asset=\"\u003casset_group\u003e\",\n    asset_id=\"\u003cid_of_the_asset_being_attached\u003e\",\n    stream_id=\"\u003cid_of_the_stream_asset_is_being_attached_to\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byIds = Equinix.Fabric.GetStreamAttachment.Invoke(new()\n    {\n        Asset = \"\u003casset_group\u003e\",\n        AssetId = \"\u003cid_of_the_asset_being_attached\u003e\",\n        StreamId = \"\u003cid_of_the_stream_asset_is_being_attached_to\u003e\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.LookupStreamAttachment(ctx, \u0026fabric.LookupStreamAttachmentArgs{\n\t\t\tAsset:    \"\u003casset_group\u003e\",\n\t\t\tAssetId:  \"\u003cid_of_the_asset_being_attached\u003e\",\n\t\t\tStreamId: \"\u003cid_of_the_stream_asset_is_being_attached_to\u003e\",\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetStreamAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var byIds = FabricFunctions.getStreamAttachment(GetStreamAttachmentArgs.builder()\n            .asset(\"\u003casset_group\u003e\")\n            .assetId(\"\u003cid_of_the_asset_being_attached\u003e\")\n            .streamId(\"\u003cid_of_the_stream_asset_is_being_attached_to\u003e\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  byIds:\n    fn::invoke:\n      function: equinix:fabric:getStreamAttachment\n      arguments:\n        asset: \u003casset_group\u003e\n        assetId: \u003cid_of_the_asset_being_attached\u003e\n        streamId: \u003cid_of_the_stream_asset_is_being_attached_to\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getStreamAttachment.\n","properties":{"asset":{"type":"string","description":"Equinix defined asset category. Matches the product name the asset is a part of\n"},"assetId":{"type":"string","description":"Equinix defined UUID of the asset being attached to the stream\n"},"streamId":{"type":"string","description":"The uuid of the stream this data source should retrieve\n"}},"type":"object","required":["asset","assetId","streamId"]},"outputs":{"description":"A collection of values returned by getStreamAttachment.\n","properties":{"asset":{"description":"Equinix defined asset category. Matches the product name the asset is a part of\n","type":"string"},"assetId":{"description":"Equinix defined UUID of the asset being attached to the stream\n","type":"string"},"attachmentStatus":{"description":"Value representing status for the stream attachment\n","type":"string"},"href":{"description":"Equinix auto generated URI to the stream attachment in Equinix Portal\n","type":"string"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"metricsEnabled":{"description":"Boolean value indicating enablement of metrics for this asset stream attachment\n","type":"boolean"},"streamId":{"description":"The uuid of the stream this data source should retrieve\n","type":"string"},"type":{"description":"Equinix defined type for the asset stream attachment\n","type":"string"},"uuid":{"description":"Equinix-assigned unique id for the stream attachment\n","type":"string"}},"required":["asset","assetId","attachmentStatus","href","id","metricsEnabled","streamId","type","uuid"],"type":"object"}},"equinix:fabric/getStreamAttachments:getStreamAttachments":{"description":"Fabric V4 API compatible data resource that allow user to fetch Equinix Fabric Stream Attached Assets with filters and pagination details\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/KnowledgeCenter/Fabric/GettingStarted/Integrating-with-Fabric-V4-APIs/IntegrateWithSink.htm\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Streams\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst all = equinix.fabric.getStreamAttachments({\n    filters: [{\n        operator: \"=\",\n        property: \"\u003cfilter_property\u003e\",\n        values: [\"\u003clist_of_values_to_filter\u003e\"],\n    }],\n    pagination: {\n        limit: 100,\n        offset: 0,\n    },\n    sorts: [{\n        direction: \"\u003cDESC|ASC\u003e\",\n        property: \"/uuid\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nall = equinix.fabric.get_stream_attachments(filters=[{\n        \"operator\": \"=\",\n        \"property\": \"\u003cfilter_property\u003e\",\n        \"values\": [\"\u003clist_of_values_to_filter\u003e\"],\n    }],\n    pagination={\n        \"limit\": 100,\n        \"offset\": 0,\n    },\n    sorts=[{\n        \"direction\": \"\u003cDESC|ASC\u003e\",\n        \"property\": \"/uuid\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var all = Equinix.Fabric.GetStreamAttachments.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new Equinix.Fabric.Inputs.GetStreamAttachmentsFilterInputArgs\n            {\n                Operator = \"=\",\n                Property = \"\u003cfilter_property\u003e\",\n                Values = new[]\n                {\n                    \"\u003clist_of_values_to_filter\u003e\",\n                },\n            },\n        },\n        Pagination = new Equinix.Fabric.Inputs.GetStreamAttachmentsPaginationInputArgs\n        {\n            Limit = 100,\n            Offset = 0,\n        },\n        Sorts = new[]\n        {\n            new Equinix.Fabric.Inputs.GetStreamAttachmentsSortInputArgs\n            {\n                Direction = \"\u003cDESC|ASC\u003e\",\n                Property = \"/uuid\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.GetStreamAttachments(ctx, \u0026fabric.GetStreamAttachmentsArgs{\n\t\t\tFilters: []fabric.GetStreamAttachmentsFilter{\n\t\t\t\t{\n\t\t\t\t\tOperator: \"=\",\n\t\t\t\t\tProperty: \"\u003cfilter_property\u003e\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"\u003clist_of_values_to_filter\u003e\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPagination: fabric.GetStreamAttachmentsPagination{\n\t\t\t\tLimit:  100,\n\t\t\t\tOffset: 0,\n\t\t\t},\n\t\t\tSorts: []fabric.GetStreamAttachmentsSort{\n\t\t\t\t{\n\t\t\t\t\tDirection: \"\u003cDESC|ASC\u003e\",\n\t\t\t\t\tProperty:  \"/uuid\",\n\t\t\t\t},\n\t\t\t},\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetStreamAttachmentsArgs;\nimport com.pulumi.equinix.fabric.inputs.GetStreamAttachmentsPaginationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var all = FabricFunctions.getStreamAttachments(GetStreamAttachmentsArgs.builder()\n            .filters(GetStreamAttachmentsFilterArgs.builder()\n                .operator(\"=\")\n                .property(\"\u003cfilter_property\u003e\")\n                .values(\"\u003clist_of_values_to_filter\u003e\")\n                .build())\n            .pagination(GetStreamAttachmentsPaginationArgs.builder()\n                .limit(100)\n                .offset(0)\n                .build())\n            .sorts(GetStreamAttachmentsSortArgs.builder()\n                .direction(\"\u003cDESC|ASC\u003e\")\n                .property(\"/uuid\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  all:\n    fn::invoke:\n      function: equinix:fabric:getStreamAttachments\n      arguments:\n        filters:\n          - operator: =\n            property: \u003cfilter_property\u003e\n            values:\n              - \u003clist_of_values_to_filter\u003e\n        pagination:\n          limit: 100\n          offset: 0\n        sorts:\n          - direction: \u003cDESC|ASC\u003e\n            property: /uuid\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getStreamAttachments.\n","properties":{"filters":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getStreamAttachmentsFilter:getStreamAttachmentsFilter"},"description":"List of filters to apply to the stream attachment get request. Maximum of 8. All will be AND'd together with 1 of the 8 being a possible OR group of 3\n"},"pagination":{"$ref":"#/types/equinix:fabric/getStreamAttachmentsPagination:getStreamAttachmentsPagination","description":"Pagination details for the returned streams list\n"},"sorts":{"type":"array","items":{"$ref":"#/types/equinix:fabric/getStreamAttachmentsSort:getStreamAttachmentsSort"},"description":"The list of sort criteria for the stream assets search request\n"}},"type":"object","required":["pagination"]},"outputs":{"description":"A collection of values returned by getStreamAttachments.\n","properties":{"datas":{"description":"Returned list of stream objects\n","items":{"$ref":"#/types/equinix:fabric/getStreamAttachmentsData:getStreamAttachmentsData"},"type":"array"},"filters":{"description":"List of filters to apply to the stream attachment get request. Maximum of 8. All will be AND'd together with 1 of the 8 being a possible OR group of 3\n","items":{"$ref":"#/types/equinix:fabric/getStreamAttachmentsFilter:getStreamAttachmentsFilter"},"type":"array"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getStreamAttachmentsPagination:getStreamAttachmentsPagination","description":"Pagination details for the returned streams list\n"},"sorts":{"description":"The list of sort criteria for the stream assets search request\n","items":{"$ref":"#/types/equinix:fabric/getStreamAttachmentsSort:getStreamAttachmentsSort"},"type":"array"}},"required":["datas","filters","id","pagination"],"type":"object"}},"equinix:fabric/getStreamSubscription:getStreamSubscription":{"description":"Fabric V4 API compatible data source that allows user to fetch Equinix Fabric Stream Subscription by Stream Id and Subscription Id\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/KnowledgeCenter/Fabric/GettingStarted/Integrating-with-Fabric-V4-APIs/IntegrateWithSink.htm\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Stream-Subscriptions\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst byIds = equinix.fabric.getStreamSubscription({\n    streamId: \"\u003cstream_id\u003e\",\n    subscriptionId: \"\u003csubscription_id\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nby_ids = equinix.fabric.get_stream_subscription(stream_id=\"\u003cstream_id\u003e\",\n    subscription_id=\"\u003csubscription_id\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byIds = Equinix.Fabric.GetStreamSubscription.Invoke(new()\n    {\n        StreamId = \"\u003cstream_id\u003e\",\n        SubscriptionId = \"\u003csubscription_id\u003e\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.LookupStreamSubscription(ctx, \u0026fabric.LookupStreamSubscriptionArgs{\n\t\t\tStreamId:       \"\u003cstream_id\u003e\",\n\t\t\tSubscriptionId: \"\u003csubscription_id\u003e\",\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetStreamSubscriptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var byIds = FabricFunctions.getStreamSubscription(GetStreamSubscriptionArgs.builder()\n            .streamId(\"\u003cstream_id\u003e\")\n            .subscriptionId(\"\u003csubscription_id\u003e\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  byIds:\n    fn::invoke:\n      function: equinix:fabric:getStreamSubscription\n      arguments:\n        streamId: \u003cstream_id\u003e\n        subscriptionId: \u003csubscription_id\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getStreamSubscription.\n","properties":{"streamId":{"type":"string","description":"The uuid of the stream that is the target of the stream subscription\n"},"subscriptionId":{"type":"string","description":"The uuid of the stream subscription\n"}},"type":"object","required":["streamId","subscriptionId"]},"outputs":{"description":"A collection of values returned by getStreamSubscription.\n","properties":{"changeLog":{"$ref":"#/types/equinix:fabric/getStreamSubscriptionChangeLog:getStreamSubscriptionChangeLog","description":"Details of the last change on the stream resource\n"},"description":{"description":"Customer-provided stream subscription description\n","type":"string"},"enabled":{"description":"Stream subscription enabled status\n","type":"boolean"},"eventSelector":{"$ref":"#/types/equinix:fabric/getStreamSubscriptionEventSelector:getStreamSubscriptionEventSelector","description":"Lists of events to be included/excluded on the stream subscription\n"},"href":{"description":"Equinix assigned URI of the stream subscription resource\n","type":"string"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"metricSelector":{"$ref":"#/types/equinix:fabric/getStreamSubscriptionMetricSelector:getStreamSubscriptionMetricSelector","description":"Lists of metrics to be included/excluded on the stream subscription\n"},"name":{"description":"Customer-provided stream subscription name\n","type":"string"},"sink":{"$ref":"#/types/equinix:fabric/getStreamSubscriptionSink:getStreamSubscriptionSink","description":"The details of the subscriber to the Equinix Stream\n"},"state":{"description":"Value representing provisioning status for the stream resource\n","type":"string"},"streamId":{"description":"The uuid of the stream that is the target of the stream subscription\n","type":"string"},"subscriptionId":{"description":"The uuid of the stream subscription\n","type":"string"},"type":{"description":"Type of the stream subscription request\n","type":"string"},"uuid":{"description":"Equinix assigned unique identifier of the stream subscription resource\n","type":"string"}},"required":["changeLog","description","enabled","eventSelector","href","id","metricSelector","name","sink","state","streamId","subscriptionId","type","uuid"],"type":"object"}},"equinix:fabric/getStreamSubscriptions:getStreamSubscriptions":{"description":"Fabric V4 API compatible data source that allows user to fetch Equinix Fabric Stream Subscriptions with pagination\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/KnowledgeCenter/Fabric/GettingStarted/Integrating-with-Fabric-V4-APIs/IntegrateWithSink.htm\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Stream-Subscriptions\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst all = equinix.fabric.getStreamSubscriptions({\n    pagination: {\n        limit: 10,\n        offset: 0,\n    },\n    streamId: \"\u003cstream_id\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nall = equinix.fabric.get_stream_subscriptions(pagination={\n        \"limit\": 10,\n        \"offset\": 0,\n    },\n    stream_id=\"\u003cstream_id\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var all = Equinix.Fabric.GetStreamSubscriptions.Invoke(new()\n    {\n        Pagination = new Equinix.Fabric.Inputs.GetStreamSubscriptionsPaginationInputArgs\n        {\n            Limit = 10,\n            Offset = 0,\n        },\n        StreamId = \"\u003cstream_id\u003e\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\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 := fabric.GetStreamSubscriptions(ctx, \u0026fabric.GetStreamSubscriptionsArgs{\n\t\t\tPagination: fabric.GetStreamSubscriptionsPagination{\n\t\t\t\tLimit:  10,\n\t\t\t\tOffset: 0,\n\t\t\t},\n\t\t\tStreamId: \"\u003cstream_id\u003e\",\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetStreamSubscriptionsArgs;\nimport com.pulumi.equinix.fabric.inputs.GetStreamSubscriptionsPaginationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var all = FabricFunctions.getStreamSubscriptions(GetStreamSubscriptionsArgs.builder()\n            .pagination(GetStreamSubscriptionsPaginationArgs.builder()\n                .limit(10)\n                .offset(0)\n                .build())\n            .streamId(\"\u003cstream_id\u003e\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  all:\n    fn::invoke:\n      function: equinix:fabric:getStreamSubscriptions\n      arguments:\n        pagination:\n          limit: 10\n          offset: 0\n        streamId: \u003cstream_id\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getStreamSubscriptions.\n","properties":{"pagination":{"$ref":"#/types/equinix:fabric/getStreamSubscriptionsPagination:getStreamSubscriptionsPagination","description":"Pagination details for the returned streams list\n"},"streamId":{"type":"string","description":"The uuid of the stream that is the target of the stream subscription\n"}},"type":"object","required":["pagination","streamId"]},"outputs":{"description":"A collection of values returned by getStreamSubscriptions.\n","properties":{"datas":{"description":"Returned list of stream objects\n","items":{"$ref":"#/types/equinix:fabric/getStreamSubscriptionsData:getStreamSubscriptionsData"},"type":"array"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getStreamSubscriptionsPagination:getStreamSubscriptionsPagination","description":"Pagination details for the returned streams list\n"},"streamId":{"description":"The uuid of the stream that is the target of the stream subscription\n","type":"string"}},"required":["datas","id","pagination","streamId"],"type":"object"}},"equinix:fabric/getStreams:getStreams":{"description":"Fabric V4 API compatible data resource that allow user to fetch Equinix Fabric Streams with pagination details\n\nAdditional Documentation:\n* Getting Started: https://docs.equinix.com/en-us/Content/KnowledgeCenter/Fabric/GettingStarted/Integrating-with-Fabric-V4-APIs/IntegrateWithSink.htm\n* API: https://developer.equinix.com/catalog/fabricv4#tag/Streams\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst dataStreams = equinix.fabric.getStreams({\n    pagination: {\n        limit: 2,\n        offset: 1,\n    },\n});\nexport const numberOfReturnedStreams = dataStreams.then(dataStreams =\u003e dataStreams.datas).length;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ndata_streams = equinix.fabric.get_streams(pagination={\n    \"limit\": 2,\n    \"offset\": 1,\n})\npulumi.export(\"numberOfReturnedStreams\", len(data_streams.datas))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dataStreams = Equinix.Fabric.GetStreams.Invoke(new()\n    {\n        Pagination = new Equinix.Fabric.Inputs.GetStreamsPaginationInputArgs\n        {\n            Limit = 2,\n            Offset = 1,\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"numberOfReturnedStreams\"] = dataStreams.Apply(getStreamsResult =\u003e getStreamsResult.Datas).Length,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdataStreams, err := fabric.GetStreams(ctx, \u0026fabric.GetStreamsArgs{\n\t\t\tPagination: fabric.GetStreamsPagination{\n\t\t\t\tLimit:  2,\n\t\t\t\tOffset: 1,\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"numberOfReturnedStreams\", pulumi.Int(len(dataStreams.Datas)))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetStreamsArgs;\nimport com.pulumi.equinix.fabric.inputs.GetStreamsPaginationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dataStreams = FabricFunctions.getStreams(GetStreamsArgs.builder()\n            .pagination(GetStreamsPaginationArgs.builder()\n                .limit(2)\n                .offset(1)\n                .build())\n            .build());\n\n        ctx.export(\"numberOfReturnedStreams\", dataStreams.applyValue(getStreamsResult -\u003e getStreamsResult.datas()).length());\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getStreams.\n","properties":{"pagination":{"$ref":"#/types/equinix:fabric/getStreamsPagination:getStreamsPagination","description":"Pagination details for the returned streams list\n"}},"type":"object","required":["pagination"]},"outputs":{"description":"A collection of values returned by getStreams.\n","properties":{"datas":{"description":"Returned list of stream objects\n","items":{"$ref":"#/types/equinix:fabric/getStreamsData:getStreamsData"},"type":"array"},"id":{"description":"The unique identifier of the resource\n","type":"string"},"pagination":{"$ref":"#/types/equinix:fabric/getStreamsPagination:getStreamsPagination","description":"Pagination details for the returned streams list\n"}},"required":["datas","id","pagination"],"type":"object"}},"equinix:metal/getDevice:getDevice":{"description":"The datasource can be used to fetch a single device.\n\nIf you need to fetch a list of devices which meet filter criteria, you can use the equinix.metal.getDevices datasource.\n\n\u003e **Note:** All arguments including the `root_password` and `user_data` will be stored in the raw state as plain-text. Read more about sensitive data in state.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\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 as equinix\n\ntest = equinix.metal.get_device(project_id=local[\"project_id\"],\n    hostname=\"mydevice\")\npulumi.export(\"id\", test.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = Equinix.Metal.GetDevice.Invoke(new()\n    {\n        ProjectId = local.Project_id,\n        Hostname = \"mydevice\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"id\"] = test.Apply(getDeviceResult =\u003e getDeviceResult.Id),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.LookupDevice(ctx, \u0026metal.LookupDeviceArgs{\n\t\t\tProjectId: pulumi.StringRef(local.Project_id),\n\t\t\tHostname:  pulumi.StringRef(\"mydevice\"),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var test = MetalFunctions.getDevice(GetDeviceArgs.builder()\n            .projectId(local.project_id())\n            .hostname(\"mydevice\")\n            .build());\n\n        ctx.export(\"id\", test.applyValue(getDeviceResult -\u003e getDeviceResult.id()));\n    }\n}\n```\n```yaml\nvariables:\n  test:\n    fn::invoke:\n      function: equinix:metal:getDevice\n      arguments:\n        projectId: ${local.project_id}\n        hostname: mydevice\noutputs:\n  id: ${test.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst test = equinix.metal.getDevice({\n    deviceId: \"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\",\n});\nexport const ipv4 = test.then(test =\u003e test.accessPublicIpv4);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.metal.get_device(device_id=\"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\")\npulumi.export(\"ipv4\", test.access_public_ipv4)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = Equinix.Metal.GetDevice.Invoke(new()\n    {\n        DeviceId = \"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"ipv4\"] = test.Apply(getDeviceResult =\u003e getDeviceResult.AccessPublicIpv4),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.LookupDevice(ctx, \u0026metal.LookupDeviceArgs{\n\t\t\tDeviceId: pulumi.StringRef(\"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(\"ipv4\", test.AccessPublicIpv4)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var test = MetalFunctions.getDevice(GetDeviceArgs.builder()\n            .deviceId(\"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\")\n            .build());\n\n        ctx.export(\"ipv4\", test.applyValue(getDeviceResult -\u003e getDeviceResult.accessPublicIpv4()));\n    }\n}\n```\n```yaml\nvariables:\n  test:\n    fn::invoke:\n      function: equinix:metal:getDevice\n      arguments:\n        deviceId: 4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\noutputs:\n  ipv4: ${test.accessPublicIpv4}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","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":{"description":"The ipv4 private IP assigned to the device\n","type":"string"},"accessPublicIpv4":{"description":"The ipv4 management IP assigned to the device\n","type":"string"},"accessPublicIpv6":{"description":"The ipv6 management IP assigned to the device\n","type":"string"},"alwaysPxe":{"type":"boolean"},"billingCycle":{"description":"The billing cycle of the device (monthly or hourly)\n","type":"string"},"description":{"description":"Description string for the device\n","type":"string"},"deviceId":{"description":"Device ID\n","type":"string"},"facility":{"deprecationMessage":"Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices","description":"The facility where the device is deployed\n","type":"string"},"hardwareReservationId":{"description":"The id of hardware reservation which this device occupies\n","type":"string"},"hostname":{"description":"The device name\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"ipxeScriptUrl":{"type":"string"},"metro":{"description":"The metro where the device is deployed\n","type":"string"},"networkType":{"description":"L2 network type of the device, one oflayer3, hybrid, layer2-individual, layer2-bonded\n","type":"string"},"networks":{"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: ublic IPv4 at equinix*metal*device.name.network.0, IPv6 at equinix*metal*device.name.network.1 and private IPv4 at equinix*metal*device.name.network.2. Elastic 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).\n","items":{"$ref":"#/types/equinix:metal/getDeviceNetwork:getDeviceNetwork"},"type":"array"},"operatingSystem":{"description":"The operating system running on the device\n","type":"string"},"plan":{"description":"The hardware config of the device\n","type":"string"},"ports":{"description":"Ports assigned to the device\n","items":{"$ref":"#/types/equinix:metal/getDevicePort:getDevicePort"},"type":"array"},"projectId":{"description":"The id of the project in which the devices exists\n","type":"string"},"rootPassword":{"description":"Root password to the server (if still available)\n","secret":true,"type":"string"},"sosHostname":{"description":"The hostname to use for [Serial over SSH](https://docs.equinix.com/metal/resilience-recovery/serial-over-ssh/) access to the device\n","type":"string"},"sshKeyIds":{"description":"List of IDs of SSH keys deployed in the device, can be both user or project SSH keys\n","items":{"type":"string"},"type":"array"},"state":{"description":"The state of the device\n","type":"string"},"storage":{"type":"string"},"tags":{"description":"Tags attached to the device\n","items":{"type":"string"},"type":"array"}},"required":["accessPrivateIpv4","accessPublicIpv4","accessPublicIpv6","alwaysPxe","billingCycle","description","deviceId","facility","hardwareReservationId","hostname","ipxeScriptUrl","metro","networks","networkType","operatingSystem","plan","ports","projectId","rootPassword","sosHostname","sshKeyIds","state","storage","tags","id"],"type":"object"}},"equinix:metal/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## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\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 as equinix\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 System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = Equinix.Metal.GetDeviceBgpNeighbors.Invoke(new()\n    {\n        DeviceId = \"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"bgpNeighborsListing\"] = test.Apply(getDeviceBgpNeighborsResult =\u003e getDeviceBgpNeighborsResult.BgpNeighbors),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.GetDeviceBgpNeighbors(ctx, \u0026metal.GetDeviceBgpNeighborsArgs{\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetDeviceBgpNeighborsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var test = MetalFunctions.getDeviceBgpNeighbors(GetDeviceBgpNeighborsArgs.builder()\n            .deviceId(\"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\")\n            .build());\n\n        ctx.export(\"bgpNeighborsListing\", test.applyValue(getDeviceBgpNeighborsResult -\u003e getDeviceBgpNeighborsResult.bgpNeighbors()));\n    }\n}\n```\n```yaml\nvariables:\n  test:\n    fn::invoke:\n      function: equinix:metal:getDeviceBgpNeighbors\n      arguments:\n        deviceId: 4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\noutputs:\n  bgpNeighborsListing: ${test.bgpNeighbors}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","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":{"description":"array of BGP neighbor records with attributes:\n","items":{"$ref":"#/types/equinix:metal/getDeviceBgpNeighborsBgpNeighbor:getDeviceBgpNeighborsBgpNeighbor"},"type":"array"},"deviceId":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"}},"required":["bgpNeighbors","deviceId","id"],"type":"object"}},"equinix:metal/getDevices:getDevices":{"description":"The datasource can be used to find a list of devices which meet filter criteria.\n\nIf you need to fetch a single device by ID or by project ID and hostname, use the equinix.metal.Device datasource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst example = equinix.metal.getDevices({\n    projectId: local.project_id,\n    filters: [\n        {\n            attribute: \"plan\",\n            values: [\"c3.small.x86\"],\n        },\n        {\n            attribute: \"metro\",\n            values: [\n                \"da\",\n                \"sv\",\n            ],\n        },\n    ],\n});\nexport const devices = example.then(example =\u003e example.devices);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexample = equinix.metal.get_devices(project_id=local[\"project_id\"],\n    filters=[\n        {\n            \"attribute\": \"plan\",\n            \"values\": [\"c3.small.x86\"],\n        },\n        {\n            \"attribute\": \"metro\",\n            \"values\": [\n                \"da\",\n                \"sv\",\n            ],\n        },\n    ])\npulumi.export(\"devices\", example.devices)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Equinix.Metal.GetDevices.Invoke(new()\n    {\n        ProjectId = local.Project_id,\n        Filters = new[]\n        {\n            new Equinix.Metal.Inputs.GetDevicesFilterInputArgs\n            {\n                Attribute = \"plan\",\n                Values = new[]\n                {\n                    \"c3.small.x86\",\n                },\n            },\n            new Equinix.Metal.Inputs.GetDevicesFilterInputArgs\n            {\n                Attribute = \"metro\",\n                Values = new[]\n                {\n                    \"da\",\n                    \"sv\",\n                },\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"devices\"] = example.Apply(getDevicesResult =\u003e getDevicesResult.Devices),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.GetDevices(ctx, \u0026metal.GetDevicesArgs{\n\t\t\tProjectId: pulumi.StringRef(local.Project_id),\n\t\t\tFilters: []metal.GetDevicesFilter{\n\t\t\t\t{\n\t\t\t\t\tAttribute: \"plan\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"c3.small.x86\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAttribute: \"metro\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"da\",\n\t\t\t\t\t\t\"sv\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"devices\", example.Devices)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetDevicesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = MetalFunctions.getDevices(GetDevicesArgs.builder()\n            .projectId(local.project_id())\n            .filters(            \n                GetDevicesFilterArgs.builder()\n                    .attribute(\"plan\")\n                    .values(\"c3.small.x86\")\n                    .build(),\n                GetDevicesFilterArgs.builder()\n                    .attribute(\"metro\")\n                    .values(                    \n                        \"da\",\n                        \"sv\")\n                    .build())\n            .build());\n\n        ctx.export(\"devices\", example.applyValue(getDevicesResult -\u003e getDevicesResult.devices()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: equinix:metal:getDevices\n      arguments:\n        projectId: ${local.project_id}\n        filters:\n          - attribute: plan\n            values:\n              - c3.small.x86\n          - attribute: metro\n            values:\n              - da\n              - sv\noutputs:\n  devices: ${example.devices}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst example = equinix.metal.getDevices({\n    search: \"database\",\n});\nexport const devices = example.then(example =\u003e example.devices);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexample = equinix.metal.get_devices(search=\"database\")\npulumi.export(\"devices\", example.devices)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Equinix.Metal.GetDevices.Invoke(new()\n    {\n        Search = \"database\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"devices\"] = example.Apply(getDevicesResult =\u003e getDevicesResult.Devices),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.GetDevices(ctx, \u0026metal.GetDevicesArgs{\n\t\t\tSearch: pulumi.StringRef(\"database\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"devices\", example.Devices)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetDevicesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = MetalFunctions.getDevices(GetDevicesArgs.builder()\n            .search(\"database\")\n            .build());\n\n        ctx.export(\"devices\", example.applyValue(getDevicesResult -\u003e getDevicesResult.devices()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: equinix:metal:getDevices\n      arguments:\n        search: database\noutputs:\n  devices: ${example.devices}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## search vs filter\n\nThe difference between `search` and `filter` is that `search` is an API parameter, interpreted by the Equinix Metal service. The \"filter\" arguments will reduce the API list (or search) results by applying client-side filtering, within this provider.\n","inputs":{"description":"A collection of arguments for invoking getDevices.\n","properties":{"filters":{"type":"array","items":{"$ref":"#/types/equinix:metal/getDevicesFilter:getDevicesFilter"},"description":"One or more attribute/values pairs to filter. List of atributes to filter can be found in the attribute reference of the `equinix.metal.Device` datasource.\n"},"organizationId":{"type":"string","description":"ID of organization containing the devices.\n"},"projectId":{"type":"string","description":"ID of project containing the devices. Exactly one of `project_id` and `organization_id` must be set.\n"},"search":{"type":"string","description":"Search string to filter devices by hostname, description, short_id, reservation short_id, tags, plan name, plan slug, facility code, facility name, operating system name, operating system slug, IP addresses.\n"},"sorts":{"type":"array","items":{"$ref":"#/types/equinix:metal/getDevicesSort:getDevicesSort"}}},"type":"object"},"outputs":{"description":"A collection of values returned by getDevices.\n","properties":{"devices":{"description":"list of resources with attributes like in the equninix_metal_device datasources.\n","items":{"$ref":"#/types/equinix:metal/getDevicesDevice:getDevicesDevice"},"type":"array"},"filters":{"items":{"$ref":"#/types/equinix:metal/getDevicesFilter:getDevicesFilter"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"organizationId":{"type":"string"},"projectId":{"type":"string"},"search":{"type":"string"},"sorts":{"items":{"$ref":"#/types/equinix:metal/getDevicesSort:getDevicesSort"},"type":"array"}},"required":["devices","id"],"type":"object"}},"equinix:metal/getFacility:getFacility":{"description":"\u003e **Deprecated** Use `equinix.metal.getMetro` instead. For more information, refer to the facility to metro migration guide.\n\nProvides an Equinix Metal facility datasource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst ny5 = equinix.metal.getFacility({\n    code: \"ny5\",\n});\nexport const id = ny5.then(ny5 =\u003e ny5.id);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nny5 = equinix.metal.get_facility(code=\"ny5\")\npulumi.export(\"id\", ny5.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ny5 = Equinix.Metal.GetFacility.Invoke(new()\n    {\n        Code = \"ny5\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"id\"] = ny5.Apply(getFacilityResult =\u003e getFacilityResult.Id),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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\tny5, err := metal.GetFacility(ctx, \u0026metal.GetFacilityArgs{\n\t\t\tCode: \"ny5\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"id\", ny5.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetFacilityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var ny5 = MetalFunctions.getFacility(GetFacilityArgs.builder()\n            .code(\"ny5\")\n            .build());\n\n        ctx.export(\"id\", ny5.applyValue(getFacilityResult -\u003e getFacilityResult.id()));\n    }\n}\n```\n```yaml\nvariables:\n  ny5:\n    fn::invoke:\n      function: equinix:metal:getFacility\n      arguments:\n        code: ny5\noutputs:\n  id: ${ny5.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n","inputs":{"description":"A collection of arguments for invoking getFacility.\n","properties":{"capacities":{"type":"array","items":{"$ref":"#/types/equinix:metal/getFacilityCapacity:getFacilityCapacity"},"description":"One or more device plans for which the facility must have capacity.\n"},"code":{"type":"string","description":"The facility code to search for facilities.\n"},"featuresRequireds":{"type":"array","items":{"type":"string"},"description":"Set of feature strings that the facility must have. Some possible values are `baremetal`, `ibx`, `storage`, `global_ipv4`, `backend_transfer`, `layer_2`.\n"}},"type":"object","required":["code"]},"outputs":{"description":"A collection of values returned by getFacility.\n","properties":{"capacities":{"items":{"$ref":"#/types/equinix:metal/getFacilityCapacity:getFacilityCapacity"},"type":"array"},"code":{"type":"string"},"features":{"description":"The features of the facility.\n","items":{"type":"string"},"type":"array"},"featuresRequireds":{"items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"metro":{"description":"The metro code the facility is part of.\n","type":"string"},"name":{"description":"The name of the facility.\n","type":"string"}},"required":["code","features","metro","name","id"],"type":"object"}},"equinix:metal/getGateway:getGateway":{"description":"Use this datasource to retrieve Metal Gateway resources in Equinix Metal.\n\nSee the [Virtual Routing and Forwarding documentation](https://docs.equinix.com/metal/networking/vrf/) for product details and API reference material.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\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 as equinix\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 System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\n    var testVlan = new Equinix.Metal.Vlan(\"testVlan\", new()\n    {\n        Description = \"test VLAN in SV\",\n        Metro = \"sv\",\n        ProjectId = local.Project_id,\n    });\n\n    var testGateway = Equinix.Metal.GetGateway.Invoke(new()\n    {\n        GatewayId = local.Gateway_id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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// Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\n\t\t_, err := metal.NewVlan(ctx, \"testVlan\", \u0026metal.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 = metal.LookupGateway(ctx, \u0026metal.LookupGatewayArgs{\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Vlan;\nimport com.pulumi.equinix.metal.VlanArgs;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\n        var testVlan = new Vlan(\"testVlan\", VlanArgs.builder()\n            .description(\"test VLAN in SV\")\n            .metro(\"sv\")\n            .projectId(local.project_id())\n            .build());\n\n        final var testGateway = MetalFunctions.getGateway(GetGatewayArgs.builder()\n            .gatewayId(local.gateway_id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\n  testVlan:\n    type: equinix:metal:Vlan\n    properties:\n      description: test VLAN in SV\n      metro: sv\n      projectId: ${local.project_id}\nvariables:\n  testGateway:\n    fn::invoke:\n      function: equinix:metal:getGateway\n      arguments:\n        gatewayId: ${local.gateway_id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","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"},"ipReservationId":{"description":"UUID of IP reservation block bound to the gateway.\n","type":"string"},"privateIpv4SubnetSize":{"description":"Size of the private IPv4 subnet bound to this metal gateway. One of `8`, `16`, `32`, `64`, `128`.\n","type":"integer"},"projectId":{"description":"UUID of the project where the gateway is scoped to.\n","type":"string"},"state":{"description":"Status of the gateway resource.\n","type":"string"},"vlanId":{"description":"UUID of the VLAN where the gateway is scoped to.\n","type":"string"},"vrfId":{"description":"UUID of the VRF associated with the IP Reservation.\n","type":"string"}},"required":["gatewayId","id","ipReservationId","privateIpv4SubnetSize","projectId","state","vlanId","vrfId"],"type":"object"}},"equinix:metal/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\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst example = equinix.metal.getHardwareReservation({\n    id: \"4347e805-eb46-4699-9eb9-5c116e6a0172\",\n});\nconst exampleByDeviceId = equinix.metal.getHardwareReservation({\n    deviceId: \"ff85aa58-c106-4624-8f1c-7c64554047ea\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexample = equinix.metal.get_hardware_reservation(id=\"4347e805-eb46-4699-9eb9-5c116e6a0172\")\nexample_by_device_id = equinix.metal.get_hardware_reservation(device_id=\"ff85aa58-c106-4624-8f1c-7c64554047ea\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Equinix.Metal.GetHardwareReservation.Invoke(new()\n    {\n        Id = \"4347e805-eb46-4699-9eb9-5c116e6a0172\",\n    });\n\n    var exampleByDeviceId = Equinix.Metal.GetHardwareReservation.Invoke(new()\n    {\n        DeviceId = \"ff85aa58-c106-4624-8f1c-7c64554047ea\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.GetHardwareReservation(ctx, \u0026metal.GetHardwareReservationArgs{\n\t\t\tId: pulumi.StringRef(\"4347e805-eb46-4699-9eb9-5c116e6a0172\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = metal.GetHardwareReservation(ctx, \u0026metal.GetHardwareReservationArgs{\n\t\t\tDeviceId: pulumi.StringRef(\"ff85aa58-c106-4624-8f1c-7c64554047ea\"),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetHardwareReservationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = MetalFunctions.getHardwareReservation(GetHardwareReservationArgs.builder()\n            .id(\"4347e805-eb46-4699-9eb9-5c116e6a0172\")\n            .build());\n\n        final var exampleByDeviceId = MetalFunctions.getHardwareReservation(GetHardwareReservationArgs.builder()\n            .deviceId(\"ff85aa58-c106-4624-8f1c-7c64554047ea\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: equinix:metal:getHardwareReservation\n      arguments:\n        id: 4347e805-eb46-4699-9eb9-5c116e6a0172\n  exampleByDeviceId:\n    fn::invoke:\n      function: equinix:metal:getHardwareReservation\n      arguments:\n        deviceId: ff85aa58-c106-4624-8f1c-7c64554047ea\n```\n\u003c!--End PulumiCodeChooser --\u003e\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":{"description":"UUID of device occupying the reservation.\n","type":"string"},"facility":{"deprecationMessage":"Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices","description":"(**Deprecated**) Facility for the reservation. Use metro instead; read the facility to metro migration guide\n","type":"string"},"id":{"description":"ID of the hardware reservation to look up.\n","type":"string"},"plan":{"description":"Plan type for the reservation.\n","type":"string"},"projectId":{"description":"UUID of project this reservation is scoped to.\n","type":"string"},"provisionable":{"description":"Flag indicating whether the reserved server is provisionable or not. Spare devices can't be provisioned unless they are activated first.\n","type":"boolean"},"shortId":{"description":"Reservation short ID.\n","type":"string"},"spare":{"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","type":"boolean"},"switchUuid":{"description":"Switch short ID, can be used to determine if two devices are connected to the same switch.\n","type":"string"}},"required":["deviceId","facility","id","plan","projectId","provisionable","shortId","spare","switchUuid"],"type":"object"}},"equinix:metal/getInterconnection:getInterconnection":{"description":"Use this data source to retrieve a [connection resource](https://metal.equinix.com/developers/docs/networking/fabric/)\n\n\u003e Equinix Metal connection with with Service Token A-side / Z-side (service_token_type) is not generally available and may not be enabled yet for your organization.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst example = equinix.metal.getInterconnection({\n    connectionId: \"4347e805-eb46-4699-9eb9-5c116e6a017d\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexample = equinix.metal.get_interconnection(connection_id=\"4347e805-eb46-4699-9eb9-5c116e6a017d\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Equinix.Metal.GetInterconnection.Invoke(new()\n    {\n        ConnectionId = \"4347e805-eb46-4699-9eb9-5c116e6a017d\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.LookupInterconnection(ctx, \u0026metal.LookupInterconnectionArgs{\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetInterconnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = MetalFunctions.getInterconnection(GetInterconnectionArgs.builder()\n            .connectionId(\"4347e805-eb46-4699-9eb9-5c116e6a017d\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: equinix:metal:getInterconnection\n      arguments:\n        connectionId: 4347e805-eb46-4699-9eb9-5c116e6a017d\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getInterconnection.\n","properties":{"connectionId":{"type":"string","description":"ID of the connection resource.\n"}},"type":"object","required":["connectionId"]},"outputs":{"description":"A collection of values returned by getInterconnection.\n","properties":{"authorizationCode":{"description":"Fabric Authorization Code to configure the Metal-Fabric Integration connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard).\n","type":"string"},"connectionId":{"type":"string"},"contactEmail":{"description":"The preferred email used for communication and notifications about the Equinix Fabric interconnection.\n","type":"string"},"description":{"description":"Description of the connection resource.\n","type":"string"},"facility":{"deprecationMessage":"Use metro instead of facility. For more information, read the migration guide.","description":"(**Deprecated**) Slug of a facility to which the connection belongs. Use metro instead; read the facility to metro migration guide\n","type":"string"},"id":{"description":"Port UUID.\n","type":"string"},"metro":{"description":"Slug of a metro to which the connection belongs.\n","type":"string"},"mode":{"description":"Mode for connections in IBX facilities with the dedicated type - standard or tunnel.\n","type":"string"},"name":{"description":"Port name.\n","type":"string"},"organizationId":{"description":"ID of the organization where the connection is scoped to.\n","type":"string"},"ports":{"description":"List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)\n","items":{"$ref":"#/types/equinix:metal/getInterconnectionPort:getInterconnectionPort"},"type":"array"},"projectId":{"description":"ID of project to which the connection belongs.\n","type":"string"},"redundancy":{"description":"Connection redundancy, reduntant or primary.\n","type":"string"},"serviceTokenType":{"description":"Type of service token, a_side or z_side. One available in shared connection.\n","type":"string"},"serviceTokens":{"description":"List of connection service tokens with attributes\n","items":{"$ref":"#/types/equinix:metal/getInterconnectionServiceToken:getInterconnectionServiceToken"},"type":"array"},"speed":{"description":"Port speed in bits per second.\n","type":"string"},"status":{"description":"Port status.\n","type":"string"},"tags":{"description":"String list of tags.\n","items":{"type":"string"},"type":"array"},"token":{"deprecationMessage":"If your organization already has connection service tokens enabled, use `service_tokens` instead","description":"(Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `service_tokens` instead.\n","type":"string"},"type":{"description":"Token type, `a_side` or `z_side`.\n","type":"string"},"vlans":{"description":"Attached VLANs. Only available in shared connection. One vlan for Primary/Single connection and two vlans for Redundant connection.\n","items":{"type":"integer"},"type":"array"},"vrfs":{"items":{"type":"string"},"type":"array"}},"required":["authorizationCode","connectionId","contactEmail","description","facility","id","metro","mode","name","organizationId","ports","projectId","redundancy","serviceTokenType","serviceTokens","speed","status","tags","token","type","vlans","vrfs"],"type":"object"}},"equinix:metal/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: 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## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\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 as equinix\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 System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var projectId = \"\u003cUUID_of_your_project\u003e\";\n\n    var test = Equinix.Metal.GetIpBlockRanges.Invoke(new()\n    {\n        ProjectId = projectId,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"out\"] = test,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.GetIpBlockRanges(ctx, \u0026metal.GetIpBlockRangesArgs{\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetIpBlockRangesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var projectId = \"\u003cUUID_of_your_project\u003e\";\n\n        final var test = MetalFunctions.getIpBlockRanges(GetIpBlockRangesArgs.builder()\n            .projectId(projectId)\n            .build());\n\n        ctx.export(\"out\", test.applyValue(getIpBlockRangesResult -\u003e getIpBlockRangesResult));\n    }\n}\n```\n```yaml\nvariables:\n  projectId: \u003cUUID_of_your_project\u003e\n  test:\n    fn::invoke:\n      function: equinix:metal:getIpBlockRanges\n      arguments:\n        projectId: ${projectId}\noutputs:\n  out: ${test}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getIpBlockRanges.\n","properties":{"facility":{"type":"string","description":"Facility code filtering the IP blocks. Global IPv4 blocks will be listed anyway. If you omit this and metro, all the block from the project will be listed. Use metro instead; read the facility to metro migration guide\n","deprecationMessage":"Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices"},"metro":{"type":"string","description":"Metro code filtering the IP blocks. Global IPv4 blocks 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":{"deprecationMessage":"Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices","type":"string"},"globalIpv4s":{"description":"list of CIDR expressions for Global IPv4 blocks in the project.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"ipv6s":{"description":"list of CIDR expressions for IPv6 blocks in the project.\n","items":{"type":"string"},"type":"array"},"metro":{"type":"string"},"privateIpv4s":{"description":"list of CIDR expressions for Private IPv4 blocks in the project.\n","items":{"type":"string"},"type":"array"},"projectId":{"type":"string"},"publicIpv4s":{"description":"list of CIDR expressions for Public IPv4 blocks in the project.\n","items":{"type":"string"},"type":"array"}},"required":["globalIpv4s","ipv6s","privateIpv4s","projectId","publicIpv4s","id"],"type":"object"}},"equinix:metal/getMetro:getMetro":{"description":"Provides an Equinix Metal metro datasource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst sv = equinix.metal.getMetro({\n    code: \"sv\",\n});\nexport const id = sv.then(sv =\u003e sv.id);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nsv = equinix.metal.get_metro(code=\"sv\")\npulumi.export(\"id\", sv.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sv = Equinix.Metal.GetMetro.Invoke(new()\n    {\n        Code = \"sv\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"id\"] = sv.Apply(getMetroResult =\u003e getMetroResult.Id),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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\tsv, err := metal.GetMetro(ctx, \u0026metal.GetMetroArgs{\n\t\t\tCode: \"sv\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"id\", sv.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetMetroArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sv = MetalFunctions.getMetro(GetMetroArgs.builder()\n            .code(\"sv\")\n            .build());\n\n        ctx.export(\"id\", sv.applyValue(getMetroResult -\u003e getMetroResult.id()));\n    }\n}\n```\n```yaml\nvariables:\n  sv:\n    fn::invoke:\n      function: equinix:metal:getMetro\n      arguments:\n        code: sv\noutputs:\n  id: ${sv.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n","inputs":{"description":"A collection of arguments for invoking getMetro.\n","properties":{"capacities":{"type":"array","items":{"$ref":"#/types/equinix:metal/getMetroCapacity:getMetroCapacity"},"description":"One or more device plans for which the metro must have capacity.\n"},"code":{"type":"string","description":"The metro code to search for.\n"}},"type":"object","required":["code"]},"outputs":{"description":"A collection of values returned by getMetro.\n","properties":{"capacities":{"items":{"$ref":"#/types/equinix:metal/getMetroCapacity:getMetroCapacity"},"type":"array"},"code":{"type":"string"},"country":{"description":"The country of the metro.\n","type":"string"},"id":{"description":"The ID of the metro.\n","type":"string"},"name":{"description":"The name of the metro.\n","type":"string"}},"required":["code","country","id","name"],"type":"object"}},"equinix:metal/getOperatingSystem:getOperatingSystem":{"description":"Use this data source to get Equinix Metal Operating System image.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst example = equinix.metal.getOperatingSystem({\n    distro: \"ubuntu\",\n    version: \"24.04\",\n    provisionableOn: \"c3.medium.x86\",\n});\nconst server = new equinix.metal.Device(\"server\", {\n    hostname: \"tf.ubuntu\",\n    plan: equinix.metal.Plan.C3MediumX86,\n    metro: \"ny\",\n    operatingSystem: example.then(example =\u003e example.id).apply((x) =\u003e equinix.metal.OperatingSystem[x]),\n    billingCycle: equinix.metal.BillingCycle.Hourly,\n    projectId: local.project_id,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexample = equinix.metal.get_operating_system(distro=\"ubuntu\",\n    version=\"24.04\",\n    provisionable_on=\"c3.medium.x86\")\nserver = equinix.metal.Device(\"server\",\n    hostname=\"tf.ubuntu\",\n    plan=equinix.metal.Plan.C3_MEDIUM_X86,\n    metro=\"ny\",\n    operating_system=example.id.apply(lambda x: equinix.metal.OperatingSystem(x)),\n    billing_cycle=equinix.metal.BillingCycle.HOURLY,\n    project_id=local[\"project_id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Equinix.Metal.GetOperatingSystem.Invoke(new()\n    {\n        Distro = \"ubuntu\",\n        Version = \"24.04\",\n        ProvisionableOn = \"c3.medium.x86\",\n    });\n\n    var server = new Equinix.Metal.Device(\"server\", new()\n    {\n        Hostname = \"tf.ubuntu\",\n        Plan = Equinix.Metal.Plan.C3MediumX86,\n        Metro = \"ny\",\n        OperatingSystem = example.Apply(getOperatingSystemResult =\u003e getOperatingSystemResult.Id).Apply(System.Enum.Parse\u003cEquinix.Metal.OperatingSystem\u003e),\n        BillingCycle = Equinix.Metal.BillingCycle.Hourly,\n        ProjectId = local.Project_id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.GetOperatingSystem(ctx, \u0026metal.GetOperatingSystemArgs{\n\t\t\tDistro:          pulumi.StringRef(\"ubuntu\"),\n\t\t\tVersion:         pulumi.StringRef(\"24.04\"),\n\t\t\tProvisionableOn: pulumi.StringRef(\"c3.medium.x86\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = metal.NewDevice(ctx, \"server\", \u0026metal.DeviceArgs{\n\t\t\tHostname:        pulumi.String(\"tf.ubuntu\"),\n\t\t\tPlan:            pulumi.String(metal.PlanC3MediumX86),\n\t\t\tMetro:           pulumi.String(\"ny\"),\n\t\t\tOperatingSystem: example.Id.ApplyT(func(x *string) metal.OperatingSystem { return metal.OperatingSystem(*x) }).(metal.OperatingSystemOutput),\n\t\t\tBillingCycle:    pulumi.String(metal.BillingCycleHourly),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetOperatingSystemArgs;\nimport com.pulumi.equinix.metal.Device;\nimport com.pulumi.equinix.metal.DeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = MetalFunctions.getOperatingSystem(GetOperatingSystemArgs.builder()\n            .distro(\"ubuntu\")\n            .version(\"24.04\")\n            .provisionableOn(\"c3.medium.x86\")\n            .build());\n\n        var server = new Device(\"server\", DeviceArgs.builder()\n            .hostname(\"tf.ubuntu\")\n            .plan(\"c3.medium.x86\")\n            .metro(\"ny\")\n            .operatingSystem(example.applyValue(getOperatingSystemResult -\u003e getOperatingSystemResult.id()))\n            .billingCycle(\"hourly\")\n            .projectId(local.project_id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  server:\n    type: equinix:metal:Device\n    properties:\n      hostname: tf.ubuntu\n      plan: c3.medium.x86\n      metro: ny\n      operatingSystem: ${example.id}\n      billingCycle: hourly\n      projectId: ${local.project_id}\nvariables:\n  example:\n    fn::invoke:\n      function: equinix:metal:getOperatingSystem\n      arguments:\n        distro: ubuntu\n        version: '24.04'\n        provisionableOn: c3.medium.x86\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","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":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"name":{"type":"string"},"provisionableOn":{"type":"string"},"slug":{"description":"Operating system slug (same as `id`).\n","type":"string"},"version":{"type":"string"}},"required":["slug","id"],"type":"object"}},"equinix:metal/getOrganization:getOrganization":{"description":"Provides an Equinix Metal organization datasource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\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 as equinix\n\ntest = equinix.metal.get_organization(organization_id=local[\"org_id\"])\npulumi.export(\"projectsInTheOrg\", test.project_ids)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = Equinix.Metal.GetOrganization.Invoke(new()\n    {\n        OrganizationId = local.Org_id,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"projectsInTheOrg\"] = test.Apply(getOrganizationResult =\u003e getOrganizationResult.ProjectIds),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.LookupOrganization(ctx, \u0026metal.LookupOrganizationArgs{\n\t\t\tOrganizationId: pulumi.StringRef(local.Org_id),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetOrganizationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var test = MetalFunctions.getOrganization(GetOrganizationArgs.builder()\n            .organizationId(local.org_id())\n            .build());\n\n        ctx.export(\"projectsInTheOrg\", test.applyValue(getOrganizationResult -\u003e getOrganizationResult.projectIds()));\n    }\n}\n```\n```yaml\nvariables:\n  test:\n    fn::invoke:\n      function: equinix:metal:getOrganization\n      arguments:\n        organizationId: ${local.org_id}\noutputs:\n  projectsInTheOrg: ${test.projectIds}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getOrganization.\n","properties":{"description":{"type":"string","description":"Description string.\n"},"name":{"type":"string","description":"The organization name.\n"},"organizationId":{"type":"string","description":"The UUID of the organization resource.\n\nExactly one of `name` or `organization_id` must be given.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getOrganization.\n","properties":{"address":{"$ref":"#/types/equinix:metal/getOrganizationAddress:getOrganizationAddress","description":"Postal address.\n"},"description":{"description":"Description string.\n","type":"string"},"id":{"type":"string"},"logo":{"deprecationMessage":"Empty string is the only valid value. Support for this field has been removed from the API","description":"(Deprecated) Logo URL.\n","type":"string"},"name":{"type":"string"},"organizationId":{"type":"string"},"projectIds":{"description":"UUIDs of project resources which belong to this organization.\n","items":{"type":"string"},"type":"array"},"twitter":{"description":"Twitter handle.\n","type":"string"},"website":{"description":"Website link.\n","type":"string"}},"required":["address","id","logo","name","organizationId","projectIds","twitter","website"],"type":"object"}},"equinix:metal/getPlans:getPlans":{"inputs":{"description":"A collection of arguments for invoking getPlans.\n","properties":{"filters":{"type":"array","items":{"$ref":"#/types/equinix:metal/getPlansFilter:getPlansFilter"},"description":"One or more attribute/values pairs to filter off of\n"},"sorts":{"type":"array","items":{"$ref":"#/types/equinix:metal/getPlansSort:getPlansSort"},"description":"One or more attribute/direction pairs on which to sort results. If multiple sorts are provided, they will be applied in order\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getPlans.\n","properties":{"filters":{"items":{"$ref":"#/types/equinix:metal/getPlansFilter:getPlansFilter"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"plans":{"items":{"$ref":"#/types/equinix:metal/getPlansPlan:getPlansPlan"},"type":"array"},"sorts":{"items":{"$ref":"#/types/equinix:metal/getPlansSort:getPlansSort"},"type":"array"}},"required":["plans","id"],"type":"object"}},"equinix:metal/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## Example Usage\n\nCreate a device and read it's eth0 port to the datasource.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst projectId = \"\u003cUUID_of_your_project\u003e\";\nconst testDevice = new equinix.metal.Device(\"testDevice\", {\n    hostname: \"tfacc-test-device-port\",\n    plan: equinix.metal.Plan.C3MediumX86,\n    metro: \"sv\",\n    operatingSystem: \"ubuntu_24_04\",\n    billingCycle: equinix.metal.BillingCycle.Hourly,\n    projectId: projectId,\n});\nconst testPort = equinix.metal.getPortOutput({\n    deviceId: testDevice.id,\n    name: \"eth0\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nproject_id = \"\u003cUUID_of_your_project\u003e\"\ntest_device = equinix.metal.Device(\"testDevice\",\n    hostname=\"tfacc-test-device-port\",\n    plan=equinix.metal.Plan.C3_MEDIUM_X86,\n    metro=\"sv\",\n    operating_system=\"ubuntu_24_04\",\n    billing_cycle=equinix.metal.BillingCycle.HOURLY,\n    project_id=project_id)\ntest_port = equinix.metal.get_port_output(device_id=test_device.id,\n    name=\"eth0\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var projectId = \"\u003cUUID_of_your_project\u003e\";\n\n    var testDevice = new Equinix.Metal.Device(\"testDevice\", new()\n    {\n        Hostname = \"tfacc-test-device-port\",\n        Plan = Equinix.Metal.Plan.C3MediumX86,\n        Metro = \"sv\",\n        OperatingSystem = \"ubuntu_24_04\",\n        BillingCycle = Equinix.Metal.BillingCycle.Hourly,\n        ProjectId = projectId,\n    });\n\n    var testPort = Equinix.Metal.GetPort.Invoke(new()\n    {\n        DeviceId = testDevice.Id,\n        Name = \"eth0\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewDevice(ctx, \"testDevice\", \u0026metal.DeviceArgs{\n\t\t\tHostname:        pulumi.String(\"tfacc-test-device-port\"),\n\t\t\tPlan:            pulumi.String(metal.PlanC3MediumX86),\n\t\t\tMetro:           pulumi.String(\"sv\"),\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_24_04\"),\n\t\t\tBillingCycle:    pulumi.String(metal.BillingCycleHourly),\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_ = metal.LookupPortOutput(ctx, metal.GetPortOutputArgs{\n\t\t\tDeviceId: testDevice.ID(),\n\t\t\tName:     pulumi.String(\"eth0\"),\n\t\t}, nil)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Device;\nimport com.pulumi.equinix.metal.DeviceArgs;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetPortArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var projectId = \"\u003cUUID_of_your_project\u003e\";\n\n        var testDevice = new Device(\"testDevice\", DeviceArgs.builder()\n            .hostname(\"tfacc-test-device-port\")\n            .plan(\"c3.medium.x86\")\n            .metro(\"sv\")\n            .operatingSystem(\"ubuntu_24_04\")\n            .billingCycle(\"hourly\")\n            .projectId(projectId)\n            .build());\n\n        final var testPort = MetalFunctions.getPort(GetPortArgs.builder()\n            .deviceId(testDevice.id())\n            .name(\"eth0\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testDevice:\n    type: equinix:metal:Device\n    properties:\n      hostname: tfacc-test-device-port\n      plan: c3.medium.x86\n      metro: sv\n      operatingSystem: ubuntu_24_04\n      billingCycle: hourly\n      projectId: ${projectId}\nvariables:\n  projectId: \u003cUUID_of_your_project\u003e\n  testPort:\n    fn::invoke:\n      function: equinix:metal:getPort\n      arguments:\n        deviceId: ${testDevice.id}\n        name: eth0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPort.\n","properties":{"deviceId":{"type":"string","description":"Device UUID where to lookup the port.\n"},"name":{"type":"string","description":"Name of the port to look up, i.e. `bond0`, `eth1`.\n"},"portId":{"type":"string","description":"ID of the port to read, conflicts with `device_id`.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getPort.\n","properties":{"bondId":{"description":"UUID of the bond port.\n","type":"string"},"bondName":{"description":"Name of the bond port.\n","type":"string"},"bonded":{"description":"Flag indicating whether the port is bonded.\n","type":"boolean"},"deviceId":{"type":"string"},"disbondSupported":{"description":"Flag indicating whether the port can be removed from a bond.\n","type":"boolean"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"layer2":{"type":"boolean"},"mac":{"description":"MAC address of the port.\n","type":"string"},"name":{"type":"string"},"nativeVlanId":{"description":"UUID of native VLAN of the port.\n","type":"string"},"networkType":{"description":"One of `layer2-bonded`, `layer2-individual`, `layer3`, `hybrid`, `hybrid-bonded`.\n","type":"string"},"portId":{"type":"string"},"type":{"description":"Type is either `NetworkBondPort` for bond ports or `NetworkPort` for bondable ethernet ports.\n","type":"string"},"vlanIds":{"description":"UUIDs of attached VLANs.\n","items":{"type":"string"},"type":"array"},"vxlanIds":{"description":"VXLAN ids of attached VLANs.\n","items":{"type":"integer"},"type":"array"}},"required":["bondId","bondName","bonded","disbondSupported","layer2","mac","name","nativeVlanId","networkType","type","vlanIds","vxlanIds","id"],"type":"object"}},"equinix:metal/getPrecreatedIpBlock:getPrecreatedIpBlock":{"description":"Use this data source to get CIDR expression for precreated (management) IPv6 and IPv4 blocks in Equinix Metal. You can then use the cidrsubnet TF builtin function to derive subnets.\n\n\u003e For backward compatibility, this data source will also return reserved (elastic) IP blocks.\n\n\u003e Precreated (management) IP blocks for a metro will not be available until first device is created in that metro.\n\n\u003e Public IPv4 blocks auto-assigned (management) to a device cannot be retrieved. If you need that information, consider using the equinix.metal.Device data source instead.\n\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). Use metro instead; read the facility to metro migration guide\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":{"description":"CIDR notation of the looked up block.\n","type":"string"},"facility":{"type":"string"},"gateway":{"type":"string"},"global":{"type":"boolean"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","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"},"vrfId":{"type":"string"}},"required":["address","addressFamily","cidr","cidrNotation","gateway","manageable","management","netmask","network","projectId","public","quantity","type","vrfId","id"],"type":"object"}},"equinix:metal/getProject:getProject":{"description":"Use this datasource to retrieve attributes of the Project API resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\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 as equinix\n\ntf_project1 = equinix.metal.get_project(name=\"Terraform Fun\")\npulumi.export(\"usersOfTerraformFun\", tf_project1.user_ids)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var tfProject1 = Equinix.Metal.GetProject.Invoke(new()\n    {\n        Name = \"Terraform Fun\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"usersOfTerraformFun\"] = tfProject1.Apply(getProjectResult =\u003e getProjectResult.UserIds),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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\ttfProject1, err := metal.LookupProject(ctx, \u0026metal.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"Terraform Fun\"),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var tfProject1 = MetalFunctions.getProject(GetProjectArgs.builder()\n            .name(\"Terraform Fun\")\n            .build());\n\n        ctx.export(\"usersOfTerraformFun\", tfProject1.applyValue(getProjectResult -\u003e getProjectResult.userIds()));\n    }\n}\n```\n```yaml\nvariables:\n  tfProject1:\n    fn::invoke:\n      function: equinix:metal:getProject\n      arguments:\n        name: Terraform Fun\noutputs:\n  usersOfTerraformFun: ${tfProject1.userIds}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","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":{"description":"Whether Backend Transfer is enabled for this project.\n","type":"boolean"},"bgpConfig":{"$ref":"#/types/equinix:metal/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":{"description":"The timestamp for when the project was created.\n","type":"string"},"id":{"type":"string"},"name":{"type":"string"},"organizationId":{"description":"The UUID of this project's parent organization.\n","type":"string"},"paymentMethodId":{"description":"The UUID of payment method for this project.\n","type":"string"},"projectId":{"type":"string"},"updated":{"description":"The timestamp for the last time the project was updated.\n","type":"string"},"userIds":{"description":"List of UUIDs of user accounts which belong to this project.\n","items":{"type":"string"},"type":"array"}},"required":["backendTransfer","bgpConfig","created","id","name","organizationId","paymentMethodId","projectId","updated","userIds"],"type":"object"}},"equinix:metal/getProjectSshKey:getProjectSshKey":{"description":"Use this datasource to retrieve attributes of a Project SSH Key API resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst myKey = equinix.metal.getProjectSshKey({\n    search: \"username@hostname\",\n    projectId: local.project_id,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nmy_key = equinix.metal.get_project_ssh_key(search=\"username@hostname\",\n    project_id=local[\"project_id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myKey = Equinix.Metal.GetProjectSshKey.Invoke(new()\n    {\n        Search = \"username@hostname\",\n        ProjectId = local.Project_id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.LookupProjectSshKey(ctx, \u0026metal.LookupProjectSshKeyArgs{\n\t\t\tSearch:    pulumi.StringRef(\"username@hostname\"),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetProjectSshKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var myKey = MetalFunctions.getProjectSshKey(GetProjectSshKeyArgs.builder()\n            .search(\"username@hostname\")\n            .projectId(local.project_id())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  myKey:\n    fn::invoke:\n      function: equinix:metal:getProjectSshKey\n      arguments:\n        search: username@hostname\n        projectId: ${local.project_id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","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\n\u003e **NOTE:** One of either `search` or `id` must be provided along with `project_id`.\n"},"search":{"type":"string","description":"The name, fingerprint, or public_key of the SSH Key to search for in the Equinix Metal project.\n"}},"type":"object","required":["projectId"]},"outputs":{"description":"A collection of values returned by getProjectSshKey.\n","properties":{"created":{"description":"The timestamp for when the SSH key was created.\n","type":"string"},"fingerprint":{"description":"The fingerprint of the SSH key.\n","type":"string"},"id":{"description":"The unique ID of the key.\n","type":"string"},"name":{"description":"The name of the SSH key.\n","type":"string"},"ownerId":{"description":"The ID of parent project (same as project_id).\n","type":"string"},"projectId":{"description":"The ID of parent project.\n","type":"string"},"publicKey":{"description":"The text of the public key.\n","type":"string"},"search":{"type":"string"},"updated":{"description":"The timestamp for the last time the SSH key was updated.\n","type":"string"}},"required":["created","fingerprint","id","name","ownerId","projectId","publicKey","updated"],"type":"object"}},"equinix:metal/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\n\u003e For backward compatibility, this data source can be also used for precreated (management) IP blocks.\n\nSee the [Virtual Routing and Forwarding documentation](https://docs.equinix.com/metal/networking/vrf/) for product details and API reference material.\n\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\n\u003e **NOTE:** You should pass either `id`, or both `project_id` and `ip_address`.\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":{"deprecationMessage":"Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices","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":{"description":"One of `global_ipv4`, `public_ipv4`, `private_ipv4`, `public_ipv6`,or `vrf`\n","type":"string"},"vrfId":{"type":"integer"}},"required":["address","addressFamily","cidr","cidrNotation","facility","gateway","global","id","manageable","management","metro","netmask","network","projectId","public","quantity","type","vrfId"],"type":"object"}},"equinix:metal/getSpotMarketPrice:getSpotMarketPrice":{"description":"Use this data source to get Equinix Metal Spot Market Price for a plan.\n\n## Example Usage\n\nLookup by metro:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst example = equinix.metal.getSpotMarketPrice({\n    metro: \"sv\",\n    plan: \"c3.small.x86\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexample = equinix.metal.get_spot_market_price(metro=\"sv\",\n    plan=\"c3.small.x86\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Equinix.Metal.GetSpotMarketPrice.Invoke(new()\n    {\n        Metro = \"sv\",\n        Plan = \"c3.small.x86\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.GetSpotMarketPrice(ctx, \u0026metal.GetSpotMarketPriceArgs{\n\t\t\tMetro: pulumi.StringRef(\"sv\"),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetSpotMarketPriceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = MetalFunctions.getSpotMarketPrice(GetSpotMarketPriceArgs.builder()\n            .metro(\"sv\")\n            .plan(\"c3.small.x86\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: equinix:metal:getSpotMarketPrice\n      arguments:\n        metro: sv\n        plan: c3.small.x86\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSpotMarketPrice.\n","properties":{"facility":{"type":"string","description":"Name of the facility. Use metro instead; read the facility to metro migration guide\n","deprecationMessage":"Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices"},"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":{"deprecationMessage":"Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"metro":{"type":"string"},"plan":{"type":"string"},"price":{"description":"Current spot market price for given plan in given facility.\n","type":"number"}},"required":["plan","price","id"],"type":"object"}},"equinix:metal/getVirtualCircuit:getVirtualCircuit":{"description":"Use this data source to retrieve a virtual circuit resource from [Equinix Fabric - software-defined interconnections](https://docs.equinix.com/metal/interconnections/introduction/)\n\nSee the [Virtual Routing and Forwarding documentation](https://docs.equinix.com/metal/networking/vrf/) for product details and API reference material.\n\n","inputs":{"description":"A collection of arguments for invoking getVirtualCircuit.\n","properties":{"customerIpv6":{"type":"string","description":"The Customer IPv6 address which the CSR switch will peer with. Will default to the other usable IP in the IPv6 subnet.\n"},"metalIpv6":{"type":"string","description":"The Metal IPv6 address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the IPv6 subnet.\n"},"subnetIpv6":{"type":"string","description":"A subnet from one of the IPv6 blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /126 or /127.\n\t\t\t * For a /127 block, it will only have two IP addresses, which will be used for the metal*ip and customer*ip.\n\t\t\t * For a /126 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.\n"},"virtualCircuitId":{"type":"string","description":"ID of the virtual circuit to lookup\n"}},"type":"object","required":["virtualCircuitId"]},"outputs":{"description":"A collection of values returned by getVirtualCircuit.\n","properties":{"connectionId":{"description":"UUID of Connection where the VC is scoped to\n","type":"string"},"customerIp":{"description":"The Customer IP address which the CSR switch will peer with. Will default to the other usable IP in the subnet.\n","type":"string"},"customerIpv6":{"description":"The Customer IPv6 address which the CSR switch will peer with. Will default to the other usable IP in the IPv6 subnet.\n","type":"string"},"description":{"description":"Description of the virtual circuit\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"md5":{"description":"The password that can be set for the VRF BGP peer\n","secret":true,"type":"string"},"metalIp":{"description":"The Metal IP address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the subnet.\n","type":"string"},"metalIpv6":{"description":"The Metal IPv6 address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the IPv6 subnet.\n","type":"string"},"name":{"description":"Name of the virtual circuit\n","type":"string"},"nniVlan":{"description":"Nni VLAN parameter, see https://docs.equinix.com/metal/interconnections/introduction/\n","type":"integer"},"nniVnid":{"description":"Nni VLAN ID parameter, see https://docs.equinix.com/metal/interconnections/introduction/\n","type":"integer"},"peerAsn":{"description":"The BGP ASN of the peer. The same ASN may be the used across several VCs, but it cannot be the same as the local_asn of the VRF.\n","type":"integer"},"portId":{"description":"UUID of the Connection Port where the VC is scoped to\n","type":"string"},"projectId":{"description":"ID of the projct to which the virtual circuit belongs\n","type":"string"},"speed":{"description":"Description of the Virtual Circuit speed. This is for information purposes and is computed when the connection type is shared.\n","type":"string"},"status":{"description":"Status of the virtual circuit\n","type":"string"},"subnet":{"description":"A subnet from one of the IP blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /30 or /31.\n\t\t\t * For a /31 block, it will only have two IP addresses, which will be used for the metal*ip and customer*ip.\n\t\t\t * For a /30 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.\n","type":"string"},"subnetIpv6":{"description":"A subnet from one of the IPv6 blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /126 or /127.\n\t\t\t * For a /127 block, it will only have two IP addresses, which will be used for the metal*ip and customer*ip.\n\t\t\t * For a /126 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.\n","type":"string"},"tags":{"description":"Tags attached to the virtual circuit\n","items":{"type":"string"},"type":"array"},"virtualCircuitId":{"description":"ID of the virtual circuit to lookup\n","type":"string"},"vlanId":{"description":"UUID of the associated VLAN\n","type":"string"},"vnid":{"description":"VNID VLAN parameter, see https://docs.equinix.com/metal/interconnections/introduction/\n","type":"integer"},"vrfId":{"description":"UUID of the associated VRF\n","type":"string"}},"required":["connectionId","customerIp","description","md5","metalIp","name","nniVlan","nniVnid","peerAsn","portId","projectId","speed","status","subnet","tags","virtualCircuitId","vlanId","vnid","vrfId","id"],"type":"object"}},"equinix:metal/getVlan:getVlan":{"description":"Provides an Equinix Metal Virtual Network datasource. VLANs data sources can be searched by VLAN UUID, or project UUID and vxlan number.\n\n## Example Usage\n\nFetch a vlan by ID:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst foovlan = new equinix.metal.Vlan(\"foovlan\", {\n    projectId: local.project_id,\n    metro: \"sv\",\n    vxlan: 5,\n});\nconst dsvlan = equinix.metal.getVlanOutput({\n    vlanId: foovlan.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nfoovlan = equinix.metal.Vlan(\"foovlan\",\n    project_id=local[\"project_id\"],\n    metro=\"sv\",\n    vxlan=5)\ndsvlan = equinix.metal.get_vlan_output(vlan_id=foovlan.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foovlan = new Equinix.Metal.Vlan(\"foovlan\", new()\n    {\n        ProjectId = local.Project_id,\n        Metro = \"sv\",\n        Vxlan = 5,\n    });\n\n    var dsvlan = Equinix.Metal.GetVlan.Invoke(new()\n    {\n        VlanId = foovlan.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.NewVlan(ctx, \"foovlan\", \u0026metal.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\t_ = metal.LookupVlanOutput(ctx, metal.GetVlanOutputArgs{\n\t\t\tVlanId: foovlan.ID(),\n\t\t}, nil)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Vlan;\nimport com.pulumi.equinix.metal.VlanArgs;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetVlanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foovlan = new Vlan(\"foovlan\", VlanArgs.builder()\n            .projectId(local.project_id())\n            .metro(\"sv\")\n            .vxlan(5)\n            .build());\n\n        final var dsvlan = MetalFunctions.getVlan(GetVlanArgs.builder()\n            .vlanId(foovlan.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foovlan:\n    type: equinix:metal:Vlan\n    properties:\n      projectId: ${local.project_id}\n      metro: sv\n      vxlan: 5\nvariables:\n  dsvlan:\n    fn::invoke:\n      function: equinix:metal:getVlan\n      arguments:\n        vlanId: ${foovlan.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nFetch a vlan by project ID, vxlan and metro\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\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 as equinix\n\ndsvlan = equinix.metal.get_vlan(project_id=local[\"project_id\"],\n    vxlan=5,\n    metro=\"sv\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dsvlan = Equinix.Metal.GetVlan.Invoke(new()\n    {\n        ProjectId = local.Project_id,\n        Vxlan = 5,\n        Metro = \"sv\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.LookupVlan(ctx, \u0026metal.LookupVlanArgs{\n\t\t\tProjectId: pulumi.StringRef(local.Project_id),\n\t\t\tVxlan:     pulumi.IntRef(5),\n\t\t\tMetro:     pulumi.StringRef(\"sv\"),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetVlanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dsvlan = MetalFunctions.getVlan(GetVlanArgs.builder()\n            .projectId(local.project_id())\n            .vxlan(5)\n            .metro(\"sv\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  dsvlan:\n    fn::invoke:\n      function: equinix:metal:getVlan\n      arguments:\n        projectId: ${local.project_id}\n        vxlan: 5\n        metro: sv\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVlan.\n","properties":{"facility":{"type":"string","description":"Facility where the VLAN is deployed. Deprecated, see https://feedback.equinixmetal.com/changelog/bye-facilities-hello-again-metros\n","deprecationMessage":"Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices"},"metro":{"type":"string","description":"Metro where the VLAN is deployed.\n\n\u003e **NOTE:** You must set either `vlan_id` or a combination of `vxlan`, `project_id`, and, `metro` or `facility`.\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":{"description":"List of device ID to which this VLAN is assigned.\n","items":{"type":"string"},"type":"array"},"description":{"description":"Description text of the VLAN resource.\n","type":"string"},"facility":{"deprecationMessage":"Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices","type":"string"},"id":{"type":"string"},"metro":{"type":"string"},"projectId":{"type":"string"},"vlanId":{"type":"string"},"vxlan":{"type":"integer"}},"required":["assignedDevicesIds","description","facility","id","metro","projectId","vlanId","vxlan"],"type":"object"}},"equinix:metal/getVrf:getVrf":{"description":"Use this data source to retrieve a VRF resource.\n\nSee the [Virtual Routing and Forwarding documentation](https://docs.equinix.com/metal/networking/vrf/) for product details and API reference material.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst exampleVrf = equinix.metal.getVrf({\n    vrfId: \"48630899-9ff2-4ce6-a93f-50ff4ebcdf6e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexample_vrf = equinix.metal.get_vrf(vrf_id=\"48630899-9ff2-4ce6-a93f-50ff4ebcdf6e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleVrf = Equinix.Metal.GetVrf.Invoke(new()\n    {\n        VrfId = \"48630899-9ff2-4ce6-a93f-50ff4ebcdf6e\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/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 := metal.LookupVrf(ctx, \u0026metal.LookupVrfArgs{\n\t\t\tVrfId: \"48630899-9ff2-4ce6-a93f-50ff4ebcdf6e\",\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetVrfArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var exampleVrf = MetalFunctions.getVrf(GetVrfArgs.builder()\n            .vrfId(\"48630899-9ff2-4ce6-a93f-50ff4ebcdf6e\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  exampleVrf:\n    fn::invoke:\n      function: equinix:metal:getVrf\n      arguments:\n        vrfId: 48630899-9ff2-4ce6-a93f-50ff4ebcdf6e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVrf.\n","properties":{"vrfId":{"type":"string","description":"ID of the VRF resource\n"}},"type":"object","required":["vrfId"]},"outputs":{"description":"A collection of values returned by getVrf.\n","properties":{"description":{"description":"Description of the VRF.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"ipRanges":{"description":"All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF.\n","items":{"type":"string"},"type":"array"},"localAsn":{"description":"The 4-byte ASN set on the VRF.\n","type":"integer"},"metro":{"description":"Metro ID or Code where the VRF will be deployed.\n","type":"string"},"name":{"description":"User-supplied name of the VRF, unique to the project\n","type":"string"},"projectId":{"description":"Project ID where the VRF will be deployed.\n","type":"string"},"vrfId":{"type":"string"}},"required":["description","ipRanges","localAsn","metro","name","projectId","vrfId","id"],"type":"object"}},"equinix:networkedge/getAccount:getAccount":{"description":"Use this data source to get number and identifier of Equinix Network Edge billing account in a given metro location.\n\nBilling account reference is required to create Network Edge virtual device in corresponding metro location.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst dc = equinix.networkedge.getAccount({\n    metroCode: \"DC\",\n    status: \"Active\",\n    projectId: \"a86d7112-d740-4758-9c9c-31e66373746b\",\n});\nexport const number = dc.then(dc =\u003e dc.number);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ndc = equinix.networkedge.get_account(metro_code=\"DC\",\n    status=\"Active\",\n    project_id=\"a86d7112-d740-4758-9c9c-31e66373746b\")\npulumi.export(\"number\", dc.number)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dc = Equinix.NetworkEdge.GetAccount.Invoke(new()\n    {\n        MetroCode = \"DC\",\n        Status = \"Active\",\n        ProjectId = \"a86d7112-d740-4758-9c9c-31e66373746b\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"number\"] = dc.Apply(getAccountResult =\u003e getAccountResult.Number),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdc, err := networkedge.GetAccount(ctx, \u0026networkedge.GetAccountArgs{\n\t\t\tMetroCode: \"DC\",\n\t\t\tStatus:    pulumi.StringRef(\"Active\"),\n\t\t\tProjectId: pulumi.StringRef(\"a86d7112-d740-4758-9c9c-31e66373746b\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"number\", dc.Number)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dc = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n            .metroCode(\"DC\")\n            .status(\"Active\")\n            .projectId(\"a86d7112-d740-4758-9c9c-31e66373746b\")\n            .build());\n\n        ctx.export(\"number\", dc.applyValue(getAccountResult -\u003e getAccountResult.number()));\n    }\n}\n```\n```yaml\nvariables:\n  dc:\n    fn::invoke:\n      function: equinix:networkedge:getAccount\n      arguments:\n        metroCode: DC\n        status: Active\n        projectId: a86d7112-d740-4758-9c9c-31e66373746b\noutputs:\n  number: ${dc.number}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getAccount.\n","properties":{"metroCode":{"type":"string","description":"Account location metro code.\n"},"name":{"type":"string","description":"Account name for filtering.\n"},"projectId":{"type":"string","description":"Unique Identifier for the project resource where the account is scoped to.If you leave it out, all the billing accounts under all projects in your organization will be returned and it may return more than one account.\n"},"status":{"type":"string","description":"Account status for filtering. Possible values are: `Active`, `Processing`, `Submitted`, `Staged`.\n"}},"type":"object","required":["metroCode"]},"outputs":{"description":"A collection of values returned by getAccount.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"metroCode":{"type":"string"},"name":{"type":"string"},"number":{"description":"Account unique number.\n","type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"ucmId":{"description":"Account unique identifier.\n","type":"string"}},"required":["metroCode","name","number","projectId","status","ucmId","id"],"type":"object"}},"equinix:networkedge/getDevice:getDevice":{"description":"Use this data source to get Equinix Network Edge device details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst byUuid = equinix.networkedge.getDevice({\n    uuid: \"f0b5c553-cdeb-4bc3-95b8-23db9ccfd5ee\",\n});\nconst byName = equinix.networkedge.getDevice({\n    name: \"Arcus-Gateway-A1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nby_uuid = equinix.networkedge.get_device(uuid=\"f0b5c553-cdeb-4bc3-95b8-23db9ccfd5ee\")\nby_name = equinix.networkedge.get_device(name=\"Arcus-Gateway-A1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byUuid = Equinix.NetworkEdge.GetDevice.Invoke(new()\n    {\n        Uuid = \"f0b5c553-cdeb-4bc3-95b8-23db9ccfd5ee\",\n    });\n\n    var byName = Equinix.NetworkEdge.GetDevice.Invoke(new()\n    {\n        Name = \"Arcus-Gateway-A1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\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 := networkedge.LookupDevice(ctx, \u0026networkedge.LookupDeviceArgs{\n\t\t\tUuid: pulumi.StringRef(\"f0b5c553-cdeb-4bc3-95b8-23db9ccfd5ee\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkedge.LookupDevice(ctx, \u0026networkedge.LookupDeviceArgs{\n\t\t\tName: pulumi.StringRef(\"Arcus-Gateway-A1\"),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var byUuid = NetworkedgeFunctions.getDevice(GetDeviceArgs.builder()\n            .uuid(\"f0b5c553-cdeb-4bc3-95b8-23db9ccfd5ee\")\n            .build());\n\n        final var byName = NetworkedgeFunctions.getDevice(GetDeviceArgs.builder()\n            .name(\"Arcus-Gateway-A1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  byUuid:\n    fn::invoke:\n      function: equinix:networkedge:getDevice\n      arguments:\n        uuid: f0b5c553-cdeb-4bc3-95b8-23db9ccfd5ee\n  byName:\n    fn::invoke:\n      function: equinix:networkedge:getDevice\n      arguments:\n        name: Arcus-Gateway-A1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDevice.\n","properties":{"name":{"type":"string","description":"Name of an existing Equinix Network Edge device\n"},"uuid":{"type":"string","description":"UUID of an existing Equinix Network Edge device\n"},"validStatusList":{"type":"string","description":"Device states to be considered valid when searching for a device by name\n\nNOTE: Exactly one of either `uuid` or `name` must be specified.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getDevice.\n","properties":{"accountNumber":{"type":"string"},"aclTemplateId":{"description":"Unique identifier of applied ACL template\n","type":"string"},"additionalBandwidth":{"type":"integer"},"asn":{"description":"Autonomous system number\n","type":"integer"},"byol":{"type":"boolean"},"clusterDetails":{"items":{"$ref":"#/types/equinix:networkedge/getDeviceClusterDetail:getDeviceClusterDetail"},"type":"array"},"connectivity":{"description":"Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT)\n","type":"string"},"coreCount":{"type":"integer"},"diverseDeviceId":{"description":"diverse device uuid\n","type":"string"},"diverseDeviceName":{"description":"Name of the device with diverse device UUID\n","type":"string"},"hostname":{"type":"string"},"ibx":{"description":"Device location Equinix Business Exchange name\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"interfaceCount":{"type":"integer"},"interfaces":{"description":"List of device interfaces\n* `interface.#.id` - interface identifier\n* `interface.#.name` - interface name\n* `interface.#.status` - interface status (AVAILABLE, RESERVED, ASSIGNED)\n* `interface.#.operational_status` - interface operational status (up or down)\n* `interface.#.mac_address` - interface MAC address\n* `interface.#.ip_address` - interface IP address\n* `interface.#.assigned_type` - interface management type (Equinix Managed or empty)\n* `interface.#.type` - interface type\n","items":{"$ref":"#/types/equinix:networkedge/getDeviceInterface:getDeviceInterface"},"type":"array"},"licenseFile":{"type":"string"},"licenseFileId":{"description":"Unique identifier of applied license file\n","type":"string"},"licenseStatus":{"description":"Device license registration status\n* APPLYING_LICENSE\n* REGISTERED\n* APPLIED\n* WAITING_FOR_CLUSTER_SETUP\n* REGISTRATION_FAILED\n* NA\n","type":"string"},"licenseToken":{"type":"string"},"metroCode":{"type":"string"},"mgmtAclTemplateUuid":{"type":"string"},"name":{"type":"string"},"notifications":{"items":{"type":"string"},"type":"array"},"orderReference":{"type":"string"},"packageCode":{"type":"string"},"projectId":{"type":"string"},"purchaseOrderNumber":{"type":"string"},"redundancyType":{"description":"Device redundancy type applicable for HA devices, either primary or secondary\n","type":"string"},"redundantId":{"description":"Unique identifier for a redundant device applicable for HA devices\n","type":"string"},"region":{"description":"Device location region\n","type":"string"},"secondaryDevices":{"items":{"$ref":"#/types/equinix:networkedge/getDeviceSecondaryDevice:getDeviceSecondaryDevice"},"type":"array"},"selfManaged":{"type":"boolean"},"sshIpAddress":{"description":"IP address of SSH enabled interface on the device\n","type":"string"},"sshIpFqdn":{"description":"FQDN of SSH enabled interface on the device\n","type":"string"},"sshKeys":{"items":{"$ref":"#/types/equinix:networkedge/getDeviceSshKey:getDeviceSshKey"},"type":"array"},"status":{"description":"Device provisioning status\n* INITIALIZING\n* PROVISIONING\n* PROVISIONED (**NOTE: By default data source will only return devices in this state. To include other states see `valid_state_list`**)\n* WAITING_FOR_PRIMARY\n* WAITING_FOR_SECONDARY\n* WAITING_FOR_REPLICA_CLUSTER_NODES\n* CLUSTER_SETUP_IN_PROGRESS\n* FAILED\n* DEPROVISIONING\n* DEPROVISIONED\n* RESOURCE_UPGRADE_IN_PROGRESS\n* RESOURCE_UPGRADE_FAILED\n","type":"string"},"termLength":{"type":"integer"},"throughput":{"type":"integer"},"throughputUnit":{"type":"string"},"tier":{"description":"Throughput Tier (applicable for C8000V, C8000V-SDWAN devices)\n","type":"integer"},"typeCode":{"type":"string"},"uuid":{"description":"Device unique identifier\n","type":"string"},"validStatusList":{"description":"Comma separated list of device states (from see `status` for full list) to be considered valid. Default is 'PROVISIONED'. Case insensitive.\n","type":"string"},"vendorConfiguration":{"additionalProperties":{"type":"string"},"type":"object"},"version":{"type":"string"},"wanInterfaceId":{"type":"string"},"zoneCode":{"description":"Device location zone code\n","type":"string"}},"required":["accountNumber","aclTemplateId","additionalBandwidth","asn","byol","clusterDetails","connectivity","coreCount","diverseDeviceId","diverseDeviceName","hostname","ibx","interfaces","interfaceCount","licenseFile","licenseFileId","licenseStatus","licenseToken","metroCode","mgmtAclTemplateUuid","name","notifications","orderReference","packageCode","projectId","purchaseOrderNumber","redundancyType","redundantId","region","secondaryDevices","selfManaged","sshIpAddress","sshIpFqdn","sshKeys","status","termLength","throughput","throughputUnit","tier","typeCode","uuid","vendorConfiguration","version","wanInterfaceId","zoneCode","id"],"type":"object"}},"equinix:networkedge/getDevicePlatform:getDevicePlatform":{"description":"Use this data source to get Equinix Network Edge device platform configuration details for a given device type. For further details, check supported [Network Edge Vendors and Devices](https://docs.equinix.com/en-us/Content/Interconnection/NE/user-guide/NE-vendors-devices.htm).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst csrLarge = equinix.networkedge.getDevicePlatform({\n    deviceType: \"CSR1000V\",\n    flavor: \"large\",\n    packages: [\"IPBASE\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ncsr_large = equinix.networkedge.get_device_platform(device_type=\"CSR1000V\",\n    flavor=\"large\",\n    packages=[\"IPBASE\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var csrLarge = Equinix.NetworkEdge.GetDevicePlatform.Invoke(new()\n    {\n        DeviceType = \"CSR1000V\",\n        Flavor = \"large\",\n        Packages = new[]\n        {\n            \"IPBASE\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\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 := networkedge.GetDevicePlatform(ctx, \u0026networkedge.GetDevicePlatformArgs{\n\t\t\tDeviceType: \"CSR1000V\",\n\t\t\tFlavor:     pulumi.StringRef(\"large\"),\n\t\t\tPackages: []string{\n\t\t\t\t\"IPBASE\",\n\t\t\t},\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetDevicePlatformArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var csrLarge = NetworkedgeFunctions.getDevicePlatform(GetDevicePlatformArgs.builder()\n            .deviceType(\"CSR1000V\")\n            .flavor(\"large\")\n            .packages(\"IPBASE\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  csrLarge:\n    fn::invoke:\n      function: equinix:networkedge:getDevicePlatform\n      arguments:\n        deviceType: CSR1000V\n        flavor: large\n        packages:\n          - IPBASE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDevicePlatform.\n","properties":{"coreCount":{"type":"integer","description":"Number of CPU cores used to limit platform search results.\n"},"deviceType":{"type":"string","description":"Device type code\n"},"flavor":{"type":"string","description":"Device platform flavor that determines number of CPU cores and memory. Supported values are: `small`, `medium`, `large`, `xlarge`.\n"},"licenseOptions":{"type":"array","items":{"type":"string"},"description":"List of device licensing options to limit platform search result. Supported values are: `BYOL` (for Bring Your Own License), `Sub` (for license subscription).\n"},"managementTypes":{"type":"array","items":{"type":"string"},"description":"List of device management types to limit platform search results. Supported values are: `EQUINIX-CONFIGURED`, `SELF-CONFIGURED`.\n"},"packages":{"type":"array","items":{"type":"string"},"description":"List of software package codes to limit platform search results.\n"}},"type":"object","required":["deviceType"]},"outputs":{"description":"A collection of values returned by getDevicePlatform.\n","properties":{"coreCount":{"type":"integer"},"deviceType":{"type":"string"},"flavor":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"licenseOptions":{"items":{"type":"string"},"type":"array"},"managementTypes":{"items":{"type":"string"},"type":"array"},"memory":{"description":"The amount of memory provided by device platform.\n","type":"integer"},"memoryUnit":{"description":"Unit of memory provider by device platform.\n","type":"string"},"packages":{"items":{"type":"string"},"type":"array"}},"required":["coreCount","deviceType","flavor","licenseOptions","managementTypes","memory","memoryUnit","packages","id"],"type":"object"}},"equinix:networkedge/getDeviceSoftware:getDeviceSoftware":{"description":"Use this data source to get Equinix Network Edge device software details for a given device type. For further details, check supported [Network Edge Vendors and Devices](https://docs.equinix.com/en-us/Content/Interconnection/NE/user-guide/NE-vendors-devices.htm).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst csrLatest1609 = equinix.networkedge.getDeviceSoftware({\n    deviceType: \"CSR1000V\",\n    mostRecent: true,\n    packages: [\"IPBASE\"],\n    versionRegex: \"^16.09.+\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ncsr_latest1609 = equinix.networkedge.get_device_software(device_type=\"CSR1000V\",\n    most_recent=True,\n    packages=[\"IPBASE\"],\n    version_regex=\"^16.09.+\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var csrLatest1609 = Equinix.NetworkEdge.GetDeviceSoftware.Invoke(new()\n    {\n        DeviceType = \"CSR1000V\",\n        MostRecent = true,\n        Packages = new[]\n        {\n            \"IPBASE\",\n        },\n        VersionRegex = \"^16.09.+\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\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 := networkedge.GetDeviceSoftware(ctx, \u0026networkedge.GetDeviceSoftwareArgs{\n\t\t\tDeviceType: \"CSR1000V\",\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t\tPackages: []string{\n\t\t\t\t\"IPBASE\",\n\t\t\t},\n\t\t\tVersionRegex: pulumi.StringRef(\"^16.09.+\"),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetDeviceSoftwareArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var csrLatest1609 = NetworkedgeFunctions.getDeviceSoftware(GetDeviceSoftwareArgs.builder()\n            .deviceType(\"CSR1000V\")\n            .mostRecent(true)\n            .packages(\"IPBASE\")\n            .versionRegex(\"^16.09.+\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  csrLatest1609:\n    fn::invoke:\n      function: equinix:networkedge:getDeviceSoftware\n      arguments:\n        deviceType: CSR1000V\n        mostRecent: true\n        packages:\n          - IPBASE\n        versionRegex: ^16.09.+\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDeviceSoftware.\n","properties":{"deviceType":{"type":"string","description":"Code of a device type.\n"},"mostRecent":{"type":"boolean","description":"Boolean value to indicate that most recent version should be used *(in case when more than one result is returned)*.\n"},"packages":{"type":"array","items":{"type":"string"},"description":"Limits returned versions to those that are supported by given software package codes.\n"},"stable":{"type":"boolean","description":"Boolean value to limit query results to stable versions only.\n"},"versionRegex":{"type":"string","description":"A regex string to apply on returned versions and filter search results.\n"}},"type":"object","required":["deviceType"]},"outputs":{"description":"A collection of values returned by getDeviceSoftware.\n","properties":{"date":{"description":"Version release date.\n","type":"string"},"deviceType":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"imageName":{"description":"Software image name.\n","type":"string"},"mostRecent":{"type":"boolean"},"packages":{"items":{"type":"string"},"type":"array"},"releaseNotesLink":{"description":"Link to version release notes.\n","type":"string"},"stable":{"type":"boolean"},"status":{"description":"Version status.\n","type":"string"},"version":{"description":"Version number.\n","type":"string"},"versionRegex":{"type":"string"}},"required":["date","deviceType","imageName","packages","releaseNotesLink","stable","status","version","id"],"type":"object"}},"equinix:networkedge/getDeviceType:getDeviceType":{"description":"Use this data source to get Equinix Network Edge device type details. For further details, check supported [Network Edge Vendors and Devices](https://docs.equinix.com/en-us/Content/Interconnection/NE/user-guide/NE-vendors-devices.htm).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst ciscoRouter = equinix.networkedge.getDeviceType({\n    category: \"Router\",\n    metroCodes: [\n        \"DC\",\n        \"SV\",\n    ],\n    vendor: \"Cisco\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ncisco_router = equinix.networkedge.get_device_type(category=\"Router\",\n    metro_codes=[\n        \"DC\",\n        \"SV\",\n    ],\n    vendor=\"Cisco\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ciscoRouter = Equinix.NetworkEdge.GetDeviceType.Invoke(new()\n    {\n        Category = \"Router\",\n        MetroCodes = new[]\n        {\n            \"DC\",\n            \"SV\",\n        },\n        Vendor = \"Cisco\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\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 := networkedge.GetDeviceType(ctx, \u0026networkedge.GetDeviceTypeArgs{\n\t\t\tCategory: pulumi.StringRef(\"Router\"),\n\t\t\tMetroCodes: []string{\n\t\t\t\t\"DC\",\n\t\t\t\t\"SV\",\n\t\t\t},\n\t\t\tVendor: pulumi.StringRef(\"Cisco\"),\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetDeviceTypeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var ciscoRouter = NetworkedgeFunctions.getDeviceType(GetDeviceTypeArgs.builder()\n            .category(\"Router\")\n            .metroCodes(            \n                \"DC\",\n                \"SV\")\n            .vendor(\"Cisco\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  ciscoRouter:\n    fn::invoke:\n      function: equinix:networkedge:getDeviceType\n      arguments:\n        category: Router\n        metroCodes:\n          - DC\n          - SV\n        vendor: Cisco\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDeviceType.\n","properties":{"category":{"type":"string","description":"Device type category. One of: `Router`, `Firewall`, `SDWAN`.\n"},"metroCodes":{"type":"array","items":{"type":"string"},"description":"List of metro codes where device type has to be available\n"},"name":{"type":"string","description":"Device type name.\n"},"vendor":{"type":"string","description":"Device type vendor i.e. `Cisco`, `Juniper Networks`, `VERSA Networks`.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getDeviceType.\n","properties":{"category":{"type":"string"},"code":{"description":"Device type short code, unique identifier of a network device type\n","type":"string"},"description":{"description":"Device type textual description\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"metroCodes":{"items":{"type":"string"},"type":"array"},"name":{"type":"string"},"vendor":{"type":"string"}},"required":["category","code","description","metroCodes","name","vendor","id"],"type":"object"}}}}