<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.apps.html">apps</a> . <a href="apigee_v1.organizations.developers.apps.keys.html">keys</a> . <a href="apigee_v1.organizations.developers.apps.keys.create.html">create</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, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a custom consumer key and secret for a developer app. This is particularly useful if you want to migrate existing consumer keys and secrets to Apigee from another system. Consumer keys and secrets can contain letters, numbers, underscores, and hyphens. No other special characters are allowed. To avoid service disruptions, a consumer key and secret should not exceed 2 KBs each. **Note**: When creating the consumer key and secret, an association to API products will not be made. Therefore, you should not specify the associated API products in your request. Instead, use the UpdateDeveloperAppKey API to make the association after the consumer key and secret are created. If a consumer key and secret already exist, you can keep them or delete them using the DeleteDeveloperAppKey API.</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, x__xgafv=None)</code>
  <pre>Creates a custom consumer key and secret for a developer app. This is particularly useful if you want to migrate existing consumer keys and secrets to Apigee from another system. Consumer keys and secrets can contain letters, numbers, underscores, and hyphens. No other special characters are allowed. To avoid service disruptions, a consumer key and secret should not exceed 2 KBs each. **Note**: When creating the consumer key and secret, an association to API products will not be made. Therefore, you should not specify the associated API products in your request. Instead, use the UpdateDeveloperAppKey API to make the association after the consumer key and secret are created. If a consumer key and secret already exist, you can keep them or delete them using the DeleteDeveloperAppKey API.

Args:
  parent: string, Parent of the developer app key. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/apps` (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;apiProducts&quot;: [ # List of API products for which the credential can be used. **Note**: Do not specify the list of API products when creating a consumer key and secret for a developer app. Instead, use the UpdateDeveloperAppKey API to make the association after the consumer key and secret are created.
    &quot;&quot;,
  ],
  &quot;attributes&quot;: [ # List of attributes associated with the credential.
    { # Key-value pair to store extra metadata.
      &quot;name&quot;: &quot;A String&quot;, # API key of the attribute.
      &quot;value&quot;: &quot;A String&quot;, # Value of the attribute.
    },
  ],
  &quot;consumerKey&quot;: &quot;A String&quot;, # Consumer key.
  &quot;consumerSecret&quot;: &quot;A String&quot;, # Secret key.
  &quot;expiresAt&quot;: &quot;A String&quot;, # Time the developer app expires in milliseconds since epoch.
  &quot;expiresInSeconds&quot;: &quot;A String&quot;, # Input only. Expiration time, in seconds, for the consumer key. If not set or left to the default value of `-1`, the API key never expires. The expiration time can&#x27;t be updated after it is set.
  &quot;issuedAt&quot;: &quot;A String&quot;, # Time the developer app was created in milliseconds since epoch.
  &quot;scopes&quot;: [ # Scopes to apply to the app. The specified scope names must already be defined for the API product that you associate with the app.
    &quot;A String&quot;,
  ],
  &quot;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
}

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

Returns:
  An object of the form:

    {
  &quot;apiProducts&quot;: [ # List of API products for which the credential can be used. **Note**: Do not specify the list of API products when creating a consumer key and secret for a developer app. Instead, use the UpdateDeveloperAppKey API to make the association after the consumer key and secret are created.
    &quot;&quot;,
  ],
  &quot;attributes&quot;: [ # List of attributes associated with the credential.
    { # Key-value pair to store extra metadata.
      &quot;name&quot;: &quot;A String&quot;, # API key of the attribute.
      &quot;value&quot;: &quot;A String&quot;, # Value of the attribute.
    },
  ],
  &quot;consumerKey&quot;: &quot;A String&quot;, # Consumer key.
  &quot;consumerSecret&quot;: &quot;A String&quot;, # Secret key.
  &quot;expiresAt&quot;: &quot;A String&quot;, # Time the developer app expires in milliseconds since epoch.
  &quot;expiresInSeconds&quot;: &quot;A String&quot;, # Input only. Expiration time, in seconds, for the consumer key. If not set or left to the default value of `-1`, the API key never expires. The expiration time can&#x27;t be updated after it is set.
  &quot;issuedAt&quot;: &quot;A String&quot;, # Time the developer app was created in milliseconds since epoch.
  &quot;scopes&quot;: [ # Scopes to apply to the app. The specified scope names must already be defined for the API product that you associate with the app.
    &quot;A String&quot;,
  ],
  &quot;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
}</pre>
</div>

</body></html>