<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.developers.html">developers</a> . <a href="apigee_v1.organizations.developers.attributes.html">attributes</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a developer attribute.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the value of the specified developer attribute.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a list of all developer attributes.</p>
<p class="toc_element">
  <code><a href="#updateDeveloperAttribute">updateDeveloperAttribute(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a developer attribute.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a developer attribute.

Args:
  name: string, Required. Name of the developer attribute. Use the following structure in your
request:
  `organizations/{org}/developers/{developer_email}/attributes/{attribute}` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Key-value pair to store extra metadata.
    &quot;value&quot;: &quot;A String&quot;, # Value of the attribute.
    &quot;name&quot;: &quot;A String&quot;, # API key of the attribute.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Returns the value of the specified developer attribute.

Args:
  name: string, Required. Name of the developer attribute. Use the following structure in your
request:
  `organizations/{org}/developers/{developer_email}/attributes/{attribute}` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Key-value pair to store extra metadata.
    &quot;value&quot;: &quot;A String&quot;, # Value of the attribute.
    &quot;name&quot;: &quot;A String&quot;, # API key of the attribute.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, x__xgafv=None)</code>
  <pre>Returns a list of all developer attributes.

Args:
  parent: string, Required. Email address of the developer for which attributes are being listed in the
following format:
  `organizations/{org}/developers/{developer_email}` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
      &quot;attribute&quot;: [ # List of attributes.
        { # Key-value pair to store extra metadata.
          &quot;value&quot;: &quot;A String&quot;, # Value of the attribute.
          &quot;name&quot;: &quot;A String&quot;, # API key of the attribute.
        },
      ],
    }</pre>
</div>

<div class="method">
    <code class="details" id="updateDeveloperAttribute">updateDeveloperAttribute(name, body=None, x__xgafv=None)</code>
  <pre>Updates a developer attribute.

**Note**: OAuth access tokens and Key Management Service (KMS) entities
(apps, developers, and API products) are cached for 180 seconds
(default). Any custom attributes associated with these entities
are cached for at least 180 seconds after the entity is accessed at
runtime. Therefore, an `ExpiresIn` element on the OAuthV2 policy
won&#x27;t be able to expire an access token in less than 180 seconds.

Args:
  name: string, Required. Name of the developer attribute. Use the following structure in your
request:
  `organizations/{org}/developers/{developer_email}/attributes/{attribute}` (required)
  body: object, The request body.
    The object takes the form of:

{ # Key-value pair to store extra metadata.
  &quot;value&quot;: &quot;A String&quot;, # Value of the attribute.
  &quot;name&quot;: &quot;A String&quot;, # API key of the attribute.
}

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

Returns:
  An object of the form:

    { # Key-value pair to store extra metadata.
    &quot;value&quot;: &quot;A String&quot;, # Value of the attribute.
    &quot;name&quot;: &quot;A String&quot;, # API key of the attribute.
  }</pre>
</div>

</body></html>