<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_v1.html">App Engine Admin API</a> . <a href="appengine_v1.apps.html">apps</a> . <a href="appengine_v1.apps.firewall.html">firewall</a> . <a href="appengine_v1.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>