<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, 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="#create">create(appsId, body, 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, pageSize=None, matchingAddress=None, pageToken=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, 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, 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 '*' wildcard IP range, then an "allow all" 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. (required)
    The object takes the form of:

{ # Request message for Firewall.BatchUpdateIngressRules.
    "ingressRules": [ # 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.
        "priority": 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.
        "action": "A String", # The action to take on matched requests.
        "sourceRange": "A String", # IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character "*" to match all IPs equivalent to "0/0" and "::/0" 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.<p>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.
        "description": "A String", # 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.
    "ingressRules": [ # 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.
        "priority": 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.
        "action": "A String", # The action to take on matched requests.
        "sourceRange": "A String", # IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character "*" to match all IPs equivalent to "0/0" and "::/0" 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.<p>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.
        "description": "A String", # 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="create">create(appsId, body, 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. (required)
    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.
  "priority": 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.
  "action": "A String", # The action to take on matched requests.
  "sourceRange": "A String", # IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character "*" to match all IPs equivalent to "0/0" and "::/0" 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.<p>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.
  "description": "A String", # 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.
    "priority": 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.
    "action": "A String", # The action to take on matched requests.
    "sourceRange": "A String", # IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character "*" to match all IPs equivalent to "0/0" and "::/0" 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.<p>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.
    "description": "A String", # 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.
    "priority": 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.
    "action": "A String", # The action to take on matched requests.
    "sourceRange": "A String", # IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character "*" to match all IPs equivalent to "0/0" and "::/0" 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.<p>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.
    "description": "A String", # 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, pageSize=None, matchingAddress=None, pageToken=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)
  pageSize: integer, Maximum results to return per page.
  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.
  pageToken: string, Continuation token for fetching the next page of results.
  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.
    "nextPageToken": "A String", # Continuation token for fetching the next page of results.
    "ingressRules": [ # 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.
        "priority": 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.
        "action": "A String", # The action to take on matched requests.
        "sourceRange": "A String", # IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character "*" to match all IPs equivalent to "0/0" and "::/0" 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.<p>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.
        "description": "A String", # 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_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 'execute()' 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, 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. (required)
    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.
  "priority": 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.
  "action": "A String", # The action to take on matched requests.
  "sourceRange": "A String", # IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character "*" to match all IPs equivalent to "0/0" and "::/0" 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.<p>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.
  "description": "A String", # 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.
    "priority": 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.
    "action": "A String", # The action to take on matched requests.
    "sourceRange": "A String", # IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character "*" to match all IPs equivalent to "0/0" and "::/0" 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.<p>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.
    "description": "A String", # An optional string description of this rule. This field has a maximum length of 100 characters.
  }</pre>
</div>

</body></html>