<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="apihub_v1.html">API hub API</a> . <a href="apihub_v1.projects.html">projects</a> . <a href="apihub_v1.projects.locations.html">locations</a> . <a href="apihub_v1.projects.locations.plugins.html">plugins</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="apihub_v1.projects.locations.plugins.instances.html">instances()</a></code>
</p>
<p class="firstline">Returns the instances Resource.</p>

<p class="toc_element">
  <code><a href="apihub_v1.projects.locations.plugins.styleGuide.html">styleGuide()</a></code>
</p>
<p class="firstline">Returns the styleGuide 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, pluginId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Create an API Hub plugin resource in the API hub. Once a plugin is created, it can be used to create plugin instances.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Delete a Plugin in API hub. Note, only user owned plugins can be deleted via this method.</p>
<p class="toc_element">
  <code><a href="#disable">disable(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Disables a plugin. The `state` of the plugin after disabling is `DISABLED`</p>
<p class="toc_element">
  <code><a href="#enable">enable(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Enables a plugin. The `state` of the plugin after enabling is `ENABLED`</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get an API Hub plugin.</p>
<p class="toc_element">
  <code><a href="#getStyleGuide">getStyleGuide(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get the style guide being used for linting.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">List all the plugins in a given project and location.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#updateStyleGuide">updateStyleGuide(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update the styleGuide to be used for liniting in by API hub.</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, pluginId=None, x__xgafv=None)</code>
  <pre>Create an API Hub plugin resource in the API hub. Once a plugin is created, it can be used to create plugin instances.

Args:
  parent: string, Required. The parent resource where this plugin will be created. Format: `projects/{project}/locations/{location}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # A plugin resource in the API Hub.
  &quot;actionsConfig&quot;: [ # Optional. The configuration of actions supported by the plugin. **REQUIRED**: This field must be provided when creating or updating a Plugin. The server will reject requests if this field is missing.
    { # PluginActionConfig represents the configuration of an action supported by a plugin.
      &quot;description&quot;: &quot;A String&quot;, # Required. The description of the operation performed by the action.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the action.
      &quot;id&quot;: &quot;A String&quot;, # Required. The id of the action.
      &quot;triggerMode&quot;: &quot;A String&quot;, # Required. The trigger mode supported by the action.
    },
  ],
  &quot;configTemplate&quot;: { # ConfigTemplate represents the configuration template for a plugin. # Optional. The configuration template for the plugin.
    &quot;additionalConfigTemplate&quot;: [ # Optional. The list of additional configuration variables for the plugin&#x27;s configuration.
      { # ConfigVariableTemplate represents a configuration variable template present in a Plugin Config.
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description.
        &quot;enumOptions&quot;: [ # Optional. Enum options. To be populated if `ValueType` is `ENUM`.
          { # ConfigValueOption represents an option for a config variable of type enum or multi select.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the option.
            &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name of the option.
            &quot;id&quot;: &quot;A String&quot;, # Required. Id of the option.
          },
        ],
        &quot;id&quot;: &quot;A String&quot;, # Required. ID of the config variable. Must be unique within the configuration.
        &quot;multiSelectOptions&quot;: [ # Optional. Multi select options. To be populated if `ValueType` is `MULTI_SELECT`.
          { # ConfigValueOption represents an option for a config variable of type enum or multi select.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the option.
            &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name of the option.
            &quot;id&quot;: &quot;A String&quot;, # Required. Id of the option.
          },
        ],
        &quot;required&quot;: True or False, # Optional. Flag represents that this `ConfigVariable` must be provided for a PluginInstance.
        &quot;validationRegex&quot;: &quot;A String&quot;, # Optional. Regular expression in RE2 syntax used for validating the `value` of a `ConfigVariable`.
        &quot;valueType&quot;: &quot;A String&quot;, # Required. Type of the parameter: string, int, bool etc.
      },
    ],
    &quot;authConfigTemplate&quot;: { # AuthConfigTemplate represents the authentication template for a plugin. # Optional. The authentication template for the plugin.
      &quot;serviceAccount&quot;: { # Config for Google service account authentication. # Optional. The service account of the plugin hosting service. This service account should be granted the required permissions on the Auth Config parameters provided while creating the plugin instances corresponding to this plugin. For example, if the plugin instance auth config requires a secret manager secret, the service account should be granted the secretmanager.versions.access permission on the corresponding secret, if the plugin instance auth config contains a service account, the service account should be granted the iam.serviceAccounts.getAccessToken permission on the corresponding service account.
        &quot;serviceAccount&quot;: &quot;A String&quot;, # Required. The service account to be used for authenticating request. The `iam.serviceAccounts.getAccessToken` permission should be granted on this service account to the impersonator service account.
      },
      &quot;supportedAuthTypes&quot;: [ # Required. The list of authentication types supported by the plugin.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Timestamp indicating when the plugin was created.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The plugin description. Max length is 2000 characters (Unicode code points).
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the plugin. Max length is 50 characters (Unicode code points).
  &quot;documentation&quot;: { # Documentation details. # Optional. The documentation of the plugin, that explains how to set up and use the plugin.
    &quot;externalUri&quot;: &quot;A String&quot;, # Optional. The uri of the externally hosted documentation.
  },
  &quot;gatewayType&quot;: &quot;A String&quot;, # Optional. The type of the gateway.
  &quot;hostingService&quot;: { # The information related to the service implemented by the plugin developer, used to invoke the plugin&#x27;s functionality. # Optional. This field is optional. It is used to notify the plugin hosting service for any lifecycle changes of the plugin instance and trigger execution of plugin instance actions in case of API hub managed actions. This field should be provided if the plugin instance lifecycle of the developed plugin needs to be managed from API hub. Also, in this case the plugin hosting service interface needs to be implemented. This field should not be provided if the plugin wants to manage plugin instance lifecycle events outside of hub interface and use plugin framework for only registering of plugin and plugin instances to capture the source of data into hub. Note, in this case the plugin hosting service interface is not required to be implemented. Also, the plugin instance lifecycle actions will be disabled from API hub&#x27;s UI.
    &quot;serviceUri&quot;: &quot;A String&quot;, # Optional. The URI of the service implemented by the plugin developer, used to invoke the plugin&#x27;s functionality. This information is only required for user defined plugins.
  },
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The name of the plugin. Format: `projects/{project}/locations/{location}/plugins/{plugin}`
  &quot;ownershipType&quot;: &quot;A String&quot;, # Output only. The type of the plugin, indicating whether it is &#x27;SYSTEM_OWNED&#x27; or &#x27;USER_OWNED&#x27;.
  &quot;pluginCategory&quot;: &quot;A String&quot;, # Optional. The category of the plugin, identifying its primary category or purpose. This field is required for all plugins.
  &quot;state&quot;: &quot;A String&quot;, # Output only. Represents the state of the plugin. Note this field will not be set for plugins developed via plugin framework as the state will be managed at plugin instance level.
  &quot;type&quot;: { # The attribute values associated with resource. # Optional. The type of the API. This maps to the following system defined attribute: `projects/{project}/locations/{location}/attributes/system-plugin-type` attribute. The number of allowed values for this attribute will be based on the cardinality of the attribute. The same can be retrieved via GetAttribute API. All values should be from the list of allowed values defined for the attribute. Note this field is not required for plugins developed via plugin framework.
    &quot;attribute&quot;: &quot;A String&quot;, # Output only. The name of the attribute. Format: projects/{project}/locations/{location}/attributes/{attribute}
    &quot;enumValues&quot;: { # The attribute values of data type enum. # The attribute values associated with a resource in case attribute data type is enum.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is enum.
        { # The value that can be assigned to the attribute when the data type is enum.
          &quot;description&quot;: &quot;A String&quot;, # Optional. The detailed description of the allowed value.
          &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the allowed value.
          &quot;id&quot;: &quot;A String&quot;, # Required. The ID of the allowed value. * If provided, the same will be used. The service will throw an error if the specified id is already used by another allowed value in the same attribute resource. * If not provided, a system generated id derived from the display name will be used. In this case, the service will handle conflict resolution by adding a system generated suffix in case of duplicates. This value should be 4-63 characters, and valid characters are /a-z-/.
          &quot;immutable&quot;: True or False, # Optional. When set to true, the allowed value cannot be updated or deleted by the user. It can only be true for System defined attributes.
        },
      ],
    },
    &quot;jsonValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is JSON.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
        &quot;A String&quot;,
      ],
    },
    &quot;stringValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is string.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
        &quot;A String&quot;,
      ],
    },
    &quot;uriValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is URL, URI or IP, like gs://bucket-name/object-name.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Timestamp indicating when the plugin was last updated.
}

  pluginId: string, Optional. The ID to use for the Plugin resource, which will become the final component of the Plugin&#x27;s resource name. This field is optional. * If provided, the same will be used. The service will throw an error if the specified id is already used by another Plugin resource in the API hub instance. * If not provided, a system generated id will be used. This value should be 4-63 characters, overall resource name which will be of format `projects/{project}/locations/{location}/plugins/{plugin}`, its length is limited to 1000 characters and valid characters are /a-z[0-9]-_/.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A plugin resource in the API Hub.
  &quot;actionsConfig&quot;: [ # Optional. The configuration of actions supported by the plugin. **REQUIRED**: This field must be provided when creating or updating a Plugin. The server will reject requests if this field is missing.
    { # PluginActionConfig represents the configuration of an action supported by a plugin.
      &quot;description&quot;: &quot;A String&quot;, # Required. The description of the operation performed by the action.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the action.
      &quot;id&quot;: &quot;A String&quot;, # Required. The id of the action.
      &quot;triggerMode&quot;: &quot;A String&quot;, # Required. The trigger mode supported by the action.
    },
  ],
  &quot;configTemplate&quot;: { # ConfigTemplate represents the configuration template for a plugin. # Optional. The configuration template for the plugin.
    &quot;additionalConfigTemplate&quot;: [ # Optional. The list of additional configuration variables for the plugin&#x27;s configuration.
      { # ConfigVariableTemplate represents a configuration variable template present in a Plugin Config.
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description.
        &quot;enumOptions&quot;: [ # Optional. Enum options. To be populated if `ValueType` is `ENUM`.
          { # ConfigValueOption represents an option for a config variable of type enum or multi select.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the option.
            &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name of the option.
            &quot;id&quot;: &quot;A String&quot;, # Required. Id of the option.
          },
        ],
        &quot;id&quot;: &quot;A String&quot;, # Required. ID of the config variable. Must be unique within the configuration.
        &quot;multiSelectOptions&quot;: [ # Optional. Multi select options. To be populated if `ValueType` is `MULTI_SELECT`.
          { # ConfigValueOption represents an option for a config variable of type enum or multi select.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the option.
            &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name of the option.
            &quot;id&quot;: &quot;A String&quot;, # Required. Id of the option.
          },
        ],
        &quot;required&quot;: True or False, # Optional. Flag represents that this `ConfigVariable` must be provided for a PluginInstance.
        &quot;validationRegex&quot;: &quot;A String&quot;, # Optional. Regular expression in RE2 syntax used for validating the `value` of a `ConfigVariable`.
        &quot;valueType&quot;: &quot;A String&quot;, # Required. Type of the parameter: string, int, bool etc.
      },
    ],
    &quot;authConfigTemplate&quot;: { # AuthConfigTemplate represents the authentication template for a plugin. # Optional. The authentication template for the plugin.
      &quot;serviceAccount&quot;: { # Config for Google service account authentication. # Optional. The service account of the plugin hosting service. This service account should be granted the required permissions on the Auth Config parameters provided while creating the plugin instances corresponding to this plugin. For example, if the plugin instance auth config requires a secret manager secret, the service account should be granted the secretmanager.versions.access permission on the corresponding secret, if the plugin instance auth config contains a service account, the service account should be granted the iam.serviceAccounts.getAccessToken permission on the corresponding service account.
        &quot;serviceAccount&quot;: &quot;A String&quot;, # Required. The service account to be used for authenticating request. The `iam.serviceAccounts.getAccessToken` permission should be granted on this service account to the impersonator service account.
      },
      &quot;supportedAuthTypes&quot;: [ # Required. The list of authentication types supported by the plugin.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Timestamp indicating when the plugin was created.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The plugin description. Max length is 2000 characters (Unicode code points).
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the plugin. Max length is 50 characters (Unicode code points).
  &quot;documentation&quot;: { # Documentation details. # Optional. The documentation of the plugin, that explains how to set up and use the plugin.
    &quot;externalUri&quot;: &quot;A String&quot;, # Optional. The uri of the externally hosted documentation.
  },
  &quot;gatewayType&quot;: &quot;A String&quot;, # Optional. The type of the gateway.
  &quot;hostingService&quot;: { # The information related to the service implemented by the plugin developer, used to invoke the plugin&#x27;s functionality. # Optional. This field is optional. It is used to notify the plugin hosting service for any lifecycle changes of the plugin instance and trigger execution of plugin instance actions in case of API hub managed actions. This field should be provided if the plugin instance lifecycle of the developed plugin needs to be managed from API hub. Also, in this case the plugin hosting service interface needs to be implemented. This field should not be provided if the plugin wants to manage plugin instance lifecycle events outside of hub interface and use plugin framework for only registering of plugin and plugin instances to capture the source of data into hub. Note, in this case the plugin hosting service interface is not required to be implemented. Also, the plugin instance lifecycle actions will be disabled from API hub&#x27;s UI.
    &quot;serviceUri&quot;: &quot;A String&quot;, # Optional. The URI of the service implemented by the plugin developer, used to invoke the plugin&#x27;s functionality. This information is only required for user defined plugins.
  },
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The name of the plugin. Format: `projects/{project}/locations/{location}/plugins/{plugin}`
  &quot;ownershipType&quot;: &quot;A String&quot;, # Output only. The type of the plugin, indicating whether it is &#x27;SYSTEM_OWNED&#x27; or &#x27;USER_OWNED&#x27;.
  &quot;pluginCategory&quot;: &quot;A String&quot;, # Optional. The category of the plugin, identifying its primary category or purpose. This field is required for all plugins.
  &quot;state&quot;: &quot;A String&quot;, # Output only. Represents the state of the plugin. Note this field will not be set for plugins developed via plugin framework as the state will be managed at plugin instance level.
  &quot;type&quot;: { # The attribute values associated with resource. # Optional. The type of the API. This maps to the following system defined attribute: `projects/{project}/locations/{location}/attributes/system-plugin-type` attribute. The number of allowed values for this attribute will be based on the cardinality of the attribute. The same can be retrieved via GetAttribute API. All values should be from the list of allowed values defined for the attribute. Note this field is not required for plugins developed via plugin framework.
    &quot;attribute&quot;: &quot;A String&quot;, # Output only. The name of the attribute. Format: projects/{project}/locations/{location}/attributes/{attribute}
    &quot;enumValues&quot;: { # The attribute values of data type enum. # The attribute values associated with a resource in case attribute data type is enum.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is enum.
        { # The value that can be assigned to the attribute when the data type is enum.
          &quot;description&quot;: &quot;A String&quot;, # Optional. The detailed description of the allowed value.
          &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the allowed value.
          &quot;id&quot;: &quot;A String&quot;, # Required. The ID of the allowed value. * If provided, the same will be used. The service will throw an error if the specified id is already used by another allowed value in the same attribute resource. * If not provided, a system generated id derived from the display name will be used. In this case, the service will handle conflict resolution by adding a system generated suffix in case of duplicates. This value should be 4-63 characters, and valid characters are /a-z-/.
          &quot;immutable&quot;: True or False, # Optional. When set to true, the allowed value cannot be updated or deleted by the user. It can only be true for System defined attributes.
        },
      ],
    },
    &quot;jsonValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is JSON.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
        &quot;A String&quot;,
      ],
    },
    &quot;stringValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is string.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
        &quot;A String&quot;,
      ],
    },
    &quot;uriValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is URL, URI or IP, like gs://bucket-name/object-name.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Timestamp indicating when the plugin was last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Delete a Plugin in API hub. Note, only user owned plugins can be deleted via this method.

Args:
  name: string, Required. The name of the Plugin resource to delete. Format: `projects/{project}/locations/{location}/plugins/{plugin}` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="disable">disable(name, body=None, x__xgafv=None)</code>
  <pre>Disables a plugin. The `state` of the plugin after disabling is `DISABLED`

Args:
  name: string, Required. The name of the plugin to disable. Format: `projects/{project}/locations/{location}/plugins/{plugin}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # The DisablePlugin method&#x27;s request.
}

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

Returns:
  An object of the form:

    { # A plugin resource in the API Hub.
  &quot;actionsConfig&quot;: [ # Optional. The configuration of actions supported by the plugin. **REQUIRED**: This field must be provided when creating or updating a Plugin. The server will reject requests if this field is missing.
    { # PluginActionConfig represents the configuration of an action supported by a plugin.
      &quot;description&quot;: &quot;A String&quot;, # Required. The description of the operation performed by the action.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the action.
      &quot;id&quot;: &quot;A String&quot;, # Required. The id of the action.
      &quot;triggerMode&quot;: &quot;A String&quot;, # Required. The trigger mode supported by the action.
    },
  ],
  &quot;configTemplate&quot;: { # ConfigTemplate represents the configuration template for a plugin. # Optional. The configuration template for the plugin.
    &quot;additionalConfigTemplate&quot;: [ # Optional. The list of additional configuration variables for the plugin&#x27;s configuration.
      { # ConfigVariableTemplate represents a configuration variable template present in a Plugin Config.
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description.
        &quot;enumOptions&quot;: [ # Optional. Enum options. To be populated if `ValueType` is `ENUM`.
          { # ConfigValueOption represents an option for a config variable of type enum or multi select.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the option.
            &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name of the option.
            &quot;id&quot;: &quot;A String&quot;, # Required. Id of the option.
          },
        ],
        &quot;id&quot;: &quot;A String&quot;, # Required. ID of the config variable. Must be unique within the configuration.
        &quot;multiSelectOptions&quot;: [ # Optional. Multi select options. To be populated if `ValueType` is `MULTI_SELECT`.
          { # ConfigValueOption represents an option for a config variable of type enum or multi select.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the option.
            &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name of the option.
            &quot;id&quot;: &quot;A String&quot;, # Required. Id of the option.
          },
        ],
        &quot;required&quot;: True or False, # Optional. Flag represents that this `ConfigVariable` must be provided for a PluginInstance.
        &quot;validationRegex&quot;: &quot;A String&quot;, # Optional. Regular expression in RE2 syntax used for validating the `value` of a `ConfigVariable`.
        &quot;valueType&quot;: &quot;A String&quot;, # Required. Type of the parameter: string, int, bool etc.
      },
    ],
    &quot;authConfigTemplate&quot;: { # AuthConfigTemplate represents the authentication template for a plugin. # Optional. The authentication template for the plugin.
      &quot;serviceAccount&quot;: { # Config for Google service account authentication. # Optional. The service account of the plugin hosting service. This service account should be granted the required permissions on the Auth Config parameters provided while creating the plugin instances corresponding to this plugin. For example, if the plugin instance auth config requires a secret manager secret, the service account should be granted the secretmanager.versions.access permission on the corresponding secret, if the plugin instance auth config contains a service account, the service account should be granted the iam.serviceAccounts.getAccessToken permission on the corresponding service account.
        &quot;serviceAccount&quot;: &quot;A String&quot;, # Required. The service account to be used for authenticating request. The `iam.serviceAccounts.getAccessToken` permission should be granted on this service account to the impersonator service account.
      },
      &quot;supportedAuthTypes&quot;: [ # Required. The list of authentication types supported by the plugin.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Timestamp indicating when the plugin was created.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The plugin description. Max length is 2000 characters (Unicode code points).
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the plugin. Max length is 50 characters (Unicode code points).
  &quot;documentation&quot;: { # Documentation details. # Optional. The documentation of the plugin, that explains how to set up and use the plugin.
    &quot;externalUri&quot;: &quot;A String&quot;, # Optional. The uri of the externally hosted documentation.
  },
  &quot;gatewayType&quot;: &quot;A String&quot;, # Optional. The type of the gateway.
  &quot;hostingService&quot;: { # The information related to the service implemented by the plugin developer, used to invoke the plugin&#x27;s functionality. # Optional. This field is optional. It is used to notify the plugin hosting service for any lifecycle changes of the plugin instance and trigger execution of plugin instance actions in case of API hub managed actions. This field should be provided if the plugin instance lifecycle of the developed plugin needs to be managed from API hub. Also, in this case the plugin hosting service interface needs to be implemented. This field should not be provided if the plugin wants to manage plugin instance lifecycle events outside of hub interface and use plugin framework for only registering of plugin and plugin instances to capture the source of data into hub. Note, in this case the plugin hosting service interface is not required to be implemented. Also, the plugin instance lifecycle actions will be disabled from API hub&#x27;s UI.
    &quot;serviceUri&quot;: &quot;A String&quot;, # Optional. The URI of the service implemented by the plugin developer, used to invoke the plugin&#x27;s functionality. This information is only required for user defined plugins.
  },
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The name of the plugin. Format: `projects/{project}/locations/{location}/plugins/{plugin}`
  &quot;ownershipType&quot;: &quot;A String&quot;, # Output only. The type of the plugin, indicating whether it is &#x27;SYSTEM_OWNED&#x27; or &#x27;USER_OWNED&#x27;.
  &quot;pluginCategory&quot;: &quot;A String&quot;, # Optional. The category of the plugin, identifying its primary category or purpose. This field is required for all plugins.
  &quot;state&quot;: &quot;A String&quot;, # Output only. Represents the state of the plugin. Note this field will not be set for plugins developed via plugin framework as the state will be managed at plugin instance level.
  &quot;type&quot;: { # The attribute values associated with resource. # Optional. The type of the API. This maps to the following system defined attribute: `projects/{project}/locations/{location}/attributes/system-plugin-type` attribute. The number of allowed values for this attribute will be based on the cardinality of the attribute. The same can be retrieved via GetAttribute API. All values should be from the list of allowed values defined for the attribute. Note this field is not required for plugins developed via plugin framework.
    &quot;attribute&quot;: &quot;A String&quot;, # Output only. The name of the attribute. Format: projects/{project}/locations/{location}/attributes/{attribute}
    &quot;enumValues&quot;: { # The attribute values of data type enum. # The attribute values associated with a resource in case attribute data type is enum.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is enum.
        { # The value that can be assigned to the attribute when the data type is enum.
          &quot;description&quot;: &quot;A String&quot;, # Optional. The detailed description of the allowed value.
          &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the allowed value.
          &quot;id&quot;: &quot;A String&quot;, # Required. The ID of the allowed value. * If provided, the same will be used. The service will throw an error if the specified id is already used by another allowed value in the same attribute resource. * If not provided, a system generated id derived from the display name will be used. In this case, the service will handle conflict resolution by adding a system generated suffix in case of duplicates. This value should be 4-63 characters, and valid characters are /a-z-/.
          &quot;immutable&quot;: True or False, # Optional. When set to true, the allowed value cannot be updated or deleted by the user. It can only be true for System defined attributes.
        },
      ],
    },
    &quot;jsonValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is JSON.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
        &quot;A String&quot;,
      ],
    },
    &quot;stringValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is string.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
        &quot;A String&quot;,
      ],
    },
    &quot;uriValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is URL, URI or IP, like gs://bucket-name/object-name.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Timestamp indicating when the plugin was last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="enable">enable(name, body=None, x__xgafv=None)</code>
  <pre>Enables a plugin. The `state` of the plugin after enabling is `ENABLED`

Args:
  name: string, Required. The name of the plugin to enable. Format: `projects/{project}/locations/{location}/plugins/{plugin}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # The EnablePlugin method&#x27;s request.
}

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

Returns:
  An object of the form:

    { # A plugin resource in the API Hub.
  &quot;actionsConfig&quot;: [ # Optional. The configuration of actions supported by the plugin. **REQUIRED**: This field must be provided when creating or updating a Plugin. The server will reject requests if this field is missing.
    { # PluginActionConfig represents the configuration of an action supported by a plugin.
      &quot;description&quot;: &quot;A String&quot;, # Required. The description of the operation performed by the action.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the action.
      &quot;id&quot;: &quot;A String&quot;, # Required. The id of the action.
      &quot;triggerMode&quot;: &quot;A String&quot;, # Required. The trigger mode supported by the action.
    },
  ],
  &quot;configTemplate&quot;: { # ConfigTemplate represents the configuration template for a plugin. # Optional. The configuration template for the plugin.
    &quot;additionalConfigTemplate&quot;: [ # Optional. The list of additional configuration variables for the plugin&#x27;s configuration.
      { # ConfigVariableTemplate represents a configuration variable template present in a Plugin Config.
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description.
        &quot;enumOptions&quot;: [ # Optional. Enum options. To be populated if `ValueType` is `ENUM`.
          { # ConfigValueOption represents an option for a config variable of type enum or multi select.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the option.
            &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name of the option.
            &quot;id&quot;: &quot;A String&quot;, # Required. Id of the option.
          },
        ],
        &quot;id&quot;: &quot;A String&quot;, # Required. ID of the config variable. Must be unique within the configuration.
        &quot;multiSelectOptions&quot;: [ # Optional. Multi select options. To be populated if `ValueType` is `MULTI_SELECT`.
          { # ConfigValueOption represents an option for a config variable of type enum or multi select.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the option.
            &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name of the option.
            &quot;id&quot;: &quot;A String&quot;, # Required. Id of the option.
          },
        ],
        &quot;required&quot;: True or False, # Optional. Flag represents that this `ConfigVariable` must be provided for a PluginInstance.
        &quot;validationRegex&quot;: &quot;A String&quot;, # Optional. Regular expression in RE2 syntax used for validating the `value` of a `ConfigVariable`.
        &quot;valueType&quot;: &quot;A String&quot;, # Required. Type of the parameter: string, int, bool etc.
      },
    ],
    &quot;authConfigTemplate&quot;: { # AuthConfigTemplate represents the authentication template for a plugin. # Optional. The authentication template for the plugin.
      &quot;serviceAccount&quot;: { # Config for Google service account authentication. # Optional. The service account of the plugin hosting service. This service account should be granted the required permissions on the Auth Config parameters provided while creating the plugin instances corresponding to this plugin. For example, if the plugin instance auth config requires a secret manager secret, the service account should be granted the secretmanager.versions.access permission on the corresponding secret, if the plugin instance auth config contains a service account, the service account should be granted the iam.serviceAccounts.getAccessToken permission on the corresponding service account.
        &quot;serviceAccount&quot;: &quot;A String&quot;, # Required. The service account to be used for authenticating request. The `iam.serviceAccounts.getAccessToken` permission should be granted on this service account to the impersonator service account.
      },
      &quot;supportedAuthTypes&quot;: [ # Required. The list of authentication types supported by the plugin.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Timestamp indicating when the plugin was created.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The plugin description. Max length is 2000 characters (Unicode code points).
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the plugin. Max length is 50 characters (Unicode code points).
  &quot;documentation&quot;: { # Documentation details. # Optional. The documentation of the plugin, that explains how to set up and use the plugin.
    &quot;externalUri&quot;: &quot;A String&quot;, # Optional. The uri of the externally hosted documentation.
  },
  &quot;gatewayType&quot;: &quot;A String&quot;, # Optional. The type of the gateway.
  &quot;hostingService&quot;: { # The information related to the service implemented by the plugin developer, used to invoke the plugin&#x27;s functionality. # Optional. This field is optional. It is used to notify the plugin hosting service for any lifecycle changes of the plugin instance and trigger execution of plugin instance actions in case of API hub managed actions. This field should be provided if the plugin instance lifecycle of the developed plugin needs to be managed from API hub. Also, in this case the plugin hosting service interface needs to be implemented. This field should not be provided if the plugin wants to manage plugin instance lifecycle events outside of hub interface and use plugin framework for only registering of plugin and plugin instances to capture the source of data into hub. Note, in this case the plugin hosting service interface is not required to be implemented. Also, the plugin instance lifecycle actions will be disabled from API hub&#x27;s UI.
    &quot;serviceUri&quot;: &quot;A String&quot;, # Optional. The URI of the service implemented by the plugin developer, used to invoke the plugin&#x27;s functionality. This information is only required for user defined plugins.
  },
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The name of the plugin. Format: `projects/{project}/locations/{location}/plugins/{plugin}`
  &quot;ownershipType&quot;: &quot;A String&quot;, # Output only. The type of the plugin, indicating whether it is &#x27;SYSTEM_OWNED&#x27; or &#x27;USER_OWNED&#x27;.
  &quot;pluginCategory&quot;: &quot;A String&quot;, # Optional. The category of the plugin, identifying its primary category or purpose. This field is required for all plugins.
  &quot;state&quot;: &quot;A String&quot;, # Output only. Represents the state of the plugin. Note this field will not be set for plugins developed via plugin framework as the state will be managed at plugin instance level.
  &quot;type&quot;: { # The attribute values associated with resource. # Optional. The type of the API. This maps to the following system defined attribute: `projects/{project}/locations/{location}/attributes/system-plugin-type` attribute. The number of allowed values for this attribute will be based on the cardinality of the attribute. The same can be retrieved via GetAttribute API. All values should be from the list of allowed values defined for the attribute. Note this field is not required for plugins developed via plugin framework.
    &quot;attribute&quot;: &quot;A String&quot;, # Output only. The name of the attribute. Format: projects/{project}/locations/{location}/attributes/{attribute}
    &quot;enumValues&quot;: { # The attribute values of data type enum. # The attribute values associated with a resource in case attribute data type is enum.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is enum.
        { # The value that can be assigned to the attribute when the data type is enum.
          &quot;description&quot;: &quot;A String&quot;, # Optional. The detailed description of the allowed value.
          &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the allowed value.
          &quot;id&quot;: &quot;A String&quot;, # Required. The ID of the allowed value. * If provided, the same will be used. The service will throw an error if the specified id is already used by another allowed value in the same attribute resource. * If not provided, a system generated id derived from the display name will be used. In this case, the service will handle conflict resolution by adding a system generated suffix in case of duplicates. This value should be 4-63 characters, and valid characters are /a-z-/.
          &quot;immutable&quot;: True or False, # Optional. When set to true, the allowed value cannot be updated or deleted by the user. It can only be true for System defined attributes.
        },
      ],
    },
    &quot;jsonValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is JSON.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
        &quot;A String&quot;,
      ],
    },
    &quot;stringValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is string.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
        &quot;A String&quot;,
      ],
    },
    &quot;uriValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is URL, URI or IP, like gs://bucket-name/object-name.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Timestamp indicating when the plugin was last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Get an API Hub plugin.

Args:
  name: string, Required. The name of the plugin to retrieve. Format: `projects/{project}/locations/{location}/plugins/{plugin}`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A plugin resource in the API Hub.
  &quot;actionsConfig&quot;: [ # Optional. The configuration of actions supported by the plugin. **REQUIRED**: This field must be provided when creating or updating a Plugin. The server will reject requests if this field is missing.
    { # PluginActionConfig represents the configuration of an action supported by a plugin.
      &quot;description&quot;: &quot;A String&quot;, # Required. The description of the operation performed by the action.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the action.
      &quot;id&quot;: &quot;A String&quot;, # Required. The id of the action.
      &quot;triggerMode&quot;: &quot;A String&quot;, # Required. The trigger mode supported by the action.
    },
  ],
  &quot;configTemplate&quot;: { # ConfigTemplate represents the configuration template for a plugin. # Optional. The configuration template for the plugin.
    &quot;additionalConfigTemplate&quot;: [ # Optional. The list of additional configuration variables for the plugin&#x27;s configuration.
      { # ConfigVariableTemplate represents a configuration variable template present in a Plugin Config.
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description.
        &quot;enumOptions&quot;: [ # Optional. Enum options. To be populated if `ValueType` is `ENUM`.
          { # ConfigValueOption represents an option for a config variable of type enum or multi select.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the option.
            &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name of the option.
            &quot;id&quot;: &quot;A String&quot;, # Required. Id of the option.
          },
        ],
        &quot;id&quot;: &quot;A String&quot;, # Required. ID of the config variable. Must be unique within the configuration.
        &quot;multiSelectOptions&quot;: [ # Optional. Multi select options. To be populated if `ValueType` is `MULTI_SELECT`.
          { # ConfigValueOption represents an option for a config variable of type enum or multi select.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the option.
            &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name of the option.
            &quot;id&quot;: &quot;A String&quot;, # Required. Id of the option.
          },
        ],
        &quot;required&quot;: True or False, # Optional. Flag represents that this `ConfigVariable` must be provided for a PluginInstance.
        &quot;validationRegex&quot;: &quot;A String&quot;, # Optional. Regular expression in RE2 syntax used for validating the `value` of a `ConfigVariable`.
        &quot;valueType&quot;: &quot;A String&quot;, # Required. Type of the parameter: string, int, bool etc.
      },
    ],
    &quot;authConfigTemplate&quot;: { # AuthConfigTemplate represents the authentication template for a plugin. # Optional. The authentication template for the plugin.
      &quot;serviceAccount&quot;: { # Config for Google service account authentication. # Optional. The service account of the plugin hosting service. This service account should be granted the required permissions on the Auth Config parameters provided while creating the plugin instances corresponding to this plugin. For example, if the plugin instance auth config requires a secret manager secret, the service account should be granted the secretmanager.versions.access permission on the corresponding secret, if the plugin instance auth config contains a service account, the service account should be granted the iam.serviceAccounts.getAccessToken permission on the corresponding service account.
        &quot;serviceAccount&quot;: &quot;A String&quot;, # Required. The service account to be used for authenticating request. The `iam.serviceAccounts.getAccessToken` permission should be granted on this service account to the impersonator service account.
      },
      &quot;supportedAuthTypes&quot;: [ # Required. The list of authentication types supported by the plugin.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Timestamp indicating when the plugin was created.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The plugin description. Max length is 2000 characters (Unicode code points).
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the plugin. Max length is 50 characters (Unicode code points).
  &quot;documentation&quot;: { # Documentation details. # Optional. The documentation of the plugin, that explains how to set up and use the plugin.
    &quot;externalUri&quot;: &quot;A String&quot;, # Optional. The uri of the externally hosted documentation.
  },
  &quot;gatewayType&quot;: &quot;A String&quot;, # Optional. The type of the gateway.
  &quot;hostingService&quot;: { # The information related to the service implemented by the plugin developer, used to invoke the plugin&#x27;s functionality. # Optional. This field is optional. It is used to notify the plugin hosting service for any lifecycle changes of the plugin instance and trigger execution of plugin instance actions in case of API hub managed actions. This field should be provided if the plugin instance lifecycle of the developed plugin needs to be managed from API hub. Also, in this case the plugin hosting service interface needs to be implemented. This field should not be provided if the plugin wants to manage plugin instance lifecycle events outside of hub interface and use plugin framework for only registering of plugin and plugin instances to capture the source of data into hub. Note, in this case the plugin hosting service interface is not required to be implemented. Also, the plugin instance lifecycle actions will be disabled from API hub&#x27;s UI.
    &quot;serviceUri&quot;: &quot;A String&quot;, # Optional. The URI of the service implemented by the plugin developer, used to invoke the plugin&#x27;s functionality. This information is only required for user defined plugins.
  },
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The name of the plugin. Format: `projects/{project}/locations/{location}/plugins/{plugin}`
  &quot;ownershipType&quot;: &quot;A String&quot;, # Output only. The type of the plugin, indicating whether it is &#x27;SYSTEM_OWNED&#x27; or &#x27;USER_OWNED&#x27;.
  &quot;pluginCategory&quot;: &quot;A String&quot;, # Optional. The category of the plugin, identifying its primary category or purpose. This field is required for all plugins.
  &quot;state&quot;: &quot;A String&quot;, # Output only. Represents the state of the plugin. Note this field will not be set for plugins developed via plugin framework as the state will be managed at plugin instance level.
  &quot;type&quot;: { # The attribute values associated with resource. # Optional. The type of the API. This maps to the following system defined attribute: `projects/{project}/locations/{location}/attributes/system-plugin-type` attribute. The number of allowed values for this attribute will be based on the cardinality of the attribute. The same can be retrieved via GetAttribute API. All values should be from the list of allowed values defined for the attribute. Note this field is not required for plugins developed via plugin framework.
    &quot;attribute&quot;: &quot;A String&quot;, # Output only. The name of the attribute. Format: projects/{project}/locations/{location}/attributes/{attribute}
    &quot;enumValues&quot;: { # The attribute values of data type enum. # The attribute values associated with a resource in case attribute data type is enum.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is enum.
        { # The value that can be assigned to the attribute when the data type is enum.
          &quot;description&quot;: &quot;A String&quot;, # Optional. The detailed description of the allowed value.
          &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the allowed value.
          &quot;id&quot;: &quot;A String&quot;, # Required. The ID of the allowed value. * If provided, the same will be used. The service will throw an error if the specified id is already used by another allowed value in the same attribute resource. * If not provided, a system generated id derived from the display name will be used. In this case, the service will handle conflict resolution by adding a system generated suffix in case of duplicates. This value should be 4-63 characters, and valid characters are /a-z-/.
          &quot;immutable&quot;: True or False, # Optional. When set to true, the allowed value cannot be updated or deleted by the user. It can only be true for System defined attributes.
        },
      ],
    },
    &quot;jsonValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is JSON.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
        &quot;A String&quot;,
      ],
    },
    &quot;stringValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is string.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
        &quot;A String&quot;,
      ],
    },
    &quot;uriValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is URL, URI or IP, like gs://bucket-name/object-name.
      &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Timestamp indicating when the plugin was last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="getStyleGuide">getStyleGuide(name, x__xgafv=None)</code>
  <pre>Get the style guide being used for linting.

Args:
  name: string, Required. The name of the spec to retrieve. Format: `projects/{project}/locations/{location}/plugins/{plugin}/styleGuide`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a singleton style guide resource to be used for linting Open API specs.
  &quot;contents&quot;: { # The style guide contents. # Required. Input only. The contents of the uploaded style guide.
    &quot;contents&quot;: &quot;A String&quot;, # Required. The contents of the style guide.
    &quot;mimeType&quot;: &quot;A String&quot;, # Required. The mime type of the content.
  },
  &quot;linter&quot;: &quot;A String&quot;, # Required. Target linter for the style guide.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The name of the style guide. Format: `projects/{project}/locations/{location}/plugins/{plugin}/styleGuide`
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>List all the plugins in a given project and location.

Args:
  parent: string, Required. The parent resource where this plugin will be created. Format: `projects/{project}/locations/{location}`. (required)
  filter: string, Optional. An expression that filters the list of plugins. A filter expression consists of a field name, a comparison operator, and a value for filtering. The value must be a string. The comparison operator must be one of: `&lt;`, `&gt;` or `=`. Filters are not case sensitive. The following fields in the `Plugins` are eligible for filtering: * `plugin_category` - The category of the Plugin. Allowed comparison operators: `=`. Expressions are combined with either `AND` logic operator or `OR` logical operator but not both of them together i.e. only one of the `AND` or `OR` operator can be used throughout the filter string and both the operators cannot be used together. No other logical operators are supported. At most three filter fields are allowed in the filter string and if provided more than that then `INVALID_ARGUMENT` error is returned by the API. Here are a few examples: * `plugin_category = ON_RAMP` - The plugin is of category on ramp.
  pageSize: integer, Optional. The maximum number of hub plugins to return. The service may return fewer than this value. If unspecified, at most 50 hub plugins will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.
  pageToken: string, Optional. A page token, received from a previous `ListPlugins` call. Provide this to retrieve the subsequent page. When paginating, all other parameters (except page_size) provided to `ListPlugins` must match the call that provided the page token.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The ListPlugins method&#x27;s response.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.
  &quot;plugins&quot;: [ # The plugins from the specified parent resource.
    { # A plugin resource in the API Hub.
      &quot;actionsConfig&quot;: [ # Optional. The configuration of actions supported by the plugin. **REQUIRED**: This field must be provided when creating or updating a Plugin. The server will reject requests if this field is missing.
        { # PluginActionConfig represents the configuration of an action supported by a plugin.
          &quot;description&quot;: &quot;A String&quot;, # Required. The description of the operation performed by the action.
          &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the action.
          &quot;id&quot;: &quot;A String&quot;, # Required. The id of the action.
          &quot;triggerMode&quot;: &quot;A String&quot;, # Required. The trigger mode supported by the action.
        },
      ],
      &quot;configTemplate&quot;: { # ConfigTemplate represents the configuration template for a plugin. # Optional. The configuration template for the plugin.
        &quot;additionalConfigTemplate&quot;: [ # Optional. The list of additional configuration variables for the plugin&#x27;s configuration.
          { # ConfigVariableTemplate represents a configuration variable template present in a Plugin Config.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description.
            &quot;enumOptions&quot;: [ # Optional. Enum options. To be populated if `ValueType` is `ENUM`.
              { # ConfigValueOption represents an option for a config variable of type enum or multi select.
                &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the option.
                &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name of the option.
                &quot;id&quot;: &quot;A String&quot;, # Required. Id of the option.
              },
            ],
            &quot;id&quot;: &quot;A String&quot;, # Required. ID of the config variable. Must be unique within the configuration.
            &quot;multiSelectOptions&quot;: [ # Optional. Multi select options. To be populated if `ValueType` is `MULTI_SELECT`.
              { # ConfigValueOption represents an option for a config variable of type enum or multi select.
                &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the option.
                &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name of the option.
                &quot;id&quot;: &quot;A String&quot;, # Required. Id of the option.
              },
            ],
            &quot;required&quot;: True or False, # Optional. Flag represents that this `ConfigVariable` must be provided for a PluginInstance.
            &quot;validationRegex&quot;: &quot;A String&quot;, # Optional. Regular expression in RE2 syntax used for validating the `value` of a `ConfigVariable`.
            &quot;valueType&quot;: &quot;A String&quot;, # Required. Type of the parameter: string, int, bool etc.
          },
        ],
        &quot;authConfigTemplate&quot;: { # AuthConfigTemplate represents the authentication template for a plugin. # Optional. The authentication template for the plugin.
          &quot;serviceAccount&quot;: { # Config for Google service account authentication. # Optional. The service account of the plugin hosting service. This service account should be granted the required permissions on the Auth Config parameters provided while creating the plugin instances corresponding to this plugin. For example, if the plugin instance auth config requires a secret manager secret, the service account should be granted the secretmanager.versions.access permission on the corresponding secret, if the plugin instance auth config contains a service account, the service account should be granted the iam.serviceAccounts.getAccessToken permission on the corresponding service account.
            &quot;serviceAccount&quot;: &quot;A String&quot;, # Required. The service account to be used for authenticating request. The `iam.serviceAccounts.getAccessToken` permission should be granted on this service account to the impersonator service account.
          },
          &quot;supportedAuthTypes&quot;: [ # Required. The list of authentication types supported by the plugin.
            &quot;A String&quot;,
          ],
        },
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Timestamp indicating when the plugin was created.
      &quot;description&quot;: &quot;A String&quot;, # Optional. The plugin description. Max length is 2000 characters (Unicode code points).
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the plugin. Max length is 50 characters (Unicode code points).
      &quot;documentation&quot;: { # Documentation details. # Optional. The documentation of the plugin, that explains how to set up and use the plugin.
        &quot;externalUri&quot;: &quot;A String&quot;, # Optional. The uri of the externally hosted documentation.
      },
      &quot;gatewayType&quot;: &quot;A String&quot;, # Optional. The type of the gateway.
      &quot;hostingService&quot;: { # The information related to the service implemented by the plugin developer, used to invoke the plugin&#x27;s functionality. # Optional. This field is optional. It is used to notify the plugin hosting service for any lifecycle changes of the plugin instance and trigger execution of plugin instance actions in case of API hub managed actions. This field should be provided if the plugin instance lifecycle of the developed plugin needs to be managed from API hub. Also, in this case the plugin hosting service interface needs to be implemented. This field should not be provided if the plugin wants to manage plugin instance lifecycle events outside of hub interface and use plugin framework for only registering of plugin and plugin instances to capture the source of data into hub. Note, in this case the plugin hosting service interface is not required to be implemented. Also, the plugin instance lifecycle actions will be disabled from API hub&#x27;s UI.
        &quot;serviceUri&quot;: &quot;A String&quot;, # Optional. The URI of the service implemented by the plugin developer, used to invoke the plugin&#x27;s functionality. This information is only required for user defined plugins.
      },
      &quot;name&quot;: &quot;A String&quot;, # Identifier. The name of the plugin. Format: `projects/{project}/locations/{location}/plugins/{plugin}`
      &quot;ownershipType&quot;: &quot;A String&quot;, # Output only. The type of the plugin, indicating whether it is &#x27;SYSTEM_OWNED&#x27; or &#x27;USER_OWNED&#x27;.
      &quot;pluginCategory&quot;: &quot;A String&quot;, # Optional. The category of the plugin, identifying its primary category or purpose. This field is required for all plugins.
      &quot;state&quot;: &quot;A String&quot;, # Output only. Represents the state of the plugin. Note this field will not be set for plugins developed via plugin framework as the state will be managed at plugin instance level.
      &quot;type&quot;: { # The attribute values associated with resource. # Optional. The type of the API. This maps to the following system defined attribute: `projects/{project}/locations/{location}/attributes/system-plugin-type` attribute. The number of allowed values for this attribute will be based on the cardinality of the attribute. The same can be retrieved via GetAttribute API. All values should be from the list of allowed values defined for the attribute. Note this field is not required for plugins developed via plugin framework.
        &quot;attribute&quot;: &quot;A String&quot;, # Output only. The name of the attribute. Format: projects/{project}/locations/{location}/attributes/{attribute}
        &quot;enumValues&quot;: { # The attribute values of data type enum. # The attribute values associated with a resource in case attribute data type is enum.
          &quot;values&quot;: [ # Required. The attribute values in case attribute data type is enum.
            { # The value that can be assigned to the attribute when the data type is enum.
              &quot;description&quot;: &quot;A String&quot;, # Optional. The detailed description of the allowed value.
              &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the allowed value.
              &quot;id&quot;: &quot;A String&quot;, # Required. The ID of the allowed value. * If provided, the same will be used. The service will throw an error if the specified id is already used by another allowed value in the same attribute resource. * If not provided, a system generated id derived from the display name will be used. In this case, the service will handle conflict resolution by adding a system generated suffix in case of duplicates. This value should be 4-63 characters, and valid characters are /a-z-/.
              &quot;immutable&quot;: True or False, # Optional. When set to true, the allowed value cannot be updated or deleted by the user. It can only be true for System defined attributes.
            },
          ],
        },
        &quot;jsonValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is JSON.
          &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
            &quot;A String&quot;,
          ],
        },
        &quot;stringValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is string.
          &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
            &quot;A String&quot;,
          ],
        },
        &quot;uriValues&quot;: { # The attribute values of data type string or JSON. # The attribute values associated with a resource in case attribute data type is URL, URI or IP, like gs://bucket-name/object-name.
          &quot;values&quot;: [ # Required. The attribute values in case attribute data type is string or JSON.
            &quot;A String&quot;,
          ],
        },
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Timestamp indicating when the plugin was last updated.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</code>
  <pre>Retrieves the next page of results.

        Args:
          previous_request: The request for the previous page. (required)
          previous_response: The response from the request for the previous page. (required)

        Returns:
          A request object that you can call &#x27;execute()&#x27; on to request the next
          page. Returns None if there are no more items in the collection.
        </pre>
</div>

<div class="method">
    <code class="details" id="updateStyleGuide">updateStyleGuide(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Update the styleGuide to be used for liniting in by API hub.

Args:
  name: string, Identifier. The name of the style guide. Format: `projects/{project}/locations/{location}/plugins/{plugin}/styleGuide` (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents a singleton style guide resource to be used for linting Open API specs.
  &quot;contents&quot;: { # The style guide contents. # Required. Input only. The contents of the uploaded style guide.
    &quot;contents&quot;: &quot;A String&quot;, # Required. The contents of the style guide.
    &quot;mimeType&quot;: &quot;A String&quot;, # Required. The mime type of the content.
  },
  &quot;linter&quot;: &quot;A String&quot;, # Required. Target linter for the style guide.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The name of the style guide. Format: `projects/{project}/locations/{location}/plugins/{plugin}/styleGuide`
}

  updateMask: string, Optional. The list of fields to update.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a singleton style guide resource to be used for linting Open API specs.
  &quot;contents&quot;: { # The style guide contents. # Required. Input only. The contents of the uploaded style guide.
    &quot;contents&quot;: &quot;A String&quot;, # Required. The contents of the style guide.
    &quot;mimeType&quot;: &quot;A String&quot;, # Required. The mime type of the content.
  },
  &quot;linter&quot;: &quot;A String&quot;, # Required. Target linter for the style guide.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The name of the style guide. Format: `projects/{project}/locations/{location}/plugins/{plugin}/styleGuide`
}</pre>
</div>

</body></html>