# Routes ## List Routes `magic_transit.routes.list(RouteListParams**kwargs) -> RouteListResponse` **get** `/accounts/{account_id}/magic/routes` List all Magic static routes. ### Parameters - `account_id: str` Identifier ### Returns - `class RouteListResponse: …` - `routes: Optional[List[Route]]` - `id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `created_on: Optional[datetime]` When the route was created. - `description: Optional[str]` An optional human provided description of the static route. - `modified_on: Optional[datetime]` When the route was last modified. - `scope: Optional[Scope]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided. ### 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 ) routes = client.magic_transit.routes.list( account_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(routes.routes) ``` #### 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" } } ], "result": { "routes": [ { "id": "023e105f4ecef8ad9ca31a8372d0c353", "nexthop": "203.0.113.1", "prefix": "192.0.2.0/24", "priority": 0, "created_on": "2017-06-14T00:00:00Z", "description": "New route for new prefix 203.0.113.1", "modified_on": "2017-06-14T05:20:00Z", "scope": { "colo_names": [ "den01" ], "colo_regions": [ "APAC" ] }, "weight": 0 } ] }, "success": true } ``` ## Route Details `magic_transit.routes.get(strroute_id, RouteGetParams**kwargs) -> RouteGetResponse` **get** `/accounts/{account_id}/magic/routes/{route_id}` Get a specific Magic static route. ### Parameters - `account_id: str` Identifier - `route_id: str` Identifier ### Returns - `class RouteGetResponse: …` - `route: Optional[Route]` - `id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `created_on: Optional[datetime]` When the route was created. - `description: Optional[str]` An optional human provided description of the static route. - `modified_on: Optional[datetime]` When the route was last modified. - `scope: Optional[Scope]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided. ### 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 ) route = client.magic_transit.routes.get( route_id="023e105f4ecef8ad9ca31a8372d0c353", account_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(route.route) ``` #### 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" } } ], "result": { "route": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "nexthop": "203.0.113.1", "prefix": "192.0.2.0/24", "priority": 0, "created_on": "2017-06-14T00:00:00Z", "description": "New route for new prefix 203.0.113.1", "modified_on": "2017-06-14T05:20:00Z", "scope": { "colo_names": [ "den01" ], "colo_regions": [ "APAC" ] }, "weight": 0 } }, "success": true } ``` ## Create a Route `magic_transit.routes.create(RouteCreateParams**kwargs) -> RouteCreateResponse` **post** `/accounts/{account_id}/magic/routes` Creates a new Magic static route. Use `?validate_only=true` as an optional query parameter to run validation only without persisting changes. ### Parameters - `account_id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `description: Optional[str]` An optional human provided description of the static route. - `scope: Optional[ScopeParam]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided. ### Returns - `class RouteCreateResponse: …` - `id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `created_on: Optional[datetime]` When the route was created. - `description: Optional[str]` An optional human provided description of the static route. - `modified_on: Optional[datetime]` When the route was last modified. - `scope: Optional[Scope]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided. ### 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 ) route = client.magic_transit.routes.create( account_id="023e105f4ecef8ad9ca31a8372d0c353", nexthop="203.0.113.1", prefix="192.0.2.0/24", priority=0, ) print(route.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" } } ], "result": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "nexthop": "203.0.113.1", "prefix": "192.0.2.0/24", "priority": 0, "created_on": "2017-06-14T00:00:00Z", "description": "New route for new prefix 203.0.113.1", "modified_on": "2017-06-14T05:20:00Z", "scope": { "colo_names": [ "den01" ], "colo_regions": [ "APAC" ] }, "weight": 0 }, "success": true } ``` ## Update Route `magic_transit.routes.update(strroute_id, RouteUpdateParams**kwargs) -> RouteUpdateResponse` **put** `/accounts/{account_id}/magic/routes/{route_id}` Update a specific Magic static route. Use `?validate_only=true` as an optional query parameter to run validation only without persisting changes. ### Parameters - `account_id: str` Identifier - `route_id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `description: Optional[str]` An optional human provided description of the static route. - `scope: Optional[ScopeParam]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided. ### Returns - `class RouteUpdateResponse: …` - `modified: Optional[bool]` - `modified_route: Optional[ModifiedRoute]` - `id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `created_on: Optional[datetime]` When the route was created. - `description: Optional[str]` An optional human provided description of the static route. - `modified_on: Optional[datetime]` When the route was last modified. - `scope: Optional[Scope]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided. ### 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 ) route = client.magic_transit.routes.update( route_id="023e105f4ecef8ad9ca31a8372d0c353", account_id="023e105f4ecef8ad9ca31a8372d0c353", nexthop="203.0.113.1", prefix="192.0.2.0/24", priority=0, ) print(route.modified) ``` #### 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" } } ], "result": { "modified": true, "modified_route": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "nexthop": "203.0.113.1", "prefix": "192.0.2.0/24", "priority": 0, "created_on": "2017-06-14T00:00:00Z", "description": "New route for new prefix 203.0.113.1", "modified_on": "2017-06-14T05:20:00Z", "scope": { "colo_names": [ "den01" ], "colo_regions": [ "APAC" ] }, "weight": 0 } }, "success": true } ``` ## Delete Route `magic_transit.routes.delete(strroute_id, RouteDeleteParams**kwargs) -> RouteDeleteResponse` **delete** `/accounts/{account_id}/magic/routes/{route_id}` Disable and remove a specific Magic static route. ### Parameters - `account_id: str` Identifier - `route_id: str` Identifier ### Returns - `class RouteDeleteResponse: …` - `deleted: Optional[bool]` - `deleted_route: Optional[DeletedRoute]` - `id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `created_on: Optional[datetime]` When the route was created. - `description: Optional[str]` An optional human provided description of the static route. - `modified_on: Optional[datetime]` When the route was last modified. - `scope: Optional[Scope]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided. ### 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 ) route = client.magic_transit.routes.delete( route_id="023e105f4ecef8ad9ca31a8372d0c353", account_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(route.deleted) ``` #### 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" } } ], "result": { "deleted": true, "deleted_route": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "nexthop": "203.0.113.1", "prefix": "192.0.2.0/24", "priority": 0, "created_on": "2017-06-14T00:00:00Z", "description": "New route for new prefix 203.0.113.1", "modified_on": "2017-06-14T05:20:00Z", "scope": { "colo_names": [ "den01" ], "colo_regions": [ "APAC" ] }, "weight": 0 } }, "success": true } ``` ## Update Many Routes `magic_transit.routes.bulk_update(RouteBulkUpdateParams**kwargs) -> RouteBulkUpdateResponse` **put** `/accounts/{account_id}/magic/routes` Update multiple Magic static routes. Use `?validate_only=true` as an optional query parameter to run validation only without persisting changes. Only fields for a route that need to be changed need be provided. ### Parameters - `account_id: str` Identifier - `routes: Iterable[Route]` - `id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `description: Optional[str]` An optional human provided description of the static route. - `scope: Optional[ScopeParam]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided. ### Returns - `class RouteBulkUpdateResponse: …` - `modified: Optional[bool]` - `modified_routes: Optional[List[ModifiedRoute]]` - `id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `created_on: Optional[datetime]` When the route was created. - `description: Optional[str]` An optional human provided description of the static route. - `modified_on: Optional[datetime]` When the route was last modified. - `scope: Optional[Scope]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided. ### 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.magic_transit.routes.bulk_update( account_id="023e105f4ecef8ad9ca31a8372d0c353", routes=[{ "id": "023e105f4ecef8ad9ca31a8372d0c353", "nexthop": "203.0.113.1", "prefix": "192.0.2.0/24", "priority": 0, }], ) print(response.modified) ``` #### 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" } } ], "result": { "modified": true, "modified_routes": [ { "id": "023e105f4ecef8ad9ca31a8372d0c353", "nexthop": "203.0.113.1", "prefix": "192.0.2.0/24", "priority": 0, "created_on": "2017-06-14T00:00:00Z", "description": "New route for new prefix 203.0.113.1", "modified_on": "2017-06-14T05:20:00Z", "scope": { "colo_names": [ "den01" ], "colo_regions": [ "APAC" ] }, "weight": 0 } ] }, "success": true } ``` ## Delete Many Routes `magic_transit.routes.empty(RouteEmptyParams**kwargs) -> RouteEmptyResponse` **delete** `/accounts/{account_id}/magic/routes` Delete multiple Magic static routes. ### Parameters - `account_id: str` Identifier ### Returns - `class RouteEmptyResponse: …` - `deleted: Optional[bool]` - `deleted_routes: Optional[List[DeletedRoute]]` - `id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `created_on: Optional[datetime]` When the route was created. - `description: Optional[str]` An optional human provided description of the static route. - `modified_on: Optional[datetime]` When the route was last modified. - `scope: Optional[Scope]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided. ### 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.magic_transit.routes.empty( account_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(response.deleted) ``` #### 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" } } ], "result": { "deleted": true, "deleted_routes": [ { "id": "023e105f4ecef8ad9ca31a8372d0c353", "nexthop": "203.0.113.1", "prefix": "192.0.2.0/24", "priority": 0, "created_on": "2017-06-14T00:00:00Z", "description": "New route for new prefix 203.0.113.1", "modified_on": "2017-06-14T05:20:00Z", "scope": { "colo_names": [ "den01" ], "colo_regions": [ "APAC" ] }, "weight": 0 } ] }, "success": true } ``` ## Domain Types ### Scope - `class Scope: …` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. ### Route List Response - `class RouteListResponse: …` - `routes: Optional[List[Route]]` - `id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `created_on: Optional[datetime]` When the route was created. - `description: Optional[str]` An optional human provided description of the static route. - `modified_on: Optional[datetime]` When the route was last modified. - `scope: Optional[Scope]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided. ### Route Get Response - `class RouteGetResponse: …` - `route: Optional[Route]` - `id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `created_on: Optional[datetime]` When the route was created. - `description: Optional[str]` An optional human provided description of the static route. - `modified_on: Optional[datetime]` When the route was last modified. - `scope: Optional[Scope]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided. ### Route Create Response - `class RouteCreateResponse: …` - `id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `created_on: Optional[datetime]` When the route was created. - `description: Optional[str]` An optional human provided description of the static route. - `modified_on: Optional[datetime]` When the route was last modified. - `scope: Optional[Scope]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided. ### Route Update Response - `class RouteUpdateResponse: …` - `modified: Optional[bool]` - `modified_route: Optional[ModifiedRoute]` - `id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `created_on: Optional[datetime]` When the route was created. - `description: Optional[str]` An optional human provided description of the static route. - `modified_on: Optional[datetime]` When the route was last modified. - `scope: Optional[Scope]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided. ### Route Delete Response - `class RouteDeleteResponse: …` - `deleted: Optional[bool]` - `deleted_route: Optional[DeletedRoute]` - `id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `created_on: Optional[datetime]` When the route was created. - `description: Optional[str]` An optional human provided description of the static route. - `modified_on: Optional[datetime]` When the route was last modified. - `scope: Optional[Scope]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided. ### Route Bulk Update Response - `class RouteBulkUpdateResponse: …` - `modified: Optional[bool]` - `modified_routes: Optional[List[ModifiedRoute]]` - `id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `created_on: Optional[datetime]` When the route was created. - `description: Optional[str]` An optional human provided description of the static route. - `modified_on: Optional[datetime]` When the route was last modified. - `scope: Optional[Scope]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided. ### Route Empty Response - `class RouteEmptyResponse: …` - `deleted: Optional[bool]` - `deleted_routes: Optional[List[DeletedRoute]]` - `id: str` Identifier - `nexthop: str` The next-hop IP Address for the static route. - `prefix: str` IP Prefix in Classless Inter-Domain Routing format. - `priority: int` Priority of the static route. - `created_on: Optional[datetime]` When the route was created. - `description: Optional[str]` An optional human provided description of the static route. - `modified_on: Optional[datetime]` When the route was last modified. - `scope: Optional[Scope]` Used only for ECMP routes. - `colo_names: Optional[List[str]]` List of colo names for the ECMP scope. - `colo_regions: Optional[List[str]]` List of colo regions for the ECMP scope. - `weight: Optional[int]` Optional weight of the ECMP scope - if provided.