<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, body=None, action=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, query=None, entity=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, expand=None, shallowExpand=None, startKey=None, count=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;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
    &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
    &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
    &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;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
    &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
    &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
    &quot;apiProducts&quot;: [ # List of API products associated with the developer app.
      &quot;A String&quot;,
    ],
    &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
    &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;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
      {
        &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
        &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;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
        &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
          {
            &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
            &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
          },
        ],
        &quot;expiresAt&quot;: &quot;A String&quot;, # Time the credential will expire in milliseconds since epoch.
        &quot;consumerKey&quot;: &quot;A String&quot;, # Consumer key.
        &quot;consumerSecret&quot;: &quot;A String&quot;, # Secret key.
        &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;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;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;,
    ],
  }

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

Returns:
  An object of the form:

    {
      &quot;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
      &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
      &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
      &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;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
      &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
      &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
      &quot;apiProducts&quot;: [ # List of API products associated with the developer app.
        &quot;A String&quot;,
      ],
      &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
      &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;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
        {
          &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
          &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;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
          &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
            {
              &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
              &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
            },
          ],
          &quot;expiresAt&quot;: &quot;A String&quot;, # Time the credential will expire in milliseconds since epoch.
          &quot;consumerKey&quot;: &quot;A String&quot;, # Consumer key.
          &quot;consumerSecret&quot;: &quot;A String&quot;, # Secret key.
          &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;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;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;,
      ],
    }</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;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
      &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
      &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
      &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;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
      &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
      &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
      &quot;apiProducts&quot;: [ # List of API products associated with the developer app.
        &quot;A String&quot;,
      ],
      &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
      &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;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
        {
          &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
          &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;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
          &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
            {
              &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
              &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
            },
          ],
          &quot;expiresAt&quot;: &quot;A String&quot;, # Time the credential will expire in milliseconds since epoch.
          &quot;consumerKey&quot;: &quot;A String&quot;, # Consumer key.
          &quot;consumerSecret&quot;: &quot;A String&quot;, # Secret key.
          &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;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;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;,
      ],
    }</pre>
</div>

<div class="method">
    <code class="details" id="generateKeyPairOrUpdateDeveloperAppStatus">generateKeyPairOrUpdateDeveloperAppStatus(name, body=None, action=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;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
    &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
    &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
    &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;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
    &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
    &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
    &quot;apiProducts&quot;: [ # List of API products associated with the developer app.
      &quot;A String&quot;,
    ],
    &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
    &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;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
      {
        &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
        &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;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
        &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
          {
            &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
            &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
          },
        ],
        &quot;expiresAt&quot;: &quot;A String&quot;, # Time the credential will expire in milliseconds since epoch.
        &quot;consumerKey&quot;: &quot;A String&quot;, # Consumer key.
        &quot;consumerSecret&quot;: &quot;A String&quot;, # Secret key.
        &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;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;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;,
    ],
  }

  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;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
      &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
      &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
      &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;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
      &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
      &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
      &quot;apiProducts&quot;: [ # List of API products associated with the developer app.
        &quot;A String&quot;,
      ],
      &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
      &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;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
        {
          &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
          &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;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
          &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
            {
              &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
              &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
            },
          ],
          &quot;expiresAt&quot;: &quot;A String&quot;, # Time the credential will expire in milliseconds since epoch.
          &quot;consumerKey&quot;: &quot;A String&quot;, # Consumer key.
          &quot;consumerSecret&quot;: &quot;A String&quot;, # Secret key.
          &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;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;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;,
      ],
    }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, query=None, entity=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)
  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.
  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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
      &quot;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
      &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
      &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
      &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;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
      &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
      &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
      &quot;apiProducts&quot;: [ # List of API products associated with the developer app.
        &quot;A String&quot;,
      ],
      &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
      &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;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
        {
          &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
          &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;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
          &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
            {
              &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
              &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
            },
          ],
          &quot;expiresAt&quot;: &quot;A String&quot;, # Time the credential will expire in milliseconds since epoch.
          &quot;consumerKey&quot;: &quot;A String&quot;, # Consumer key.
          &quot;consumerSecret&quot;: &quot;A String&quot;, # Secret key.
          &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;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;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;,
      ],
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, expand=None, shallowExpand=None, startKey=None, count=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)
  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.
  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.
  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;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
          &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
          &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
          &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;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
          &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
          &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
          &quot;apiProducts&quot;: [ # List of API products associated with the developer app.
            &quot;A String&quot;,
          ],
          &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
          &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;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
            {
              &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
              &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;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
              &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
                {
                  &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
                  &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
                },
              ],
              &quot;expiresAt&quot;: &quot;A String&quot;, # Time the credential will expire in milliseconds since epoch.
              &quot;consumerKey&quot;: &quot;A String&quot;, # Consumer key.
              &quot;consumerSecret&quot;: &quot;A String&quot;, # Secret key.
              &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;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;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;,
          ],
        },
    ],
  }</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;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
    &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
    &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
    &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;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
    &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
    &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
    &quot;apiProducts&quot;: [ # List of API products associated with the developer app.
      &quot;A String&quot;,
    ],
    &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
    &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;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
      {
        &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
        &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;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
        &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
          {
            &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
            &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
          },
        ],
        &quot;expiresAt&quot;: &quot;A String&quot;, # Time the credential will expire in milliseconds since epoch.
        &quot;consumerKey&quot;: &quot;A String&quot;, # Consumer key.
        &quot;consumerSecret&quot;: &quot;A String&quot;, # Secret key.
        &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;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;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;,
    ],
  }

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

Returns:
  An object of the form:

    {
      &quot;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was modified in milliseconds since epoch.
      &quot;appId&quot;: &quot;A String&quot;, # ID of the developer app.
      &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time the developer app was created in milliseconds since epoch.
      &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;status&quot;: &quot;A String&quot;, # Status of the credential. Valid values include `approved` or `revoked`.
      &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
      &quot;name&quot;: &quot;A String&quot;, # Name of the developer app.
      &quot;apiProducts&quot;: [ # List of API products associated with the developer app.
        &quot;A String&quot;,
      ],
      &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer.
      &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;credentials&quot;: [ # Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.
        {
          &quot;status&quot;: &quot;A String&quot;, # Status of the credential.
          &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;issuedAt&quot;: &quot;A String&quot;, # Time the credential was issued in milliseconds since epoch.
          &quot;apiProducts&quot;: [ # List of API products this credential can be used for.
            {
              &quot;status&quot;: &quot;A String&quot;, # Status of the API product.
              &quot;apiproduct&quot;: &quot;A String&quot;, # Name of the API product.
            },
          ],
          &quot;expiresAt&quot;: &quot;A String&quot;, # Time the credential will expire in milliseconds since epoch.
          &quot;consumerKey&quot;: &quot;A String&quot;, # Consumer key.
          &quot;consumerSecret&quot;: &quot;A String&quot;, # Secret key.
          &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;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;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;,
      ],
    }</pre>
</div>

</body></html>