{
  "components": {
    "examples": {
      "Gateway": {
        "value": {
          "as_prepends": [
            {
              "created_at": "2020-11-02T20:40:29.622Z",
              "id": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c999",
              "length": 4,
              "policy": "import",
              "prefix": "172.17.0.0/16",
              "updated_at": "2020-11-02T20:40:29.622Z"
            }
          ],
          "authentication_key": {
            "crn": "crn:v1:bluemix:public:kms:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:key:bbb222bc-430a-4de9-9aad-84e5bb022222"
          },
          "bfd_config": {
            "bfd_status": "up",
            "bfd_status_updated_at": "2020-08-20T06:58:41.909781Z",
            "interval": 2000,
            "multiplier": 3
          },
          "bgp_asn": 64999,
          "bgp_cer_cidr": "10.254.30.78/30",
          "bgp_ibm_asn": 13884,
          "bgp_ibm_cidr": "10.254.30.77/30",
          "bgp_status": "active",
          "bgp_status_updated_at": "2020-08-20T06:58:41.909781Z",
          "carrier_name": "CarrierName",
          "connection_mode": "transit",
          "created_at": "2020-11-02T20:40:29.622Z",
          "crn": "crn:v1:bluemix:public:directlink:dal00:a/aaaaaaaa4a484f029d0fca5a11111111::connect:bbbbbbbb-f326-428f-a345-222222222222",
          "cross_account": false,
          "cross_connect_router": "xcr01.dal03",
          "customer_name": "CustomerName",
          "default_export_route_filter": "permit",
          "default_import_route_filter": "deny",
          "global": true,
          "id": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
          "link_status": "up",
          "link_status_updated_at": "2020-08-20T06:58:41.909781Z",
          "location_display_name": "Dallas 03",
          "location_name": "dal03",
          "macsec": {
            "active": true,
            "security_policy": "must_secure",
            "status": "secured"
          },
          "metered": false,
          "name": "example-gateway",
          "operational_status": "provisioned",
          "operational_status_reasons": [],
          "resource_group": {
            "id": "54321b1a-fee4-41c7-9e11-9cd99e000aaa"
          },
          "speed_mbps": 1000,
          "type": "dedicated"
        }
      },
      "GatewayCollection": {
        "value": {
          "gateways": [
            {
              "as_prepends": [
                {
                  "created_at": "2020-11-02T20:40:29.622Z",
                  "id": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c999",
                  "length": 4,
                  "policy": "import",
                  "prefix": "172.17.0.0/16",
                  "updated_at": "2020-11-02T20:40:29.622Z"
                }
              ],
              "authentication_key": {
                "crn": "crn:v1:bluemix:public:kms:us-south:a/766d8d374a484f029d0fca5a40a52a1c:5d343839-07d3-4213-a950-0f71ed45423f:key:7fc1a0ba-4633-48cb-997b-5749787c952c"
              },
              "bgp_asn": 64999,
              "bgp_cer_cidr": "10.254.30.78/30",
              "bgp_ibm_asn": 13884,
              "bgp_ibm_cidr": "10.254.30.77/30",
              "bgp_status": "active",
              "connection_mode": "transit",
              "created_at": "2020-11-02T20:40:29.622Z",
              "crn": "crn:v1:bluemix:public:directlink:dal00:a/aaaaaaaa4a484f029d0fca5a11111111::connect:bbbbbbbb-f326-428f-a345-222222222222",
              "cross_account": false,
              "cross_connect_router": "xcr01.dal03",
              "default_export_route_filter": "permit",
              "default_import_route_filter": "deny",
              "global": true,
              "id": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
              "link_status": "up",
              "location_display_name": "Dallas 03",
              "location_name": "dal03",
              "metered": false,
              "name": "example-gateway",
              "operational_status": "provisioned",
              "operational_status_reasons": [],
              "resource_group": {
                "id": "54321b1a-fee4-41c7-9e11-9cd99e000aaa"
              },
              "speed_mbps": 1000,
              "type": "dedicated"
            }
          ]
        }
      },
      "GatewayMacsec": {
        "value": {
          "active": true,
          "cipher_suite": "gcm_aes_xpn_256",
          "confidentiality_offset": 0,
          "created_at": "2020-11-02T20:40:29.622Z",
          "key_server_priority": 255,
          "sak_rekey": {
            "interval": 3600,
            "mode": "timer"
          },
          "security_policy": "must_secure",
          "status": "secured",
          "status_reasons": [],
          "updated_at": "2020-11-02T20:40:29.622Z",
          "window_size": 512
        }
      },
      "GatewayMacsecCak": {
        "value": {
          "created_at": "2020-11-02T20:40:29.622Z",
          "id": "00000000-fee4-41c7-9e11-aaaaaaaaaaaa",
          "key": {
            "crn": "crn:v1:bluemix:public:hs-crypto:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:key:bbb222bc-430a-4de9-9aad-84e5bb022222"
          },
          "name": "1000",
          "session": "primary",
          "status": "operational",
          "updated_at": "2020-11-02T20:40:29.622Z"
        }
      },
      "GatewayMacsecCakCollection": {
        "value": {
          "caks": [
            {
              "created_at": "2020-11-02T20:40:29.622Z",
              "id": "00000000-fee4-41c7-9e11-aaaaaaaaaaaa",
              "key": {
                "crn": "crn:v1:bluemix:public:hs-crypto:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:key:bbb222bc-430a-4de9-9aad-84e5bb022222"
              },
              "name": "1000",
              "session": "primary",
              "status": "operational",
              "updated_at": "2020-11-02T20:40:29.622Z"
            },
            {
              "created_at": "2020-11-02T20:40:29.622Z",
              "id": "11111111-fee4-41c7-9e11-cccccccccccc",
              "key": {
                "crn": "crn:v1:bluemix:public:hs-crypto:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:key:bbb222bc-430a-4de9-9aad-84e5bb022222"
              },
              "name": "AF00",
              "session": "fallback",
              "status": "failed",
              "updated_at": "2020-11-02T20:40:29.622Z"
            }
          ]
        }
      },
      "GatewayNotFoundExample": {
        "value": {
          "errors": [
            {
              "code": "not_found",
              "message": "Cannot find gateway",
              "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
            }
          ],
          "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
        }
      },
      "GenericBadRequestExample": {
        "value": {
          "errors": [
            {
              "code": "bad_request",
              "message": "The information given was invalid, malformed, or missing a required field.",
              "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling",
              "target": {
                "name": "name",
                "type": "field"
              }
            }
          ],
          "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
        }
      },
      "RouteFilterExample": {
        "value": {
          "action": "permit",
          "before": "1a15dcab-7e40-45e1-b7c5-bc690eaa9782",
          "created_at": "2021-11-15T12:08:05.000Z",
          "ge": 25,
          "id": "1a15dcab-7e30-45e1-b7c5-bc690eaa9865",
          "le": 32,
          "prefix": "192.168.100.0/24",
          "updated_at": "2021-11-15T12:08:05.000Z"
        }
      }
    },
    "headers": {
      "eTag": {
        "description": "An opaque value representing the modifiable state of the resource. Methods such as `PUT`\nmay allow or require this value be provided using an `If-Match` header to protect against\nconcurrent modifications.",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/ETag"
        }
      }
    },
    "parameters": {
      "export_route_filter_id": {
        "description": "Identifier of an import route filter",
        "in": "path",
        "name": "id",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/UUID"
        }
      },
      "ifMatch": {
        "description": "If present, the request will fail if the specified ETag value does not match the resource's\ncurrent ETag value.",
        "in": "header",
        "name": "If-Match",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/ETag"
        }
      },
      "ifMatchOptional": {
        "description": "If present, the request will fail if the specified ETag value does not match the resource's current ETag value.\n\n`If-Match` is required when the resource exists and has an ETag value.",
        "in": "header",
        "name": "If-Match",
        "schema": {
          "$ref": "#/components/schemas/ETag"
        }
      },
      "import_route_filter_id": {
        "description": "Identifier of an import route filter",
        "in": "path",
        "name": "id",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/UUID"
        }
      },
      "path_cak_id": {
        "description": "MACsec CAK identifier",
        "in": "path",
        "name": "cak_id",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/GatewayMacsecCakIdentifier"
        }
      },
      "path_gateway_connect_only_id": {
        "description": "Direct Link Connect gateway identifier",
        "in": "path",
        "name": "id",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/UUID"
        }
      },
      "path_gateway_dedicated_only_id": {
        "description": "Direct Link Dedicated gateway identifier",
        "in": "path",
        "name": "id",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/UUID"
        }
      },
      "path_gateway_id": {
        "description": "Direct Link gateway identifier",
        "in": "path",
        "name": "id",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/UUID"
        }
      },
      "path_gateway_id_qualified": {
        "description": "Direct Link gateway identifier",
        "in": "path",
        "name": "gateway_id",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/UUID"
        }
      },
      "path_location_info_name": {
        "description": "The name of the Direct Link location",
        "in": "path",
        "name": "location_name",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "path_offering_type_id_qualified": {
        "description": "The Direct Link offering type.  Current supported values are `\"dedicated\"` and `\"connect\"`.",
        "in": "path",
        "name": "offering_type",
        "required": true,
        "schema": {
          "enum": [
            "dedicated",
            "connect"
          ],
          "example": "dedicated",
          "type": "string"
        }
      },
      "path_offering_type_id_qualified_just_dedicated": {
        "description": "The Direct Link offering type.  Only value `\"dedicated\"` is supported for this API.",
        "in": "path",
        "name": "offering_type",
        "required": true,
        "schema": {
          "enum": [
            "dedicated"
          ],
          "example": "dedicated",
          "type": "string"
        }
      },
      "path_port_id": {
        "description": "The port identifier",
        "in": "path",
        "name": "id",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/UUID"
        }
      },
      "path_virtual_connection_id": {
        "description": "The virtual connection identifier",
        "in": "path",
        "name": "id",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/UUID"
        }
      },
      "query_gateway_statistic_type": {
        "description": "Specify statistic to retrieve",
        "in": "query",
        "name": "type",
        "required": true,
        "schema": {
          "enum": [
            "macsec_mka_session",
            "macsec_policy",
            "macsec_mka_statistics",
            "bfd_session"
          ],
          "type": "string"
        }
      },
      "query_gateway_status_type": {
        "description": "Specify status to retrieve",
        "in": "query",
        "name": "type",
        "schema": {
          "enum": [
            "bgp",
            "bfd",
            "link"
          ],
          "type": "string"
        }
      },
      "query_limit": {
        "description": "The number of resources to return on a page\n",
        "in": "query",
        "name": "limit",
        "required": false,
        "schema": {
          "default": 50,
          "format": "int32",
          "maximum": 100,
          "minimum": 1,
          "type": "integer"
        }
      },
      "query_location_info_name": {
        "description": "Direct Link location short name",
        "in": "query",
        "name": "location_name",
        "required": false,
        "schema": {
          "type": "string"
        }
      },
      "query_start": {
        "description": "A server-supplied token determining which resource to start the page on\n",
        "in": "query",
        "name": "start",
        "required": false,
        "schema": {
          "maxLength": 512,
          "minLength": 1,
          "pattern": "^[ -~]+$",
          "type": "string"
        }
      },
      "route_report_id": {
        "description": "Route report identifier",
        "in": "path",
        "name": "id",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/UUID"
        }
      },
      "version": {
        "description": "Requests the version of the API as a date in the format `YYYY-MM-DD`. Any date from 2019-12-13 up to the\ncurrent date may be provided. Specify the current date to request the latest version.",
        "in": "query",
        "name": "version",
        "required": true,
        "schema": {
          "maxLength": 10,
          "minLength": 10,
          "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
          "type": "string"
        },
        "x-sdk-global-param": true
      }
    },
    "responses": {
      "BadRequestGeneric": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/GenericBadRequestExample"
              }
            },
            "schema": {
              "$ref": "#/components/schemas/ErrorContainerGeneric400"
            }
          }
        },
        "description": "The information given was invalid, malformed, or missing a required field."
      },
      "CannotFindGateway": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/GatewayNotFoundExample"
              }
            },
            "schema": {
              "$ref": "#/components/schemas/ErrorContainerGeneric404"
            }
          }
        },
        "description": "The specified Direct Link gateway could not be found."
      },
      "ExportRouteFilter404": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errors": [
                    {
                      "code": "not_found",
                      "message": "Cannot find export route filter",
                      "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                    }
                  ],
                  "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                }
              }
            },
            "schema": {
              "$ref": "#/components/schemas/ErrorContainerGeneric404"
            }
          }
        },
        "description": "An export route filter with the specified identifier could not be found."
      },
      "ImportRouteFilter404": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errors": [
                    {
                      "code": "not_found",
                      "message": "Cannot find import route filter",
                      "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                    }
                  ],
                  "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                }
              }
            },
            "schema": {
              "$ref": "#/components/schemas/ErrorContainerGeneric404"
            }
          }
        },
        "description": "An import route filter with the specified identifier could not be found."
      }
    },
    "schemas": {
      "AsPrepend": {
        "description": "Gateway AS Prepend object",
        "properties": {
          "created_at": {
            "description": "The date and time resource was created",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "The unique identifier for this AS Prepend.",
            "example": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
            "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
            "type": "string"
          },
          "length": {
            "description": "Number of times the ASN to appended to the AS Path.",
            "example": 4,
            "maximum": 10,
            "minimum": 3,
            "type": "integer"
          },
          "policy": {
            "description": "Route type this AS Prepend applies to",
            "enum": [
              "import",
              "export"
            ],
            "example": "import",
            "type": "string"
          },
          "prefix": {
            "deprecated": true,
            "description": "Comma separated list of prefixes this AS Prepend applies to.  If empty, this applies to all prefixes.",
            "example": "172.17.0.0/16",
            "type": "string"
          },
          "specific_prefixes": {
            "description": "Array of prefixes this AS Prepend applies to. This parameter is not returned when AS Prepend applies to all prefixes.  Note that ordering is not significant and may differ from request order.",
            "items": {
              "example": "192.168.3.0/24",
              "maxLength": 18,
              "minLength": 9,
              "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(3[0-2]|[1-2][0-9]|[0-9]))$",
              "type": "string"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array"
          },
          "updated_at": {
            "description": "The date and time resource was last updated",
            "format": "date-time",
            "type": "string"
          }
        }
      },
      "AsPrependCollection": {
        "description": "array of AS Prepends",
        "properties": {
          "as_prepends": {
            "description": "array of AS Prepend information.",
            "items": {
              "$ref": "#/components/schemas/AsPrependEntry"
            },
            "maxItems": 50,
            "minItems": 0,
            "type": "array"
          }
        }
      },
      "AsPrependEntry": {
        "description": "AS Prepends API object",
        "properties": {
          "created_at": {
            "description": "The date and time resource was created",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "The unique identifier for this AS Prepend.",
            "example": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
            "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
            "type": "string"
          },
          "length": {
            "description": "Number of times the ASN to appended to the AS Path.",
            "example": 4,
            "maximum": 10,
            "minimum": 3,
            "type": "integer"
          },
          "policy": {
            "description": "Route type this AS Prepend applies to",
            "enum": [
              "import",
              "export"
            ],
            "example": "import",
            "type": "string"
          },
          "specific_prefixes": {
            "description": "Array of prefixes this AS Prepend applies to. This parameter is not returned when AS Prepend applies to all prefixes.  Note that ordering is not significant and may differ from request order.",
            "items": {
              "example": "192.168.3.0/24",
              "maxLength": 18,
              "minLength": 9,
              "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(3[0-2]|[1-2][0-9]|[0-9]))$",
              "type": "string"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array"
          },
          "updated_at": {
            "description": "The date and time resource was last updated",
            "format": "date-time",
            "type": "string"
          }
        }
      },
      "AsPrependPrefixArrayTemplate": {
        "description": "Create AS Prepend Configuration template",
        "properties": {
          "length": {
            "description": "Number of times the ASN to be prepended to the AS Path.",
            "example": 4,
            "maximum": 10,
            "minimum": 3,
            "type": "integer"
          },
          "policy": {
            "description": "Route type this AS Prepend applies to",
            "enum": [
              "import",
              "export"
            ],
            "example": "import",
            "type": "string"
          },
          "specific_prefixes": {
            "description": "Array of prefixes this AS Prepend applies to. If this property is absent, the AS Prepend applies to all prefixes.  Note that ordering is not significant and may differ from request order.",
            "items": {
              "example": "192.168.3.0/24",
              "maxLength": 18,
              "minLength": 9,
              "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(3[0-2]|[1-2][0-9]|[0-9]))$",
              "type": "string"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "policy",
          "length"
        ],
        "type": "object"
      },
      "AsPrependReplaceTemplate": {
        "description": "Replace AS Prepend Configuration template",
        "properties": {
          "as_prepends": {
            "description": "array of AS Prepend configuration information.",
            "items": {
              "$ref": "#/components/schemas/AsPrependPrefixArrayTemplate"
            },
            "maxItems": 50,
            "minItems": 0,
            "type": "array"
          }
        }
      },
      "AsPrependTemplate": {
        "description": "Create AS Prepend Configuration template",
        "properties": {
          "length": {
            "description": "Number of times the ASN to be prepended to the AS Path.",
            "example": 4,
            "maximum": 10,
            "minimum": 3,
            "type": "integer"
          },
          "policy": {
            "description": "Route type this AS Prepend applies to",
            "enum": [
              "import",
              "export"
            ],
            "example": "import",
            "type": "string"
          },
          "prefix": {
            "deprecated": true,
            "description": "Comma separated list of prefixes this AS Prepend applies to.  Maximum of 10 prefixes.  If not specified, this AS Prepend applies to all prefixes.",
            "example": "172.17.0.0/16",
            "type": "string"
          },
          "specific_prefixes": {
            "description": "Array of prefixes this AS Prepend applies to. If this property is absent, the AS Prepend applies to all prefixes.",
            "items": {
              "example": "192.168.3.0/24",
              "maxLength": 18,
              "minLength": 9,
              "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(3[0-2]|[1-2][0-9]|[0-9]))$",
              "type": "string"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          }
        },
        "required": [
          "policy",
          "length"
        ]
      },
      "AuthenticationKeyIdentity": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/KeyProtectAuthenticationKeyIdentity"
          },
          {
            "$ref": "#/components/schemas/HpcsAuthenticationKeyIdentity"
          },
          {
            "$ref": "#/components/schemas/SecretsManagerAuthenticationKeyIdentity"
          }
        ]
      },
      "AuthenticationKeyReference": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/HpcsAuthenticationKeyReference"
          },
          {
            "$ref": "#/components/schemas/KeyProtectAuthenticationKeyReference"
          },
          {
            "$ref": "#/components/schemas/SecretsManagerAuthenticationKeyReference"
          }
        ]
      },
      "CreateRouteFilterTemplate": {
        "description": "The route filter create template",
        "properties": {
          "action": {
            "description": "Determines whether routes that match the prefix-set will be allowed (permit) or rejected (deny) through the filter",
            "enum": [
              "permit",
              "deny"
            ],
            "example": "permit",
            "type": "string"
          },
          "before": {
            "description": "Identifier of the next route filter considered if a route does not match the current filter. This property builds the ordering among route filters and follows semantics:\n- When before is an identifier of a route filter that exists and is in the same collection, a route will first attempt to match on the current filter before preceding to the filter referenced in this property.\n- When a filter is created with before that matches another filter in the same collection, the existing filter will take precedence. The before of the existing filter will be updated to refer to the newly created filter. The newly created filter will refer to the route filter identified by the provided before.\n- When a filter is created without a before, it takes the lowest precedence. The existing filter of lowest precedence will be updated to refer to the newly created filter.",
            "example": "1a15dcab-7e40-45e1-b7c5-bc690eaa9782",
            "maxLength": 36,
            "minLength": 36,
            "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
            "type": "string"
          },
          "ge": {
            "description": "The minimum matching length of the prefix-set (mnemonic for greater than or equal to).",
            "example": 25,
            "maximum": 32,
            "minimum": 1,
            "type": "integer"
          },
          "le": {
            "description": "The maximum matching length of the prefix-set (mnemonic for less than or equal to).",
            "example": 30,
            "maximum": 32,
            "minimum": 1,
            "type": "integer"
          },
          "prefix": {
            "description": "IP prefix representing an address and mask length of the prefix-set",
            "example": "192.168.100.0/24",
            "maxLength": 18,
            "minLength": 7,
            "pattern": "^([0-9]{1,3}\\.){3}[0-9]{1,3}(\\/([0-9]|[1-2][0-9]|3[0-2]))?$",
            "type": "string"
          }
        },
        "required": [
          "prefix",
          "action"
        ],
        "type": "object"
      },
      "CrossAccountGateway": {
        "description": "cross-account gateway read-only view",
        "properties": {
          "bgp_status": {
            "description": "Gateway BGP status.\nThe list of enumerated values for this property may expand in the future. Code and processes using this field \nmust tolerate unexpected values.",
            "enum": [
              "active",
              "connect",
              "established",
              "idle"
            ],
            "example": "active",
            "type": "string"
          },
          "bgp_status_updated_at": {
            "description": "Date and time bgp status was updated",
            "example": "2020-08-20T06:58:41.909781Z",
            "format": "date-time",
            "type": "string"
          },
          "connection_mode": {
            "description": "Type of services this Gateway is attached to. Mode transit means this Gateway will be attached to Transit Gateway Service and direct means this Gateway will be attached to vpc or classic connection.\nThe list of enumerated values for this property may expand in the future. Code and processes using this field \nmust tolerate unexpected values.",
            "enum": [
              "direct",
              "transit"
            ],
            "example": "transit",
            "type": "string"
          },
          "created_at": {
            "description": "The date and time resource was created",
            "format": "date-time",
            "type": "string"
          },
          "crn": {
            "description": "The CRN (Cloud Resource Name) of this gateway",
            "example": "crn:v1:bluemix:public:directlink:dal03:a/4111d05f36894e3cb9b46a43556d9000::dedicated:ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
            "type": "string"
          },
          "cross_account": {
            "description": "Indicates whether this gateway is cross account gateway.",
            "example": true,
            "type": "boolean"
          },
          "cross_connect_router": {
            "description": "Cross connect router. Only included on type=dedicated gateways.",
            "example": "xcr01.dal03",
            "type": "string"
          },
          "global": {
            "description": "Gateways with global routing (`true`) can connect to networks outside their associated region.",
            "example": true,
            "type": "boolean"
          },
          "id": {
            "description": "The unique identifier of this gateway",
            "example": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
            "type": "string"
          },
          "link_status": {
            "description": "Gateway link status.  Only included on type=dedicated gateways.\nThe list of enumerated values for this property may expand in the future. Code and processes using this field \nmust tolerate unexpected values.",
            "enum": [
              "down",
              "up"
            ],
            "example": "up",
            "type": "string"
          },
          "link_status_updated_at": {
            "description": "Date and time link status was updated",
            "example": "2020-08-20T06:58:41.909781Z",
            "format": "date-time",
            "type": "string"
          },
          "location_display_name": {
            "description": "Gateway location long name",
            "example": "Dallas 03",
            "type": "string"
          },
          "location_name": {
            "description": "Gateway location",
            "example": "dal03",
            "type": "string"
          },
          "name": {
            "description": "The unique user-defined name for this gateway.",
            "example": "myGateway",
            "maxLength": 63,
            "minLength": 1,
            "pattern": "^([a-zA-Z]|[a-zA-Z][-_a-zA-Z0-9]*[a-zA-Z0-9])$",
            "type": "string"
          },
          "operational_status": {
            "description": "Gateway operational status.\nThe list of enumerated values for this property may expand in the future. Code and processes using this field \nmust tolerate unexpected values.",
            "enum": [
              "awaiting_completion_notice",
              "awaiting_loa",
              "configuring",
              "create_pending",
              "create_rejected",
              "completion_notice_approved",
              "completion_notice_received",
              "completion_notice_rejected",
              "delete_pending",
              "loa_accepted",
              "loa_created",
              "loa_rejected",
              "provisioned"
            ],
            "type": "string"
          },
          "port": {
            "$ref": "#/components/schemas/GatewayPortReference"
          },
          "speed_mbps": {
            "description": "Gateway speed in megabits per second",
            "example": 1000,
            "type": "integer"
          },
          "type": {
            "description": "Offering type.\nThe list of enumerated values for this property may expand in the future. Code and processes using this field \nmust tolerate unexpected values.",
            "enum": [
              "connect",
              "dedicated"
            ],
            "example": "dedicated",
            "type": "string"
          }
        },
        "required": [
          "created_at",
          "name",
          "operational_status",
          "type",
          "location_name",
          "speed_mbps",
          "global",
          "crn",
          "id",
          "location_display_name",
          "cross_account"
        ],
        "title": "CrossAccountGateway",
        "type": "object"
      },
      "CrossConnectRouter": {
        "description": "Cross Connect Router details",
        "properties": {
          "capabilities": {
            "description": "List of capabilities for this router.\n\nListed `MacsecCapability` values indicate the router is associated with switch ports with that capability, and is able to provision direct links with that capability. Multiple `MacsecCapability` values can be listed.",
            "items": {
              "$ref": "#/components/schemas/RouterCapability"
            },
            "minItems": 1,
            "type": "array"
          },
          "router_name": {
            "description": "The name of the Router",
            "example": "xcr01.dal03",
            "type": "string"
          },
          "total_connections": {
            "description": "Count of existing Direct Link Dedicated gateways on this router for this account.",
            "example": 1,
            "type": "integer"
          }
        },
        "title": "CrossConnectRouter",
        "type": "object"
      },
      "ETag": {
        "description": "ETag representing the current state of a resource. If any properties of the resource change, so will this value.",
        "example": "W/\"96d225c4-56bd-43d9-98fc-d7148e5c5028\"",
        "maxLength": 512,
        "minLength": 2,
        "pattern": "(?:W\\/)?\"(?:[ !#-\\x7E\\x80-\\xFF]*|\\r\\n[\\t ]|\\\\.)*\"",
        "type": "string"
      },
      "Error400": {
        "description": "example 400 error",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/SnakeCaseCode"
          },
          "message": {
            "description": "Description of the problem",
            "example": "Required parameter missing.",
            "type": "string"
          },
          "more_info": {
            "allOf": [
              {
                "$ref": "#/components/schemas/URL"
              },
              {
                "description": "Link to documentation about the error",
                "example": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
              }
            ]
          },
          "target": {
            "$ref": "#/components/schemas/ErrorTarget"
          }
        },
        "required": [
          "code",
          "message"
        ],
        "title": "Error400",
        "type": "object"
      },
      "Error403": {
        "description": "example 403 error",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/SnakeCaseCode"
          },
          "message": {
            "description": "Description of the problem",
            "example": "request not authorized",
            "type": "string"
          },
          "more_info": {
            "allOf": [
              {
                "$ref": "#/components/schemas/URL"
              },
              {
                "description": "Link to documentation about the error",
                "example": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
              }
            ]
          }
        },
        "required": [
          "code",
          "message"
        ],
        "title": "Error403",
        "type": "object"
      },
      "Error404": {
        "description": "example 404 error",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/SnakeCaseCode"
          },
          "message": {
            "description": "Description of the problem",
            "example": "Resource not found.",
            "type": "string"
          },
          "more_info": {
            "allOf": [
              {
                "$ref": "#/components/schemas/URL"
              },
              {
                "description": "Link to documentation about the error",
                "example": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
              }
            ]
          }
        },
        "required": [
          "code",
          "message"
        ],
        "title": "Error404",
        "type": "object"
      },
      "Error409": {
        "description": "example 409 error",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/SnakeCaseCode"
          },
          "message": {
            "description": "Description of the problem",
            "example": "Request not valid for resource.",
            "type": "string"
          },
          "more_info": {
            "allOf": [
              {
                "$ref": "#/components/schemas/URL"
              },
              {
                "description": "Link to documentation about the error",
                "example": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
              }
            ]
          }
        },
        "required": [
          "code",
          "message"
        ],
        "title": "Error409",
        "type": "object"
      },
      "Error412": {
        "description": "error",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/SnakeCaseCode"
          },
          "message": {
            "description": "Description of the problem",
            "example": "Precondition failed",
            "type": "string"
          },
          "more_info": {
            "allOf": [
              {
                "$ref": "#/components/schemas/URL"
              },
              {
                "description": "Link to documentation about the error",
                "example": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
              }
            ]
          }
        },
        "required": [
          "code",
          "message"
        ],
        "type": "object"
      },
      "ErrorContainer412": {
        "description": "example 409 error container",
        "properties": {
          "errors": {
            "description": "Array of errors",
            "items": {
              "$ref": "#/components/schemas/Error412"
            },
            "minItems": 1,
            "type": "array"
          },
          "trace": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UUID"
              },
              {
                "description": "Unique error identifier",
                "example": "86780a34-e651-4b47-9fb0-184a169cc9af"
              }
            ]
          }
        },
        "required": [
          "trace",
          "errors"
        ],
        "title": "ErrorContainer",
        "type": "object"
      },
      "ErrorContainerGeneric400": {
        "description": "example 400 error container",
        "properties": {
          "errors": {
            "description": "Array of errors",
            "items": {
              "$ref": "#/components/schemas/Error400"
            },
            "minItems": 1,
            "type": "array"
          },
          "trace": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UUID"
              },
              {
                "description": "Unique error identifier",
                "example": "86780a34-e651-4b47-9fb0-184a169cc9af"
              }
            ]
          }
        },
        "required": [
          "trace",
          "errors"
        ],
        "title": "ErrorContainerGeneric400",
        "type": "object"
      },
      "ErrorContainerGeneric403": {
        "description": "example 403 error container",
        "properties": {
          "errors": {
            "description": "Array of errors",
            "items": {
              "$ref": "#/components/schemas/Error403"
            },
            "minItems": 1,
            "type": "array"
          },
          "trace": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UUID"
              },
              {
                "description": "Unique error identifier",
                "example": "86780a34-e651-4b47-9fb0-184a169cc9af"
              }
            ]
          }
        },
        "required": [
          "trace",
          "errors"
        ],
        "title": "ErrorContainerGeneric403",
        "type": "object"
      },
      "ErrorContainerGeneric404": {
        "description": "example 404 error container",
        "properties": {
          "errors": {
            "description": "Array of errors",
            "items": {
              "$ref": "#/components/schemas/Error404"
            },
            "minItems": 1,
            "type": "array"
          },
          "trace": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UUID"
              },
              {
                "description": "Unique error identifier",
                "example": "86780a34-e651-4b47-9fb0-184a169cc9af"
              }
            ]
          }
        },
        "required": [
          "trace",
          "errors"
        ],
        "title": "ErrorContainer",
        "type": "object"
      },
      "ErrorContainerGeneric409": {
        "description": "example 409 error container",
        "properties": {
          "errors": {
            "description": "Array of errors",
            "items": {
              "$ref": "#/components/schemas/Error409"
            },
            "minItems": 1,
            "type": "array"
          },
          "trace": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UUID"
              },
              {
                "description": "Unique error identifier",
                "example": "86780a34-e651-4b47-9fb0-184a169cc9af"
              }
            ]
          }
        },
        "required": [
          "trace",
          "errors"
        ],
        "title": "ErrorContainer",
        "type": "object"
      },
      "ErrorTarget": {
        "description": "error target",
        "properties": {
          "name": {
            "description": "The name of the problematic field, query parameter, or header",
            "example": "name",
            "type": "string"
          },
          "type": {
            "description": "The type of input where the problem was",
            "enum": [
              "field",
              "parameter",
              "header"
            ],
            "example": "field",
            "type": "string"
          }
        },
        "required": [
          "type",
          "name"
        ],
        "title": "ErrorTarget",
        "type": "object"
      },
      "ExportRouteFilterCollection": {
        "description": "Collection of export route filters",
        "properties": {
          "export_route_filters": {
            "description": "Array of export route filters",
            "items": {
              "$ref": "#/components/schemas/RouteFilter"
            },
            "maxItems": 100,
            "minItems": 0,
            "type": "array"
          }
        },
        "required": [
          "export_route_filters"
        ],
        "type": "object"
      },
      "ExportRouteFiltersReplaceTemplate": {
        "description": "Template for replacing existing export route filters",
        "properties": {
          "export_route_filters": {
            "$ref": "#/components/schemas/RouteFilterCollectionTemplate"
          }
        }
      },
      "Gateway": {
        "description": "gateway",
        "properties": {
          "as_prepends": {
            "description": "array of AS Prepend information.",
            "items": {
              "$ref": "#/components/schemas/AsPrepend"
            },
            "maxItems": 50,
            "minItems": 0,
            "type": "array"
          },
          "authentication_key": {
            "$ref": "#/components/schemas/AuthenticationKeyReference"
          },
          "bfd_config": {
            "$ref": "#/components/schemas/GatewayBfdConfig"
          },
          "bgp_asn": {
            "description": "Customer BGP ASN",
            "example": 64999,
            "type": "integer"
          },
          "bgp_base_cidr": {
            "description": "(DEPRECATED) BGP base CIDR is deprecated and no longer recognized by the Direct Link APIs.\n\nSee bgp_cer_cidr and bgp_ibm_cidr fields instead for IP related information.\n\nDeprecated field bgp_base_cidr will be removed from the API specification after 15-MAR-2021.",
            "type": "string"
          },
          "bgp_cer_cidr": {
            "description": "BGP customer edge router CIDR",
            "example": "10.254.30.78/30",
            "type": "string"
          },
          "bgp_ibm_asn": {
            "description": "IBM BGP ASN",
            "example": 13884,
            "type": "integer"
          },
          "bgp_ibm_cidr": {
            "description": "BGP IBM CIDR",
            "example": "10.254.30.77/30",
            "type": "string"
          },
          "bgp_status": {
            "description": "Gateway BGP status.\nThe list of enumerated values for this property may expand in the future. Code and processes using this field \nmust tolerate unexpected values.",
            "enum": [
              "active",
              "connect",
              "established",
              "idle"
            ],
            "example": "active",
            "type": "string"
          },
          "bgp_status_updated_at": {
            "description": "Date and time bgp status was updated",
            "example": "2020-08-20T06:58:41.909781Z",
            "format": "date-time",
            "type": "string"
          },
          "carrier_name": {
            "description": "Carrier name.  Only set for type=dedicated gateways.",
            "example": "myCarrierName",
            "maxLength": 128,
            "minLength": 1,
            "type": "string"
          },
          "change_request": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GatewayChangeRequest"
              }
            ],
            "description": "Changes pending approval for provider managed Direct Link Connect gateways."
          },
          "completion_notice_reject_reason": {
            "description": "Reason for completion notice rejection.  Only included on type=dedicated gateways with a rejected completion notice.",
            "example": "The completion notice file was blank",
            "type": "string"
          },
          "connection_mode": {
            "description": "Type of services this Gateway is attached to. Mode transit means this Gateway will be attached to Transit Gateway Service and direct means this Gateway will be attached to vpc or classic connection.\nThe list of enumerated values for this property may expand in the future. Code and processes using this field \nmust tolerate unexpected values.",
            "enum": [
              "direct",
              "transit"
            ],
            "example": "transit",
            "type": "string"
          },
          "created_at": {
            "description": "The date and time resource was created",
            "format": "date-time",
            "type": "string"
          },
          "crn": {
            "description": "The CRN (Cloud Resource Name) of this gateway",
            "example": "crn:v1:bluemix:public:directlink:dal03:a/4111d05f36894e3cb9b46a43556d9000::dedicated:ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
            "type": "string"
          },
          "cross_account": {
            "description": "Indicates whether this gateway is cross account gateway.",
            "example": false,
            "type": "boolean"
          },
          "cross_connect_router": {
            "description": "Cross connect router. Only included on type=dedicated gateways.",
            "example": "xcr01.dal03",
            "type": "string"
          },
          "customer_name": {
            "description": "Customer name.  Only set for type=dedicated gateways.",
            "example": "newCustomerName",
            "maxLength": 128,
            "minLength": 1,
            "type": "string"
          },
          "default_export_route_filter": {
            "$ref": "#/components/schemas/GatewayDefaultRouteFilter"
          },
          "default_import_route_filter": {
            "$ref": "#/components/schemas/GatewayDefaultRouteFilter"
          },
          "global": {
            "description": "Gateways with global routing (`true`) can connect to networks outside their associated region.",
            "example": true,
            "type": "boolean"
          },
          "id": {
            "description": "The unique identifier of this gateway",
            "example": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
            "type": "string"
          },
          "link_status": {
            "description": "Gateway link status.  Only included on type=dedicated gateways.\nThe list of enumerated values for this property may expand in the future. Code and processes using this field \nmust tolerate unexpected values.",
            "enum": [
              "down",
              "up"
            ],
            "example": "up",
            "type": "string"
          },
          "link_status_updated_at": {
            "description": "Date and time link status was updated",
            "example": "2020-08-20T06:58:41.909781Z",
            "format": "date-time",
            "type": "string"
          },
          "location_display_name": {
            "description": "Gateway location long name",
            "example": "Dallas 03",
            "type": "string"
          },
          "location_name": {
            "description": "Gateway location",
            "example": "dal03",
            "type": "string"
          },
          "macsec": {
            "$ref": "#/components/schemas/GatewayMacsecReference"
          },
          "macsec_capability": {
            "$ref": "#/components/schemas/GatewayMacsecCapability"
          },
          "metered": {
            "description": "Metered billing option.  When `true` gateway usage is billed per gigabyte.  When `false` there is no per gigabyte usage charge, instead a flat rate is charged for the gateway.",
            "example": false,
            "type": "boolean"
          },
          "name": {
            "description": "The unique user-defined name for this gateway.",
            "example": "myGateway",
            "maxLength": 63,
            "minLength": 1,
            "pattern": "^([a-zA-Z]|[a-zA-Z][-_a-zA-Z0-9]*[a-zA-Z0-9])$",
            "type": "string"
          },
          "operational_status": {
            "description": "Gateway operational status.\nThe list of enumerated values for this property may expand in the future. Code and processes using this field \nmust tolerate unexpected values.\n\nSee `operational_status_reasons[]` for possible remediation of the `failed` `operational_status`.",
            "enum": [
              "awaiting_completion_notice",
              "awaiting_loa",
              "configuring",
              "create_pending",
              "create_rejected",
              "completion_notice_approved",
              "completion_notice_received",
              "completion_notice_rejected",
              "delete_pending",
              "loa_accepted",
              "loa_created",
              "loa_rejected",
              "provisioned",
              "failed"
            ],
            "type": "string"
          },
          "operational_status_reasons": {
            "description": "Context for certain values of `operational_status`.",
            "items": {
              "$ref": "#/components/schemas/GatewayStatusReason"
            },
            "maxItems": 10,
            "minItems": 0,
            "type": "array"
          },
          "patch_panel_completion_notice": {
            "description": "Gateway patch panel complete notification from implementation team",
            "example": "patch panel configuration details",
            "type": "string"
          },
          "port": {
            "$ref": "#/components/schemas/GatewayPortReference"
          },
          "provider_api_managed": {
            "description": "Indicates whether gateway changes must be made via a provider portal.",
            "example": false,
            "type": "boolean"
          },
          "resource_group": {
            "$ref": "#/components/schemas/ResourceGroupReference"
          },
          "speed_mbps": {
            "description": "Gateway speed in megabits per second",
            "example": 1000,
            "type": "integer"
          },
          "type": {
            "description": "Offering type.\nThe list of enumerated values for this property may expand in the future. Code and processes using this field \nmust tolerate unexpected values.",
            "enum": [
              "connect",
              "dedicated"
            ],
            "example": "dedicated",
            "type": "string"
          },
          "vlan": {
            "description": "VLAN configured for this gateway. If there is no vlan configured for the gateway, the vlan will be absent.\nThis property will also be absent if this gateway's `crn` is in another account.",
            "example": 10,
            "type": "integer"
          }
        },
        "required": [
          "bgp_asn",
          "created_at",
          "default_export_route_filter",
          "default_import_route_filter",
          "name",
          "operational_status",
          "operational_status_reasons",
          "type",
          "location_name",
          "speed_mbps",
          "metered",
          "global",
          "crn",
          "id",
          "location_display_name",
          "cross_account"
        ],
        "title": "Gateway",
        "type": "object"
      },
      "GatewayActionTemplate": {
        "description": "Approve or reject a pending change request.  Only used for provider created gateways to approve or reject changes initiated from a providers portal.",
        "properties": {
          "action": {
            "description": "Action request",
            "enum": [
              "create_gateway_approve",
              "create_gateway_reject",
              "delete_gateway_approve",
              "delete_gateway_reject",
              "update_attributes_approve",
              "update_attributes_reject"
            ],
            "type": "string"
          },
          "as_prepends": {
            "description": "Applicable for create_gateway_approve requests to create AS Prepends. Contains an array of AS Prepend configuration information.",
            "items": {
              "$ref": "#/components/schemas/AsPrependTemplate"
            },
            "maxItems": 50,
            "minItems": 0,
            "type": "array"
          },
          "authentication_key": {
            "$ref": "#/components/schemas/AuthenticationKeyIdentity"
          },
          "bfd_config": {
            "$ref": "#/components/schemas/GatewayBfdConfigActionTemplate"
          },
          "connection_mode": {
            "default": "direct",
            "description": "Applicable for create_gateway_approve requests to select the type of services this gateway is attached to. Mode transit indicates this gateway will be attached to Transit Gateway Service and direct means this gateway will be attached to vpc or classic connection. If unspecified on create_gateway_approve, default value direct is used. The list of enumerated values for this property may expand in the future. Code and processes using this field must tolerate unexpected values.",
            "enum": [
              "direct",
              "transit"
            ],
            "example": "transit",
            "type": "string"
          },
          "default_export_route_filter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GatewayDefaultRouteFilter"
              },
              {
                "default": "permit"
              }
            ]
          },
          "default_import_route_filter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GatewayDefaultRouteFilter"
              },
              {
                "default": "permit"
              }
            ]
          },
          "export_route_filters": {
            "$ref": "#/components/schemas/RouteFilterCollectionTemplate"
          },
          "global": {
            "description": "Applicable for create_gateway_approve requests to select the gateway's routing option. Gateways with global routing (`true`) can connect to networks outside of their associated region.",
            "example": true,
            "type": "boolean"
          },
          "import_route_filters": {
            "$ref": "#/components/schemas/RouteFilterCollectionTemplate"
          },
          "metered": {
            "description": "Applicable for create_gateway_approve requests to select the gateway's metered billing option.  When `true` gateway usage is billed per gigabyte.  When `false` there is no per gigabyte usage charge, instead a flat rate is charged for the gateway.",
            "example": false,
            "type": "boolean"
          },
          "resource_group": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceGroupIdentity"
              }
            ],
            "description": "Set for create_gateway_approve requests to select the gateway's resource group.  If unspecified on create_gateway_approve, the account's [default resource\ngroup](https://cloud.ibm.com/apidocs/resource-manager#introduction) is used."
          },
          "updates": {
            "description": "Specify attribute updates being approved or rejected, update_attributes_approve and update_attributes_reject actions must provide an updates field that matches the gateway's current pending changes.",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/GatewayClientSpeedUpdate"
                },
                {
                  "$ref": "#/components/schemas/GatewayClientBGPIPUpdate"
                },
                {
                  "$ref": "#/components/schemas/GatewayClientBGPASNUpdate"
                },
                {
                  "$ref": "#/components/schemas/GatewayClientVLANUpdate"
                }
              ]
            },
            "type": "array"
          }
        }
      },
      "GatewayBFDStatus": {
        "description": "Gateway bfd status",
        "properties": {
          "type": {
            "description": "Status type",
            "enum": [
              "bfd"
            ],
            "example": "bfd",
            "type": "string"
          },
          "updated_at": {
            "description": "Date and time status was collected",
            "example": "2020-08-20T06:58:41.909781Z",
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "description": "Status",
            "enum": [
              "not_available",
              "init",
              "up",
              "down"
            ],
            "example": "up",
            "type": "string"
          }
        },
        "required": [
          "updated_at",
          "value",
          "type"
        ],
        "title": "GatewayBFDStatus",
        "type": "object"
      },
      "GatewayBGPStatus": {
        "description": "Gateway bgp status",
        "properties": {
          "type": {
            "description": "Status type",
            "enum": [
              "bgp"
            ],
            "example": "bgp",
            "type": "string"
          },
          "updated_at": {
            "description": "Date and time status was collected",
            "example": "2020-08-20T06:58:41.909781Z",
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "description": "Status",
            "enum": [
              "active",
              "connect",
              "established",
              "idle"
            ],
            "example": "active",
            "type": "string"
          }
        },
        "required": [
          "updated_at",
          "value",
          "type"
        ],
        "title": "GatewayBGPStatus",
        "type": "object"
      },
      "GatewayBfdConfig": {
        "description": "BFD configuration information.",
        "properties": {
          "bfd_status": {
            "description": "Gateway BFD status.\nThe list of enumerated values for this property may expand in the future. Code and processes using this field\nmust tolerate unexpected values.",
            "enum": [
              "init",
              "up",
              "down"
            ],
            "example": "up",
            "type": "string"
          },
          "bfd_status_updated_at": {
            "description": "Date and time bfd status was updated",
            "example": "2020-08-20T06:58:41.909781Z",
            "format": "date-time",
            "type": "string"
          },
          "interval": {
            "description": "Minimum interval in milliseconds at which the local routing device transmits hello packets and then expects to receive a reply from a neighbor with which it has established a BFD session. ",
            "example": 2000,
            "maximum": 255000,
            "minimum": 300,
            "type": "integer"
          },
          "multiplier": {
            "default": 3,
            "description": "The number of hello packets not received by a neighbor that causes the originating interface to be declared down. ",
            "example": 10,
            "maximum": 255,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "interval",
          "multiplier"
        ]
      },
      "GatewayBfdConfigActionTemplate": {
        "description": "Applicable for create_gateway_approve requests to select the gateway's BFD configuration information. ",
        "properties": {
          "interval": {
            "description": "Minimum interval in milliseconds at which the local routing device transmits hello packets and then expects to receive a reply from a neighbor with which it has established a BFD session. ",
            "example": 2000,
            "maximum": 255000,
            "minimum": 300,
            "type": "integer"
          },
          "multiplier": {
            "default": 3,
            "description": "The number of hello packets not received by a neighbor that causes the originating interface to be declared down.",
            "example": 10,
            "maximum": 255,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "interval"
        ]
      },
      "GatewayBfdConfigTemplate": {
        "description": "BFD configuration information.",
        "properties": {
          "interval": {
            "description": "Minimum interval in milliseconds at which the local routing device transmits hello packets and then expects to receive a reply from a neighbor with which it has established a BFD session. ",
            "example": 2000,
            "maximum": 255000,
            "minimum": 300,
            "type": "integer"
          },
          "multiplier": {
            "default": 3,
            "description": "The number of hello packets not received by a neighbor that causes the originating interface to be declared down.",
            "example": 10,
            "maximum": 255,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "interval"
        ]
      },
      "GatewayBfdPatchTemplate": {
        "description": "BFD configuration information.",
        "properties": {
          "interval": {
            "description": "Minimum interval in milliseconds at which the local routing device transmits hello packets and then expects to receive a reply from a neighbor with which it has established a BFD session. \n\nTo clear the BFD configuration patch its interval to 0.",
            "example": 2000,
            "maximum": 255000,
            "minimum": 300,
            "type": "integer"
          },
          "multiplier": {
            "default": 3,
            "description": "The number of hello packets not received by a neighbor that causes the originating interface to be declared down.",
            "example": 10,
            "maximum": 255,
            "minimum": 1,
            "type": "integer"
          }
        }
      },
      "GatewayChangeRequest": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/GatewayClientGatewayCreate"
          },
          {
            "$ref": "#/components/schemas/GatewayClientGatewayDelete"
          },
          {
            "$ref": "#/components/schemas/GatewayClientGatewayUpdateAttributes"
          }
        ],
        "title": "GatewayChangeRequest"
      },
      "GatewayClientBGPASNUpdate": {
        "description": "The autonomous system number (ASN) of Border Gateway Protocol\n(BGP) configuration for the IBM side of the DL 2.0 gateway.",
        "properties": {
          "bgp_asn": {
            "description": "New gateway BGP ASN.",
            "example": 64999,
            "type": "integer"
          }
        },
        "title": "BGPASN",
        "type": "object"
      },
      "GatewayClientBGPIPUpdate": {
        "description": "Update BGP customer and IBM CIDR.",
        "properties": {
          "bgp_cer_cidr": {
            "description": "BGP customer edge router CIDR is the\nnew CIDR (Classless Inter-Domain Routing) value to be updated on customer\nedge router for the DL 2.0 gateway.\n\nCustomer edge IP and IBM IP should be in the same network. Updating customer\nedge router CIDR should be accompanied with IBM CIDR in the request.\nUpdate customer edge router IP to a valid bgp_cer_cidr and bgp_ibm_cidr CIDR,\nthe value must reside in one of \"10.254.0.0/16\", \"172.16.0.0/12\", \"192.168.0.0/16\",\n\"169.254.0.0/16\" or an owned public CIDR.  bgp_cer_cidr and bgp_ibm_cidr must have\nmatching network and subnet mask values.",
            "example": "169.254.0.10/30",
            "type": "string"
          },
          "bgp_ibm_cidr": {
            "description": "BGP IBM CIDR is the new CIDR (Classless Inter-Domain Routing)\nvalue to be updated on IBM edge router for the DL 2.0 gateway.\n\nIBM IP and customer edge IP should be in the same network.\nUpdating IBM CIDR should be accompanied with customer edge router CIDR in the request.\nUpdate IBM CIDR to a valid bgp_cer_cidr and bgp_ibm_cidr CIDR, the value must reside\nin one of \"10.254.0.0/16\", \"172.16.0.0/12\", \"192.168.0.0/16\", \"169.254.0.0/16\"\nor an owned public CIDR.  bgp_cer_cidr and bgp_ibm_cidr must have matching network\nand subnet mask values.",
            "example": "169.254.0.9/30",
            "type": "string"
          }
        },
        "title": "BGPCIDR",
        "type": "object"
      },
      "GatewayClientGatewayCreate": {
        "description": "gateway create",
        "properties": {
          "type": {
            "description": "type of gateway change request",
            "enum": [
              "create_gateway"
            ],
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "GatewayCreate",
        "type": "object"
      },
      "GatewayClientGatewayDelete": {
        "description": "gateway delete",
        "properties": {
          "type": {
            "description": "type of gateway change request",
            "enum": [
              "delete_gateway"
            ],
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "GatewayDelete",
        "type": "object"
      },
      "GatewayClientGatewayUpdateAttributes": {
        "description": "gateway attributes update",
        "properties": {
          "type": {
            "description": "type of gateway change request",
            "enum": [
              "update_attributes"
            ],
            "type": "string"
          },
          "updates": {
            "description": "array of pending updates",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/GatewayClientSpeedUpdate"
                },
                {
                  "$ref": "#/components/schemas/GatewayClientBGPIPUpdate"
                },
                {
                  "$ref": "#/components/schemas/GatewayClientBGPASNUpdate"
                },
                {
                  "$ref": "#/components/schemas/GatewayClientVLANUpdate"
                }
              ]
            },
            "type": "array"
          }
        },
        "required": [
          "type",
          "updates"
        ],
        "title": "GatewayUpdateAttributes",
        "type": "object"
      },
      "GatewayClientSpeedUpdate": {
        "description": "gateway speed change",
        "properties": {
          "speed_mbps": {
            "description": "New gateway speed in megabits per second.",
            "example": 500,
            "type": "integer"
          }
        },
        "title": "Speed",
        "type": "object"
      },
      "GatewayClientVLANDedicatedPatch": {
        "description": "The VLAN to configure for this gateway.\n\nSpecify `null` to remove an existing VLAN configuration.\n\nThe gateway must have a `type` of `dedicated`.",
        "example": 10,
        "maximum": 3967,
        "minimum": 2,
        "nullable": true,
        "type": "integer"
      },
      "GatewayClientVLANUpdate": {
        "description": "Update VLAN for this gateway\n\nVLAN provided should be in the range 2 to 3967.",
        "properties": {
          "vlan": {
            "description": "VLAN to be updated for this gateway.",
            "example": 10,
            "type": "integer"
          }
        },
        "title": "VLAN",
        "type": "object"
      },
      "GatewayCollection": {
        "description": "List of gateways",
        "properties": {
          "gateways": {
            "description": "Collection of Direct Link gateways",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/Gateway"
                },
                {
                  "$ref": "#/components/schemas/CrossAccountGateway"
                }
              ]
            },
            "type": "array"
          }
        },
        "required": [
          "gateways"
        ],
        "title": "GatewayCollection",
        "type": "object"
      },
      "GatewayDefaultRouteFilter": {
        "description": "The default directional route filter action that applies to routes that do not match any directional route filters.",
        "enum": [
          "permit",
          "deny"
        ],
        "example": "permit",
        "type": "string"
      },
      "GatewayLinkStatus": {
        "description": "Gateway link status. Only available for dedicated gateways.",
        "properties": {
          "type": {
            "description": "Status type",
            "enum": [
              "link"
            ],
            "example": "link",
            "type": "string"
          },
          "updated_at": {
            "description": "Date and time status was collected",
            "example": "2020-08-20T06:58:41.909781Z",
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "description": "Status",
            "enum": [
              "up",
              "down"
            ],
            "example": "up",
            "type": "string"
          }
        },
        "required": [
          "updated_at",
          "value",
          "type"
        ],
        "title": "GatewayLinkStatus",
        "type": "object"
      },
      "GatewayMacsec": {
        "description": "MACsec configuration information of a direct link.",
        "properties": {
          "active": {
            "description": "Indicates if the MACsec feature is currently active (true) or inactive (false) for a direct link.",
            "example": true,
            "type": "boolean"
          },
          "cipher_suite": {
            "description": "The cipher suite used in generating the security association key (SAK).",
            "enum": [
              "gcm_aes_xpn_256"
            ],
            "example": "gcm_aes_xpn_256",
            "type": "string"
          },
          "confidentiality_offset": {
            "description": "The confidentiality offset determines the number of octets in an Ethernet frame that are not encrypted.",
            "enum": [
              0
            ],
            "example": 0,
            "type": "integer"
          },
          "created_at": {
            "description": "The date and time the resource was created",
            "example": "2020-11-02T20:40:29.622Z",
            "format": "date-time",
            "type": "string"
          },
          "key_server_priority": {
            "description": "Used in the MACsec Key Agreement (MKA) protocol to determine which peer acts as the key server.\n\nLower values indicate a higher preference to be the key server.\n\nThe MACsec configuration on the direct link will always set this value to 255.",
            "example": 255,
            "maximum": 255,
            "minimum": 0,
            "type": "integer"
          },
          "sak_rekey": {
            "$ref": "#/components/schemas/SakRekey"
          },
          "security_policy": {
            "description": "Determines how packets without MACsec headers are handled.\n\n- `must_secure` - Packets without MACsec headers are dropped. Use this policy to prefer security over network availability.\n- `should_secure` - Packets without MACsec headers are allowed. Use this policy to prefer network availability over security.",
            "enum": [
              "must_secure",
              "should_secure"
            ],
            "example": "must_secure",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/GatewayMacsecStatus"
          },
          "status_reasons": {
            "description": "Context for certain values of `status`.",
            "items": {
              "$ref": "#/components/schemas/GatewayMacsecStatusReason"
            },
            "maxItems": 10,
            "minItems": 0,
            "type": "array"
          },
          "updated_at": {
            "description": "The date and time the resource was last updated",
            "example": "2020-11-02T20:40:29.622Z",
            "format": "date-time",
            "type": "string"
          },
          "window_size": {
            "$ref": "#/components/schemas/WindowSize"
          }
        },
        "required": [
          "created_at",
          "updated_at",
          "active",
          "cipher_suite",
          "confidentiality_offset",
          "key_server_priority",
          "sak_rekey",
          "security_policy",
          "window_size",
          "status",
          "status_reasons"
        ],
        "type": "object"
      },
      "GatewayMacsecCak": {
        "description": "A connectivity association key (CAK) used in the MACsec Key Agreement (MKA) protocol.\n\nMACsec CAKs consist of both a name and key. The CAK's `name` must be a hexadecimal string of even lengths between 2 to 64 inclusive. The CAK's `key` must be a [Hyper Protect Crypto Service Standard Key](https://cloud.ibm.com/docs/hs-crypto?topic=hs-crypto-get-started) type=standard with key material a hexadecimal string exactly 64 characters in length.",
        "properties": {
          "active_delta": {
            "$ref": "#/components/schemas/GatewayMacsecCakActiveDelta"
          },
          "created_at": {
            "description": "The date and time the resource was created",
            "example": "2020-11-02T20:40:29.622Z",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "The unique identifier for this connectivity association key (CAK).",
            "example": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
            "format": "identifier",
            "maxLength": 128,
            "pattern": "^[-0-9a-z]+$",
            "type": "string"
          },
          "key": {
            "$ref": "#/components/schemas/GatewayMacsecCakKeyReference"
          },
          "name": {
            "$ref": "#/components/schemas/GatewayMacsecCakName"
          },
          "session": {
            "description": "The intended session the key will be used to secure.\n\nIf the `primary` MACsec session fails due to a key/key name mismatch on the peers, the `fallback` session can take over. \n\nThere must be a `primary` session CAK. A `fallback` CAK is optional.",
            "enum": [
              "primary",
              "fallback"
            ],
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/GatewayMacsecCakStatus"
          },
          "updated_at": {
            "description": "The date and time the resource was last updated",
            "example": "2020-11-02T20:40:29.622Z",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "created_at",
          "updated_at",
          "name",
          "key",
          "session",
          "status"
        ],
        "type": "object"
      },
      "GatewayMacsecCakActiveDelta": {
        "description": "This field will be present when the `status` of the MACsec CAK is `rotating` or `inactive`. It might be present when the CAK `status` is `failed`. \n\nThis object denotes the MACsec CAK's values prior to beginning a CAK rotation and represents the previous key still configured in the direct link's MACsec key chain.\n\nThis object will be removed when the MACsec CAK rotation completes, indicating that the previous key has been removed from the key chain, and the current CAK's values are in use.",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/GatewayMacsecCakKeyReference"
          },
          "name": {
            "$ref": "#/components/schemas/GatewayMacsecCakName"
          },
          "status": {
            "$ref": "#/components/schemas/GatewayMacsecCakStatus"
          }
        },
        "required": [
          "key",
          "name",
          "status"
        ]
      },
      "GatewayMacsecCakCollection": {
        "description": "List of all connectivity association keys (CAKs) associated with the MACsec feature on a direct link.",
        "properties": {
          "caks": {
            "description": "List of all connectivity association keys (CAKs) associated with the MACsec feature on a direct link.",
            "items": {
              "$ref": "#/components/schemas/GatewayMacsecCak"
            },
            "maxItems": 4,
            "minItems": 1,
            "type": "array"
          }
        }
      },
      "GatewayMacsecCakIdentifier": {
        "description": "The unique identifier for this connectivity association key (CAK).",
        "example": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
        "format": "identifier",
        "maxLength": 128,
        "pattern": "^[-0-9a-z]+$",
        "type": "string"
      },
      "GatewayMacsecCakKeyIdentity": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/HpcsKeyIdentity"
          },
          {
            "$ref": "#/components/schemas/SecretsManagerSecretIdentity"
          }
        ]
      },
      "GatewayMacsecCakKeyReference": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/HpcsCakKeyReference"
          },
          {
            "$ref": "#/components/schemas/SecretsManagerCakKeyReference"
          }
        ]
      },
      "GatewayMacsecCakName": {
        "description": "The name identifies the connectivity association key (CAK) within the MACsec key chain.\n\nThe CAK's `name` must be a hexadecimal string of even lengths between 2 to 64 inclusive.\n\nThis value, along with the material of the `key`, must match on the MACsec peers.",
        "example": "1000",
        "maxLength": 64,
        "minLength": 2,
        "pattern": "^([0-9a-fA-F]{2}){1,32}$",
        "type": "string"
      },
      "GatewayMacsecCakPatch": {
        "description": "Patch fields for CAK of MACsec configuration on a direct link.\n\nWhen rotating a CAK, patch both the `name` and `key` fields simultaneously. Both must have new values and cannot match with another CAK. Neither `name` nor `key` is allowed to be patched on its own.",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/GatewayMacsecCakKeyIdentity"
          },
          "name": {
            "$ref": "#/components/schemas/GatewayMacsecCakName"
          }
        }
      },
      "GatewayMacsecCakPrototype": {
        "description": "The prototype for a connectivity association key (CAK) used in the MACsec Key Agreement (MKA) protocol.",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/GatewayMacsecCakKeyIdentity"
          },
          "name": {
            "$ref": "#/components/schemas/GatewayMacsecCakName"
          },
          "session": {
            "description": "The intended session the key will be used to secure.\n\nIf the `primary` MACsec session fails due to a key/key name mismatch on the peers, the `fallback` session can take over. \n\nThere must be a `primary` session CAK. A `fallback` CAK is optional.",
            "enum": [
              "primary",
              "fallback"
            ],
            "type": "string"
          }
        },
        "required": [
          "name",
          "key",
          "session"
        ],
        "type": "object"
      },
      "GatewayMacsecCakStatus": {
        "description": "Current status of the CAK.\n\nStatus `operational` is returned when the CAK is configured successfully.\n\nStatus `rotating` is returned during a key rotation. The CAK defined by `active_delta` is still configured on the device and could be securing the MACsec session. In the case of a primary CAK, the status will be `rotating` for a period of time while waiting for the MACsec session to be secured with the new CAK. After that time, the CAK will either enter `active` or `inactive` status.\n\nStatus `active` is returned when the CAK is configured successfully and is currently used to secure the MACsec session.\n\nStatus `inactive` is returned when the CAK is configured successfully, but is not currently used to secure the MACsec session. The CAK might enter `rotating` status, and ultimately the `active` status, if it is found to be used to secure the MACsec session. The CAK might never leave this status on its own (e.g. if there is a key/key name mismatch). You are allowed to patch the CAK in this state to start the rotation procedure again.\n\nStatus `failed` is returned when the CAK cannot be configured. To recover, first resolve any issues with your HPCS key, then patch this CAK with the same or new key. Alternatively, you can delete this CAK if used for the `fallback` session.",
        "enum": [
          "operational",
          "rotating",
          "active",
          "inactive",
          "failed"
        ],
        "example": "active",
        "type": "string"
      },
      "GatewayMacsecCapability": {
        "allOf": [
          {
            "$ref": "#/components/schemas/MacsecCapability"
          }
        ],
        "description": "Indicates the direct link's MACsec capability. It must match one of the MACsec related `capabilities` of the `cross_connect_router`.\n\nOnly included on type=dedicated direct links.\n\n- `non_macsec`: The direct link does not support MACsec.\n- `macsec`: The direct link supports MACsec. The MACsec feature must be enabled.\n- `macsec_optional`: The direct link supports MACsec. The MACsec feature is not required and can be enabled after direct link creation."
      },
      "GatewayMacsecCapabilityTemplate": {
        "allOf": [
          {
            "$ref": "#/components/schemas/MacsecCapability"
          }
        ],
        "description": "Indicates the direct link's MACsec capability. It must match one of the MACsec related `capabilities` of the `cross_connect_router`.\n\n- `non_macsec`: The direct link does not support MACsec.\n- `macsec`: The direct link supports MACsec. The MACsec feature must be enabled.\n- `macsec_optional`: The direct link supports MACsec. The MACsec feature is not required and can be enabled after direct link creation.\n\nIf not explicitly provided, the field will be assigned with the following priorities based on `cross_connect_router` capabilities and available ports:\n  - `macsec` was not provided in the request\n    - `non_macsec`\n    - `macsec_optional`\n  - `macsec` was provided in the request\n    - `macsec_optional`\n    - `macsec`"
      },
      "GatewayMacsecPatch": {
        "description": "Patch fields for MACsec configuration of a direct link.",
        "properties": {
          "active": {
            "description": "Sets the MACsec feature to be active (true) or inactive (false) for a direct link.",
            "example": true,
            "type": "boolean"
          },
          "sak_rekey": {
            "$ref": "#/components/schemas/SakRekeyPatch"
          },
          "security_policy": {
            "description": "Determines how packets without MACsec headers are handled.\n\n- `must_secure` - Packets without MACsec headers are dropped. Use this policy to prefer security over network availability.\n- `should_secure` - Packets without MACsec headers are allowed. Use this policy to prefer network availability over security.",
            "enum": [
              "must_secure",
              "should_secure"
            ],
            "example": "must_secure",
            "type": "string"
          },
          "window_size": {
            "$ref": "#/components/schemas/WindowSizePatch"
          }
        }
      },
      "GatewayMacsecPrototype": {
        "description": "MACsec configuration information of a direct link.",
        "properties": {
          "active": {
            "description": "Determines if the MACsec feature will initially be active (true) or inactive (false) for a direct link.",
            "example": true,
            "type": "boolean"
          },
          "caks": {
            "description": "List of all connectivity association keys (CAKs) to be associated associated with the MACsec feature on a direct link.\n\nThere must be at least one CAK with `session`: `primary`. There can be at most one CAK with `session`: `fallback` \n\nAll CAKs must reference a unique key.",
            "items": {
              "$ref": "#/components/schemas/GatewayMacsecCakPrototype"
            },
            "maxItems": 4,
            "minItems": 1,
            "type": "array"
          },
          "sak_rekey": {
            "$ref": "#/components/schemas/SakRekeyPrototype"
          },
          "security_policy": {
            "description": "Determines how packets without MACsec headers are handled.\n\n- `must_secure` - Packets without MACsec headers are dropped. Use this policy to prefer security over network availability.\n- `should_secure` - Packets without MACsec headers are allowed. Use this policy to prefer network availability over security.",
            "enum": [
              "must_secure",
              "should_secure"
            ],
            "example": "must_secure",
            "type": "string"
          },
          "window_size": {
            "$ref": "#/components/schemas/WindowSizePrototype"
          }
        },
        "required": [
          "active",
          "caks",
          "sak_rekey",
          "security_policy"
        ],
        "type": "object"
      },
      "GatewayMacsecReference": {
        "description": "MACsec configuration information of a direct link.",
        "properties": {
          "active": {
            "description": "Indicates if the MACsec feature is currently active (true) or inactive (false) for a direct link.",
            "example": true,
            "type": "boolean"
          },
          "security_policy": {
            "description": "Determines how packets without MACsec headers are handled.\n\n- `must_secure` - Packets without MACsec headers are dropped. Use this policy to prefer security over network availability.\n- `should_secure` - Packets without MACsec headers are allowed. Use this policy to prefer network availability over security.",
            "enum": [
              "must_secure",
              "should_secure"
            ],
            "example": "must_secure",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/GatewayMacsecStatus"
          },
          "status_reasons": {
            "description": "Context for certain values of `status`.",
            "items": {
              "$ref": "#/components/schemas/GatewayMacsecStatusReason"
            },
            "maxItems": 10,
            "minItems": 0,
            "type": "array"
          }
        },
        "required": [
          "active",
          "security_policy",
          "status",
          "status_reasons"
        ]
      },
      "GatewayMacsecStatus": {
        "description": "Current status of MACsec on this direct link.  \n\nStatus `offline` is returned when MACsec is inactive and during direct link creation.\n\nStatus `deleting` is returned when MACsec during removal of MACsec from the direct link and during direct link deletion.\n\nSee `status_reasons[]` for possible remediation of the `failed` `status`.",
        "enum": [
          "init",
          "pending",
          "offline",
          "secured",
          "failed",
          "deleting"
        ],
        "example": "secured",
        "type": "string"
      },
      "GatewayMacsecStatusReason": {
        "description": "A reason for the current `status`.",
        "properties": {
          "code": {
            "description": "A reason code for the status:\n- `macsec_cak_failed`: At least one of the connectivity association keys (CAKs) associated with the MACsec configuration was unable to be configured on the direct link. Refer to the `status` of the CAKs associated with the MACsec configuration to find the the source of this reason.",
            "enum": [
              "macsec_cak_failed"
            ],
            "example": "macsec_cak_failed",
            "type": "string"
          },
          "message": {
            "description": "An explanation of the status reason.",
            "example": "The `authentication_key` failed configuration.",
            "maxLength": 250,
            "minLength": 0,
            "type": "string"
          },
          "more_info": {
            "description": "Link to documentation about this status reason.",
            "example": "https://cloud.ibm.com/docs/dl/TODO_ADD_DOCS_LINK",
            "maxLength": 8000,
            "minLength": 10,
            "pattern": "^http(s)?:\\/\\/([^\\/?#]*)([^?#]*)(\\?([^#]*))?(#(.*))?$",
            "type": "string"
          }
        },
        "required": [
          "code",
          "message"
        ],
        "type": "object"
      },
      "GatewayPatchTemplate": {
        "description": "patch gateway template",
        "properties": {
          "authentication_key": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AuthenticationKeyIdentity"
              },
              {
                "description": "A reference to a key to use as the BGP MD5 authentication key.\n\nPatch to `null` to disable BGP MD5 authentication."
              }
            ]
          },
          "bfd_config": {
            "$ref": "#/components/schemas/GatewayBfdPatchTemplate"
          },
          "bgp_asn": {
            "description": "The autonomous system number (ASN) of Border Gateway Protocol (BGP) configuration for the IBM side of the DL 2.0 gateway.\nAllows use of 2-byte or 4-byte ASNs (1-4294967294), except for the numbers listed below.\nExcluded ASNs: 0, 13884, 36351, 64512, 64513, 65100, 65201–65234, 65402–65433, 65500, 65516, 65519, 65521, 65531, and 4201065000–4201065999.",
            "example": 64999,
            "type": "integer"
          },
          "bgp_cer_cidr": {
            "description": "BGP customer edge router CIDR is the new CIDR (Classless Inter-Domain Routing) value to be updated on customer edge router for the DL 2.0 gateway.\n\nCustomer edge IP and IBM IP should be in the same network. Updating customer edge router CIDR should be accompanied with IBM CIDR in the request.\nUpdate customer edge router IP to a valid bgp_cer_cidr and bgp_ibm_cidr CIDR, the value must reside in one of \"10.254.0.0/16\", \"172.16.0.0/12\", \"192.168.0.0/16\", \"169.254.0.0/16\" or an owned public CIDR.  bgp_cer_cidr and bgp_ibm_cidr must have matching network and subnet mask values.",
            "example": "169.254.0.10/30",
            "type": "string"
          },
          "bgp_ibm_cidr": {
            "description": "BGP IBM CIDR is the new CIDR (Classless Inter-Domain Routing) value to be updated on IBM edge router for the DL 2.0 gateway.\n\nIBM IP and customer edge IP should be in the same network. Updating IBM CIDR should be accompanied with customer edge router CIDR in the request.\nUpdate IBM CIDR to a valid bgp_cer_cidr and bgp_ibm_cidr CIDR, the value must reside in one of \"10.254.0.0/16\", \"172.16.0.0/12\", \"192.168.0.0/16\", \"169.254.0.0/16\" or an owned public CIDR.  bgp_cer_cidr and bgp_ibm_cidr must have matching network and subnet mask values.",
            "example": "169.254.0.9/30",
            "type": "string"
          },
          "connection_mode": {
            "description": "Type of services this Gateway is attached to. Mode transit means this Gateway will be attached to Transit Gateway Service and direct means this Gateway will be attached to vpc or classic connection.\nThe list of enumerated values for this property may expand in the future. Code and processes using this field \nmust tolerate unexpected values.",
            "enum": [
              "direct",
              "transit"
            ],
            "example": "transit",
            "type": "string"
          },
          "default_export_route_filter": {
            "$ref": "#/components/schemas/GatewayDefaultRouteFilter"
          },
          "default_import_route_filter": {
            "$ref": "#/components/schemas/GatewayDefaultRouteFilter"
          },
          "global": {
            "description": "Gateways with global routing (`true`) can connect to networks outside of their associated region.",
            "example": true,
            "type": "boolean"
          },
          "loa_reject_reason": {
            "description": "Use this field during LOA rejection to provide the reason for the rejection.\n\nOnly allowed for type=dedicated gateways.",
            "example": "The port mentioned was incorrect",
            "type": "string"
          },
          "metered": {
            "description": "Metered billing option.  When `true` gateway usage is billed per gigabyte.  When `false` there is no per gigabyte usage charge, instead a flat rate is charged for the gateway.",
            "example": false,
            "type": "boolean"
          },
          "name": {
            "description": "The unique user-defined name for this gateway.",
            "example": "testGateway",
            "maxLength": 63,
            "minLength": 1,
            "pattern": "^([a-zA-Z]|[a-zA-Z][-_a-zA-Z0-9]*[a-zA-Z0-9])$",
            "type": "string"
          },
          "operational_status": {
            "description": "Gateway operational status.  \n\nFor gateways pending LOA approval, patch operational_status to the appropriate value to approve or reject its LOA.  When rejecting an LOA, provide reject reasoning in `loa_reject_reason`.\n\nOnly allowed for type=dedicated gateways.",
            "enum": [
              "loa_accepted",
              "loa_rejected"
            ],
            "example": "loa_accepted",
            "type": "string"
          },
          "patch_panel_completion_notice": {
            "description": "Gateway patch panel complete notification from implementation team",
            "example": "patch panel configuration details",
            "type": "string"
          },
          "speed_mbps": {
            "description": "Gateway speed in megabits per second",
            "example": 1000,
            "type": "integer"
          },
          "vlan": {
            "$ref": "#/components/schemas/GatewayClientVLANDedicatedPatch"
          }
        },
        "title": "GatewayPatchTemplate",
        "type": "object"
      },
      "GatewayPortIdentity": {
        "description": "Select Port Label for new type=connect gateway",
        "properties": {
          "id": {
            "description": "port id",
            "example": "fffdcb1a-fee4-41c7-9e11-9cd99e65c777",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "title": "GatewayPortIdentity",
        "type": "object"
      },
      "GatewayPortReference": {
        "description": "Port information for type=connect gateways.",
        "properties": {
          "id": {
            "description": "Port Identifier",
            "example": "54321b1a-fee4-41c7-9e11-9cd99e000aaa",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "title": "GatewayPortReference",
        "type": "object"
      },
      "GatewayStatistic": {
        "description": "Gateway statistics and debug commands.",
        "properties": {
          "created_at": {
            "description": "Date and time data was collected",
            "example": "2020-08-20T06:58:41.909781Z",
            "format": "date-time",
            "type": "string"
          },
          "data": {
            "description": "statistics output",
            "example": "MKA statistics text...",
            "type": "string"
          },
          "type": {
            "description": "statistic type",
            "enum": [
              "macsec_mka_session",
              "macsec_policy",
              "macsec_mka_statistics",
              "bfd_session"
            ],
            "example": "macsec_policy",
            "type": "string"
          }
        },
        "required": [
          "created_at",
          "data",
          "type"
        ],
        "title": "GatewayStatistic"
      },
      "GatewayStatisticCollection": {
        "description": "gateway statistics",
        "properties": {
          "statistics": {
            "description": "Collection of gateway statistics",
            "items": {
              "$ref": "#/components/schemas/GatewayStatistic"
            },
            "type": "array"
          }
        },
        "required": [
          "statistics"
        ],
        "title": "GatewayStatisticCollection",
        "type": "object"
      },
      "GatewayStatus": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/GatewayBGPStatus"
          },
          {
            "$ref": "#/components/schemas/GatewayBFDStatus"
          },
          {
            "$ref": "#/components/schemas/GatewayLinkStatus"
          }
        ],
        "example": {
          "type": "bgp",
          "updated_at": "2020-08-20T06:58:41.909781Z",
          "value": "active"
        },
        "title": "GatewayStatus",
        "type": "object"
      },
      "GatewayStatusCollection": {
        "description": "gateway status",
        "properties": {
          "status": {
            "description": "array of status",
            "items": {
              "$ref": "#/components/schemas/GatewayStatus"
            },
            "type": "array"
          }
        },
        "title": "GatewayStatusCollection",
        "type": "object"
      },
      "GatewayStatusReason": {
        "description": "A reason for the current `operational_status`.",
        "properties": {
          "code": {
            "description": "A reason code for the status:\n- `authentication_key_failed`: `authentication_key` was unable to be configured on the direct link gateway. To recover, first resolve any issues with your key, then patch the gateway with the same or new key.",
            "enum": [
              "authentication_key_failed"
            ],
            "example": "authentication_key_failed",
            "type": "string"
          },
          "message": {
            "description": "An explanation of the status reason.",
            "example": "The `authentication_key` failed configuration.",
            "maxLength": 250,
            "minLength": 0,
            "type": "string"
          },
          "more_info": {
            "description": "Link to documentation about this status reason.",
            "example": "https://cloud.ibm.com/docs/dl/TODO_ADD_DOCS_LINK",
            "maxLength": 8000,
            "minLength": 10,
            "pattern": "^http(s)?:\\/\\/([^\\/?#]*)([^?#]*)(\\?([^#]*))?(#(.*))?$",
            "type": "string"
          }
        },
        "required": [
          "code",
          "message"
        ],
        "type": "object"
      },
      "GatewayTemplate": {
        "description": "Create gateway template",
        "oneOf": [
          {
            "$ref": "#/components/schemas/GatewayTypeDedicatedTemplate"
          },
          {
            "$ref": "#/components/schemas/GatewayTypeConnectTemplate"
          }
        ],
        "properties": {
          "as_prepends": {
            "description": "array of AS Prepend configuration information.",
            "items": {
              "$ref": "#/components/schemas/AsPrependTemplate"
            },
            "maxItems": 50,
            "minItems": 0,
            "type": "array"
          },
          "authentication_key": {
            "$ref": "#/components/schemas/AuthenticationKeyIdentity"
          },
          "bfd_config": {
            "$ref": "#/components/schemas/GatewayBfdConfigTemplate"
          },
          "bgp_asn": {
            "description": "BGP ASN",
            "example": 64999,
            "type": "integer"
          },
          "bgp_base_cidr": {
            "description": "(DEPRECATED) BGP base CIDR.\n\nField is deprecated.  See bgp_ibm_cidr and bgp_cer_cidr for details on how to create a gateway using either automatic or explicit IP assignment.  Any bgp_base_cidr value set will be ignored.\n\nDeprecated field bgp_base_cidr will be removed from the API specification after 15-MAR-2021.",
            "type": "string"
          },
          "bgp_cer_cidr": {
            "description": "BGP customer edge router CIDR.  \n\nFor auto IP assignment, omit bgp_cer_cidr and bgp_ibm_cidr.  IBM will automatically select values for bgp_cer_cidr and bgp_ibm_cidr.\n\nFor explicit IP assignment set a valid bgp_cer_cidr and bgp_ibm_cidr CIDR, the value must reside in one of \"10.254.0.0/16\", \"172.16.0.0/12\", \"192.168.0.0/16\", \"169.254.0.0/16\" or an owned public CIDR.  bgp_cer_cidr and bgp_ibm_cidr must have matching network and subnet mask values.",
            "example": "169.254.0.10/30",
            "type": "string"
          },
          "bgp_ibm_cidr": {
            "description": "BGP IBM CIDR.\n\nFor auto IP assignment, omit bgp_cer_cidr and bgp_ibm_cidr.  IBM will automatically select values for bgp_cer_cidr and bgp_ibm_cidr.\n\nFor explicit IP assignment set a valid bgp_cer_cidr and bgp_ibm_cidr CIDR, the value must reside in one of \"10.254.0.0/16\", \"172.16.0.0/12\", \"192.168.0.0/16\", \"169.254.0.0/16\" or an owned public CIDR.  bgp_cer_cidr and bgp_ibm_cidr must have matching network and subnet mask values.",
            "example": "169.254.0.9/30",
            "type": "string"
          },
          "connection_mode": {
            "default": "direct",
            "description": "Type of services this Gateway is attached to. Mode transit means this Gateway will be attached to Transit Gateway Service and direct means this Gateway will be attached to vpc or classic connection.\nThe list of enumerated values for this property may expand in the future. Code and processes using this field \nmust tolerate unexpected values.",
            "enum": [
              "direct",
              "transit"
            ],
            "example": "transit",
            "type": "string"
          },
          "default_export_route_filter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GatewayDefaultRouteFilter"
              },
              {
                "default": "permit"
              }
            ]
          },
          "default_import_route_filter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GatewayDefaultRouteFilter"
              },
              {
                "default": "permit"
              }
            ]
          },
          "export_route_filters": {
            "$ref": "#/components/schemas/RouteFilterCollectionTemplate"
          },
          "global": {
            "description": "Gateways with global routing (`true`) can connect to networks outside their associated region.",
            "example": true,
            "type": "boolean"
          },
          "import_route_filters": {
            "$ref": "#/components/schemas/RouteFilterCollectionTemplate"
          },
          "metered": {
            "description": "Metered billing option.  When `true` gateway usage is billed per gigabyte.  When `false` there is no per gigabyte usage charge, instead a flat rate is charged for the gateway.",
            "example": false,
            "type": "boolean"
          },
          "name": {
            "description": "The unique user-defined name for this gateway.",
            "example": "myGateway",
            "type": "string"
          },
          "patch_panel_completion_notice": {
            "description": "Gateway patch panel complete notification from implementation team",
            "example": "patch panel configuration details",
            "type": "string"
          },
          "resource_group": {
            "$ref": "#/components/schemas/ResourceGroupIdentity"
          },
          "speed_mbps": {
            "description": "Gateway speed in megabits per second",
            "example": 1000,
            "type": "integer"
          },
          "type": {
            "description": "Offering type",
            "enum": [
              "connect",
              "dedicated"
            ],
            "example": "dedicated",
            "type": "string"
          }
        },
        "required": [
          "bgp_asn",
          "global",
          "metered",
          "name",
          "speed_mbps",
          "type"
        ],
        "title": "GatewayTemplate",
        "type": "object"
      },
      "GatewayTemplateRouteFilter": {
        "description": "The route filter create template within the Direct Link gateway create template.",
        "properties": {
          "action": {
            "description": "Determines whether routes that match the prefix-set will be allowed (permit) or rejected (deny) through the filter",
            "enum": [
              "permit",
              "deny"
            ],
            "example": "permit",
            "type": "string"
          },
          "ge": {
            "description": "The minimum matching length of the prefix-set (mnemonic for greater than or equal to).",
            "example": 25,
            "maximum": 32,
            "minimum": 1,
            "type": "integer"
          },
          "le": {
            "description": "The maximum matching length of the prefix-set (mnemonic for less than or equal to).",
            "example": 30,
            "maximum": 32,
            "minimum": 1,
            "type": "integer"
          },
          "prefix": {
            "description": "IP prefix representing an address and mask length of the prefix-set",
            "example": "192.168.100.0/24",
            "maxLength": 18,
            "minLength": 7,
            "pattern": "^([0-9]{1,3}\\.){3}[0-9]{1,3}(\\/([0-9]|[1-2][0-9]|3[0-2]))?$",
            "type": "string"
          }
        },
        "required": [
          "prefix",
          "action"
        ],
        "type": "object"
      },
      "GatewayTypeConnectTemplate": {
        "description": "Gateway fields specific to type=connect gateway create",
        "properties": {
          "port": {
            "$ref": "#/components/schemas/GatewayPortIdentity"
          }
        },
        "required": [
          "port"
        ],
        "type": "object"
      },
      "GatewayTypeDedicatedTemplate": {
        "description": "Gateway fields specific to type=dedicated gateway create",
        "properties": {
          "carrier_name": {
            "description": "Carrier name",
            "example": "myCarrierName",
            "maxLength": 128,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9 _-]+$",
            "type": "string"
          },
          "cross_connect_router": {
            "description": "Cross connect router",
            "example": "xcr01.dal03",
            "type": "string"
          },
          "customer_name": {
            "description": "Customer name",
            "example": "newCustomerName",
            "maxLength": 128,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9 _-]+$",
            "type": "string"
          },
          "location_name": {
            "description": "Gateway location",
            "example": "dal03",
            "type": "string"
          },
          "macsec": {
            "$ref": "#/components/schemas/GatewayMacsecPrototype"
          },
          "macsec_capability": {
            "$ref": "#/components/schemas/GatewayMacsecCapabilityTemplate"
          },
          "vlan": {
            "description": "The VLAN to configure for this gateway.",
            "example": 10,
            "maximum": 3967,
            "minimum": 2,
            "type": "integer"
          }
        },
        "required": [
          "carrier_name",
          "cross_connect_router",
          "customer_name",
          "location_name"
        ],
        "type": "object"
      },
      "GatewayVirtualConnection": {
        "description": "Virtual connection",
        "properties": {
          "created_at": {
            "description": "The date and time resource was created",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ID"
              },
              {
                "description": "The unique identifier for this virtual connection",
                "example": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4"
              }
            ]
          },
          "name": {
            "description": "The user-defined name for this virtual connection.  Virtual connection names are unique within a gateway.  This is the name of the virtual connection itself, the network being connected may have its own name attribute. ",
            "example": "newVC",
            "maxLength": 63,
            "minLength": 1,
            "pattern": "^([a-zA-Z]|[a-zA-Z][-_a-zA-Z0-9]*[a-zA-Z0-9])$",
            "type": "string"
          },
          "network_account": {
            "description": "For virtual connections across two different IBM Cloud Accounts network_account indicates the account that owns the target network.",
            "example": "00aa14a2e0fb102c8995ebefff865555",
            "type": "string"
          },
          "network_id": {
            "description": "Unique identifier of the target network.  For type=vpc virtual connections this is the CRN of the target VPC.  This field does not apply to type=classic connections.",
            "example": "crn:v1:bluemix:public:is:us-east:a/28e4d90ac7504be69447111122223333::vpc:aaa81ac8-5e96-42a0-a4b7-6c2e2d1bbbbb",
            "type": "string"
          },
          "status": {
            "description": "Status of the virtual connection.\n\nThe list of enumerated values for this property may expand in the future. Code and processes using this field \nmust tolerate unexpected values.",
            "enum": [
              "pending",
              "attached",
              "approval_pending",
              "rejected",
              "expired",
              "deleting",
              "detached_by_network_pending",
              "detached_by_network"
            ],
            "example": "attached",
            "type": "string"
          },
          "type": {
            "description": "Virtual connection type.\n\nThe list of enumerated values for this property may expand in the future. Code and processes using this field \nmust tolerate unexpected values.",
            "enum": [
              "classic",
              "vpc",
              "transit"
            ],
            "example": "vpc",
            "type": "string"
          }
        },
        "required": [
          "created_at",
          "id",
          "name",
          "status",
          "type"
        ],
        "title": "GatewayVirtualConnection"
      },
      "GatewayVirtualConnectionCollection": {
        "description": "Virtual connection collection",
        "properties": {
          "virtual_connections": {
            "description": "virtual connection array",
            "items": {
              "$ref": "#/components/schemas/GatewayVirtualConnection"
            },
            "type": "array"
          }
        },
        "required": [
          "virtual_connections"
        ],
        "title": "GatewayVirtualConnectionCollection",
        "type": "object"
      },
      "GatewayVirtualConnectionPatchTemplate": {
        "description": "Patch virtual connection template",
        "properties": {
          "name": {
            "description": "The user-defined name for this virtual connection.  Virtual connection names are unique within a gateway.  This is the name of the virtual connection itself, the network being connected may have its own name attribute. ",
            "example": "newConnectionName",
            "maxLength": 63,
            "minLength": 1,
            "pattern": "^([a-zA-Z]|[a-zA-Z][-_a-zA-Z0-9]*[a-zA-Z0-9])$",
            "type": "string"
          },
          "status": {
            "description": "Status of the virtual connection.  Virtual connections that span IBM Cloud Accounts are created in approval_pending status.  The owner of the target network can accept or reject connection requests by patching status to attached or rejected respectively. ",
            "enum": [
              "attached",
              "rejected"
            ],
            "example": "attached",
            "type": "string"
          }
        },
        "title": "GatewayVirtualConnectionPatchTemplate",
        "type": "object"
      },
      "GatewayVirtualConnectionTemplate": {
        "description": "Create virtual connection template",
        "properties": {
          "name": {
            "description": "The user-defined name for this virtual connection.  Virtual connection names are unique within a gateway.  This is the name of the virtual connection itself, the network being connected may have its own name attribute. ",
            "example": "newVC",
            "maxLength": 63,
            "minLength": 1,
            "pattern": "^([a-zA-Z]|[a-zA-Z][-_a-zA-Z0-9]*[a-zA-Z0-9])$",
            "type": "string"
          },
          "network_id": {
            "description": "Unique identifier of the target network.  For type=vpc virtual connections this is the CRN of the target VPC.  This field does not apply to type=classic connections.",
            "example": "crn:v1:bluemix:public:is:us-east:a/28e4d90ac7504be69447111122223333::vpc:aaa81ac8-5e96-42a0-a4b7-6c2e2d1bbbbb",
            "type": "string"
          },
          "type": {
            "description": "The type of virtual connection",
            "enum": [
              "classic",
              "vpc"
            ],
            "example": "vpc",
            "type": "string"
          }
        },
        "required": [
          "name",
          "type"
        ],
        "title": "GatewayVirtualConnectionTemplate"
      },
      "HpcsAuthenticationKeyIdentity": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HpcsKeyIdentity"
          },
          {
            "description": "A reference to a [Hyper Protect Crypto Service Standard Key](https://cloud.ibm.com/docs/hs-crypto?topic=hs-crypto-get-started) to use as the BGP MD5 authentication key.\n\nThe key material of the provided key must be base64 encoded to import into Hyper Protect Crypto Services. The original string must be a maximum of 126 visible ASCII characters in length."
          }
        ]
      },
      "HpcsAuthenticationKeyReference": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HpcsKeyReference"
          },
          {
            "description": "A reference to a [Hyper Protect Crypto Service Standard Key](https://cloud.ibm.com/docs/hs-crypto?topic=hs-crypto-get-started) to use as the BGP MD5 authentication key."
          }
        ]
      },
      "HpcsCakKeyReference": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HpcsKeyReference"
          },
          {
            "description": "A reference to a [Hyper Protect Crypto Service Standard Key](https://cloud.ibm.com/docs/hs-crypto?topic=hs-crypto-get-started) to use as the MACsec CAK key."
          }
        ]
      },
      "HpcsKeyIdentity": {
        "description": "A [Hyper Protect Crypto Service Standard Key](https://cloud.ibm.com/docs/hs-crypto?topic=hs-crypto-get-started).",
        "properties": {
          "crn": {
            "description": "The CRN of the key.",
            "example": "crn:v1:bluemix:public:hs-crypto:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:key:bbb222bc-430a-4de9-9aad-84e5bb022222",
            "format": "crn",
            "maxLength": 512,
            "minLength": 9,
            "pattern": "^crn:v[0-9](:([A-Za-z0-9-._~!$&'()*+,;=@/]|%[0-9A-Z]{2})*){2}:hs-crypto(:([A-Za-z0-9-._~!$&'()*+,;=@/]|%[0-9A-Z]{2})*){5}$",
            "type": "string"
          }
        },
        "required": [
          "crn"
        ],
        "type": "object"
      },
      "HpcsKeyReference": {
        "description": "A reference to a [Hyper Protect Crypto Service Standard Key](https://cloud.ibm.com/docs/hs-crypto?topic=hs-crypto-get-started).",
        "properties": {
          "crn": {
            "description": "The CRN of the referenced key.",
            "example": "crn:v1:bluemix:public:hs-crypto:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:key:bbb222bc-430a-4de9-9aad-84e5bb022222",
            "format": "crn",
            "maxLength": 512,
            "minLength": 9,
            "pattern": "^crn:v[0-9](:([A-Za-z0-9-._~!$&'()*+,;=@/]|%[0-9A-Z]{2})*){2}:hs-crypto(:([A-Za-z0-9-._~!$&'()*+,;=@/]|%[0-9A-Z]{2})*){5}$",
            "type": "string"
          }
        },
        "required": [
          "crn"
        ],
        "type": "object"
      },
      "ID": {
        "description": "unique identifier",
        "example": "0a06fb9b-820f-4c44-8a31-77f1f0806d28",
        "type": "string"
      },
      "ImportRouteFilterCollection": {
        "description": "Collection of import route filters",
        "properties": {
          "import_route_filters": {
            "description": "Array of import route filters",
            "items": {
              "$ref": "#/components/schemas/RouteFilter"
            },
            "maxItems": 100,
            "minItems": 0,
            "type": "array"
          }
        },
        "required": [
          "import_route_filters"
        ],
        "type": "object"
      },
      "ImportRouteFiltersReplaceTemplate": {
        "description": "Template for replacing existing import route filters",
        "properties": {
          "import_route_filters": {
            "$ref": "#/components/schemas/RouteFilterCollectionTemplate"
          }
        }
      },
      "KeyProtectAuthenticationKeyIdentity": {
        "allOf": [
          {
            "$ref": "#/components/schemas/KeyProtectKeyIdentity"
          },
          {
            "description": "A reference to a [Key Protect Standard Key](https://cloud.ibm.com/docs/key-protect?topic=key-protect-getting-started-tutorial) to use as the BGP MD5 authentication key.\n\nThe key material of the provided key must be base64 encoded to import into Key Protect. The original string must be a maximum of 126 visible ASCII characters in length."
          }
        ]
      },
      "KeyProtectAuthenticationKeyReference": {
        "allOf": [
          {
            "$ref": "#/components/schemas/KeyProtectKeyReference"
          },
          {
            "description": "A reference to a [Key Protect Standard Key](https://cloud.ibm.com/docs/key-protect?topic=key-protect-getting-started-tutorial) to use as the BGP MD5 authentication key."
          }
        ]
      },
      "KeyProtectKeyIdentity": {
        "description": "A [Key Protect Standard Key](https://cloud.ibm.com/docs/key-protect?topic=key-protect-getting-started-tutorial).",
        "properties": {
          "crn": {
            "description": "The CRN of the key.",
            "example": "crn:v1:bluemix:public:kms:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:key:bbb222bc-430a-4de9-9aad-84e5bb022222",
            "format": "crn",
            "maxLength": 512,
            "minLength": 9,
            "pattern": "^crn:v[0-9](:([A-Za-z0-9-._~!$&'()*+,;=@/]|%[0-9A-Z]{2})*){2}:kms(:([A-Za-z0-9-._~!$&'()*+,;=@/]|%[0-9A-Z]{2})*){5}$",
            "type": "string"
          }
        },
        "required": [
          "crn"
        ],
        "type": "object"
      },
      "KeyProtectKeyReference": {
        "description": "A reference to a [Key Protect Standard Key](https://cloud.ibm.com/docs/key-protect?topic=key-protect-getting-started-tutorial).",
        "properties": {
          "crn": {
            "description": "The CRN of the referenced key.",
            "example": "crn:v1:bluemix:public:kms:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:key:bbb222bc-430a-4de9-9aad-84e5bb022222",
            "format": "crn",
            "maxLength": 512,
            "minLength": 9,
            "pattern": "^crn:v[0-9](:([A-Za-z0-9-._~!$&'()*+,;=@/]|%[0-9A-Z]{2})*){2}:kms(:([A-Za-z0-9-._~!$&'()*+,;=@/]|%[0-9A-Z]{2})*){5}$",
            "type": "string"
          }
        },
        "required": [
          "crn"
        ],
        "type": "object"
      },
      "LocationCollection": {
        "description": "location collection",
        "properties": {
          "locations": {
            "description": "Collection of Direct Link locations",
            "items": {
              "$ref": "#/components/schemas/LocationOutput"
            },
            "type": "array"
          }
        },
        "required": [
          "locations"
        ],
        "title": "LocationCollection",
        "type": "object"
      },
      "LocationCrossConnectRouterCollection": {
        "description": "List of cross connect router details",
        "properties": {
          "cross_connect_routers": {
            "description": "Array of Routers for this location",
            "items": {
              "$ref": "#/components/schemas/CrossConnectRouter"
            },
            "type": "array"
          }
        },
        "title": "LocationCrossConnectRouterCollection",
        "type": "object"
      },
      "LocationOutput": {
        "description": "location",
        "properties": {
          "billing_location": {
            "description": "Billing location.  Only present for locations where provisioning is enabled.",
            "example": "us",
            "type": "string"
          },
          "building_colocation_owner": {
            "description": "Building colocation owner.  Only present for offering_type=dedicated locations where provisioning is enabled.",
            "example": "MyProvider",
            "type": "string"
          },
          "display_name": {
            "description": "Location long name",
            "example": "Dallas 9",
            "type": "string"
          },
          "location_type": {
            "description": "Location type",
            "example": "PoP",
            "type": "string"
          },
          "macsec_enabled": {
            "description": "Indicate whether location supports MACsec.  Only returned for direct link type=dedicated locations.",
            "example": false,
            "type": "boolean"
          },
          "market": {
            "description": "Location market",
            "example": "Dallas",
            "type": "string"
          },
          "market_geography": {
            "description": "Location geography.  Only present for locations where provisioning is enabled.",
            "example": "N/S America",
            "type": "string"
          },
          "mzr": {
            "description": "Is location a multi-zone region (MZR).  Only present for locations where provisioning is enabled.",
            "example": true,
            "type": "boolean"
          },
          "name": {
            "description": "Location short name",
            "example": "dal03",
            "type": "string"
          },
          "offering_type": {
            "description": "Location offering type",
            "example": "dedicated",
            "type": "string"
          },
          "provision_enabled": {
            "description": "Indicates for the specific offering_type whether this location supports gateway provisioning.",
            "example": true,
            "type": "boolean"
          },
          "vpc_region": {
            "description": "Location's VPC region.  Only present for locations where provisioning is enabled.",
            "example": "us-south",
            "type": "string"
          }
        },
        "required": [
          "display_name",
          "location_type",
          "market",
          "name",
          "offering_type",
          "provision_enabled"
        ],
        "title": "Location",
        "type": "object"
      },
      "MacsecCapability": {
        "description": "Describes the MACsec feature capability of the resource.\n\n- `non_macsec`: The resource itself or associated resources do not have MACsec capabilities\n- `macsec`: The resource itself or associated resources require the use of the MACsec feature.\n- `macsec_optional`: The resource itself or associated resources are capable of using the MACsec feature, but it is not required.",
        "enum": [
          "non_macsec",
          "macsec",
          "macsec_optional"
        ],
        "type": "string"
      },
      "OfferingSpeed": {
        "description": "Speed",
        "properties": {
          "capabilities": {
            "description": "Array of capabilities for billing option",
            "example": [
              "metered",
              "unmetered"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "link_speed": {
            "description": "Link speed in megabits per second",
            "example": 2000,
            "type": "integer"
          },
          "macsec_enabled": {
            "description": "Indicate whether speed supports MACsec.  Only returned for gateway type=dedicated speeds.",
            "example": false,
            "type": "boolean"
          }
        },
        "required": [
          "link_speed",
          "capabilities"
        ],
        "title": "OfferingTypeSpeed",
        "type": "object"
      },
      "OfferingSpeedCollection": {
        "allOf": [
          {
            "description": "List of speeds",
            "properties": {
              "speeds": {
                "description": "speed list",
                "items": {
                  "$ref": "#/components/schemas/OfferingSpeed"
                },
                "type": "array"
              }
            },
            "required": [
              "speeds"
            ],
            "title": "OfferingTypeSpeedCollection",
            "type": "object"
          }
        ]
      },
      "Port": {
        "description": "Provider port details",
        "properties": {
          "direct_link_count": {
            "description": "Count of existing Direct Link gateways in this account on this port.",
            "example": 1,
            "type": "integer"
          },
          "id": {
            "description": "Port identifier",
            "example": "01122b9b-820f-4c44-8a31-77f1f0806765",
            "type": "string"
          },
          "label": {
            "description": "Port Label",
            "example": "XCR-FRK-CS-SEC-01",
            "type": "string"
          },
          "location_display_name": {
            "description": "Port location long name",
            "example": "Dallas 03",
            "type": "string"
          },
          "location_name": {
            "description": "Port location name identifier",
            "example": "dal03",
            "type": "string"
          },
          "provider_name": {
            "description": "Port's provider name",
            "example": "provider_1",
            "maxLength": 24,
            "minLength": 1,
            "pattern": "^([_a-z0-9]+)$",
            "type": "string"
          },
          "supported_link_speeds": {
            "description": "Port's supported speeds in megabits per second",
            "example": [
              1000,
              2000,
              5000,
              10000
            ],
            "items": {
              "type": "integer"
            },
            "type": "array"
          }
        },
        "required": [
          "direct_link_count",
          "id",
          "label",
          "location_display_name",
          "location_name",
          "provider_name",
          "supported_link_speeds"
        ],
        "title": "Port",
        "type": "object"
      },
      "PortCollection": {
        "allOf": [
          {
            "$ref": "#/components/schemas/PortsPaginatedCollection"
          },
          {
            "description": "List of port label details",
            "properties": {
              "ports": {
                "description": "Array of ports",
                "items": {
                  "$ref": "#/components/schemas/Port"
                },
                "type": "array"
              }
            },
            "title": "PortCollection",
            "type": "object"
          }
        ]
      },
      "PortsFirstURL": {
        "description": "url",
        "example": "https://directlink.cloud.ibm.com/v1/ports?limit=100",
        "pattern": "^http(s)?:\\/\\/([^\\/?#]*)([^?#]*)(\\?([^#]*))?(#(.*))?$",
        "type": "string"
      },
      "PortsPaginatedCollection": {
        "description": "A paginated collection of ports",
        "properties": {
          "first": {
            "description": "A reference to the first page of resources",
            "properties": {
              "href": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PortsFirstURL"
                  },
                  {
                    "description": "The URL for the first page of resources"
                  }
                ]
              }
            },
            "required": [
              "href"
            ],
            "type": "object"
          },
          "limit": {
            "default": 100,
            "description": "The maximum number of resources can be returned by the request",
            "example": 100,
            "format": "int64",
            "maximum": 200,
            "minimum": 1,
            "type": "integer"
          },
          "next": {
            "description": "A reference to the next page of resources; this reference is included for all pages except the last page",
            "properties": {
              "href": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PortsURL"
                  },
                  {
                    "description": "URL for the next page of resources"
                  }
                ]
              },
              "start": {
                "description": "start token for the next page of resources",
                "example": "9d5a91a3e2cbd233b5a5b33436855ed1",
                "type": "string"
              }
            },
            "required": [
              "href"
            ],
            "type": "object"
          },
          "total_count": {
            "description": "The total number of resources across all pages",
            "example": 132,
            "format": "int64",
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "limit",
          "total_count",
          "first"
        ],
        "type": "object"
      },
      "PortsURL": {
        "description": "url",
        "example": "https://directlink.cloud.ibm.com/v1/ports?start=9d5a91a3e2cbd233b5a5b33436855ed1&limit=100",
        "pattern": "^http(s)?:\\/\\/([^\\/?#]*)([^?#]*)(\\?([^#]*))?(#(.*))?$",
        "type": "string"
      },
      "ResourceGroupID": {
        "description": "Resource group ID.",
        "example": "0a06fb9b820f4c448a3177f1f0804422",
        "type": "string"
      },
      "ResourceGroupIdentity": {
        "description": "Resource group for this resource. If unspecified, the account's [default resource group](https://cloud.ibm.com/apidocs/resource-manager#introduction) is used.",
        "properties": {
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceGroupID"
              },
              {
                "description": "Resource group identifier",
                "example": "56969d6043e9465c883cb9f7363e78e8"
              }
            ]
          }
        },
        "required": [
          "id"
        ],
        "title": "ResourceGroupIdentity",
        "type": "object"
      },
      "ResourceGroupReference": {
        "description": "Resource group reference",
        "properties": {
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceGroupID"
              },
              {
                "description": "Resource group identifier",
                "example": "56969d6043e9465c883cb9f7363e78e8"
              }
            ]
          }
        },
        "required": [
          "id"
        ],
        "title": "ResourceGroupReference",
        "type": "object"
      },
      "RouteFilter": {
        "description": "Route filter",
        "properties": {
          "action": {
            "description": "Determines whether routes that match the prefix-set will be allowed (permit) or rejected (deny) through the filter",
            "enum": [
              "permit",
              "deny"
            ],
            "example": "permit",
            "type": "string"
          },
          "before": {
            "description": "Identifier of the next route filter considered if a route does not match the current filter. This property builds the ordering among route filters and follows semantics:\n- When before is an identifier of a route filter that exists and is in the same collection, a route will first attempt to match on the current filter before preceding to the filter referenced in this property.\n- When a filter is created with before that matches another filter in the same collection, the existing filter will take precedence. The before of the existing filter will be updated to refer to the newly created filter. The newly created filter will refer to the route filter identified by the provided before.\n- When a filter is created without a before, it takes the lowest precedence. The existing filter of lowest precedence will be updated to refer to the newly created filter.",
            "example": "1a15dcab-7e40-45e1-b7c5-bc690eaa9782",
            "maxLength": 36,
            "minLength": 36,
            "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
            "type": "string"
          },
          "created_at": {
            "description": "The date and time the route filter was created in ISO 8601 format",
            "example": "2020-11-02T20:40:29.622Z",
            "format": "date-time",
            "type": "string"
          },
          "ge": {
            "description": "The minimum matching length of the prefix-set (mnemonic for greater than or equal to).",
            "example": 25,
            "maximum": 32,
            "minimum": 1,
            "type": "integer"
          },
          "id": {
            "description": "The identifier of a route filter",
            "example": "1a15dcab-7e40-45e1-b7c5-bc690eaa9782",
            "type": "string"
          },
          "le": {
            "description": "The maximum matching length of the prefix-set (mnemonic for less than or equal to).",
            "example": 30,
            "maximum": 32,
            "minimum": 1,
            "type": "integer"
          },
          "prefix": {
            "description": "IP prefix representing an address and mask length of the prefix-set",
            "example": "192.168.100.0/24",
            "maxLength": 18,
            "minLength": 7,
            "pattern": "^([0-9]{1,3}\\.){3}[0-9]{1,3}(\\/([0-9]|[1-2][0-9]|3[0-2]))?$",
            "type": "string"
          },
          "updated_at": {
            "description": "The date and time the route filter was last updated",
            "example": "2020-11-02T20:40:29.622Z",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "prefix",
          "action",
          "id",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "RouteFilterCollectionTemplate": {
        "description": "Array of directional route filters for a Direct Link gateway. When creating a gateway or replacing existing route filters, the order of the items in the array will set the ordering of the list of route filters.",
        "items": {
          "$ref": "#/components/schemas/GatewayTemplateRouteFilter"
        },
        "maxItems": 100,
        "minItems": 0,
        "type": "array"
      },
      "RouteReport": {
        "description": "route report",
        "properties": {
          "advertised_routes": {
            "description": "Array of connection prefixes advertised to the on-prem network. This parameter is not returned when the route report was generated prior to inclusion of this parameter.",
            "items": {
              "$ref": "#/components/schemas/RouteReportAdvertisedRoute"
            },
            "type": "array"
          },
          "created_at": {
            "description": "Date and time route report was requested",
            "format": "date-time",
            "type": "string"
          },
          "gateway_routes": {
            "description": "Array of local/direct routes",
            "items": {
              "$ref": "#/components/schemas/RouteReportRoute"
            },
            "type": "array"
          },
          "id": {
            "description": "Report identifier",
            "example": "1a15dcab-7e26-45e1-b7c5-bc690eaa9724",
            "type": "string"
          },
          "on_prem_routes": {
            "description": "Array of on premises routes",
            "items": {
              "$ref": "#/components/schemas/RouteReportOnPremRoute"
            },
            "type": "array"
          },
          "overlapping_routes": {
            "description": "Array of overlapping routes",
            "items": {
              "$ref": "#/components/schemas/RouteReportOverlappingRouteGroup"
            },
            "type": "array"
          },
          "status": {
            "description": "Route report status.\nThe list of enumerated values for this property may expand in the future. Code and processes using this field must tolerate unexpected values.",
            "enum": [
              "complete",
              "pending"
            ],
            "example": "complete",
            "type": "string"
          },
          "updated_at": {
            "description": "Date and time route report was last modified",
            "format": "date-time",
            "type": "string"
          },
          "virtual_connection_routes": {
            "description": "Array of routes on virtual connections",
            "items": {
              "$ref": "#/components/schemas/RouteReportConnection"
            },
            "type": "array"
          }
        },
        "required": [
          "virtual_connection_routes",
          "gateway_routes",
          "on_prem_routes",
          "overlapping_routes",
          "created_at",
          "id",
          "status"
        ]
      },
      "RouteReportAdvertisedRoute": {
        "description": "Route advertised to the on-prem network.",
        "properties": {
          "as_path": {
            "$ref": "#/components/schemas/RouteReportAsPath"
          },
          "prefix": {
            "$ref": "#/components/schemas/RouteReportPrefix"
          }
        },
        "required": [
          "as_path",
          "prefix"
        ],
        "type": "object"
      },
      "RouteReportAsPath": {
        "description": "The BGP AS path of the route",
        "example": "64999 64999 64998 I",
        "type": "string"
      },
      "RouteReportCollection": {
        "description": "route reports",
        "properties": {
          "route_reports": {
            "description": "Array of route reports",
            "items": {
              "$ref": "#/components/schemas/RouteReport"
            },
            "type": "array"
          }
        },
        "required": [
          "route_reports"
        ],
        "type": "object"
      },
      "RouteReportConnection": {
        "description": "Routes of a virtual connection",
        "properties": {
          "routes": {
            "description": "Array of virtual connection's routes",
            "items": {
              "$ref": "#/components/schemas/RouteReportVirtualConnectionRoute"
            },
            "type": "array"
          },
          "virtual_connection_id": {
            "description": "ID of virtual connection",
            "example": "3c265a62-91da-4261-a950-950b6af0eb58",
            "type": "string"
          },
          "virtual_connection_name": {
            "description": "name of virtual connection",
            "example": "vpc1",
            "type": "string"
          },
          "virtual_connection_type": {
            "description": "type of virtual connection",
            "example": "vpc",
            "type": "string"
          }
        },
        "required": [
          "routes"
        ],
        "type": "object"
      },
      "RouteReportOnPremRoute": {
        "description": "on-prem route",
        "properties": {
          "as_path": {
            "$ref": "#/components/schemas/RouteReportAsPath"
          },
          "next_hop": {
            "description": "Next hop address",
            "example": "172.17.0.0",
            "type": "string"
          },
          "prefix": {
            "$ref": "#/components/schemas/RouteReportPrefix"
          }
        },
        "type": "object"
      },
      "RouteReportOverlappingRoute": {
        "description": "overlapping route details",
        "oneOf": [
          {
            "$ref": "#/components/schemas/RouteReportOverlappingRouteForConnection"
          },
          {
            "$ref": "#/components/schemas/RouteReportOverlappingRouteForOthers"
          }
        ],
        "type": "object"
      },
      "RouteReportOverlappingRouteForConnection": {
        "description": "overlapping route details",
        "properties": {
          "prefix": {
            "description": "overlapping prefix",
            "example": "172.17.0.0/16",
            "type": "string"
          },
          "type": {
            "description": "type of the route",
            "enum": [
              "virtual_connection"
            ],
            "type": "string"
          },
          "virtual_connection_id": {
            "description": "virtual connection ID",
            "example": "d2d985d8-1d8e-4e8b-96cd-cee2290ecaff",
            "type": "string"
          }
        },
        "required": [
          "prefix",
          "type",
          "virtual_connection_id"
        ],
        "type": "object"
      },
      "RouteReportOverlappingRouteForOthers": {
        "description": "overlapping route details",
        "properties": {
          "prefix": {
            "description": "overlapping prefix",
            "example": "172.17.0.0/16",
            "type": "string"
          },
          "type": {
            "description": "type of the route",
            "enum": [
              "gateway",
              "on_prem"
            ],
            "type": "string"
          }
        },
        "required": [
          "prefix",
          "type"
        ],
        "type": "object"
      },
      "RouteReportOverlappingRouteGroup": {
        "description": "Collection of overlapping route",
        "properties": {
          "routes": {
            "description": "Array of overlapping connection/prefix pairs",
            "items": {
              "$ref": "#/components/schemas/RouteReportOverlappingRoute"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "RouteReportPrefix": {
        "description": "prefix",
        "example": "172.17.0.0/16",
        "type": "string"
      },
      "RouteReportRoute": {
        "description": "route",
        "properties": {
          "prefix": {
            "$ref": "#/components/schemas/RouteReportPrefix"
          }
        },
        "type": "object"
      },
      "RouteReportVirtualConnectionRoute": {
        "description": "A route originating from an attached virtual connection.",
        "properties": {
          "active": {
            "description": "Indicates whether the route is the preferred path of the prefix.",
            "example": true,
            "type": "boolean"
          },
          "local_preference": {
            "description": "The local preference of the route. This attribute can manipulate the chosen path on routes.",
            "example": "200",
            "maxLength": 50,
            "minLength": 0,
            "type": "string"
          },
          "prefix": {
            "$ref": "#/components/schemas/RouteReportPrefix"
          }
        },
        "required": [
          "prefix"
        ],
        "type": "object"
      },
      "RouterCapability": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/MacsecCapability"
          }
        ],
        "type": "string"
      },
      "SakRekey": {
        "description": "Determines how SAK rekeying occurs. It is either timer based or based on the amount of used packet numbers.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/SakRekeyTimerMode"
          },
          {
            "$ref": "#/components/schemas/SakRekeyPacketNumberRolloverMode"
          }
        ]
      },
      "SakRekeyPacketNumberRolloverMode": {
        "description": "SAK rekey mode based on a high proportion of used packet numbers with the current SAK (the exact threshold determined at the system's discretion).",
        "properties": {
          "mode": {
            "description": "Determines that the SAK rekey occurs based on the used packet numbers.",
            "enum": [
              "packet_number_rollover"
            ],
            "example": "packet_number_rollover",
            "type": "string"
          }
        },
        "required": [
          "mode"
        ]
      },
      "SakRekeyPacketNumberRolloverModePatch": {
        "description": "SAK rekey mode based on a high proportion of used packet numbers with the current SAK (the exact threshold determined at the system's discretion).",
        "properties": {
          "mode": {
            "description": "Determines that the SAK rekey occurs based on the used packet numbers.",
            "enum": [
              "packet_number_rollover"
            ],
            "example": "packet_number_rollover",
            "type": "string"
          }
        },
        "required": [
          "mode"
        ]
      },
      "SakRekeyPacketNumberRolloverModePrototype": {
        "description": "Packet number (PN) rollover SAK rekey mode. The SAK is rekeyed based on the proportion of used packet numbers with the current SAK.",
        "properties": {
          "mode": {
            "description": "Determines that the SAK rekey occurs based on the used packet numbers.",
            "enum": [
              "packet_number_rollover"
            ],
            "example": "packet_number_rollover",
            "type": "string"
          }
        },
        "required": [
          "mode"
        ]
      },
      "SakRekeyPatch": {
        "description": "Determines how SAK rekeying occurs. It is either timer based or based on the amount of used packet numbers.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/SakRekeyTimerModePatch"
          },
          {
            "$ref": "#/components/schemas/SakRekeyPacketNumberRolloverModePatch"
          }
        ]
      },
      "SakRekeyPrototype": {
        "description": "Determines how SAK rekeying occurs. It is either timer based or based on the amount of used packet numbers.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/SakRekeyTimerModePrototype"
          },
          {
            "$ref": "#/components/schemas/SakRekeyPacketNumberRolloverModePrototype"
          }
        ]
      },
      "SakRekeyTimerMode": {
        "description": "SAK rekey mode based on length of time since last rekey.",
        "properties": {
          "interval": {
            "description": "The time, in seconds, to force a Secure Association Key (SAK) rekey.",
            "example": 3600,
            "maximum": 65535,
            "minimum": 60,
            "type": "integer"
          },
          "mode": {
            "description": "Determines that the SAK rekey occurs based on a timer.",
            "enum": [
              "timer"
            ],
            "example": "timer",
            "type": "string"
          }
        },
        "required": [
          "mode",
          "interval"
        ]
      },
      "SakRekeyTimerModePatch": {
        "description": "SAK rekey mode based on length of time since last rekey.",
        "properties": {
          "interval": {
            "description": "The time, in seconds, to force a Secure Association Key (SAK) rekey.",
            "example": 3600,
            "maximum": 65535,
            "minimum": 60,
            "type": "integer"
          },
          "mode": {
            "description": "Determines that the SAK rekey occurs based on a timer.",
            "enum": [
              "timer"
            ],
            "example": "timer",
            "type": "string"
          }
        },
        "required": [
          "mode",
          "interval"
        ]
      },
      "SakRekeyTimerModePrototype": {
        "description": "SAK rekey mode based on length of time since last rekey.",
        "properties": {
          "interval": {
            "description": "The time, in seconds, to force a Secure Association Key (SAK) rekey.",
            "example": 3600,
            "maximum": 65535,
            "minimum": 60,
            "type": "integer"
          },
          "mode": {
            "description": "Determines that the SAK rekey occurs based on a timer.",
            "enum": [
              "timer"
            ],
            "example": "timer",
            "type": "string"
          }
        },
        "required": [
          "mode",
          "interval"
        ]
      },
      "SecretsManagerAuthenticationKeyIdentity": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SecretsManagerSecretIdentity"
          },
          {
            "description": "A reference to a [Secrets Manager Arbitrary Secret](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-getting-started) to use as the BGP MD5 authentication key.\n\nThe secret data of the provided payload must be base64 encoded to store into Secrets Manager. The original string must be a maximum of 126 visible ASCII characters in length."
          }
        ]
      },
      "SecretsManagerAuthenticationKeyReference": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SecretsManagerKeyReference"
          },
          {
            "description": "A reference to a [Secrets Manager Arbitrary Secret](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-getting-started) to use as the BGP MD5 authentication key. The secret data of the provided payload must be base64 encoded to store into Secrets Manager. The original string must be a maximum of 126 visible ASCII characters in length."
          }
        ]
      },
      "SecretsManagerCakKeyReference": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SecretsManagerKeyReference"
          },
          {
            "description": "A reference to a [Secrets Manager Arbitrary Secret](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-getting-started) to use as the MACsec CAK key. The secret data of the provided payload must be base64 encoded to store into Secrets Manager."
          }
        ]
      },
      "SecretsManagerKeyReference": {
        "description": "A reference to a [Secrets Manager Arbitrary Secret](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-getting-started).",
        "properties": {
          "crn": {
            "description": "The CRN of the referenced secret.",
            "example": "crn:v1:bluemix:public:secrets-manager:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:secret:bbb222bc-430a-4de9-9aad-84e5bb022222",
            "format": "crn",
            "maxLength": 512,
            "minLength": 9,
            "pattern": "^crn:v[0-9](:([A-Za-z0-9-._~!$&'()*+,;=@/]|%[0-9A-Z]{2})*){2}:secrets-manager(:([A-Za-z0-9-._~!$&'()*+,;=@/]|%[0-9A-Z]{2})*){5}$",
            "type": "string"
          }
        },
        "required": [
          "crn"
        ],
        "type": "object"
      },
      "SecretsManagerSecretIdentity": {
        "description": "A [Secrets Manager Arbitrary Secret](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-getting-started).",
        "properties": {
          "crn": {
            "description": "The CRN of the secret.",
            "example": "crn:v1:bluemix:public:secrets-manager:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:secret:bbb222bc-430a-4de9-9aad-84e5bb022222",
            "format": "crn",
            "maxLength": 512,
            "minLength": 9,
            "pattern": "^crn:v[0-9](:([A-Za-z0-9-._~!$&'()*+,;=@/]|%[0-9A-Z]{2})*){2}:secrets-manager(:([A-Za-z0-9-._~!$&'()*+,;=@/]|%[0-9A-Z]{2})*){5}$",
            "type": "string"
          }
        },
        "required": [
          "crn"
        ],
        "type": "object"
      },
      "SnakeCaseCode": {
        "description": "A snake case string succinctly identifying the problem",
        "example": "not_found",
        "maxLength": 128,
        "minLength": 1,
        "pattern": "^[a-z]+(_[a-z]+)*$",
        "type": "string"
      },
      "URL": {
        "description": "url",
        "example": "https://directlink.cloud.ibm.com/v1",
        "pattern": "^http(s)?:\\/\\/([^\\/?#]*)([^?#]*)(\\?([^#]*))?(#(.*))?$",
        "type": "string"
      },
      "UUID": {
        "description": "unique identfier",
        "example": "0a06fb9b-820f-4c44-8a31-77f1f0806d28",
        "maxLength": 36,
        "minLength": 36,
        "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
        "type": "string"
      },
      "UpdateRouteFilterTemplate": {
        "description": "The route filter update template",
        "properties": {
          "action": {
            "description": "Determines whether routes that match the prefix-set will be allowed (permit) or rejected (deny) through the filter",
            "enum": [
              "permit",
              "deny"
            ],
            "example": "permit",
            "type": "string"
          },
          "before": {
            "description": "Identifier of the next route filter considered if a route does not match the current filter. This property builds the ordering among route filters and follows semantics:\n- When before is an identifier of a route filter that exists and is in the same collection, a route will first attempt to match on the current filter before preceding to the filter referenced in this property.\n- When a filter is created with before that matches another filter in the same collection, the existing filter will take precedence. The before of the existing filter will be updated to refer to the newly created filter. The newly created filter will refer to the route filter identified by the provided before.\n- When a filter is created without a before, it takes the lowest precedence. The existing filter of lowest precedence will be updated to refer to the newly created filter.",
            "example": "1a15dcab-7e40-45e1-b7c5-bc690eaa9782",
            "maxLength": 36,
            "minLength": 36,
            "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
            "type": "string"
          },
          "ge": {
            "description": "The minimum matching length of the prefix-set (mnemonic for greater than or equal to).\n\nTo clear the minimum matching length of the filter, patch the value to `0`",
            "example": 25,
            "maximum": 32,
            "minimum": 0,
            "type": "integer"
          },
          "le": {
            "description": "The maximum matching length of the prefix-set (mnemonic for less than or equal to).\n\nTo clear the maximum matching length of the filter, patch the value to `0`",
            "example": 30,
            "maximum": 32,
            "minimum": 0,
            "type": "integer"
          },
          "prefix": {
            "description": "IP prefix representing an address and mask length of the prefix-set",
            "example": "192.168.100.0/24",
            "maxLength": 18,
            "minLength": 7,
            "pattern": "^([0-9]{1,3}\\.){3}[0-9]{1,3}(\\/([0-9]|[1-2][0-9]|3[0-2]))?$",
            "type": "string"
          }
        },
        "type": "object"
      },
      "WindowSize": {
        "description": "The window size determines the number of frames in a window for replay protection.\n\nReplay protection is used to counter replay attacks. Frames within a window size can be out of order and are not replay protected.",
        "example": 512,
        "maximum": 65535,
        "minimum": 0,
        "type": "integer"
      },
      "WindowSizePatch": {
        "default": 512,
        "description": "The window size determines the number of frames in a window for replay protection.\n\nReplay protection is used to counter replay attacks. Frames within a window size can be out of order and are not replay protected.",
        "example": 64,
        "maximum": 65535,
        "minimum": 0,
        "type": "integer"
      },
      "WindowSizePrototype": {
        "default": 512,
        "description": "The window size determines the number of frames in a window for replay protection.\n\nReplay protection is used to counter replay attacks. Frames within a window size can be out of order and are not replay protected.",
        "example": 64,
        "maximum": 65535,
        "minimum": 0,
        "type": "integer"
      }
    }
  },
  "info": {
    "title": "Direct Link",
    "version": "__VERSION__",
    "x-alternate-name": "Direct Link",
    "x-github": "https://github.ibm.com/cloud-api-docs/direct-link",
    "x-github-issues": "https://github.ibm.com/cloud-api-docs/direct-link/issues/new",
    "description": "## Introduction\n\nThe IBM Cloud® Direct Link API is a RESTful API that allows you to manage your Direct Link resources.\n\nThe code examples on this tab use the client library that is provided for Go.\n\nInstallation\n\n---\n```bash\ngo get -u github.com/IBM/networking-go-sdk\ngo get  -u github.com/IBM/go-sdk-core\n```\n---\n\n[https://github.com/IBM/networking-go-sdk](https://github.com/IBM/networking-go-sdk)\n\nThe code examples on this tab use the client library that is provided for Java.\n\nMaven\n\n---\n```xml\n<dependency>\n    <groupId>com.ibm.cloud</groupId>\n    <artifactId>direct-link</artifactId>\n    <version>X.X.X</version>\n</dependency>\n```\n---\n\nThe code examples on this tab use the client library that is provided for Node.js.\n\nInstallation\n\n---\n```bash\nnpm install ibm-networking-services\n```\n---\n\n[https://github.com/IBM/networking-node-sdk](https://github.com/IBM/networking-node-sdk)\n\nThe code examples on this tab use the client library that is provided for Python.\n\nInstallation\n\n---\n```bash\npip install --upgrade \"ibm-cloud-networking-services>=X.X.X\"\n```\n---\n\n[https://github.com/IBM/networking-python-sdk](https://github.com/IBM/networking-python-sdk)\n\n## Authentication\n\nThe IBM Cloud Direct Link API uses [Identity and Access Management (IAM)](https://cloud.ibm.com/docs/account?topic=account-iamoverview) to authenticate requests. Pass a bearer token in an Authorization header.\n\nYou can retrieve an access token by first creating an API key, and then exchanging your API key for an IBM Cloud IAM token. For more information, see [Retrieving an access token programmatically](https://cloud.ibm.com/docs/key-protect?topic=key-protect-retrieve-access-token#retrieve-token-api).\n\nThe SDK provides initialization methods for each form of authentication.\n\n- Use the API key to have the SDK manage the lifecycle of the access token. The SDK requests an access token, ensures that the access token is valid, and refreshes it if necessary.\n- Use the access token to manage the lifecycle yourself. You must periodically refresh the token.\n\nIAM authentication. Replace `{apikey}` and `{url}` with your service credentials.\n\n---\n```bash\ncurl -u \"apikey:{apikey}\" -X {request_method} \"{url}/{method}\"\n```\n---\n\nSDK managing the IAM token. Replace `{apikey}`, `{version}`,  and `{url}`.\n\n---\n```java\nIamAuthenticator authenticator = new IamAuthenticator(\"{apikey}\");\nDirectLink directLink = new DirectLink(\"{version}\", \"{serviceName}\",authenticator);\n\n// Use only when need to change the endpoint.\n// Default endpoint is directlink.cloud.ibm.com\ndirectLink.setServiceUrl(\"{url}\")\n```\n---\n\nSDK managing the IAM token. Replace `{apikey}`, `{version}`, and `{url}`.\n\n---\n```js\nconst DirectLinkV1 = require('ibm-networking-services/direct-link');\nconst { IamAuthenticator } = require('ibm-cloud-sdk-core');\n\nconst directLinkV1 = new DirectLinkV1({\n  authenticator: new IamAuthenticator({\n    apikey: '{apikey}',\n  }),\n  version: '{version}',\n  // Default is directlink.cloud.ibm.com\n  serviceUrl: '{url}',\n});\n```\n---\n\nSDK managing the IAM token. Replace `{apikey}` , `{version}`, and `{url}`.\n\n---\n```python\nfrom ibm_cloud_networking_services import DirectLinkV1\nfrom ibm_cloud_sdk_core.authenticators import IAMAuthenticator\n\nauthenticator = IAMAuthenticator('{apikey}')\ndirect_link = DirectLinkV1(\n    version='{version}',\n    authenticator=authenticator\n)\n\n## Use only when need to change the endpoint.\n## Default endpoint is directlink.cloud.ibm.com\ndirect_link.set_service_url('{url}')\n```\n---\n\nSDK managing the IAM token. Replace `{apikey}`, `{version}`, and `{url}`.\n\n---\n```go\nimport (\n  \"github.com/IBM/go-sdk-core/core\"\n  \"github.com/IBM/networking-go-sdk/directlinkv1\"\n)\n\nfunc main() {\n  authenticator := &core.IamAuthenticator{\n    ApiKey: \"{apikey}\",\n    URL:    \"{serviceURL}\"\n  }\n\n  version := \"{version}\"\n  options := &directlinkv1.DirectLinkV1Options{\n    Version: &version,\n    Authenticator: authenticator,\n    // Default is directlink.cloud.ibm.com\n    URL:    \"{serviceURL}\",\n  }\n\n  directLink, directLinkErr := directlinkv1.NewDirectLinkV1UsingExternalConfig(options)\n\n  if directLinkErr != nil {\n    panic(directLinkErr)\n  }\n}\n```\n---\n\n## Auditing\n\nYou can monitor API activity within your account by using the IBM Cloud Direct Link service. Whenever an API method is called, an event is generated that you can then track and audit from within Activity Tracker. The specific event type is listed for each individual method.\n\nFor more information about how to track IBM Cloud Direct Link activity, see [Auditing events for IBM Cloud Direct Link](https://cloud.ibm.com/docs/dl?topic=dl-at_events).\n\n---\n\n## Authorization\n\nAccess management to Direct Link resources is done through Identity and Access Management (IAM). For more information, see [Using IAM permissions with Direct Link](https://cloud.ibm.com/docs/dl?topic=dl-iam).\n\n## API endpoint\n\n`https://directlink.cloud.ibm.com`\n\nUse Virtual Private Endpoint (VPE) for VPC to access Direct Link via `https://private.directlink.cloud.ibm.com`.\n\n---\n\n## Error handling\n\nThe Direct Link API uses standard HTTP response codes to indicate whether a method completed successfully. A `2xx` response indicates success. A `4xx` type response indicates a failure, and a `5xx` type response indicates an internal system error.\n\n | HTTP Error Code | Description           | Recovery                                                                    |\n |-----------------|-----------------------|-----------------------------------------------------------------------------|\n | `200`           | Success               | The request was successful.                                                 |\n | `400`           | Bad Request           | The input parameters in the request body are either incomplete, in the wrong format, or resources are in an incorrect state. See the specific error message for more details. |\n | `401`           | Unauthorized          | You are not authorized to make this request. Log in to IBM Cloud and try again. If this error persists, contact the account owner to check your permissions. |\n | `403`           | Forbidden             | The supplied authentication is not authorized to access the requested action.      |\n | `404`           | Not Found             | The requested resource might not exist, or the supplied authentication is not authorized to access it. See the specific error message for resource details, verify that the specified resource exists, or contact the account owner to check your permissions to view it.                                  |\n | `500`           | Internal Server Error | IBM Cloud API is currently unavailable. Your request might not be processed. Wait a few minutes and try again. If the problem persists, contact IBM Support. |\n\n**ErrorResponse**\n\n| Name | Description |\n|----------------------------------------------------------|--------------------------------------------------------------|\n| <span>**code**</span><br/><span>string</span> | An identifier of the problem.<br/>**Possible values:** [`invalid_field`,`invalid_header`,`invalid_method`,`missing_field`,`server_error`] |\n| <span>**message**</span><br/><span>string</span> | An explanation of the problem with possible solutions. |\n| <span>**more_info**</span><br/><span>string</span> | A URL for more information about the solution. |\n| <span>**target**</span><br/><span>object</span> | Details about the property (`type` and `name`) that is the focus of the problem. |\n\nThe Java SDK generates an exception for any unsuccessful method invocation. All methods that accept an argument can also throw an `IllegalArgumentException`.\n\n| Exception                    | Description                                   |\n|------------------------------|-----------------------------------------------|\n| **IllegalArgumentException** | An invalid argument was passed to the method. |\n\nWhen the Java SDK receives an error response from the Direct Link service, it generates an exception from the `com.ibm.cloud.sdk.core.service.exception` package. All service exceptions contain the following fields.\n\n| Field          | Description                              |\n|----------------|------------------------------------------|\n| **statusCode** | The HTTP response code that is returned. |\n| **message**    | A message that describes the error.      |\n\nExample error handling\n\n---\n```java\ntry {\n  // Invoke a Direct Link method\n} catch (BadRequestException e) {\n  // Handle Bad Request (400) exception\n} catch (UnauthorizedException e) {\n  // Handle Unauthorized (401) exception\n} catch (ForbiddenException e) {\n  // Handle Forbidden (403) exception\n} catch (NotFoundException e) {\n  // Handle Not Found (404) exception\n} catch (RequestTooLargeException e) {\n  // Handle Request Too Large (413) exception\n} catch (InternalServerErrorException e) {\n  // Handle Internal Server Error (500) exception\n} catch (ServiceResponseException e) {\n  // Base class for all exceptions caused by error responses from the service\n  System.out.println(\"Service returned status code \"\n    + e.getStatusCode() + \": \" + e.getMessage());\n}\n```\n---\n\nWhen the Node SDK receives an error response from the Direct Link service, it creates an `Error` object with information that describes the error that occurred. This error object is passed as the first parameter to the callback function for the method. The contents of the error object are as shown in the following table.\n\n**Error**\n\n| Field       | Description                              |\n|-------------|------------------------------------------|\n| **code**    | The HTTP response code that is returned. |\n| **message** | A message that describes the error.      |\n\nExample error handling\n\n---\n```js\ndirectLink.method(params)\n  .catch(err => {\n    console.log('error:', err);\n  });\n```\n---\n\nThe Python SDK generates an exception for any unsuccessful method invocation. When the Python SDK receives an error response from the Direct Link service, it generates an `ApiException` with the following fields.\n\n| Field       | Description                                             |\n|-------------|---------------------------------------------------------|\n| **code**    | The HTTP response code that is returned.                |\n| **message** | A message that describes the error.                     |\n| **info**    | A dictionary of additional information about the error. |\n\nExample error handling\n\n---\n```python\nfrom ibm_cloud_sdk_core.api_exception import ApiException\ntry:\n    # Invoke a Direct Link method\nexcept ApiException as ex:\n    print \"Method failed with status code \" + str(ex.code) + \": \" + ex.message\n```\n---\n\nThe Go SDK generates an error for any unsuccessful service instantiation and method invocation. You can check for the error immediately. The contents of the error object are as shown in the following table.\n\n**Error**\n\n| Field       | Description                              |\n|-------------|------------------------------------------|\n| **code**    | The HTTP response code that is returned. |\n| **message** | A message that describes the error.      |\n\nExample error handling\n\n---\n```go\nimport \"github.com/IBM/networking-go-sdk/directlinkv1\"\n\n// Instantiate a service\ndirectLink, directLinkErr := directlinkv1.NewDirectLinkV1(options)\n\n// Check for errors\nif directLinkErr != nil {\n  panic(directLinkErr)\n}\n\n// Call a method\nresult, response, responseErr := directLink.methodName(&methodOptions)\n\n// Check for errors\nif responseErr != nil {\n  panic(responseErr)\n}\n```\n---\n\n## Versioning\n\nAll API requests require a major version in the path (``/v1/``) and a date-based version as a query parameter in the format `version=YYYY-MM-DD`.\n\nFor example: `GET /v1/gateways?version=2020-06-02`\n\nAny date-based version from Direct Link GA, up to the current date, is supported. Start development of new applications with the current date as a fixed value. Do not dynamically use the current date as the version for a production application. Instead, use a fixed date-based version that was tested with your application.\n\nSpecify the version to use on API requests with the version parameter when you create the service instance. The service uses the API version for the date you specify, or the most recent version before that date. Don't default to the current date. Instead, specify a date that matches a version that is compatible with your app, and don't change it until your app is ready for a later version.\n\n---\n```java\n// Mention the correct date for version param\nString version = \"2020-07-27\";\n\n// Instantiate authenticator as mentioned in Authentication\nDirectLink directLink = new DirectLink(version, \"{serviceName}\", \"${authenticator}\");\n```\n---\n\n---\n```js\nconst DirectLinkV1 = require('ibm-networking-services/direct-link');\n\nconst directLinkV1 = new DirectLinkV1({\n  // Instantiate authenticator as mentioned in Authentication\n  authenticator: '${authenticator}',\n  version: '2020-07-27',  // Mention the correct date for version param\n});\n```\n---\n\n---\n```python\nfrom ibm_cloud_networking_services import DirectLinkV1\n\n## Instantiate authenticatior as mentioned in Authentication\ndirect_link = DirectLinkV1(\n    version=\"2020-07-27\", # Mention the correct date for version param\n    authenticator=authenticator\n)\n```\n---\n\n---\n```go\nimport (\n  \"github.com/IBM/networking-go-sdk/directlinkv1\"\n)\n\nfunc main() {\n\n  // Mention the correct date for version param\n  version := \"2020-07-27\"\n\n  //Instantiate authenticator as mentioned in Authentication\n  options := &directlinkv1.DirectLinkV1Options{\n    Version: version,\n    Authenticator: authenticator,\n  }\n\n  directLink, directLinkErr := directlinkv1.NewDirectLinkV1UsingExternalConfig(options)\n}\n```\n---\n\n## API changes\n\nAPI improvements and fixes are documented in the API change log, along with guidance on code updates that are required to use a new date-based version. By design, new features with backward-incompatible changes apply only to version dates on and after the feature's release. Changes that apply to older versions of the API are designed to maintain compatibility with existing applications and code.\n\n## Best practices\n\nTo minimize regressions from changes, the following best practices are recommended when you call the API:\n\n* Log any `4xx` or `5xx` HTTP status code along with the included `trace` property.\n* Follow HTTP redirect rules for any `3xx` HTTP status code.\n* Consume only the resources and properties that are needed for your application to function.\n* Avoid depending on any behavior that is not explicitly documented.\n---",
    "x-last-updated": "2026-03-17"
  },
  "openapi": "3.0.0",
  "paths": {
    "/gateways": {
      "get": {
        "description": "List all Direct Link gateways in this account.  Gateways in other accounts with connections to networks in this account are also returned.",
        "operationId": "list_gateways",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/GatewayCollection"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GatewayCollection"
                }
              }
            },
            "description": "Successfully retrieved the list of gateways."
          }
        },
        "summary": "List gateways",
        "tags": [
          "Gateways"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X GET \\\n  https://$DL_ENDPOINT/v1/gateways?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.listGateways({});\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ListGatewaysOptions listGatewaysOptions = new ListGatewaysOptions();\n",
                      "\n",
                      "Response<GatewayCollection> response = directLinkService.listGateways(listGatewaysOptions).execute();\n",
                      "GatewayCollection gatewayCollection = response.getResult();\n",
                      "\n",
                      "System.out.println(gatewayCollection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "listGatewaysOptions := directLinkService.NewListGatewaysOptions()\n",
                      "\n",
                      "gatewayCollection, response, err := directLinkService.ListGateways(listGatewaysOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gatewayCollection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.list_gateways()\n",
                      "gateway_collection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway_collection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/version"
        }
      ],
      "post": {
        "description": "Creates a Direct Link gateway based on the supplied template.",
        "operationId": "create_gateway",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GatewayTemplate"
              }
            }
          },
          "description": "The Direct Link Gateway template",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/Gateway"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Gateway"
                }
              }
            },
            "description": "The Direct Link gateway was created successfully."
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "validation_required_field_missing",
                          "message": "Mandatory field is missing.",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling",
                          "target": {
                            "name": "name",
                            "type": "field"
                          }
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric400"
                }
              }
            },
            "description": "An invalid Direct Link template was provided."
          }
        },
        "summary": "Create gateway",
        "tags": [
          "Gateways"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X POST \\\n  https://$DL_ENDPOINT/v1/gateways?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\" \\\n  -d '{\n        \"bgp_asn\": 1000,\n        \"bgp_base_cidr\": \"10.254.30.76/30\",\n        \"global\": true,\n        \"location_name\": \"dal03\",\n        \"name\": \"example-gateway\",\n        \"speed_mbps\": 1000,\n        \"connection_mode\": \"transit\",\n        \"type\": \"dedicated\",\n        \"cross_connect_router\": \"xcr03.dal03\",\n        \"metered\": true,\n        \"carrier_name\": \"my carrier\",\n        \"customer_name\": \"my customer\"\n      }'"
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "// Request models needed by this operation.\n",
                      "\n",
                      "// GatewayTemplateGatewayTypeDedicatedTemplate\n",
                      "const gatewayTemplateModel = {\n",
                      "  bgp_asn: 64999,\n",
                      "  global: true,\n",
                      "  metered: false,\n",
                      "  name: 'myGateway',\n",
                      "  speed_mbps: 1000,\n",
                      "  type: 'dedicated',\n",
                      "  carrier_name: 'myCarrierName',\n",
                      "  cross_connect_router: 'xcr01.dal03',\n",
                      "  customer_name: 'newCustomerName',\n",
                      "  location_name: 'dal03',\n",
                      "};\n",
                      "\n",
                      "const params = {\n",
                      "  gatewayTemplate: gatewayTemplateModel,\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.createGateway(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              },
              {
                "name": "Example request with Secrets Manager authentication key",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "// Request models needed by this operation.\n",
                      "\n",
                      "// AuthenticationKeyIdentitySecretsManagerAuthenticationKeyIdentity\n",
                      "const authenticationKeyIdentityModel = {\n",
                      "  crn: 'crn:v1:bluemix:public:secrets-manager:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:secret:bbb222bc-430a-4de9-9aad-84e5bb022222',\n",
                      "};\n",
                      "\n",
                      "// GatewayTemplateGatewayTypeDedicatedTemplate\n",
                      "const gatewayTemplateModel = {\n",
                      "  bgp_asn: 64999,\n",
                      "  global: true,\n",
                      "  metered: false,\n",
                      "  name: 'myGateway',\n",
                      "  speed_mbps: 1000,\n",
                      "  type: 'dedicated',\n",
                      "  carrier_name: 'myCarrierName',\n",
                      "  cross_connect_router: 'xcr01.dal03',\n",
                      "  customer_name: 'newCustomerName',\n",
                      "  location_name: 'dal03',\n",
                      "  authentication_key: authenticationKeyIdentityModel,\n",
                      "};\n",
                      "\n",
                      "const params = {\n",
                      "  gatewayTemplate: gatewayTemplateModel,\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.createGateway(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GatewayTemplateGatewayTypeDedicatedTemplate gatewayTemplateModel = new GatewayTemplateGatewayTypeDedicatedTemplate.Builder()\n",
                      "  .bgpAsn(Long.valueOf(\"64999\"))\n",
                      "  .global(true)\n",
                      "  .metered(false)\n",
                      "  .name(\"myGateway\")\n",
                      "  .speedMbps(Long.valueOf(\"1000\"))\n",
                      "  .type(\"dedicated\")\n",
                      "  .carrierName(\"myCarrierName\")\n",
                      "  .crossConnectRouter(\"xcr01.dal03\")\n",
                      "  .customerName(\"newCustomerName\")\n",
                      "  .locationName(\"dal03\")\n",
                      "  .build();\n",
                      "CreateGatewayOptions createGatewayOptions = new CreateGatewayOptions.Builder()\n",
                      "  .gatewayTemplate(gatewayTemplateModel)\n",
                      "  .build();\n",
                      "\n",
                      "Response<Gateway> response = directLinkService.createGateway(createGatewayOptions).execute();\n",
                      "Gateway gateway = response.getResult();\n",
                      "\n",
                      "System.out.println(gateway);"
                    ]
                  }
                ]
              },
              {
                "name": "Example request with Secrets Manager authentication key",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "AuthenticationKeyIdentitySecretsManagerAuthenticationKeyIdentity authenticationKeyIdentityModel = new AuthenticationKeyIdentitySecretsManagerAuthenticationKeyIdentity.Builder()\n",
                      "  .crn(\"crn:v1:bluemix:public:secrets-manager:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:secret:bbb222bc-430a-4de9-9aad-84e5bb022222\")\n",
                      "  .build();\n",
                      "GatewayTemplateGatewayTypeDedicatedTemplate gatewayTemplateModel = new GatewayTemplateGatewayTypeDedicatedTemplate.Builder()\n",
                      "  .bgpAsn(Long.valueOf(\"64999\"))\n",
                      "  .global(true)\n",
                      "  .metered(false)\n",
                      "  .name(\"myGateway\")\n",
                      "  .speedMbps(Long.valueOf(\"1000\"))\n",
                      "  .type(\"dedicated\")\n",
                      "  .carrierName(\"myCarrierName\")\n",
                      "  .crossConnectRouter(\"xcr01.dal03\")\n",
                      "  .customerName(\"newCustomerName\")\n",
                      "  .locationName(\"dal03\")\n",
                      "  .authenticationKey(authenticationKeyIdentityModel)\n",
                      "  .build();\n",
                      "CreateGatewayOptions createGatewayOptions = new CreateGatewayOptions.Builder()\n",
                      "  .gatewayTemplate(gatewayTemplateModel)\n",
                      "  .build();\n",
                      "\n",
                      "Response<Gateway> response = directLinkService.createGateway(createGatewayOptions).execute();\n",
                      "Gateway gateway = response.getResult();\n",
                      "\n",
                      "System.out.println(gateway);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "gatewayTemplateModel := &directlinkv1.GatewayTemplateGatewayTypeDedicatedTemplate{\n",
                      "  BgpAsn: core.Int64Ptr(int64(64999)),\n",
                      "  Global: core.BoolPtr(true),\n",
                      "  Metered: core.BoolPtr(false),\n",
                      "  Name: core.StringPtr(\"myGateway\"),\n",
                      "  SpeedMbps: core.Int64Ptr(int64(1000)),\n",
                      "  Type: core.StringPtr(\"dedicated\"),\n",
                      "  CarrierName: core.StringPtr(\"myCarrierName\"),\n",
                      "  CrossConnectRouter: core.StringPtr(\"xcr01.dal03\"),\n",
                      "  CustomerName: core.StringPtr(\"newCustomerName\"),\n",
                      "  LocationName: core.StringPtr(\"dal03\"),\n",
                      "}\n",
                      "\n",
                      "createGatewayOptions := directLinkService.NewCreateGatewayOptions(\n",
                      "  gatewayTemplateModel,\n",
                      ")\n",
                      "\n",
                      "gateway, response, err := directLinkService.CreateGateway(createGatewayOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gateway, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              },
              {
                "name": "Example request with Secrets Manager authentication key",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "authenticationKeyModel := &directlinkv1.AuthenticationKeyIdentitySecretsManagerAuthenticationKeyIdentity{\n",
                      "  Crn: core.StringPtr(\"crn:v1:bluemix:public:secrets-manager:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:secret:bbb222bc-430a-4de9-9aad-84e5bb022222\"),\n",
                      "}\n",
                      "\n",
                      "gatewayTemplateModel := &directlinkv1.GatewayTemplateGatewayTypeDedicatedTemplate{\n",
                      "  BgpAsn: core.Int64Ptr(int64(64999)),\n",
                      "  Global: core.BoolPtr(true),\n",
                      "  Metered: core.BoolPtr(false),\n",
                      "  Name: core.StringPtr(\"myGateway\"),\n",
                      "  SpeedMbps: core.Int64Ptr(int64(1000)),\n",
                      "  Type: core.StringPtr(\"dedicated\"),\n",
                      "  CarrierName: core.StringPtr(\"myCarrierName\"),\n",
                      "  CrossConnectRouter: core.StringPtr(\"xcr01.dal03\"),\n",
                      "  CustomerName: core.StringPtr(\"newCustomerName\"),\n",
                      "  LocationName: core.StringPtr(\"dal03\"),\n",
                      "  AuthenticationKey: authenticationKeyModel,\n",
                      "}\n",
                      "\n",
                      "createGatewayOptions := directLinkService.NewCreateGatewayOptions(\n",
                      "  gatewayTemplateModel,\n",
                      ")\n",
                      "\n",
                      "gateway, response, err := directLinkService.CreateGateway(createGatewayOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gateway, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "gateway_template_model = {\n",
                      "  'bgp_asn': 64999,\n",
                      "  'global': True,\n",
                      "  'metered': False,\n",
                      "  'name': 'myGateway',\n",
                      "  'speed_mbps': 1000,\n",
                      "  'type': 'dedicated',\n",
                      "  'carrier_name': 'myCarrierName',\n",
                      "  'cross_connect_router': 'xcr01.dal03',\n",
                      "  'customer_name': 'newCustomerName',\n",
                      "  'location_name': 'dal03',\n",
                      "}\n",
                      "\n",
                      "response = direct_link_service.create_gateway(\n",
                      "  gateway_template=gateway_template_model,\n",
                      ")\n",
                      "gateway = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway, indent=2))"
                    ]
                  }
                ]
              },
              {
                "name": "Example request with Secrets Manager authentication key",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "gateway_template_model = {\n",
                      "  'bgp_asn': 64999,\n",
                      "  'global': True,\n",
                      "  'metered': False,\n",
                      "  'name': 'myGateway',\n",
                      "  'speed_mbps': 1000,\n",
                      "  'type': 'dedicated',\n",
                      "  'carrier_name': 'myCarrierName',\n",
                      "  'cross_connect_router': 'xcr01.dal03',\n",
                      "  'customer_name': 'newCustomerName',\n",
                      "  'location_name': 'dal03',\n",
                      "  'authentication_key': {\n",
                      "    'crn': 'crn:v1:bluemix:public:secrets-manager:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:secret:bbb222bc-430a-4de9-9aad-84e5bb022222',\n",
                      "  },\n",
                      "}\n",
                      "\n",
                      "response = direct_link_service.create_gateway(\n",
                      "  gateway_template=gateway_template_model,\n",
                      ")\n",
                      "gateway = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/gateways/{gateway_id}/as_prepends": {
      "get": {
        "description": "Retrieve all AS Prepends for the specified Direct Link gateway.",
        "operationId": "list_gateway_as_prepends",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "as_prepends": [
                        {
                          "created_at": "2020-11-02T23:05:52.724Z",
                          "id": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
                          "length": 3,
                          "policy": "import",
                          "specific_prefixes": [
                            "172.17.0.0/16",
                            "172.24.10.0/24"
                          ],
                          "updated_at": "2020-11-02T23:05:52.724Z"
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AsPrependCollection"
                }
              }
            },
            "description": "AS Prepends retrieved successfully.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/eTag"
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find gateway",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "The specified Direct Link gateway could not be found."
          }
        },
        "summary": "List AS Prepends",
        "tags": [
          "Gateway AS Prepends"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X GET \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID/as_prepends?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.listGatewayAsPrepends(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ListGatewayAsPrependsOptions listGatewayAsPrependsOptions = new ListGatewayAsPrependsOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<AsPrependCollection> response = directLinkService.listGatewayAsPrepends(listGatewayAsPrependsOptions).execute();\n",
                      "AsPrependCollection asPrependCollection = response.getResult();\n",
                      "\n",
                      "System.out.println(asPrependCollection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "listGatewayAsPrependsOptions := directLinkService.NewListGatewayAsPrependsOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "asPrependCollection, response, err := directLinkService.ListGatewayAsPrepends(listGatewayAsPrependsOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(asPrependCollection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.list_gateway_as_prepends(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "as_prepend_collection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(as_prepend_collection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/version"
        },
        {
          "$ref": "#/components/parameters/path_gateway_id_qualified"
        }
      ],
      "put": {
        "description": "Replace the given set of AS prepends on the specified gateway.  Existing resources may be reused when the individual AS Prepend item is unchanged.",
        "operationId": "replace_gateway_as_prepends",
        "parameters": [
          {
            "$ref": "#/components/parameters/ifMatch"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AsPrependReplaceTemplate"
              }
            }
          },
          "description": "The AS Prepend replace template",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "as_prepends": [
                        {
                          "created_at": "2020-11-02T23:05:52.724Z",
                          "id": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
                          "length": 3,
                          "policy": "import",
                          "specific_prefixes": [
                            "172.17.0.0/16",
                            "172.24.10.0/24"
                          ],
                          "updated_at": "2020-11-02T23:05:52.724Z"
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AsPrependCollection"
                }
              }
            },
            "description": "AS Prepends replaced successfully.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/eTag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequestGeneric"
          },
          "404": {
            "$ref": "#/components/responses/CannotFindGateway"
          },
          "412": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainer412"
                }
              }
            },
            "description": "The provided `If-Match` value does not match the current ETag value of the AS Prepends"
          }
        },
        "summary": "Replace existing AS Prepends",
        "tags": [
          "Gateway AS Prepends"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  ifMatch: 'W/\"96d225c4-56bd-43d9-98fc-d7148e5c5028\"',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.replaceGatewayAsPrepends(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ReplaceGatewayAsPrependsOptions replaceGatewayAsPrependsOptions = new ReplaceGatewayAsPrependsOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .ifMatch(\"W/\\\"96d225c4-56bd-43d9-98fc-d7148e5c5028\\\"\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<AsPrependCollection> response = directLinkService.replaceGatewayAsPrepends(replaceGatewayAsPrependsOptions).execute();\n",
                      "AsPrependCollection asPrependCollection = response.getResult();\n",
                      "\n",
                      "System.out.println(asPrependCollection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "replaceGatewayAsPrependsOptions := directLinkService.NewReplaceGatewayAsPrependsOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"W/\\\"96d225c4-56bd-43d9-98fc-d7148e5c5028\\\"\",\n",
                      ")\n",
                      "\n",
                      "asPrependCollection, response, err := directLinkService.ReplaceGatewayAsPrepends(replaceGatewayAsPrependsOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(asPrependCollection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.replace_gateway_as_prepends(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  if_match='W/\"96d225c4-56bd-43d9-98fc-d7148e5c5028\"',\n",
                      ")\n",
                      "as_prepend_collection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(as_prepend_collection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/gateways/{gateway_id}/export_route_filters": {
      "get": {
        "description": "List all export route filters that influence the export routes advertised to the on premises network and learned from attached virtual connections of the Direct Link gateway. \n\nThe first export route filter an export route matches will determine whether the route is permitted or denied to be advertised by the Direct Link gateway. Route filter order is determined by the filter's `before` field. \n\nIf an export route does not match any of the export route filters, the route is subject to the `default_export_route_filter` of the direct link. ",
        "operationId": "list_gateway_export_route_filters",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "export_route_filters": [
                        {
                          "action": "permit",
                          "before": "1a15dcab-7e40-45e1-b7c5-bc690eaa9782",
                          "created_at": "2021-11-15T12:08:05.000Z",
                          "ge": 25,
                          "id": "1a15dcab-7e30-45e1-b7c5-bc690eaa9865",
                          "le": 32,
                          "prefix": "192.168.100.0/24",
                          "updated_at": "2021-11-15T12:08:05.000Z"
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ExportRouteFilterCollection"
                }
              }
            },
            "description": "Export route filters retrieved successfully.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/eTag"
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/CannotFindGateway"
          }
        },
        "summary": "List export route filters",
        "tags": [
          "Gateway Export Route Filters"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.listGatewayExportRouteFilters(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ListGatewayExportRouteFiltersOptions listGatewayExportRouteFiltersOptions = new ListGatewayExportRouteFiltersOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<ExportRouteFilterCollection> response = directLinkService.listGatewayExportRouteFilters(listGatewayExportRouteFiltersOptions).execute();\n",
                      "ExportRouteFilterCollection exportRouteFilterCollection = response.getResult();\n",
                      "\n",
                      "System.out.println(exportRouteFilterCollection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "listGatewayExportRouteFiltersOptions := directLinkService.NewListGatewayExportRouteFiltersOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "exportRouteFilterCollection, response, err := directLinkService.ListGatewayExportRouteFilters(listGatewayExportRouteFiltersOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(exportRouteFilterCollection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.list_gateway_export_route_filters(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "export_route_filter_collection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(export_route_filter_collection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/version"
        },
        {
          "$ref": "#/components/parameters/path_gateway_id_qualified"
        }
      ],
      "post": {
        "description": "Create a new export route filter to be configured on the Direct Link gateway.\n\nThis call can result in an implicit update to another route filter's `before` field. \n\nIf the request's route filter template does not contain a `before` field, the created filter will be added to the end of of the list. The filter previously at the end of the list will have it's `before` field set to the created route filter.\n\nIf the request's route filter template contains a `before` field, the created filter will be added directly before that specified route filter. If the specified route filter has a preceding route filter, that filter's `before` field is updated to the created route filter.",
        "operationId": "create_gateway_export_route_filter",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRouteFilterTemplate"
              }
            }
          },
          "description": "The export route filter create template",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/RouteFilterExample"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/RouteFilter"
                }
              }
            },
            "description": "Direct Link gateway export route filter was created successfully."
          },
          "400": {
            "$ref": "#/components/responses/BadRequestGeneric"
          },
          "404": {
            "$ref": "#/components/responses/CannotFindGateway"
          }
        },
        "summary": "Create an export route filter",
        "tags": [
          "Gateway Export Route Filters"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  action: 'permit',\n",
                      "  prefix: '192.168.100.0/24',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.createGatewayExportRouteFilter(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "CreateGatewayExportRouteFilterOptions createGatewayExportRouteFilterOptions = new CreateGatewayExportRouteFilterOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .action(\"permit\")\n",
                      "  .prefix(\"192.168.100.0/24\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<RouteFilter> response = directLinkService.createGatewayExportRouteFilter(createGatewayExportRouteFilterOptions).execute();\n",
                      "RouteFilter routeFilter = response.getResult();\n",
                      "\n",
                      "System.out.println(routeFilter);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "createGatewayExportRouteFilterOptions := directLinkService.NewCreateGatewayExportRouteFilterOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"permit\",\n",
                      "  \"192.168.100.0/24\",\n",
                      ")\n",
                      "\n",
                      "routeFilter, response, err := directLinkService.CreateGatewayExportRouteFilter(createGatewayExportRouteFilterOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(routeFilter, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.create_gateway_export_route_filter(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  action='permit',\n",
                      "  prefix='192.168.100.0/24',\n",
                      ")\n",
                      "route_filter = response.get_result()\n",
                      "\n",
                      "print(json.dumps(route_filter, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "put": {
        "description": "Replace all existing export route filters configured on the Direct Link gateway",
        "operationId": "replace_gateway_export_route_filters",
        "parameters": [
          {
            "$ref": "#/components/parameters/ifMatch"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportRouteFiltersReplaceTemplate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "export_route_filters": [
                        {
                          "action": "permit",
                          "before": "1a15dcab-7e40-45e1-b7c5-bc690eaa9782",
                          "created_at": "2021-11-15T12:08:05.000Z",
                          "ge": 25,
                          "id": "1a15dcab-7e30-45e1-b7c5-bc690eaa9865",
                          "le": 32,
                          "prefix": "192.168.100.0/24",
                          "updated_at": "2021-11-15T12:08:05.000Z"
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ExportRouteFilterCollection"
                }
              }
            },
            "description": "Export route filters replaced successfully.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/eTag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequestGeneric"
          },
          "404": {
            "$ref": "#/components/responses/CannotFindGateway"
          },
          "412": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainer412"
                }
              }
            },
            "description": "The provided `If-Match` value does not match the current ETag value of the export route filters"
          }
        },
        "summary": "Replace existing export route filters",
        "tags": [
          "Gateway Export Route Filters"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  ifMatch: 'W/\"96d225c4-56bd-43d9-98fc-d7148e5c5028\"',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.replaceGatewayExportRouteFilters(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ReplaceGatewayExportRouteFiltersOptions replaceGatewayExportRouteFiltersOptions = new ReplaceGatewayExportRouteFiltersOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .ifMatch(\"W/\\\"96d225c4-56bd-43d9-98fc-d7148e5c5028\\\"\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<ExportRouteFilterCollection> response = directLinkService.replaceGatewayExportRouteFilters(replaceGatewayExportRouteFiltersOptions).execute();\n",
                      "ExportRouteFilterCollection exportRouteFilterCollection = response.getResult();\n",
                      "\n",
                      "System.out.println(exportRouteFilterCollection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "replaceGatewayExportRouteFiltersOptions := directLinkService.NewReplaceGatewayExportRouteFiltersOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"W/\\\"96d225c4-56bd-43d9-98fc-d7148e5c5028\\\"\",\n",
                      ")\n",
                      "\n",
                      "exportRouteFilterCollection, response, err := directLinkService.ReplaceGatewayExportRouteFilters(replaceGatewayExportRouteFiltersOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(exportRouteFilterCollection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.replace_gateway_export_route_filters(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  if_match='W/\"96d225c4-56bd-43d9-98fc-d7148e5c5028\"',\n",
                      ")\n",
                      "export_route_filter_collection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(export_route_filter_collection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/gateways/{gateway_id}/export_route_filters/{id}": {
      "delete": {
        "description": "Delete an export route filter.\n\nDeleting an export route filter will implicitly update the preceding filter's `before` field to the filter that follows the deleted filter. The preceding filter will result with an empty `before` field if there is no filter following the deleted route filter.",
        "operationId": "delete_gateway_export_route_filter",
        "responses": {
          "204": {
            "description": "The export route filter was deleted successfully."
          },
          "404": {
            "$ref": "#/components/responses/ExportRouteFilter404"
          }
        },
        "summary": "Remove export route filter from Direct Link gateway",
        "tags": [
          "Gateway Export Route Filters"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "try {\n",
                      "  await directLinkService.deleteGatewayExportRouteFilter(params);\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "DeleteGatewayExportRouteFilterOptions deleteGatewayExportRouteFilterOptions = new DeleteGatewayExportRouteFilterOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<Void> response = directLinkService.deleteGatewayExportRouteFilter(deleteGatewayExportRouteFilterOptions).execute();"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "deleteGatewayExportRouteFilterOptions := directLinkService.NewDeleteGatewayExportRouteFilterOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "response, err := directLinkService.DeleteGatewayExportRouteFilter(deleteGatewayExportRouteFilterOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "if response.StatusCode != 204 {\n",
                      "  fmt.Printf(\"\\nUnexpected response status code received from DeleteGatewayExportRouteFilter(): %d\\n\", response.StatusCode)\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.delete_gateway_export_route_filter(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "get": {
        "description": "Retrieve an export route filter from the Direct Link gateway.",
        "operationId": "get_gateway_export_route_filter",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/RouteFilterExample"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/RouteFilter"
                }
              }
            },
            "description": "The export route filter was retrieved successfully."
          },
          "404": {
            "$ref": "#/components/responses/ExportRouteFilter404"
          }
        },
        "summary": "Retrieves the specified Direct Link gateway export route filter",
        "tags": [
          "Gateway Export Route Filters"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.getGatewayExportRouteFilter(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GetGatewayExportRouteFilterOptions getGatewayExportRouteFilterOptions = new GetGatewayExportRouteFilterOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<RouteFilter> response = directLinkService.getGatewayExportRouteFilter(getGatewayExportRouteFilterOptions).execute();\n",
                      "RouteFilter routeFilter = response.getResult();\n",
                      "\n",
                      "System.out.println(routeFilter);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "getGatewayExportRouteFilterOptions := directLinkService.NewGetGatewayExportRouteFilterOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "routeFilter, response, err := directLinkService.GetGatewayExportRouteFilter(getGatewayExportRouteFilterOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(routeFilter, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.get_gateway_export_route_filter(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "route_filter = response.get_result()\n",
                      "\n",
                      "print(json.dumps(route_filter, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/version"
        },
        {
          "$ref": "#/components/parameters/path_gateway_id_qualified"
        },
        {
          "$ref": "#/components/parameters/export_route_filter_id"
        }
      ],
      "patch": {
        "description": "Update an export route filter from the Direct Link gateway.\n\nUpdating a route filter's `before` field will result in implicit updates to other route filters' `before` fields. \n\nConsidering the updated filter prior to the update, the preceding route filter's `before` field will be set to the filter following the updating route filter, if present. Otherwise it is set to empty.\n\nConsidering the updated filter after the update, if the new filter following the updated filter has an existing filter preceding it, that preceding filter's `before` field will be set to the updated filter.",
        "operationId": "update_gateway_export_route_filter",
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRouteFilterTemplate"
              }
            }
          },
          "description": "The export route filter update template",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/RouteFilterExample"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/RouteFilter"
                }
              }
            },
            "description": "The export route filter was updated successfully."
          },
          "400": {
            "$ref": "#/components/responses/BadRequestGeneric"
          },
          "404": {
            "$ref": "#/components/responses/ExportRouteFilter404"
          }
        },
        "summary": "Updates the specified Direct Link gateway export route filter",
        "tags": [
          "Gateway Export Route Filters"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.updateGatewayExportRouteFilter(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "UpdateRouteFilterTemplate updateRouteFilterTemplateModel = new UpdateRouteFilterTemplate.Builder()\n",
                      "  .build();\n",
                      "Map<String, Object> updateRouteFilterTemplateModelAsPatch = updateRouteFilterTemplateModel.asPatch();\n",
                      "UpdateGatewayExportRouteFilterOptions updateGatewayExportRouteFilterOptions = new UpdateGatewayExportRouteFilterOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .updateRouteFilterTemplatePatch(updateRouteFilterTemplateModelAsPatch)\n",
                      "  .build();\n",
                      "\n",
                      "Response<RouteFilter> response = directLinkService.updateGatewayExportRouteFilter(updateGatewayExportRouteFilterOptions).execute();\n",
                      "RouteFilter routeFilter = response.getResult();\n",
                      "\n",
                      "System.out.println(routeFilter);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "updateRouteFilterTemplateModel := &directlinkv1.UpdateRouteFilterTemplate{\n",
                      "}\n",
                      "updateRouteFilterTemplateModelAsPatch, asPatchErr := updateRouteFilterTemplateModel.AsPatch()\n",
                      "Expect(asPatchErr).To(BeNil())\n",
                      "\n",
                      "updateGatewayExportRouteFilterOptions := directLinkService.NewUpdateGatewayExportRouteFilterOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  updateRouteFilterTemplateModelAsPatch,\n",
                      ")\n",
                      "\n",
                      "routeFilter, response, err := directLinkService.UpdateGatewayExportRouteFilter(updateGatewayExportRouteFilterOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(routeFilter, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "update_route_filter_template_model = {\n",
                      "}\n",
                      "\n",
                      "response = direct_link_service.update_gateway_export_route_filter(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  update_route_filter_template=update_route_filter_template_model,\n",
                      ")\n",
                      "route_filter = response.get_result()\n",
                      "\n",
                      "print(json.dumps(route_filter, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/gateways/{gateway_id}/import_route_filters": {
      "get": {
        "description": "List all import route filters that influence the import routes learned from the on premises network. \n\nThe first import route filter an import route matches will determine whether the route is permitted or denied to be learned by the Direct Link gateway. Route filter order is determined by the filter's `before` field. \n\nIf an import route does not match any of the import route filters, the route is subject to the `default_import_route_filter` of the direct link. ",
        "operationId": "list_gateway_import_route_filters",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "import_route_filters": [
                        {
                          "action": "permit",
                          "before": "1a15dcab-7e40-45e1-b7c5-bc690eaa9782",
                          "created_at": "2021-11-15T12:08:05.000Z",
                          "ge": 25,
                          "id": "1a15dcab-7e30-45e1-b7c5-bc690eaa9865",
                          "le": 32,
                          "prefix": "192.168.100.0/24",
                          "updated_at": "2021-11-15T12:08:05.000Z"
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ImportRouteFilterCollection"
                }
              }
            },
            "description": "Import route filters retrieved successfully.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/eTag"
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/CannotFindGateway"
          }
        },
        "summary": "List import route filters",
        "tags": [
          "Gateway Import Route Filters"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.listGatewayImportRouteFilters(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ListGatewayImportRouteFiltersOptions listGatewayImportRouteFiltersOptions = new ListGatewayImportRouteFiltersOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<ImportRouteFilterCollection> response = directLinkService.listGatewayImportRouteFilters(listGatewayImportRouteFiltersOptions).execute();\n",
                      "ImportRouteFilterCollection importRouteFilterCollection = response.getResult();\n",
                      "\n",
                      "System.out.println(importRouteFilterCollection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "listGatewayImportRouteFiltersOptions := directLinkService.NewListGatewayImportRouteFiltersOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "importRouteFilterCollection, response, err := directLinkService.ListGatewayImportRouteFilters(listGatewayImportRouteFiltersOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(importRouteFilterCollection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.list_gateway_import_route_filters(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "import_route_filter_collection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(import_route_filter_collection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/version"
        },
        {
          "$ref": "#/components/parameters/path_gateway_id_qualified"
        }
      ],
      "post": {
        "description": "Create a new import route filter to be configured on the Direct Link gateway.\n\nThis call can result in an implicit update to another route filter's `before` field. \n\nIf the request's route filter template does not contain a `before` field, the created filter will be added to the end of of the list. The filter previously at the end of the list will have it's `before` field set to the created route filter.\n\nIf the request's route filter template contains a `before` field, the created filter will be added directly before that specified route filter. If the specified route filter has a preceding route filter, that filter's `before` field is updated to the created route filter.",
        "operationId": "create_gateway_import_route_filter",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRouteFilterTemplate"
              }
            }
          },
          "description": "The import route filter create template",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/RouteFilterExample"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/RouteFilter"
                }
              }
            },
            "description": "Direct Link gateway import route filter was created successfully."
          },
          "400": {
            "$ref": "#/components/responses/BadRequestGeneric"
          },
          "404": {
            "$ref": "#/components/responses/CannotFindGateway"
          }
        },
        "summary": "Create an import route filter",
        "tags": [
          "Gateway Import Route Filters"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  action: 'permit',\n",
                      "  prefix: '192.168.100.0/24',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.createGatewayImportRouteFilter(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "CreateGatewayImportRouteFilterOptions createGatewayImportRouteFilterOptions = new CreateGatewayImportRouteFilterOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .action(\"permit\")\n",
                      "  .prefix(\"192.168.100.0/24\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<RouteFilter> response = directLinkService.createGatewayImportRouteFilter(createGatewayImportRouteFilterOptions).execute();\n",
                      "RouteFilter routeFilter = response.getResult();\n",
                      "\n",
                      "System.out.println(routeFilter);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "createGatewayImportRouteFilterOptions := directLinkService.NewCreateGatewayImportRouteFilterOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"permit\",\n",
                      "  \"192.168.100.0/24\",\n",
                      ")\n",
                      "\n",
                      "routeFilter, response, err := directLinkService.CreateGatewayImportRouteFilter(createGatewayImportRouteFilterOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(routeFilter, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.create_gateway_import_route_filter(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  action='permit',\n",
                      "  prefix='192.168.100.0/24',\n",
                      ")\n",
                      "route_filter = response.get_result()\n",
                      "\n",
                      "print(json.dumps(route_filter, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "put": {
        "description": "Replace all existing import route filters configured on the Direct Link gateway",
        "operationId": "replace_gateway_import_route_filters",
        "parameters": [
          {
            "$ref": "#/components/parameters/ifMatch"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportRouteFiltersReplaceTemplate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "import_route_filters": [
                        {
                          "action": "permit",
                          "before": "1a15dcab-7e40-45e1-b7c5-bc690eaa9782",
                          "created_at": "2021-11-15T12:08:05.000Z",
                          "ge": 25,
                          "id": "1a15dcab-7e30-45e1-b7c5-bc690eaa9865",
                          "le": 32,
                          "prefix": "192.168.100.0/24",
                          "updated_at": "2021-11-15T12:08:05.000Z"
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ImportRouteFilterCollection"
                }
              }
            },
            "description": "Import route filters replaced successfully.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/eTag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequestGeneric"
          },
          "404": {
            "$ref": "#/components/responses/CannotFindGateway"
          },
          "412": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainer412"
                }
              }
            },
            "description": "The provided `If-Match` value does not match the current ETag value of the export route filters"
          }
        },
        "summary": "Replace existing import route filters",
        "tags": [
          "Gateway Import Route Filters"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  ifMatch: 'W/\"96d225c4-56bd-43d9-98fc-d7148e5c5028\"',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.replaceGatewayImportRouteFilters(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ReplaceGatewayImportRouteFiltersOptions replaceGatewayImportRouteFiltersOptions = new ReplaceGatewayImportRouteFiltersOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .ifMatch(\"W/\\\"96d225c4-56bd-43d9-98fc-d7148e5c5028\\\"\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<ImportRouteFilterCollection> response = directLinkService.replaceGatewayImportRouteFilters(replaceGatewayImportRouteFiltersOptions).execute();\n",
                      "ImportRouteFilterCollection importRouteFilterCollection = response.getResult();\n",
                      "\n",
                      "System.out.println(importRouteFilterCollection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "replaceGatewayImportRouteFiltersOptions := directLinkService.NewReplaceGatewayImportRouteFiltersOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"W/\\\"96d225c4-56bd-43d9-98fc-d7148e5c5028\\\"\",\n",
                      ")\n",
                      "\n",
                      "importRouteFilterCollection, response, err := directLinkService.ReplaceGatewayImportRouteFilters(replaceGatewayImportRouteFiltersOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(importRouteFilterCollection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.replace_gateway_import_route_filters(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  if_match='W/\"96d225c4-56bd-43d9-98fc-d7148e5c5028\"',\n",
                      ")\n",
                      "import_route_filter_collection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(import_route_filter_collection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/gateways/{gateway_id}/import_route_filters/{id}": {
      "delete": {
        "description": "Delete an import route filter.\n\nDeleting an import route filter will implicitly update the preceding filter's `before` field to the filter that follows the deleted filter. The preceding filter will result with an empty `before` field if there is no filter following the deleted route filter.",
        "operationId": "delete_gateway_import_route_filter",
        "responses": {
          "204": {
            "description": "The import route filter was deleted successfully."
          },
          "404": {
            "$ref": "#/components/responses/ExportRouteFilter404"
          }
        },
        "summary": "Remove import route filter from Direct Link gateway",
        "tags": [
          "Gateway Import Route Filters"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "try {\n",
                      "  await directLinkService.deleteGatewayImportRouteFilter(params);\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "DeleteGatewayImportRouteFilterOptions deleteGatewayImportRouteFilterOptions = new DeleteGatewayImportRouteFilterOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<Void> response = directLinkService.deleteGatewayImportRouteFilter(deleteGatewayImportRouteFilterOptions).execute();"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "deleteGatewayImportRouteFilterOptions := directLinkService.NewDeleteGatewayImportRouteFilterOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "response, err := directLinkService.DeleteGatewayImportRouteFilter(deleteGatewayImportRouteFilterOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "if response.StatusCode != 204 {\n",
                      "  fmt.Printf(\"\\nUnexpected response status code received from DeleteGatewayImportRouteFilter(): %d\\n\", response.StatusCode)\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.delete_gateway_import_route_filter(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "get": {
        "description": "Retrieve an import route filter from the Direct Link gateway.",
        "operationId": "get_gateway_import_route_filter",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/RouteFilterExample"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/RouteFilter"
                }
              }
            },
            "description": "The import route filter was retrieved successfully."
          },
          "404": {
            "$ref": "#/components/responses/ImportRouteFilter404"
          }
        },
        "summary": "Retrieves the specified Direct Link gateway import route filter",
        "tags": [
          "Gateway Import Route Filters"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.getGatewayImportRouteFilter(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GetGatewayImportRouteFilterOptions getGatewayImportRouteFilterOptions = new GetGatewayImportRouteFilterOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<RouteFilter> response = directLinkService.getGatewayImportRouteFilter(getGatewayImportRouteFilterOptions).execute();\n",
                      "RouteFilter routeFilter = response.getResult();\n",
                      "\n",
                      "System.out.println(routeFilter);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "getGatewayImportRouteFilterOptions := directLinkService.NewGetGatewayImportRouteFilterOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "routeFilter, response, err := directLinkService.GetGatewayImportRouteFilter(getGatewayImportRouteFilterOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(routeFilter, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.get_gateway_import_route_filter(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "route_filter = response.get_result()\n",
                      "\n",
                      "print(json.dumps(route_filter, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/version"
        },
        {
          "$ref": "#/components/parameters/path_gateway_id_qualified"
        },
        {
          "$ref": "#/components/parameters/import_route_filter_id"
        }
      ],
      "patch": {
        "description": "Update an import route filter from the Direct Link gateway.\n\nUpdating a route filter's `before` field will result in implicit updates to other route filters' `before` fields. \n\nConsidering the updated filter prior to the update, the preceding route filter's `before` field will be set to the filter following the updating route filter, if present. Otherwise it is set to empty.\n\nConsidering the updated filter after the update, if the new filter following the updated filter has an existing filter preceding it, that preceding filter's `before` field will be set to the updated filter.",
        "operationId": "update_gateway_import_route_filter",
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRouteFilterTemplate"
              }
            }
          },
          "description": "The import route filter update template",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/RouteFilterExample"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/RouteFilter"
                }
              }
            },
            "description": "The import route filter was updated successfully."
          },
          "400": {
            "$ref": "#/components/responses/BadRequestGeneric"
          },
          "404": {
            "$ref": "#/components/responses/ExportRouteFilter404"
          }
        },
        "summary": "Updates the specified Direct Link gateway import route filter",
        "tags": [
          "Gateway Import Route Filters"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.updateGatewayImportRouteFilter(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "UpdateRouteFilterTemplate updateRouteFilterTemplateModel = new UpdateRouteFilterTemplate.Builder()\n",
                      "  .build();\n",
                      "Map<String, Object> updateRouteFilterTemplateModelAsPatch = updateRouteFilterTemplateModel.asPatch();\n",
                      "UpdateGatewayImportRouteFilterOptions updateGatewayImportRouteFilterOptions = new UpdateGatewayImportRouteFilterOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .updateRouteFilterTemplatePatch(updateRouteFilterTemplateModelAsPatch)\n",
                      "  .build();\n",
                      "\n",
                      "Response<RouteFilter> response = directLinkService.updateGatewayImportRouteFilter(updateGatewayImportRouteFilterOptions).execute();\n",
                      "RouteFilter routeFilter = response.getResult();\n",
                      "\n",
                      "System.out.println(routeFilter);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "updateRouteFilterTemplateModel := &directlinkv1.UpdateRouteFilterTemplate{\n",
                      "}\n",
                      "updateRouteFilterTemplateModelAsPatch, asPatchErr := updateRouteFilterTemplateModel.AsPatch()\n",
                      "Expect(asPatchErr).To(BeNil())\n",
                      "\n",
                      "updateGatewayImportRouteFilterOptions := directLinkService.NewUpdateGatewayImportRouteFilterOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  updateRouteFilterTemplateModelAsPatch,\n",
                      ")\n",
                      "\n",
                      "routeFilter, response, err := directLinkService.UpdateGatewayImportRouteFilter(updateGatewayImportRouteFilterOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(routeFilter, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "update_route_filter_template_model = {\n",
                      "}\n",
                      "\n",
                      "response = direct_link_service.update_gateway_import_route_filter(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  update_route_filter_template=update_route_filter_template_model,\n",
                      ")\n",
                      "route_filter = response.get_result()\n",
                      "\n",
                      "print(json.dumps(route_filter, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/gateways/{gateway_id}/route_reports": {
      "get": {
        "description": "Retrieve all route reports for the specified Direct Link gateway.",
        "operationId": "list_gateway_route_reports",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "route_reports": [
                        {
                          "advertised_routes": [
                            {
                              "as_path": "64999 64999 64998 I",
                              "prefix": "10.10.0.0/16"
                            }
                          ],
                          "created_at": "2020-11-02T23:05:52.724Z",
                          "gateway_routes": [
                            {
                              "prefix": "172.17.0.0/16"
                            }
                          ],
                          "id": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
                          "on_prem_routes": [
                            {
                              "as_path": "64999 64999 64998 I",
                              "next_hop": "10.10.0.0/16",
                              "prefix": "172.17.0.0/16"
                            }
                          ],
                          "overlapping_routes": [
                            {
                              "routes": [
                                {
                                  "prefix": "172.17.0.0/16",
                                  "type": "virtual_connection",
                                  "virtual_connection_id": "d2d985d8-1d8e-4e8b-96cd-cee2290ecaff"
                                }
                              ]
                            }
                          ],
                          "status": "complete",
                          "updated_at": "2020-11-02T23:05:52.724Z",
                          "virtual_connection_routes": [
                            {
                              "routes": [
                                {
                                  "active": false,
                                  "local_preference": "200",
                                  "prefix": "172.17.0.0/16"
                                },
                                {
                                  "active": true,
                                  "local_preference": "200",
                                  "prefix": "10.10.0.0/16"
                                }
                              ],
                              "virtual_connection_id": "d2d985d8-1d8e-4e8b-96cd-cee2290ecaff",
                              "virtual_connection_name": "vpc1",
                              "virtual_connection_type": "vpc"
                            }
                          ]
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/RouteReportCollection"
                }
              }
            },
            "description": "Reports retrieved successfully."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find gateway",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "The specified Direct Link gateway could not be found."
          }
        },
        "summary": "List route reports",
        "tags": [
          "Gateway Route Reports"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X GET \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID/route_reports?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.listGatewayRouteReports(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ListGatewayRouteReportsOptions listGatewayRouteReportsOptions = new ListGatewayRouteReportsOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<RouteReportCollection> response = directLinkService.listGatewayRouteReports(listGatewayRouteReportsOptions).execute();\n",
                      "RouteReportCollection routeReportCollection = response.getResult();\n",
                      "\n",
                      "System.out.println(routeReportCollection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "listGatewayRouteReportsOptions := directLinkService.NewListGatewayRouteReportsOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "routeReportCollection, response, err := directLinkService.ListGatewayRouteReports(listGatewayRouteReportsOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(routeReportCollection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.list_gateway_route_reports(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "route_report_collection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(route_report_collection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/version"
        },
        {
          "$ref": "#/components/parameters/path_gateway_id_qualified"
        }
      ],
      "post": {
        "description": "Request route report generation.  While report generation is in progress, additional requests to generate a report are ignored and return the current pending report.\nWhile `status` is `pending`, `gateway_routes`, `on_prem_routes`, `virtual_connection_routes`, and `overlapping_routes` will be empty arrays. These fields will be filled when the `status` enters the `complete` status. \nCall `get_gateway_route_report` with the pending route report's `id` to check on the current status of the report. ",
        "operationId": "create_gateway_route_report",
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "advertised_routes": [
                        {
                          "as_path": "64999 64999 64998 I",
                          "prefix": "10.10.0.0/16"
                        }
                      ],
                      "created_at": "2020-11-02T23:05:52.724Z",
                      "gateway_routes": [
                        {
                          "prefix": "172.17.0.0/16"
                        }
                      ],
                      "id": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
                      "on_prem_routes": [
                        {
                          "as_path": "64999 64999 64998 I",
                          "next_hop": "10.10.0.0/16",
                          "prefix": "172.17.0.0/16"
                        }
                      ],
                      "overlapping_routes": [
                        {
                          "routes": [
                            {
                              "prefix": "172.17.0.0/16",
                              "type": "virtual_connection",
                              "virtual_connection_id": "d2d985d8-1d8e-4e8b-96cd-cee2290ecaff"
                            }
                          ]
                        }
                      ],
                      "status": "complete",
                      "updated_at": "2020-11-02T23:05:52.724Z",
                      "virtual_connection_routes": [
                        {
                          "routes": [
                            {
                              "active": false,
                              "local_preference": "200",
                              "prefix": "172.17.0.0/16"
                            },
                            {
                              "active": true,
                              "local_preference": "200",
                              "prefix": "10.10.0.0/16"
                            }
                          ],
                          "virtual_connection_id": "d2d985d8-1d8e-4e8b-96cd-cee2290ecaff",
                          "virtual_connection_name": "vpc1",
                          "virtual_connection_type": "vpc"
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/RouteReport"
                }
              }
            },
            "description": "Route report request successful.  If not already in progress, report generation has begun."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find gateway",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "The specified Direct Link gateway could not be found."
          }
        },
        "summary": "Request a route report",
        "tags": [
          "Gateway Route Reports"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X POST \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID/route_reports?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.createGatewayRouteReport(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "CreateGatewayRouteReportOptions createGatewayRouteReportOptions = new CreateGatewayRouteReportOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<RouteReport> response = directLinkService.createGatewayRouteReport(createGatewayRouteReportOptions).execute();\n",
                      "RouteReport routeReport = response.getResult();\n",
                      "\n",
                      "System.out.println(routeReport);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "createGatewayRouteReportOptions := directLinkService.NewCreateGatewayRouteReportOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "routeReport, response, err := directLinkService.CreateGatewayRouteReport(createGatewayRouteReportOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(routeReport, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.create_gateway_route_report(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "route_report = response.get_result()\n",
                      "\n",
                      "print(json.dumps(route_report, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/gateways/{gateway_id}/route_reports/{id}": {
      "delete": {
        "description": "Delete a route report.",
        "operationId": "delete_gateway_route_report",
        "responses": {
          "204": {
            "description": "Route report deleted successfully."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Route report not found",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A Direct Link gateway or route report with the specified identifier could not be found."
          }
        },
        "summary": "Delete route report",
        "tags": [
          "Gateway Route Reports"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X DELETE \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID/route_reports/$REPORT_ID?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "try {\n",
                      "  await directLinkService.deleteGatewayRouteReport(params);\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "DeleteGatewayRouteReportOptions deleteGatewayRouteReportOptions = new DeleteGatewayRouteReportOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<Void> response = directLinkService.deleteGatewayRouteReport(deleteGatewayRouteReportOptions).execute();"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "deleteGatewayRouteReportOptions := directLinkService.NewDeleteGatewayRouteReportOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "response, err := directLinkService.DeleteGatewayRouteReport(deleteGatewayRouteReportOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "if response.StatusCode != 204 {\n",
                      "  fmt.Printf(\"\\nUnexpected response status code received from DeleteGatewayRouteReport(): %d\\n\", response.StatusCode)\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.delete_gateway_route_report(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "get": {
        "description": "Retrieve a route report.",
        "operationId": "get_gateway_route_report",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "advertised_routes": [
                        {
                          "as_path": "64999 64999 64998 I",
                          "prefix": "10.10.0.0/16"
                        }
                      ],
                      "created_at": "2020-11-02T23:05:52.724Z",
                      "gateway_routes": [
                        {
                          "prefix": "172.17.0.0/16"
                        }
                      ],
                      "id": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
                      "on_prem_routes": [
                        {
                          "as_path": "64999 64999 64998 I",
                          "next_hop": "10.10.0.0/16",
                          "prefix": "172.17.0.0/16"
                        }
                      ],
                      "overlapping_routes": [
                        {
                          "routes": [
                            {
                              "prefix": "172.17.0.0/16",
                              "type": "virtual_connection",
                              "virtual_connection_id": "d2d985d8-1d8e-4e8b-96cd-cee2290ecaff"
                            }
                          ]
                        }
                      ],
                      "status": "complete",
                      "updated_at": "2020-11-02T23:05:52.724Z",
                      "virtual_connection_routes": [
                        {
                          "routes": [
                            {
                              "active": false,
                              "local_preference": "200",
                              "prefix": "172.17.0.0/16"
                            },
                            {
                              "active": true,
                              "local_preference": "200",
                              "prefix": "10.10.0.0/16"
                            }
                          ],
                          "virtual_connection_id": "d2d985d8-1d8e-4e8b-96cd-cee2290ecaff",
                          "virtual_connection_name": "vpc1",
                          "virtual_connection_type": "vpc"
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/RouteReport"
                }
              }
            },
            "description": "Route report retrieved successfully."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Route report not found",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A route report or gateway with the specified identifier(s) could not be found."
          }
        },
        "summary": "Retrieve route report",
        "tags": [
          "Gateway Route Reports"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X GET \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID/route_reports/$REPORT_ID?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.getGatewayRouteReport(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GetGatewayRouteReportOptions getGatewayRouteReportOptions = new GetGatewayRouteReportOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<RouteReport> response = directLinkService.getGatewayRouteReport(getGatewayRouteReportOptions).execute();\n",
                      "RouteReport routeReport = response.getResult();\n",
                      "\n",
                      "System.out.println(routeReport);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "getGatewayRouteReportOptions := directLinkService.NewGetGatewayRouteReportOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "routeReport, response, err := directLinkService.GetGatewayRouteReport(getGatewayRouteReportOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(routeReport, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.get_gateway_route_report(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "route_report = response.get_result()\n",
                      "\n",
                      "print(json.dumps(route_report, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/version"
        },
        {
          "$ref": "#/components/parameters/path_gateway_id_qualified"
        },
        {
          "$ref": "#/components/parameters/route_report_id"
        }
      ]
    },
    "/gateways/{gateway_id}/virtual_connections": {
      "get": {
        "description": "List a gateway's virtual connections.  \nFor gateway in other account with virtual connections that connect to network in this account.  Only virtual connections that connect to this account are returned.",
        "operationId": "list_gateway_virtual_connections",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "virtual_connections": [
                        {
                          "created_at": "2020-11-02T23:05:52.724Z",
                          "id": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
                          "name": "newVC",
                          "network_account": "00aa14a2e0fb102c8995ebefff865555",
                          "network_id": "crn:[...]",
                          "status": "attached",
                          "type": "vpc"
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GatewayVirtualConnectionCollection"
                }
              }
            },
            "description": "The virtual connections were retrieved successfully."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find Gateway",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "The specified virtual connection could not be found."
          }
        },
        "summary": "List virtual connections",
        "tags": [
          "Virtual Connections"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X GET \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID/virtual_connections?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.listGatewayVirtualConnections(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ListGatewayVirtualConnectionsOptions listGatewayVirtualConnectionsOptions = new ListGatewayVirtualConnectionsOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<GatewayVirtualConnectionCollection> response = directLinkService.listGatewayVirtualConnections(listGatewayVirtualConnectionsOptions).execute();\n",
                      "GatewayVirtualConnectionCollection gatewayVirtualConnectionCollection = response.getResult();\n",
                      "\n",
                      "System.out.println(gatewayVirtualConnectionCollection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "listGatewayVirtualConnectionsOptions := directLinkService.NewListGatewayVirtualConnectionsOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "gatewayVirtualConnectionCollection, response, err := directLinkService.ListGatewayVirtualConnections(listGatewayVirtualConnectionsOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gatewayVirtualConnectionCollection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.list_gateway_virtual_connections(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "gateway_virtual_connection_collection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway_virtual_connection_collection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/path_gateway_id_qualified"
        },
        {
          "$ref": "#/components/parameters/version"
        }
      ],
      "post": {
        "description": "Create a virtual connection to the specified network.",
        "operationId": "create_gateway_virtual_connection",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GatewayVirtualConnectionTemplate"
              }
            }
          },
          "description": "The virtual connection template",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "created_at": "2020-11-02T23:05:52.724Z",
                      "id": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
                      "name": "newVC",
                      "network_account": "00aa14a2e0fb102c8995ebefff865555",
                      "network_id": "crn:[...]",
                      "status": "attached",
                      "type": "vpc"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GatewayVirtualConnection"
                }
              }
            },
            "description": "The virtual connection was created successfully."
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "validation_required_field_missing",
                          "message": "Mandatory field is missing.",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling",
                          "target": {
                            "name": "type",
                            "type": "field"
                          }
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric400"
                }
              }
            },
            "description": "An invalid template was provided."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find Gateway",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "The specified gateway could not be found."
          }
        },
        "summary": "Create virtual connection",
        "tags": [
          "Virtual Connections"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X POST \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID/virtual_connections?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\" \\\n  -d '{\n        \"type\": \"vpc\",\n        \"name\": \"my-example-connection\",\n        \"network_id\": \"$VPC_CRN\"\n      }'"
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  name: 'newVC',\n",
                      "  type: 'vpc',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.createGatewayVirtualConnection(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "CreateGatewayVirtualConnectionOptions createGatewayVirtualConnectionOptions = new CreateGatewayVirtualConnectionOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .name(\"newVC\")\n",
                      "  .type(\"vpc\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<GatewayVirtualConnection> response = directLinkService.createGatewayVirtualConnection(createGatewayVirtualConnectionOptions).execute();\n",
                      "GatewayVirtualConnection gatewayVirtualConnection = response.getResult();\n",
                      "\n",
                      "System.out.println(gatewayVirtualConnection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "createGatewayVirtualConnectionOptions := directLinkService.NewCreateGatewayVirtualConnectionOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"newVC\",\n",
                      "  \"vpc\",\n",
                      ")\n",
                      "\n",
                      "gatewayVirtualConnection, response, err := directLinkService.CreateGatewayVirtualConnection(createGatewayVirtualConnectionOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gatewayVirtualConnection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.create_gateway_virtual_connection(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  name='newVC',\n",
                      "  type='vpc',\n",
                      ")\n",
                      "gateway_virtual_connection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway_virtual_connection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/gateways/{gateway_id}/virtual_connections/{id}": {
      "delete": {
        "description": "Delete the virtual connection.",
        "operationId": "delete_gateway_virtual_connection",
        "responses": {
          "204": {
            "description": "The virtual connection was removed successfully."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find a VirtualConnection",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A virtual connection with the specified identifier could not be found."
          }
        },
        "summary": "Delete virtual connection",
        "tags": [
          "Virtual Connections"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X DELETE \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID/virtual_connections/$VIRTUAL_CONNECTION_ID?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "try {\n",
                      "  await directLinkService.deleteGatewayVirtualConnection(params);\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "DeleteGatewayVirtualConnectionOptions deleteGatewayVirtualConnectionOptions = new DeleteGatewayVirtualConnectionOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<Void> response = directLinkService.deleteGatewayVirtualConnection(deleteGatewayVirtualConnectionOptions).execute();"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "deleteGatewayVirtualConnectionOptions := directLinkService.NewDeleteGatewayVirtualConnectionOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "response, err := directLinkService.DeleteGatewayVirtualConnection(deleteGatewayVirtualConnectionOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "if response.StatusCode != 204 {\n",
                      "  fmt.Printf(\"\\nUnexpected response status code received from DeleteGatewayVirtualConnection(): %d\\n\", response.StatusCode)\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.delete_gateway_virtual_connection(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "get": {
        "description": "Retrieve a virtual connection.",
        "operationId": "get_gateway_virtual_connection",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "created_at": "2020-11-02T23:05:52.724Z",
                      "id": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
                      "name": "newVC",
                      "network_account": "00aa14a2e0fb102c8995ebefff865555",
                      "network_id": "crn:[...]",
                      "status": "attached",
                      "type": "vpc"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GatewayVirtualConnection"
                }
              }
            },
            "description": "The virtual connection was retrieved successfully."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find a VirtualConnection",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A virtual connection with the specified identifier could not be found."
          }
        },
        "summary": "Get virtual connection",
        "tags": [
          "Virtual Connections"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X GET \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID/virtual_connections/$VIRTUAL_CONNECTION_ID?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.getGatewayVirtualConnection(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GetGatewayVirtualConnectionOptions getGatewayVirtualConnectionOptions = new GetGatewayVirtualConnectionOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<GatewayVirtualConnection> response = directLinkService.getGatewayVirtualConnection(getGatewayVirtualConnectionOptions).execute();\n",
                      "GatewayVirtualConnection gatewayVirtualConnection = response.getResult();\n",
                      "\n",
                      "System.out.println(gatewayVirtualConnection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "getGatewayVirtualConnectionOptions := directLinkService.NewGetGatewayVirtualConnectionOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "gatewayVirtualConnection, response, err := directLinkService.GetGatewayVirtualConnection(getGatewayVirtualConnectionOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gatewayVirtualConnection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.get_gateway_virtual_connection(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "gateway_virtual_connection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway_virtual_connection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/path_gateway_id_qualified"
        },
        {
          "$ref": "#/components/parameters/path_virtual_connection_id"
        },
        {
          "$ref": "#/components/parameters/version"
        }
      ],
      "patch": {
        "description": "Update a virtual connection.",
        "operationId": "update_gateway_virtual_connection",
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/GatewayVirtualConnectionPatchTemplate"
              }
            }
          },
          "description": "The virtual connection patch template",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "created_at": "2020-11-02T23:05:52.724Z",
                      "id": "ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4",
                      "name": "newVC",
                      "network_account": "00aa14a2e0fb102c8995ebefff865555",
                      "network_id": "crn:[...]",
                      "status": "attached",
                      "type": "vpc"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GatewayVirtualConnection"
                }
              }
            },
            "description": "The virtual connection was updated successfully."
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "bad_request",
                          "message": "The information given was invalid, malformed, or missing a required field.",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling",
                          "target": {
                            "name": "request_body",
                            "type": "field"
                          }
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric400"
                }
              }
            },
            "description": "The request was invalid."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find a VirtualConnection",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A virtual connection with the specified identifier could not be found."
          }
        },
        "summary": "Update virtual connection",
        "tags": [
          "Virtual Connections"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X PATCH \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID/virtual_connections/$VIRTUAL_CONNECTION_ID?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\" \\\n  -d '{\n        \"name\": \"new-name\"\n      }'"
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  gatewayId: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.updateGatewayVirtualConnection(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GatewayVirtualConnectionPatchTemplate gatewayVirtualConnectionPatchTemplateModel = new GatewayVirtualConnectionPatchTemplate.Builder()\n",
                      "  .build();\n",
                      "Map<String, Object> gatewayVirtualConnectionPatchTemplateModelAsPatch = gatewayVirtualConnectionPatchTemplateModel.asPatch();\n",
                      "UpdateGatewayVirtualConnectionOptions updateGatewayVirtualConnectionOptions = new UpdateGatewayVirtualConnectionOptions.Builder()\n",
                      "  .gatewayId(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .gatewayVirtualConnectionPatchTemplatePatch(gatewayVirtualConnectionPatchTemplateModelAsPatch)\n",
                      "  .build();\n",
                      "\n",
                      "Response<GatewayVirtualConnection> response = directLinkService.updateGatewayVirtualConnection(updateGatewayVirtualConnectionOptions).execute();\n",
                      "GatewayVirtualConnection gatewayVirtualConnection = response.getResult();\n",
                      "\n",
                      "System.out.println(gatewayVirtualConnection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "gatewayVirtualConnectionPatchTemplateModel := &directlinkv1.GatewayVirtualConnectionPatchTemplate{\n",
                      "}\n",
                      "gatewayVirtualConnectionPatchTemplateModelAsPatch, asPatchErr := gatewayVirtualConnectionPatchTemplateModel.AsPatch()\n",
                      "Expect(asPatchErr).To(BeNil())\n",
                      "\n",
                      "updateGatewayVirtualConnectionOptions := directLinkService.NewUpdateGatewayVirtualConnectionOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  gatewayVirtualConnectionPatchTemplateModelAsPatch,\n",
                      ")\n",
                      "\n",
                      "gatewayVirtualConnection, response, err := directLinkService.UpdateGatewayVirtualConnection(updateGatewayVirtualConnectionOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gatewayVirtualConnection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "gateway_virtual_connection_patch_template_model = {\n",
                      "}\n",
                      "\n",
                      "response = direct_link_service.update_gateway_virtual_connection(\n",
                      "  gateway_id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  gateway_virtual_connection_patch_template=gateway_virtual_connection_patch_template_model,\n",
                      ")\n",
                      "gateway_virtual_connection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway_virtual_connection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/gateways/{id}": {
      "delete": {
        "description": "Delete a Direct Link gateway.",
        "operationId": "delete_gateway",
        "responses": {
          "204": {
            "description": "The Direct Link gateway was deleted successfully."
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "bad_request",
                          "message": "The gateway could not be deleted as there are virtual connections associated with it. Delete all virtual connections associated with this gateway and retry.",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric400"
                }
              }
            },
            "description": "The gateway could not be deleted as there are virtual connections associated with it. Delete all virtual connections associated with this gateway and retry."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find Gateway",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A Direct Link gateway with the specified identifier could not be found."
          }
        },
        "summary": "Delete gateway",
        "tags": [
          "Gateways"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X DELETE \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "try {\n",
                      "  await directLinkService.deleteGateway(params);\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "DeleteGatewayOptions deleteGatewayOptions = new DeleteGatewayOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<Void> response = directLinkService.deleteGateway(deleteGatewayOptions).execute();"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "deleteGatewayOptions := directLinkService.NewDeleteGatewayOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "response, err := directLinkService.DeleteGateway(deleteGatewayOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "if response.StatusCode != 204 {\n",
                      "  fmt.Printf(\"\\nUnexpected response status code received from DeleteGateway(): %d\\n\", response.StatusCode)\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.delete_gateway(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "get": {
        "description": "Retrieve a Direct Link gateway.",
        "operationId": "get_gateway",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/Gateway"
                  }
                },
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/Gateway"
                    },
                    {
                      "$ref": "#/components/schemas/CrossAccountGateway"
                    }
                  ]
                }
              }
            },
            "description": "The Direct Link gateway was retrieved successfully."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find Gateway",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A Direct Link gateway with the specified identifier could not be found."
          }
        },
        "summary": "Get gateway",
        "tags": [
          "Gateways"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X GET \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.getGateway(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GetGatewayOptions getGatewayOptions = new GetGatewayOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<GetGatewayResponse> response = directLinkService.getGateway(getGatewayOptions).execute();\n",
                      "GetGatewayResponse getGatewayResponse = response.getResult();\n",
                      "\n",
                      "System.out.println(getGatewayResponse);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "getGatewayOptions := directLinkService.NewGetGatewayOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "getGatewayResponse, response, err := directLinkService.GetGateway(getGatewayOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(getGatewayResponse, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.get_gateway(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "get_gateway_response = response.get_result()\n",
                      "\n",
                      "print(json.dumps(get_gateway_response, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/path_gateway_id"
        },
        {
          "$ref": "#/components/parameters/version"
        }
      ],
      "patch": {
        "description": "Update a Direct Link gateway.",
        "operationId": "update_gateway",
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/GatewayPatchTemplate"
              }
            }
          },
          "description": "The Direct Link gateway patch",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/Gateway"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Gateway"
                }
              }
            },
            "description": "The Direct Link gateway was updated successfully."
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "validation_invalid_argument",
                          "message": "Invalid Request",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric400"
                }
              }
            },
            "description": "The request was invalid."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find Gateway",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A Direct Link gateway with the specified identifier could not be found."
          }
        },
        "summary": "Update gateway",
        "tags": [
          "Gateways"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X PATCH \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\"\n  -d '{\n        \"name\": \"new_gateway_name\"\n      }'"
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.updateGateway(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              },
              {
                "name": "Example request to update authentication key to Secrets Manager",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "// Request models needed by this operation.\n",
                      "\n",
                      "// AuthenticationKeyIdentitySecretsManagerAuthenticationKeyIdentity\n",
                      "const authenticationKeyIdentityModel = {\n",
                      "  crn: 'crn:v1:bluemix:public:secrets-manager:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:secret:bbb222bc-430a-4de9-9aad-84e5bb022222',\n",
                      "};\n",
                      "\n",
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  authenticationKey: authenticationKeyIdentityModel,\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.updateGateway(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GatewayPatchTemplate gatewayPatchTemplateModel = new GatewayPatchTemplate.Builder()\n",
                      "  .build();\n",
                      "Map<String, Object> gatewayPatchTemplateModelAsPatch = gatewayPatchTemplateModel.asPatch();\n",
                      "UpdateGatewayOptions updateGatewayOptions = new UpdateGatewayOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .gatewayPatchTemplatePatch(gatewayPatchTemplateModelAsPatch)\n",
                      "  .build();\n",
                      "\n",
                      "Response<Gateway> response = directLinkService.updateGateway(updateGatewayOptions).execute();\n",
                      "Gateway gateway = response.getResult();\n",
                      "\n",
                      "System.out.println(gateway);"
                    ]
                  }
                ]
              },
              {
                "name": "Example request to update authentication key to Secrets Manager",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "AuthenticationKeyIdentitySecretsManagerAuthenticationKeyIdentity authenticationKeyIdentityModel = new AuthenticationKeyIdentitySecretsManagerAuthenticationKeyIdentity.Builder()\n",
                      "  .crn(\"crn:v1:bluemix:public:secrets-manager:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:secret:bbb222bc-430a-4de9-9aad-84e5bb022222\")\n",
                      "  .build();\n",
                      "GatewayPatchTemplate gatewayPatchTemplateModel = new GatewayPatchTemplate.Builder()\n",
                      "  .authenticationKey(authenticationKeyIdentityModel)\n",
                      "  .build();\n",
                      "Map<String, Object> gatewayPatchTemplateModelAsPatch = gatewayPatchTemplateModel.asPatch();\n",
                      "UpdateGatewayOptions updateGatewayOptions = new UpdateGatewayOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .gatewayPatchTemplatePatch(gatewayPatchTemplateModelAsPatch)\n",
                      "  .build();\n",
                      "\n",
                      "Response<Gateway> response = directLinkService.updateGateway(updateGatewayOptions).execute();\n",
                      "Gateway gateway = response.getResult();\n",
                      "\n",
                      "System.out.println(gateway);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "gatewayPatchTemplateModel := &directlinkv1.GatewayPatchTemplate{\n",
                      "}\n",
                      "gatewayPatchTemplateModelAsPatch, asPatchErr := gatewayPatchTemplateModel.AsPatch()\n",
                      "Expect(asPatchErr).To(BeNil())\n",
                      "\n",
                      "updateGatewayOptions := directLinkService.NewUpdateGatewayOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  gatewayPatchTemplateModelAsPatch,\n",
                      ")\n",
                      "\n",
                      "gateway, response, err := directLinkService.UpdateGateway(updateGatewayOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gateway, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              },
              {
                "name": "Example request to update authentication key with Secrets Manager",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "authenticationKeyModel := &directlinkv1.AuthenticationKeyIdentitySecretsManagerAuthenticationKeyIdentity{\n",
                      "  Crn: core.StringPtr(\"crn:v1:bluemix:public:secrets-manager:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:secret:bbb222bc-430a-4de9-9aad-84e5bb022222\"),\n",
                      "}\n",
                      "\n",
                      "gatewayPatchTemplateModel := &directlinkv1.GatewayPatchTemplate{\n",
                      "  AuthenticationKey: authenticationKeyModel,\n",
                      "}\n",
                      "gatewayPatchTemplateModelAsPatch, asPatchErr := gatewayPatchTemplateModel.AsPatch()\n",
                      "Expect(asPatchErr).To(BeNil())\n",
                      "\n",
                      "updateGatewayOptions := directLinkService.NewUpdateGatewayOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  gatewayPatchTemplateModelAsPatch,\n",
                      ")\n",
                      "\n",
                      "gateway, response, err := directLinkService.UpdateGateway(updateGatewayOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gateway, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "gateway_patch_template_model = {\n",
                      "}\n",
                      "\n",
                      "response = direct_link_service.update_gateway(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  gateway_patch_template=gateway_patch_template_model,\n",
                      ")\n",
                      "gateway = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway, indent=2))"
                    ]
                  }
                ]
              },
              {
                "name": "Example request to update authentication key with Secrets Manager",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "gateway_patch_template_model = {\n",
                      "  'authentication_key': {\n",
                      "    'crn': 'crn:v1:bluemix:public:secrets-manager:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:secret:bbb222bc-430a-4de9-9aad-84e5bb022222',\n",
                      "  },\n",
                      "}\n",
                      "\n",
                      "response = direct_link_service.update_gateway(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  gateway_patch_template=gateway_patch_template_model,\n",
                      ")\n",
                      "gateway = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/gateways/{id}/actions": {
      "parameters": [
        {
          "$ref": "#/components/parameters/path_gateway_connect_only_id"
        },
        {
          "$ref": "#/components/parameters/version"
        }
      ],
      "post": {
        "description": "Approve or reject a gateway's current oustanding change request.  \n\nThis API is only used for provider created Direct Link Connect gateways to approve or reject specific changes initiated from a provider portal. ",
        "operationId": "create_gateway_action",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GatewayActionTemplate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/Gateway"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Gateway"
                }
              }
            },
            "description": "action successfully completed"
          },
          "204": {
            "description": "action successfully completed"
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "validation_invalid_argument",
                          "message": "The value of given argument is invalid",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling",
                          "target": {
                            "name": "action",
                            "type": "field"
                          }
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric400"
                }
              }
            },
            "description": "invalid request"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_authorized",
                          "message": "request not authorized",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric403"
                }
              }
            },
            "description": "request not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find Gateway",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "resource not found"
          }
        },
        "summary": "Approve or reject change requests",
        "tags": [
          "Gateways"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X POST \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID/actions?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\" \\\n  -d '{\n        \"action\": \"create_gateway_approve\",\n          \"resource_group\": {\n            \"id\": \"testid-123456\"\n        }\n      }'"
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.createGatewayAction(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              },
              {
                "name": "Example request to approve gateway with Secrets Manager authentication key",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "// Request models needed by this operation.\n",
                      "\n",
                      "// AuthenticationKeyIdentitySecretsManagerAuthenticationKeyIdentity\n",
                      "const authenticationKeyIdentityModel = {\n",
                      "  crn: 'crn:v1:bluemix:public:secrets-manager:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:secret:bbb222bc-430a-4de9-9aad-84e5bb022222',\n",
                      "};\n",
                      "\n",
                      "// GatewayActionTemplateAuthenticationKey\n",
                      "const gatewayActionTemplateModel = {\n",
                      "  action: 'create_gateway_approve',\n",
                      "  authentication_key: authenticationKeyIdentityModel,\n",
                      "};\n",
                      "\n",
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  action: gatewayActionTemplateModel,\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.createGatewayAction(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "CreateGatewayActionOptions createGatewayActionOptions = new CreateGatewayActionOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<Gateway> response = directLinkService.createGatewayAction(createGatewayActionOptions).execute();\n",
                      "Gateway gateway = response.getResult();\n",
                      "\n",
                      "System.out.println(gateway);"
                    ]
                  }
                ]
              },
              {
                "name": "Example request to approve gateway with Secrets Manager authentication key",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "AuthenticationKeyIdentitySecretsManagerAuthenticationKeyIdentity authenticationKeyIdentityModel = new AuthenticationKeyIdentitySecretsManagerAuthenticationKeyIdentity.Builder()\n",
                      "  .crn(\"crn:v1:bluemix:public:secrets-manager:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:secret:bbb222bc-430a-4de9-9aad-84e5bb022222\")\n",
                      "  .build();\n",
                      "GatewayActionTemplateAuthenticationKey gatewayActionTemplateModel = new GatewayActionTemplateAuthenticationKey.Builder()\n",
                      "  .action(\"create_gateway_approve\")\n",
                      "  .authenticationKey(authenticationKeyIdentityModel)\n",
                      "  .build();\n",
                      "CreateGatewayActionOptions createGatewayActionOptions = new CreateGatewayActionOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .action(gatewayActionTemplateModel)\n",
                      "  .build();\n",
                      "\n",
                      "Response<Gateway> response = directLinkService.createGatewayAction(createGatewayActionOptions).execute();\n",
                      "Gateway gateway = response.getResult();\n",
                      "\n",
                      "System.out.println(gateway);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "createGatewayActionOptions := directLinkService.NewCreateGatewayActionOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "gateway, response, err := directLinkService.CreateGatewayAction(createGatewayActionOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gateway, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              },
              {
                "name": "Example request to approve gateway with Secrets Manager authentication key",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "authenticationKeyModel := &directlinkv1.AuthenticationKeyIdentitySecretsManagerAuthenticationKeyIdentity{\n",
                      "  Crn: core.StringPtr(\"crn:v1:bluemix:public:secrets-manager:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:secret:bbb222bc-430a-4de9-9aad-84e5bb022222\"),\n",
                      "}\n",
                      "\n",
                      "createGatewayActionOptions := directLinkService.NewCreateGatewayActionOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "createGatewayActionOptions.SetAction(\"create_gateway_approve\")\n",
                      "createGatewayActionOptions.SetAuthenticationKey(authenticationKeyModel)\n",
                      "\n",
                      "gateway, response, err := directLinkService.CreateGatewayAction(createGatewayActionOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gateway, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.create_gateway_action(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "gateway = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway, indent=2))"
                    ]
                  }
                ]
              },
              {
                "name": "Example request to approve gateway with Secrets Manager authentication key",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "authentication_key_model = {\n",
                      "  'crn': 'crn:v1:bluemix:public:secrets-manager:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:secret:bbb222bc-430a-4de9-9aad-84e5bb022222',\n",
                      "}\n",
                      "\n",
                      "response = direct_link_service.create_gateway_action(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  action='create_gateway_approve',\n",
                      "  authentication_key=authentication_key_model,\n",
                      ")\n",
                      "gateway = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/gateways/{id}/completion_notice": {
      "get": {
        "description": "Retrieve a Direct Link Dedicated gateway's completion notice.",
        "operationId": "list_gateway_completion_notice",
        "responses": {
          "200": {
            "content": {
              "application/pdf": {
                "schema": {
                  "description": "Completion Notice",
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "Completion notice retrieved successfully."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find Gateway",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "The Direct Link completion notice for the specified gateway could not be found."
          }
        },
        "summary": "Get completion notice",
        "tags": [
          "Gateways"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X GET \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID/completion_notice?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.listGatewayCompletionNotice(params);\n",
                      "  // response is binary\n",
                      "  // fs.writeFileSync('result.out', res.result);\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ListGatewayCompletionNoticeOptions listGatewayCompletionNoticeOptions = new ListGatewayCompletionNoticeOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<InputStream> response = directLinkService.listGatewayCompletionNotice(listGatewayCompletionNoticeOptions).execute();\n",
                      "try (InputStream inputStream = response.getResult();) {\n",
                      "    inputStream.transferTo(new java.io.FileOutputStream(\"result.out\"));\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "listGatewayCompletionNoticeOptions := directLinkService.NewListGatewayCompletionNoticeOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "result, response, err := directLinkService.ListGatewayCompletionNotice(listGatewayCompletionNoticeOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "if result != nil {\n",
                      "  defer result.Close()\n",
                      "  outFile, err := os.Create(\"result.out\")\n",
                      "  if err != nil { panic(err) }\n",
                      "  defer outFile.Close()\n",
                      "  _, err = io.Copy(outFile, result)\n",
                      "  if err != nil { panic(err) }\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.list_gateway_completion_notice(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "result = response.get_result()\n",
                      "\n",
                      "with open('/tmp/result.out', 'wb') as fp:\n",
                      "  fp.write(result)"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/path_gateway_dedicated_only_id"
        },
        {
          "$ref": "#/components/parameters/version"
        }
      ],
      "put": {
        "description": "Upload a Direct Link Dedicated gateway completion notice.",
        "operationId": "create_gateway_completion_notice",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "description": "Completion notice form data",
                "properties": {
                  "upload": {
                    "description": "Completion notice PDF file",
                    "format": "binary",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Completion notice PDF file",
          "required": true
        },
        "responses": {
          "204": {
            "description": "Completion notice upload successful."
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "bad_request",
                          "message": "Required parameter missing.",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling",
                          "target": {
                            "name": "name",
                            "type": "field"
                          }
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric400"
                }
              }
            },
            "description": "An invalid Direct Link completion notice request was provided."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find Gateway",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "The Direct Link completion notice for the specified gateway could not be found."
          }
        },
        "summary": "Create completion notice",
        "tags": [
          "Gateways"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X PUT \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID/completion_notice?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\" \\\n  -F \"upload=@completion_notice.pdf\" \\\n  -H \"Content-Type: multipart/form-data\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "try {\n",
                      "  await directLinkService.createGatewayCompletionNotice(params);\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "CreateGatewayCompletionNoticeOptions createGatewayCompletionNoticeOptions = new CreateGatewayCompletionNoticeOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<Void> response = directLinkService.createGatewayCompletionNotice(createGatewayCompletionNoticeOptions).execute();"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "createGatewayCompletionNoticeOptions := directLinkService.NewCreateGatewayCompletionNoticeOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "response, err := directLinkService.CreateGatewayCompletionNotice(createGatewayCompletionNoticeOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "if response.StatusCode != 204 {\n",
                      "  fmt.Printf(\"\\nUnexpected response status code received from CreateGatewayCompletionNotice(): %d\\n\", response.StatusCode)\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.create_gateway_completion_notice(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/gateways/{id}/letter_of_authorization": {
      "get": {
        "description": "Retrieve a Direct Link Dedicated gateway's Letter of Authorization.",
        "operationId": "list_gateway_letter_of_authorization",
        "responses": {
          "200": {
            "content": {
              "application/pdf": {
                "schema": {
                  "description": "Letter of Authorization",
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "Letter of Authorization retrieved successfully."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Please check whether the resource you are requesting exists.",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "Letter of authorization not found."
          }
        },
        "summary": "Get letter of authorization",
        "tags": [
          "Gateways"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X GET \\\n  https://$DL_ENDPOINT/v1/gateways/$GATEWAY_ID/letter_of_authorization?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.listGatewayLetterOfAuthorization(params);\n",
                      "  // response is binary\n",
                      "  // fs.writeFileSync('result.out', res.result);\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ListGatewayLetterOfAuthorizationOptions listGatewayLetterOfAuthorizationOptions = new ListGatewayLetterOfAuthorizationOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<InputStream> response = directLinkService.listGatewayLetterOfAuthorization(listGatewayLetterOfAuthorizationOptions).execute();\n",
                      "try (InputStream inputStream = response.getResult();) {\n",
                      "    inputStream.transferTo(new java.io.FileOutputStream(\"result.out\"));\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "listGatewayLetterOfAuthorizationOptions := directLinkService.NewListGatewayLetterOfAuthorizationOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "result, response, err := directLinkService.ListGatewayLetterOfAuthorization(listGatewayLetterOfAuthorizationOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "if result != nil {\n",
                      "  defer result.Close()\n",
                      "  outFile, err := os.Create(\"result.out\")\n",
                      "  if err != nil { panic(err) }\n",
                      "  defer outFile.Close()\n",
                      "  _, err = io.Copy(outFile, result)\n",
                      "  if err != nil { panic(err) }\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.list_gateway_letter_of_authorization(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "result = response.get_result()\n",
                      "\n",
                      "with open('/tmp/result.out', 'wb') as fp:\n",
                      "  fp.write(result)"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/path_gateway_dedicated_only_id"
        },
        {
          "$ref": "#/components/parameters/version"
        }
      ]
    },
    "/gateways/{id}/macsec": {
      "delete": {
        "description": "Removes the MACsec configuration from a direct link, disabling the features.",
        "operationId": "unset_gateway_macsec",
        "responses": {
          "204": {
            "description": "The MACsec configuration was unset successfully."
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "invalid_request",
                          "message": "Invalid Request",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric400"
                }
              }
            },
            "description": "The direct link's `macsec_capability` does not allow deletion of MACsec."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find MACsec configuration",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "No MACsec configuration set for the direct link."
          }
        },
        "summary": "Unset MACsec configuration",
        "tags": [
          "Gateway MACsec"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "try {\n",
                      "  await directLinkService.unsetGatewayMacsec(params);\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "UnsetGatewayMacsecOptions unsetGatewayMacsecOptions = new UnsetGatewayMacsecOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<Void> response = directLinkService.unsetGatewayMacsec(unsetGatewayMacsecOptions).execute();"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "unsetGatewayMacsecOptions := directLinkService.NewUnsetGatewayMacsecOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "response, err := directLinkService.UnsetGatewayMacsec(unsetGatewayMacsecOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "if response.StatusCode != 204 {\n",
                      "  fmt.Printf(\"\\nUnexpected response status code received from UnsetGatewayMacsec(): %d\\n\", response.StatusCode)\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.unset_gateway_macsec(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "get": {
        "description": "Retrieve the MACsec configuration of a direct link.",
        "operationId": "get_gateway_macsec",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/GatewayMacsec"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GatewayMacsec"
                }
              }
            },
            "description": "The MACsec configuration of the direct link was retrieved successfully.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/eTag"
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find MACsec",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A direct link with the specified identifier could not be found or no MACsec configuration set for the direct link."
          }
        },
        "summary": "Get MACsec configuration",
        "tags": [
          "Gateway MACsec"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.getGatewayMacsec(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GetGatewayMacsecOptions getGatewayMacsecOptions = new GetGatewayMacsecOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<GatewayMacsec> response = directLinkService.getGatewayMacsec(getGatewayMacsecOptions).execute();\n",
                      "GatewayMacsec gatewayMacsec = response.getResult();\n",
                      "\n",
                      "System.out.println(gatewayMacsec);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "getGatewayMacsecOptions := directLinkService.NewGetGatewayMacsecOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "gatewayMacsec, response, err := directLinkService.GetGatewayMacsec(getGatewayMacsecOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gatewayMacsec, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.get_gateway_macsec(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "gateway_macsec = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway_macsec, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/path_gateway_id"
        },
        {
          "$ref": "#/components/parameters/version"
        }
      ],
      "patch": {
        "description": "Updates the MACsec configuration on a direct link.",
        "operationId": "update_gateway_macsec",
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/GatewayMacsecPatch"
              }
            }
          },
          "description": "The MACsec configuration patch.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/GatewayMacsec"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GatewayMacsec"
                }
              }
            },
            "description": "The MACsec configuration of the direct link was updated successfully.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/eTag"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "bad_request",
                          "message": "The information given was invalid, malformed, or missing a required field.",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling",
                          "target": {
                            "name": "request_body",
                            "type": "field"
                          }
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric400"
                }
              }
            },
            "description": "The request was invalid."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find MACsec",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A direct link with the specified identifier could not be found or no MACsec configuration set for the direct link."
          }
        },
        "summary": "Update MACsec configuration",
        "tags": [
          "Gateway MACsec"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.updateGatewayMacsec(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GatewayMacsecPatch gatewayMacsecPatchModel = new GatewayMacsecPatch.Builder()\n",
                      "  .build();\n",
                      "Map<String, Object> gatewayMacsecPatchModelAsPatch = gatewayMacsecPatchModel.asPatch();\n",
                      "UpdateGatewayMacsecOptions updateGatewayMacsecOptions = new UpdateGatewayMacsecOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .gatewayMacsecPatch(gatewayMacsecPatchModelAsPatch)\n",
                      "  .build();\n",
                      "\n",
                      "Response<GatewayMacsec> response = directLinkService.updateGatewayMacsec(updateGatewayMacsecOptions).execute();\n",
                      "GatewayMacsec gatewayMacsec = response.getResult();\n",
                      "\n",
                      "System.out.println(gatewayMacsec);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "gatewayMacsecPatchModel := &directlinkv1.GatewayMacsecPatch{\n",
                      "}\n",
                      "gatewayMacsecPatchModelAsPatch, asPatchErr := gatewayMacsecPatchModel.AsPatch()\n",
                      "Expect(asPatchErr).To(BeNil())\n",
                      "\n",
                      "updateGatewayMacsecOptions := directLinkService.NewUpdateGatewayMacsecOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  gatewayMacsecPatchModelAsPatch,\n",
                      ")\n",
                      "\n",
                      "gatewayMacsec, response, err := directLinkService.UpdateGatewayMacsec(updateGatewayMacsecOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gatewayMacsec, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "gateway_macsec_patch_model = {\n",
                      "}\n",
                      "\n",
                      "response = direct_link_service.update_gateway_macsec(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  gateway_macsec_patch=gateway_macsec_patch_model,\n",
                      ")\n",
                      "gateway_macsec = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway_macsec, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "put": {
        "description": "Sets the MACsec configuration on a direct link, enabling the feature.",
        "operationId": "set_gateway_macsec",
        "parameters": [
          {
            "$ref": "#/components/parameters/ifMatchOptional"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GatewayMacsecPrototype"
              }
            }
          },
          "description": "The MACsec configuration prototype.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/GatewayMacsec"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GatewayMacsec"
                }
              }
            },
            "description": "The MACsec configuration of the direct link was already set.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/eTag"
              }
            }
          },
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/GatewayMacsec"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GatewayMacsec"
                }
              }
            },
            "description": "The MACsec configuration of the direct link was set successfully.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/eTag"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "bad_request",
                          "message": "The information given was invalid, malformed, or missing a required field.",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling",
                          "target": {
                            "name": "request_body",
                            "type": "field"
                          }
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric400"
                }
              }
            },
            "description": "The request was invalid."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find Gateway",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A direct link with the specified identifier could not be found."
          }
        },
        "summary": "Set MACsec configuration",
        "tags": [
          "Gateway MACsec"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "// Request models needed by this operation.\n",
                      "\n",
                      "// GatewayMacsecCakKeyIdentityHpcsKeyIdentity\n",
                      "const gatewayMacsecCakKeyIdentityModel = {\n",
                      "  crn: 'crn:v1:bluemix:public:hs-crypto:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:key:bbb222bc-430a-4de9-9aad-84e5bb022222',\n",
                      "};\n",
                      "\n",
                      "// GatewayMacsecCakPrototype\n",
                      "const gatewayMacsecCakPrototypeModel = {\n",
                      "  key: gatewayMacsecCakKeyIdentityModel,\n",
                      "  name: '1000',\n",
                      "  session: 'primary',\n",
                      "};\n",
                      "\n",
                      "// SakRekeyPrototypeSakRekeyTimerModePrototype\n",
                      "const sakRekeyPrototypeModel = {\n",
                      "  interval: 3600,\n",
                      "  mode: 'timer',\n",
                      "};\n",
                      "\n",
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  active: true,\n",
                      "  caks: [gatewayMacsecCakPrototypeModel],\n",
                      "  sakRekey: sakRekeyPrototypeModel,\n",
                      "  securityPolicy: 'must_secure',\n",
                      "  ifMatch: 'W/\"96d225c4-56bd-43d9-98fc-d7148e5c5028\"',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.setGatewayMacsec(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GatewayMacsecCakKeyIdentityHpcsKeyIdentity gatewayMacsecCakKeyIdentityModel = new GatewayMacsecCakKeyIdentityHpcsKeyIdentity.Builder()\n",
                      "  .crn(\"crn:v1:bluemix:public:hs-crypto:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:key:bbb222bc-430a-4de9-9aad-84e5bb022222\")\n",
                      "  .build();\n",
                      "GatewayMacsecCakPrototype gatewayMacsecCakPrototypeModel = new GatewayMacsecCakPrototype.Builder()\n",
                      "  .key(gatewayMacsecCakKeyIdentityModel)\n",
                      "  .name(\"1000\")\n",
                      "  .session(\"primary\")\n",
                      "  .build();\n",
                      "SakRekeyPrototypeSakRekeyTimerModePrototype sakRekeyPrototypeModel = new SakRekeyPrototypeSakRekeyTimerModePrototype.Builder()\n",
                      "  .interval(Long.valueOf(\"3600\"))\n",
                      "  .mode(\"timer\")\n",
                      "  .build();\n",
                      "SetGatewayMacsecOptions setGatewayMacsecOptions = new SetGatewayMacsecOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .active(true)\n",
                      "  .caks(java.util.Arrays.asList(gatewayMacsecCakPrototypeModel))\n",
                      "  .sakRekey(sakRekeyPrototypeModel)\n",
                      "  .securityPolicy(\"must_secure\")\n",
                      "  .ifMatch(\"W/\\\"96d225c4-56bd-43d9-98fc-d7148e5c5028\\\"\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<GatewayMacsec> response = directLinkService.setGatewayMacsec(setGatewayMacsecOptions).execute();\n",
                      "GatewayMacsec gatewayMacsec = response.getResult();\n",
                      "\n",
                      "System.out.println(gatewayMacsec);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "gatewayMacsecCakKeyIdentityModel := &directlinkv1.GatewayMacsecCakKeyIdentityHpcsKeyIdentity{\n",
                      "  Crn: core.StringPtr(\"crn:v1:bluemix:public:hs-crypto:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:key:bbb222bc-430a-4de9-9aad-84e5bb022222\"),\n",
                      "}\n",
                      "\n",
                      "gatewayMacsecCakPrototypeModel := &directlinkv1.GatewayMacsecCakPrototype{\n",
                      "  Key: gatewayMacsecCakKeyIdentityModel,\n",
                      "  Name: core.StringPtr(\"1000\"),\n",
                      "  Session: core.StringPtr(\"primary\"),\n",
                      "}\n",
                      "\n",
                      "sakRekeyPrototypeModel := &directlinkv1.SakRekeyPrototypeSakRekeyTimerModePrototype{\n",
                      "  Interval: core.Int64Ptr(int64(3600)),\n",
                      "  Mode: core.StringPtr(\"timer\"),\n",
                      "}\n",
                      "\n",
                      "setGatewayMacsecOptions := directLinkService.NewSetGatewayMacsecOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  true,\n",
                      "  []directlinkv1.GatewayMacsecCakPrototype{*gatewayMacsecCakPrototypeModel},\n",
                      "  sakRekeyPrototypeModel,\n",
                      "  \"must_secure\",\n",
                      ")\n",
                      "setGatewayMacsecOptions.SetIfMatch(\"W/\\\"96d225c4-56bd-43d9-98fc-d7148e5c5028\\\"\")\n",
                      "\n",
                      "gatewayMacsec, response, err := directLinkService.SetGatewayMacsec(setGatewayMacsecOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gatewayMacsec, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "gateway_macsec_cak_key_identity_model = {\n",
                      "  'crn': 'crn:v1:bluemix:public:hs-crypto:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:key:bbb222bc-430a-4de9-9aad-84e5bb022222',\n",
                      "}\n",
                      "\n",
                      "gateway_macsec_cak_prototype_model = {\n",
                      "  'key': gateway_macsec_cak_key_identity_model,\n",
                      "  'name': '1000',\n",
                      "  'session': 'primary',\n",
                      "}\n",
                      "\n",
                      "sak_rekey_prototype_model = {\n",
                      "  'interval': 3600,\n",
                      "  'mode': 'timer',\n",
                      "}\n",
                      "\n",
                      "response = direct_link_service.set_gateway_macsec(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  active=True,\n",
                      "  caks=[gateway_macsec_cak_prototype_model],\n",
                      "  sak_rekey=sak_rekey_prototype_model,\n",
                      "  security_policy='must_secure',\n",
                      "  if_match='W/\"96d225c4-56bd-43d9-98fc-d7148e5c5028\"',\n",
                      ")\n",
                      "gateway_macsec = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway_macsec, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/gateways/{id}/macsec/caks": {
      "get": {
        "description": "List the CAKs associated with the MACsec configuration of a direct link.",
        "operationId": "list_gateway_macsec_caks",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/GatewayMacsecCakCollection"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GatewayMacsecCakCollection"
                }
              }
            },
            "description": "The list of CAKs was retrieved successfully."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find MACsec",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A direct link with the specified identifier could not be found or no MACsec configuration set for the direct link."
          }
        },
        "summary": "List MACsec CAKs",
        "tags": [
          "Gateway MACsec"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.listGatewayMacsecCaks(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ListGatewayMacsecCaksOptions listGatewayMacsecCaksOptions = new ListGatewayMacsecCaksOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<GatewayMacsecCakCollection> response = directLinkService.listGatewayMacsecCaks(listGatewayMacsecCaksOptions).execute();\n",
                      "GatewayMacsecCakCollection gatewayMacsecCakCollection = response.getResult();\n",
                      "\n",
                      "System.out.println(gatewayMacsecCakCollection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "listGatewayMacsecCaksOptions := directLinkService.NewListGatewayMacsecCaksOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "gatewayMacsecCakCollection, response, err := directLinkService.ListGatewayMacsecCaks(listGatewayMacsecCaksOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gatewayMacsecCakCollection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.list_gateway_macsec_caks(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "gateway_macsec_cak_collection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway_macsec_cak_collection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/path_gateway_id"
        },
        {
          "$ref": "#/components/parameters/version"
        }
      ],
      "post": {
        "description": "Creates a CAK associated with the MACsec configuration of a direct link.",
        "operationId": "create_gateway_macsec_cak",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GatewayMacsecCakPrototype"
              }
            }
          },
          "description": "The MACsec CAK prototype.",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/GatewayMacsecCak"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GatewayMacsecCak"
                }
              }
            },
            "description": "MACsec CAK successfully created."
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "bad_request",
                          "message": "The information given was invalid, malformed, or missing a required field.",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling",
                          "target": {
                            "name": "request_body",
                            "type": "field"
                          }
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric400"
                }
              }
            },
            "description": "The request was invalid."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find MACsec",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A direct link with the specified identifier could not be found or no MACsec configuration set for the direct link."
          }
        },
        "summary": "Create MACsec CAK",
        "tags": [
          "Gateway MACsec"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "// Request models needed by this operation.\n",
                      "\n",
                      "// GatewayMacsecCakKeyIdentityHpcsKeyIdentity\n",
                      "const gatewayMacsecCakKeyIdentityModel = {\n",
                      "  crn: 'crn:v1:bluemix:public:hs-crypto:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:key:bbb222bc-430a-4de9-9aad-84e5bb022222',\n",
                      "};\n",
                      "\n",
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  key: gatewayMacsecCakKeyIdentityModel,\n",
                      "  name: '1000',\n",
                      "  session: 'primary',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.createGatewayMacsecCak(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GatewayMacsecCakKeyIdentityHpcsKeyIdentity gatewayMacsecCakKeyIdentityModel = new GatewayMacsecCakKeyIdentityHpcsKeyIdentity.Builder()\n",
                      "  .crn(\"crn:v1:bluemix:public:hs-crypto:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:key:bbb222bc-430a-4de9-9aad-84e5bb022222\")\n",
                      "  .build();\n",
                      "CreateGatewayMacsecCakOptions createGatewayMacsecCakOptions = new CreateGatewayMacsecCakOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .key(gatewayMacsecCakKeyIdentityModel)\n",
                      "  .name(\"1000\")\n",
                      "  .session(\"primary\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<GatewayMacsecCak> response = directLinkService.createGatewayMacsecCak(createGatewayMacsecCakOptions).execute();\n",
                      "GatewayMacsecCak gatewayMacsecCak = response.getResult();\n",
                      "\n",
                      "System.out.println(gatewayMacsecCak);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "gatewayMacsecCakKeyIdentityModel := &directlinkv1.GatewayMacsecCakKeyIdentityHpcsKeyIdentity{\n",
                      "  Crn: core.StringPtr(\"crn:v1:bluemix:public:hs-crypto:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:key:bbb222bc-430a-4de9-9aad-84e5bb022222\"),\n",
                      "}\n",
                      "\n",
                      "createGatewayMacsecCakOptions := directLinkService.NewCreateGatewayMacsecCakOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  gatewayMacsecCakKeyIdentityModel,\n",
                      "  \"1000\",\n",
                      "  \"primary\",\n",
                      ")\n",
                      "\n",
                      "gatewayMacsecCak, response, err := directLinkService.CreateGatewayMacsecCak(createGatewayMacsecCakOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gatewayMacsecCak, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "gateway_macsec_cak_key_identity_model = {\n",
                      "  'crn': 'crn:v1:bluemix:public:hs-crypto:us-south:a/4111d05f36894e3cb9b46a43556d9000:abc111b8-37aa-4034-9def-f2607c87aaaa:key:bbb222bc-430a-4de9-9aad-84e5bb022222',\n",
                      "}\n",
                      "\n",
                      "response = direct_link_service.create_gateway_macsec_cak(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  key=gateway_macsec_cak_key_identity_model,\n",
                      "  name='1000',\n",
                      "  session='primary',\n",
                      ")\n",
                      "gateway_macsec_cak = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway_macsec_cak, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/gateways/{id}/macsec/caks/{cak_id}": {
      "delete": {
        "description": "Deletes the CAK from the MACsec configuration of a direct link.",
        "operationId": "delete_gateway_macsec_cak",
        "responses": {
          "204": {
            "description": "The MACsec CAK was deleted successfully."
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "invalid_request",
                          "message": "Cannot delete primary CAK, MACsec configuration must have a valid primary CAK",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric400"
                }
              }
            },
            "description": "Cannot delete primary CAK, MACsec configuration must have a valid primary CAK"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find MACsec CAK",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A direct link with the specified identifier could not be found or no MACsec configuration set for the direct link or a MACsec CAK with the specified identifier could not be found."
          }
        },
        "summary": "Delete MACsec CAK",
        "tags": [
          "Gateway MACsec"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  cakId: 'ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4',\n",
                      "};\n",
                      "\n",
                      "try {\n",
                      "  await directLinkService.deleteGatewayMacsecCak(params);\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "DeleteGatewayMacsecCakOptions deleteGatewayMacsecCakOptions = new DeleteGatewayMacsecCakOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .cakId(\"ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<Void> response = directLinkService.deleteGatewayMacsecCak(deleteGatewayMacsecCakOptions).execute();"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "deleteGatewayMacsecCakOptions := directLinkService.NewDeleteGatewayMacsecCakOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4\",\n",
                      ")\n",
                      "\n",
                      "response, err := directLinkService.DeleteGatewayMacsecCak(deleteGatewayMacsecCakOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "if response.StatusCode != 204 {\n",
                      "  fmt.Printf(\"\\nUnexpected response status code received from DeleteGatewayMacsecCak(): %d\\n\", response.StatusCode)\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.delete_gateway_macsec_cak(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  cak_id='ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4',\n",
                      ")"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "get": {
        "description": "Get a MACsec CAK by its identifier.",
        "operationId": "get_gateway_macsec_cak",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/GatewayMacsecCak"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GatewayMacsecCak"
                }
              }
            },
            "description": "The MACsec CAK was retrieved successfully."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find MACsec CAK",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A direct link with the specified identifier could not be found or no MACsec configuration set for the direct link or a MACsec CAK with the specified identifier could not be found."
          }
        },
        "summary": "Get MACsec CAK",
        "tags": [
          "Gateway MACsec"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  cakId: 'ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.getGatewayMacsecCak(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GetGatewayMacsecCakOptions getGatewayMacsecCakOptions = new GetGatewayMacsecCakOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .cakId(\"ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<GatewayMacsecCak> response = directLinkService.getGatewayMacsecCak(getGatewayMacsecCakOptions).execute();\n",
                      "GatewayMacsecCak gatewayMacsecCak = response.getResult();\n",
                      "\n",
                      "System.out.println(gatewayMacsecCak);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "getGatewayMacsecCakOptions := directLinkService.NewGetGatewayMacsecCakOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4\",\n",
                      ")\n",
                      "\n",
                      "gatewayMacsecCak, response, err := directLinkService.GetGatewayMacsecCak(getGatewayMacsecCakOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gatewayMacsecCak, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.get_gateway_macsec_cak(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  cak_id='ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4',\n",
                      ")\n",
                      "gateway_macsec_cak = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway_macsec_cak, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/path_gateway_id"
        },
        {
          "$ref": "#/components/parameters/path_cak_id"
        },
        {
          "$ref": "#/components/parameters/version"
        }
      ],
      "patch": {
        "description": "Updates the CAK on the MACsec configuration of a direct link.",
        "operationId": "update_gateway_macsec_cak",
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/GatewayMacsecCakPatch"
              }
            }
          },
          "description": "The MACsec CAK patch.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/GatewayMacsecCak"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GatewayMacsecCak"
                }
              }
            },
            "description": "The MACsec CAK was updated successfully."
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "bad_request",
                          "message": "The information given was invalid, malformed, or missing a required field.",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling",
                          "target": {
                            "name": "request_body",
                            "type": "field"
                          }
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric400"
                }
              }
            },
            "description": "The request was invalid."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find MACsec CAK",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A direct link with the specified identifier could not be found or no MACsec configuration set for the direct link or a MACsec CAK with the specified identifier could not be found."
          }
        },
        "summary": "Update MACsec CAK",
        "tags": [
          "Gateway MACsec"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  cakId: 'ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.updateGatewayMacsecCak(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GatewayMacsecCakPatch gatewayMacsecCakPatchModel = new GatewayMacsecCakPatch.Builder()\n",
                      "  .build();\n",
                      "Map<String, Object> gatewayMacsecCakPatchModelAsPatch = gatewayMacsecCakPatchModel.asPatch();\n",
                      "UpdateGatewayMacsecCakOptions updateGatewayMacsecCakOptions = new UpdateGatewayMacsecCakOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .cakId(\"ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4\")\n",
                      "  .gatewayMacsecCakPatch(gatewayMacsecCakPatchModelAsPatch)\n",
                      "  .build();\n",
                      "\n",
                      "Response<GatewayMacsecCak> response = directLinkService.updateGatewayMacsecCak(updateGatewayMacsecCakOptions).execute();\n",
                      "GatewayMacsecCak gatewayMacsecCak = response.getResult();\n",
                      "\n",
                      "System.out.println(gatewayMacsecCak);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "gatewayMacsecCakPatchModel := &directlinkv1.GatewayMacsecCakPatch{\n",
                      "}\n",
                      "gatewayMacsecCakPatchModelAsPatch, asPatchErr := gatewayMacsecCakPatchModel.AsPatch()\n",
                      "Expect(asPatchErr).To(BeNil())\n",
                      "\n",
                      "updateGatewayMacsecCakOptions := directLinkService.NewUpdateGatewayMacsecCakOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4\",\n",
                      "  gatewayMacsecCakPatchModelAsPatch,\n",
                      ")\n",
                      "\n",
                      "gatewayMacsecCak, response, err := directLinkService.UpdateGatewayMacsecCak(updateGatewayMacsecCakOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gatewayMacsecCak, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "gateway_macsec_cak_patch_model = {\n",
                      "}\n",
                      "\n",
                      "response = direct_link_service.update_gateway_macsec_cak(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  cak_id='ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4',\n",
                      "  gateway_macsec_cak_patch=gateway_macsec_cak_patch_model,\n",
                      ")\n",
                      "gateway_macsec_cak = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway_macsec_cak, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/gateways/{id}/statistics": {
      "get": {
        "description": "Retrieve gateway statistics or debug information.  Specify statistic to retrieve using required `type` query parameter.",
        "operationId": "get_gateway_statistics",
        "parameters": [
          {
            "$ref": "#/components/parameters/path_gateway_id"
          },
          {
            "$ref": "#/components/parameters/query_gateway_statistic_type"
          },
          {
            "$ref": "#/components/parameters/version"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "statistics": [
                        {
                          "created_at": "2020-08-20T06:58:41.909781Z",
                          "data": "MKA session details",
                          "type": "macsec_mka_session"
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GatewayStatisticCollection"
                }
              }
            },
            "description": "action successfully completed"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_authorized",
                          "message": "request not authorized",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric403"
                }
              }
            },
            "description": "request not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find Gateway",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Request not valid for resource.",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric409"
                }
              }
            },
            "description": "MACsec must be active to retrieve MACsec related data"
          }
        },
        "summary": "Gateway statistics/debug information",
        "tags": [
          "Gateways"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  type: 'macsec_mka_session',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.getGatewayStatistics(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GetGatewayStatisticsOptions getGatewayStatisticsOptions = new GetGatewayStatisticsOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .type(\"macsec_mka_session\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<GatewayStatisticCollection> response = directLinkService.getGatewayStatistics(getGatewayStatisticsOptions).execute();\n",
                      "GatewayStatisticCollection gatewayStatisticCollection = response.getResult();\n",
                      "\n",
                      "System.out.println(gatewayStatisticCollection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "getGatewayStatisticsOptions := directLinkService.NewGetGatewayStatisticsOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      "  \"macsec_mka_session\",\n",
                      ")\n",
                      "\n",
                      "gatewayStatisticCollection, response, err := directLinkService.GetGatewayStatistics(getGatewayStatisticsOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gatewayStatisticCollection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.get_gateway_statistics(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "  type='macsec_mka_session',\n",
                      ")\n",
                      "gateway_statistic_collection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway_statistic_collection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/path_gateway_id"
        },
        {
          "$ref": "#/components/parameters/query_gateway_statistic_type"
        },
        {
          "$ref": "#/components/parameters/version"
        }
      ]
    },
    "/gateways/{id}/status": {
      "get": {
        "description": "Retrieve gateway status.  Specify status to retrieve using required `type` query parameter.",
        "operationId": "get_gateway_status",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "status": [
                        {
                          "type": "bfd",
                          "updated_at": "2020-08-20T06:58:41.909781Z",
                          "value": "up"
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GatewayStatusCollection"
                }
              }
            },
            "description": "action successfully completed"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_authorized",
                          "message": "request not authorized",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric403"
                }
              }
            },
            "description": "request not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find Gateway",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Request not valid for resource.",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric409"
                }
              }
            },
            "description": "BFD must be active to retrieve BFD status"
          }
        },
        "summary": "Gateway status information",
        "tags": [
          "Gateways"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.getGatewayStatus(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GetGatewayStatusOptions getGatewayStatusOptions = new GetGatewayStatusOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<GatewayStatusCollection> response = directLinkService.getGatewayStatus(getGatewayStatusOptions).execute();\n",
                      "GatewayStatusCollection gatewayStatusCollection = response.getResult();\n",
                      "\n",
                      "System.out.println(gatewayStatusCollection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "getGatewayStatusOptions := directLinkService.NewGetGatewayStatusOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "gatewayStatusCollection, response, err := directLinkService.GetGatewayStatus(getGatewayStatusOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(gatewayStatusCollection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.get_gateway_status(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "gateway_status_collection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(gateway_status_collection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/path_gateway_id"
        },
        {
          "$ref": "#/components/parameters/query_gateway_status_type"
        },
        {
          "$ref": "#/components/parameters/version"
        }
      ]
    },
    "/offering_types/{offering_type}/locations": {
      "get": {
        "description": "Retrieve the list of valid locations for the specified Direct Link offering.",
        "operationId": "list_offering_type_locations",
        "parameters": [
          {
            "$ref": "#/components/parameters/path_offering_type_id_qualified"
          },
          {
            "$ref": "#/components/parameters/version"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "locations": [
                        {
                          "billing_location": "us",
                          "building_colocation_owner": "MyProvider",
                          "display_name": "Dallas 9",
                          "location_type": "PoP",
                          "macsec_enabled": false,
                          "market": "Dallas",
                          "market_geography": "N/S America",
                          "mzr": true,
                          "name": "dal03",
                          "offering_type": "dedicated",
                          "provision_enabled": true,
                          "vpc_region": "us-south"
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/LocationCollection"
                }
              }
            },
            "description": "The Direct Link locations for offering type were retrieved successfully."
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "bad_request",
                          "message": "Required parameter missing.",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling",
                          "target": {
                            "name": "request_body",
                            "type": "field"
                          }
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric400"
                }
              }
            },
            "description": "The Direct Link locations offering type could not be retrieved."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Location not found",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A Direct Link locations for the specified offering type could not be found."
          }
        },
        "summary": "List available locations",
        "tags": [
          "Offering Information"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X GET \\\n  https://$DL_ENDPOINT/v1/offering_types/dedicated/locations?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  offeringType: 'dedicated',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.listOfferingTypeLocations(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ListOfferingTypeLocationsOptions listOfferingTypeLocationsOptions = new ListOfferingTypeLocationsOptions.Builder()\n",
                      "  .offeringType(\"dedicated\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<LocationCollection> response = directLinkService.listOfferingTypeLocations(listOfferingTypeLocationsOptions).execute();\n",
                      "LocationCollection locationCollection = response.getResult();\n",
                      "\n",
                      "System.out.println(locationCollection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "listOfferingTypeLocationsOptions := directLinkService.NewListOfferingTypeLocationsOptions(\n",
                      "  \"dedicated\",\n",
                      ")\n",
                      "\n",
                      "locationCollection, response, err := directLinkService.ListOfferingTypeLocations(listOfferingTypeLocationsOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(locationCollection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.list_offering_type_locations(\n",
                      "  offering_type='dedicated',\n",
                      ")\n",
                      "location_collection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(location_collection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/offering_types/{offering_type}/locations/{location_name}/cross_connect_routers": {
      "get": {
        "description": "Retrieve location specific cross connect router information.  Only valid for offering_type=dedicated locations.",
        "operationId": "list_offering_type_location_cross_connect_routers",
        "parameters": [
          {
            "$ref": "#/components/parameters/path_offering_type_id_qualified"
          },
          {
            "$ref": "#/components/parameters/path_location_info_name"
          },
          {
            "$ref": "#/components/parameters/version"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "cross_connect_routers": [
                        {
                          "capbilities": [
                            "macsec",
                            "non-macsec"
                          ],
                          "router_name": "xcr01.dal03",
                          "total_connections": 1
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/LocationCrossConnectRouterCollection"
                }
              }
            },
            "description": "The location information was retrieved successfully."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Location not found",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A location information with the specified identifier could not be found."
          }
        },
        "summary": "List routers",
        "tags": [
          "Offering Information"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X GET \\\n  https://$DL_ENDPOINT/v1/offering_types/dedicated/locations/dal03/cross_connect_routers?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  offeringType: 'dedicated',\n",
                      "  locationName: 'testString',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.listOfferingTypeLocationCrossConnectRouters(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ListOfferingTypeLocationCrossConnectRoutersOptions listOfferingTypeLocationCrossConnectRoutersOptions = new ListOfferingTypeLocationCrossConnectRoutersOptions.Builder()\n",
                      "  .offeringType(\"dedicated\")\n",
                      "  .locationName(\"testString\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<LocationCrossConnectRouterCollection> response = directLinkService.listOfferingTypeLocationCrossConnectRouters(listOfferingTypeLocationCrossConnectRoutersOptions).execute();\n",
                      "LocationCrossConnectRouterCollection locationCrossConnectRouterCollection = response.getResult();\n",
                      "\n",
                      "System.out.println(locationCrossConnectRouterCollection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "listOfferingTypeLocationCrossConnectRoutersOptions := directLinkService.NewListOfferingTypeLocationCrossConnectRoutersOptions(\n",
                      "  \"dedicated\",\n",
                      "  \"testString\",\n",
                      ")\n",
                      "\n",
                      "locationCrossConnectRouterCollection, response, err := directLinkService.ListOfferingTypeLocationCrossConnectRouters(listOfferingTypeLocationCrossConnectRoutersOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(locationCrossConnectRouterCollection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.list_offering_type_location_cross_connect_routers(\n",
                      "  offering_type='dedicated',\n",
                      "  location_name='testString',\n",
                      ")\n",
                      "location_cross_connect_router_collection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(location_cross_connect_router_collection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/path_offering_type_id_qualified_just_dedicated"
        },
        {
          "$ref": "#/components/parameters/path_location_info_name"
        },
        {
          "$ref": "#/components/parameters/version"
        }
      ]
    },
    "/offering_types/{offering_type}/speeds": {
      "get": {
        "description": "List the available Direct Link speeds.",
        "operationId": "list_offering_type_speeds",
        "parameters": [
          {
            "$ref": "#/components/parameters/path_offering_type_id_qualified"
          },
          {
            "$ref": "#/components/parameters/version"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "speeds": [
                        {
                          "capabilities": [
                            "metered",
                            "non-metered"
                          ],
                          "link_speed": 2000,
                          "macsec_enabled": false
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/OfferingSpeedCollection"
                }
              }
            },
            "description": "The Direct Link offering speeds were retrieved successfully."
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "bad_request",
                          "message": "Required Parameter missing",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling",
                          "target": {
                            "name": "name",
                            "type": "field"
                          }
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric400"
                }
              }
            },
            "description": "The Direct Link offering speeds could not be retrieved for the offering type."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Cannot find OfferingType",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "A Direct Link offering speed with the specified offering type could not be found."
          }
        },
        "summary": "List speed options",
        "tags": [
          "Offering Information"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X GET \\\n  https://$DL_ENDPOINT/v1/offering_types/dedicated/speeds?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  offeringType: 'dedicated',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.listOfferingTypeSpeeds(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ListOfferingTypeSpeedsOptions listOfferingTypeSpeedsOptions = new ListOfferingTypeSpeedsOptions.Builder()\n",
                      "  .offeringType(\"dedicated\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<OfferingSpeedCollection> response = directLinkService.listOfferingTypeSpeeds(listOfferingTypeSpeedsOptions).execute();\n",
                      "OfferingSpeedCollection offeringSpeedCollection = response.getResult();\n",
                      "\n",
                      "System.out.println(offeringSpeedCollection);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "listOfferingTypeSpeedsOptions := directLinkService.NewListOfferingTypeSpeedsOptions(\n",
                      "  \"dedicated\",\n",
                      ")\n",
                      "\n",
                      "offeringSpeedCollection, response, err := directLinkService.ListOfferingTypeSpeeds(listOfferingTypeSpeedsOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(offeringSpeedCollection, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.list_offering_type_speeds(\n",
                      "  offering_type='dedicated',\n",
                      ")\n",
                      "offering_speed_collection = response.get_result()\n",
                      "\n",
                      "print(json.dumps(offering_speed_collection, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/ports": {
      "get": {
        "description": "Retrieve list of available Direct Link connect ports.  These ports can be used to create Direct Link connect gateways.",
        "operationId": "list_ports",
        "parameters": [
          {
            "$ref": "#/components/parameters/version"
          },
          {
            "$ref": "#/components/parameters/query_start"
          },
          {
            "$ref": "#/components/parameters/query_limit"
          },
          {
            "$ref": "#/components/parameters/query_location_info_name"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "first": {
                        "href": "https://directlink.cloud.ibm.com/v1/ports?limit=100"
                      },
                      "limit": 100,
                      "ports": [
                        {
                          "direct_link_count": 1,
                          "id": "01122b9b-820f-4c44-8a31-77f1f0806765",
                          "label": "XCR-FRK-CS-SEC-01",
                          "location_display_name": "Dallas 03",
                          "location_name": "dal03",
                          "provider_name": "provider_1",
                          "supported_link_speeds": [
                            1000,
                            2000,
                            5000,
                            10000
                          ]
                        }
                      ],
                      "total_count": 1
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/PortCollection"
                }
              }
            },
            "description": "Ports retrieved successfully."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Resource not found.",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "Port information could not be found."
          }
        },
        "summary": "List ports",
        "tags": [
          "Ports"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X GET \\\n  https://$DL_ENDPOINT/v1/ports?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  limit: 10,\n",
                      "  locationName: 'testString',\n",
                      "};\n",
                      "\n",
                      "const allResults = [];\n",
                      "try {\n",
                      "  const pager = new DirectLinkV1.PortsPager(directLinkService, params);\n",
                      "  while (pager.hasNext()) {\n",
                      "    const nextPage = await pager.getNext();\n",
                      "    expect(nextPage).not.toBeNull();\n",
                      "    allResults.push(...nextPage);\n",
                      "  }\n",
                      "  console.log(JSON.stringify(allResults, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ListPortsOptions listPortsOptions = new ListPortsOptions.Builder()\n",
                      "  .limit(Long.valueOf(\"10\"))\n",
                      "  .locationName(\"testString\")\n",
                      "  .build();\n",
                      "\n",
                      "PortsPager pager = new PortsPager(directLinkService, listPortsOptions);\n",
                      "List<Port> allResults = new ArrayList<>();\n",
                      "while (pager.hasNext()) {\n",
                      "  List<Port> nextPage = pager.getNext();\n",
                      "  allResults.addAll(nextPage);\n",
                      "}\n",
                      "\n",
                      "System.out.println(GsonSingleton.getGson().toJson(allResults));"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "listPortsOptions := &directlinkv1.ListPortsOptions{\n",
                      "  Limit: core.Int64Ptr(int64(10)),\n",
                      "  LocationName: core.StringPtr(\"testString\"),\n",
                      "}\n",
                      "\n",
                      "pager, err := directLinkService.NewPortsPager(listPortsOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "\n",
                      "var allResults []directlinkv1.Port\n",
                      "for pager.HasNext() {\n",
                      "  nextPage, err := pager.GetNext()\n",
                      "  if err != nil {\n",
                      "    panic(err)\n",
                      "  }\n",
                      "  allResults = append(allResults, nextPage...)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(allResults, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "all_results = []\n",
                      "pager = PortsPager(\n",
                      "  client=direct_link_service,\n",
                      "  limit=10,\n",
                      "  location_name='testString',\n",
                      ")\n",
                      "while pager.has_next():\n",
                      "  next_page = pager.get_next()\n",
                      "  assert next_page is not None\n",
                      "  all_results.extend(next_page)\n",
                      "\n",
                      "print(json.dumps(all_results, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/ports/{id}": {
      "get": {
        "description": "Retrieve Direct Link Connect provider port.",
        "operationId": "get_port",
        "parameters": [
          {
            "$ref": "#/components/parameters/version"
          },
          {
            "$ref": "#/components/parameters/path_port_id"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "direct_link_count": 1,
                      "id": "01122b9b-820f-4c44-8a31-77f1f0806765",
                      "label": "XCR-FRK-CS-SEC-01",
                      "location_display_name": "Dallas 03",
                      "location_name": "dal03",
                      "provider_name": "provider_1",
                      "supported_link_speeds": [
                        1000,
                        2000,
                        5000,
                        10000
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Port"
                }
              }
            },
            "description": "Port retrieved successfully."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errors": [
                        {
                          "code": "not_found",
                          "message": "Resource not found",
                          "more_info": "https://cloud.ibm.com/apidocs/direct_link#error-handling"
                        }
                      ],
                      "trace": "03391bce-b650-475a-96b8-e47e70d93e54"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorContainerGeneric404"
                }
              }
            },
            "description": "Port not be found."
          }
        },
        "summary": "Get port",
        "tags": [
          "Ports"
        ],
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "example": [
                  {
                    "lang": "curl",
                    "source": [
                      "curl -X GET \\\n  https://$DL_ENDPOINT/v1/ports/$PORT_ID?version=2019-12-13 \\\n  -H \"authorization: Bearer $IAM_TOKEN\""
                    ],
                    "type": "code"
                  }
                ],
                "name": "Example request"
              }
            ],
            "node": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const params = {\n",
                      "  id: '0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      "};\n",
                      "\n",
                      "let res;\n",
                      "try {\n",
                      "  res = await directLinkService.getPort(params);\n",
                      "  console.log(JSON.stringify(res.result, null, 2));\n",
                      "} catch (err) {\n",
                      "  console.warn(err);\n",
                      "}"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GetPortOptions getPortOptions = new GetPortOptions.Builder()\n",
                      "  .id(\"0a06fb9b-820f-4c44-8a31-77f1f0806d28\")\n",
                      "  .build();\n",
                      "\n",
                      "Response<Port> response = directLinkService.getPort(getPortOptions).execute();\n",
                      "Port port = response.getResult();\n",
                      "\n",
                      "System.out.println(port);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "getPortOptions := directLinkService.NewGetPortOptions(\n",
                      "  \"0a06fb9b-820f-4c44-8a31-77f1f0806d28\",\n",
                      ")\n",
                      "\n",
                      "port, response, err := directLinkService.GetPort(getPortOptions)\n",
                      "if err != nil {\n",
                      "  panic(err)\n",
                      "}\n",
                      "b, _ := json.MarshalIndent(port, \"\", \"  \")\n",
                      "fmt.Println(string(b))"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = direct_link_service.get_port(\n",
                      "  id='0a06fb9b-820f-4c44-8a31-77f1f0806d28',\n",
                      ")\n",
                      "port = response.get_result()\n",
                      "\n",
                      "print(json.dumps(port, indent=2))"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    }
  },
  "servers": [
    {
      "url": "https://directlink.cloud.ibm.com/v1"
    }
  ],
  "tags": [
    {
      "name": "Gateways"
    },
    {
      "name": "Gateway AS Prepends"
    },
    {
      "name": "Gateway Export Route Filters"
    },
    {
      "name": "Gateway Import Route Filters"
    },
    {
      "name": "Gateway MACsec"
    },
    {
      "name": "Gateway Route Reports"
    },
    {
      "name": "Virtual Connections"
    },
    {
      "name": "Offering Information"
    },
    {
      "name": "Ports"
    }
  ]
}