{
  "service": "ngrok",
  "displayName": "ngrok",
  "categories": [
    "Developer Tools"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "ngrok_api_key",
      "description": "ngrok Admin API key used with the Authorization Bearer header. Create your first key on the ngrok Dashboard API Keys page: https://dashboard.ngrok.com/api/keys.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://ngrok.com",
  "actions": [
    {
      "id": "ngrok.get_endpoint",
      "service": "ngrok",
      "name": "get_endpoint",
      "description": "Fetch one ngrok endpoint by ID and return the upstream endpoint object.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "endpoint_id": {
            "type": "string",
            "minLength": 1,
            "description": "Unique identifier of the ngrok endpoint."
          }
        },
        "additionalProperties": false,
        "required": [
          "endpoint_id"
        ],
        "description": "Input payload for fetching one ngrok endpoint by ID."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique endpoint resource identifier."
          },
          "created_at": {
            "type": "string",
            "description": "Timestamp in RFC 3339 format."
          },
          "updated_at": {
            "type": "string",
            "description": "Timestamp in RFC 3339 format."
          },
          "type": {
            "type": "string",
            "description": "Endpoint type returned by ngrok, such as edge or cloud."
          },
          "proto": {
            "type": "string",
            "description": "Protocol served by this endpoint."
          },
          "public_url": {
            "type": "string",
            "description": "Public URL currently serving this endpoint."
          },
          "url": {
            "type": "string",
            "description": "API URL or frontend URL returned by ngrok for this endpoint."
          },
          "description": {
            "type": "string",
            "description": "Human-readable description configured on this endpoint."
          },
          "metadata": {
            "type": "string",
            "description": "User-defined metadata attached to this endpoint."
          },
          "host": {
            "type": "string",
            "description": "Host portion returned by ngrok for this endpoint."
          },
          "name": {
            "type": "string",
            "description": "User-defined endpoint name returned by ngrok."
          },
          "port": {
            "type": "integer",
            "description": "Port returned by ngrok for this endpoint."
          },
          "region": {
            "type": "string",
            "description": "Region identifier returned by ngrok for this endpoint."
          },
          "scheme": {
            "type": "string",
            "description": "Scheme returned by ngrok for this endpoint."
          },
          "bindings": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "Binding value returned by ngrok."
            },
            "description": "Bindings configured on this endpoint."
          },
          "hostport": {
            "type": "string",
            "description": "Hostport returned by ngrok for this endpoint."
          },
          "tcp_addr": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "ngrok resource identifier."
              },
              "uri": {
                "type": "string",
                "description": "Canonical ngrok API URI for this resource."
              }
            },
            "additionalProperties": true,
            "description": "Reference to another ngrok API resource."
          },
          "principal": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "ngrok resource identifier."
              },
              "uri": {
                "type": "string",
                "description": "Canonical ngrok API URI for this resource."
              }
            },
            "additionalProperties": true,
            "description": "Reference to another ngrok API resource."
          },
          "edge": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "ngrok resource identifier."
              },
              "uri": {
                "type": "string",
                "description": "Canonical ngrok API URI for this resource."
              }
            },
            "additionalProperties": true,
            "description": "Reference to another ngrok API resource."
          },
          "domain": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "ngrok resource identifier."
              },
              "uri": {
                "type": "string",
                "description": "Canonical ngrok API URI for this resource."
              }
            },
            "additionalProperties": true,
            "description": "Reference to another ngrok API resource."
          },
          "tunnel": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "ngrok resource identifier."
              },
              "uri": {
                "type": "string",
                "description": "Canonical ngrok API URI for this resource."
              }
            },
            "additionalProperties": true,
            "description": "Reference to another ngrok API resource."
          },
          "tunnel_session": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "ngrok resource identifier."
              },
              "uri": {
                "type": "string",
                "description": "Canonical ngrok API URI for this resource."
              }
            },
            "additionalProperties": true,
            "description": "Reference to another ngrok API resource."
          },
          "upstream_url": {
            "type": "string",
            "description": "Upstream URL forwarded to by this endpoint, when returned."
          },
          "upstream_protocol": {
            "type": "string",
            "description": "Upstream protocol used by the ngrok agent, when returned."
          },
          "traffic_policy": {
            "type": "string",
            "description": "Traffic policy attached to this endpoint, when returned."
          },
          "pooling_enabled": {
            "type": "boolean",
            "description": "Whether pooling is enabled for this endpoint."
          }
        },
        "additionalProperties": true,
        "description": "ngrok endpoint object."
      }
    },
    {
      "id": "ngrok.get_reserved_domain",
      "service": "ngrok",
      "name": "get_reserved_domain",
      "description": "Fetch one ngrok reserved domain by ID and return the upstream domain object.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "reserved_domain_id": {
            "type": "string",
            "minLength": 1,
            "description": "Unique identifier of the ngrok reserved domain."
          }
        },
        "additionalProperties": false,
        "required": [
          "reserved_domain_id"
        ],
        "description": "Input payload for fetching one ngrok reserved domain by ID."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique reserved domain resource identifier."
          },
          "uri": {
            "type": "string",
            "description": "Canonical ngrok API URI for this reserved domain."
          },
          "created_at": {
            "type": "string",
            "description": "Timestamp in RFC 3339 format."
          },
          "domain": {
            "type": "string",
            "description": "Hostname reserved on the ngrok account."
          },
          "region": {
            "type": "string",
            "description": "Deprecated region field returned by ngrok, when present."
          },
          "metadata": {
            "type": "string",
            "description": "User-defined metadata attached to this reserved domain."
          },
          "description": {
            "type": "string",
            "description": "Human-readable description configured on this reserved domain."
          },
          "certificate": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "ngrok resource identifier."
              },
              "uri": {
                "type": "string",
                "description": "Canonical ngrok API URI for this resource."
              }
            },
            "additionalProperties": true,
            "description": "Reference to another ngrok API resource."
          },
          "cname_target": {
            "type": "string",
            "description": "DNS CNAME target for this reserved domain."
          },
          "acme_challenge_cname_target": {
            "type": "string",
            "description": "DNS CNAME target used for ACME validation, when returned."
          },
          "resolves_to": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "value": {
                  "type": "string",
                  "description": "Resolver target value returned by ngrok."
                }
              },
              "additionalProperties": true,
              "description": "ngrok reserved domain resolve target."
            },
            "description": "Resolver targets configured on this reserved domain, when returned."
          },
          "certificate_management_policy": {
            "type": "object",
            "properties": {
              "authority": {
                "type": "string",
                "description": "Certificate authority used by automatic management."
              },
              "private_key_type": {
                "type": "string",
                "description": "Private key type used by automatic management."
              }
            },
            "additionalProperties": true,
            "description": "ngrok reserved domain certificate management policy."
          },
          "certificate_management_status": {
            "type": "object",
            "properties": {
              "renews_at": {
                "type": "string",
                "description": "Timestamp when the managed certificate renews, when returned."
              },
              "provisioning_job": {
                "type": "object",
                "properties": {
                  "msg": {
                    "type": "string",
                    "description": "Status or error message returned for the certificate job."
                  },
                  "error_code": {
                    "type": "string",
                    "description": "Certificate job error code returned by ngrok, when present."
                  },
                  "retries_at": {
                    "type": "string",
                    "description": "Timestamp when ngrok will retry the certificate job, when present."
                  },
                  "started_at": {
                    "type": "string",
                    "description": "Timestamp in RFC 3339 format."
                  }
                },
                "additionalProperties": true,
                "description": "ngrok reserved domain certificate provisioning job."
              }
            },
            "additionalProperties": true,
            "description": "ngrok reserved domain certificate management status."
          }
        },
        "additionalProperties": true,
        "description": "ngrok reserved domain object."
      }
    },
    {
      "id": "ngrok.list_endpoints",
      "service": "ngrok",
      "name": "list_endpoints",
      "description": "List active ngrok endpoints for the current account, with optional pagination and CEL filtering.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of results to return. ngrok accepts values from 1 to 100."
          },
          "before_id": {
            "type": "string",
            "minLength": 1,
            "description": "Pagination cursor that requests results created before this resource ID."
          },
          "filter": {
            "type": "string",
            "minLength": 1,
            "description": "CEL filter expression used by ngrok to filter the returned resources."
          }
        },
        "additionalProperties": false,
        "description": "Input payload for listing ngrok endpoints."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "uri": {
            "type": "string",
            "description": "Canonical ngrok API URI for the endpoints collection."
          },
          "endpoints": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Unique endpoint resource identifier."
                },
                "created_at": {
                  "type": "string",
                  "description": "Timestamp in RFC 3339 format."
                },
                "updated_at": {
                  "type": "string",
                  "description": "Timestamp in RFC 3339 format."
                },
                "type": {
                  "type": "string",
                  "description": "Endpoint type returned by ngrok, such as edge or cloud."
                },
                "proto": {
                  "type": "string",
                  "description": "Protocol served by this endpoint."
                },
                "public_url": {
                  "type": "string",
                  "description": "Public URL currently serving this endpoint."
                },
                "url": {
                  "type": "string",
                  "description": "API URL or frontend URL returned by ngrok for this endpoint."
                },
                "description": {
                  "type": "string",
                  "description": "Human-readable description configured on this endpoint."
                },
                "metadata": {
                  "type": "string",
                  "description": "User-defined metadata attached to this endpoint."
                },
                "host": {
                  "type": "string",
                  "description": "Host portion returned by ngrok for this endpoint."
                },
                "name": {
                  "type": "string",
                  "description": "User-defined endpoint name returned by ngrok."
                },
                "port": {
                  "type": "integer",
                  "description": "Port returned by ngrok for this endpoint."
                },
                "region": {
                  "type": "string",
                  "description": "Region identifier returned by ngrok for this endpoint."
                },
                "scheme": {
                  "type": "string",
                  "description": "Scheme returned by ngrok for this endpoint."
                },
                "bindings": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "Binding value returned by ngrok."
                  },
                  "description": "Bindings configured on this endpoint."
                },
                "hostport": {
                  "type": "string",
                  "description": "Hostport returned by ngrok for this endpoint."
                },
                "tcp_addr": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "ngrok resource identifier."
                    },
                    "uri": {
                      "type": "string",
                      "description": "Canonical ngrok API URI for this resource."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Reference to another ngrok API resource."
                },
                "principal": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "ngrok resource identifier."
                    },
                    "uri": {
                      "type": "string",
                      "description": "Canonical ngrok API URI for this resource."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Reference to another ngrok API resource."
                },
                "edge": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "ngrok resource identifier."
                    },
                    "uri": {
                      "type": "string",
                      "description": "Canonical ngrok API URI for this resource."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Reference to another ngrok API resource."
                },
                "domain": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "ngrok resource identifier."
                    },
                    "uri": {
                      "type": "string",
                      "description": "Canonical ngrok API URI for this resource."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Reference to another ngrok API resource."
                },
                "tunnel": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "ngrok resource identifier."
                    },
                    "uri": {
                      "type": "string",
                      "description": "Canonical ngrok API URI for this resource."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Reference to another ngrok API resource."
                },
                "tunnel_session": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "ngrok resource identifier."
                    },
                    "uri": {
                      "type": "string",
                      "description": "Canonical ngrok API URI for this resource."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Reference to another ngrok API resource."
                },
                "upstream_url": {
                  "type": "string",
                  "description": "Upstream URL forwarded to by this endpoint, when returned."
                },
                "upstream_protocol": {
                  "type": "string",
                  "description": "Upstream protocol used by the ngrok agent, when returned."
                },
                "traffic_policy": {
                  "type": "string",
                  "description": "Traffic policy attached to this endpoint, when returned."
                },
                "pooling_enabled": {
                  "type": "boolean",
                  "description": "Whether pooling is enabled for this endpoint."
                }
              },
              "additionalProperties": true,
              "description": "ngrok endpoint object."
            },
            "description": "Resources returned by ngrok for this page."
          },
          "next_page_uri": {
            "anyOf": [
              {
                "type": "string",
                "description": "URI of the next page, or null when there is no next page."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": true,
        "description": "Paginated ngrok endpoints response."
      }
    },
    {
      "id": "ngrok.list_reserved_domains",
      "service": "ngrok",
      "name": "list_reserved_domains",
      "description": "List reserved ngrok domains for the current account with pagination and CEL filtering.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of results to return. ngrok accepts values from 1 to 100."
          },
          "before_id": {
            "type": "string",
            "minLength": 1,
            "description": "Pagination cursor that requests results created before this resource ID."
          },
          "filter": {
            "type": "string",
            "minLength": 1,
            "description": "CEL filter expression used by ngrok to filter the returned resources."
          }
        },
        "additionalProperties": false,
        "description": "Input payload for listing ngrok reserved domains."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "uri": {
            "type": "string",
            "description": "Canonical ngrok API URI for the reserved_domains collection."
          },
          "reserved_domains": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Unique reserved domain resource identifier."
                },
                "uri": {
                  "type": "string",
                  "description": "Canonical ngrok API URI for this reserved domain."
                },
                "created_at": {
                  "type": "string",
                  "description": "Timestamp in RFC 3339 format."
                },
                "domain": {
                  "type": "string",
                  "description": "Hostname reserved on the ngrok account."
                },
                "region": {
                  "type": "string",
                  "description": "Deprecated region field returned by ngrok, when present."
                },
                "metadata": {
                  "type": "string",
                  "description": "User-defined metadata attached to this reserved domain."
                },
                "description": {
                  "type": "string",
                  "description": "Human-readable description configured on this reserved domain."
                },
                "certificate": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "ngrok resource identifier."
                    },
                    "uri": {
                      "type": "string",
                      "description": "Canonical ngrok API URI for this resource."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Reference to another ngrok API resource."
                },
                "cname_target": {
                  "type": "string",
                  "description": "DNS CNAME target for this reserved domain."
                },
                "acme_challenge_cname_target": {
                  "type": "string",
                  "description": "DNS CNAME target used for ACME validation, when returned."
                },
                "resolves_to": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string",
                        "description": "Resolver target value returned by ngrok."
                      }
                    },
                    "additionalProperties": true,
                    "description": "ngrok reserved domain resolve target."
                  },
                  "description": "Resolver targets configured on this reserved domain, when returned."
                },
                "certificate_management_policy": {
                  "type": "object",
                  "properties": {
                    "authority": {
                      "type": "string",
                      "description": "Certificate authority used by automatic management."
                    },
                    "private_key_type": {
                      "type": "string",
                      "description": "Private key type used by automatic management."
                    }
                  },
                  "additionalProperties": true,
                  "description": "ngrok reserved domain certificate management policy."
                },
                "certificate_management_status": {
                  "type": "object",
                  "properties": {
                    "renews_at": {
                      "type": "string",
                      "description": "Timestamp when the managed certificate renews, when returned."
                    },
                    "provisioning_job": {
                      "type": "object",
                      "properties": {
                        "msg": {
                          "type": "string",
                          "description": "Status or error message returned for the certificate job."
                        },
                        "error_code": {
                          "type": "string",
                          "description": "Certificate job error code returned by ngrok, when present."
                        },
                        "retries_at": {
                          "type": "string",
                          "description": "Timestamp when ngrok will retry the certificate job, when present."
                        },
                        "started_at": {
                          "type": "string",
                          "description": "Timestamp in RFC 3339 format."
                        }
                      },
                      "additionalProperties": true,
                      "description": "ngrok reserved domain certificate provisioning job."
                    }
                  },
                  "additionalProperties": true,
                  "description": "ngrok reserved domain certificate management status."
                }
              },
              "additionalProperties": true,
              "description": "ngrok reserved domain object."
            },
            "description": "Resources returned by ngrok for this page."
          },
          "next_page_uri": {
            "anyOf": [
              {
                "type": "string",
                "description": "URI of the next page, or null when there is no next page."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": true,
        "description": "Paginated ngrok reserved domains response."
      }
    },
    {
      "id": "ngrok.list_tunnel_sessions",
      "service": "ngrok",
      "name": "list_tunnel_sessions",
      "description": "List online ngrok tunnel sessions for the current account with pagination and CEL filtering.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of results to return. ngrok accepts values from 1 to 100."
          },
          "before_id": {
            "type": "string",
            "minLength": 1,
            "description": "Pagination cursor that requests results created before this resource ID."
          },
          "filter": {
            "type": "string",
            "minLength": 1,
            "description": "CEL filter expression used by ngrok to filter the returned resources."
          }
        },
        "additionalProperties": false,
        "description": "Input payload for listing ngrok tunnel sessions."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "uri": {
            "type": "string",
            "description": "Canonical ngrok API URI for the tunnel_sessions collection."
          },
          "tunnel_sessions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Unique tunnel session resource identifier."
                },
                "uri": {
                  "type": "string",
                  "description": "Canonical ngrok API URI for this tunnel session."
                },
                "agent_version": {
                  "type": "string",
                  "description": "ngrok agent version serving this session."
                },
                "credential": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "ngrok resource identifier."
                    },
                    "uri": {
                      "type": "string",
                      "description": "Canonical ngrok API URI for this resource."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Reference to another ngrok API resource."
                },
                "ip": {
                  "type": "string",
                  "description": "Source IP address of the tunnel session."
                },
                "os": {
                  "type": "string",
                  "description": "Operating system reported by the ngrok agent."
                },
                "region": {
                  "type": "string",
                  "description": "ngrok region where this session is connected."
                },
                "started_at": {
                  "type": "string",
                  "description": "Timestamp in RFC 3339 format."
                },
                "transport": {
                  "type": "string",
                  "description": "Transport protocol used by this tunnel session."
                },
                "metadata": {
                  "type": "string",
                  "description": "User-defined metadata attached to this session."
                }
              },
              "additionalProperties": true,
              "description": "ngrok tunnel session object."
            },
            "description": "Resources returned by ngrok for this page."
          },
          "next_page_uri": {
            "anyOf": [
              {
                "type": "string",
                "description": "URI of the next page, or null when there is no next page."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": true,
        "description": "Paginated ngrok tunnel sessions response."
      }
    },
    {
      "id": "ngrok.list_tunnels",
      "service": "ngrok",
      "name": "list_tunnels",
      "description": "List online ngrok tunnels for the current account with pagination support.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of results to return. ngrok accepts values from 1 to 100."
          },
          "before_id": {
            "type": "string",
            "minLength": 1,
            "description": "Pagination cursor that requests results created before this resource ID."
          }
        },
        "additionalProperties": false,
        "description": "Input payload for listing ngrok tunnels."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "uri": {
            "type": "string",
            "description": "Canonical ngrok API URI for the tunnels collection."
          },
          "tunnels": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Unique tunnel resource identifier."
                },
                "started_at": {
                  "type": "string",
                  "description": "Timestamp in RFC 3339 format."
                },
                "region": {
                  "type": "string",
                  "description": "Region where this tunnel is running."
                },
                "forwards_to": {
                  "type": "string",
                  "description": "Upstream address that this tunnel forwards traffic to."
                },
                "proto": {
                  "type": "string",
                  "description": "Tunnel protocol returned by ngrok."
                },
                "public_url": {
                  "type": "string",
                  "description": "Public URL currently serving this tunnel."
                },
                "metadata": {
                  "type": "string",
                  "description": "User-defined metadata attached to this tunnel."
                },
                "endpoint": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "ngrok resource identifier."
                    },
                    "uri": {
                      "type": "string",
                      "description": "Canonical ngrok API URI for this resource."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Reference to another ngrok API resource."
                },
                "tunnel_session": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "ngrok resource identifier."
                    },
                    "uri": {
                      "type": "string",
                      "description": "Canonical ngrok API URI for this resource."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Reference to another ngrok API resource."
                },
                "backends": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "ngrok resource identifier."
                      },
                      "uri": {
                        "type": "string",
                        "description": "Canonical ngrok API URI for this resource."
                      }
                    },
                    "additionalProperties": true,
                    "description": "Reference to another ngrok API resource."
                  },
                  "description": "Backends attached to this tunnel group, when returned."
                },
                "labels": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string",
                    "description": "Label value returned by ngrok."
                  },
                  "description": "Label map returned by ngrok for this tunnel."
                }
              },
              "additionalProperties": true,
              "description": "ngrok tunnel object."
            },
            "description": "Resources returned by ngrok for this page."
          },
          "next_page_uri": {
            "anyOf": [
              {
                "type": "string",
                "description": "URI of the next page, or null when there is no next page."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": true,
        "description": "Paginated ngrok tunnels response."
      }
    }
  ]
}
