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

<p class="toc_element">
  <code><a href="apigee_v1.organizations.developers.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.subscriptions.html">subscriptions()</a></code>
</p>
<p class="firstline">Returns the subscriptions 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 a developer. Once created, the developer can register an app and obtain an API key. At creation time, a developer is set as `active`. To change the developer status, use the SetDeveloperStatus API.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a developer. All apps and API keys associated with the developer are also removed. **Warning**: This API will permanently delete the developer and related artifacts. To avoid permanently deleting developers and their artifacts, set the developer status to `inactive` using the SetDeveloperStatus API. **Note**: The delete operation is asynchronous. The developer app is deleted immediately, but its associated resources, such as apps and API keys, may take anywhere from a few seconds to a few minutes to be deleted.</p>
<p class="toc_element">
  <code><a href="#get">get(name, action=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the developer details, including the developer's name, email address, apps, and other information. **Note**: The response includes only the first 100 developer apps.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, app=None, count=None, expand=None, ids=None, includeCompany=None, startKey=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all developers in an organization by email address. By default, the response does not include company developers. Set the `includeCompany` query parameter to `true` to include company developers. **Note**: A maximum of 1000 developers are returned in the response. You paginate the list of developers returned using the `startKey` and `count` query parameters.</p>
<p class="toc_element">
  <code><a href="#setDeveloperStatus">setDeveloperStatus(name, action=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the status of a developer. Valid values are `active` or `inactive`. A developer is `active` by default. If you set a developer's status to `inactive`, the API keys assigned to the developer apps are no longer valid even though the API keys are set to `approved`. Inactive developers can still sign in to the developer portal and create apps; however, any new API keys generated during app creation won't work. If successful, the API call returns the following HTTP status code: `204 No Content`</p>
<p class="toc_element">
  <code><a href="#update">update(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a developer. This API replaces the existing developer details with those specified in the request. Include or exclude any existing details that you want to retain or delete, respectively. The custom attribute limit is 18. **Note**: OAuth access tokens and Key Management Service (KMS) entities (apps, developers, and API products) are cached for 180 seconds (current default). Any custom attributes associated with these entities are cached for at least 180 seconds after the entity is accessed at runtime. Therefore, an `ExpiresIn` element on the OAuthV2 policy won't be able to expire an access token in less than 180 seconds.</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 developer. Once created, the developer can register an app and obtain an API key. At creation time, a developer is set as `active`. To change the developer status, use the SetDeveloperStatus API.

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

{
  &quot;accessType&quot;: &quot;A String&quot;, # Access type.
  &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
  &quot;apps&quot;: [ # List of apps associated with the developer.
    &quot;A String&quot;,
  ],
  &quot;attributes&quot;: [ # Optional. Developer attributes (name/value pairs). The custom attribute limit is 18.
    { # 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;companies&quot;: [ # List of companies associated with the developer.
    &quot;A String&quot;,
  ],
  &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time at which the developer was created in milliseconds since epoch.
  &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer. **Note**: IDs are generated internally by Apigee and are not guaranteed to stay the same over time.
  &quot;email&quot;: &quot;A String&quot;, # Required. Email address of the developer. This value is used to uniquely identify the developer in Apigee hybrid. Note that the email address has to be in lowercase only.
  &quot;firstName&quot;: &quot;A String&quot;, # Required. First name of the developer.
  &quot;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time at which the developer was last modified in milliseconds since epoch.
  &quot;lastName&quot;: &quot;A String&quot;, # Required. Last name of the developer.
  &quot;organizationName&quot;: &quot;A String&quot;, # Output only. Name of the Apigee organization in which the developer resides.
  &quot;status&quot;: &quot;A String&quot;, # Output only. Status of the developer. Valid values are `active` and `inactive`.
  &quot;userName&quot;: &quot;A String&quot;, # Required. User name of the developer. Not used by Apigee hybrid.
}

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

Returns:
  An object of the form:

    {
  &quot;accessType&quot;: &quot;A String&quot;, # Access type.
  &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
  &quot;apps&quot;: [ # List of apps associated with the developer.
    &quot;A String&quot;,
  ],
  &quot;attributes&quot;: [ # Optional. Developer attributes (name/value pairs). The custom attribute limit is 18.
    { # 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;companies&quot;: [ # List of companies associated with the developer.
    &quot;A String&quot;,
  ],
  &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time at which the developer was created in milliseconds since epoch.
  &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer. **Note**: IDs are generated internally by Apigee and are not guaranteed to stay the same over time.
  &quot;email&quot;: &quot;A String&quot;, # Required. Email address of the developer. This value is used to uniquely identify the developer in Apigee hybrid. Note that the email address has to be in lowercase only.
  &quot;firstName&quot;: &quot;A String&quot;, # Required. First name of the developer.
  &quot;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time at which the developer was last modified in milliseconds since epoch.
  &quot;lastName&quot;: &quot;A String&quot;, # Required. Last name of the developer.
  &quot;organizationName&quot;: &quot;A String&quot;, # Output only. Name of the Apigee organization in which the developer resides.
  &quot;status&quot;: &quot;A String&quot;, # Output only. Status of the developer. Valid values are `active` and `inactive`.
  &quot;userName&quot;: &quot;A String&quot;, # Required. User name of the developer. Not used by Apigee hybrid.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a developer. All apps and API keys associated with the developer are also removed. **Warning**: This API will permanently delete the developer and related artifacts. To avoid permanently deleting developers and their artifacts, set the developer status to `inactive` using the SetDeveloperStatus API. **Note**: The delete operation is asynchronous. The developer app is deleted immediately, but its associated resources, such as apps and API keys, may take anywhere from a few seconds to a few minutes to be deleted.

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

Returns:
  An object of the form:

    {
  &quot;accessType&quot;: &quot;A String&quot;, # Access type.
  &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
  &quot;apps&quot;: [ # List of apps associated with the developer.
    &quot;A String&quot;,
  ],
  &quot;attributes&quot;: [ # Optional. Developer attributes (name/value pairs). The custom attribute limit is 18.
    { # 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;companies&quot;: [ # List of companies associated with the developer.
    &quot;A String&quot;,
  ],
  &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time at which the developer was created in milliseconds since epoch.
  &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer. **Note**: IDs are generated internally by Apigee and are not guaranteed to stay the same over time.
  &quot;email&quot;: &quot;A String&quot;, # Required. Email address of the developer. This value is used to uniquely identify the developer in Apigee hybrid. Note that the email address has to be in lowercase only.
  &quot;firstName&quot;: &quot;A String&quot;, # Required. First name of the developer.
  &quot;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time at which the developer was last modified in milliseconds since epoch.
  &quot;lastName&quot;: &quot;A String&quot;, # Required. Last name of the developer.
  &quot;organizationName&quot;: &quot;A String&quot;, # Output only. Name of the Apigee organization in which the developer resides.
  &quot;status&quot;: &quot;A String&quot;, # Output only. Status of the developer. Valid values are `active` and `inactive`.
  &quot;userName&quot;: &quot;A String&quot;, # Required. User name of the developer. Not used by Apigee hybrid.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, action=None, x__xgafv=None)</code>
  <pre>Returns the developer details, including the developer&#x27;s name, email address, apps, and other information. **Note**: The response includes only the first 100 developer apps.

Args:
  name: string, Required. Email address of the developer. Use the following structure in your request: `organizations/{org}/developers/{developer_email}` (required)
  action: string, Status of the developer. Valid values are `active` or `inactive`.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;accessType&quot;: &quot;A String&quot;, # Access type.
  &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
  &quot;apps&quot;: [ # List of apps associated with the developer.
    &quot;A String&quot;,
  ],
  &quot;attributes&quot;: [ # Optional. Developer attributes (name/value pairs). The custom attribute limit is 18.
    { # 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;companies&quot;: [ # List of companies associated with the developer.
    &quot;A String&quot;,
  ],
  &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time at which the developer was created in milliseconds since epoch.
  &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer. **Note**: IDs are generated internally by Apigee and are not guaranteed to stay the same over time.
  &quot;email&quot;: &quot;A String&quot;, # Required. Email address of the developer. This value is used to uniquely identify the developer in Apigee hybrid. Note that the email address has to be in lowercase only.
  &quot;firstName&quot;: &quot;A String&quot;, # Required. First name of the developer.
  &quot;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time at which the developer was last modified in milliseconds since epoch.
  &quot;lastName&quot;: &quot;A String&quot;, # Required. Last name of the developer.
  &quot;organizationName&quot;: &quot;A String&quot;, # Output only. Name of the Apigee organization in which the developer resides.
  &quot;status&quot;: &quot;A String&quot;, # Output only. Status of the developer. Valid values are `active` and `inactive`.
  &quot;userName&quot;: &quot;A String&quot;, # Required. User name of the developer. Not used by Apigee hybrid.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, app=None, count=None, expand=None, ids=None, includeCompany=None, startKey=None, x__xgafv=None)</code>
  <pre>Lists all developers in an organization by email address. By default, the response does not include company developers. Set the `includeCompany` query parameter to `true` to include company developers. **Note**: A maximum of 1000 developers are returned in the response. You paginate the list of developers returned using the `startKey` and `count` query parameters.

Args:
  parent: string, Required. Name of the Apigee organization. Use the following structure in your request: `organizations/{org}`. (required)
  app: string, Optional. List only Developers that are associated with the app. Note that start_key, count are not applicable for this filter criteria.
  count: string, Optional. Number of developers to return in the API call. Use with the `startKey` parameter to provide more targeted filtering. The limit is 1000.
  expand: boolean, 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.
  ids: string, Optional. List of IDs to include, separated by commas.
  includeCompany: boolean, Flag that specifies whether to include company details in the response.
  startKey: string, **Note**: Must be used in conjunction with the `count` parameter. Email address of the developer from which to start displaying the list of developers. For example, if the an unfiltered list returns: ``` westley@example.com fezzik@example.com buttercup@example.com ``` and your `startKey` is `fezzik@example.com`, the list returned will be ``` fezzik@example.com buttercup@example.com ```
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;developer&quot;: [ # List of developers.
    {
      &quot;accessType&quot;: &quot;A String&quot;, # Access type.
      &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
      &quot;apps&quot;: [ # List of apps associated with the developer.
        &quot;A String&quot;,
      ],
      &quot;attributes&quot;: [ # Optional. Developer attributes (name/value pairs). The custom attribute limit is 18.
        { # 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;companies&quot;: [ # List of companies associated with the developer.
        &quot;A String&quot;,
      ],
      &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time at which the developer was created in milliseconds since epoch.
      &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer. **Note**: IDs are generated internally by Apigee and are not guaranteed to stay the same over time.
      &quot;email&quot;: &quot;A String&quot;, # Required. Email address of the developer. This value is used to uniquely identify the developer in Apigee hybrid. Note that the email address has to be in lowercase only.
      &quot;firstName&quot;: &quot;A String&quot;, # Required. First name of the developer.
      &quot;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time at which the developer was last modified in milliseconds since epoch.
      &quot;lastName&quot;: &quot;A String&quot;, # Required. Last name of the developer.
      &quot;organizationName&quot;: &quot;A String&quot;, # Output only. Name of the Apigee organization in which the developer resides.
      &quot;status&quot;: &quot;A String&quot;, # Output only. Status of the developer. Valid values are `active` and `inactive`.
      &quot;userName&quot;: &quot;A String&quot;, # Required. User name of the developer. Not used by Apigee hybrid.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="setDeveloperStatus">setDeveloperStatus(name, action=None, x__xgafv=None)</code>
  <pre>Sets the status of a developer. Valid values are `active` or `inactive`. A developer is `active` by default. If you set a developer&#x27;s status to `inactive`, the API keys assigned to the developer apps are no longer valid even though the API keys are set to `approved`. Inactive developers can still sign in to the developer portal and create apps; however, any new API keys generated during app creation won&#x27;t work. If successful, the API call returns the following HTTP status code: `204 No Content`

Args:
  name: string, Required. Email address of the developer. Use the following structure in your request: `organizations/{org}/developers/{developer_email}` (required)
  action: string, Status of the developer. Valid values are `active` and `inactive`.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(name, body=None, x__xgafv=None)</code>
  <pre>Updates a developer. This API replaces the existing developer details with those specified in the request. Include or exclude any existing details that you want to retain or delete, respectively. The custom attribute limit is 18. **Note**: OAuth access tokens and Key Management Service (KMS) entities (apps, developers, and API products) are cached for 180 seconds (current default). Any custom attributes associated with these entities are cached for at least 180 seconds after the entity is accessed at runtime. Therefore, an `ExpiresIn` element on the OAuthV2 policy won&#x27;t be able to expire an access token in less than 180 seconds.

Args:
  name: string, Required. Email address 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;accessType&quot;: &quot;A String&quot;, # Access type.
  &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
  &quot;apps&quot;: [ # List of apps associated with the developer.
    &quot;A String&quot;,
  ],
  &quot;attributes&quot;: [ # Optional. Developer attributes (name/value pairs). The custom attribute limit is 18.
    { # 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;companies&quot;: [ # List of companies associated with the developer.
    &quot;A String&quot;,
  ],
  &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time at which the developer was created in milliseconds since epoch.
  &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer. **Note**: IDs are generated internally by Apigee and are not guaranteed to stay the same over time.
  &quot;email&quot;: &quot;A String&quot;, # Required. Email address of the developer. This value is used to uniquely identify the developer in Apigee hybrid. Note that the email address has to be in lowercase only.
  &quot;firstName&quot;: &quot;A String&quot;, # Required. First name of the developer.
  &quot;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time at which the developer was last modified in milliseconds since epoch.
  &quot;lastName&quot;: &quot;A String&quot;, # Required. Last name of the developer.
  &quot;organizationName&quot;: &quot;A String&quot;, # Output only. Name of the Apigee organization in which the developer resides.
  &quot;status&quot;: &quot;A String&quot;, # Output only. Status of the developer. Valid values are `active` and `inactive`.
  &quot;userName&quot;: &quot;A String&quot;, # Required. User name of the developer. Not used by Apigee hybrid.
}

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

Returns:
  An object of the form:

    {
  &quot;accessType&quot;: &quot;A String&quot;, # Access type.
  &quot;appFamily&quot;: &quot;A String&quot;, # Developer app family.
  &quot;apps&quot;: [ # List of apps associated with the developer.
    &quot;A String&quot;,
  ],
  &quot;attributes&quot;: [ # Optional. Developer attributes (name/value pairs). The custom attribute limit is 18.
    { # 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;companies&quot;: [ # List of companies associated with the developer.
    &quot;A String&quot;,
  ],
  &quot;createdAt&quot;: &quot;A String&quot;, # Output only. Time at which the developer was created in milliseconds since epoch.
  &quot;developerId&quot;: &quot;A String&quot;, # ID of the developer. **Note**: IDs are generated internally by Apigee and are not guaranteed to stay the same over time.
  &quot;email&quot;: &quot;A String&quot;, # Required. Email address of the developer. This value is used to uniquely identify the developer in Apigee hybrid. Note that the email address has to be in lowercase only.
  &quot;firstName&quot;: &quot;A String&quot;, # Required. First name of the developer.
  &quot;lastModifiedAt&quot;: &quot;A String&quot;, # Output only. Time at which the developer was last modified in milliseconds since epoch.
  &quot;lastName&quot;: &quot;A String&quot;, # Required. Last name of the developer.
  &quot;organizationName&quot;: &quot;A String&quot;, # Output only. Name of the Apigee organization in which the developer resides.
  &quot;status&quot;: &quot;A String&quot;, # Output only. Status of the developer. Valid values are `active` and `inactive`.
  &quot;userName&quot;: &quot;A String&quot;, # Required. User name of the developer. Not used by Apigee hybrid.
}</pre>
</div>

</body></html>