<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="#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</p>
<h3>Method Details</h3>
<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 hybrid 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;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;consumerKey&quot;: &quot;A String&quot;, # Consumer key.
    &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;value&quot;: &quot;A String&quot;, # Value of the attribute.
        &quot;name&quot;: &quot;A String&quot;, # API key of the attribute.
      },
    ],
    &quot;issuedAt&quot;: &quot;A String&quot;, # Time the developer app was created in milliseconds since epoch.
    &quot;expiresAt&quot;: &quot;A String&quot;, # Time the developer app expires in milliseconds since epoch.
    &quot;consumerSecret&quot;: &quot;A String&quot;, # Secret key.
    &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;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;consumerKey&quot;: &quot;A String&quot;, # Consumer key.
      &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;value&quot;: &quot;A String&quot;, # Value of the attribute.
          &quot;name&quot;: &quot;A String&quot;, # API key of the attribute.
        },
      ],
      &quot;issuedAt&quot;: &quot;A String&quot;, # Time the developer app was created in milliseconds since epoch.
      &quot;expiresAt&quot;: &quot;A String&quot;, # Time the developer app expires in milliseconds since epoch.
      &quot;consumerSecret&quot;: &quot;A String&quot;, # Secret key.
      &quot;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
    }</pre>
</div>

</body></html>