# Interconnects ## List existing interconnects `network_interconnects.interconnects.list(InterconnectListParams**kwargs) -> InterconnectListResponse` **get** `/accounts/{account_id}/cni/interconnects` List existing interconnects ### Parameters - `account_id: str` Customer account tag - `cursor: Optional[int]` - `limit: Optional[int]` - `site: Optional[str]` If specified, only show interconnects located at the given site - `type: Optional[str]` If specified, only show interconnects of the given type ### Returns - `class InterconnectListResponse: …` - `items: List[Item]` - `class ItemNscInterconnectPhysicalBody: …` - `account: str` - `facility: ItemNscInterconnectPhysicalBodyFacility` - `address: List[str]` - `name: str` - `name: str` - `site: str` A Cloudflare site name. - `slot_id: str` - `speed: str` - `type: str` - `owner: Optional[str]` - `class ItemNscInterconnectGcpPartnerBody: …` - `account: str` - `name: str` - `region: str` - `type: str` - `owner: Optional[str]` - `speed: Optional[Literal["50M", "100M", "200M", 9 more]]` Bandwidth structure as visible through the customer-facing API. - `"50M"` - `"100M"` - `"200M"` - `"300M"` - `"400M"` - `"500M"` - `"1G"` - `"2G"` - `"5G"` - `"10G"` - `"20G"` - `"50G"` - `next: Optional[int]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) interconnects = client.network_interconnects.interconnects.list( account_id="account_id", ) print(interconnects.items) ``` #### Response ```json { "items": [ { "account": "account", "facility": { "address": [ "string" ], "name": "name" }, "name": "name", "site": "site", "slot_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "speed": "speed", "type": "type", "owner": "owner" } ], "next": 0 } ``` ## Get information about an interconnect object `network_interconnects.interconnects.get(stricon, InterconnectGetParams**kwargs) -> InterconnectGetResponse` **get** `/accounts/{account_id}/cni/interconnects/{icon}` Get information about an interconnect object ### Parameters - `account_id: str` Customer account tag - `icon: str` ### Returns - `InterconnectGetResponse` - `class NscInterconnectPhysicalBody: …` - `account: str` - `facility: NscInterconnectPhysicalBodyFacility` - `address: List[str]` - `name: str` - `name: str` - `site: str` A Cloudflare site name. - `slot_id: str` - `speed: str` - `type: str` - `owner: Optional[str]` - `class NscInterconnectGcpPartnerBody: …` - `account: str` - `name: str` - `region: str` - `type: str` - `owner: Optional[str]` - `speed: Optional[Literal["50M", "100M", "200M", 9 more]]` Bandwidth structure as visible through the customer-facing API. - `"50M"` - `"100M"` - `"200M"` - `"300M"` - `"400M"` - `"500M"` - `"1G"` - `"2G"` - `"5G"` - `"10G"` - `"20G"` - `"50G"` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) interconnect = client.network_interconnects.interconnects.get( icon="icon", account_id="account_id", ) print(interconnect) ``` #### Response ```json { "account": "account", "facility": { "address": [ "string" ], "name": "name" }, "name": "name", "site": "site", "slot_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "speed": "speed", "type": "type", "owner": "owner" } ``` ## Create a new interconnect `network_interconnects.interconnects.create(InterconnectCreateParams**kwargs) -> InterconnectCreateResponse` **post** `/accounts/{account_id}/cni/interconnects` Create a new interconnect ### Parameters - `account_id: str` Customer account tag - `account: str` - `slot_id: str` - `type: str` - `speed: Optional[str]` ### Returns - `InterconnectCreateResponse` - `class NscInterconnectPhysicalBody: …` - `account: str` - `facility: NscInterconnectPhysicalBodyFacility` - `address: List[str]` - `name: str` - `name: str` - `site: str` A Cloudflare site name. - `slot_id: str` - `speed: str` - `type: str` - `owner: Optional[str]` - `class NscInterconnectGcpPartnerBody: …` - `account: str` - `name: str` - `region: str` - `type: str` - `owner: Optional[str]` - `speed: Optional[Literal["50M", "100M", "200M", 9 more]]` Bandwidth structure as visible through the customer-facing API. - `"50M"` - `"100M"` - `"200M"` - `"300M"` - `"400M"` - `"500M"` - `"1G"` - `"2G"` - `"5G"` - `"10G"` - `"20G"` - `"50G"` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) interconnect = client.network_interconnects.interconnects.create( account_id="account_id", account="account", slot_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", type="type", ) print(interconnect) ``` #### Response ```json { "account": "account", "facility": { "address": [ "string" ], "name": "name" }, "name": "name", "site": "site", "slot_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "speed": "speed", "type": "type", "owner": "owner" } ``` ## Delete an interconnect object `network_interconnects.interconnects.delete(stricon, InterconnectDeleteParams**kwargs)` **delete** `/accounts/{account_id}/cni/interconnects/{icon}` Delete an interconnect object ### Parameters - `account_id: str` Customer account tag - `icon: str` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) client.network_interconnects.interconnects.delete( icon="icon", account_id="account_id", ) ``` ## Generate the Letter of Authorization (LOA) for a given interconnect `network_interconnects.interconnects.loa(stricon, InterconnectLOAParams**kwargs)` **get** `/accounts/{account_id}/cni/interconnects/{icon}/loa` Generate the Letter of Authorization (LOA) for a given interconnect ### Parameters - `account_id: str` Customer account tag - `icon: str` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) client.network_interconnects.interconnects.loa( icon="icon", account_id="account_id", ) ``` ## Get the current status of an interconnect object `network_interconnects.interconnects.status(stricon, InterconnectStatusParams**kwargs) -> InterconnectStatusResponse` **get** `/accounts/{account_id}/cni/interconnects/{icon}/status` Get the current status of an interconnect object ### Parameters - `account_id: str` Customer account tag - `icon: str` ### Returns - `InterconnectStatusResponse` - `class Pending: …` - `state: Literal["Pending"]` - `"Pending"` - `class Down: …` - `state: Literal["Down"]` - `"Down"` - `reason: Optional[str]` Diagnostic information, if available - `class Unhealthy: …` - `state: Literal["Unhealthy"]` - `"Unhealthy"` - `reason: Optional[str]` Diagnostic information, if available - `class Healthy: …` - `state: Literal["Healthy"]` - `"Healthy"` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.network_interconnects.interconnects.status( icon="icon", account_id="account_id", ) print(response) ``` #### Response ```json { "state": "Pending" } ``` ## Domain Types ### Interconnect List Response - `class InterconnectListResponse: …` - `items: List[Item]` - `class ItemNscInterconnectPhysicalBody: …` - `account: str` - `facility: ItemNscInterconnectPhysicalBodyFacility` - `address: List[str]` - `name: str` - `name: str` - `site: str` A Cloudflare site name. - `slot_id: str` - `speed: str` - `type: str` - `owner: Optional[str]` - `class ItemNscInterconnectGcpPartnerBody: …` - `account: str` - `name: str` - `region: str` - `type: str` - `owner: Optional[str]` - `speed: Optional[Literal["50M", "100M", "200M", 9 more]]` Bandwidth structure as visible through the customer-facing API. - `"50M"` - `"100M"` - `"200M"` - `"300M"` - `"400M"` - `"500M"` - `"1G"` - `"2G"` - `"5G"` - `"10G"` - `"20G"` - `"50G"` - `next: Optional[int]` ### Interconnect Get Response - `InterconnectGetResponse` - `class NscInterconnectPhysicalBody: …` - `account: str` - `facility: NscInterconnectPhysicalBodyFacility` - `address: List[str]` - `name: str` - `name: str` - `site: str` A Cloudflare site name. - `slot_id: str` - `speed: str` - `type: str` - `owner: Optional[str]` - `class NscInterconnectGcpPartnerBody: …` - `account: str` - `name: str` - `region: str` - `type: str` - `owner: Optional[str]` - `speed: Optional[Literal["50M", "100M", "200M", 9 more]]` Bandwidth structure as visible through the customer-facing API. - `"50M"` - `"100M"` - `"200M"` - `"300M"` - `"400M"` - `"500M"` - `"1G"` - `"2G"` - `"5G"` - `"10G"` - `"20G"` - `"50G"` ### Interconnect Create Response - `InterconnectCreateResponse` - `class NscInterconnectPhysicalBody: …` - `account: str` - `facility: NscInterconnectPhysicalBodyFacility` - `address: List[str]` - `name: str` - `name: str` - `site: str` A Cloudflare site name. - `slot_id: str` - `speed: str` - `type: str` - `owner: Optional[str]` - `class NscInterconnectGcpPartnerBody: …` - `account: str` - `name: str` - `region: str` - `type: str` - `owner: Optional[str]` - `speed: Optional[Literal["50M", "100M", "200M", 9 more]]` Bandwidth structure as visible through the customer-facing API. - `"50M"` - `"100M"` - `"200M"` - `"300M"` - `"400M"` - `"500M"` - `"1G"` - `"2G"` - `"5G"` - `"10G"` - `"20G"` - `"50G"` ### Interconnect Status Response - `InterconnectStatusResponse` - `class Pending: …` - `state: Literal["Pending"]` - `"Pending"` - `class Down: …` - `state: Literal["Down"]` - `"Down"` - `reason: Optional[str]` Diagnostic information, if available - `class Unhealthy: …` - `state: Literal["Unhealthy"]` - `"Unhealthy"` - `reason: Optional[str]` Diagnostic information, if available - `class Healthy: …` - `state: Literal["Healthy"]` - `"Healthy"`