<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="appengine_v1beta.html">App Engine Admin API</a> . <a href="appengine_v1beta.apps.html">apps</a> . <a href="appengine_v1beta.apps.firewall.html">firewall</a> . <a href="appengine_v1beta.apps.firewall.ingressRules.html">ingressRules</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#batchUpdate">batchUpdate(appsId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Replaces the entire firewall ruleset in one bulk operation. This overrides and replaces the rules of an existing firewall with the new rules.If the final rule does not match traffic with the '*' wildcard IP range, then an "allow all" rule is explicitly added to the end of the list.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(appsId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a firewall rule for the application.</p>
<p class="toc_element">
  <code><a href="#delete">delete(appsId, ingressRulesId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the specified firewall rule.</p>
<p class="toc_element">
  <code><a href="#get">get(appsId, ingressRulesId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the specified firewall rule.</p>
<p class="toc_element">
  <code><a href="#list">list(appsId, pageToken=None, matchingAddress=None, pageSize=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the firewall rules of an application.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(appsId, ingressRulesId, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified firewall rule.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="batchUpdate">batchUpdate(appsId, body=None, x__xgafv=None)</code>
  <pre>Replaces the entire firewall ruleset in one bulk operation. This overrides and replaces the rules of an existing firewall with the new rules.If the final rule does not match traffic with the &#x27;*&#x27; wildcard IP range, then an &quot;allow all&quot; rule is explicitly added to the end of the list.

Args:
  appsId: string, Part of `name`. Name of the Firewall collection to set. Example: apps/myapp/firewall/ingressRules. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for Firewall.BatchUpdateIngressRules.
    &quot;ingressRules&quot;: [ # A list of FirewallRules to replace the existing set.
      { # A single firewall rule that is evaluated against incoming traffic and provides an action to take on matched requests.
          &quot;action&quot;: &quot;A String&quot;, # The action to take on matched requests.
          &quot;sourceRange&quot;: &quot;A String&quot;, # IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character &quot;*&quot; to match all IPs equivalent to &quot;0/0&quot; and &quot;::/0&quot; together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32.
          &quot;priority&quot;: 42, # A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user.
          &quot;description&quot;: &quot;A String&quot;, # An optional string description of this rule. This field has a maximum length of 100 characters.
        },
    ],
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for Firewall.UpdateAllIngressRules.
    &quot;ingressRules&quot;: [ # The full list of ingress FirewallRules for this application.
      { # A single firewall rule that is evaluated against incoming traffic and provides an action to take on matched requests.
          &quot;action&quot;: &quot;A String&quot;, # The action to take on matched requests.
          &quot;sourceRange&quot;: &quot;A String&quot;, # IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character &quot;*&quot; to match all IPs equivalent to &quot;0/0&quot; and &quot;::/0&quot; together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32.
          &quot;priority&quot;: 42, # A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user.
          &quot;description&quot;: &quot;A String&quot;, # An optional string description of this rule. This field has a maximum length of 100 characters.
        },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(appsId, body=None, x__xgafv=None)</code>
  <pre>Creates a firewall rule for the application.

Args:
  appsId: string, Part of `parent`. Name of the parent Firewall collection in which to create a new rule. Example: apps/myapp/firewall/ingressRules. (required)
  body: object, The request body.
    The object takes the form of:

{ # A single firewall rule that is evaluated against incoming traffic and provides an action to take on matched requests.
    &quot;action&quot;: &quot;A String&quot;, # The action to take on matched requests.
    &quot;sourceRange&quot;: &quot;A String&quot;, # IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character &quot;*&quot; to match all IPs equivalent to &quot;0/0&quot; and &quot;::/0&quot; together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32.
    &quot;priority&quot;: 42, # A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user.
    &quot;description&quot;: &quot;A String&quot;, # An optional string description of this rule. This field has a maximum length of 100 characters.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A single firewall rule that is evaluated against incoming traffic and provides an action to take on matched requests.
      &quot;action&quot;: &quot;A String&quot;, # The action to take on matched requests.
      &quot;sourceRange&quot;: &quot;A String&quot;, # IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character &quot;*&quot; to match all IPs equivalent to &quot;0/0&quot; and &quot;::/0&quot; together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32.
      &quot;priority&quot;: 42, # A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user.
      &quot;description&quot;: &quot;A String&quot;, # An optional string description of this rule. This field has a maximum length of 100 characters.
    }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(appsId, ingressRulesId, x__xgafv=None)</code>
  <pre>Deletes the specified firewall rule.

Args:
  appsId: string, Part of `name`. Name of the Firewall resource to delete. Example: apps/myapp/firewall/ingressRules/100. (required)
  ingressRulesId: string, Part of `name`. See documentation of `appsId`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for Empty is empty JSON object {}.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(appsId, ingressRulesId, x__xgafv=None)</code>
  <pre>Gets the specified firewall rule.

Args:
  appsId: string, Part of `name`. Name of the Firewall resource to retrieve. Example: apps/myapp/firewall/ingressRules/100. (required)
  ingressRulesId: string, Part of `name`. See documentation of `appsId`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A single firewall rule that is evaluated against incoming traffic and provides an action to take on matched requests.
      &quot;action&quot;: &quot;A String&quot;, # The action to take on matched requests.
      &quot;sourceRange&quot;: &quot;A String&quot;, # IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character &quot;*&quot; to match all IPs equivalent to &quot;0/0&quot; and &quot;::/0&quot; together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32.
      &quot;priority&quot;: 42, # A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user.
      &quot;description&quot;: &quot;A String&quot;, # An optional string description of this rule. This field has a maximum length of 100 characters.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(appsId, pageToken=None, matchingAddress=None, pageSize=None, x__xgafv=None)</code>
  <pre>Lists the firewall rules of an application.

Args:
  appsId: string, Part of `parent`. Name of the Firewall collection to retrieve. Example: apps/myapp/firewall/ingressRules. (required)
  pageToken: string, Continuation token for fetching the next page of results.
  matchingAddress: string, A valid IP Address. If set, only rules matching this address will be returned. The first returned rule will be the rule that fires on requests from this IP.
  pageSize: integer, Maximum results to return per page.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for Firewall.ListIngressRules.
    &quot;ingressRules&quot;: [ # The ingress FirewallRules for this application.
      { # A single firewall rule that is evaluated against incoming traffic and provides an action to take on matched requests.
          &quot;action&quot;: &quot;A String&quot;, # The action to take on matched requests.
          &quot;sourceRange&quot;: &quot;A String&quot;, # IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character &quot;*&quot; to match all IPs equivalent to &quot;0/0&quot; and &quot;::/0&quot; together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32.
          &quot;priority&quot;: 42, # A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user.
          &quot;description&quot;: &quot;A String&quot;, # An optional string description of this rule. This field has a maximum length of 100 characters.
        },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Continuation token for fetching the next page of results.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(appsId, ingressRulesId, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the specified firewall rule.

Args:
  appsId: string, Part of `name`. Name of the Firewall resource to update. Example: apps/myapp/firewall/ingressRules/100. (required)
  ingressRulesId: string, Part of `name`. See documentation of `appsId`. (required)
  body: object, The request body.
    The object takes the form of:

{ # A single firewall rule that is evaluated against incoming traffic and provides an action to take on matched requests.
    &quot;action&quot;: &quot;A String&quot;, # The action to take on matched requests.
    &quot;sourceRange&quot;: &quot;A String&quot;, # IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character &quot;*&quot; to match all IPs equivalent to &quot;0/0&quot; and &quot;::/0&quot; together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32.
    &quot;priority&quot;: 42, # A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user.
    &quot;description&quot;: &quot;A String&quot;, # An optional string description of this rule. This field has a maximum length of 100 characters.
  }

  updateMask: string, Standard field mask for the set of fields to be updated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A single firewall rule that is evaluated against incoming traffic and provides an action to take on matched requests.
      &quot;action&quot;: &quot;A String&quot;, # The action to take on matched requests.
      &quot;sourceRange&quot;: &quot;A String&quot;, # IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character &quot;*&quot; to match all IPs equivalent to &quot;0/0&quot; and &quot;::/0&quot; together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32.
      &quot;priority&quot;: 42, # A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user.
      &quot;description&quot;: &quot;A String&quot;, # An optional string description of this rule. This field has a maximum length of 100 characters.
    }</pre>
</div>

</body></html>