# Apigee API . organizations . appgroups . apps . keys . apiproducts

## Instance Methods

Close httplib2 connections.

Removes an API product from an app's consumer key. After the API product is removed, the app cannot access the API resources defined in that API product. **Note**: The consumer key is not removed, only its association with the API product.

Approves or revokes the consumer key for an API product. After a consumer key is approved, the app can use it to access APIs. A consumer key that is revoked or pending cannot be used to access an API. Any access tokens associated with a revoked consumer key will remain active. However, Apigee checks the status of the consumer key and if set to `revoked` will not allow access to the API.

### Method Details

`close()`

    Close httplib2 connections.

`delete(name, x__xgafv=None)`

    Removes an API product from an app's consumer key. After the API product is removed, the app cannot access the API resources defined in that API product. **Note**: The consumer key is not removed, only its association with the API product.

    Args:
      name: string, Required. Parent of the AppGroup app key. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}/keys/{key}/apiproducts/{apiproduct}` (required)
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # AppGroupAppKey contains all the information associated with the credentials.
      "apiProducts": [ # Output only. List of API products and its status for which the credential can be used. **Note**: Use UpdateAppGroupAppKeyApiProductRequest API to make the association after the consumer key and secret are created.
        { # APIProductAssociation has the API product and its administrative state association.
          "apiproduct": "A String", # API product to be associated with the credential.
          "status": "A String", # The API product credential associated status. Valid values are `approved` or `revoked`.
        },
      ],
      "attributes": [ # List of attributes associated with the credential.
        { # Key-value pair to store extra metadata.
          "name": "A String", # API key of the attribute.
          "value": "A String", # Value of the attribute.
        },
      ],
      "consumerKey": "A String", # Immutable. Consumer key.
      "consumerSecret": "A String", # Secret key.
      "expiresAt": "A String", # Output only. Time the AppGroup app expires in milliseconds since epoch.
      "expiresInSeconds": "A String", # Immutable. Expiration time, in seconds, for the consumer key. If not set or left to the default value of `-1`, the API key never expires. The expiration time can't be updated after it is set.
      "issuedAt": "A String", # Output only. Time the AppGroup app was created in milliseconds since epoch.
      "scopes": [ # Scopes to apply to the app. The specified scope names must already be defined for the API product that you associate with the app.
        "A String",
      ],
      "status": "A String", # Status of the credential. Valid values include `approved` or `revoked`.
    }

`updateAppGroupAppKeyApiProduct(name, action=None, x__xgafv=None)`

    Approves or revokes the consumer key for an API product. After a consumer key is approved, the app can use it to access APIs. A consumer key that is revoked or pending cannot be used to access an API. Any access tokens associated with a revoked consumer key will remain active. However, Apigee checks the status of the consumer key and if set to `revoked` will not allow access to the API.

    Args:
      name: string, Required. Name of the API product in the developer app key in the following format: `organizations/{org}/appgroups/{app_group_name}/apps/{app}/keys/{key}/apiproducts/{apiproduct}` (required)
      action: string, Approve or revoke the consumer key by setting this value to `approve` or `revoke` respectively. The `Content-Type` header, if set, must be set to `application/octet-stream`, with empty body.
      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); }
    }