From fc06a15f9e3b3308a8fcb54a9410cfd8e8b29db2 Mon Sep 17 00:00:00 2001 From: ngrok-release-bot Date: Fri, 15 Apr 2022 16:43:13 -0700 Subject: [PATCH] cut new release for ngrok-api-python --- README.md | 17 +- doc/source/client.rst | 6 +- doc/source/errors.rst | 10 +- doc/source/index.rst | 24 ++- docs/_modules/ngrok/client.html | 2 +- docs/_modules/ngrok/services.html | 4 +- docs/_sources/client.rst.txt | 6 +- docs/_sources/errors.rst.txt | 10 +- docs/_sources/index.rst.txt | 24 ++- docs/client.html | 8 +- docs/credentials.html | 2 +- docs/errors.html | 10 +- docs/index.html | 47 +++-- docs/ip_policy_rules.html | 4 +- docs/searchindex.js | 2 +- ngrok/client.py | 2 +- ngrok/services.py | 4 +- setup.py | 2 +- tests/test_ngrok.py | 331 ++++++++++++++++++++++++++++++ 19 files changed, 427 insertions(+), 88 deletions(-) diff --git a/README.md b/README.md index af638f8..a4328bb 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,3 @@ -# Unstable - -This library is currently unstable. We know of rough edges -and are working to bring it to parity with our other API client -libraries. Please feel free to try it out and let us know if you find -it useful! - # ngrok API client library for Python This library wraps the [ngrok HTTP API](https://ngrok.com/docs/api) to make it @@ -12,13 +5,13 @@ easier to consume in Python. ## Installation -This library is published on [PyPi](https://pypi.org/project/ngrok-api/) +This library is published on [PyPi](https://pypi.org/project/ngrok-api/): pip install ngrok-api ## Documentation -A quickstart guide and a full API reference are included in the [ngrok python API documentation](https://python-api.docs.ngrok.com) +A quickstart guide and a full API reference are included in the [ngrok python API documentation](https://python-api.docs.ngrok.com). ## Quickstart @@ -26,14 +19,14 @@ Please consult the [documentation](https://python-api.docs.ngrok.com) for additi import ngrok - # construct the api client + # Construct the API client client = ngrok.Client("") - # list all online tunnels + # List all online tunnels for t in client.tunnels.list(): print(t) - # create an ip policy that allows traffic from some subnets + # Create an IP policy that allows traffic from some subnets policy = client.ip_policies.create() for cidr in ["24.0.0.0/8", "12.0.0.0/8"]: client.ip_policy_rules.create(cidr=cidr, ip_policy_id=policy.id, action="allow") diff --git a/doc/source/client.rst b/doc/source/client.rst index a08dc97..e10ab95 100644 --- a/doc/source/client.rst +++ b/doc/source/client.rst @@ -10,14 +10,14 @@ Client object: import ngrok # construct the api client - ng = ngrok.Client("") + client = ngrok.Client("") # list all ip policies - for policy in ng.ip_policies.list(): + for policy in client.ip_policies.list(): print(policy) # create an ngrok agent authtoken - cred = ng.credentials.create() + cred = client.credentials.create() print(cred) .. automodule:: ngrok diff --git a/doc/source/errors.rst b/doc/source/errors.rst index cf05ce4..301a65e 100644 --- a/doc/source/errors.rst +++ b/doc/source/errors.rst @@ -21,9 +21,9 @@ raised. Ensure that you check for it first because it is a subclass of :class:`n .. code-block:: try: - c.ip_policies.get(id) + client.ip_policies.get(id) except ngrok.NotFoundError as e: - c.ip_policies.create(action="deny") + client.ip_policies.create() except ngrok.Error as e: # something else happened @@ -34,9 +34,9 @@ documentation for the `list of all ngrok error codes ") + client = ngrok.Client("") # list all online tunnels - for t in ng.tunnels(): + for t in client.tunnels.list(): print(t) # create an ip policy the allows traffic from some subnets - policy = ng.ip_policies.create(action="allow") + policy = client.ip_policies.create() for cidr in ["24.0.0.0/8", "12.0.0.0/8"]: - ng.ip_policy_rules.create(cidr=cidr, ip_policy_id=policy.id) + client.ip_policy_rules.create(cidr=cidr, ip_policy_id=policy.id, action="allow") Automatic Paging @@ -55,11 +55,11 @@ pages for you. import ngrok - ng = ngrok.Client("") + client = ngrok.Client("") # list all ip policies, transparently fetching additional # pages for you if necessary - for p in ng.ip_policies.list(): + for p in client.ip_policies.list(): print(p) @@ -70,15 +70,18 @@ Instance methods like ``update`` and ``delete`` can be invoked on an instance of API object itself as well as directly without needing to first fetch the object. :: + import ngrok + + client = ngrok.Client("") # update the metadata of a credential - cred = ng.credentials.get("cr_1kYyunEyn6XHHlqyMBLrj5nxkoz") + cred = client.credentials.get("cr_1kYyunEyn6XHHlqyMBLrj5nxkoz") cred.update(metadata=json.dumps({ "server_name": "giraffe-1", })) # or do it in single call - cred = ng.credentials.update("cr_1kYyunEyn6XHHlqyMBLrj5nxkoz", metadata=json.dumps({ + cred = client.credentials.update("cr_1kYyunEyn6XHHlqyMBLrj5nxkoz", metadata=json.dumps({ "server_name": "giraffe-1", })) @@ -93,10 +96,11 @@ section on :ref:`errors ` for additional details. import ngrok - ng = ngrok.Client("") + client = ngrok.Client("") try: - ng.ip_policies.create(action="not a valid action") + policy = client.ip_policies.create() + client.ip_policy_rules.create(cidr="24.0.0.0/8", ip_policy_id=policy.id, action="not a valid action") except ngrok.Error as e: print("http status code", e.http_status_code) print("ngrok error code", e.error_code) diff --git a/docs/_modules/ngrok/client.html b/docs/_modules/ngrok/client.html index c66956d..c0acd20 100644 --- a/docs/_modules/ngrok/client.html +++ b/docs/_modules/ngrok/client.html @@ -220,7 +220,7 @@

Source code for ngrok.client

     def credentials(self) -> CredentialsClient:
         """Tunnel Credentials are ngrok agent authtokens. They authorize the ngrok
         agent to connect the ngrok service as your account. They are installed with
-        the ``ngrok authtoken`` command or by specifying it in the ``ngrok.yml``
+        the ``ngrok config add-authtoken`` command or by specifying it in the ``ngrok.yml``
         configuration file with the ``authtoken`` property."""
         return CredentialsClient(self)
 
diff --git a/docs/_modules/ngrok/services.html b/docs/_modules/ngrok/services.html
index 620012e..2afa1a8 100644
--- a/docs/_modules/ngrok/services.html
+++ b/docs/_modules/ngrok/services.html
@@ -1038,7 +1038,7 @@ 

Source code for ngrok.services

 
[docs]class CredentialsClient(object): """Tunnel Credentials are ngrok agent authtokens. They authorize the ngrok agent to connect the ngrok service as your account. They are installed with - the ``ngrok authtoken`` command or by specifying it in the ``ngrok.yml`` + the ``ngrok config add-authtoken`` command or by specifying it in the ``ngrok.yml`` configuration file with the ``authtoken`` property.""" def __init__(self, client): @@ -3457,9 +3457,9 @@

Source code for ngrok.services

         self,
         cidr: str,
         ip_policy_id: str,
+        action: str,
         description: str = "",
         metadata: str = "",
