<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></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="apigee_v1.organizations.developers.apps.attributes.html">attributes()</a></code>
</p>
<p class="firstline">Returns the attributes Resource.</p>

<p class="toc_element">
  <code><a href="apigee_v1.organizations.developers.apps.keys.html">keys()</a></code>
</p>
<p class="firstline">Returns the keys Resource.</p>

<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 an app associated with a developer. This API associates the developer app with the specified API product and auto-generates an API key for the app to use in calls to API proxies inside that API product. The `name` is the unique ID of the app that you can use in API calls. The `DisplayName` (set as an attribute) appears in the UI. If you don't set the `DisplayName` attribute, the `name` appears in the UI.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a developer app. **Note**: The delete operation is asynchronous. The developer app is deleted immediately, but its associated resources, such as app keys or access tokens, may take anywhere from a few seconds to a few minutes to be deleted.</p>
<p class="toc_element">
  <code><a href="#generateKeyPairOrUpdateDeveloperAppStatus">generateKeyPairOrUpdateDeveloperAppStatus(name, action=None, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Manages access to a developer app by enabling you to: * Approve or revoke a developer app * Generate a new consumer key and secret for a developer app To approve or revoke a developer app, set the `action` query parameter to `approved` or `revoked`, respectively, and the `Content-Type` header to `application/octet-stream`. If a developer app is revoked, none of its API keys are valid for API calls even though the keys are still `approved`. If successful, the API call returns the following HTTP status code: `204 No Content` To generate a new consumer key and secret for a developer app, pass the new key/secret details. Rather than replace an existing key, this API generates a new key. In this case, multiple key pairs may be associated with a single developer app. Each key pair has an independent status (`approved` or `revoked`) and expiration time. Any approved, non-expired key can be used in an API call. For example, if you're using API key rotation, you can generate new keys with expiration times that overlap keys that are going to expire. You might also generate a new consumer key/secret if the security of the original key/secret is compromised. The `keyExpiresIn` property defines the expiration time for the API key in milliseconds. If you don't set this property or set it to `-1`, the API key never expires. **Notes**: * When generating a new key/secret, this API replaces the existing attributes, notes, and callback URLs with those specified in the request. Include or exclude any existing information that you want to retain or delete, respectively. * To migrate existing consumer keys and secrets to hybrid from another system, see the CreateDeveloperAppKey API.</p>
<p class="toc_element">
  <code><a href="#get">get(name, entity=None, query=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the details for a developer app.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, count=None, expand=None, shallowExpand=None, startKey=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all apps created by a developer in an Apigee organization. Optionally, you can request an expanded view of the developer apps. A maximum of 100 developer apps are returned per API call. You can paginate the list of deveoper apps returned using the `startKey` and `count` query parameters.</p>
<p class="toc_element">
  <code><a href="#update">update(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the details for a developer app. In addition, you can add an API product to a developer app and automatically generate an API key for the app to use when calling APIs in the API product. If you want to use an existing API key for the API product, add the API product to the API key using the UpdateDeveloperAppKey API. Using this API, you cannot update the following: * App name as it is the primary key used to identify the app and cannot be changed. * Scopes associated with the app. Instead, use the ReplaceDeveloperAppKey API. This API replaces the existing attributes with those specified in the request. Include or exclude any existing attributes that you want to retain or delete, respectively.</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 an app associated with a developer. This API associates the developer app with the specified API product and auto-generates an API key for the app to use in calls to API proxies inside that API product. The `name` is the unique ID of the app that you can use in API calls. The `DisplayName` (set as an attribute) appears in the UI. If you don&#x27;t set the `DisplayName` attribute, the `name` appears in the UI.

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

{
  &quot;apiProducts&quot;: [ # List of API products associated with the developer app.
    &quot;A String&quot;,
  ],
  &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
  &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
  &quot;attributes&quot;: [ # List of attributes for the developer app.
    { # 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;callbackUrl&quot;: &quot;A String&quot;, # Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to developer apps.
  &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
  &quot;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
    {
      &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
        {
          &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
          &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
        },
      ],
      &quot;attributes&quot;: [ # List of attributes associated with this 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 credential will expire in milliseconds since epoch.
      &quot;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
      &quot;scopes&quot;: [ # List of scopes to apply to the app. Specified scopes must already exist on the API product that you associate with the app.
        &quot;A String&quot;,
      ],
      &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
    },
  ],
  &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
  &quot;keyExpiresIn&quot;: &quot;A String&quot;, # Expiration time, in milliseconds, for the consumer key that is generated for the developer app. 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;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
  &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
  &quot;scopes&quot;: [ # Scopes to apply to the developer app. The specified scopes must already exist for the API product that you associate with the developer 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 associated with the developer app.
    &quot;A String&quot;,
  ],
  &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
  &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
  &quot;attributes&quot;: [ # List of attributes for the developer app.
    { # 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;callbackUrl&quot;: &quot;A String&quot;, # Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to developer apps.
  &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
  &quot;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
    {
      &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
        {
          &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
          &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
        },
      ],
      &quot;attributes&quot;: [ # List of attributes associated with this 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 credential will expire in milliseconds since epoch.
      &quot;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
      &quot;scopes&quot;: [ # List of scopes to apply to the app. Specified scopes must already exist on the API product that you associate with the app.
        &quot;A String&quot;,
      ],
      &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
    },
  ],
  &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
  &quot;keyExpiresIn&quot;: &quot;A String&quot;, # Expiration time, in milliseconds, for the consumer key that is generated for the developer app. 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;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
  &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
  &quot;scopes&quot;: [ # Scopes to apply to the developer app. The specified scopes must already exist for the API product that you associate with the developer app.
    &quot;A String&quot;,
  ],
  &quot;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a developer app. **Note**: The delete operation is asynchronous. The developer app is deleted immediately, but its associated resources, such as app keys or access tokens, may take anywhere from a few seconds to a few minutes to be deleted.

Args:
  name: string, Required. Name of the developer app. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/apps/{app}` (required)
  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 associated with the developer app.
    &quot;A String&quot;,
  ],
  &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
  &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
  &quot;attributes&quot;: [ # List of attributes for the developer app.
    { # 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;callbackUrl&quot;: &quot;A String&quot;, # Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to developer apps.
  &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
  &quot;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
    {
      &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
        {
          &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
          &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
        },
      ],
      &quot;attributes&quot;: [ # List of attributes associated with this 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 credential will expire in milliseconds since epoch.
      &quot;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
      &quot;scopes&quot;: [ # List of scopes to apply to the app. Specified scopes must already exist on the API product that you associate with the app.
        &quot;A String&quot;,
      ],
      &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
    },
  ],
  &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
  &quot;keyExpiresIn&quot;: &quot;A String&quot;, # Expiration time, in milliseconds, for the consumer key that is generated for the developer app. 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;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
  &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
  &quot;scopes&quot;: [ # Scopes to apply to the developer app. The specified scopes must already exist for the API product that you associate with the developer app.
    &quot;A String&quot;,
  ],
  &quot;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
}</pre>
</div>

<div class="method">
    <code class="details" id="generateKeyPairOrUpdateDeveloperAppStatus">generateKeyPairOrUpdateDeveloperAppStatus(name, action=None, body=None, x__xgafv=None)</code>
  <pre>Manages access to a developer app by enabling you to: * Approve or revoke a developer app * Generate a new consumer key and secret for a developer app To approve or revoke a developer app, set the `action` query parameter to `approved` or `revoked`, respectively, and the `Content-Type` header to `application/octet-stream`. If a developer app is revoked, none of its API keys are valid for API calls even though the keys are still `approved`. If successful, the API call returns the following HTTP status code: `204 No Content` To generate a new consumer key and secret for a developer app, pass the new key/secret details. Rather than replace an existing key, this API generates a new key. In this case, multiple key pairs may be associated with a single developer app. Each key pair has an independent status (`approved` or `revoked`) and expiration time. Any approved, non-expired key can be used in an API call. For example, if you&#x27;re using API key rotation, you can generate new keys with expiration times that overlap keys that are going to expire. You might also generate a new consumer key/secret if the security of the original key/secret is compromised. The `keyExpiresIn` property defines the expiration time for the API key in milliseconds. If you don&#x27;t set this property or set it to `-1`, the API key never expires. **Notes**: * When generating a new key/secret, this API replaces the existing attributes, notes, and callback URLs with those specified in the request. Include or exclude any existing information that you want to retain or delete, respectively. * To migrate existing consumer keys and secrets to hybrid from another system, see the CreateDeveloperAppKey API.

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

{
  &quot;apiProducts&quot;: [ # List of API products associated with the developer app.
    &quot;A String&quot;,
  ],
  &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
  &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
  &quot;attributes&quot;: [ # List of attributes for the developer app.
    { # 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;callbackUrl&quot;: &quot;A String&quot;, # Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to developer apps.
  &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
  &quot;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
    {
      &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
        {
          &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
          &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
        },
      ],
      &quot;attributes&quot;: [ # List of attributes associated with this 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 credential will expire in milliseconds since epoch.
      &quot;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
      &quot;scopes&quot;: [ # List of scopes to apply to the app. Specified scopes must already exist on the API product that you associate with the app.
        &quot;A String&quot;,
      ],
      &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
    },
  ],
  &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
  &quot;keyExpiresIn&quot;: &quot;A String&quot;, # Expiration time, in milliseconds, for the consumer key that is generated for the developer app. 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;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
  &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
  &quot;scopes&quot;: [ # Scopes to apply to the developer app. The specified scopes must already exist for the API product that you associate with the developer app.
    &quot;A String&quot;,
  ],
  &quot;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
}

  action: string, Action. Valid values are `approve` or `revoke`.
  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 associated with the developer app.
    &quot;A String&quot;,
  ],
  &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
  &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
  &quot;attributes&quot;: [ # List of attributes for the developer app.
    { # 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;callbackUrl&quot;: &quot;A String&quot;, # Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to developer apps.
  &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
  &quot;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
    {
      &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
        {
          &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
          &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
        },
      ],
      &quot;attributes&quot;: [ # List of attributes associated with this 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 credential will expire in milliseconds since epoch.
      &quot;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
      &quot;scopes&quot;: [ # List of scopes to apply to the app. Specified scopes must already exist on the API product that you associate with the app.
        &quot;A String&quot;,
      ],
      &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
    },
  ],
  &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
  &quot;keyExpiresIn&quot;: &quot;A String&quot;, # Expiration time, in milliseconds, for the consumer key that is generated for the developer app. 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;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
  &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
  &quot;scopes&quot;: [ # Scopes to apply to the developer app. The specified scopes must already exist for the API product that you associate with the developer app.
    &quot;A String&quot;,
  ],
  &quot;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, entity=None, query=None, x__xgafv=None)</code>
  <pre>Returns the details for a developer app.

Args:
  name: string, Required. Name of the developer app. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/apps/{app}` (required)
  entity: string, **Note**: Must be used in conjunction with the `query` parameter. Set to `apiresources` to return the number of API resources that have been approved for access by a developer app in the specified Apigee organization.
  query: string, **Note**: Must be used in conjunction with the `entity` parameter. Set to `count` to return the number of API resources that have been approved for access by a developer app in the specified Apigee organization.
  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 associated with the developer app.
    &quot;A String&quot;,
  ],
  &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
  &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
  &quot;attributes&quot;: [ # List of attributes for the developer app.
    { # 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;callbackUrl&quot;: &quot;A String&quot;, # Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to developer apps.
  &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
  &quot;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
    {
      &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
        {
          &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
          &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
        },
      ],
      &quot;attributes&quot;: [ # List of attributes associated with this 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 credential will expire in milliseconds since epoch.
      &quot;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
      &quot;scopes&quot;: [ # List of scopes to apply to the app. Specified scopes must already exist on the API product that you associate with the app.
        &quot;A String&quot;,
      ],
      &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
    },
  ],
  &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
  &quot;keyExpiresIn&quot;: &quot;A String&quot;, # Expiration time, in milliseconds, for the consumer key that is generated for the developer app. 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;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
  &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
  &quot;scopes&quot;: [ # Scopes to apply to the developer app. The specified scopes must already exist for the API product that you associate with the developer app.
    &quot;A String&quot;,
  ],
  &quot;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, count=None, expand=None, shallowExpand=None, startKey=None, x__xgafv=None)</code>
  <pre>Lists all apps created by a developer in an Apigee organization. Optionally, you can request an expanded view of the developer apps. A maximum of 100 developer apps are returned per API call. You can paginate the list of deveoper apps returned using the `startKey` and `count` query parameters.

Args:
  parent: string, Required. Name of the developer. Use the following structure in your request: `organizations/{org}/developers/{developer_email}` (required)
  count: string, Number of developer apps to return in the API call. Use with the `startKey` parameter to provide more targeted filtering. The limit is 1000.
  expand: boolean, Optional. Specifies whether to expand the results. Set to `true` to expand the results. This query parameter is not valid if you use the `count` or `startKey` query parameters.
  shallowExpand: boolean, Optional. Specifies whether to expand the results in shallow mode. Set to `true` to expand the results in shallow mode.
  startKey: string, **Note**: Must be used in conjunction with the `count` parameter. Name of the developer app from which to start displaying the list of developer apps. For example, if you&#x27;re returning 50 developer apps at a time (using the `count` query parameter), you can view developer apps 50-99 by entering the name of the 50th developer app. The developer app name is case sensitive.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;app&quot;: [ # List of developer apps and their credentials.
    {
      &quot;apiProducts&quot;: [ # List of API products associated with the developer app.
        &quot;A String&quot;,
      ],
      &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
      &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
      &quot;attributes&quot;: [ # List of attributes for the developer app.
        { # 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;callbackUrl&quot;: &quot;A String&quot;, # Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to developer apps.
      &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
      &quot;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
        {
          &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
            {
              &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
              &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
            },
          ],
          &quot;attributes&quot;: [ # List of attributes associated with this 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 credential will expire in milliseconds since epoch.
          &quot;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
          &quot;scopes&quot;: [ # List of scopes to apply to the app. Specified scopes must already exist on the API product that you associate with the app.
            &quot;A String&quot;,
          ],
          &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
        },
      ],
      &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
      &quot;keyExpiresIn&quot;: &quot;A String&quot;, # Expiration time, in milliseconds, for the consumer key that is generated for the developer app. 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;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
      &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
      &quot;scopes&quot;: [ # Scopes to apply to the developer app. The specified scopes must already exist for the API product that you associate with the developer app.
        &quot;A String&quot;,
      ],
      &quot;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(name, body=None, x__xgafv=None)</code>
  <pre>Updates the details for a developer app. In addition, you can add an API product to a developer app and automatically generate an API key for the app to use when calling APIs in the API product. If you want to use an existing API key for the API product, add the API product to the API key using the UpdateDeveloperAppKey API. Using this API, you cannot update the following: * App name as it is the primary key used to identify the app and cannot be changed. * Scopes associated with the app. Instead, use the ReplaceDeveloperAppKey API. This API replaces the existing attributes with those specified in the request. Include or exclude any existing attributes that you want to retain or delete, respectively.

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

{
  &quot;apiProducts&quot;: [ # List of API products associated with the developer app.
    &quot;A String&quot;,
  ],
  &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
  &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
  &quot;attributes&quot;: [ # List of attributes for the developer app.
    { # 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;callbackUrl&quot;: &quot;A String&quot;, # Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to developer apps.
  &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
  &quot;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
    {
      &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
        {
          &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
          &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
        },
      ],
      &quot;attributes&quot;: [ # List of attributes associated with this 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 credential will expire in milliseconds since epoch.
      &quot;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
      &quot;scopes&quot;: [ # List of scopes to apply to the app. Specified scopes must already exist on the API product that you associate with the app.
        &quot;A String&quot;,
      ],
      &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
    },
  ],
  &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
  &quot;keyExpiresIn&quot;: &quot;A String&quot;, # Expiration time, in milliseconds, for the consumer key that is generated for the developer app. 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;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
  &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
  &quot;scopes&quot;: [ # Scopes to apply to the developer app. The specified scopes must already exist for the API product that you associate with the developer 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 associated with the developer app.
    &quot;A String&quot;,
  ],
  &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
  &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
  &quot;attributes&quot;: [ # List of attributes for the developer app.
    { # 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;callbackUrl&quot;: &quot;A String&quot;, # Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to developer apps.
  &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
  &quot;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
    {
      &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
        {
          &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
          &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
        },
      ],
      &quot;attributes&quot;: [ # List of attributes associated with this 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 credential will expire in milliseconds since epoch.
      &quot;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
      &quot;scopes&quot;: [ # List of scopes to apply to the app. Specified scopes must already exist on the API product that you associate with the app.
        &quot;A String&quot;,
      ],
      &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
    },
  ],
  &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
  &quot;keyExpiresIn&quot;: &quot;A String&quot;, # Expiration time, in milliseconds, for the consumer key that is generated for the developer app. 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;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
  &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
  &quot;scopes&quot;: [ # Scopes to apply to the developer app. The specified scopes must already exist for the API product that you associate with the developer 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>