# Addressing # Regional Hostnames ## List Regional Hostnames `addressing.regional_hostnames.list(RegionalHostnameListParams**kwargs) -> SyncSinglePage[RegionalHostnameListResponse]` **get** `/zones/{zone_id}/addressing/regional_hostnames` List all Regional Hostnames within a zone. ### Parameters - `zone_id: str` Identifier. ### Returns - `class RegionalHostnameListResponse: …` - `created_on: datetime` When the regional hostname was created - `hostname: str` DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com` - `region_key: str` Identifying key for the region - `routing: Optional[str]` Configure which routing method to use for the regional hostname ### 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 ) page = client.addressing.regional_hostnames.list( zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) page = page.result[0] print(page.created_on) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "created_on": "2014-01-01T05:20:00.12345Z", "hostname": "foo.example.com", "region_key": "ca", "routing": "dns" } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000, "total_pages": 100 } } ``` ## Fetch Regional Hostname `addressing.regional_hostnames.get(strhostname, RegionalHostnameGetParams**kwargs) -> RegionalHostnameGetResponse` **get** `/zones/{zone_id}/addressing/regional_hostnames/{hostname}` Fetch the configuration for a specific Regional Hostname, within a zone. ### Parameters - `zone_id: str` Identifier. - `hostname: str` DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com` ### Returns - `class RegionalHostnameGetResponse: …` - `created_on: datetime` When the regional hostname was created - `hostname: str` DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com` - `region_key: str` Identifying key for the region - `routing: Optional[str]` Configure which routing method to use for the regional hostname ### 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 ) regional_hostname = client.addressing.regional_hostnames.get( hostname="foo.example.com", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(regional_hostname.created_on) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "created_on": "2014-01-01T05:20:00.12345Z", "hostname": "foo.example.com", "region_key": "ca", "routing": "dns" } } ``` ## Create Regional Hostname `addressing.regional_hostnames.create(RegionalHostnameCreateParams**kwargs) -> RegionalHostnameCreateResponse` **post** `/zones/{zone_id}/addressing/regional_hostnames` Create a new Regional Hostname entry. Cloudflare will only use data centers that are physically located within the chosen region to decrypt and service HTTPS traffic. Learn more about [Regional Services](https://developers.cloudflare.com/data-localization/regional-services/get-started/). ### Parameters - `zone_id: str` Identifier. - `hostname: str` DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com` - `region_key: str` Identifying key for the region - `routing: Optional[str]` Configure which routing method to use for the regional hostname ### Returns - `class RegionalHostnameCreateResponse: …` - `created_on: datetime` When the regional hostname was created - `hostname: str` DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com` - `region_key: str` Identifying key for the region - `routing: Optional[str]` Configure which routing method to use for the regional hostname ### 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 ) regional_hostname = client.addressing.regional_hostnames.create( zone_id="023e105f4ecef8ad9ca31a8372d0c353", hostname="foo.example.com", region_key="ca", ) print(regional_hostname.created_on) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "created_on": "2014-01-01T05:20:00.12345Z", "hostname": "foo.example.com", "region_key": "ca", "routing": "dns" } } ``` ## Update Regional Hostname `addressing.regional_hostnames.edit(strhostname, RegionalHostnameEditParams**kwargs) -> RegionalHostnameEditResponse` **patch** `/zones/{zone_id}/addressing/regional_hostnames/{hostname}` Update the configuration for a specific Regional Hostname. Only the region_key of a hostname is mutable. ### Parameters - `zone_id: str` Identifier. - `hostname: str` DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com` - `region_key: str` Identifying key for the region ### Returns - `class RegionalHostnameEditResponse: …` - `created_on: datetime` When the regional hostname was created - `hostname: str` DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com` - `region_key: str` Identifying key for the region - `routing: Optional[str]` Configure which routing method to use for the regional hostname ### 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.addressing.regional_hostnames.edit( hostname="foo.example.com", zone_id="023e105f4ecef8ad9ca31a8372d0c353", region_key="ca", ) print(response.created_on) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "created_on": "2014-01-01T05:20:00.12345Z", "hostname": "foo.example.com", "region_key": "ca", "routing": "dns" } } ``` ## Delete Regional Hostname `addressing.regional_hostnames.delete(strhostname, RegionalHostnameDeleteParams**kwargs) -> RegionalHostnameDeleteResponse` **delete** `/zones/{zone_id}/addressing/regional_hostnames/{hostname}` Delete the region configuration for a specific Regional Hostname. ### Parameters - `zone_id: str` Identifier. - `hostname: str` DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com` ### Returns - `class RegionalHostnameDeleteResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` ### 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 ) regional_hostname = client.addressing.regional_hostnames.delete( hostname="foo.example.com", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(regional_hostname.errors) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true } ``` ## Domain Types ### Regional Hostname List Response - `class RegionalHostnameListResponse: …` - `created_on: datetime` When the regional hostname was created - `hostname: str` DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com` - `region_key: str` Identifying key for the region - `routing: Optional[str]` Configure which routing method to use for the regional hostname ### Regional Hostname Get Response - `class RegionalHostnameGetResponse: …` - `created_on: datetime` When the regional hostname was created - `hostname: str` DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com` - `region_key: str` Identifying key for the region - `routing: Optional[str]` Configure which routing method to use for the regional hostname ### Regional Hostname Create Response - `class RegionalHostnameCreateResponse: …` - `created_on: datetime` When the regional hostname was created - `hostname: str` DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com` - `region_key: str` Identifying key for the region - `routing: Optional[str]` Configure which routing method to use for the regional hostname ### Regional Hostname Edit Response - `class RegionalHostnameEditResponse: …` - `created_on: datetime` When the regional hostname was created - `hostname: str` DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com` - `region_key: str` Identifying key for the region - `routing: Optional[str]` Configure which routing method to use for the regional hostname ### Regional Hostname Delete Response - `class RegionalHostnameDeleteResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` # Regions ## List Regions `addressing.regional_hostnames.regions.list(RegionListParams**kwargs) -> SyncSinglePage[RegionListResponse]` **get** `/accounts/{account_id}/addressing/regional_hostnames/regions` List all Regional Services regions available for use by this account. ### Parameters - `account_id: str` Identifier. ### Returns - `class RegionListResponse: …` - `key: Optional[str]` Identifying key for the region - `label: Optional[str]` Human-readable text label for the region ### 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 ) page = client.addressing.regional_hostnames.regions.list( account_id="023e105f4ecef8ad9ca31a8372d0c353", ) page = page.result[0] print(page.key) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "key": "ca", "label": "Canada" } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000, "total_pages": 100 } } ``` ## Domain Types ### Region List Response - `class RegionListResponse: …` - `key: Optional[str]` Identifying key for the region - `label: Optional[str]` Human-readable text label for the region # Services ## List Services `addressing.services.list(ServiceListParams**kwargs) -> SyncSinglePage[ServiceListResponse]` **get** `/accounts/{account_id}/addressing/services` Bring-Your-Own IP (BYOIP) prefixes onboarded to Cloudflare must be bound to a service running on the Cloudflare network to enable a Cloudflare product on the IP addresses. This endpoint can be used as a reference of available services on the Cloudflare network, and their service IDs. ### Parameters - `account_id: str` Identifier of a Cloudflare account. ### Returns - `class ServiceListResponse: …` - `id: Optional[str]` Identifier of a Service on the Cloudflare network. Available services and their IDs may be found in the **List Services** endpoint. - `name: Optional[str]` Name of a service running on the Cloudflare network ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) page = client.addressing.services.list( account_id="258def64c72dae45f3e4c8516e2111f2", ) page = page.result[0] print(page.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "id": "2db684ee7ca04e159946fd05b99e1bcd", "name": "Magic Transit" } ] } ``` ## Domain Types ### Service List Response - `class ServiceListResponse: …` - `id: Optional[str]` Identifier of a Service on the Cloudflare network. Available services and their IDs may be found in the **List Services** endpoint. - `name: Optional[str]` Name of a service running on the Cloudflare network # Address Maps ## List Address Maps `addressing.address_maps.list(AddressMapListParams**kwargs) -> SyncSinglePage[AddressMap]` **get** `/accounts/{account_id}/addressing/address_maps` List all address maps owned by the account. ### Parameters - `account_id: str` Identifier of a Cloudflare account. ### Returns - `class AddressMap: …` - `id: Optional[str]` Identifier of an Address Map. - `can_delete: Optional[bool]` If set to false, then the Address Map cannot be deleted via API. This is true for Cloudflare-managed maps. - `can_modify_ips: Optional[bool]` If set to false, then the IPs on the Address Map cannot be modified via the API. This is true for Cloudflare-managed maps. - `created_at: Optional[datetime]` - `default_sni: Optional[str]` If you have legacy TLS clients which do not send the TLS server name indicator, then you can specify one default SNI on the map. If Cloudflare receives a TLS handshake from a client without an SNI, it will respond with the default SNI on those IPs. The default SNI can be any valid zone or subdomain owned by the account. - `description: Optional[str]` An optional description field which may be used to describe the types of IPs or zones on the map. - `enabled: Optional[bool]` Whether the Address Map is enabled or not. Cloudflare's DNS will not respond with IP addresses on an Address Map until the map is enabled. - `modified_at: Optional[datetime]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) page = client.addressing.address_maps.list( account_id="258def64c72dae45f3e4c8516e2111f2", ) page = page.result[0] print(page.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "id": "055817b111884e0227e1be16a0be6ee0", "can_delete": true, "can_modify_ips": true, "created_at": "2014-01-01T05:20:00.12345Z", "default_sni": "*.example.com", "description": "My Ecommerce zones", "enabled": true, "modified_at": "2014-01-01T05:20:00.12345Z" } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Address Map Details `addressing.address_maps.get(straddress_map_id, AddressMapGetParams**kwargs) -> AddressMapGetResponse` **get** `/accounts/{account_id}/addressing/address_maps/{address_map_id}` Show a particular address map owned by the account. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `address_map_id: str` Identifier of an Address Map. ### Returns - `class AddressMapGetResponse: …` - `id: Optional[str]` Identifier of an Address Map. - `can_delete: Optional[bool]` If set to false, then the Address Map cannot be deleted via API. This is true for Cloudflare-managed maps. - `can_modify_ips: Optional[bool]` If set to false, then the IPs on the Address Map cannot be modified via the API. This is true for Cloudflare-managed maps. - `created_at: Optional[datetime]` - `default_sni: Optional[str]` If you have legacy TLS clients which do not send the TLS server name indicator, then you can specify one default SNI on the map. If Cloudflare receives a TLS handshake from a client without an SNI, it will respond with the default SNI on those IPs. The default SNI can be any valid zone or subdomain owned by the account. - `description: Optional[str]` An optional description field which may be used to describe the types of IPs or zones on the map. - `enabled: Optional[bool]` Whether the Address Map is enabled or not. Cloudflare's DNS will not respond with IP addresses on an Address Map until the map is enabled. - `ips: Optional[IPs]` The set of IPs on the Address Map. - `created_at: Optional[datetime]` - `ip: Optional[str]` An IPv4 or IPv6 address. - `memberships: Optional[List[Membership]]` Zones and Accounts which will be assigned IPs on this Address Map. A zone membership will take priority over an account membership. - `can_delete: Optional[bool]` Controls whether the membership can be deleted via the API or not. - `created_at: Optional[datetime]` - `identifier: Optional[str]` The identifier for the membership (eg. a zone or account tag). - `kind: Optional[Kind]` The type of the membership. - `"zone"` - `"account"` - `modified_at: Optional[datetime]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) address_map = client.addressing.address_maps.get( address_map_id="055817b111884e0227e1be16a0be6ee0", account_id="258def64c72dae45f3e4c8516e2111f2", ) print(address_map.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "055817b111884e0227e1be16a0be6ee0", "can_delete": true, "can_modify_ips": true, "created_at": "2014-01-01T05:20:00.12345Z", "default_sni": "*.example.com", "description": "My Ecommerce zones", "enabled": true, "ips": [ { "created_at": "2014-01-01T05:20:00.12345Z", "ip": "192.0.2.1" } ], "memberships": [ { "can_delete": true, "created_at": "2014-01-01T05:20:00.12345Z", "identifier": "023e105f4ecef8ad9ca31a8372d0c353", "kind": "zone" } ], "modified_at": "2014-01-01T05:20:00.12345Z" } } ``` ## Create Address Map `addressing.address_maps.create(AddressMapCreateParams**kwargs) -> AddressMapCreateResponse` **post** `/accounts/{account_id}/addressing/address_maps` Create a new address map under the account. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `description: Optional[str]` An optional description field which may be used to describe the types of IPs or zones on the map. - `enabled: Optional[bool]` Whether the Address Map is enabled or not. Cloudflare's DNS will not respond with IP addresses on an Address Map until the map is enabled. - `ips: Optional[SequenceNotStr[str]]` - `memberships: Optional[Iterable[Membership]]` Zones and Accounts which will be assigned IPs on this Address Map. A zone membership will take priority over an account membership. - `identifier: Optional[str]` The identifier for the membership (eg. a zone or account tag). - `kind: Optional[Kind]` The type of the membership. - `"zone"` - `"account"` ### Returns - `class AddressMapCreateResponse: …` - `id: Optional[str]` Identifier of an Address Map. - `can_delete: Optional[bool]` If set to false, then the Address Map cannot be deleted via API. This is true for Cloudflare-managed maps. - `can_modify_ips: Optional[bool]` If set to false, then the IPs on the Address Map cannot be modified via the API. This is true for Cloudflare-managed maps. - `created_at: Optional[datetime]` - `default_sni: Optional[str]` If you have legacy TLS clients which do not send the TLS server name indicator, then you can specify one default SNI on the map. If Cloudflare receives a TLS handshake from a client without an SNI, it will respond with the default SNI on those IPs. The default SNI can be any valid zone or subdomain owned by the account. - `description: Optional[str]` An optional description field which may be used to describe the types of IPs or zones on the map. - `enabled: Optional[bool]` Whether the Address Map is enabled or not. Cloudflare's DNS will not respond with IP addresses on an Address Map until the map is enabled. - `ips: Optional[IPs]` The set of IPs on the Address Map. - `created_at: Optional[datetime]` - `ip: Optional[str]` An IPv4 or IPv6 address. - `memberships: Optional[List[Membership]]` Zones and Accounts which will be assigned IPs on this Address Map. A zone membership will take priority over an account membership. - `can_delete: Optional[bool]` Controls whether the membership can be deleted via the API or not. - `created_at: Optional[datetime]` - `identifier: Optional[str]` The identifier for the membership (eg. a zone or account tag). - `kind: Optional[Kind]` The type of the membership. - `"zone"` - `"account"` - `modified_at: Optional[datetime]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) address_map = client.addressing.address_maps.create( account_id="258def64c72dae45f3e4c8516e2111f2", ) print(address_map.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "055817b111884e0227e1be16a0be6ee0", "can_delete": true, "can_modify_ips": true, "created_at": "2014-01-01T05:20:00.12345Z", "default_sni": "*.example.com", "description": "My Ecommerce zones", "enabled": true, "ips": [ { "created_at": "2014-01-01T05:20:00.12345Z", "ip": "192.0.2.1" } ], "memberships": [ { "can_delete": true, "created_at": "2014-01-01T05:20:00.12345Z", "identifier": "023e105f4ecef8ad9ca31a8372d0c353", "kind": "zone" } ], "modified_at": "2014-01-01T05:20:00.12345Z" } } ``` ## Update Address Map `addressing.address_maps.edit(straddress_map_id, AddressMapEditParams**kwargs) -> AddressMap` **patch** `/accounts/{account_id}/addressing/address_maps/{address_map_id}` Modify properties of an address map owned by the account. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `address_map_id: str` Identifier of an Address Map. - `default_sni: Optional[str]` If you have legacy TLS clients which do not send the TLS server name indicator, then you can specify one default SNI on the map. If Cloudflare receives a TLS handshake from a client without an SNI, it will respond with the default SNI on those IPs. The default SNI can be any valid zone or subdomain owned by the account. - `description: Optional[str]` An optional description field which may be used to describe the types of IPs or zones on the map. - `enabled: Optional[bool]` Whether the Address Map is enabled or not. Cloudflare's DNS will not respond with IP addresses on an Address Map until the map is enabled. ### Returns - `class AddressMap: …` - `id: Optional[str]` Identifier of an Address Map. - `can_delete: Optional[bool]` If set to false, then the Address Map cannot be deleted via API. This is true for Cloudflare-managed maps. - `can_modify_ips: Optional[bool]` If set to false, then the IPs on the Address Map cannot be modified via the API. This is true for Cloudflare-managed maps. - `created_at: Optional[datetime]` - `default_sni: Optional[str]` If you have legacy TLS clients which do not send the TLS server name indicator, then you can specify one default SNI on the map. If Cloudflare receives a TLS handshake from a client without an SNI, it will respond with the default SNI on those IPs. The default SNI can be any valid zone or subdomain owned by the account. - `description: Optional[str]` An optional description field which may be used to describe the types of IPs or zones on the map. - `enabled: Optional[bool]` Whether the Address Map is enabled or not. Cloudflare's DNS will not respond with IP addresses on an Address Map until the map is enabled. - `modified_at: Optional[datetime]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) address_map = client.addressing.address_maps.edit( address_map_id="055817b111884e0227e1be16a0be6ee0", account_id="258def64c72dae45f3e4c8516e2111f2", ) print(address_map.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "055817b111884e0227e1be16a0be6ee0", "can_delete": true, "can_modify_ips": true, "created_at": "2014-01-01T05:20:00.12345Z", "default_sni": "*.example.com", "description": "My Ecommerce zones", "enabled": true, "modified_at": "2014-01-01T05:20:00.12345Z" } } ``` ## Delete Address Map `addressing.address_maps.delete(straddress_map_id, AddressMapDeleteParams**kwargs) -> AddressMapDeleteResponse` **delete** `/accounts/{account_id}/addressing/address_maps/{address_map_id}` Delete a particular address map owned by the account. An Address Map must be disabled before it can be deleted. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `address_map_id: str` Identifier of an Address Map. ### Returns - `class AddressMapDeleteResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` - `result_info: Optional[ResultInfo]` - `count: Optional[float]` Total number of results for the requested service. - `page: Optional[float]` Current page within paginated list of results. - `per_page: Optional[float]` Number of results per page of results. - `total_count: Optional[float]` Total results available without any search parameters. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) address_map = client.addressing.address_maps.delete( address_map_id="055817b111884e0227e1be16a0be6ee0", account_id="258def64c72dae45f3e4c8516e2111f2", ) print(address_map.errors) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Domain Types ### Address Map - `class AddressMap: …` - `id: Optional[str]` Identifier of an Address Map. - `can_delete: Optional[bool]` If set to false, then the Address Map cannot be deleted via API. This is true for Cloudflare-managed maps. - `can_modify_ips: Optional[bool]` If set to false, then the IPs on the Address Map cannot be modified via the API. This is true for Cloudflare-managed maps. - `created_at: Optional[datetime]` - `default_sni: Optional[str]` If you have legacy TLS clients which do not send the TLS server name indicator, then you can specify one default SNI on the map. If Cloudflare receives a TLS handshake from a client without an SNI, it will respond with the default SNI on those IPs. The default SNI can be any valid zone or subdomain owned by the account. - `description: Optional[str]` An optional description field which may be used to describe the types of IPs or zones on the map. - `enabled: Optional[bool]` Whether the Address Map is enabled or not. Cloudflare's DNS will not respond with IP addresses on an Address Map until the map is enabled. - `modified_at: Optional[datetime]` ### Kind - `Literal["zone", "account"]` The type of the membership. - `"zone"` - `"account"` ### Address Map Get Response - `class AddressMapGetResponse: …` - `id: Optional[str]` Identifier of an Address Map. - `can_delete: Optional[bool]` If set to false, then the Address Map cannot be deleted via API. This is true for Cloudflare-managed maps. - `can_modify_ips: Optional[bool]` If set to false, then the IPs on the Address Map cannot be modified via the API. This is true for Cloudflare-managed maps. - `created_at: Optional[datetime]` - `default_sni: Optional[str]` If you have legacy TLS clients which do not send the TLS server name indicator, then you can specify one default SNI on the map. If Cloudflare receives a TLS handshake from a client without an SNI, it will respond with the default SNI on those IPs. The default SNI can be any valid zone or subdomain owned by the account. - `description: Optional[str]` An optional description field which may be used to describe the types of IPs or zones on the map. - `enabled: Optional[bool]` Whether the Address Map is enabled or not. Cloudflare's DNS will not respond with IP addresses on an Address Map until the map is enabled. - `ips: Optional[IPs]` The set of IPs on the Address Map. - `created_at: Optional[datetime]` - `ip: Optional[str]` An IPv4 or IPv6 address. - `memberships: Optional[List[Membership]]` Zones and Accounts which will be assigned IPs on this Address Map. A zone membership will take priority over an account membership. - `can_delete: Optional[bool]` Controls whether the membership can be deleted via the API or not. - `created_at: Optional[datetime]` - `identifier: Optional[str]` The identifier for the membership (eg. a zone or account tag). - `kind: Optional[Kind]` The type of the membership. - `"zone"` - `"account"` - `modified_at: Optional[datetime]` ### Address Map Create Response - `class AddressMapCreateResponse: …` - `id: Optional[str]` Identifier of an Address Map. - `can_delete: Optional[bool]` If set to false, then the Address Map cannot be deleted via API. This is true for Cloudflare-managed maps. - `can_modify_ips: Optional[bool]` If set to false, then the IPs on the Address Map cannot be modified via the API. This is true for Cloudflare-managed maps. - `created_at: Optional[datetime]` - `default_sni: Optional[str]` If you have legacy TLS clients which do not send the TLS server name indicator, then you can specify one default SNI on the map. If Cloudflare receives a TLS handshake from a client without an SNI, it will respond with the default SNI on those IPs. The default SNI can be any valid zone or subdomain owned by the account. - `description: Optional[str]` An optional description field which may be used to describe the types of IPs or zones on the map. - `enabled: Optional[bool]` Whether the Address Map is enabled or not. Cloudflare's DNS will not respond with IP addresses on an Address Map until the map is enabled. - `ips: Optional[IPs]` The set of IPs on the Address Map. - `created_at: Optional[datetime]` - `ip: Optional[str]` An IPv4 or IPv6 address. - `memberships: Optional[List[Membership]]` Zones and Accounts which will be assigned IPs on this Address Map. A zone membership will take priority over an account membership. - `can_delete: Optional[bool]` Controls whether the membership can be deleted via the API or not. - `created_at: Optional[datetime]` - `identifier: Optional[str]` The identifier for the membership (eg. a zone or account tag). - `kind: Optional[Kind]` The type of the membership. - `"zone"` - `"account"` - `modified_at: Optional[datetime]` ### Address Map Delete Response - `class AddressMapDeleteResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` - `result_info: Optional[ResultInfo]` - `count: Optional[float]` Total number of results for the requested service. - `page: Optional[float]` Current page within paginated list of results. - `per_page: Optional[float]` Number of results per page of results. - `total_count: Optional[float]` Total results available without any search parameters. # Accounts ## Add an account membership to an Address Map `addressing.address_maps.accounts.update(straddress_map_id, AccountUpdateParams**kwargs) -> AccountUpdateResponse` **put** `/accounts/{account_id}/addressing/address_maps/{address_map_id}/accounts/{account_id}` Add an account as a member of a particular address map. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `address_map_id: str` Identifier of an Address Map. - `body: object` ### Returns - `class AccountUpdateResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` - `result_info: Optional[ResultInfo]` - `count: Optional[float]` Total number of results for the requested service. - `page: Optional[float]` Current page within paginated list of results. - `per_page: Optional[float]` Number of results per page of results. - `total_count: Optional[float]` Total results available without any search parameters. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) account = client.addressing.address_maps.accounts.update( address_map_id="055817b111884e0227e1be16a0be6ee0", account_id="258def64c72dae45f3e4c8516e2111f2", body={}, ) print(account.errors) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Remove an account membership from an Address Map `addressing.address_maps.accounts.delete(straddress_map_id, AccountDeleteParams**kwargs) -> AccountDeleteResponse` **delete** `/accounts/{account_id}/addressing/address_maps/{address_map_id}/accounts/{account_id}` Remove an account as a member of a particular address map. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `address_map_id: str` Identifier of an Address Map. ### Returns - `class AccountDeleteResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` - `result_info: Optional[ResultInfo]` - `count: Optional[float]` Total number of results for the requested service. - `page: Optional[float]` Current page within paginated list of results. - `per_page: Optional[float]` Number of results per page of results. - `total_count: Optional[float]` Total results available without any search parameters. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) account = client.addressing.address_maps.accounts.delete( address_map_id="055817b111884e0227e1be16a0be6ee0", account_id="258def64c72dae45f3e4c8516e2111f2", ) print(account.errors) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Domain Types ### Account Update Response - `class AccountUpdateResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` - `result_info: Optional[ResultInfo]` - `count: Optional[float]` Total number of results for the requested service. - `page: Optional[float]` Current page within paginated list of results. - `per_page: Optional[float]` Number of results per page of results. - `total_count: Optional[float]` Total results available without any search parameters. ### Account Delete Response - `class AccountDeleteResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` - `result_info: Optional[ResultInfo]` - `count: Optional[float]` Total number of results for the requested service. - `page: Optional[float]` Current page within paginated list of results. - `per_page: Optional[float]` Number of results per page of results. - `total_count: Optional[float]` Total results available without any search parameters. # IPs ## Add an IP to an Address Map `addressing.address_maps.ips.update(strip_address, IPUpdateParams**kwargs) -> IPUpdateResponse` **put** `/accounts/{account_id}/addressing/address_maps/{address_map_id}/ips/{ip_address}` Add an IP from a prefix owned by the account to a particular address map. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `address_map_id: str` Identifier of an Address Map. - `ip_address: str` An IPv4 or IPv6 address. - `body: object` ### Returns - `class IPUpdateResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` - `result_info: Optional[ResultInfo]` - `count: Optional[float]` Total number of results for the requested service. - `page: Optional[float]` Current page within paginated list of results. - `per_page: Optional[float]` Number of results per page of results. - `total_count: Optional[float]` Total results available without any search parameters. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) ip = client.addressing.address_maps.ips.update( ip_address="192.0.2.1", account_id="258def64c72dae45f3e4c8516e2111f2", address_map_id="055817b111884e0227e1be16a0be6ee0", body={}, ) print(ip.errors) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Remove an IP from an Address Map `addressing.address_maps.ips.delete(strip_address, IPDeleteParams**kwargs) -> IPDeleteResponse` **delete** `/accounts/{account_id}/addressing/address_maps/{address_map_id}/ips/{ip_address}` Remove an IP from a particular address map. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `address_map_id: str` Identifier of an Address Map. - `ip_address: str` An IPv4 or IPv6 address. ### Returns - `class IPDeleteResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` - `result_info: Optional[ResultInfo]` - `count: Optional[float]` Total number of results for the requested service. - `page: Optional[float]` Current page within paginated list of results. - `per_page: Optional[float]` Number of results per page of results. - `total_count: Optional[float]` Total results available without any search parameters. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) ip = client.addressing.address_maps.ips.delete( ip_address="192.0.2.1", account_id="258def64c72dae45f3e4c8516e2111f2", address_map_id="055817b111884e0227e1be16a0be6ee0", ) print(ip.errors) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Domain Types ### IP Update Response - `class IPUpdateResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` - `result_info: Optional[ResultInfo]` - `count: Optional[float]` Total number of results for the requested service. - `page: Optional[float]` Current page within paginated list of results. - `per_page: Optional[float]` Number of results per page of results. - `total_count: Optional[float]` Total results available without any search parameters. ### IP Delete Response - `class IPDeleteResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` - `result_info: Optional[ResultInfo]` - `count: Optional[float]` Total number of results for the requested service. - `page: Optional[float]` Current page within paginated list of results. - `per_page: Optional[float]` Number of results per page of results. - `total_count: Optional[float]` Total results available without any search parameters. # Zones ## Add a zone membership to an Address Map `addressing.address_maps.zones.update(straddress_map_id, ZoneUpdateParams**kwargs) -> ZoneUpdateResponse` **put** `/accounts/{account_id}/addressing/address_maps/{address_map_id}/zones/{zone_id}` Add a zone as a member of a particular address map. ### Parameters - `zone_id: str` Identifier of a zone. - `account_id: str` Identifier of a Cloudflare account. - `address_map_id: str` Identifier of an Address Map. - `body: object` ### Returns - `class ZoneUpdateResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` - `result_info: Optional[ResultInfo]` - `count: Optional[float]` Total number of results for the requested service. - `page: Optional[float]` Current page within paginated list of results. - `per_page: Optional[float]` Number of results per page of results. - `total_count: Optional[float]` Total results available without any search parameters. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) zone = client.addressing.address_maps.zones.update( address_map_id="055817b111884e0227e1be16a0be6ee0", zone_id="8ac8489932db6327334c9b6d58544cfe", account_id="258def64c72dae45f3e4c8516e2111f2", body={}, ) print(zone.errors) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Remove a zone membership from an Address Map `addressing.address_maps.zones.delete(straddress_map_id, ZoneDeleteParams**kwargs) -> ZoneDeleteResponse` **delete** `/accounts/{account_id}/addressing/address_maps/{address_map_id}/zones/{zone_id}` Remove a zone as a member of a particular address map. ### Parameters - `zone_id: str` Identifier of a zone. - `account_id: str` Identifier of a Cloudflare account. - `address_map_id: str` Identifier of an Address Map. ### Returns - `class ZoneDeleteResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` - `result_info: Optional[ResultInfo]` - `count: Optional[float]` Total number of results for the requested service. - `page: Optional[float]` Current page within paginated list of results. - `per_page: Optional[float]` Number of results per page of results. - `total_count: Optional[float]` Total results available without any search parameters. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) zone = client.addressing.address_maps.zones.delete( address_map_id="055817b111884e0227e1be16a0be6ee0", zone_id="8ac8489932db6327334c9b6d58544cfe", account_id="258def64c72dae45f3e4c8516e2111f2", ) print(zone.errors) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Domain Types ### Zone Update Response - `class ZoneUpdateResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` - `result_info: Optional[ResultInfo]` - `count: Optional[float]` Total number of results for the requested service. - `page: Optional[float]` Current page within paginated list of results. - `per_page: Optional[float]` Number of results per page of results. - `total_count: Optional[float]` Total results available without any search parameters. ### Zone Delete Response - `class ZoneDeleteResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` - `result_info: Optional[ResultInfo]` - `count: Optional[float]` Total number of results for the requested service. - `page: Optional[float]` Current page within paginated list of results. - `per_page: Optional[float]` Number of results per page of results. - `total_count: Optional[float]` Total results available without any search parameters. # LOA Documents ## Download LOA Document `addressing.loa_documents.get(strloa_document_id, LOADocumentGetParams**kwargs) -> BinaryResponseContent` **get** `/accounts/{account_id}/addressing/loa_documents/{loa_document_id}/download` Download specified LOA document under the account. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `loa_document_id: str` Identifier for the uploaded LOA document. ### Returns - `BinaryResponseContent` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) loa_document = client.addressing.loa_documents.get( loa_document_id="d933b1530bc56c9953cf8ce166da8004", account_id="258def64c72dae45f3e4c8516e2111f2", ) print(loa_document) content = loa_document.read() print(content) ``` ## Upload LOA Document `addressing.loa_documents.create(LOADocumentCreateParams**kwargs) -> LOADocumentCreateResponse` **post** `/accounts/{account_id}/addressing/loa_documents` Submit LOA document (pdf format) under the account. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `loa_document: str` LOA document to upload. ### Returns - `class LOADocumentCreateResponse: …` - `id: Optional[str]` Identifier for the uploaded LOA document. - `account_id: Optional[str]` Identifier of a Cloudflare account. - `auto_generated: Optional[bool]` Whether the LOA has been auto-generated for the prefix owner by Cloudflare. - `created: Optional[datetime]` - `filename: Optional[str]` Name of LOA document. Max file size 10MB, and supported filetype is pdf. - `size_bytes: Optional[int]` File size of the uploaded LOA document. - `verified: Optional[bool]` Whether the LOA has been verified by Cloudflare staff. - `verified_at: Optional[datetime]` Timestamp of the moment the LOA was marked as validated. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) loa_document = client.addressing.loa_documents.create( account_id="258def64c72dae45f3e4c8516e2111f2", loa_document="@document.pdf", ) print(loa_document.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "d933b1530bc56c9953cf8ce166da8004", "account_id": "258def64c72dae45f3e4c8516e2111f2", "auto_generated": true, "created": "2014-01-01T05:20:00.12345Z", "filename": "site_loa_doc.pdf", "size_bytes": 444, "verified": true, "verified_at": "2019-12-27T18:11:19.117Z" } } ``` ## Domain Types ### LOA Document Create Response - `class LOADocumentCreateResponse: …` - `id: Optional[str]` Identifier for the uploaded LOA document. - `account_id: Optional[str]` Identifier of a Cloudflare account. - `auto_generated: Optional[bool]` Whether the LOA has been auto-generated for the prefix owner by Cloudflare. - `created: Optional[datetime]` - `filename: Optional[str]` Name of LOA document. Max file size 10MB, and supported filetype is pdf. - `size_bytes: Optional[int]` File size of the uploaded LOA document. - `verified: Optional[bool]` Whether the LOA has been verified by Cloudflare staff. - `verified_at: Optional[datetime]` Timestamp of the moment the LOA was marked as validated. # Prefixes ## List Prefixes `addressing.prefixes.list(PrefixListParams**kwargs) -> SyncSinglePage[Prefix]` **get** `/accounts/{account_id}/addressing/prefixes` List all prefixes owned by the account. ### Parameters - `account_id: str` Identifier of a Cloudflare account. ### Returns - `class Prefix: …` - `id: Optional[str]` Identifier of an IP Prefix. - `account_id: Optional[str]` Identifier of a Cloudflare account. - `advertised: Optional[bool]` Prefix advertisement status to the Internet. This field is only not 'null' if on demand is enabled. - `advertised_modified_at: Optional[datetime]` Last time the advertisement status was changed. This field is only not 'null' if on demand is enabled. - `approved: Optional[str]` Approval state of the prefix (P = pending, V = active). - `asn: Optional[int]` Autonomous System Number (ASN) the prefix will be advertised under. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `created_at: Optional[datetime]` - `delegate_loa_creation: Optional[bool]` Whether Cloudflare is allowed to generate the LOA document on behalf of the prefix owner. - `description: Optional[str]` Description of the prefix. - `irr_validation_state: Optional[str]` State of one kind of validation for an IP prefix. - `loa_document_id: Optional[str]` Identifier for the uploaded LOA document. - `modified_at: Optional[datetime]` - `on_demand_enabled: Optional[bool]` Whether advertisement of the prefix to the Internet may be dynamically enabled or disabled. - `on_demand_locked: Optional[bool]` Whether advertisement status of the prefix is locked, meaning it cannot be changed. - `ownership_validation_state: Optional[str]` State of one kind of validation for an IP prefix. - `ownership_validation_token: Optional[str]` Token provided to demonstrate ownership of the prefix. - `rpki_validation_state: Optional[str]` State of one kind of validation for an IP prefix. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) page = client.addressing.prefixes.list( account_id="258def64c72dae45f3e4c8516e2111f2", ) page = page.result[0] print(page.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "id": "2af39739cc4e3b5910c918468bb89828", "account_id": "258def64c72dae45f3e4c8516e2111f2", "advertised": true, "advertised_modified_at": "2014-01-01T05:20:00.12345Z", "approved": "P", "asn": 13335, "cidr": "192.0.2.0/24", "created_at": "2014-01-01T05:20:00.12345Z", "delegate_loa_creation": true, "description": "Internal test prefix", "irr_validation_state": "pending", "loa_document_id": "d933b1530bc56c9953cf8ce166da8004", "modified_at": "2014-01-01T05:20:00.12345Z", "on_demand_enabled": true, "on_demand_locked": false, "ownership_validation_state": "pending", "ownership_validation_token": "1234a5b6-1234-1abc-12a3-1234a5b6789c", "rpki_validation_state": "pending" } ] } ``` ## Prefix Details `addressing.prefixes.get(strprefix_id, PrefixGetParams**kwargs) -> Prefix` **get** `/accounts/{account_id}/addressing/prefixes/{prefix_id}` List a particular prefix owned by the account. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `prefix_id: str` Identifier of an IP Prefix. ### Returns - `class Prefix: …` - `id: Optional[str]` Identifier of an IP Prefix. - `account_id: Optional[str]` Identifier of a Cloudflare account. - `advertised: Optional[bool]` Prefix advertisement status to the Internet. This field is only not 'null' if on demand is enabled. - `advertised_modified_at: Optional[datetime]` Last time the advertisement status was changed. This field is only not 'null' if on demand is enabled. - `approved: Optional[str]` Approval state of the prefix (P = pending, V = active). - `asn: Optional[int]` Autonomous System Number (ASN) the prefix will be advertised under. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `created_at: Optional[datetime]` - `delegate_loa_creation: Optional[bool]` Whether Cloudflare is allowed to generate the LOA document on behalf of the prefix owner. - `description: Optional[str]` Description of the prefix. - `irr_validation_state: Optional[str]` State of one kind of validation for an IP prefix. - `loa_document_id: Optional[str]` Identifier for the uploaded LOA document. - `modified_at: Optional[datetime]` - `on_demand_enabled: Optional[bool]` Whether advertisement of the prefix to the Internet may be dynamically enabled or disabled. - `on_demand_locked: Optional[bool]` Whether advertisement status of the prefix is locked, meaning it cannot be changed. - `ownership_validation_state: Optional[str]` State of one kind of validation for an IP prefix. - `ownership_validation_token: Optional[str]` Token provided to demonstrate ownership of the prefix. - `rpki_validation_state: Optional[str]` State of one kind of validation for an IP prefix. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) prefix = client.addressing.prefixes.get( prefix_id="2af39739cc4e3b5910c918468bb89828", account_id="258def64c72dae45f3e4c8516e2111f2", ) print(prefix.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "2af39739cc4e3b5910c918468bb89828", "account_id": "258def64c72dae45f3e4c8516e2111f2", "advertised": true, "advertised_modified_at": "2014-01-01T05:20:00.12345Z", "approved": "P", "asn": 13335, "cidr": "192.0.2.0/24", "created_at": "2014-01-01T05:20:00.12345Z", "delegate_loa_creation": true, "description": "Internal test prefix", "irr_validation_state": "pending", "loa_document_id": "d933b1530bc56c9953cf8ce166da8004", "modified_at": "2014-01-01T05:20:00.12345Z", "on_demand_enabled": true, "on_demand_locked": false, "ownership_validation_state": "pending", "ownership_validation_token": "1234a5b6-1234-1abc-12a3-1234a5b6789c", "rpki_validation_state": "pending" } } ``` ## Add Prefix `addressing.prefixes.create(PrefixCreateParams**kwargs) -> Prefix` **post** `/accounts/{account_id}/addressing/prefixes` Add a new prefix under the account. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `asn: int` Autonomous System Number (ASN) the prefix will be advertised under. - `cidr: str` IP Prefix in Classless Inter-Domain Routing format. - `delegate_loa_creation: Optional[bool]` Whether Cloudflare is allowed to generate the LOA document on behalf of the prefix owner. - `description: Optional[str]` Description of the prefix. - `loa_document_id: Optional[str]` Identifier for the uploaded LOA document. ### Returns - `class Prefix: …` - `id: Optional[str]` Identifier of an IP Prefix. - `account_id: Optional[str]` Identifier of a Cloudflare account. - `advertised: Optional[bool]` Prefix advertisement status to the Internet. This field is only not 'null' if on demand is enabled. - `advertised_modified_at: Optional[datetime]` Last time the advertisement status was changed. This field is only not 'null' if on demand is enabled. - `approved: Optional[str]` Approval state of the prefix (P = pending, V = active). - `asn: Optional[int]` Autonomous System Number (ASN) the prefix will be advertised under. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `created_at: Optional[datetime]` - `delegate_loa_creation: Optional[bool]` Whether Cloudflare is allowed to generate the LOA document on behalf of the prefix owner. - `description: Optional[str]` Description of the prefix. - `irr_validation_state: Optional[str]` State of one kind of validation for an IP prefix. - `loa_document_id: Optional[str]` Identifier for the uploaded LOA document. - `modified_at: Optional[datetime]` - `on_demand_enabled: Optional[bool]` Whether advertisement of the prefix to the Internet may be dynamically enabled or disabled. - `on_demand_locked: Optional[bool]` Whether advertisement status of the prefix is locked, meaning it cannot be changed. - `ownership_validation_state: Optional[str]` State of one kind of validation for an IP prefix. - `ownership_validation_token: Optional[str]` Token provided to demonstrate ownership of the prefix. - `rpki_validation_state: Optional[str]` State of one kind of validation for an IP prefix. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) prefix = client.addressing.prefixes.create( account_id="258def64c72dae45f3e4c8516e2111f2", asn=13335, cidr="192.0.2.0/24", ) print(prefix.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "2af39739cc4e3b5910c918468bb89828", "account_id": "258def64c72dae45f3e4c8516e2111f2", "advertised": true, "advertised_modified_at": "2014-01-01T05:20:00.12345Z", "approved": "P", "asn": 13335, "cidr": "192.0.2.0/24", "created_at": "2014-01-01T05:20:00.12345Z", "delegate_loa_creation": true, "description": "Internal test prefix", "irr_validation_state": "pending", "loa_document_id": "d933b1530bc56c9953cf8ce166da8004", "modified_at": "2014-01-01T05:20:00.12345Z", "on_demand_enabled": true, "on_demand_locked": false, "ownership_validation_state": "pending", "ownership_validation_token": "1234a5b6-1234-1abc-12a3-1234a5b6789c", "rpki_validation_state": "pending" } } ``` ## Update Prefix Description `addressing.prefixes.edit(strprefix_id, PrefixEditParams**kwargs) -> Prefix` **patch** `/accounts/{account_id}/addressing/prefixes/{prefix_id}` Modify the description for a prefix owned by the account. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `prefix_id: str` Identifier of an IP Prefix. - `description: str` Description of the prefix. ### Returns - `class Prefix: …` - `id: Optional[str]` Identifier of an IP Prefix. - `account_id: Optional[str]` Identifier of a Cloudflare account. - `advertised: Optional[bool]` Prefix advertisement status to the Internet. This field is only not 'null' if on demand is enabled. - `advertised_modified_at: Optional[datetime]` Last time the advertisement status was changed. This field is only not 'null' if on demand is enabled. - `approved: Optional[str]` Approval state of the prefix (P = pending, V = active). - `asn: Optional[int]` Autonomous System Number (ASN) the prefix will be advertised under. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `created_at: Optional[datetime]` - `delegate_loa_creation: Optional[bool]` Whether Cloudflare is allowed to generate the LOA document on behalf of the prefix owner. - `description: Optional[str]` Description of the prefix. - `irr_validation_state: Optional[str]` State of one kind of validation for an IP prefix. - `loa_document_id: Optional[str]` Identifier for the uploaded LOA document. - `modified_at: Optional[datetime]` - `on_demand_enabled: Optional[bool]` Whether advertisement of the prefix to the Internet may be dynamically enabled or disabled. - `on_demand_locked: Optional[bool]` Whether advertisement status of the prefix is locked, meaning it cannot be changed. - `ownership_validation_state: Optional[str]` State of one kind of validation for an IP prefix. - `ownership_validation_token: Optional[str]` Token provided to demonstrate ownership of the prefix. - `rpki_validation_state: Optional[str]` State of one kind of validation for an IP prefix. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) prefix = client.addressing.prefixes.edit( prefix_id="2af39739cc4e3b5910c918468bb89828", account_id="258def64c72dae45f3e4c8516e2111f2", description="Internal test prefix", ) print(prefix.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "2af39739cc4e3b5910c918468bb89828", "account_id": "258def64c72dae45f3e4c8516e2111f2", "advertised": true, "advertised_modified_at": "2014-01-01T05:20:00.12345Z", "approved": "P", "asn": 13335, "cidr": "192.0.2.0/24", "created_at": "2014-01-01T05:20:00.12345Z", "delegate_loa_creation": true, "description": "Internal test prefix", "irr_validation_state": "pending", "loa_document_id": "d933b1530bc56c9953cf8ce166da8004", "modified_at": "2014-01-01T05:20:00.12345Z", "on_demand_enabled": true, "on_demand_locked": false, "ownership_validation_state": "pending", "ownership_validation_token": "1234a5b6-1234-1abc-12a3-1234a5b6789c", "rpki_validation_state": "pending" } } ``` ## Delete Prefix `addressing.prefixes.delete(strprefix_id, PrefixDeleteParams**kwargs) -> PrefixDeleteResponse` **delete** `/accounts/{account_id}/addressing/prefixes/{prefix_id}` Delete an unapproved prefix owned by the account. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `prefix_id: str` Identifier of an IP Prefix. ### Returns - `class PrefixDeleteResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) prefix = client.addressing.prefixes.delete( prefix_id="2af39739cc4e3b5910c918468bb89828", account_id="258def64c72dae45f3e4c8516e2111f2", ) print(prefix.errors) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true } ``` ## Domain Types ### Prefix - `class Prefix: …` - `id: Optional[str]` Identifier of an IP Prefix. - `account_id: Optional[str]` Identifier of a Cloudflare account. - `advertised: Optional[bool]` Prefix advertisement status to the Internet. This field is only not 'null' if on demand is enabled. - `advertised_modified_at: Optional[datetime]` Last time the advertisement status was changed. This field is only not 'null' if on demand is enabled. - `approved: Optional[str]` Approval state of the prefix (P = pending, V = active). - `asn: Optional[int]` Autonomous System Number (ASN) the prefix will be advertised under. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `created_at: Optional[datetime]` - `delegate_loa_creation: Optional[bool]` Whether Cloudflare is allowed to generate the LOA document on behalf of the prefix owner. - `description: Optional[str]` Description of the prefix. - `irr_validation_state: Optional[str]` State of one kind of validation for an IP prefix. - `loa_document_id: Optional[str]` Identifier for the uploaded LOA document. - `modified_at: Optional[datetime]` - `on_demand_enabled: Optional[bool]` Whether advertisement of the prefix to the Internet may be dynamically enabled or disabled. - `on_demand_locked: Optional[bool]` Whether advertisement status of the prefix is locked, meaning it cannot be changed. - `ownership_validation_state: Optional[str]` State of one kind of validation for an IP prefix. - `ownership_validation_token: Optional[str]` Token provided to demonstrate ownership of the prefix. - `rpki_validation_state: Optional[str]` State of one kind of validation for an IP prefix. ### Prefix Delete Response - `class PrefixDeleteResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` # Service Bindings ## List Service Bindings `addressing.prefixes.service_bindings.list(strprefix_id, ServiceBindingListParams**kwargs) -> SyncSinglePage[ServiceBinding]` **get** `/accounts/{account_id}/addressing/prefixes/{prefix_id}/bindings` List the Cloudflare services this prefix is currently bound to. Traffic sent to an address within an IP prefix will be routed to the Cloudflare service of the most-specific Service Binding matching the address. **Example:** binding `192.0.2.0/24` to Cloudflare Magic Transit and `192.0.2.1/32` to the Cloudflare CDN would route traffic for `192.0.2.1` to the CDN, and traffic for all other IPs in the prefix to Cloudflare Magic Transit. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `prefix_id: str` Identifier of an IP Prefix. ### Returns - `class ServiceBinding: …` - `id: Optional[str]` Identifier of a Service Binding. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `provisioning: Optional[Provisioning]` Status of a Service Binding's deployment to the Cloudflare network - `state: Optional[Literal["provisioning", "active"]]` When a binding has been deployed to a majority of Cloudflare datacenters, the binding will become active and can be used with its associated service. - `"provisioning"` - `"active"` - `service_id: Optional[str]` Identifier of a Service on the Cloudflare network. Available services and their IDs may be found in the **List Services** endpoint. - `service_name: Optional[str]` Name of a service running on the Cloudflare network ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) page = client.addressing.prefixes.service_bindings.list( prefix_id="2af39739cc4e3b5910c918468bb89828", account_id="258def64c72dae45f3e4c8516e2111f2", ) page = page.result[0] print(page.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "id": "0429b49b6a5155297b78e75a44b09e14", "cidr": "192.0.2.0/24", "provisioning": { "state": "provisioning" }, "service_id": "2db684ee7ca04e159946fd05b99e1bcd", "service_name": "Magic Transit" } ] } ``` ## Get Service Binding `addressing.prefixes.service_bindings.get(strbinding_id, ServiceBindingGetParams**kwargs) -> ServiceBinding` **get** `/accounts/{account_id}/addressing/prefixes/{prefix_id}/bindings/{binding_id}` Fetch a single Service Binding ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `prefix_id: str` Identifier of an IP Prefix. - `binding_id: str` Identifier of a Service Binding. ### Returns - `class ServiceBinding: …` - `id: Optional[str]` Identifier of a Service Binding. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `provisioning: Optional[Provisioning]` Status of a Service Binding's deployment to the Cloudflare network - `state: Optional[Literal["provisioning", "active"]]` When a binding has been deployed to a majority of Cloudflare datacenters, the binding will become active and can be used with its associated service. - `"provisioning"` - `"active"` - `service_id: Optional[str]` Identifier of a Service on the Cloudflare network. Available services and their IDs may be found in the **List Services** endpoint. - `service_name: Optional[str]` Name of a service running on the Cloudflare network ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) service_binding = client.addressing.prefixes.service_bindings.get( binding_id="0429b49b6a5155297b78e75a44b09e14", account_id="258def64c72dae45f3e4c8516e2111f2", prefix_id="2af39739cc4e3b5910c918468bb89828", ) print(service_binding.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "0429b49b6a5155297b78e75a44b09e14", "cidr": "192.0.2.0/24", "provisioning": { "state": "provisioning" }, "service_id": "2db684ee7ca04e159946fd05b99e1bcd", "service_name": "Magic Transit" } } ``` ## Create Service Binding `addressing.prefixes.service_bindings.create(strprefix_id, ServiceBindingCreateParams**kwargs) -> ServiceBinding` **post** `/accounts/{account_id}/addressing/prefixes/{prefix_id}/bindings` Creates a new Service Binding, routing traffic to IPs within the given CIDR to a service running on Cloudflare's network. **NOTE:** The first Service Binding created for an IP Prefix must exactly match the IP Prefix's CIDR. Subsequent Service Bindings may be created with a more-specific CIDR. Refer to the [Service Bindings Documentation](https://developers.cloudflare.com/byoip/service-bindings/) for compatibility details. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `prefix_id: str` Identifier of an IP Prefix. - `cidr: str` IP Prefix in Classless Inter-Domain Routing format. - `service_id: str` Identifier of a Service on the Cloudflare network. Available services and their IDs may be found in the **List Services** endpoint. ### Returns - `class ServiceBinding: …` - `id: Optional[str]` Identifier of a Service Binding. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `provisioning: Optional[Provisioning]` Status of a Service Binding's deployment to the Cloudflare network - `state: Optional[Literal["provisioning", "active"]]` When a binding has been deployed to a majority of Cloudflare datacenters, the binding will become active and can be used with its associated service. - `"provisioning"` - `"active"` - `service_id: Optional[str]` Identifier of a Service on the Cloudflare network. Available services and their IDs may be found in the **List Services** endpoint. - `service_name: Optional[str]` Name of a service running on the Cloudflare network ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) service_binding = client.addressing.prefixes.service_bindings.create( prefix_id="2af39739cc4e3b5910c918468bb89828", account_id="258def64c72dae45f3e4c8516e2111f2", cidr="192.0.2.0/24", service_id="2db684ee7ca04e159946fd05b99e1bcd", ) print(service_binding.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "0429b49b6a5155297b78e75a44b09e14", "cidr": "192.0.2.0/24", "provisioning": { "state": "provisioning" }, "service_id": "2db684ee7ca04e159946fd05b99e1bcd", "service_name": "Magic Transit" } } ``` ## Delete Service Binding `addressing.prefixes.service_bindings.delete(strbinding_id, ServiceBindingDeleteParams**kwargs) -> ServiceBindingDeleteResponse` **delete** `/accounts/{account_id}/addressing/prefixes/{prefix_id}/bindings/{binding_id}` Delete a Service Binding ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `prefix_id: str` Identifier of an IP Prefix. - `binding_id: str` Identifier of a Service Binding. ### Returns - `class ServiceBindingDeleteResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) service_binding = client.addressing.prefixes.service_bindings.delete( binding_id="0429b49b6a5155297b78e75a44b09e14", account_id="258def64c72dae45f3e4c8516e2111f2", prefix_id="2af39739cc4e3b5910c918468bb89828", ) print(service_binding.errors) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true } ``` ## Domain Types ### Service Binding - `class ServiceBinding: …` - `id: Optional[str]` Identifier of a Service Binding. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `provisioning: Optional[Provisioning]` Status of a Service Binding's deployment to the Cloudflare network - `state: Optional[Literal["provisioning", "active"]]` When a binding has been deployed to a majority of Cloudflare datacenters, the binding will become active and can be used with its associated service. - `"provisioning"` - `"active"` - `service_id: Optional[str]` Identifier of a Service on the Cloudflare network. Available services and their IDs may be found in the **List Services** endpoint. - `service_name: Optional[str]` Name of a service running on the Cloudflare network ### Service Binding Delete Response - `class ServiceBindingDeleteResponse: …` - `errors: List[Error]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[ErrorSource]` - `pointer: Optional[str]` - `messages: List[Message]` - `code: int` - `message: str` - `documentation_url: Optional[str]` - `source: Optional[MessageSource]` - `pointer: Optional[str]` - `success: Literal[true]` Whether the API call was successful. - `true` # BGP Prefixes ## List BGP Prefixes `addressing.prefixes.bgp_prefixes.list(strprefix_id, BGPPrefixListParams**kwargs) -> SyncSinglePage[BGPPrefix]` **get** `/accounts/{account_id}/addressing/prefixes/{prefix_id}/bgp/prefixes` List all BGP Prefixes within the specified IP Prefix. BGP Prefixes are used to control which specific subnets are advertised to the Internet. It is possible to advertise subnets more specific than an IP Prefix by creating more specific BGP Prefixes. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `prefix_id: str` Identifier of an IP Prefix. ### Returns - `class BGPPrefix: …` - `id: Optional[str]` Identifier of BGP Prefix. - `asn: Optional[int]` Autonomous System Number (ASN) the prefix will be advertised under. - `asn_prepend_count: Optional[int]` Number of times to prepend the Cloudflare ASN to the BGP AS-Path attribute - `auto_advertise_withdraw: Optional[bool]` Determines if Cloudflare advertises a BYOIP BGP prefix even when there is no matching BGP prefix in the Magic routing table. When true, Cloudflare will automatically withdraw the BGP prefix when there are no matching BGP routes, and will resume advertising when there is at least one matching BGP route. - `bgp_signal_opts: Optional[BGPSignalOpts]` - `enabled: Optional[bool]` Whether control of advertisement of the prefix to the Internet is enabled to be performed via BGP signal - `modified_at: Optional[datetime]` Last time BGP signaling control was toggled. This field is null if BGP signaling has never been enabled. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `created_at: Optional[datetime]` - `modified_at: Optional[datetime]` - `on_demand: Optional[OnDemand]` - `advertised: Optional[bool]` Prefix advertisement status to the Internet. This field is only not 'null' if on demand is enabled. - `advertised_modified_at: Optional[datetime]` Last time the advertisement status was changed. This field is only not 'null' if on demand is enabled. - `on_demand_enabled: Optional[bool]` Whether advertisement of the prefix to the Internet may be dynamically enabled or disabled. - `on_demand_locked: Optional[bool]` Whether the advertisement status of the prefix is locked, meaning it cannot be changed. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) page = client.addressing.prefixes.bgp_prefixes.list( prefix_id="2af39739cc4e3b5910c918468bb89828", account_id="258def64c72dae45f3e4c8516e2111f2", ) page = page.result[0] print(page.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "id": "7009ba364c7a5760798ceb430e603b74", "asn": 13335, "asn_prepend_count": 2, "auto_advertise_withdraw": true, "bgp_signal_opts": { "enabled": false, "modified_at": "2014-01-01T05:20:00.12345Z" }, "cidr": "192.0.2.0/24", "created_at": "2014-01-01T05:20:00.12345Z", "modified_at": "2014-01-01T05:20:00.12345Z", "on_demand": { "advertised": true, "advertised_modified_at": "2014-01-01T05:20:00.12345Z", "on_demand_enabled": true, "on_demand_locked": false } } ] } ``` ## Fetch BGP Prefix `addressing.prefixes.bgp_prefixes.get(strbgp_prefix_id, BGPPrefixGetParams**kwargs) -> BGPPrefix` **get** `/accounts/{account_id}/addressing/prefixes/{prefix_id}/bgp/prefixes/{bgp_prefix_id}` Retrieve a single BGP Prefix according to its identifier ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `prefix_id: str` Identifier of an IP Prefix. - `bgp_prefix_id: str` Identifier of BGP Prefix. ### Returns - `class BGPPrefix: …` - `id: Optional[str]` Identifier of BGP Prefix. - `asn: Optional[int]` Autonomous System Number (ASN) the prefix will be advertised under. - `asn_prepend_count: Optional[int]` Number of times to prepend the Cloudflare ASN to the BGP AS-Path attribute - `auto_advertise_withdraw: Optional[bool]` Determines if Cloudflare advertises a BYOIP BGP prefix even when there is no matching BGP prefix in the Magic routing table. When true, Cloudflare will automatically withdraw the BGP prefix when there are no matching BGP routes, and will resume advertising when there is at least one matching BGP route. - `bgp_signal_opts: Optional[BGPSignalOpts]` - `enabled: Optional[bool]` Whether control of advertisement of the prefix to the Internet is enabled to be performed via BGP signal - `modified_at: Optional[datetime]` Last time BGP signaling control was toggled. This field is null if BGP signaling has never been enabled. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `created_at: Optional[datetime]` - `modified_at: Optional[datetime]` - `on_demand: Optional[OnDemand]` - `advertised: Optional[bool]` Prefix advertisement status to the Internet. This field is only not 'null' if on demand is enabled. - `advertised_modified_at: Optional[datetime]` Last time the advertisement status was changed. This field is only not 'null' if on demand is enabled. - `on_demand_enabled: Optional[bool]` Whether advertisement of the prefix to the Internet may be dynamically enabled or disabled. - `on_demand_locked: Optional[bool]` Whether the advertisement status of the prefix is locked, meaning it cannot be changed. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) bgp_prefix = client.addressing.prefixes.bgp_prefixes.get( bgp_prefix_id="7009ba364c7a5760798ceb430e603b74", account_id="258def64c72dae45f3e4c8516e2111f2", prefix_id="2af39739cc4e3b5910c918468bb89828", ) print(bgp_prefix.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "7009ba364c7a5760798ceb430e603b74", "asn": 13335, "asn_prepend_count": 2, "auto_advertise_withdraw": true, "bgp_signal_opts": { "enabled": false, "modified_at": "2014-01-01T05:20:00.12345Z" }, "cidr": "192.0.2.0/24", "created_at": "2014-01-01T05:20:00.12345Z", "modified_at": "2014-01-01T05:20:00.12345Z", "on_demand": { "advertised": true, "advertised_modified_at": "2014-01-01T05:20:00.12345Z", "on_demand_enabled": true, "on_demand_locked": false } } } ``` ## Create BGP Prefix `addressing.prefixes.bgp_prefixes.create(strprefix_id, BGPPrefixCreateParams**kwargs) -> BGPPrefix` **post** `/accounts/{account_id}/addressing/prefixes/{prefix_id}/bgp/prefixes` Create a BGP prefix, controlling the BGP advertisement status of a specific subnet. When created, BGP prefixes are initially withdrawn, and can be advertised with the Update BGP Prefix API. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `prefix_id: str` Identifier of an IP Prefix. - `cidr: str` IP Prefix in Classless Inter-Domain Routing format. ### Returns - `class BGPPrefix: …` - `id: Optional[str]` Identifier of BGP Prefix. - `asn: Optional[int]` Autonomous System Number (ASN) the prefix will be advertised under. - `asn_prepend_count: Optional[int]` Number of times to prepend the Cloudflare ASN to the BGP AS-Path attribute - `auto_advertise_withdraw: Optional[bool]` Determines if Cloudflare advertises a BYOIP BGP prefix even when there is no matching BGP prefix in the Magic routing table. When true, Cloudflare will automatically withdraw the BGP prefix when there are no matching BGP routes, and will resume advertising when there is at least one matching BGP route. - `bgp_signal_opts: Optional[BGPSignalOpts]` - `enabled: Optional[bool]` Whether control of advertisement of the prefix to the Internet is enabled to be performed via BGP signal - `modified_at: Optional[datetime]` Last time BGP signaling control was toggled. This field is null if BGP signaling has never been enabled. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `created_at: Optional[datetime]` - `modified_at: Optional[datetime]` - `on_demand: Optional[OnDemand]` - `advertised: Optional[bool]` Prefix advertisement status to the Internet. This field is only not 'null' if on demand is enabled. - `advertised_modified_at: Optional[datetime]` Last time the advertisement status was changed. This field is only not 'null' if on demand is enabled. - `on_demand_enabled: Optional[bool]` Whether advertisement of the prefix to the Internet may be dynamically enabled or disabled. - `on_demand_locked: Optional[bool]` Whether the advertisement status of the prefix is locked, meaning it cannot be changed. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) bgp_prefix = client.addressing.prefixes.bgp_prefixes.create( prefix_id="2af39739cc4e3b5910c918468bb89828", account_id="258def64c72dae45f3e4c8516e2111f2", cidr="192.0.2.0/24", ) print(bgp_prefix.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "7009ba364c7a5760798ceb430e603b74", "asn": 13335, "asn_prepend_count": 2, "auto_advertise_withdraw": true, "bgp_signal_opts": { "enabled": false, "modified_at": "2014-01-01T05:20:00.12345Z" }, "cidr": "192.0.2.0/24", "created_at": "2014-01-01T05:20:00.12345Z", "modified_at": "2014-01-01T05:20:00.12345Z", "on_demand": { "advertised": true, "advertised_modified_at": "2014-01-01T05:20:00.12345Z", "on_demand_enabled": true, "on_demand_locked": false } } } ``` ## Update BGP Prefix `addressing.prefixes.bgp_prefixes.edit(strbgp_prefix_id, BGPPrefixEditParams**kwargs) -> BGPPrefix` **patch** `/accounts/{account_id}/addressing/prefixes/{prefix_id}/bgp/prefixes/{bgp_prefix_id}` Update the properties of a BGP Prefix, such as the on demand advertisement status (advertised or withdrawn). ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `prefix_id: str` Identifier of an IP Prefix. - `bgp_prefix_id: str` Identifier of BGP Prefix. - `asn_prepend_count: Optional[int]` Number of times to prepend the Cloudflare ASN to the BGP AS-Path attribute - `auto_advertise_withdraw: Optional[bool]` Determines if Cloudflare advertises a BYOIP BGP prefix even when there is no matching BGP prefix in the Magic routing table. When true, Cloudflare will automatically withdraw the BGP prefix when there are no matching BGP routes, and will resume advertising when there is at least one matching BGP route. - `on_demand: Optional[OnDemand]` - `advertised: Optional[bool]` ### Returns - `class BGPPrefix: …` - `id: Optional[str]` Identifier of BGP Prefix. - `asn: Optional[int]` Autonomous System Number (ASN) the prefix will be advertised under. - `asn_prepend_count: Optional[int]` Number of times to prepend the Cloudflare ASN to the BGP AS-Path attribute - `auto_advertise_withdraw: Optional[bool]` Determines if Cloudflare advertises a BYOIP BGP prefix even when there is no matching BGP prefix in the Magic routing table. When true, Cloudflare will automatically withdraw the BGP prefix when there are no matching BGP routes, and will resume advertising when there is at least one matching BGP route. - `bgp_signal_opts: Optional[BGPSignalOpts]` - `enabled: Optional[bool]` Whether control of advertisement of the prefix to the Internet is enabled to be performed via BGP signal - `modified_at: Optional[datetime]` Last time BGP signaling control was toggled. This field is null if BGP signaling has never been enabled. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `created_at: Optional[datetime]` - `modified_at: Optional[datetime]` - `on_demand: Optional[OnDemand]` - `advertised: Optional[bool]` Prefix advertisement status to the Internet. This field is only not 'null' if on demand is enabled. - `advertised_modified_at: Optional[datetime]` Last time the advertisement status was changed. This field is only not 'null' if on demand is enabled. - `on_demand_enabled: Optional[bool]` Whether advertisement of the prefix to the Internet may be dynamically enabled or disabled. - `on_demand_locked: Optional[bool]` Whether the advertisement status of the prefix is locked, meaning it cannot be changed. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) bgp_prefix = client.addressing.prefixes.bgp_prefixes.edit( bgp_prefix_id="7009ba364c7a5760798ceb430e603b74", account_id="258def64c72dae45f3e4c8516e2111f2", prefix_id="2af39739cc4e3b5910c918468bb89828", ) print(bgp_prefix.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "7009ba364c7a5760798ceb430e603b74", "asn": 13335, "asn_prepend_count": 2, "auto_advertise_withdraw": true, "bgp_signal_opts": { "enabled": false, "modified_at": "2014-01-01T05:20:00.12345Z" }, "cidr": "192.0.2.0/24", "created_at": "2014-01-01T05:20:00.12345Z", "modified_at": "2014-01-01T05:20:00.12345Z", "on_demand": { "advertised": true, "advertised_modified_at": "2014-01-01T05:20:00.12345Z", "on_demand_enabled": true, "on_demand_locked": false } } } ``` ## Domain Types ### BGP Prefix - `class BGPPrefix: …` - `id: Optional[str]` Identifier of BGP Prefix. - `asn: Optional[int]` Autonomous System Number (ASN) the prefix will be advertised under. - `asn_prepend_count: Optional[int]` Number of times to prepend the Cloudflare ASN to the BGP AS-Path attribute - `auto_advertise_withdraw: Optional[bool]` Determines if Cloudflare advertises a BYOIP BGP prefix even when there is no matching BGP prefix in the Magic routing table. When true, Cloudflare will automatically withdraw the BGP prefix when there are no matching BGP routes, and will resume advertising when there is at least one matching BGP route. - `bgp_signal_opts: Optional[BGPSignalOpts]` - `enabled: Optional[bool]` Whether control of advertisement of the prefix to the Internet is enabled to be performed via BGP signal - `modified_at: Optional[datetime]` Last time BGP signaling control was toggled. This field is null if BGP signaling has never been enabled. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `created_at: Optional[datetime]` - `modified_at: Optional[datetime]` - `on_demand: Optional[OnDemand]` - `advertised: Optional[bool]` Prefix advertisement status to the Internet. This field is only not 'null' if on demand is enabled. - `advertised_modified_at: Optional[datetime]` Last time the advertisement status was changed. This field is only not 'null' if on demand is enabled. - `on_demand_enabled: Optional[bool]` Whether advertisement of the prefix to the Internet may be dynamically enabled or disabled. - `on_demand_locked: Optional[bool]` Whether the advertisement status of the prefix is locked, meaning it cannot be changed. # Advertisement Status ## Get Advertisement Status `addressing.prefixes.advertisement_status.get(strprefix_id, AdvertisementStatusGetParams**kwargs) -> AdvertisementStatusGetResponse` **get** `/accounts/{account_id}/addressing/prefixes/{prefix_id}/bgp/status` View the current advertisement state for a prefix. **Deprecated:** Prefer the BGP Prefixes endpoints, which additionally allow for advertising and withdrawing subnets of an IP prefix. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `prefix_id: str` Identifier of an IP Prefix. ### Returns - `class AdvertisementStatusGetResponse: …` - `advertised: Optional[bool]` Advertisement status of the prefix. If `true`, the BGP route for the prefix is advertised to the Internet. If `false`, the BGP route is withdrawn. - `advertised_modified_at: Optional[datetime]` Last time the advertisement status was changed. This field is only not 'null' if on demand is enabled. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) advertisement_status = client.addressing.prefixes.advertisement_status.get( prefix_id="2af39739cc4e3b5910c918468bb89828", account_id="258def64c72dae45f3e4c8516e2111f2", ) print(advertisement_status.advertised) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "advertised": true, "advertised_modified_at": "2014-01-01T05:20:00.12345Z" } } ``` ## Update Prefix Dynamic Advertisement Status `addressing.prefixes.advertisement_status.edit(strprefix_id, AdvertisementStatusEditParams**kwargs) -> AdvertisementStatusEditResponse` **patch** `/accounts/{account_id}/addressing/prefixes/{prefix_id}/bgp/status` Advertise or withdraw the BGP route for a prefix. **Deprecated:** Prefer the BGP Prefixes endpoints, which additionally allow for advertising and withdrawing subnets of an IP prefix. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `prefix_id: str` Identifier of an IP Prefix. - `advertised: bool` Advertisement status of the prefix. If `true`, the BGP route for the prefix is advertised to the Internet. If `false`, the BGP route is withdrawn. ### Returns - `class AdvertisementStatusEditResponse: …` - `advertised: Optional[bool]` Advertisement status of the prefix. If `true`, the BGP route for the prefix is advertised to the Internet. If `false`, the BGP route is withdrawn. - `advertised_modified_at: Optional[datetime]` Last time the advertisement status was changed. This field is only not 'null' if on demand is enabled. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) response = client.addressing.prefixes.advertisement_status.edit( prefix_id="2af39739cc4e3b5910c918468bb89828", account_id="258def64c72dae45f3e4c8516e2111f2", advertised=True, ) print(response.advertised) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "advertised": true, "advertised_modified_at": "2014-01-01T05:20:00.12345Z" } } ``` ## Domain Types ### Advertisement Status Get Response - `class AdvertisementStatusGetResponse: …` - `advertised: Optional[bool]` Advertisement status of the prefix. If `true`, the BGP route for the prefix is advertised to the Internet. If `false`, the BGP route is withdrawn. - `advertised_modified_at: Optional[datetime]` Last time the advertisement status was changed. This field is only not 'null' if on demand is enabled. ### Advertisement Status Edit Response - `class AdvertisementStatusEditResponse: …` - `advertised: Optional[bool]` Advertisement status of the prefix. If `true`, the BGP route for the prefix is advertised to the Internet. If `false`, the BGP route is withdrawn. - `advertised_modified_at: Optional[datetime]` Last time the advertisement status was changed. This field is only not 'null' if on demand is enabled. # Delegations ## List Prefix Delegations `addressing.prefixes.delegations.list(strprefix_id, DelegationListParams**kwargs) -> SyncSinglePage[Delegations]` **get** `/accounts/{account_id}/addressing/prefixes/{prefix_id}/delegations` List all delegations for a given account IP prefix. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `prefix_id: str` Identifier of an IP Prefix. ### Returns - `class Delegations: …` - `id: Optional[str]` Identifier of a Delegation. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `created_at: Optional[datetime]` - `delegated_account_id: Optional[str]` Account identifier for the account to which prefix is being delegated. - `modified_at: Optional[datetime]` - `parent_prefix_id: Optional[str]` Identifier of an IP Prefix. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) page = client.addressing.prefixes.delegations.list( prefix_id="2af39739cc4e3b5910c918468bb89828", account_id="258def64c72dae45f3e4c8516e2111f2", ) page = page.result[0] print(page.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "id": "d933b1530bc56c9953cf8ce166da8004", "cidr": "192.0.2.0/24", "created_at": "2014-01-01T05:20:00.12345Z", "delegated_account_id": "b1946ac92492d2347c6235b4d2611184", "modified_at": "2014-01-01T05:20:00.12345Z", "parent_prefix_id": "2af39739cc4e3b5910c918468bb89828" } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Create Prefix Delegation `addressing.prefixes.delegations.create(strprefix_id, DelegationCreateParams**kwargs) -> Delegations` **post** `/accounts/{account_id}/addressing/prefixes/{prefix_id}/delegations` Create a new account delegation for a given IP prefix. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `prefix_id: str` Identifier of an IP Prefix. - `cidr: str` IP Prefix in Classless Inter-Domain Routing format. - `delegated_account_id: str` Account identifier for the account to which prefix is being delegated. ### Returns - `class Delegations: …` - `id: Optional[str]` Identifier of a Delegation. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `created_at: Optional[datetime]` - `delegated_account_id: Optional[str]` Account identifier for the account to which prefix is being delegated. - `modified_at: Optional[datetime]` - `parent_prefix_id: Optional[str]` Identifier of an IP Prefix. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) delegations = client.addressing.prefixes.delegations.create( prefix_id="2af39739cc4e3b5910c918468bb89828", account_id="258def64c72dae45f3e4c8516e2111f2", cidr="192.0.2.0/24", delegated_account_id="b1946ac92492d2347c6235b4d2611184", ) print(delegations.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "d933b1530bc56c9953cf8ce166da8004", "cidr": "192.0.2.0/24", "created_at": "2014-01-01T05:20:00.12345Z", "delegated_account_id": "b1946ac92492d2347c6235b4d2611184", "modified_at": "2014-01-01T05:20:00.12345Z", "parent_prefix_id": "2af39739cc4e3b5910c918468bb89828" } } ``` ## Delete Prefix Delegation `addressing.prefixes.delegations.delete(strdelegation_id, DelegationDeleteParams**kwargs) -> DelegationDeleteResponse` **delete** `/accounts/{account_id}/addressing/prefixes/{prefix_id}/delegations/{delegation_id}` Delete an account delegation for a given IP prefix. ### Parameters - `account_id: str` Identifier of a Cloudflare account. - `prefix_id: str` Identifier of an IP Prefix. - `delegation_id: str` Identifier of a Delegation. ### Returns - `class DelegationDeleteResponse: …` - `id: Optional[str]` Identifier of a Delegation. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) delegation = client.addressing.prefixes.delegations.delete( delegation_id="d933b1530bc56c9953cf8ce166da8004", account_id="258def64c72dae45f3e4c8516e2111f2", prefix_id="2af39739cc4e3b5910c918468bb89828", ) print(delegation.id) ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "d933b1530bc56c9953cf8ce166da8004" } } ``` ## Domain Types ### Delegations - `class Delegations: …` - `id: Optional[str]` Identifier of a Delegation. - `cidr: Optional[str]` IP Prefix in Classless Inter-Domain Routing format. - `created_at: Optional[datetime]` - `delegated_account_id: Optional[str]` Account identifier for the account to which prefix is being delegated. - `modified_at: Optional[datetime]` - `parent_prefix_id: Optional[str]` Identifier of an IP Prefix. ### Delegation Delete Response - `class DelegationDeleteResponse: …` - `id: Optional[str]` Identifier of a Delegation.