-        action: str = None,
     ) -> IPPolicyRule:
         """Create a new IP policy rule attached to an IP Policy.
 
diff --git a/docs/_sources/client.rst.txt b/docs/_sources/client.rst.txt
index a08dc97..e10ab95 100644
--- a/docs/_sources/client.rst.txt
+++ b/docs/_sources/client.rst.txt
@@ -10,14 +10,14 @@ Client object:
     import ngrok
 
     # construct the api client
-    ng = ngrok.Client("")
+    client = ngrok.Client("")
 
     # list all ip policies
-    for policy in ng.ip_policies.list():
+    for policy in client.ip_policies.list():
         print(policy)
  
     # create an ngrok agent authtoken
-    cred = ng.credentials.create()
+    cred = client.credentials.create()
     print(cred)
 
 .. automodule:: ngrok
diff --git a/docs/_sources/errors.rst.txt b/docs/_sources/errors.rst.txt
index cf05ce4..301a65e 100644
--- a/docs/_sources/errors.rst.txt
+++ b/docs/_sources/errors.rst.txt
@@ -21,9 +21,9 @@ raised. Ensure that you check for it first because it is a subclass of :class:`n
 .. code-block::
 
     try:
-        c.ip_policies.get(id)
+        client.ip_policies.get(id)
     except ngrok.NotFoundError as e:
-        c.ip_policies.create(action="deny")
+        client.ip_policies.create()
     except ngrok.Error as e:
         # something else happened
 
@@ -34,9 +34,9 @@ documentation for the `list of all ngrok error codes ")
+    client = ngrok.Client("")
 
     # list all online tunnels
-    for t in ng.tunnels():
+    for t in client.tunnels.list():
         print(t)
 
     # create an ip policy the allows traffic from some subnets
-    policy = ng.ip_policies.create(action="allow")
+    policy = client.ip_policies.create()
     for cidr in ["24.0.0.0/8", "12.0.0.0/8"]:
-        ng.ip_policy_rules.create(cidr=cidr, ip_policy_id=policy.id)
+        client.ip_policy_rules.create(cidr=cidr, ip_policy_id=policy.id, action="allow")
 
 
 Automatic Paging
@@ -55,11 +55,11 @@ pages for you.
 
     import ngrok
 
-    ng = ngrok.Client("")
+    client = ngrok.Client("")
 
     # list all ip policies, transparently fetching additional
     # pages for you if necessary
-    for p in ng.ip_policies.list():
+    for p in client.ip_policies.list():
         print(p)
 
 
@@ -70,15 +70,18 @@ Instance methods like ``update`` and ``delete`` can be invoked on an instance of
 API object itself as well as directly without needing to first fetch the object.
 
 ::
+    import ngrok
+
+    client = ngrok.Client("")
 
     # update the metadata of a credential
-    cred = ng.credentials.get("cr_1kYyunEyn6XHHlqyMBLrj5nxkoz")
+    cred = client.credentials.get("cr_1kYyunEyn6XHHlqyMBLrj5nxkoz")
     cred.update(metadata=json.dumps({
         "server_name": "giraffe-1",
     }))
 
     # or do it in single call
-    cred = ng.credentials.update("cr_1kYyunEyn6XHHlqyMBLrj5nxkoz", metadata=json.dumps({
+    cred = client.credentials.update("cr_1kYyunEyn6XHHlqyMBLrj5nxkoz", metadata=json.dumps({
         "server_name": "giraffe-1",
     }))
 
@@ -93,10 +96,11 @@ section on :ref:`errors ` for additional details.
 
     import ngrok
 
-    ng = ngrok.Client("")
+    client = ngrok.Client("")
 
     try:
-        ng.ip_policies.create(action="not a valid action")
+        policy = client.ip_policies.create()
+        client.ip_policy_rules.create(cidr="24.0.0.0/8", ip_policy_id=policy.id, action="not a valid action")
     except ngrok.Error as e:
         print("http status code", e.http_status_code)
         print("ngrok error code", e.error_code)
diff --git a/docs/client.html b/docs/client.html
index 881916a..965e437 100644
--- a/docs/client.html
+++ b/docs/client.html
@@ -185,14 +185,14 @@ 

Client
import ngrok
 
 # construct the api client
-ng = ngrok.Client("<API KEY>")
+client = ngrok.Client("<API KEY>")
 
 # list all ip policies
-for policy in ng.ip_policies.list():
+for policy in client.ip_policies.list():
     print(policy)
 
 # create an ngrok agent authtoken
-cred = ng.credentials.create()
+cred = client.credentials.create()
 print(cred)
 

@@ -256,7 +256,7 @@

Clientproperty credentials

Tunnel Credentials are ngrok agent authtokens. They authorize the ngrok agent to connect the ngrok service as your account. They are installed with -the ngrok authtoken command or by specifying it in the ngrok.yml +the ngrok config add-authtoken command or by specifying it in the ngrok.yml configuration file with the authtoken property.

Return type
diff --git a/docs/credentials.html b/docs/credentials.html index c082eb3..1479d98 100644 --- a/docs/credentials.html +++ b/docs/credentials.html @@ -186,7 +186,7 @@

Tunnel Credentialsclass ngrok.services.CredentialsClient(client)[source]

Tunnel Credentials are ngrok agent authtokens. They authorize the ngrok agent to connect the ngrok service as your account. They are installed with -the ngrok authtoken command or by specifying it in the ngrok.yml +the ngrok config add-authtoken command or by specifying it in the ngrok.yml configuration file with the authtoken property.

diff --git a/docs/errors.html b/docs/errors.html index 5ee7eb0..087095f 100644 --- a/docs/errors.html +++ b/docs/errors.html @@ -190,9 +190,9 @@

Handling Errorsngrok.NotFoundError will be raised. Ensure that you check for it first because it is a subclass of ngrok.Error.

try:
-    c.ip_policies.get(id)
+    client.ip_policies.get(id)
 except ngrok.NotFoundError as e:
-    c.ip_policies.create(action="deny")
+    client.ip_policies.create()
 except ngrok.Error as e:
     # something else happened
 
@@ -200,9 +200,9 @@

Handling Errorslist of all ngrok error codes.

@@ -233,18 +233,24 @@

Automatic Paging

Instance methods like update and delete can be invoked on an instance of an API object itself as well as directly without needing to first fetch the object.

-
# update the metadata of a credential
-cred = ng.credentials.get("cr_1kYyunEyn6XHHlqyMBLrj5nxkoz")
-cred.update(metadata=json.dumps({
-    "server_name": "giraffe-1",
-}))
-
-# or do it in single call
-cred = ng.credentials.update("cr_1kYyunEyn6XHHlqyMBLrj5nxkoz", metadata=json.dumps({
-    "server_name": "giraffe-1",
-}))
-
-
+
+
::

import ngrok

+

client = ngrok.Client(“<API KEY>”)

+

# update the metadata of a credential +cred = client.credentials.get(“cr_1kYyunEyn6XHHlqyMBLrj5nxkoz”) +cred.update(metadata=json.dumps({

+
+

“server_name”: “giraffe-1”,

+
+

}))

+

# or do it in single call +cred = client.credentials.update(“cr_1kYyunEyn6XHHlqyMBLrj5nxkoz”, metadata=json.dumps({

+
+

“server_name”: “giraffe-1”,

+
+

}))

+
+

Error Handling

@@ -252,10 +258,11 @@

Error Handlingerrors for additional details.

import ngrok
 
-ng = ngrok.Client("<API KEY>")
+client = ngrok.Client("<API KEY>")
 
 try:
-    ng.ip_policies.create(action="not a valid action")
+    policy = client.ip_policies.create()
+    client.ip_policy_rules.create(cidr="24.0.0.0/8", ip_policy_id=policy.id, action="not a valid action")
 except ngrok.Error as e:
     print("http status code", e.http_status_code)
     print("ngrok error code", e.error_code)
diff --git a/docs/ip_policy_rules.html b/docs/ip_policy_rules.html
index ad6dd4a..ae79ce2 100644
--- a/docs/ip_policy_rules.html
+++ b/docs/ip_policy_rules.html
@@ -188,7 +188,7 @@ 

IP Policy Rules
-create(cidr, ip_policy_id, description='', metadata='', action=None)[source]
+create(cidr, ip_policy_id, action, description='', metadata='')[source]

Create a new IP policy rule attached to an IP Policy.

Parameters
@@ -197,7 +197,7 @@

IP Policy Rulesstr) – arbitrary user-defined machine-readable data of this IP policy rule. optional, max 4096 bytes.

  • cidr (str) – an IP or IP range specified in CIDR notation. IPv4 and IPv6 are both supported.

  • ip_policy_id (str) – ID of the IP policy this IP policy rule will be attached to

  • -
  • action (Optional[str]) – the action to apply to the policy rule, either allow or deny

  • +
  • action (str) – the action to apply to the policy rule, either allow or deny

  • diff --git a/docs/searchindex.js b/docs/searchindex.js index a1b3a7b..604fa49 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["abuse_reports","agent_ingresses","api_keys","certificate_authorities","client","credentials","datatypes","edge_route_backend_module","edge_route_circuit_breaker_module","edge_route_compression_module","edge_route_ip_restriction_module","edge_route_o_auth_module","edge_route_oidc_module","edge_route_request_headers_module","edge_route_response_headers_module","edge_route_saml_module","edge_route_webhook_verification_module","edge_route_websocket_tcp_converter_module","edges_https","edges_https_routes","edges_tcp","edges_tls","endpoints","errors","event_destinations","event_sources","event_subscriptions","failover_backends","http_response_backends","https_edge_mutual_tls_module","https_edge_tls_termination_module","index","ip_policies","ip_policy_rules","ip_restrictions","reserved_addrs","reserved_domains","ssh_certificate_authorities","ssh_credentials","ssh_host_certificates","ssh_user_certificates","tcp_edge_backend_module","tcp_edge_ip_restriction_module","tls_certificates","tls_edge_backend_module","tls_edge_ip_restriction_module","tls_edge_mutual_tls_module","tls_edge_tls_termination_module","tunnel_group_backends","tunnel_sessions","tunnels","weighted_backends"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["abuse_reports.rst","agent_ingresses.rst","api_keys.rst","certificate_authorities.rst","client.rst","credentials.rst","datatypes.rst","edge_route_backend_module.rst","edge_route_circuit_breaker_module.rst","edge_route_compression_module.rst","edge_route_ip_restriction_module.rst","edge_route_o_auth_module.rst","edge_route_oidc_module.rst","edge_route_request_headers_module.rst","edge_route_response_headers_module.rst","edge_route_saml_module.rst","edge_route_webhook_verification_module.rst","edge_route_websocket_tcp_converter_module.rst","edges_https.rst","edges_https_routes.rst","edges_tcp.rst","edges_tls.rst","endpoints.rst","errors.rst","event_destinations.rst","event_sources.rst","event_subscriptions.rst","failover_backends.rst","http_response_backends.rst","https_edge_mutual_tls_module.rst","https_edge_tls_termination_module.rst","index.rst","ip_policies.rst","ip_policy_rules.rst","ip_restrictions.rst","reserved_addrs.rst","reserved_domains.rst","ssh_certificate_authorities.rst","ssh_credentials.rst","ssh_host_certificates.rst","ssh_user_certificates.rst","tcp_edge_backend_module.rst","tcp_edge_ip_restriction_module.rst","tls_certificates.rst","tls_edge_backend_module.rst","tls_edge_ip_restriction_module.rst","tls_edge_mutual_tls_module.rst","tls_edge_tls_termination_module.rst","tunnel_group_backends.rst","tunnel_sessions.rst","tunnels.rst","weighted_backends.rst"],objects:{"":{ngrok:[23,0,0,"-"]},"ngrok.Client":{abuse_reports:[4,2,1,""],agent_ingresses:[4,2,1,""],api_keys:[4,2,1,""],backends:[4,2,1,""],certificate_authorities:[4,2,1,""],credentials:[4,2,1,""],edge_modules:[4,2,1,""],edges:[4,2,1,""],endpoints:[4,2,1,""],event_destinations:[4,2,1,""],event_sources:[4,2,1,""],event_subscriptions:[4,2,1,""],ip_policies:[4,2,1,""],ip_policy_rules:[4,2,1,""],ip_restrictions:[4,2,1,""],reserved_addrs:[4,2,1,""],reserved_domains:[4,2,1,""],ssh_certificate_authorities:[4,2,1,""],ssh_credentials:[4,2,1,""],ssh_host_certificates:[4,2,1,""],ssh_user_certificates:[4,2,1,""],tls_certificates:[4,2,1,""],tunnel_sessions:[4,2,1,""],tunnels:[4,2,1,""]},"ngrok.Error":{operation_id:[23,2,1,""]},"ngrok.datatypes":{APIKey:[6,1,1,""],APIKeyList:[6,1,1,""],AWSAuth:[6,1,1,""],AWSCredentials:[6,1,1,""],AWSRole:[6,1,1,""],AbuseReport:[6,1,1,""],AbuseReportHostname:[6,1,1,""],AgentIngress:[6,1,1,""],AgentIngressList:[6,1,1,""],CertificateAuthority:[6,1,1,""],CertificateAuthorityList:[6,1,1,""],Credential:[6,1,1,""],CredentialList:[6,1,1,""],Endpoint:[6,1,1,""],EndpointBackend:[6,1,1,""],EndpointBackendMutate:[6,1,1,""],EndpointCircuitBreaker:[6,1,1,""],EndpointCompression:[6,1,1,""],EndpointIPPolicy:[6,1,1,""],EndpointIPPolicyMutate:[6,1,1,""],EndpointList:[6,1,1,""],EndpointMutualTLS:[6,1,1,""],EndpointMutualTLSMutate:[6,1,1,""],EndpointOAuth:[6,1,1,""],EndpointOAuthFacebook:[6,1,1,""],EndpointOAuthGitHub:[6,1,1,""],EndpointOAuthGoogle:[6,1,1,""],EndpointOAuthMicrosoft:[6,1,1,""],EndpointOAuthProvider:[6,1,1,""],EndpointOIDC:[6,1,1,""],EndpointRequestHeaders:[6,1,1,""],EndpointResponseHeaders:[6,1,1,""],EndpointSAML:[6,1,1,""],EndpointSAMLMutate:[6,1,1,""],EndpointTLSTermination:[6,1,1,""],EndpointTLSTerminationAtEdge:[6,1,1,""],EndpointWebhookValidation:[6,1,1,""],EndpointWebsocketTCPConverter:[6,1,1,""],EventDestination:[6,1,1,""],EventDestinationList:[6,1,1,""],EventSource:[6,1,1,""],EventSourceList:[6,1,1,""],EventSourceReplace:[6,1,1,""],EventSubscription:[6,1,1,""],EventSubscriptionList:[6,1,1,""],EventTarget:[6,1,1,""],EventTargetCloudwatchLogs:[6,1,1,""],EventTargetFirehose:[6,1,1,""],EventTargetKinesis:[6,1,1,""],FailoverBackend:[6,1,1,""],FailoverBackendList:[6,1,1,""],HTTPResponseBackend:[6,1,1,""],HTTPResponseBackendList:[6,1,1,""],HTTPSEdge:[6,1,1,""],HTTPSEdgeList:[6,1,1,""],HTTPSEdgeRoute:[6,1,1,""],IPPolicy:[6,1,1,""],IPPolicyList:[6,1,1,""],IPPolicyRule:[6,1,1,""],IPPolicyRuleList:[6,1,1,""],IPRestriction:[6,1,1,""],IPRestrictionList:[6,1,1,""],Ref:[6,1,1,""],ReservedAddr:[6,1,1,""],ReservedAddrList:[6,1,1,""],ReservedDomain:[6,1,1,""],ReservedDomainCertJob:[6,1,1,""],ReservedDomainCertPolicy:[6,1,1,""],ReservedDomainCertStatus:[6,1,1,""],ReservedDomainList:[6,1,1,""],SSHCertificateAuthority:[6,1,1,""],SSHCertificateAuthorityList:[6,1,1,""],SSHCredential:[6,1,1,""],SSHCredentialList:[6,1,1,""],SSHHostCertificate:[6,1,1,""],SSHHostCertificateList:[6,1,1,""],SSHUserCertificate:[6,1,1,""],SSHUserCertificateList:[6,1,1,""],TCPEdge:[6,1,1,""],TCPEdgeList:[6,1,1,""],TLSCertificate:[6,1,1,""],TLSCertificateList:[6,1,1,""],TLSCertificateSANs:[6,1,1,""],TLSEdge:[6,1,1,""],TLSEdgeList:[6,1,1,""],Tunnel:[6,1,1,""],TunnelGroupBackend:[6,1,1,""],TunnelGroupBackendList:[6,1,1,""],TunnelList:[6,1,1,""],TunnelSession:[6,1,1,""],TunnelSessionList:[6,1,1,""],WeightedBackend:[6,1,1,""],WeightedBackendList:[6,1,1,""]},"ngrok.datatypes.APIKey":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],token:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.APIKeyList":{keys:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.AWSAuth":{creds:[6,2,1,""],role:[6,2,1,""]},"ngrok.datatypes.AWSCredentials":{aws_access_key_id:[6,2,1,""],aws_secret_access_key:[6,2,1,""]},"ngrok.datatypes.AWSRole":{role_arn:[6,2,1,""]},"ngrok.datatypes.AbuseReport":{created_at:[6,2,1,""],hostnames:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],status:[6,2,1,""],uri:[6,2,1,""],urls:[6,2,1,""]},"ngrok.datatypes.AbuseReportHostname":{hostname:[6,2,1,""],status:[6,2,1,""]},"ngrok.datatypes.AgentIngress":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],domain:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],ns_targets:[6,2,1,""],region_domains:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.AgentIngressList":{ingresses:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.CertificateAuthority":{"delete":[6,2,1,""],ca_pem:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],extended_key_usages:[6,2,1,""],id:[6,2,1,""],key_usages:[6,2,1,""],metadata:[6,2,1,""],not_after:[6,2,1,""],not_before:[6,2,1,""],subject_common_name:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.CertificateAuthorityList":{certificate_authorities:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.Credential":{"delete":[6,2,1,""],acl:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],token:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.CredentialList":{credentials:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.Endpoint":{created_at:[6,2,1,""],domain:[6,2,1,""],edge:[6,2,1,""],hostport:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],proto:[6,2,1,""],public_url:[6,2,1,""],region:[6,2,1,""],tcp_addr:[6,2,1,""],tunnel:[6,2,1,""],type:[6,2,1,""],updated_at:[6,2,1,""]},"ngrok.datatypes.EndpointBackend":{backend:[6,2,1,""],enabled:[6,2,1,""]},"ngrok.datatypes.EndpointBackendMutate":{backend_id:[6,2,1,""],enabled:[6,2,1,""]},"ngrok.datatypes.EndpointCircuitBreaker":{enabled:[6,2,1,""],error_threshold_percentage:[6,2,1,""],num_buckets:[6,2,1,""],rolling_window:[6,2,1,""],tripped_duration:[6,2,1,""],volume_threshold:[6,2,1,""]},"ngrok.datatypes.EndpointCompression":{enabled:[6,2,1,""]},"ngrok.datatypes.EndpointIPPolicy":{enabled:[6,2,1,""],ip_policies:[6,2,1,""]},"ngrok.datatypes.EndpointIPPolicyMutate":{enabled:[6,2,1,""],ip_policy_ids:[6,2,1,""]},"ngrok.datatypes.EndpointList":{endpoints:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.EndpointMutualTLS":{certificate_authorities:[6,2,1,""],enabled:[6,2,1,""]},"ngrok.datatypes.EndpointMutualTLSMutate":{certificate_authority_ids:[6,2,1,""],enabled:[6,2,1,""]},"ngrok.datatypes.EndpointOAuth":{auth_check_interval:[6,2,1,""],cookie_prefix:[6,2,1,""],enabled:[6,2,1,""],inactivity_timeout:[6,2,1,""],maximum_duration:[6,2,1,""],options_passthrough:[6,2,1,""],provider:[6,2,1,""]},"ngrok.datatypes.EndpointOAuthFacebook":{client_id:[6,2,1,""],client_secret:[6,2,1,""],email_addresses:[6,2,1,""],email_domains:[6,2,1,""],scopes:[6,2,1,""]},"ngrok.datatypes.EndpointOAuthGitHub":{client_id:[6,2,1,""],client_secret:[6,2,1,""],email_addresses:[6,2,1,""],email_domains:[6,2,1,""],organizations:[6,2,1,""],scopes:[6,2,1,""],teams:[6,2,1,""]},"ngrok.datatypes.EndpointOAuthGoogle":{client_id:[6,2,1,""],client_secret:[6,2,1,""],email_addresses:[6,2,1,""],email_domains:[6,2,1,""],scopes:[6,2,1,""]},"ngrok.datatypes.EndpointOAuthMicrosoft":{client_id:[6,2,1,""],client_secret:[6,2,1,""],email_addresses:[6,2,1,""],email_domains:[6,2,1,""],scopes:[6,2,1,""]},"ngrok.datatypes.EndpointOAuthProvider":{facebook:[6,2,1,""],github:[6,2,1,""],google:[6,2,1,""],microsoft:[6,2,1,""]},"ngrok.datatypes.EndpointOIDC":{client_id:[6,2,1,""],client_secret:[6,2,1,""],cookie_prefix:[6,2,1,""],enabled:[6,2,1,""],inactivity_timeout:[6,2,1,""],issuer:[6,2,1,""],maximum_duration:[6,2,1,""],options_passthrough:[6,2,1,""],scopes:[6,2,1,""]},"ngrok.datatypes.EndpointRequestHeaders":{add:[6,2,1,""],enabled:[6,2,1,""],remove:[6,2,1,""]},"ngrok.datatypes.EndpointResponseHeaders":{add:[6,2,1,""],enabled:[6,2,1,""],remove:[6,2,1,""]},"ngrok.datatypes.EndpointSAML":{allow_idp_initiated:[6,2,1,""],assertion_consumer_service_url:[6,2,1,""],authorized_groups:[6,2,1,""],cookie_prefix:[6,2,1,""],enabled:[6,2,1,""],entity_id:[6,2,1,""],force_authn:[6,2,1,""],idp_metadata:[6,2,1,""],inactivity_timeout:[6,2,1,""],maximum_duration:[6,2,1,""],metadata_url:[6,2,1,""],nameid_format:[6,2,1,""],options_passthrough:[6,2,1,""],request_signing_certificate_pem:[6,2,1,""],single_logout_url:[6,2,1,""]},"ngrok.datatypes.EndpointSAMLMutate":{allow_idp_initiated:[6,2,1,""],authorized_groups:[6,2,1,""],cookie_prefix:[6,2,1,""],enabled:[6,2,1,""],force_authn:[6,2,1,""],idp_metadata:[6,2,1,""],inactivity_timeout:[6,2,1,""],maximum_duration:[6,2,1,""],nameid_format:[6,2,1,""],options_passthrough:[6,2,1,""]},"ngrok.datatypes.EndpointTLSTermination":{enabled:[6,2,1,""],min_version:[6,2,1,""],terminate_at:[6,2,1,""]},"ngrok.datatypes.EndpointTLSTerminationAtEdge":{enabled:[6,2,1,""],min_version:[6,2,1,""]},"ngrok.datatypes.EndpointWebhookValidation":{enabled:[6,2,1,""],provider:[6,2,1,""],secret:[6,2,1,""]},"ngrok.datatypes.EndpointWebsocketTCPConverter":{enabled:[6,2,1,""]},"ngrok.datatypes.EventDestination":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],format:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],target:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.EventDestinationList":{event_destinations:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.EventSource":{type:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.EventSourceList":{sources:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.EventSourceReplace":{type:[6,2,1,""]},"ngrok.datatypes.EventSubscription":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],destinations:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],sources:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.EventSubscriptionList":{event_subscriptions:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.EventTarget":{cloudwatch_logs:[6,2,1,""],firehose:[6,2,1,""],kinesis:[6,2,1,""]},"ngrok.datatypes.EventTargetCloudwatchLogs":{auth:[6,2,1,""],log_group_arn:[6,2,1,""]},"ngrok.datatypes.EventTargetFirehose":{auth:[6,2,1,""],delivery_stream_arn:[6,2,1,""]},"ngrok.datatypes.EventTargetKinesis":{auth:[6,2,1,""],stream_arn:[6,2,1,""]},"ngrok.datatypes.FailoverBackend":{"delete":[6,2,1,""],backends:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.FailoverBackendList":{backends:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.HTTPResponseBackend":{"delete":[6,2,1,""],body:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],headers:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],status_code:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.HTTPResponseBackendList":{backends:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.HTTPSEdge":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],hostports:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],mutual_tls:[6,2,1,""],routes:[6,2,1,""],tls_termination:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.HTTPSEdgeList":{https_edges:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.HTTPSEdgeRoute":{"delete":[6,2,1,""],backend:[6,2,1,""],circuit_breaker:[6,2,1,""],compression:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],edge_id:[6,2,1,""],id:[6,2,1,""],ip_restriction:[6,2,1,""],match:[6,2,1,""],match_type:[6,2,1,""],metadata:[6,2,1,""],oauth:[6,2,1,""],oidc:[6,2,1,""],request_headers:[6,2,1,""],response_headers:[6,2,1,""],saml:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""],webhook_verification:[6,2,1,""],websocket_tcp_converter:[6,2,1,""]},"ngrok.datatypes.IPPolicy":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.IPPolicyList":{ip_policies:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.IPPolicyRule":{"delete":[6,2,1,""],action:[6,2,1,""],cidr:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],ip_policy:[6,2,1,""],metadata:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.IPPolicyRuleList":{ip_policy_rules:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.IPRestriction":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],enforced:[6,2,1,""],id:[6,2,1,""],ip_policies:[6,2,1,""],metadata:[6,2,1,""],type:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.IPRestrictionList":{ip_restrictions:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.Ref":{id:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.ReservedAddr":{"delete":[6,2,1,""],addr:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],region:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.ReservedAddrList":{next_page_uri:[6,2,1,""],reserved_addrs:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.ReservedDomain":{"delete":[6,2,1,""],acme_challenge_cname_target:[6,2,1,""],certificate:[6,2,1,""],certificate_management_policy:[6,2,1,""],certificate_management_status:[6,2,1,""],cname_target:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],domain:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],region:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.ReservedDomainCertJob":{error_code:[6,2,1,""],msg:[6,2,1,""],retries_at:[6,2,1,""],started_at:[6,2,1,""]},"ngrok.datatypes.ReservedDomainCertPolicy":{authority:[6,2,1,""],private_key_type:[6,2,1,""]},"ngrok.datatypes.ReservedDomainCertStatus":{provisioning_job:[6,2,1,""],renews_at:[6,2,1,""]},"ngrok.datatypes.ReservedDomainList":{next_page_uri:[6,2,1,""],reserved_domains:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.SSHCertificateAuthority":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],key_type:[6,2,1,""],metadata:[6,2,1,""],public_key:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.SSHCertificateAuthorityList":{next_page_uri:[6,2,1,""],ssh_certificate_authorities:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.SSHCredential":{"delete":[6,2,1,""],acl:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],public_key:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.SSHCredentialList":{next_page_uri:[6,2,1,""],ssh_credentials:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.SSHHostCertificate":{"delete":[6,2,1,""],certificate:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],key_type:[6,2,1,""],metadata:[6,2,1,""],principals:[6,2,1,""],public_key:[6,2,1,""],ssh_certificate_authority_id:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""],valid_after:[6,2,1,""],valid_until:[6,2,1,""]},"ngrok.datatypes.SSHHostCertificateList":{next_page_uri:[6,2,1,""],ssh_host_certificates:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.SSHUserCertificate":{"delete":[6,2,1,""],certificate:[6,2,1,""],created_at:[6,2,1,""],critical_options:[6,2,1,""],description:[6,2,1,""],extensions:[6,2,1,""],id:[6,2,1,""],key_type:[6,2,1,""],metadata:[6,2,1,""],principals:[6,2,1,""],public_key:[6,2,1,""],ssh_certificate_authority_id:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""],valid_after:[6,2,1,""],valid_until:[6,2,1,""]},"ngrok.datatypes.SSHUserCertificateList":{next_page_uri:[6,2,1,""],ssh_user_certificates:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TCPEdge":{"delete":[6,2,1,""],backend:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],hostports:[6,2,1,""],id:[6,2,1,""],ip_restriction:[6,2,1,""],metadata:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TCPEdgeList":{next_page_uri:[6,2,1,""],tcp_edges:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TLSCertificate":{"delete":[6,2,1,""],certificate_pem:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],extended_key_usages:[6,2,1,""],id:[6,2,1,""],issued_at:[6,2,1,""],issuer_common_name:[6,2,1,""],key_usages:[6,2,1,""],metadata:[6,2,1,""],not_after:[6,2,1,""],not_before:[6,2,1,""],private_key_type:[6,2,1,""],serial_number:[6,2,1,""],subject_alternative_names:[6,2,1,""],subject_common_name:[6,2,1,""],subject_country:[6,2,1,""],subject_locality:[6,2,1,""],subject_organization:[6,2,1,""],subject_organizational_unit:[6,2,1,""],subject_province:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TLSCertificateList":{next_page_uri:[6,2,1,""],tls_certificates:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TLSCertificateSANs":{dns_names:[6,2,1,""],ips:[6,2,1,""]},"ngrok.datatypes.TLSEdge":{"delete":[6,2,1,""],backend:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],hostports:[6,2,1,""],id:[6,2,1,""],ip_restriction:[6,2,1,""],metadata:[6,2,1,""],mutual_tls:[6,2,1,""],tls_termination:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TLSEdgeList":{next_page_uri:[6,2,1,""],tls_edges:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.Tunnel":{backends:[6,2,1,""],endpoint:[6,2,1,""],forwards_to:[6,2,1,""],id:[6,2,1,""],labels:[6,2,1,""],metadata:[6,2,1,""],proto:[6,2,1,""],public_url:[6,2,1,""],region:[6,2,1,""],started_at:[6,2,1,""],tunnel_session:[6,2,1,""]},"ngrok.datatypes.TunnelGroupBackend":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],labels:[6,2,1,""],metadata:[6,2,1,""],tunnels:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TunnelGroupBackendList":{backends:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TunnelList":{next_page_uri:[6,2,1,""],tunnels:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TunnelSession":{agent_version:[6,2,1,""],credential:[6,2,1,""],id:[6,2,1,""],ip:[6,2,1,""],metadata:[6,2,1,""],os:[6,2,1,""],region:[6,2,1,""],started_at:[6,2,1,""],transport:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TunnelSessionList":{next_page_uri:[6,2,1,""],tunnel_sessions:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.WeightedBackend":{"delete":[6,2,1,""],backends:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.WeightedBackendList":{backends:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.services":{APIKeysClient:[2,1,1,""],AbuseReportsClient:[0,1,1,""],AgentIngressesClient:[1,1,1,""],CertificateAuthoritiesClient:[3,1,1,""],CredentialsClient:[5,1,1,""],EdgeRouteBackendModuleClient:[7,1,1,""],EdgeRouteCircuitBreakerModuleClient:[8,1,1,""],EdgeRouteCompressionModuleClient:[9,1,1,""],EdgeRouteIPRestrictionModuleClient:[10,1,1,""],EdgeRouteOAuthModuleClient:[11,1,1,""],EdgeRouteOIDCModuleClient:[12,1,1,""],EdgeRouteRequestHeadersModuleClient:[13,1,1,""],EdgeRouteResponseHeadersModuleClient:[14,1,1,""],EdgeRouteSAMLModuleClient:[15,1,1,""],EdgeRouteWebhookVerificationModuleClient:[16,1,1,""],EdgeRouteWebsocketTCPConverterModuleClient:[17,1,1,""],EdgesHTTPSClient:[18,1,1,""],EdgesHTTPSRoutesClient:[19,1,1,""],EdgesTCPClient:[20,1,1,""],EdgesTLSClient:[21,1,1,""],EndpointsClient:[22,1,1,""],EventDestinationsClient:[24,1,1,""],EventSourcesClient:[25,1,1,""],EventSubscriptionsClient:[26,1,1,""],FailoverBackendsClient:[27,1,1,""],HTTPResponseBackendsClient:[28,1,1,""],HTTPSEdgeMutualTLSModuleClient:[29,1,1,""],HTTPSEdgeTLSTerminationModuleClient:[30,1,1,""],IPPoliciesClient:[32,1,1,""],IPPolicyRulesClient:[33,1,1,""],IPRestrictionsClient:[34,1,1,""],ReservedAddrsClient:[35,1,1,""],ReservedDomainsClient:[36,1,1,""],SSHCertificateAuthoritiesClient:[37,1,1,""],SSHCredentialsClient:[38,1,1,""],SSHHostCertificatesClient:[39,1,1,""],SSHUserCertificatesClient:[40,1,1,""],TCPEdgeBackendModuleClient:[41,1,1,""],TCPEdgeIPRestrictionModuleClient:[42,1,1,""],TLSCertificatesClient:[43,1,1,""],TLSEdgeBackendModuleClient:[44,1,1,""],TLSEdgeIPRestrictionModuleClient:[45,1,1,""],TLSEdgeMutualTLSModuleClient:[46,1,1,""],TLSEdgeTLSTerminationModuleClient:[47,1,1,""],TunnelGroupBackendsClient:[48,1,1,""],TunnelSessionsClient:[49,1,1,""],TunnelsClient:[50,1,1,""],WeightedBackendsClient:[51,1,1,""]},"ngrok.services.APIKeysClient":{"delete":[2,2,1,""],create:[2,2,1,""],get:[2,2,1,""],list:[2,2,1,""],update:[2,2,1,""]},"ngrok.services.AbuseReportsClient":{create:[0,2,1,""],get:[0,2,1,""]},"ngrok.services.AgentIngressesClient":{"delete":[1,2,1,""],create:[1,2,1,""],get:[1,2,1,""],list:[1,2,1,""],update:[1,2,1,""]},"ngrok.services.CertificateAuthoritiesClient":{"delete":[3,2,1,""],create:[3,2,1,""],get:[3,2,1,""],list:[3,2,1,""],update:[3,2,1,""]},"ngrok.services.CredentialsClient":{"delete":[5,2,1,""],create:[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],update:[5,2,1,""]},"ngrok.services.EdgeRouteBackendModuleClient":{"delete":[7,2,1,""],get:[7,2,1,""],replace:[7,2,1,""]},"ngrok.services.EdgeRouteCircuitBreakerModuleClient":{"delete":[8,2,1,""],get:[8,2,1,""],replace:[8,2,1,""]},"ngrok.services.EdgeRouteCompressionModuleClient":{"delete":[9,2,1,""],get:[9,2,1,""],replace:[9,2,1,""]},"ngrok.services.EdgeRouteIPRestrictionModuleClient":{"delete":[10,2,1,""],get:[10,2,1,""],replace:[10,2,1,""]},"ngrok.services.EdgeRouteOAuthModuleClient":{"delete":[11,2,1,""],get:[11,2,1,""],replace:[11,2,1,""]},"ngrok.services.EdgeRouteOIDCModuleClient":{"delete":[12,2,1,""],get:[12,2,1,""],replace:[12,2,1,""]},"ngrok.services.EdgeRouteRequestHeadersModuleClient":{"delete":[13,2,1,""],get:[13,2,1,""],replace:[13,2,1,""]},"ngrok.services.EdgeRouteResponseHeadersModuleClient":{"delete":[14,2,1,""],get:[14,2,1,""],replace:[14,2,1,""]},"ngrok.services.EdgeRouteSAMLModuleClient":{"delete":[15,2,1,""],get:[15,2,1,""],replace:[15,2,1,""]},"ngrok.services.EdgeRouteWebhookVerificationModuleClient":{"delete":[16,2,1,""],get:[16,2,1,""],replace:[16,2,1,""]},"ngrok.services.EdgeRouteWebsocketTCPConverterModuleClient":{"delete":[17,2,1,""],get:[17,2,1,""],replace:[17,2,1,""]},"ngrok.services.EdgesHTTPSClient":{"delete":[18,2,1,""],create:[18,2,1,""],get:[18,2,1,""],list:[18,2,1,""],update:[18,2,1,""]},"ngrok.services.EdgesHTTPSRoutesClient":{"delete":[19,2,1,""],create:[19,2,1,""],get:[19,2,1,""],update:[19,2,1,""]},"ngrok.services.EdgesTCPClient":{"delete":[20,2,1,""],create:[20,2,1,""],get:[20,2,1,""],list:[20,2,1,""],update:[20,2,1,""]},"ngrok.services.EdgesTLSClient":{"delete":[21,2,1,""],create:[21,2,1,""],get:[21,2,1,""],list:[21,2,1,""],update:[21,2,1,""]},"ngrok.services.EndpointsClient":{get:[22,2,1,""],list:[22,2,1,""]},"ngrok.services.EventDestinationsClient":{"delete":[24,2,1,""],create:[24,2,1,""],get:[24,2,1,""],list:[24,2,1,""],update:[24,2,1,""]},"ngrok.services.EventSourcesClient":{"delete":[25,2,1,""],create:[25,2,1,""],get:[25,2,1,""],list:[25,2,1,""],update:[25,2,1,""]},"ngrok.services.EventSubscriptionsClient":{"delete":[26,2,1,""],create:[26,2,1,""],get:[26,2,1,""],list:[26,2,1,""],update:[26,2,1,""]},"ngrok.services.FailoverBackendsClient":{"delete":[27,2,1,""],create:[27,2,1,""],get:[27,2,1,""],list:[27,2,1,""],update:[27,2,1,""]},"ngrok.services.HTTPResponseBackendsClient":{"delete":[28,2,1,""],create:[28,2,1,""],get:[28,2,1,""],list:[28,2,1,""],update:[28,2,1,""]},"ngrok.services.HTTPSEdgeMutualTLSModuleClient":{"delete":[29,2,1,""],get:[29,2,1,""],replace:[29,2,1,""]},"ngrok.services.HTTPSEdgeTLSTerminationModuleClient":{"delete":[30,2,1,""],get:[30,2,1,""],replace:[30,2,1,""]},"ngrok.services.IPPoliciesClient":{"delete":[32,2,1,""],create:[32,2,1,""],get:[32,2,1,""],list:[32,2,1,""],update:[32,2,1,""]},"ngrok.services.IPPolicyRulesClient":{"delete":[33,2,1,""],create:[33,2,1,""],get:[33,2,1,""],list:[33,2,1,""],update:[33,2,1,""]},"ngrok.services.IPRestrictionsClient":{"delete":[34,2,1,""],create:[34,2,1,""],get:[34,2,1,""],list:[34,2,1,""],update:[34,2,1,""]},"ngrok.services.ReservedAddrsClient":{"delete":[35,2,1,""],create:[35,2,1,""],get:[35,2,1,""],list:[35,2,1,""],update:[35,2,1,""]},"ngrok.services.ReservedDomainsClient":{"delete":[36,2,1,""],create:[36,2,1,""],delete_certificate:[36,2,1,""],delete_certificate_management_policy:[36,2,1,""],get:[36,2,1,""],list:[36,2,1,""],update:[36,2,1,""]},"ngrok.services.SSHCertificateAuthoritiesClient":{"delete":[37,2,1,""],create:[37,2,1,""],get:[37,2,1,""],list:[37,2,1,""],update:[37,2,1,""]},"ngrok.services.SSHCredentialsClient":{"delete":[38,2,1,""],create:[38,2,1,""],get:[38,2,1,""],list:[38,2,1,""],update:[38,2,1,""]},"ngrok.services.SSHHostCertificatesClient":{"delete":[39,2,1,""],create:[39,2,1,""],get:[39,2,1,""],list:[39,2,1,""],update:[39,2,1,""]},"ngrok.services.SSHUserCertificatesClient":{"delete":[40,2,1,""],create:[40,2,1,""],get:[40,2,1,""],list:[40,2,1,""],update:[40,2,1,""]},"ngrok.services.TCPEdgeBackendModuleClient":{"delete":[41,2,1,""],get:[41,2,1,""],replace:[41,2,1,""]},"ngrok.services.TCPEdgeIPRestrictionModuleClient":{"delete":[42,2,1,""],get:[42,2,1,""],replace:[42,2,1,""]},"ngrok.services.TLSCertificatesClient":{"delete":[43,2,1,""],create:[43,2,1,""],get:[43,2,1,""],list:[43,2,1,""],update:[43,2,1,""]},"ngrok.services.TLSEdgeBackendModuleClient":{"delete":[44,2,1,""],get:[44,2,1,""],replace:[44,2,1,""]},"ngrok.services.TLSEdgeIPRestrictionModuleClient":{"delete":[45,2,1,""],get:[45,2,1,""],replace:[45,2,1,""]},"ngrok.services.TLSEdgeMutualTLSModuleClient":{"delete":[46,2,1,""],get:[46,2,1,""],replace:[46,2,1,""]},"ngrok.services.TLSEdgeTLSTerminationModuleClient":{"delete":[47,2,1,""],get:[47,2,1,""],replace:[47,2,1,""]},"ngrok.services.TunnelGroupBackendsClient":{"delete":[48,2,1,""],create:[48,2,1,""],get:[48,2,1,""],list:[48,2,1,""],update:[48,2,1,""]},"ngrok.services.TunnelSessionsClient":{get:[49,2,1,""],list:[49,2,1,""],restart:[49,2,1,""],stop:[49,2,1,""],update:[49,2,1,""]},"ngrok.services.TunnelsClient":{get:[50,2,1,""],list:[50,2,1,""]},"ngrok.services.WeightedBackendsClient":{"delete":[51,2,1,""],create:[51,2,1,""],get:[51,2,1,""],list:[51,2,1,""],update:[51,2,1,""]},ngrok:{Client:[4,1,1,""],Error:[23,3,1,""],NotFoundError:[23,3,1,""],datatypes:[6,0,0,"-"],services:[51,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","exception","Python exception"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:exception"},terms:{"100":6,"10000":[6,51],"128":6,"2048":37,"255":[1,2,3,5,6,18,19,20,21,24,26,32,33,34,37,38,39,40,43],"3339":[6,39,40],"404":23,"4096":[0,1,2,3,5,6,18,19,20,21,24,26,32,33,34,35,36,37,38,39,40,43],"509":6,"abstract":31,"break":49,"byte":[0,1,2,3,5,6,18,19,20,21,24,32,33,34,35,36,37,38,39,40,43],"catch":23,"char":[6,26],"class":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"default":[6,35,36,39,40],"float":6,"import":[4,31],"int":[6,23,28,37,51],"long":6,"new":[0,1,2,3,5,24,27,32,33,34,35,36,37,38,39,40,43,48,49,51],"null":[6,19,24,36],"public":[4,6,34,38,39,40],"return":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"true":[6,34],"try":[23,31],AWS:6,CAs:6,DNS:6,For:[5,6,38],IDs:26,IPs:[4,6,32,33,34],One:6,SNS:6,TLS:[3,4,6,31,36],That:31,The:[1,2,4,5,6,23,24,25,31,38,39,40,49,51],Then:4,There:[18,19,20,21],These:[6,40],__iter__:31,_acm:6,abil:[6,40],abl:6,about:[0,3,5,6,23,24,27,32,33,34,37,38,39,40,43,48,51],abus:[4,6,31],abuse_report:[0,4],abusereport:[0,6],abusereporthostnam:6,abusereportscli:[0,4],accept:[6,24],access:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],account:[0,1,2,3,4,5,6,18,20,21,22,24,26,27,32,33,34,35,36,37,38,39,40,43,48,49,50,51],acl:[5,6,38],acme_challenge_cname_target:6,action:[4,5,6,23,31,32,33,38],activ:[4,6,22],adapt:[6,19],add:[6,25],addit:[6,23,25,31,40],addr:[6,35],address:[1,4,5,6,31,38,39,40],advertis:6,after:[6,31,49],against:[6,23],agent:[4,5,6,31,34,49,50],agent_ingress:[1,4],agent_vers:6,agentingress:[1,6],agentingressescli:[1,4],agentingresslist:[1,6],all:[1,2,3,4,5,6,18,20,21,22,23,24,27,31,32,33,34,35,36,37,38,39,40,43,48,49,50,51],allow:[0,4,5,6,23,31,32,33,34,38,39,49],allow_idp_initi:6,along:[4,39],alreadi:[6,49],also:[4,6,32,43],altern:6,alwai:6,amazon:6,among:[48,51],amount:[6,49],ani:[6,23,31,32,40,49],anoth:32,anyth:24,api:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],api_kei:[2,4],apikei:[2,6],apikeylist:[2,6],apikeyscli:[2,4],app:[6,36,48],appli:[4,6,24,32,33,34],applic:[6,31],arbitrari:[0,1,2,3,5,6,18,19,20,21,23,24,26,27,28,32,33,34,35,36,37,38,39,40,43,48,51],arn:6,arrai:6,ask:6,aspect:[4,34],assert:[4,6,39],assertion_consumer_service_url:6,assign:[4,6,23,35,51],associ:[4,6,22,24,32],assum:6,attach:[3,4,6,25,32,33,34,36,43],attempt:27,attribut:[1,2,3,5,24,32,33,34,35,36,38,43],audienc:6,auth:[6,11],auth_check_interv:6,authent:[2,4,5,6,38,39,40],author:[0,4,5,6,31,39,40],authorized_group:6,authtoken:[4,5,6],autom:[4,43],automat:[4,6,36,43],avail:[0,5,6,49],awai:31,awar:49,aws_access_key_id:6,aws_secret_access_kei:6,awsauth:6,awscredenti:6,awsrol:6,back:6,backend:[4,6,19,20,21,22,31],backend_id:6,balanc:[48,51],ban:6,bar:[6,48],base:[1,6,51],base_url:4,bearer:6,becaus:[6,23],becom:[6,39,40],been:[3,4,6,49],befor:[6,49],before_id:[1,2,3,5,18,20,21,22,24,26,27,28,32,33,34,35,36,37,38,39,40,43,48,49,50,51],behalf:6,behavior:27,being:6,belong:6,best:23,between:6,bind:[5,6,38],blob:[6,40],block:23,blog:[6,19],bodi:[6,28],bool:[6,34],both:[6,33],breaker:[6,19,31],bucket:6,bundl:[6,43],ca_pem:[3,6],cach:6,calcul:51,call:[5,6,31,39,40,49],caller:[5,6,23,38,49],can:[1,2,4,5,6,27,31,32,34,35,36,37,38,40,43,49],cannot:[4,35],caus:49,caveat:6,cert:6,certfic:[3,37,39,40],certif:[4,6,31,36],certificate_author:[3,4,6],certificate_authority_id:6,certificate_id:36,certificate_management_polici:[6,36],certificate_management_statu:6,certificate_pem:[6,43],certificateauthor:[3,6],certificateauthoritiescli:[3,4],certificateauthoritylist:[3,6],certifici:6,certkei:[6,40],chain:[6,43],challeng:6,check:[6,23,49],child:[6,27,51],choos:6,chosen:[4,6,35],cidr:[4,6,31,32,33,34],circuit:[6,19,31],circuit_break:[6,19],circumst:49,client:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],client_id:6,client_secret:6,cloudwatch:6,cloudwatch_log:[6,24],cname:[4,6,36],cname_target:6,code:[6,23,28,31,49],com:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],command:[4,5,6,40,49],common:[5,6,23,38],compat:49,complet:[18,19,20,21,49],compress:[6,19,31],concaten:6,condit:[6,23],config:24,config_metadata:6,configur:[1,4,5,6,18,19,20,21,32,36,49],connect:[1,4,5,6,27,32,34,36,39,40,49],consid:[6,39],construct:[0,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],consult:[23,31],consum:6,contact:0,contain:[0,6,24,26,36],content:[0,6,28],control:[4,6,32],convert:31,cooki:6,cookie_prefix:6,cor:6,correct:6,correspond:[4,39],could:[23,49],countri:6,cr_1kyyuneyn6xhhlqymblrj5nxkoz:31,creat:[0,1,2,3,4,5,6,18,19,20,21,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,43,48,51],created_at:6,creation:6,cred:[4,6,31],credenti:[4,6,31],credentiallist:[5,6],credentialscli:[4,5],critic:[6,40],critical_opt:[6,40],current:[6,24,34,39,40,49,50],curv:37,custom:[6,26],danger:[6,39,40],dashboard:[2,4,6,31,32,34],data:[0,1,2,3,5,6,18,19,20,21,24,27,28,32,33,34,35,36,37,38,39,40,43,48,51],datacent:[6,35,36],datatyp:31,defin:[0,1,2,3,4,5,6,18,19,20,21,22,24,27,28,32,33,34,35,36,37,38,39,40,43,48,51],definit:6,deleg:6,delet:[1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,51],delete_certif:36,delete_certificate_management_polici:36,deliv:6,deliveri:6,delivery_stream_arn:6,deni:[4,6,23,32,33,40],deposit:6,describ:6,descript:[1,2,3,5,6,18,19,20,21,24,26,27,28,32,33,34,35,36,37,38,39,40,43,48,51],destin:[6,26,31],destination_id:26,detach:36,detail:[0,1,2,3,5,6,23,24,25,27,31,32,33,34,35,36,37,38,39,40,43,48,49,51],direct:6,directli:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],disabl:[6,36,49],disallow:6,discoveri:6,disk:6,distinguish:23,divid:51,dns_error:6,dns_name:6,doc:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],document:23,doe:[6,36],domain:[1,4,5,6,31,38,43],done:49,down:[0,4],download:6,dump:31,durat:6,dure:6,dynam:6,each:[4,18,19,20,21,49,51],easier:23,ecdsa:[6,37],ed25519:[6,37],edg:[4,6,22,31,36],edge_id:[6,7,8,9,10,11,12,13,14,15,16,17,19],edge_modul:4,edge_route_backend_modul:7,edge_route_circuit_breaker_modul:8,edge_route_compression_modul:9,edge_route_ip_restriction_modul:10,edge_route_o_auth_modul:11,edge_route_oidc_modul:12,edge_route_request_headers_modul:13,edge_route_response_headers_modul:14,edge_route_saml_modul:15,edge_route_webhook_verification_modul:16,edge_route_websocket_tcp_converter_modul:17,edgeroutebackendmodulecli:7,edgeroutecircuitbreakermodulecli:8,edgeroutecompressionmodulecli:9,edgerouteiprestrictionmodulecli:10,edgerouteoauthmodulecli:11,edgerouteoidcmodulecli:12,edgerouterequestheadersmodulecli:13,edgerouteresponseheadersmodulecli:14,edgeroutesamlmodulecli:15,edgeroutewebhookverificationmodulecli:16,edgeroutewebsockettcpconvertermodulecli:17,edges_http:18,edges_https_rout:19,edges_tcp:20,edges_tl:21,edgeshttpscli:18,edgeshttpsroutescli:19,edgestcpcli:20,edgestlscli:21,either:[6,33],ellipt:37,elliptic_curv:37,els:23,email:6,email_address:6,email_domain:6,enabl:[4,6,43],encapsul:[6,23,24],encod:[6,38,43],endpoint:[4,6,24,31,32,34,49,50],endpointbackend:[6,7,41,44],endpointbackendmut:[6,7,19,20,21,41,44],endpointcircuitbreak:[6,8,19],endpointcompress:[6,9,19],endpointippolici:[6,10,42,45],endpointippolicymut:[6,10,19,20,21,42,45],endpointlist:[6,22],endpointmutualtl:[6,29,46],endpointmutualtlsmut:[6,18,21,29,46],endpointoauth:[6,11,19],endpointoauthfacebook:6,endpointoauthgithub:6,endpointoauthgoogl:6,endpointoauthmicrosoft:6,endpointoauthprovid:6,endpointoidc:[6,12,19],endpointrequesthead:[6,13,19],endpointresponsehead:[6,14,19],endpointsaml:[6,15],endpointsamlmut:[6,15,19],endpointscli:[4,22],endpointtlstermin:[6,21,30,47],endpointtlsterminationatedg:[6,18,30],endpointwebhookvalid:[6,16,19],endpointwebsockettcpconvert:[6,17,19],enforc:[4,6,34],ensur:23,entiti:6,entity_id:6,entitydescriptor:6,entri:[4,33],enumer:6,ephemer:6,equival:[5,6,38],err_ngrok_1410:23,error:6,error_cod:[6,23,31],error_threshold_percentag:6,establish:27,etc:[5,6,38],evalu:6,even:6,event:[6,31],event_destin:[4,6,24],event_sourc:[4,25],event_subscript:[4,6,26],eventdestin:[6,24],eventdestinationlist:[6,24],eventdestinationscli:[4,24],eventsourc:[6,25],eventsourcelist:[6,25],eventsourcereplac:[6,26],eventsourcescli:[4,25],eventsubscript:[6,26],eventsubscriptionlist:[6,26],eventsubscriptionscli:[4,26],eventtarget:[6,24],eventtargetcloudwatchlog:6,eventtargetfirehos:6,eventtargetkinesi:6,exact_path:[6,19],exactli:[6,24],exampl:[5,6,19,36,38],exceed:6,except:[6,31],exclus:36,exec:49,exist:[18,19,20,21],exit:49,expect:6,explain:23,explicitli:[5,6,38],expos:[4,50],express:6,extend:6,extended_key_usag:6,extens:[6,40],face:[4,34],facebook:6,fail:[6,23,31,49],failov:[6,31],failover_backend:27,failoverbackend:[6,27],failoverbackendlist:[6,27],failoverbackendscli:27,fals:[6,34],fetch:31,field:23,file:[4,5,6],firehos:[6,24],first:[2,4,6,23,27,31,43],fix:[6,28],flow:6,follow:[6,24,40,49],foo:[6,48],forc:[6,40],force_authn:6,form:6,format:[6,24,39,40],forward:[6,40],forwards_to:6,four:[6,34],from:[2,4,6,31,38],full:[6,36],futur:[5,39],gatewai:[4,38],gener:[1,2,5,6,37],geograph:[6,35,36],get:[0,1,2,3,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],giraff:31,github:[6,40],gitlab:6,given:[6,25],googl:6,group:[4,6,31,32],guarante:[6,23],handshak:6,happen:23,has:[3,4,6,32,34,49],have:[4,5,6,38,43],header:[6,19,28,31],health:6,help:6,helper:31,highli:6,holder:[6,40],host:[0,4,6,31,37,40],hostcertif:6,hostnam:[4,6,35,36,39],hostport:[4,6,18,20,21,22],hour:40,how:[6,24],howev:[18,19,20,21],http:[0,1,2,3,4,5,6,20,21,22,23,24,25,26,27,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],http_response_backend:28,http_status_cod:[23,31],httpresponsebackend:[6,28],httpresponsebackendlist:[6,28],httpresponsebackendscli:28,https_edg:6,https_edge_mutual_tls_modul:29,https_edge_tls_termination_modul:30,httpsedg:[6,18],httpsedgelist:[6,18],httpsedgemutualtlsmodulecli:29,httpsedgerout:[6,19],httpsedgetlsterminationmodulecli:30,human:[1,2,3,5,6,18,19,20,21,23,24,26,27,28,32,33,34,35,36,37,38,39,40,43,48,51],ident:6,identifi:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],idp:6,idp_metadata:6,ids:[6,27,51],ignor:6,implement:[6,31],inact:6,inactivity_timeout:6,includ:[3,4,5,6,23,38,39,40,49],increas:6,indic:[6,23],industri:6,inform:[3,5,6,24,26,27,31,32,33,34,37,38,39,40,43,48,51],ingress:[4,6,31,34],initi:[4,6,34],inject:6,instal:[4,5],instanc:[4,49],instead:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],instruct:49,integ:6,integr:49,intend:[6,26],intercom:6,internal_error:6,interpret:[6,40],introspect:23,invalid:[6,23,39,40],invok:[23,31],ip_polici:[4,6,23,31,32],ip_policy_id:[6,31,33,34],ip_policy_rul:[4,6,31,33],ip_restrict:[4,6,19,20,21,34],ippolici:[6,32],ippoliciescli:[4,32],ippolicylist:[6,32],ippolicyrul:[6,33],ippolicyrulelist:[6,33],ippolicyrulescli:[4,33],iprestrict:[6,34],iprestrictionlist:[6,34],iprestrictionscli:[4,34],ips:6,ipv4:[4,6,33],ipv6:[4,6,33],isn:6,issu:[6,34,39,40,49],issued_at:6,issuer:6,issuer_common_nam:6,its:[4,6,37,39,51],itself:[2,4,31,49],job:6,json:[6,24,31],kei:[3,4,6,31,37,38,39,40,43],key_siz:37,key_typ:6,key_usag:6,keypair:[6,38],kind:23,kinesi:[6,24],label:[6,48],latest:49,lead:[5,6,38],leaf:[6,43],least:49,leav:[6,24],letsencrypt:6,level:6,librari:[4,31],like:[6,24,31,36],limit:[1,2,3,5,6,18,20,21,22,24,26,27,28,32,33,34,35,36,37,38,39,40,43,48,49,50,51],link:43,list:[0,1,2,3,4,5,6,18,20,21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,43,48,49,50,51],listen:[4,35,36],local:6,locat:6,log:[4,6,34,40],log_group_arn:6,login:6,logout:6,longer:6,low:6,machin:[1,3,5,6,18,19,20,21,24,26,27,28,32,33,34,35,36,37,38,39,40,43,48,51],mai:[2,4,5,6,23,36,38,40,43],major:49,make:[4,6,23,33,34,49],manag:[2,4,6,36],mani:6,manual:49,map:[6,28,40,48,51],master:[6,40],match:[4,5,6,19,38,43,48],match_typ:[6,19],max:[0,1,2,3,5,6,18,19,20,21,24,26,32,33,34,35,36,37,38,39,40,43],maximum:6,maximum_dur:6,member:6,messag:[6,23,31],metadata:[0,1,2,3,5,6,18,19,20,21,24,26,27,28,31,32,33,34,35,36,37,38,39,40,43,48,51],metadata_url:6,method:23,metric:6,microsoft:6,min_vers:6,minimum:6,modifi:[18,19,20,21],modul:[3,4,6,18,19,20,21,31,32],more:[4,6,40,49],most:6,msg:6,mtl:[3,4],multipl:[5,6,38],must:[4,5,6,24,40,49],mutual:[3,4,31,36],mutual_tl:[6,18,21],nake:23,name:[1,6,36],nameid:6,nameid_format:6,necessari:[6,31],need:[2,4,5,6,31],network:[6,23],never:49,next:[6,27],next_page_uri:6,ngrok:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],non:6,none:[1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],not_aft:6,not_befor:6,notabl:49,notat:[6,33],notfounderror:23,ns_target:6,num_bucket:6,number:[6,40],oasi:6,oauth:[6,19,31],object:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],offici:31,offlin:27,oidc:[6,19,31],one:[4,6,24,27,31,37,39,49],onli:[0,3,4,5,6,22,24,34,38,40],onlin:[6,31,48,49,50],open:[5,6,38,40],openid:6,openssh:[6,39,40],oper:[6,23,49],operation_id:23,operationid:23,option:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],options_passthrough:6,order:[6,27],org:6,organ:6,organiz:6,other:[3,4,6,23,37],otherwis:6,our:[0,23],out:6,output:[6,24],over:6,own:[1,2,4,6,36],packag:31,page:[2,4,6],pagerduti:6,pair:[4,6,37,43],paramet:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],pars:6,partially_process:6,pass:6,path_prefix:[6,19],pem:[3,6,38,43],pend:6,percentag:[6,51],period:6,perman:6,permiss:[6,40],permit:[5,6,38,40],persist:6,pip:31,place:[4,6,34],platform:49,pleas:49,point:[4,6,23,36],polici:[4,6,31,34,36],port:[4,6,35,40],portabl:[6,40],portion:6,predefin:[6,40],prefer:6,prefix:6,present:[3,4,6,40],princip:[6,39,40],print:[4,31],privat:[3,4,6,37,39,43],private_key_pem:43,private_key_typ:[6,37],process:[6,49],prompt:6,prop:6,properti:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],proportion:51,proto:6,protocol:[6,40],provid:[4,6,22,50],provinc:6,provis:[2,4,6,43],provisioning_job:6,pty:[6,40],pub:6,public_kei:[6,38,39,40],public_url:6,pull:6,purpos:[6,32,40],python:31,qualifi:6,queri:[4,22],rais:23,rang:[4,6,32,33],raw:[3,6],readabl:[1,2,3,5,6,18,19,20,21,23,24,26,27,28,32,33,34,35,36,37,38,39,40,43,48,51],reauthent:6,recent:6,recheck:6,recommend:6,reconnect:49,record:[4,6,36],redirect:6,ref:6,refer:6,referenc:[6,24,27,32,51],refresh:6,region:[1,6,35,36],region_domain:6,relat:6,relayst:6,reli:6,remain:32,remov:[6,25],renew:6,renews_at:6,replac:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,29,30,41,42,44,45,46,47],report:[4,6,31],repres:[4,49],request:[0,4,6,19,23,31,34,49],request_head:[6,19],request_signing_certificate_pem:6,requir:6,reserv:[4,6,31],reserved_addr:[4,6,35],reserved_domain:[4,6,36],reservedaddr:[6,35],reservedaddrlist:[6,35],reservedaddrscli:[4,35],reserveddomain:[6,36],reserveddomaincertjob:6,reserveddomaincertpolici:[6,36],reserveddomaincertstatu:6,reserveddomainlist:[6,36],reserveddomainscli:[4,36],resourc:[0,1,2,3,4,5,6,18,20,21,22,24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],respons:[0,5,6,19,23,31],response_head:[6,19],rest:[6,24],restart:49,restrict:[4,5,6,19,31,32,38],retain:6,retri:[6,23],retries_at:6,retriev:6,reusabl:[4,32],revers:[4,49,50],review:0,revok:6,rfc:[6,39,40],robustli:23,role:6,role_arn:6,roll:6,rolling_window:6,root:4,rout:[6,31],rsa:[6,37],rule:[4,5,6,31,32,38],run:[4,6,49,50],runtimeerror:23,safe:6,same:6,saml:[6,19,31],san:6,save:5,scope:6,second:[6,49],secret:6,section:31,secur:5,see:[6,40,43],selector:[6,19,48],send:[6,24],sendgrid:6,sent:[6,27],separ:23,sequenc:[0,5,6,18,20,21,26,27,34,38,39,40],serial:[6,24],serial_numb:6,serv:[4,6,18,20,21,22,39],server:[4,6,23,36,39,40],server_nam:31,servic:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],session:[4,5,6,31,32,50],set:[1,6,34],shopifi:6,should:[6,26,49],sign:[3,4,6,37,39,40],simpl:23,singl:[6,31],single_logout_url:6,size:37,slack:6,slug:6,some:[23,31,49],someth:23,sourc:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],spec:[6,40],specif:[4,6,23,31,34],specifi:[4,5,6,18,19,20,21,33,36,38,39,40],ssh:[4,6,31,49,50],ssh_certificate_author:[4,6,37],ssh_certificate_authority_id:[6,39,40],ssh_credenti:[4,6,38],ssh_host_certif:[4,6,39],ssh_user_certif:[4,6,40],sshcertificateauthor:[6,37],sshcertificateauthoritiescli:[4,37],sshcertificateauthoritylist:[6,37],sshcredenti:[6,38],sshcredentiallist:[6,38],sshcredentialscli:[4,38],sshd_config:6,sshhostcertif:[6,39],sshhostcertificatelist:[6,39],sshhostcertificatescli:[4,39],sshusercertif:[6,40],sshusercertificatelist:[6,40],sshusercertificatescli:[4,40],start:[4,5,6,32,34,38,49],started_at:6,state:6,statist:6,statu:[0,6,22,23,28,31,49,50],status:6,status_cod:[6,28],still:[6,24,49],stop:49,str:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],stream:[6,24],stream_arn:6,string:[6,23],stripe:6,subclass:23,subdomain:[6,36],subject:6,subject_alternative_nam:6,subject_common_nam:6,subject_countri:6,subject_loc:6,subject_organ:6,subject_organizational_unit:6,subject_provinc:6,submit:[0,4],subnet:31,subscript:[6,24,25,31],subscription_id:25,subset:6,success:27,successfulli:49,suffix:[5,6,38],sum:51,suppli:[6,26],support:[6,33,34,49],suspect:[0,6],system:[0,6,23],take:[0,4,6,23],taken:6,target:[6,24,36],tcp:[4,6,19,31,35],tcp_addr:6,tcp_edg:6,tcp_edge_backend_modul:41,tcp_edge_ip_restriction_modul:42,tcpedg:[6,20],tcpedgebackendmodulecli:41,tcpedgeiprestrictionmodulecli:42,tcpedgelist:[6,20],team:[0,6],temporari:6,term:[0,4,6],termin:[4,6,31,40,43],terminate_at:6,thei:[4,5,6,32,35,43],them:6,thi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],threshold:6,through:6,thrown:23,thu:[3,4],time:[5,6,38,39,40,49],timestamp:6,tls:[4,6,21,29,30,36,43,44,45,46,47],tls_certif:[4,6,43],tls_edg:6,tls_edge_backend_modul:44,tls_edge_ip_restriction_modul:45,tls_edge_mutual_tls_modul:46,tls_edge_tls_termination_modul:47,tls_termin:[6,18,21],tlscertif:[6,43],tlscertificatelist:[6,43],tlscertificatesan:6,tlscertificatescli:[4,43],tlsedg:[6,21],tlsedgebackendmodulecli:44,tlsedgeiprestrictionmodulecli:45,tlsedgelist:[6,21],tlsedgemutualtlsmodulecli:46,tlsedgetlsterminationmodulecli:47,togeth:6,token:[5,6,38],top:6,trace:23,traffic:[4,6,27,31,32,34,35,36,39,43,48,51],transpar:31,transport:6,treat:32,trigger:[6,25,26],trip:6,tripped_dur:6,trust:[4,39,40],tunabl:6,tune:6,tunnel:[4,6,22,31,32,38],tunnel_group_backend:48,tunnel_sess:[4,6,49],tunnelgroup:[6,48],tunnelgroupbackend:[6,48],tunnelgroupbackendlist:[6,48],tunnelgroupbackendscli:48,tunnellist:[6,50],tunnelscli:[4,50],tunnelsess:[6,49],tunnelsessionlist:[6,49],tunnelsessionscli:[4,49],twilio:6,two:[6,40],type:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],unban:6,undefin:23,underli:6,understand:[6,40],unexpect:23,uniqu:[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26],unit:6,unspecifi:[5,6,38,39,40],until:[4,24,27,32,43],unus:[4,43],updat:[1,2,3,5,6,18,19,20,21,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,43,48,49,51],updated_at:6,upload:[3,6,36,38,43],upstream:6,uri:6,url:[0,4,6],urn:6,use:[1,2,4,5,6,18,19,20,21,23,36,37,38],used:[1,2,3,4,5,6,18,19,20,21,22,26,32,34,35,36,37,38,39,40,43],user:[0,1,2,3,4,5,6,18,19,20,21,24,27,28,31,32,33,34,35,36,37,38,39,43,48,51],usernam:[6,40],uses:[2,6],using:[6,49],valid:[3,4,6,19,23,31,39,40],valid_aft:[6,39,40],valid_befor:[6,39,40],valid_until:[6,39,40],valu:[6,18,19,20,21,24,34,39,40],verif:[6,19,31],verifi:[3,4],version:[6,49],via:[1,4,18,19,20,21,32,38],violat:[0,4],visit:6,volum:6,volume_threshold:6,wai:[18,19,20,21],wait:[6,49],want:6,warn:[6,34],watch:[6,48],webhook:[6,19,31],webhook_verif:[6,19],websocket:[6,19,31],websocket_tcp_convert:[6,19],weight:[6,31],weighted_backend:51,weightedbackend:[6,51],weightedbackendlist:[6,51],weightedbackendscli:51,well:[6,31],what:[2,4,5,6,18,19,20,21,22,34,35,36,38],when:[4,6,23,24,31,37,39,40,49],whenev:6,where:[6,24],whether:6,which:[0,4,5,6,22,25,26,31,34,38,43,49],who:[4,5,6,38,39],why:[6,23],wildcard:[5,6,38],window:[6,49],wish:49,within:27,without:31,work:31,would:[5,6,24,38],x11:[6,40],x509:[3,4,43],xero:6,xml:6,year:39,yet:49,yml:[4,5],you:[0,1,2,4,5,6,23,24,31,32,36,38,43,49],your:[2,4,5,6,24,31,34,38,49],yourself:5,zero:32},titles:["Abuse Reports","Agent Ingresses","API Keys","Certificate Authorities","Client","Tunnel Credentials","Datatypes","HTTPS Edge Route Backend Module","HTTPS Edge Route Circuit Breaker Module","HTTPS Edge Route Compression Module","HTTPS Edge Route IP Restriction Module","HTTPS Edge Route OAuth Module","HTTPS Edge Route OIDC Module","HTTPS Edge Route Request Headers Module","HTTPS Edge Route Response Headers Module","HTTPS Edge Route SAML Module","HTTPS Edge Route Webhook Verification Module","HTTPS Edge Route Websocket TCP Converter Module","HTTPS Edges","HTTPS Edge Routes","TCP Edges","TLS Edges","Endpoints","Errors","Event Destinations","Event Sources","Event Subscriptions","Failover Backends","HTTP Response Backends","HTTPS Edge Mutual TLS Module","HTTPS Edge TLS Termination Module","ngrok-api","IP Policies","IP Policy Rules","IP Restrictions","Reserved Addresses","Reserved Domains","SSH Certificate Authorities","SSH Credentials","SSH Host Certificates","SSH User Certificates","TCP Edge Backend Module","TCP Edge IP Restriction Module","TLS Certificates","TLS Edge Backend Module","TLS Edge IP Restriction Module","TLS Edge Mutual TLS Module","TLS Edge TLS Termination Module","Tunnel Group Backends","Tunnel Sessions","Tunnels","Weighted Backends"],titleterms:{"class":23,TLS:[21,29,30,43,44,45,46,47],abus:0,address:35,agent:1,api:[2,31],author:[3,37],automat:31,backend:[7,27,28,41,44,48,51],breaker:8,certif:[3,37,39,40,43],circuit:8,client:4,compress:9,convert:17,credenti:[5,38],datatyp:6,destin:24,domain:36,edg:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,29,30,41,42,44,45,46,47],endpoint:22,error:[23,31],event:[24,25,26],exampl:31,except:23,failov:27,get:31,group:48,handl:[23,31],header:[13,14],host:39,http:[7,8,9,10,11,12,13,14,15,16,17,18,19,28,29,30],ingress:1,instal:31,instanc:31,kei:2,method:31,modul:[7,8,9,10,11,12,13,14,15,16,17,29,30,41,42,44,45,46,47],mutual:[29,46],ngrok:31,oauth:11,oidc:12,page:31,polici:[32,33],quickstart:31,refer:31,report:0,request:13,reserv:[35,36],respons:[14,28],restrict:[10,34,42,45],rout:[7,8,9,10,11,12,13,14,15,16,17,19],rule:33,saml:15,servic:31,session:49,sourc:25,ssh:[37,38,39,40],start:31,subscript:26,tcp:[17,20,41,42],termin:[30,47],tunnel:[5,48,49,50],user:40,verif:16,webhook:16,websocket:17,weight:51}}) \ No newline at end of file +Search.setIndex({docnames:["abuse_reports","agent_ingresses","api_keys","certificate_authorities","client","credentials","datatypes","edge_route_backend_module","edge_route_circuit_breaker_module","edge_route_compression_module","edge_route_ip_restriction_module","edge_route_o_auth_module","edge_route_oidc_module","edge_route_request_headers_module","edge_route_response_headers_module","edge_route_saml_module","edge_route_webhook_verification_module","edge_route_websocket_tcp_converter_module","edges_https","edges_https_routes","edges_tcp","edges_tls","endpoints","errors","event_destinations","event_sources","event_subscriptions","failover_backends","http_response_backends","https_edge_mutual_tls_module","https_edge_tls_termination_module","index","ip_policies","ip_policy_rules","ip_restrictions","reserved_addrs","reserved_domains","ssh_certificate_authorities","ssh_credentials","ssh_host_certificates","ssh_user_certificates","tcp_edge_backend_module","tcp_edge_ip_restriction_module","tls_certificates","tls_edge_backend_module","tls_edge_ip_restriction_module","tls_edge_mutual_tls_module","tls_edge_tls_termination_module","tunnel_group_backends","tunnel_sessions","tunnels","weighted_backends"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["abuse_reports.rst","agent_ingresses.rst","api_keys.rst","certificate_authorities.rst","client.rst","credentials.rst","datatypes.rst","edge_route_backend_module.rst","edge_route_circuit_breaker_module.rst","edge_route_compression_module.rst","edge_route_ip_restriction_module.rst","edge_route_o_auth_module.rst","edge_route_oidc_module.rst","edge_route_request_headers_module.rst","edge_route_response_headers_module.rst","edge_route_saml_module.rst","edge_route_webhook_verification_module.rst","edge_route_websocket_tcp_converter_module.rst","edges_https.rst","edges_https_routes.rst","edges_tcp.rst","edges_tls.rst","endpoints.rst","errors.rst","event_destinations.rst","event_sources.rst","event_subscriptions.rst","failover_backends.rst","http_response_backends.rst","https_edge_mutual_tls_module.rst","https_edge_tls_termination_module.rst","index.rst","ip_policies.rst","ip_policy_rules.rst","ip_restrictions.rst","reserved_addrs.rst","reserved_domains.rst","ssh_certificate_authorities.rst","ssh_credentials.rst","ssh_host_certificates.rst","ssh_user_certificates.rst","tcp_edge_backend_module.rst","tcp_edge_ip_restriction_module.rst","tls_certificates.rst","tls_edge_backend_module.rst","tls_edge_ip_restriction_module.rst","tls_edge_mutual_tls_module.rst","tls_edge_tls_termination_module.rst","tunnel_group_backends.rst","tunnel_sessions.rst","tunnels.rst","weighted_backends.rst"],objects:{"":{ngrok:[23,0,0,"-"]},"ngrok.Client":{abuse_reports:[4,2,1,""],agent_ingresses:[4,2,1,""],api_keys:[4,2,1,""],backends:[4,2,1,""],certificate_authorities:[4,2,1,""],credentials:[4,2,1,""],edge_modules:[4,2,1,""],edges:[4,2,1,""],endpoints:[4,2,1,""],event_destinations:[4,2,1,""],event_sources:[4,2,1,""],event_subscriptions:[4,2,1,""],ip_policies:[4,2,1,""],ip_policy_rules:[4,2,1,""],ip_restrictions:[4,2,1,""],reserved_addrs:[4,2,1,""],reserved_domains:[4,2,1,""],ssh_certificate_authorities:[4,2,1,""],ssh_credentials:[4,2,1,""],ssh_host_certificates:[4,2,1,""],ssh_user_certificates:[4,2,1,""],tls_certificates:[4,2,1,""],tunnel_sessions:[4,2,1,""],tunnels:[4,2,1,""]},"ngrok.Error":{operation_id:[23,2,1,""]},"ngrok.datatypes":{APIKey:[6,1,1,""],APIKeyList:[6,1,1,""],AWSAuth:[6,1,1,""],AWSCredentials:[6,1,1,""],AWSRole:[6,1,1,""],AbuseReport:[6,1,1,""],AbuseReportHostname:[6,1,1,""],AgentIngress:[6,1,1,""],AgentIngressList:[6,1,1,""],CertificateAuthority:[6,1,1,""],CertificateAuthorityList:[6,1,1,""],Credential:[6,1,1,""],CredentialList:[6,1,1,""],Endpoint:[6,1,1,""],EndpointBackend:[6,1,1,""],EndpointBackendMutate:[6,1,1,""],EndpointCircuitBreaker:[6,1,1,""],EndpointCompression:[6,1,1,""],EndpointIPPolicy:[6,1,1,""],EndpointIPPolicyMutate:[6,1,1,""],EndpointList:[6,1,1,""],EndpointMutualTLS:[6,1,1,""],EndpointMutualTLSMutate:[6,1,1,""],EndpointOAuth:[6,1,1,""],EndpointOAuthFacebook:[6,1,1,""],EndpointOAuthGitHub:[6,1,1,""],EndpointOAuthGoogle:[6,1,1,""],EndpointOAuthMicrosoft:[6,1,1,""],EndpointOAuthProvider:[6,1,1,""],EndpointOIDC:[6,1,1,""],EndpointRequestHeaders:[6,1,1,""],EndpointResponseHeaders:[6,1,1,""],EndpointSAML:[6,1,1,""],EndpointSAMLMutate:[6,1,1,""],EndpointTLSTermination:[6,1,1,""],EndpointTLSTerminationAtEdge:[6,1,1,""],EndpointWebhookValidation:[6,1,1,""],EndpointWebsocketTCPConverter:[6,1,1,""],EventDestination:[6,1,1,""],EventDestinationList:[6,1,1,""],EventSource:[6,1,1,""],EventSourceList:[6,1,1,""],EventSourceReplace:[6,1,1,""],EventSubscription:[6,1,1,""],EventSubscriptionList:[6,1,1,""],EventTarget:[6,1,1,""],EventTargetCloudwatchLogs:[6,1,1,""],EventTargetFirehose:[6,1,1,""],EventTargetKinesis:[6,1,1,""],FailoverBackend:[6,1,1,""],FailoverBackendList:[6,1,1,""],HTTPResponseBackend:[6,1,1,""],HTTPResponseBackendList:[6,1,1,""],HTTPSEdge:[6,1,1,""],HTTPSEdgeList:[6,1,1,""],HTTPSEdgeRoute:[6,1,1,""],IPPolicy:[6,1,1,""],IPPolicyList:[6,1,1,""],IPPolicyRule:[6,1,1,""],IPPolicyRuleList:[6,1,1,""],IPRestriction:[6,1,1,""],IPRestrictionList:[6,1,1,""],Ref:[6,1,1,""],ReservedAddr:[6,1,1,""],ReservedAddrList:[6,1,1,""],ReservedDomain:[6,1,1,""],ReservedDomainCertJob:[6,1,1,""],ReservedDomainCertPolicy:[6,1,1,""],ReservedDomainCertStatus:[6,1,1,""],ReservedDomainList:[6,1,1,""],SSHCertificateAuthority:[6,1,1,""],SSHCertificateAuthorityList:[6,1,1,""],SSHCredential:[6,1,1,""],SSHCredentialList:[6,1,1,""],SSHHostCertificate:[6,1,1,""],SSHHostCertificateList:[6,1,1,""],SSHUserCertificate:[6,1,1,""],SSHUserCertificateList:[6,1,1,""],TCPEdge:[6,1,1,""],TCPEdgeList:[6,1,1,""],TLSCertificate:[6,1,1,""],TLSCertificateList:[6,1,1,""],TLSCertificateSANs:[6,1,1,""],TLSEdge:[6,1,1,""],TLSEdgeList:[6,1,1,""],Tunnel:[6,1,1,""],TunnelGroupBackend:[6,1,1,""],TunnelGroupBackendList:[6,1,1,""],TunnelList:[6,1,1,""],TunnelSession:[6,1,1,""],TunnelSessionList:[6,1,1,""],WeightedBackend:[6,1,1,""],WeightedBackendList:[6,1,1,""]},"ngrok.datatypes.APIKey":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],token:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.APIKeyList":{keys:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.AWSAuth":{creds:[6,2,1,""],role:[6,2,1,""]},"ngrok.datatypes.AWSCredentials":{aws_access_key_id:[6,2,1,""],aws_secret_access_key:[6,2,1,""]},"ngrok.datatypes.AWSRole":{role_arn:[6,2,1,""]},"ngrok.datatypes.AbuseReport":{created_at:[6,2,1,""],hostnames:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],status:[6,2,1,""],uri:[6,2,1,""],urls:[6,2,1,""]},"ngrok.datatypes.AbuseReportHostname":{hostname:[6,2,1,""],status:[6,2,1,""]},"ngrok.datatypes.AgentIngress":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],domain:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],ns_targets:[6,2,1,""],region_domains:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.AgentIngressList":{ingresses:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.CertificateAuthority":{"delete":[6,2,1,""],ca_pem:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],extended_key_usages:[6,2,1,""],id:[6,2,1,""],key_usages:[6,2,1,""],metadata:[6,2,1,""],not_after:[6,2,1,""],not_before:[6,2,1,""],subject_common_name:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.CertificateAuthorityList":{certificate_authorities:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.Credential":{"delete":[6,2,1,""],acl:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],token:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.CredentialList":{credentials:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.Endpoint":{created_at:[6,2,1,""],domain:[6,2,1,""],edge:[6,2,1,""],hostport:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],proto:[6,2,1,""],public_url:[6,2,1,""],region:[6,2,1,""],tcp_addr:[6,2,1,""],tunnel:[6,2,1,""],type:[6,2,1,""],updated_at:[6,2,1,""]},"ngrok.datatypes.EndpointBackend":{backend:[6,2,1,""],enabled:[6,2,1,""]},"ngrok.datatypes.EndpointBackendMutate":{backend_id:[6,2,1,""],enabled:[6,2,1,""]},"ngrok.datatypes.EndpointCircuitBreaker":{enabled:[6,2,1,""],error_threshold_percentage:[6,2,1,""],num_buckets:[6,2,1,""],rolling_window:[6,2,1,""],tripped_duration:[6,2,1,""],volume_threshold:[6,2,1,""]},"ngrok.datatypes.EndpointCompression":{enabled:[6,2,1,""]},"ngrok.datatypes.EndpointIPPolicy":{enabled:[6,2,1,""],ip_policies:[6,2,1,""]},"ngrok.datatypes.EndpointIPPolicyMutate":{enabled:[6,2,1,""],ip_policy_ids:[6,2,1,""]},"ngrok.datatypes.EndpointList":{endpoints:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.EndpointMutualTLS":{certificate_authorities:[6,2,1,""],enabled:[6,2,1,""]},"ngrok.datatypes.EndpointMutualTLSMutate":{certificate_authority_ids:[6,2,1,""],enabled:[6,2,1,""]},"ngrok.datatypes.EndpointOAuth":{auth_check_interval:[6,2,1,""],cookie_prefix:[6,2,1,""],enabled:[6,2,1,""],inactivity_timeout:[6,2,1,""],maximum_duration:[6,2,1,""],options_passthrough:[6,2,1,""],provider:[6,2,1,""]},"ngrok.datatypes.EndpointOAuthFacebook":{client_id:[6,2,1,""],client_secret:[6,2,1,""],email_addresses:[6,2,1,""],email_domains:[6,2,1,""],scopes:[6,2,1,""]},"ngrok.datatypes.EndpointOAuthGitHub":{client_id:[6,2,1,""],client_secret:[6,2,1,""],email_addresses:[6,2,1,""],email_domains:[6,2,1,""],organizations:[6,2,1,""],scopes:[6,2,1,""],teams:[6,2,1,""]},"ngrok.datatypes.EndpointOAuthGoogle":{client_id:[6,2,1,""],client_secret:[6,2,1,""],email_addresses:[6,2,1,""],email_domains:[6,2,1,""],scopes:[6,2,1,""]},"ngrok.datatypes.EndpointOAuthMicrosoft":{client_id:[6,2,1,""],client_secret:[6,2,1,""],email_addresses:[6,2,1,""],email_domains:[6,2,1,""],scopes:[6,2,1,""]},"ngrok.datatypes.EndpointOAuthProvider":{facebook:[6,2,1,""],github:[6,2,1,""],google:[6,2,1,""],microsoft:[6,2,1,""]},"ngrok.datatypes.EndpointOIDC":{client_id:[6,2,1,""],client_secret:[6,2,1,""],cookie_prefix:[6,2,1,""],enabled:[6,2,1,""],inactivity_timeout:[6,2,1,""],issuer:[6,2,1,""],maximum_duration:[6,2,1,""],options_passthrough:[6,2,1,""],scopes:[6,2,1,""]},"ngrok.datatypes.EndpointRequestHeaders":{add:[6,2,1,""],enabled:[6,2,1,""],remove:[6,2,1,""]},"ngrok.datatypes.EndpointResponseHeaders":{add:[6,2,1,""],enabled:[6,2,1,""],remove:[6,2,1,""]},"ngrok.datatypes.EndpointSAML":{allow_idp_initiated:[6,2,1,""],assertion_consumer_service_url:[6,2,1,""],authorized_groups:[6,2,1,""],cookie_prefix:[6,2,1,""],enabled:[6,2,1,""],entity_id:[6,2,1,""],force_authn:[6,2,1,""],idp_metadata:[6,2,1,""],inactivity_timeout:[6,2,1,""],maximum_duration:[6,2,1,""],metadata_url:[6,2,1,""],nameid_format:[6,2,1,""],options_passthrough:[6,2,1,""],request_signing_certificate_pem:[6,2,1,""],single_logout_url:[6,2,1,""]},"ngrok.datatypes.EndpointSAMLMutate":{allow_idp_initiated:[6,2,1,""],authorized_groups:[6,2,1,""],cookie_prefix:[6,2,1,""],enabled:[6,2,1,""],force_authn:[6,2,1,""],idp_metadata:[6,2,1,""],inactivity_timeout:[6,2,1,""],maximum_duration:[6,2,1,""],nameid_format:[6,2,1,""],options_passthrough:[6,2,1,""]},"ngrok.datatypes.EndpointTLSTermination":{enabled:[6,2,1,""],min_version:[6,2,1,""],terminate_at:[6,2,1,""]},"ngrok.datatypes.EndpointTLSTerminationAtEdge":{enabled:[6,2,1,""],min_version:[6,2,1,""]},"ngrok.datatypes.EndpointWebhookValidation":{enabled:[6,2,1,""],provider:[6,2,1,""],secret:[6,2,1,""]},"ngrok.datatypes.EndpointWebsocketTCPConverter":{enabled:[6,2,1,""]},"ngrok.datatypes.EventDestination":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],format:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],target:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.EventDestinationList":{event_destinations:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.EventSource":{type:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.EventSourceList":{sources:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.EventSourceReplace":{type:[6,2,1,""]},"ngrok.datatypes.EventSubscription":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],destinations:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],sources:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.EventSubscriptionList":{event_subscriptions:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.EventTarget":{cloudwatch_logs:[6,2,1,""],firehose:[6,2,1,""],kinesis:[6,2,1,""]},"ngrok.datatypes.EventTargetCloudwatchLogs":{auth:[6,2,1,""],log_group_arn:[6,2,1,""]},"ngrok.datatypes.EventTargetFirehose":{auth:[6,2,1,""],delivery_stream_arn:[6,2,1,""]},"ngrok.datatypes.EventTargetKinesis":{auth:[6,2,1,""],stream_arn:[6,2,1,""]},"ngrok.datatypes.FailoverBackend":{"delete":[6,2,1,""],backends:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.FailoverBackendList":{backends:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.HTTPResponseBackend":{"delete":[6,2,1,""],body:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],headers:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],status_code:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.HTTPResponseBackendList":{backends:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.HTTPSEdge":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],hostports:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],mutual_tls:[6,2,1,""],routes:[6,2,1,""],tls_termination:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.HTTPSEdgeList":{https_edges:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.HTTPSEdgeRoute":{"delete":[6,2,1,""],backend:[6,2,1,""],circuit_breaker:[6,2,1,""],compression:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],edge_id:[6,2,1,""],id:[6,2,1,""],ip_restriction:[6,2,1,""],match:[6,2,1,""],match_type:[6,2,1,""],metadata:[6,2,1,""],oauth:[6,2,1,""],oidc:[6,2,1,""],request_headers:[6,2,1,""],response_headers:[6,2,1,""],saml:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""],webhook_verification:[6,2,1,""],websocket_tcp_converter:[6,2,1,""]},"ngrok.datatypes.IPPolicy":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.IPPolicyList":{ip_policies:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.IPPolicyRule":{"delete":[6,2,1,""],action:[6,2,1,""],cidr:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],ip_policy:[6,2,1,""],metadata:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.IPPolicyRuleList":{ip_policy_rules:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.IPRestriction":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],enforced:[6,2,1,""],id:[6,2,1,""],ip_policies:[6,2,1,""],metadata:[6,2,1,""],type:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.IPRestrictionList":{ip_restrictions:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.Ref":{id:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.ReservedAddr":{"delete":[6,2,1,""],addr:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],region:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.ReservedAddrList":{next_page_uri:[6,2,1,""],reserved_addrs:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.ReservedDomain":{"delete":[6,2,1,""],acme_challenge_cname_target:[6,2,1,""],certificate:[6,2,1,""],certificate_management_policy:[6,2,1,""],certificate_management_status:[6,2,1,""],cname_target:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],domain:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],region:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.ReservedDomainCertJob":{error_code:[6,2,1,""],msg:[6,2,1,""],retries_at:[6,2,1,""],started_at:[6,2,1,""]},"ngrok.datatypes.ReservedDomainCertPolicy":{authority:[6,2,1,""],private_key_type:[6,2,1,""]},"ngrok.datatypes.ReservedDomainCertStatus":{provisioning_job:[6,2,1,""],renews_at:[6,2,1,""]},"ngrok.datatypes.ReservedDomainList":{next_page_uri:[6,2,1,""],reserved_domains:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.SSHCertificateAuthority":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],key_type:[6,2,1,""],metadata:[6,2,1,""],public_key:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.SSHCertificateAuthorityList":{next_page_uri:[6,2,1,""],ssh_certificate_authorities:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.SSHCredential":{"delete":[6,2,1,""],acl:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],public_key:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.SSHCredentialList":{next_page_uri:[6,2,1,""],ssh_credentials:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.SSHHostCertificate":{"delete":[6,2,1,""],certificate:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],key_type:[6,2,1,""],metadata:[6,2,1,""],principals:[6,2,1,""],public_key:[6,2,1,""],ssh_certificate_authority_id:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""],valid_after:[6,2,1,""],valid_until:[6,2,1,""]},"ngrok.datatypes.SSHHostCertificateList":{next_page_uri:[6,2,1,""],ssh_host_certificates:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.SSHUserCertificate":{"delete":[6,2,1,""],certificate:[6,2,1,""],created_at:[6,2,1,""],critical_options:[6,2,1,""],description:[6,2,1,""],extensions:[6,2,1,""],id:[6,2,1,""],key_type:[6,2,1,""],metadata:[6,2,1,""],principals:[6,2,1,""],public_key:[6,2,1,""],ssh_certificate_authority_id:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""],valid_after:[6,2,1,""],valid_until:[6,2,1,""]},"ngrok.datatypes.SSHUserCertificateList":{next_page_uri:[6,2,1,""],ssh_user_certificates:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TCPEdge":{"delete":[6,2,1,""],backend:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],hostports:[6,2,1,""],id:[6,2,1,""],ip_restriction:[6,2,1,""],metadata:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TCPEdgeList":{next_page_uri:[6,2,1,""],tcp_edges:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TLSCertificate":{"delete":[6,2,1,""],certificate_pem:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],extended_key_usages:[6,2,1,""],id:[6,2,1,""],issued_at:[6,2,1,""],issuer_common_name:[6,2,1,""],key_usages:[6,2,1,""],metadata:[6,2,1,""],not_after:[6,2,1,""],not_before:[6,2,1,""],private_key_type:[6,2,1,""],serial_number:[6,2,1,""],subject_alternative_names:[6,2,1,""],subject_common_name:[6,2,1,""],subject_country:[6,2,1,""],subject_locality:[6,2,1,""],subject_organization:[6,2,1,""],subject_organizational_unit:[6,2,1,""],subject_province:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TLSCertificateList":{next_page_uri:[6,2,1,""],tls_certificates:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TLSCertificateSANs":{dns_names:[6,2,1,""],ips:[6,2,1,""]},"ngrok.datatypes.TLSEdge":{"delete":[6,2,1,""],backend:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],hostports:[6,2,1,""],id:[6,2,1,""],ip_restriction:[6,2,1,""],metadata:[6,2,1,""],mutual_tls:[6,2,1,""],tls_termination:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TLSEdgeList":{next_page_uri:[6,2,1,""],tls_edges:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.Tunnel":{backends:[6,2,1,""],endpoint:[6,2,1,""],forwards_to:[6,2,1,""],id:[6,2,1,""],labels:[6,2,1,""],metadata:[6,2,1,""],proto:[6,2,1,""],public_url:[6,2,1,""],region:[6,2,1,""],started_at:[6,2,1,""],tunnel_session:[6,2,1,""]},"ngrok.datatypes.TunnelGroupBackend":{"delete":[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],labels:[6,2,1,""],metadata:[6,2,1,""],tunnels:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TunnelGroupBackendList":{backends:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TunnelList":{next_page_uri:[6,2,1,""],tunnels:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TunnelSession":{agent_version:[6,2,1,""],credential:[6,2,1,""],id:[6,2,1,""],ip:[6,2,1,""],metadata:[6,2,1,""],os:[6,2,1,""],region:[6,2,1,""],started_at:[6,2,1,""],transport:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.TunnelSessionList":{next_page_uri:[6,2,1,""],tunnel_sessions:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.WeightedBackend":{"delete":[6,2,1,""],backends:[6,2,1,""],created_at:[6,2,1,""],description:[6,2,1,""],id:[6,2,1,""],metadata:[6,2,1,""],update:[6,2,1,""],uri:[6,2,1,""]},"ngrok.datatypes.WeightedBackendList":{backends:[6,2,1,""],next_page_uri:[6,2,1,""],uri:[6,2,1,""]},"ngrok.services":{APIKeysClient:[2,1,1,""],AbuseReportsClient:[0,1,1,""],AgentIngressesClient:[1,1,1,""],CertificateAuthoritiesClient:[3,1,1,""],CredentialsClient:[5,1,1,""],EdgeRouteBackendModuleClient:[7,1,1,""],EdgeRouteCircuitBreakerModuleClient:[8,1,1,""],EdgeRouteCompressionModuleClient:[9,1,1,""],EdgeRouteIPRestrictionModuleClient:[10,1,1,""],EdgeRouteOAuthModuleClient:[11,1,1,""],EdgeRouteOIDCModuleClient:[12,1,1,""],EdgeRouteRequestHeadersModuleClient:[13,1,1,""],EdgeRouteResponseHeadersModuleClient:[14,1,1,""],EdgeRouteSAMLModuleClient:[15,1,1,""],EdgeRouteWebhookVerificationModuleClient:[16,1,1,""],EdgeRouteWebsocketTCPConverterModuleClient:[17,1,1,""],EdgesHTTPSClient:[18,1,1,""],EdgesHTTPSRoutesClient:[19,1,1,""],EdgesTCPClient:[20,1,1,""],EdgesTLSClient:[21,1,1,""],EndpointsClient:[22,1,1,""],EventDestinationsClient:[24,1,1,""],EventSourcesClient:[25,1,1,""],EventSubscriptionsClient:[26,1,1,""],FailoverBackendsClient:[27,1,1,""],HTTPResponseBackendsClient:[28,1,1,""],HTTPSEdgeMutualTLSModuleClient:[29,1,1,""],HTTPSEdgeTLSTerminationModuleClient:[30,1,1,""],IPPoliciesClient:[32,1,1,""],IPPolicyRulesClient:[33,1,1,""],IPRestrictionsClient:[34,1,1,""],ReservedAddrsClient:[35,1,1,""],ReservedDomainsClient:[36,1,1,""],SSHCertificateAuthoritiesClient:[37,1,1,""],SSHCredentialsClient:[38,1,1,""],SSHHostCertificatesClient:[39,1,1,""],SSHUserCertificatesClient:[40,1,1,""],TCPEdgeBackendModuleClient:[41,1,1,""],TCPEdgeIPRestrictionModuleClient:[42,1,1,""],TLSCertificatesClient:[43,1,1,""],TLSEdgeBackendModuleClient:[44,1,1,""],TLSEdgeIPRestrictionModuleClient:[45,1,1,""],TLSEdgeMutualTLSModuleClient:[46,1,1,""],TLSEdgeTLSTerminationModuleClient:[47,1,1,""],TunnelGroupBackendsClient:[48,1,1,""],TunnelSessionsClient:[49,1,1,""],TunnelsClient:[50,1,1,""],WeightedBackendsClient:[51,1,1,""]},"ngrok.services.APIKeysClient":{"delete":[2,2,1,""],create:[2,2,1,""],get:[2,2,1,""],list:[2,2,1,""],update:[2,2,1,""]},"ngrok.services.AbuseReportsClient":{create:[0,2,1,""],get:[0,2,1,""]},"ngrok.services.AgentIngressesClient":{"delete":[1,2,1,""],create:[1,2,1,""],get:[1,2,1,""],list:[1,2,1,""],update:[1,2,1,""]},"ngrok.services.CertificateAuthoritiesClient":{"delete":[3,2,1,""],create:[3,2,1,""],get:[3,2,1,""],list:[3,2,1,""],update:[3,2,1,""]},"ngrok.services.CredentialsClient":{"delete":[5,2,1,""],create:[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],update:[5,2,1,""]},"ngrok.services.EdgeRouteBackendModuleClient":{"delete":[7,2,1,""],get:[7,2,1,""],replace:[7,2,1,""]},"ngrok.services.EdgeRouteCircuitBreakerModuleClient":{"delete":[8,2,1,""],get:[8,2,1,""],replace:[8,2,1,""]},"ngrok.services.EdgeRouteCompressionModuleClient":{"delete":[9,2,1,""],get:[9,2,1,""],replace:[9,2,1,""]},"ngrok.services.EdgeRouteIPRestrictionModuleClient":{"delete":[10,2,1,""],get:[10,2,1,""],replace:[10,2,1,""]},"ngrok.services.EdgeRouteOAuthModuleClient":{"delete":[11,2,1,""],get:[11,2,1,""],replace:[11,2,1,""]},"ngrok.services.EdgeRouteOIDCModuleClient":{"delete":[12,2,1,""],get:[12,2,1,""],replace:[12,2,1,""]},"ngrok.services.EdgeRouteRequestHeadersModuleClient":{"delete":[13,2,1,""],get:[13,2,1,""],replace:[13,2,1,""]},"ngrok.services.EdgeRouteResponseHeadersModuleClient":{"delete":[14,2,1,""],get:[14,2,1,""],replace:[14,2,1,""]},"ngrok.services.EdgeRouteSAMLModuleClient":{"delete":[15,2,1,""],get:[15,2,1,""],replace:[15,2,1,""]},"ngrok.services.EdgeRouteWebhookVerificationModuleClient":{"delete":[16,2,1,""],get:[16,2,1,""],replace:[16,2,1,""]},"ngrok.services.EdgeRouteWebsocketTCPConverterModuleClient":{"delete":[17,2,1,""],get:[17,2,1,""],replace:[17,2,1,""]},"ngrok.services.EdgesHTTPSClient":{"delete":[18,2,1,""],create:[18,2,1,""],get:[18,2,1,""],list:[18,2,1,""],update:[18,2,1,""]},"ngrok.services.EdgesHTTPSRoutesClient":{"delete":[19,2,1,""],create:[19,2,1,""],get:[19,2,1,""],update:[19,2,1,""]},"ngrok.services.EdgesTCPClient":{"delete":[20,2,1,""],create:[20,2,1,""],get:[20,2,1,""],list:[20,2,1,""],update:[20,2,1,""]},"ngrok.services.EdgesTLSClient":{"delete":[21,2,1,""],create:[21,2,1,""],get:[21,2,1,""],list:[21,2,1,""],update:[21,2,1,""]},"ngrok.services.EndpointsClient":{get:[22,2,1,""],list:[22,2,1,""]},"ngrok.services.EventDestinationsClient":{"delete":[24,2,1,""],create:[24,2,1,""],get:[24,2,1,""],list:[24,2,1,""],update:[24,2,1,""]},"ngrok.services.EventSourcesClient":{"delete":[25,2,1,""],create:[25,2,1,""],get:[25,2,1,""],list:[25,2,1,""],update:[25,2,1,""]},"ngrok.services.EventSubscriptionsClient":{"delete":[26,2,1,""],create:[26,2,1,""],get:[26,2,1,""],list:[26,2,1,""],update:[26,2,1,""]},"ngrok.services.FailoverBackendsClient":{"delete":[27,2,1,""],create:[27,2,1,""],get:[27,2,1,""],list:[27,2,1,""],update:[27,2,1,""]},"ngrok.services.HTTPResponseBackendsClient":{"delete":[28,2,1,""],create:[28,2,1,""],get:[28,2,1,""],list:[28,2,1,""],update:[28,2,1,""]},"ngrok.services.HTTPSEdgeMutualTLSModuleClient":{"delete":[29,2,1,""],get:[29,2,1,""],replace:[29,2,1,""]},"ngrok.services.HTTPSEdgeTLSTerminationModuleClient":{"delete":[30,2,1,""],get:[30,2,1,""],replace:[30,2,1,""]},"ngrok.services.IPPoliciesClient":{"delete":[32,2,1,""],create:[32,2,1,""],get:[32,2,1,""],list:[32,2,1,""],update:[32,2,1,""]},"ngrok.services.IPPolicyRulesClient":{"delete":[33,2,1,""],create:[33,2,1,""],get:[33,2,1,""],list:[33,2,1,""],update:[33,2,1,""]},"ngrok.services.IPRestrictionsClient":{"delete":[34,2,1,""],create:[34,2,1,""],get:[34,2,1,""],list:[34,2,1,""],update:[34,2,1,""]},"ngrok.services.ReservedAddrsClient":{"delete":[35,2,1,""],create:[35,2,1,""],get:[35,2,1,""],list:[35,2,1,""],update:[35,2,1,""]},"ngrok.services.ReservedDomainsClient":{"delete":[36,2,1,""],create:[36,2,1,""],delete_certificate:[36,2,1,""],delete_certificate_management_policy:[36,2,1,""],get:[36,2,1,""],list:[36,2,1,""],update:[36,2,1,""]},"ngrok.services.SSHCertificateAuthoritiesClient":{"delete":[37,2,1,""],create:[37,2,1,""],get:[37,2,1,""],list:[37,2,1,""],update:[37,2,1,""]},"ngrok.services.SSHCredentialsClient":{"delete":[38,2,1,""],create:[38,2,1,""],get:[38,2,1,""],list:[38,2,1,""],update:[38,2,1,""]},"ngrok.services.SSHHostCertificatesClient":{"delete":[39,2,1,""],create:[39,2,1,""],get:[39,2,1,""],list:[39,2,1,""],update:[39,2,1,""]},"ngrok.services.SSHUserCertificatesClient":{"delete":[40,2,1,""],create:[40,2,1,""],get:[40,2,1,""],list:[40,2,1,""],update:[40,2,1,""]},"ngrok.services.TCPEdgeBackendModuleClient":{"delete":[41,2,1,""],get:[41,2,1,""],replace:[41,2,1,""]},"ngrok.services.TCPEdgeIPRestrictionModuleClient":{"delete":[42,2,1,""],get:[42,2,1,""],replace:[42,2,1,""]},"ngrok.services.TLSCertificatesClient":{"delete":[43,2,1,""],create:[43,2,1,""],get:[43,2,1,""],list:[43,2,1,""],update:[43,2,1,""]},"ngrok.services.TLSEdgeBackendModuleClient":{"delete":[44,2,1,""],get:[44,2,1,""],replace:[44,2,1,""]},"ngrok.services.TLSEdgeIPRestrictionModuleClient":{"delete":[45,2,1,""],get:[45,2,1,""],replace:[45,2,1,""]},"ngrok.services.TLSEdgeMutualTLSModuleClient":{"delete":[46,2,1,""],get:[46,2,1,""],replace:[46,2,1,""]},"ngrok.services.TLSEdgeTLSTerminationModuleClient":{"delete":[47,2,1,""],get:[47,2,1,""],replace:[47,2,1,""]},"ngrok.services.TunnelGroupBackendsClient":{"delete":[48,2,1,""],create:[48,2,1,""],get:[48,2,1,""],list:[48,2,1,""],update:[48,2,1,""]},"ngrok.services.TunnelSessionsClient":{get:[49,2,1,""],list:[49,2,1,""],restart:[49,2,1,""],stop:[49,2,1,""],update:[49,2,1,""]},"ngrok.services.TunnelsClient":{get:[50,2,1,""],list:[50,2,1,""]},"ngrok.services.WeightedBackendsClient":{"delete":[51,2,1,""],create:[51,2,1,""],get:[51,2,1,""],list:[51,2,1,""],update:[51,2,1,""]},ngrok:{Client:[4,1,1,""],Error:[23,3,1,""],NotFoundError:[23,3,1,""],datatypes:[6,0,0,"-"],services:[51,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","exception","Python exception"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:exception"},terms:{"100":6,"10000":[6,51],"128":6,"2048":37,"255":[1,2,3,5,6,18,19,20,21,24,26,32,33,34,37,38,39,40,43],"3339":[6,39,40],"404":23,"4096":[0,1,2,3,5,6,18,19,20,21,24,26,32,33,34,35,36,37,38,39,40,43],"509":6,"abstract":31,"break":49,"byte":[0,1,2,3,5,6,18,19,20,21,24,32,33,34,35,36,37,38,39,40,43],"catch":23,"char":[6,26],"class":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"default":[6,35,36,39,40],"float":6,"import":[4,31],"int":[6,23,28,37,51],"long":6,"new":[0,1,2,3,5,24,27,32,33,34,35,36,37,38,39,40,43,48,49,51],"null":[6,19,24,36],"public":[4,6,34,38,39,40],"return":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"true":[6,34],"try":[23,31],AWS:6,CAs:6,DNS:6,For:[5,6,38],IDs:26,IPs:[4,6,32,33,34],One:6,SNS:6,TLS:[3,4,6,31,36],That:31,The:[1,2,4,5,6,23,24,25,31,38,39,40,49,51],Then:4,There:[18,19,20,21],These:[6,40],__iter__:31,_acm:6,abil:[6,40],abl:6,about:[0,3,5,6,23,24,27,32,33,34,37,38,39,40,43,48,51],abus:[4,6,31],abuse_report:[0,4],abusereport:[0,6],abusereporthostnam:6,abusereportscli:[0,4],accept:[6,24],access:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],account:[0,1,2,3,4,5,6,18,20,21,22,24,26,27,32,33,34,35,36,37,38,39,40,43,48,49,50,51],acl:[5,6,38],acme_challenge_cname_target:6,action:[4,5,6,23,31,32,33,38],activ:[4,6,22],adapt:[6,19],add:[4,5,6,25],addit:[6,23,25,31,40],addr:[6,35],address:[1,4,5,6,31,38,39,40],advertis:6,after:[6,31,49],against:[6,23],agent:[4,5,6,31,34,49,50],agent_ingress:[1,4],agent_vers:6,agentingress:[1,6],agentingressescli:[1,4],agentingresslist:[1,6],all:[1,2,3,4,5,6,18,20,21,22,23,24,27,31,32,33,34,35,36,37,38,39,40,43,48,49,50,51],allow:[0,4,5,6,23,31,32,33,34,38,39,49],allow_idp_initi:6,along:[4,39],alreadi:[6,49],also:[4,6,32,43],altern:6,alwai:6,amazon:6,among:[48,51],amount:[6,49],ani:[6,23,31,32,40,49],anoth:32,anyth:24,api:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],api_kei:[2,4],apikei:[2,6],apikeylist:[2,6],apikeyscli:[2,4],app:[6,36,48],appli:[4,6,24,32,33,34],applic:[6,31],arbitrari:[0,1,2,3,5,6,18,19,20,21,23,24,26,27,28,32,33,34,35,36,37,38,39,40,43,48,51],arn:6,arrai:6,ask:6,aspect:[4,34],assert:[4,6,39],assertion_consumer_service_url:6,assign:[4,6,23,35,51],associ:[4,6,22,24,32],assum:6,attach:[3,4,6,25,32,33,34,36,43],attempt:27,attribut:[1,2,3,5,24,32,33,34,35,36,38,43],audienc:6,auth:[6,11],auth_check_interv:6,authent:[2,4,5,6,38,39,40],author:[0,4,5,6,31,39,40],authorized_group:6,authtoken:[4,5,6],autom:[4,43],automat:[4,6,36,43],avail:[0,5,6,49],awai:31,awar:49,aws_access_key_id:6,aws_secret_access_kei:6,awsauth:6,awscredenti:6,awsrol:6,back:6,backend:[4,6,19,20,21,22,31],backend_id:6,balanc:[48,51],ban:6,bar:[6,48],base:[1,6,51],base_url:4,bearer:6,becaus:[6,23],becom:[6,39,40],been:[3,4,6,49],befor:[6,49],before_id:[1,2,3,5,18,20,21,22,24,26,27,28,32,33,34,35,36,37,38,39,40,43,48,49,50,51],behalf:6,behavior:27,being:6,belong:6,best:23,between:6,bind:[5,6,38],blob:[6,40],block:23,blog:[6,19],bodi:[6,28],bool:[6,34],both:[6,33],breaker:[6,19,31],bucket:6,bundl:[6,43],ca_pem:[3,6],cach:6,calcul:51,call:[5,6,31,39,40,49],caller:[5,6,23,38,49],can:[1,2,4,5,6,27,31,32,34,35,36,37,38,40,43,49],cannot:[4,35],caus:49,caveat:6,cert:6,certfic:[3,37,39,40],certif:[4,6,31,36],certificate_author:[3,4,6],certificate_authority_id:6,certificate_id:36,certificate_management_polici:[6,36],certificate_management_statu:6,certificate_pem:[6,43],certificateauthor:[3,6],certificateauthoritiescli:[3,4],certificateauthoritylist:[3,6],certifici:6,certkei:[6,40],chain:[6,43],challeng:6,check:[6,23,49],child:[6,27,51],choos:6,chosen:[4,6,35],cidr:[4,6,31,32,33,34],circuit:[6,19,31],circuit_break:[6,19],circumst:49,client:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],client_id:6,client_secret:6,cloudwatch:6,cloudwatch_log:[6,24],cname:[4,6,36],cname_target:6,code:[6,23,28,31,49],com:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],command:[4,5,6,40,49],common:[5,6,23,38],compat:49,complet:[18,19,20,21,49],compress:[6,19,31],concaten:6,condit:[6,23],config:[4,5,24],config_metadata:6,configur:[1,4,5,6,18,19,20,21,32,36,49],connect:[1,4,5,6,27,32,34,36,39,40,49],consid:[6,39],construct:[0,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],consult:[23,31],consum:6,contact:0,contain:[0,6,24,26,36],content:[0,6,28],control:[4,6,32],convert:31,cooki:6,cookie_prefix:6,cor:6,correct:6,correspond:[4,39],could:[23,49],countri:6,cr_1kyyuneyn6xhhlqymblrj5nxkoz:31,creat:[0,1,2,3,4,5,6,18,19,20,21,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,43,48,51],created_at:6,creation:6,cred:[4,6,31],credenti:[4,6,31],credentiallist:[5,6],credentialscli:[4,5],critic:[6,40],critical_opt:[6,40],current:[6,24,34,39,40,49,50],curv:37,custom:[6,26],danger:[6,39,40],dashboard:[2,4,6,31,32,34],data:[0,1,2,3,5,6,18,19,20,21,24,27,28,32,33,34,35,36,37,38,39,40,43,48,51],datacent:[6,35,36],datatyp:31,defin:[0,1,2,3,4,5,6,18,19,20,21,22,24,27,28,32,33,34,35,36,37,38,39,40,43,48,51],definit:6,deleg:6,delet:[1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,51],delete_certif:36,delete_certificate_management_polici:36,deliv:6,deliveri:6,delivery_stream_arn:6,deni:[4,6,32,33,40],deposit:6,describ:6,descript:[1,2,3,5,6,18,19,20,21,24,26,27,28,32,33,34,35,36,37,38,39,40,43,48,51],destin:[6,26,31],destination_id:26,detach:36,detail:[0,1,2,3,5,6,23,24,25,27,31,32,33,34,35,36,37,38,39,40,43,48,49,51],direct:6,directli:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],disabl:[6,36,49],disallow:6,discoveri:6,disk:6,distinguish:23,divid:51,dns_error:6,dns_name:6,doc:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],document:23,doe:[6,36],domain:[1,4,5,6,31,38,43],done:49,down:[0,4],download:6,dump:31,durat:6,dure:6,dynam:6,each:[4,18,19,20,21,49,51],easier:23,ecdsa:[6,37],ed25519:[6,37],edg:[4,6,22,23,31,36],edge_id:[6,7,8,9,10,11,12,13,14,15,16,17,19],edge_modul:4,edge_route_backend_modul:7,edge_route_circuit_breaker_modul:8,edge_route_compression_modul:9,edge_route_ip_restriction_modul:10,edge_route_o_auth_modul:11,edge_route_oidc_modul:12,edge_route_request_headers_modul:13,edge_route_response_headers_modul:14,edge_route_saml_modul:15,edge_route_webhook_verification_modul:16,edge_route_websocket_tcp_converter_modul:17,edgeroutebackendmodulecli:7,edgeroutecircuitbreakermodulecli:8,edgeroutecompressionmodulecli:9,edgerouteiprestrictionmodulecli:10,edgerouteoauthmodulecli:11,edgerouteoidcmodulecli:12,edgerouterequestheadersmodulecli:13,edgerouteresponseheadersmodulecli:14,edgeroutesamlmodulecli:15,edgeroutewebhookverificationmodulecli:16,edgeroutewebsockettcpconvertermodulecli:17,edges_http:18,edges_https_rout:19,edges_tcp:20,edges_tl:21,edgeshttpscli:18,edgeshttpsroutescli:19,edgestcpcli:20,edgestlscli:21,either:[6,33],ellipt:37,elliptic_curv:37,els:23,email:6,email_address:6,email_domain:6,enabl:[4,6,43],encapsul:[6,23,24],encod:[6,38,43],endpoint:[4,6,24,31,32,34,49,50],endpointbackend:[6,7,41,44],endpointbackendmut:[6,7,19,20,21,41,44],endpointcircuitbreak:[6,8,19],endpointcompress:[6,9,19],endpointippolici:[6,10,42,45],endpointippolicymut:[6,10,19,20,21,42,45],endpointlist:[6,22],endpointmutualtl:[6,29,46],endpointmutualtlsmut:[6,18,21,29,46],endpointoauth:[6,11,19],endpointoauthfacebook:6,endpointoauthgithub:6,endpointoauthgoogl:6,endpointoauthmicrosoft:6,endpointoauthprovid:6,endpointoidc:[6,12,19],endpointrequesthead:[6,13,19],endpointresponsehead:[6,14,19],endpointsaml:[6,15],endpointsamlmut:[6,15,19],endpointscli:[4,22],endpointtlstermin:[6,21,30,47],endpointtlsterminationatedg:[6,18,30],endpointwebhookvalid:[6,16,19],endpointwebsockettcpconvert:[6,17,19],enforc:[4,6,34],ensur:23,entiti:6,entity_id:6,entitydescriptor:6,entri:[4,33],enumer:6,ephemer:6,equival:[5,6,38],err_ngrok_7104:23,error:6,error_cod:[6,23,31],error_threshold_percentag:6,establish:27,etc:[5,6,38],evalu:6,even:6,event:[6,31],event_destin:[4,6,24],event_sourc:[4,25],event_subscript:[4,6,26],eventdestin:[6,24],eventdestinationlist:[6,24],eventdestinationscli:[4,24],eventsourc:[6,25],eventsourcelist:[6,25],eventsourcereplac:[6,26],eventsourcescli:[4,25],eventsubscript:[6,26],eventsubscriptionlist:[6,26],eventsubscriptionscli:[4,26],eventtarget:[6,24],eventtargetcloudwatchlog:6,eventtargetfirehos:6,eventtargetkinesi:6,exact_path:[6,19],exactli:[6,24],exampl:[5,6,19,36,38],exceed:6,except:[6,31],exclus:36,exec:49,exist:[18,19,20,21],exit:49,expect:6,explain:23,explicitli:[5,6,38],expos:[4,50],express:6,extend:6,extended_key_usag:6,extens:[6,40],face:[4,34],facebook:6,fail:[6,23,31,49],failov:[6,31],failover_backend:27,failoverbackend:[6,27],failoverbackendlist:[6,27],failoverbackendscli:27,fals:[6,34],fetch:31,field:23,file:[4,5,6],firehos:[6,24],first:[2,4,6,23,27,31,43],fix:[6,28],flow:6,follow:[6,24,40,49],foo:[6,48],forc:[6,40],force_authn:6,form:6,format:[6,24,39,40],forward:[6,40],forwards_to:6,four:[6,34],from:[2,4,6,31,38],full:[6,36],futur:[5,39],gatewai:[4,38],gener:[1,2,5,6,37],geograph:[6,35,36],get:[0,1,2,3,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],giraff:31,github:[6,40],gitlab:6,given:[6,25],googl:6,group:[4,6,31,32],guarante:[6,23],handshak:6,happen:23,has:[3,4,6,32,34,49],have:[4,5,6,38,43],header:[6,19,28,31],health:6,help:6,helper:31,highli:6,holder:[6,40],host:[0,4,6,31,37,40],hostcertif:6,hostnam:[4,6,35,36,39],hostport:[4,6,18,20,21,22,23],hour:40,how:[6,24],howev:[18,19,20,21],http:[0,1,2,3,4,5,6,20,21,22,23,24,25,26,27,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],http_response_backend:28,http_status_cod:[23,31],httpresponsebackend:[6,28],httpresponsebackendlist:[6,28],httpresponsebackendscli:28,https_edg:6,https_edge_mutual_tls_modul:29,https_edge_tls_termination_modul:30,httpsedg:[6,18],httpsedgelist:[6,18],httpsedgemutualtlsmodulecli:29,httpsedgerout:[6,19],httpsedgetlsterminationmodulecli:30,human:[1,2,3,5,6,18,19,20,21,23,24,26,27,28,32,33,34,35,36,37,38,39,40,43,48,51],ident:6,identifi:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],idp:6,idp_metadata:6,ids:[6,27,51],ignor:6,implement:[6,31],inact:6,inactivity_timeout:6,includ:[3,4,5,6,23,38,39,40,49],increas:6,indic:[6,23],industri:6,inform:[3,5,6,24,26,27,31,32,33,34,37,38,39,40,43,48,51],ingress:[4,6,31,34],initi:[4,6,34],inject:6,instal:[4,5],instanc:[4,49],instead:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],instruct:49,integ:6,integr:49,intend:[6,26],intercom:6,internal_error:6,interpret:[6,40],introspect:23,invalid:[6,39,40],invok:[23,31],ip_polici:[4,6,23,31,32],ip_policy_id:[6,31,33,34],ip_policy_rul:[4,6,31,33],ip_restrict:[4,6,19,20,21,34],ippolici:[6,32],ippoliciescli:[4,32],ippolicylist:[6,32],ippolicyrul:[6,33],ippolicyrulelist:[6,33],ippolicyrulescli:[4,33],iprestrict:[6,34],iprestrictionlist:[6,34],iprestrictionscli:[4,34],ips:6,ipv4:[4,6,33],ipv6:[4,6,33],isn:6,issu:[6,34,39,40,49],issued_at:6,issuer:6,issuer_common_nam:6,its:[4,6,37,39,51],itself:[2,4,31,49],job:6,json:[6,24,31],kei:[3,4,6,31,37,38,39,40,43],key_siz:37,key_typ:6,key_usag:6,keypair:[6,38],kind:23,kinesi:[6,24],label:[6,48],latest:49,lead:[5,6,38],leaf:[6,43],least:49,leav:[6,24],letsencrypt:6,level:6,librari:[4,31],like:[6,24,31,36],limit:[1,2,3,5,6,18,20,21,22,24,26,27,28,32,33,34,35,36,37,38,39,40,43,48,49,50,51],link:43,list:[0,1,2,3,4,5,6,18,20,21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,43,48,49,50,51],listen:[4,35,36],local:6,locat:6,log:[4,6,34,40],log_group_arn:6,login:6,logout:6,longer:6,low:6,machin:[1,3,5,6,18,19,20,21,24,26,27,28,32,33,34,35,36,37,38,39,40,43,48,51],mai:[2,4,5,6,23,36,38,40,43],major:49,make:[4,6,23,33,34,49],manag:[2,4,6,36],mani:6,manual:49,map:[6,28,40,48,51],master:[6,40],match:[4,5,6,19,38,43,48],match_typ:[6,19],max:[0,1,2,3,5,6,18,19,20,21,24,26,32,33,34,35,36,37,38,39,40,43],maximum:6,maximum_dur:6,member:6,messag:[6,23,31],metadata:[0,1,2,3,5,6,18,19,20,21,24,26,27,28,31,32,33,34,35,36,37,38,39,40,43,48,51],metadata_url:6,method:23,metric:6,microsoft:6,min_vers:6,minimum:6,modifi:[18,19,20,21],modul:[3,4,6,18,19,20,21,31,32],more:[4,6,40,49],most:6,msg:6,mtl:[3,4],multipl:[5,6,38],must:[4,5,6,24,40,49],mutual:[3,4,31,36],mutual_tl:[6,18,21],nake:23,name:[1,6,36],nameid:6,nameid_format:6,necessari:[6,31],need:[2,4,5,6,31],network:[6,23],never:49,next:[6,27],next_page_uri:6,ngrok:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],non:6,none:[1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],not_aft:6,not_befor:6,notabl:49,notat:[6,33],notfounderror:23,ns_target:6,num_bucket:6,number:[6,40],oasi:6,oauth:[6,19,31],object:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],offici:31,offlin:27,oidc:[6,19,31],one:[4,6,24,27,31,37,39,49],onli:[0,3,4,5,6,22,24,34,38,40],onlin:[6,31,48,49,50],open:[5,6,38,40],openid:6,openssh:[6,39,40],oper:[6,23,49],operation_id:23,operationid:23,option:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],options_passthrough:6,order:[6,27],org:6,organ:6,organiz:6,other:[3,4,6,23,37],otherwis:6,our:[0,23],out:6,output:[6,24],over:6,own:[1,2,4,6,36],packag:31,page:[2,4,6],pagerduti:6,pair:[4,6,37,43],paramet:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],pars:6,partially_process:6,pass:6,path_prefix:[6,19],pem:[3,6,38,43],pend:6,percentag:[6,51],period:6,perman:6,permiss:[6,40],permit:[5,6,38,40],persist:6,pip:31,place:[4,6,34],platform:49,pleas:49,point:[4,6,23,36],polici:[4,6,31,34,36],port:[4,6,23,35,40],portabl:[6,40],portion:6,predefin:[6,40],prefer:6,prefix:6,present:[3,4,6,40],princip:[6,39,40],print:[4,31],privat:[3,4,6,37,39,43],private_key_pem:43,private_key_typ:[6,37],process:[6,49],prompt:6,prop:6,properti:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],proportion:51,proto:6,protocol:[6,40],provid:[4,6,22,50],provinc:6,provis:[2,4,6,43],provisioning_job:6,pty:[6,40],pub:6,public_kei:[6,38,39,40],public_url:6,pull:6,purpos:[6,32,40],python:31,qualifi:6,queri:[4,22],rais:23,rang:[4,6,32,33],raw:[3,6],readabl:[1,2,3,5,6,18,19,20,21,23,24,26,27,28,32,33,34,35,36,37,38,39,40,43,48,51],reauthent:6,recent:6,recheck:6,recommend:6,reconnect:49,record:[4,6,36],redirect:6,ref:6,refer:6,referenc:[6,24,27,32,51],refresh:6,region:[1,6,35,36],region_domain:6,relat:6,relayst:6,reli:6,remain:32,remov:[6,25],renew:6,renews_at:6,replac:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,29,30,41,42,44,45,46,47],report:[4,6,31],repres:[4,49],request:[0,4,6,19,23,31,34,49],request_head:[6,19],request_signing_certificate_pem:6,requir:6,reserv:[4,6,31],reserved_addr:[4,6,35],reserved_domain:[4,6,36],reservedaddr:[6,35],reservedaddrlist:[6,35],reservedaddrscli:[4,35],reserveddomain:[6,36],reserveddomaincertjob:6,reserveddomaincertpolici:[6,36],reserveddomaincertstatu:6,reserveddomainlist:[6,36],reserveddomainscli:[4,36],resourc:[0,1,2,3,4,5,6,18,20,21,22,24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],respons:[0,5,6,19,23,31],response_head:[6,19],rest:[6,24],restart:49,restrict:[4,5,6,19,31,32,38],retain:6,retri:[6,23],retries_at:6,retriev:6,reusabl:[4,32],revers:[4,49,50],review:0,revok:6,rfc:[6,39,40],robustli:23,role:6,role_arn:6,roll:6,rolling_window:6,root:4,rout:[6,31],rsa:[6,37],rule:[4,5,6,31,32,38],run:[4,6,49,50],runtimeerror:23,safe:6,same:6,saml:[6,19,31],san:6,save:5,scope:6,second:[6,49],secret:6,section:31,secur:5,see:[6,40,43],selector:[6,19,48],send:[6,24],sendgrid:6,sent:[6,27],separ:23,sequenc:[0,5,6,18,20,21,26,27,34,38,39,40],serial:[6,24],serial_numb:6,serv:[4,6,18,20,21,22,39],server:[4,6,23,36,39,40],server_nam:31,servic:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],session:[4,5,6,31,32,50],set:[1,6,34],shopifi:6,should:[6,26,49],sign:[3,4,6,37,39,40],simpl:23,singl:[6,31],single_logout_url:6,size:37,slack:6,slug:6,some:[23,31,49],someth:23,sourc:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],spec:[6,40],specif:[4,6,23,31,34],specifi:[4,5,6,18,19,20,21,33,36,38,39,40],ssh:[4,6,31,49,50],ssh_certificate_author:[4,6,37],ssh_certificate_authority_id:[6,39,40],ssh_credenti:[4,6,38],ssh_host_certif:[4,6,39],ssh_user_certif:[4,6,40],sshcertificateauthor:[6,37],sshcertificateauthoritiescli:[4,37],sshcertificateauthoritylist:[6,37],sshcredenti:[6,38],sshcredentiallist:[6,38],sshcredentialscli:[4,38],sshd_config:6,sshhostcertif:[6,39],sshhostcertificatelist:[6,39],sshhostcertificatescli:[4,39],sshusercertif:[6,40],sshusercertificatelist:[6,40],sshusercertificatescli:[4,40],start:[4,5,6,32,34,38,49],started_at:6,state:6,statist:6,statu:[0,6,22,23,28,31,49,50],status:6,status_cod:[6,28],still:[6,24,49],stop:49,str:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],stream:[6,24],stream_arn:6,string:[6,23],stripe:6,subclass:23,subdomain:[6,36],subject:6,subject_alternative_nam:6,subject_common_nam:6,subject_countri:6,subject_loc:6,subject_organ:6,subject_organizational_unit:6,subject_provinc:6,submit:[0,4],subnet:31,subscript:[6,24,25,31],subscription_id:25,subset:6,success:27,successfulli:49,suffix:[5,6,38],sum:51,suppli:[6,26],support:[6,33,34,49],suspect:[0,6],system:[0,6,23],take:[0,4,6,23],taken:6,target:[6,24,36],tcp:[4,6,19,31,35],tcp_addr:6,tcp_edg:6,tcp_edge_backend_modul:41,tcp_edge_ip_restriction_modul:42,tcpedg:[6,20],tcpedgebackendmodulecli:41,tcpedgeiprestrictionmodulecli:42,tcpedgelist:[6,20],team:[0,6],temporari:6,term:[0,4,6],termin:[4,6,31,40,43],terminate_at:6,thei:[4,5,6,32,35,43],them:6,thi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],threshold:6,through:6,thrown:23,thu:[3,4],time:[5,6,38,39,40,49],timestamp:6,tls:[4,6,21,29,30,36,43,44,45,46,47],tls_certif:[4,6,43],tls_edg:6,tls_edge_backend_modul:44,tls_edge_ip_restriction_modul:45,tls_edge_mutual_tls_modul:46,tls_edge_tls_termination_modul:47,tls_termin:[6,18,21],tlscertif:[6,43],tlscertificatelist:[6,43],tlscertificatesan:6,tlscertificatescli:[4,43],tlsedg:[6,21],tlsedgebackendmodulecli:44,tlsedgeiprestrictionmodulecli:45,tlsedgelist:[6,21],tlsedgemutualtlsmodulecli:46,tlsedgetlsterminationmodulecli:47,togeth:6,token:[5,6,38],top:6,trace:23,traffic:[4,6,27,31,32,34,35,36,39,43,48,51],transpar:31,transport:6,treat:32,trigger:[6,25,26],trip:6,tripped_dur:6,trust:[4,39,40],tunabl:6,tune:6,tunnel:[4,6,22,31,32,38],tunnel_group_backend:48,tunnel_sess:[4,6,49],tunnelgroup:[6,48],tunnelgroupbackend:[6,48],tunnelgroupbackendlist:[6,48],tunnelgroupbackendscli:48,tunnellist:[6,50],tunnelscli:[4,50],tunnelsess:[6,49],tunnelsessionlist:[6,49],tunnelsessionscli:[4,49],twilio:6,two:[6,40],type:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],unban:6,undefin:23,underli:6,understand:[6,40],unexpect:23,uniqu:[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26],unit:6,unspecifi:[5,6,38,39,40],until:[4,24,27,32,43],unus:[4,43],updat:[1,2,3,5,6,18,19,20,21,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,43,48,49,51],updated_at:6,upload:[3,6,36,38,43],upstream:6,uri:6,url:[0,4,6,23],urn:6,use:[1,2,4,5,6,18,19,20,21,23,36,37,38],used:[1,2,3,4,5,6,18,19,20,21,22,26,32,34,35,36,37,38,39,40,43],user:[0,1,2,3,4,5,6,18,19,20,21,24,27,28,31,32,33,34,35,36,37,38,39,43,48,51],usernam:[6,40],uses:[2,6],using:[6,49],valid:[3,4,6,19,23,31,39,40],valid_aft:[6,39,40],valid_befor:[6,39,40],valid_until:[6,39,40],valu:[6,18,19,20,21,24,34,39,40],verif:[6,19,31],verifi:[3,4],version:[6,49],via:[1,4,18,19,20,21,32,38],violat:[0,4],visit:6,volum:6,volume_threshold:6,wai:[18,19,20,21],wait:[6,49],want:6,warn:[6,34],watch:[6,48],webhook:[6,19,31],webhook_verif:[6,19],websocket:[6,19,31],websocket_tcp_convert:[6,19],weight:[6,31],weighted_backend:51,weightedbackend:[6,51],weightedbackendlist:[6,51],weightedbackendscli:51,well:[6,31],what:[2,4,5,6,18,19,20,21,22,34,35,36,38],when:[4,6,23,24,31,37,39,40,49],whenev:6,where:[6,24],whether:6,which:[0,4,5,6,22,25,26,31,34,38,43,49],who:[4,5,6,38,39],why:[6,23],wildcard:[5,6,38],window:[6,49],wish:49,within:27,without:[23,31],work:31,would:[5,6,24,38],x11:[6,40],x509:[3,4,43],xero:6,xml:6,year:39,yet:49,yml:[4,5],you:[0,1,2,4,5,6,23,24,31,32,36,38,43,49],your:[2,4,5,6,24,31,34,38,49],yourself:5,zero:32},titles:["Abuse Reports","Agent Ingresses","API Keys","Certificate Authorities","Client","Tunnel Credentials","Datatypes","HTTPS Edge Route Backend Module","HTTPS Edge Route Circuit Breaker Module","HTTPS Edge Route Compression Module","HTTPS Edge Route IP Restriction Module","HTTPS Edge Route OAuth Module","HTTPS Edge Route OIDC Module","HTTPS Edge Route Request Headers Module","HTTPS Edge Route Response Headers Module","HTTPS Edge Route SAML Module","HTTPS Edge Route Webhook Verification Module","HTTPS Edge Route Websocket TCP Converter Module","HTTPS Edges","HTTPS Edge Routes","TCP Edges","TLS Edges","Endpoints","Errors","Event Destinations","Event Sources","Event Subscriptions","Failover Backends","HTTP Response Backends","HTTPS Edge Mutual TLS Module","HTTPS Edge TLS Termination Module","ngrok-api","IP Policies","IP Policy Rules","IP Restrictions","Reserved Addresses","Reserved Domains","SSH Certificate Authorities","SSH Credentials","SSH Host Certificates","SSH User Certificates","TCP Edge Backend Module","TCP Edge IP Restriction Module","TLS Certificates","TLS Edge Backend Module","TLS Edge IP Restriction Module","TLS Edge Mutual TLS Module","TLS Edge TLS Termination Module","Tunnel Group Backends","Tunnel Sessions","Tunnels","Weighted Backends"],titleterms:{"class":23,TLS:[21,29,30,43,44,45,46,47],abus:0,address:35,agent:1,api:[2,31],author:[3,37],automat:31,backend:[7,27,28,41,44,48,51],breaker:8,certif:[3,37,39,40,43],circuit:8,client:4,compress:9,convert:17,credenti:[5,38],datatyp:6,destin:24,domain:36,edg:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,29,30,41,42,44,45,46,47],endpoint:22,error:[23,31],event:[24,25,26],exampl:31,except:23,failov:27,get:31,group:48,handl:[23,31],header:[13,14],host:39,http:[7,8,9,10,11,12,13,14,15,16,17,18,19,28,29,30],ingress:1,instal:31,instanc:31,kei:2,method:31,modul:[7,8,9,10,11,12,13,14,15,16,17,29,30,41,42,44,45,46,47],mutual:[29,46],ngrok:31,oauth:11,oidc:12,page:31,polici:[32,33],quickstart:31,refer:31,report:0,request:13,reserv:[35,36],respons:[14,28],restrict:[10,34,42,45],rout:[7,8,9,10,11,12,13,14,15,16,17,19],rule:33,saml:15,servic:31,session:49,sourc:25,ssh:[37,38,39,40],start:31,subscript:26,tcp:[17,20,41,42],termin:[30,47],tunnel:[5,48,49,50],user:40,verif:16,webhook:16,websocket:17,weight:51}}) \ No newline at end of file diff --git a/ngrok/client.py b/ngrok/client.py index 292dd06..6fe6182 100644 --- a/ngrok/client.py +++ b/ngrok/client.py @@ -40,7 +40,7 @@ def certificate_authorities(self) -> CertificateAuthoritiesClient: def credentials(self) -> CredentialsClient: """Tunnel Credentials are ngrok agent authtokens. They authorize the ngrok agent to connect the ngrok service as your account. They are installed with - the ``ngrok authtoken`` command or by specifying it in the ``ngrok.yml`` + the ``ngrok config add-authtoken`` command or by specifying it in the ``ngrok.yml`` configuration file with the ``authtoken`` property.""" return CredentialsClient(self) diff --git a/ngrok/services.py b/ngrok/services.py index d8ec5ab..0bf4ce1 100644 --- a/ngrok/services.py +++ b/ngrok/services.py @@ -858,7 +858,7 @@ def update( class CredentialsClient(object): """Tunnel Credentials are ngrok agent authtokens. They authorize the ngrok agent to connect the ngrok service as your account. They are installed with - the ``ngrok authtoken`` command or by specifying it in the ``ngrok.yml`` + the ``ngrok config add-authtoken`` command or by specifying it in the ``ngrok.yml`` configuration file with the ``authtoken`` property.""" def __init__(self, client): @@ -3277,9 +3277,9 @@ def create( self, cidr: str, ip_policy_id: str, + action: str, description: str = "", metadata: str = "", - action: str = None, ) -> IPPolicyRule: """Create a new IP policy rule attached to an IP Policy. diff --git a/setup.py b/setup.py index 6491d14..c409ab1 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ def read_file(filename): setup( name="ngrok-api", - version="0.8.0", + version="0.9.0", description="ngrok HTTP API client library", long_description=read_file("README.md"), long_description_content_type="text/markdown", diff --git a/tests/test_ngrok.py b/tests/test_ngrok.py index bc23137..c591aef 100644 --- a/tests/test_ngrok.py +++ b/tests/test_ngrok.py @@ -1,5 +1,6 @@ import json import os +import unittest from typing import Optional, Mapping, Union, Dict, Any import ngrok @@ -14,11 +15,93 @@ def setup_api_client(): c.http_client = RecordingHTTPClient(c.http_client.api_key, c.http_client.base_url) return c, mock +class TestQuickstartExamples(unittest.TestCase): + def test_quickstart_examples(self): + c, mock = setup_api_client() + + # list all online tunnels + mock.returns(mock_tunnels_list) + tunnels = c.tunnels.list() + for t in tunnels: + pass + assert len(tunnels.tunnels) == 1 + + # create an ip policy the allows traffic from some subnets + mock.returns(mock_ip_policy) + policy = c.ip_policies.create() + for cidr in ["24.0.0.0/8", "12.0.0.0/8"]: + mock.returns(mock_ip_policy_rule) + rule = c.ip_policy_rules.create(cidr=cidr, ip_policy_id=policy.id, action="allow") + assert rule.action == "allow" + + # list all ip policies, transparently fetching additional + # pages for you if necessary + mock.returns(mock_ip_policy_rules_list) + for p in c.ip_policies.list(): + pass + + # create a credential + mock.returns(mock_cred) + cred = c.credentials.create() + assert cred.metadata == "" + + # get a credential + mock.returns(mock_cred) + cred = c.credentials.get("cr_27nRxf2wJGXDKuTjMkUpaWMoN1B") + assert cred.metadata == "" + + # update the metadata of a credential + mock.returns(mock_updated_cred) + cred.update(metadata=json.dumps({ + "foo": "bar", + })) + mock.returns(mock_updated_cred) + cred = c.credentials.get("cr_27nRxf2wJGXDKuTjMkUpaWMoN1B") + assert cred.metadata == "{foo:bar}" + + # or do it in single call + mock.returns(mock_updated_cred) + cred = c.credentials.update("cr_27nRxf2wJGXDKuTjMkUpaWMoN1B", metadata=json.dumps({ + "foo": "bar", + })) + assert cred.metadata == "{foo:bar}" + + with self.assertRaises(ngrok.Error): + mock.returns(mock_ip_policy) + policy = c.ip_policies.create() + mock.returns(ngrok.Error(error_code=404, message="error", http_status_code=404, details=None)) + c.ip_policy_rules.create(cidr="24.0.0.0/8", ip_policy_id=policy.id, action="not a valid action") + def test_domains(): c, mock = setup_api_client() + mock.returns(mock_domains_list) c.reserved_domains.list() + mock.returns(mock_reserved_domain) + domain = c.reserved_domains.create(name="foo") + mock.returns(mock_reserved_domain) + domain = c.reserved_domains.get(domain.id) + assert domain.domain == "foo.ngrok.io.lan" + + mock.returns(None) + domain.delete() + +def test_addrs(): + c, mock = setup_api_client() + + mock.returns(mock_addrs_list) + c.reserved_domains.list() + + mock.returns(mock_reserved_addr) + addr = c.reserved_addrs.create() + mock.returns(mock_reserved_addr) + addr = c.reserved_addrs.get(addr.id) + assert addr.addr == "1.tcp.ngrok.io.lan:20020" + + mock.returns(None) + addr.delete() + def test_certificate_authorities(): c, mock = setup_api_client() @@ -65,6 +148,41 @@ def test_certificate_authorities(): else: assert False +def test_abuse_reports(): + c, mock = setup_api_client() + + mock.returns(mock_abuse_report) + report = c.abuse_reports.create(urls=["https://foo.ngrok.io:443"]) + assert report.hostnames[0].status == "BANNED" + + mock.returns(mock_abuse_report) + report = c.abuse_reports.get(report.id) + assert report.hostnames[0].status == "BANNED" + +def test_agent_ingress(): + c, mock = setup_api_client() + + mock.returns(mock_agent_ingress) + ingress = c.agent_ingresses.create(domain="foo") + mock.returns(mock_agent_ingress) + ingress = c.agent_ingresses.get(ingress.id) + assert ingress.domain == "foo" + + mock.returns(None) + ingress.delete() + +def test_api_keys(): + c, mock = setup_api_client() + + mock.returns(mock_api_key) + key = c.api_keys.create() + mock.returns(mock_api_key) + key = c.api_keys.get(key.id) + assert key.id == "ak_27njujFZdCVl6tXApS7OkSm9Eab" + + mock.returns(None) + key.delete() + def test_event_subscriptions(): c, mock = setup_api_client() @@ -420,6 +538,219 @@ def test_https_edges(): } """ +mock_addrs_list = """ +{ + "next_page_uri": null, + "reserved_addrs": [ + { + "addr": "1.tcp.ngrok.io.lan:20020", + "created_at": "2022-04-14T19:03:19Z", + "description": "", + "endpoint_configuration": null, + "id": "ra_27kiEWP6f5f987k0yUlcPE46GZf", + "metadata": "", + "region": "us", + "uri": "https://api.ngrok.com/reserved_addrs/ra_27kiEWP6f5f987k0yUlcPE46GZf" + } + ], + "uri": "https://api.ngrok.com/reserved_addrs" +} +""" + +mock_tunnels_list = """ +{ + "next_page_uri": null, + "tunnels": [ + { + "endpoint": { + "id": "ep_27nRDPONKvdRWvyUOjJhzllpbhn", + "uri": "https://api.ngrok.com/endpoints/ep_27nRDPONKvdRWvyUOjJhzllpbhn" + }, + "forwards_to": "http://localhost:8080", + "id": "tn_27nRDPONKvdRWvyUOjJhzllpbhn", + "metadata": "", + "proto": "https", + "public_url": "https://853095c920d0.ngrok.io", + "region": "us", + "started_at": "2022-04-14T16:29:02Z", + "tunnel_session": { + "id": "ts_27nRDLESs1giNY2HHMNPyMNuPh5", + "uri": "https://api.ngrok.com/tunnel_sessions/ts_27nRDLESs1giNY2HHMNPyMNuPh5" + } + } + ], + "uri": "https://api.ngrok.com.lan/tunnels" +} +""" + +mock_ip_policy = """ +{ + "created_at": "2022-04-14T16:30:32Z", + "description": "", + "id": "ipp_27nROi2mDmPHZ92203L5aJgCefH", + "metadata": "", + "uri": "https://api.ngrok.com/ip_policies/ipp_27nROi2mDmPHZ92203L5aJgCefH" +} +""" + +mock_ip_policy_rule = """ +{ + "action": "allow", + "cidr": "24.0.0.0/8", + "created_at": "2022-04-14T16:32:47Z", + "description": "", + "id": "ipr_27nRfcc4p85cMaHmApkVxpQDOJo", + "ip_policy": { + "id": "ipp_27nROi2mDmPHZ92203L5aJgCefH", + "uri": "https://api.ngrok.com/ip_policies/ipp_27nROi2mDmPHZ92203L5aJgCefH" + }, + "metadata": "", + "uri": "https://api.ngrok.com/ip_policy_rules/ipr_27nRfcc4p85cMaHmApkVxpQDOJo" +} +""" + +mock_ip_policy_rules_list = """ +{ + "ip_policy_rules": [ + { + "action": "allow", + "cidr": "12.0.0.0/8", + "created_at": "2022-04-14T16:33:58Z", + "description": "", + "id": "ipr_27nRoYzr2pPCWdwzZIP6husmX6C", + "ip_policy": { + "id": "ipp_27nROi2mDmPHZ92203L5aJgCefH", + "uri": "https://api.ngrok.com/ip_policies/ipp_27nROi2mDmPHZ92203L5aJgCefH" + }, + "metadata": "", + "uri": "https://api.ngrok.com/ip_policy_rules/ipr_27nRoYzr2pPCWdwzZIP6husmX6C" + }, + { + "action": "allow", + "cidr": "24.0.0.0/8", + "created_at": "2022-04-14T16:32:47Z", + "description": "", + "id": "ipr_27nRfcc4p85cMaHmApkVxpQDOJo", + "ip_policy": { + "id": "ipp_27nROi2mDmPHZ92203L5aJgCefH", + "uri": "https://api.ngrok.com/ip_policies/ipp_27nROi2mDmPHZ92203L5aJgCefH" + }, + "metadata": "", + "uri": "https://api.ngrok.com/ip_policy_rules/ipr_27nRfcc4p85cMaHmApkVxpQDOJo" + } + ], + "next_page_uri": null, + "uri": "https://api.ngrok.com/ip_policy_rules" +} +""" + +mock_cred = """ +{ + "acl": [], + "created_at": "2022-04-14T16:35:11Z", + "description": "", + "id": "cr_27nRxf2wJGXDKuTjMkUpaWMoN1B", + "metadata": "", + "token": "27nRxf2wJGXDKuTjMkUpaWMoN1B_7pUKA1z533U7sGpshjCkU", + "uri": "https://api.ngrok.com/credentials/cr_27nRxf2wJGXDKuTjMkUpaWMoN1B" +} +""" + +mock_updated_cred = """ +{ + "acl": [], + "created_at": "2022-04-14T16:35:11Z", + "description": "", + "id": "cr_27nRxf2wJGXDKuTjMkUpaWMoN1B", + "metadata": "{foo:bar}", + "token": "27nRxf2wJGXDKuTjMkUpaWMoN1B_7pUKA1z533U7sGpshjCkU", + "uri": "https://api.ngrok.com/credentials/cr_27nRxf2wJGXDKuTjMkUpaWMoN1B" +} +""" + +mock_abuse_report = """ +{ + "created_at": "2022-04-14T17:40:52Z", + "hostnames": [ + { + "hostname": "foo.ngrok.io:443", + "status": "BANNED" + } + ], + "id": "abrp_27nZwwT46wPkmfFfysoE7LpVjbR", + "metadata": "", + "status": "PROCESSED", + "uri": "https://api.ngrok.com/abuse_reports/abrp_27nZwwT46wPkmfFfysoE7LpVjbR", + "urls": [ + "https://foo.ngrok.io:443" + ] +} +""" + +mock_agent_ingress = """ +{ + "created_at": "2022-04-14T18:59:38Z", + "description": "", + "domain": "foo", + "id": "agin_27njWu1U9FR823pTuRTh8mgrY3h", + "metadata": "", + "ns_targets": [ + "1.kube-dns.kube-system.svc.cluster.local.", + "2.kube-dns.kube-system.svc.cluster.local.", + "3.kube-dns.kube-system.svc.cluster.local.", + "4.kube-dns.kube-system.svc.cluster.local." + ], + "region_domains": [ + "tunnel.us.foo" + ], + "uri": "https://api.ngrok.com.lan/agent_ingresses/agin_27njWu1U9FR823pTuRTh8mgrY3h" +} + +""" + +mock_api_key = """ +{ + "created_at": "2022-04-14T19:02:48Z", + "description": "", + "id": "ak_27njujFZdCVl6tXApS7OkSm9Eab", + "metadata": "", + "token": "27njujFZdCVl6tXApS7OkSm9Eab_7MufErgFn7SeihmP7v9mn", + "uri": "https://api.ngrok.com/api_keys/ak_27njujFZdCVl6tXApS7OkSm9Eab" +} +""" + +mock_reserved_addr = """ +{ + "addr": "1.tcp.ngrok.io.lan:20020", + "created_at": "2022-04-14T19:03:19Z", + "description": "", + "endpoint_configuration": null, + "id": "ra_27kiEWP6f5f987k0yUlcPE46GZf", + "metadata": "", + "region": "us", + "uri": "https://api.ngrok.com/reserved_addrs/ra_27kiEWP6f5f987k0yUlcPE46GZf" +} +""" + +mock_reserved_domain = """ +{ + "acme_challenge_cname_target": null, + "certificate": null, + "certificate_management_policy": null, + "certificate_management_status": null, + "cname_target": null, + "created_at": "2022-04-14T19:04:14Z", + "description": "", + "domain": "foo.ngrok.io.lan", + "http_endpoint_configuration": null, + "https_endpoint_configuration": null, + "id": "rd_27nk5WLm85y0wqi13XNLobu3Xff", + "metadata": "", + "region": "us", + "uri": "https://api.ngrok.com/reserved_domains/rd_27nk5WLm85y0wqi13XNLobu3Xff" +} +""" + class RecordingHTTPClient(ngrok.http_client.HTTPClient): """ prints all responses received to stdout, useful for creating mocked outputs """ def do(self, method: str, path: str, query_params: Mapping[str, str] = None, payload: Mapping[str, Any] = None) -> Optional[Dict[str, Any]]: