<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="apigee_v1.html">Apigee API</a> . <a href="apigee_v1.organizations.html">organizations</a> . <a href="apigee_v1.organizations.environments.html">environments</a> . <a href="apigee_v1.organizations.environments.targetservers.html">targetservers</a></h1>
<h2>Instance Methods</h2>
<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(parent, body=None, name=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a TargetServer in the specified environment.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a TargetServer from an environment. Returns the deleted TargetServer resource.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a TargetServer resource.</p>
<p class="toc_element">
  <code><a href="#update">update(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing TargetServer. Note that this operation has PUT semantics; it will replace the entirety of the existing TargetServer with the resource in the request body.</p>
<h3>Method Details</h3>
<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(parent, body=None, name=None, x__xgafv=None)</code>
  <pre>Creates a TargetServer in the specified environment.

Args:
  parent: string, Required. The parent environment name under which the TargetServer will be created. Must be of the form `organizations/{org}/environments/{env}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # TargetServer configuration. TargetServers are used to decouple a proxy&#x27;s TargetEndpoint HTTPTargetConnections from concrete URLs for backend services.
  &quot;description&quot;: &quot;A String&quot;, # Optional. A human-readable description of this TargetServer.
  &quot;host&quot;: &quot;A String&quot;, # Required. The host name this target connects to. Value must be a valid hostname as described by RFC-1123.
  &quot;isEnabled&quot;: True or False, # Optional. Enabling/disabling a TargetServer is useful when TargetServers are used in load balancing configurations, and one or more TargetServers need to taken out of rotation periodically. Defaults to true.
  &quot;name&quot;: &quot;A String&quot;, # Required. The resource id of this target server. Values must match the regular expression
  &quot;port&quot;: 42, # Required. The port number this target connects to on the given host. Value must be between 1 and 65535, inclusive.
  &quot;protocol&quot;: &quot;A String&quot;, # Immutable. The protocol used by this TargetServer.
  &quot;sSLInfo&quot;: { # TLS configuration information for VirtualHosts and TargetServers. # Optional. Specifies TLS configuration info for this TargetServer. The JSON name is `sSLInfo` for legacy/backwards compatibility reasons -- Edge originally supported SSL, and the name is still used for TLS configuration.
    &quot;ciphers&quot;: [ # The SSL/TLS cipher suites to be used. Must be one of the cipher suite names listed in: http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites
      &quot;A String&quot;,
    ],
    &quot;clientAuthEnabled&quot;: True or False, # Optional. Enables two-way TLS.
    &quot;commonName&quot;: { # The TLS Common Name of the certificate.
      &quot;value&quot;: &quot;A String&quot;, # The TLS Common Name string of the certificate.
      &quot;wildcardMatch&quot;: True or False, # Indicates whether the cert should be matched against as a wildcard cert.
    },
    &quot;enabled&quot;: True or False, # Required. Enables TLS. If false, neither one-way nor two-way TLS will be enabled.
    &quot;ignoreValidationErrors&quot;: True or False, # If true, Edge ignores TLS certificate errors. Valid when configuring TLS for target servers and target endpoints, and when configuring virtual hosts that use 2-way TLS. When used with a target endpoint/target server, if the backend system uses SNI and returns a cert with a subject Distinguished Name (DN) that does not match the hostname, there is no way to ignore the error and the connection fails.
    &quot;keyAlias&quot;: &quot;A String&quot;, # Required if `client_auth_enabled` is true. The resource ID for the alias containing the private key and cert.
    &quot;keyStore&quot;: &quot;A String&quot;, # Required if `client_auth_enabled` is true. The resource ID of the keystore. References not yet supported.
    &quot;protocols&quot;: [ # The TLS versioins to be used.
      &quot;A String&quot;,
    ],
    &quot;trustStore&quot;: &quot;A String&quot;, # The resource ID of the truststore. References not yet supported.
  },
}

  name: string, Optional. The ID to give the TargetServer. This will overwrite the value in TargetServer.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # TargetServer configuration. TargetServers are used to decouple a proxy&#x27;s TargetEndpoint HTTPTargetConnections from concrete URLs for backend services.
  &quot;description&quot;: &quot;A String&quot;, # Optional. A human-readable description of this TargetServer.
  &quot;host&quot;: &quot;A String&quot;, # Required. The host name this target connects to. Value must be a valid hostname as described by RFC-1123.
  &quot;isEnabled&quot;: True or False, # Optional. Enabling/disabling a TargetServer is useful when TargetServers are used in load balancing configurations, and one or more TargetServers need to taken out of rotation periodically. Defaults to true.
  &quot;name&quot;: &quot;A String&quot;, # Required. The resource id of this target server. Values must match the regular expression
  &quot;port&quot;: 42, # Required. The port number this target connects to on the given host. Value must be between 1 and 65535, inclusive.
  &quot;protocol&quot;: &quot;A String&quot;, # Immutable. The protocol used by this TargetServer.
  &quot;sSLInfo&quot;: { # TLS configuration information for VirtualHosts and TargetServers. # Optional. Specifies TLS configuration info for this TargetServer. The JSON name is `sSLInfo` for legacy/backwards compatibility reasons -- Edge originally supported SSL, and the name is still used for TLS configuration.
    &quot;ciphers&quot;: [ # The SSL/TLS cipher suites to be used. Must be one of the cipher suite names listed in: http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites
      &quot;A String&quot;,
    ],
    &quot;clientAuthEnabled&quot;: True or False, # Optional. Enables two-way TLS.
    &quot;commonName&quot;: { # The TLS Common Name of the certificate.
      &quot;value&quot;: &quot;A String&quot;, # The TLS Common Name string of the certificate.
      &quot;wildcardMatch&quot;: True or False, # Indicates whether the cert should be matched against as a wildcard cert.
    },
    &quot;enabled&quot;: True or False, # Required. Enables TLS. If false, neither one-way nor two-way TLS will be enabled.
    &quot;ignoreValidationErrors&quot;: True or False, # If true, Edge ignores TLS certificate errors. Valid when configuring TLS for target servers and target endpoints, and when configuring virtual hosts that use 2-way TLS. When used with a target endpoint/target server, if the backend system uses SNI and returns a cert with a subject Distinguished Name (DN) that does not match the hostname, there is no way to ignore the error and the connection fails.
    &quot;keyAlias&quot;: &quot;A String&quot;, # Required if `client_auth_enabled` is true. The resource ID for the alias containing the private key and cert.
    &quot;keyStore&quot;: &quot;A String&quot;, # Required if `client_auth_enabled` is true. The resource ID of the keystore. References not yet supported.
    &quot;protocols&quot;: [ # The TLS versioins to be used.
      &quot;A String&quot;,
    ],
    &quot;trustStore&quot;: &quot;A String&quot;, # The resource ID of the truststore. References not yet supported.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a TargetServer from an environment. Returns the deleted TargetServer resource.

Args:
  name: string, Required. The name of the TargetServer to delete. Must be of the form `organizations/{org}/environments/{env}/targetservers/{target_server_id}`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # TargetServer configuration. TargetServers are used to decouple a proxy&#x27;s TargetEndpoint HTTPTargetConnections from concrete URLs for backend services.
  &quot;description&quot;: &quot;A String&quot;, # Optional. A human-readable description of this TargetServer.
  &quot;host&quot;: &quot;A String&quot;, # Required. The host name this target connects to. Value must be a valid hostname as described by RFC-1123.
  &quot;isEnabled&quot;: True or False, # Optional. Enabling/disabling a TargetServer is useful when TargetServers are used in load balancing configurations, and one or more TargetServers need to taken out of rotation periodically. Defaults to true.
  &quot;name&quot;: &quot;A String&quot;, # Required. The resource id of this target server. Values must match the regular expression
  &quot;port&quot;: 42, # Required. The port number this target connects to on the given host. Value must be between 1 and 65535, inclusive.
  &quot;protocol&quot;: &quot;A String&quot;, # Immutable. The protocol used by this TargetServer.
  &quot;sSLInfo&quot;: { # TLS configuration information for VirtualHosts and TargetServers. # Optional. Specifies TLS configuration info for this TargetServer. The JSON name is `sSLInfo` for legacy/backwards compatibility reasons -- Edge originally supported SSL, and the name is still used for TLS configuration.
    &quot;ciphers&quot;: [ # The SSL/TLS cipher suites to be used. Must be one of the cipher suite names listed in: http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites
      &quot;A String&quot;,
    ],
    &quot;clientAuthEnabled&quot;: True or False, # Optional. Enables two-way TLS.
    &quot;commonName&quot;: { # The TLS Common Name of the certificate.
      &quot;value&quot;: &quot;A String&quot;, # The TLS Common Name string of the certificate.
      &quot;wildcardMatch&quot;: True or False, # Indicates whether the cert should be matched against as a wildcard cert.
    },
    &quot;enabled&quot;: True or False, # Required. Enables TLS. If false, neither one-way nor two-way TLS will be enabled.
    &quot;ignoreValidationErrors&quot;: True or False, # If true, Edge ignores TLS certificate errors. Valid when configuring TLS for target servers and target endpoints, and when configuring virtual hosts that use 2-way TLS. When used with a target endpoint/target server, if the backend system uses SNI and returns a cert with a subject Distinguished Name (DN) that does not match the hostname, there is no way to ignore the error and the connection fails.
    &quot;keyAlias&quot;: &quot;A String&quot;, # Required if `client_auth_enabled` is true. The resource ID for the alias containing the private key and cert.
    &quot;keyStore&quot;: &quot;A String&quot;, # Required if `client_auth_enabled` is true. The resource ID of the keystore. References not yet supported.
    &quot;protocols&quot;: [ # The TLS versioins to be used.
      &quot;A String&quot;,
    ],
    &quot;trustStore&quot;: &quot;A String&quot;, # The resource ID of the truststore. References not yet supported.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets a TargetServer resource.

Args:
  name: string, Required. The name of the TargetServer to get. Must be of the form `organizations/{org}/environments/{env}/targetservers/{target_server_id}`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # TargetServer configuration. TargetServers are used to decouple a proxy&#x27;s TargetEndpoint HTTPTargetConnections from concrete URLs for backend services.
  &quot;description&quot;: &quot;A String&quot;, # Optional. A human-readable description of this TargetServer.
  &quot;host&quot;: &quot;A String&quot;, # Required. The host name this target connects to. Value must be a valid hostname as described by RFC-1123.
  &quot;isEnabled&quot;: True or False, # Optional. Enabling/disabling a TargetServer is useful when TargetServers are used in load balancing configurations, and one or more TargetServers need to taken out of rotation periodically. Defaults to true.
  &quot;name&quot;: &quot;A String&quot;, # Required. The resource id of this target server. Values must match the regular expression
  &quot;port&quot;: 42, # Required. The port number this target connects to on the given host. Value must be between 1 and 65535, inclusive.
  &quot;protocol&quot;: &quot;A String&quot;, # Immutable. The protocol used by this TargetServer.
  &quot;sSLInfo&quot;: { # TLS configuration information for VirtualHosts and TargetServers. # Optional. Specifies TLS configuration info for this TargetServer. The JSON name is `sSLInfo` for legacy/backwards compatibility reasons -- Edge originally supported SSL, and the name is still used for TLS configuration.
    &quot;ciphers&quot;: [ # The SSL/TLS cipher suites to be used. Must be one of the cipher suite names listed in: http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites
      &quot;A String&quot;,
    ],
    &quot;clientAuthEnabled&quot;: True or False, # Optional. Enables two-way TLS.
    &quot;commonName&quot;: { # The TLS Common Name of the certificate.
      &quot;value&quot;: &quot;A String&quot;, # The TLS Common Name string of the certificate.
      &quot;wildcardMatch&quot;: True or False, # Indicates whether the cert should be matched against as a wildcard cert.
    },
    &quot;enabled&quot;: True or False, # Required. Enables TLS. If false, neither one-way nor two-way TLS will be enabled.
    &quot;ignoreValidationErrors&quot;: True or False, # If true, Edge ignores TLS certificate errors. Valid when configuring TLS for target servers and target endpoints, and when configuring virtual hosts that use 2-way TLS. When used with a target endpoint/target server, if the backend system uses SNI and returns a cert with a subject Distinguished Name (DN) that does not match the hostname, there is no way to ignore the error and the connection fails.
    &quot;keyAlias&quot;: &quot;A String&quot;, # Required if `client_auth_enabled` is true. The resource ID for the alias containing the private key and cert.
    &quot;keyStore&quot;: &quot;A String&quot;, # Required if `client_auth_enabled` is true. The resource ID of the keystore. References not yet supported.
    &quot;protocols&quot;: [ # The TLS versioins to be used.
      &quot;A String&quot;,
    ],
    &quot;trustStore&quot;: &quot;A String&quot;, # The resource ID of the truststore. References not yet supported.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(name, body=None, x__xgafv=None)</code>
  <pre>Updates an existing TargetServer. Note that this operation has PUT semantics; it will replace the entirety of the existing TargetServer with the resource in the request body.

Args:
  name: string, Required. The name of the TargetServer to replace. Must be of the form `organizations/{org}/environments/{env}/targetservers/{target_server_id}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # TargetServer configuration. TargetServers are used to decouple a proxy&#x27;s TargetEndpoint HTTPTargetConnections from concrete URLs for backend services.
  &quot;description&quot;: &quot;A String&quot;, # Optional. A human-readable description of this TargetServer.
  &quot;host&quot;: &quot;A String&quot;, # Required. The host name this target connects to. Value must be a valid hostname as described by RFC-1123.
  &quot;isEnabled&quot;: True or False, # Optional. Enabling/disabling a TargetServer is useful when TargetServers are used in load balancing configurations, and one or more TargetServers need to taken out of rotation periodically. Defaults to true.
  &quot;name&quot;: &quot;A String&quot;, # Required. The resource id of this target server. Values must match the regular expression
  &quot;port&quot;: 42, # Required. The port number this target connects to on the given host. Value must be between 1 and 65535, inclusive.
  &quot;protocol&quot;: &quot;A String&quot;, # Immutable. The protocol used by this TargetServer.
  &quot;sSLInfo&quot;: { # TLS configuration information for VirtualHosts and TargetServers. # Optional. Specifies TLS configuration info for this TargetServer. The JSON name is `sSLInfo` for legacy/backwards compatibility reasons -- Edge originally supported SSL, and the name is still used for TLS configuration.
    &quot;ciphers&quot;: [ # The SSL/TLS cipher suites to be used. Must be one of the cipher suite names listed in: http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites
      &quot;A String&quot;,
    ],
    &quot;clientAuthEnabled&quot;: True or False, # Optional. Enables two-way TLS.
    &quot;commonName&quot;: { # The TLS Common Name of the certificate.
      &quot;value&quot;: &quot;A String&quot;, # The TLS Common Name string of the certificate.
      &quot;wildcardMatch&quot;: True or False, # Indicates whether the cert should be matched against as a wildcard cert.
    },
    &quot;enabled&quot;: True or False, # Required. Enables TLS. If false, neither one-way nor two-way TLS will be enabled.
    &quot;ignoreValidationErrors&quot;: True or False, # If true, Edge ignores TLS certificate errors. Valid when configuring TLS for target servers and target endpoints, and when configuring virtual hosts that use 2-way TLS. When used with a target endpoint/target server, if the backend system uses SNI and returns a cert with a subject Distinguished Name (DN) that does not match the hostname, there is no way to ignore the error and the connection fails.
    &quot;keyAlias&quot;: &quot;A String&quot;, # Required if `client_auth_enabled` is true. The resource ID for the alias containing the private key and cert.
    &quot;keyStore&quot;: &quot;A String&quot;, # Required if `client_auth_enabled` is true. The resource ID of the keystore. References not yet supported.
    &quot;protocols&quot;: [ # The TLS versioins to be used.
      &quot;A String&quot;,
    ],
    &quot;trustStore&quot;: &quot;A String&quot;, # The resource ID of the truststore. References not yet supported.
  },
}

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

Returns:
  An object of the form:

    { # TargetServer configuration. TargetServers are used to decouple a proxy&#x27;s TargetEndpoint HTTPTargetConnections from concrete URLs for backend services.
  &quot;description&quot;: &quot;A String&quot;, # Optional. A human-readable description of this TargetServer.
  &quot;host&quot;: &quot;A String&quot;, # Required. The host name this target connects to. Value must be a valid hostname as described by RFC-1123.
  &quot;isEnabled&quot;: True or False, # Optional. Enabling/disabling a TargetServer is useful when TargetServers are used in load balancing configurations, and one or more TargetServers need to taken out of rotation periodically. Defaults to true.
  &quot;name&quot;: &quot;A String&quot;, # Required. The resource id of this target server. Values must match the regular expression
  &quot;port&quot;: 42, # Required. The port number this target connects to on the given host. Value must be between 1 and 65535, inclusive.
  &quot;protocol&quot;: &quot;A String&quot;, # Immutable. The protocol used by this TargetServer.
  &quot;sSLInfo&quot;: { # TLS configuration information for VirtualHosts and TargetServers. # Optional. Specifies TLS configuration info for this TargetServer. The JSON name is `sSLInfo` for legacy/backwards compatibility reasons -- Edge originally supported SSL, and the name is still used for TLS configuration.
    &quot;ciphers&quot;: [ # The SSL/TLS cipher suites to be used. Must be one of the cipher suite names listed in: http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites
      &quot;A String&quot;,
    ],
    &quot;clientAuthEnabled&quot;: True or False, # Optional. Enables two-way TLS.
    &quot;commonName&quot;: { # The TLS Common Name of the certificate.
      &quot;value&quot;: &quot;A String&quot;, # The TLS Common Name string of the certificate.
      &quot;wildcardMatch&quot;: True or False, # Indicates whether the cert should be matched against as a wildcard cert.
    },
    &quot;enabled&quot;: True or False, # Required. Enables TLS. If false, neither one-way nor two-way TLS will be enabled.
    &quot;ignoreValidationErrors&quot;: True or False, # If true, Edge ignores TLS certificate errors. Valid when configuring TLS for target servers and target endpoints, and when configuring virtual hosts that use 2-way TLS. When used with a target endpoint/target server, if the backend system uses SNI and returns a cert with a subject Distinguished Name (DN) that does not match the hostname, there is no way to ignore the error and the connection fails.
    &quot;keyAlias&quot;: &quot;A String&quot;, # Required if `client_auth_enabled` is true. The resource ID for the alias containing the private key and cert.
    &quot;keyStore&quot;: &quot;A String&quot;, # Required if `client_auth_enabled` is true. The resource ID of the keystore. References not yet supported.
    &quot;protocols&quot;: [ # The TLS versioins to be used.
      &quot;A String&quot;,
    ],
    &quot;trustStore&quot;: &quot;A String&quot;, # The resource ID of the truststore. References not yet supported.
  },
}</pre>
</div>

</body></html>