NAME
    gcloud alpha apihub plugins create - create a Plugin

SYNOPSIS
    gcloud alpha apihub plugins create (PLUGIN : --location=LOCATION)
        --display-name=DISPLAY_NAME
        [--actions-config=[description=DESCRIPTION],
          [displayName=DISPLAYNAME],[id=ID],[triggerMode=TRIGGERMODE]]
        [--description=DESCRIPTION]
        [--documentation-external-uri=DOCUMENTATION_EXTERNAL_URI]
        [--gateway-type=GATEWAY_TYPE]
        [--hosting-service-uri=HOSTING_SERVICE_URI]
        [--plugin-category=PLUGIN_CATEGORY]
        [--auth-config-template-supported-types=[AUTH_CONFIG_TEMPLATE_SUPPORTED_TYPES,
          ...]
          --config-template-additional=[description=DESCRIPTION],
          [enumOptions=ENUMOPTIONS],[id=ID],
          [multiSelectOptions=MULTISELECTOPTIONS],[required=REQUIRED],
          [validationRegex=VALIDATIONREGEX],[valueType=VALUETYPE]]
        [--enum-values=[description=DESCRIPTION],
          [displayName=DISPLAYNAME],[id=ID],[immutable=IMMUTABLE]
          | --json-values=[JSON_VALUES,...]
          | --string-values=[STRING_VALUES,...]
          | --uri-values=[URI_VALUES,...]] [GCLOUD_WIDE_FLAG ...]

DESCRIPTION
    (ALPHA) Create a plugin

    Note: The positional argument for Plugin ID is currently not supported.
    Please use the --plugin flag to specify the Plugin ID.

EXAMPLES
    To create a plugin with the ID my-plugin, run:

        $ gcloud alpha apihub plugins create --plugin=my-plugin \
            --display-name="My Plugin" --type=apigee --project=my-project \
            --location=us-central1

POSITIONAL ARGUMENTS
     Plugin resource - Identifier. The name of the plugin. Format:
     projects/{project}/locations/{location}/plugins/{plugin} The arguments in
     this group can be used to specify the attributes of this resource. (NOTE)
     Some attributes are not given arguments in this group but can be set in
     other ways.

     To set the project attribute:
      ◆ provide the argument plugin on the command line with a fully
        specified name;
      ◆ provide the argument --project on the command line;
      ◆ set the property core/project.

     This must be specified.

       PLUGIN
          ID of the plugin or fully qualified identifier for the plugin.

          To set the plugin attribute:
          ▸ provide the argument plugin on the command line.

          This positional argument must be specified if any of the other
          arguments in this group are specified.

       --location=LOCATION
          The location id of the plugin resource.

          To set the location attribute:
          ▸ provide the argument plugin on the command line with a fully
            specified name;
          ▸ provide the argument --location on the command line.

REQUIRED FLAGS
     --display-name=DISPLAY_NAME
        The display name of the plugin. Max length is 50 characters (Unicode
        code points).

OPTIONAL FLAGS
     --actions-config=[description=DESCRIPTION],[displayName=DISPLAYNAME],[id=ID],[triggerMode=TRIGGERMODE]
        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.

         description
            The description of the operation performed by the action.

         displayName
            The display name of the action.

         id
            The id of the action.

         triggerMode
            The trigger mode supported by the action.

        Shorthand Example:

            --actions-config=description=string,displayName=string,id=string,triggerMode=string --actions-config=description=string,displayName=string,id=string,triggerMode=string

        JSON Example:

            --actions-config='[{"description": "string", "displayName": "string", "id": "string", "triggerMode": "string"}]'

        File Example:

            --actions-config=path_to_file.(yaml|json)

     --description=DESCRIPTION
        The plugin description. Max length is 2000 characters (Unicode code
        points).

     Documentation details.

     --documentation-external-uri=DOCUMENTATION_EXTERNAL_URI
        The uri of the externally hosted documentation.

     --gateway-type=GATEWAY_TYPE
        The type of the gateway. GATEWAY_TYPE must be one of:

         api-discovery
            The gateway type is API Discovery.
         apigee-edge-private-cloud
            The gateway type is Apigee Edge Private Cloud.
         apigee-edge-public-cloud
            The gateway type is Apigee Edge Public Cloud.
         apigee-x-and-hybrid
            The gateway type is Apigee X and Hybrid.
         cloud-api-gateway
            The gateway type is Cloud API Gateway.
         cloud-endpoints
            The gateway type is Cloud Endpoints.
         others
            The gateway type for any other types of gateways.

     The information related to the service implemented by the plugin
     developer, used to invoke the plugin's functionality.

     --hosting-service-uri=HOSTING_SERVICE_URI
        The URI of the service implemented by the plugin developer, used to
        invoke the plugin's functionality. This information is only required
        for user defined plugins.

     --plugin-category=PLUGIN_CATEGORY
        The category of the plugin, identifying its primary category or
        purpose. This field is required for all plugins. PLUGIN_CATEGORY must
        be one of:

         api-gateway
            API_GATEWAY plugins represent plugins built for API Gateways like
            Apigee.
         api-producer
            API_PRODUCER plugins represent plugins built for API Producers like
            Cloud Run, Application Integration etc.

     ConfigTemplate represents the configuration template for a plugin.

     AuthConfigTemplate represents the authentication template for a plugin.

     --auth-config-template-supported-types=[AUTH_CONFIG_TEMPLATE_SUPPORTED_TYPES,...]
        The list of authentication types supported by the plugin.
        AUTH_CONFIG_TEMPLATE_SUPPORTED_TYPES must be one of:

         api-key
            API Key authentication.
         google-service-account
            Google service account authentication.
         no-auth
            No authentication.
         oauth2-client-credentials
            Oauth 2.0 client credentials grant authentication.
         user-password
            Username and password authentication.

     --config-template-additional=[description=DESCRIPTION],[enumOptions=ENUMOPTIONS],[id=ID],[multiSelectOptions=MULTISELECTOPTIONS],[required=REQUIRED],[validationRegex=VALIDATIONREGEX],[valueType=VALUETYPE]
        The list of additional configuration variables for the plugin's
        configuration.

         description
            Description.

         enumOptions
            Enum options. To be populated if ValueType is ENUM.

             description
                Description of the option.

             displayName
                Display name of the option.

             id
                Id of the option.

         id
            ID of the config variable. Must be unique within the configuration.

         multiSelectOptions
            Multi select options. To be populated if ValueType is MULTI_SELECT.

             description
                Description of the option.

             displayName
                Display name of the option.

             id
                Id of the option.

         required
            Flag represents that this ConfigVariable must be provided for a
            PluginInstance.

         validationRegex
            Regular expression in RE2 syntax used for validating the value of a
            ConfigVariable.

         valueType
            Type of the parameter: string, int, bool etc.

        Shorthand Example:

            --config-template-additional=description=string,enumOptions=[{description=string,displayName=string,id=string}],id=string,multiSelectOptions=[{description=string,displayName=string,id=string}],required=boolean,validationRegex=string,valueType=string --config-template-additional=description=string,enumOptions=[{description=string,displayName=string,id=string}],id=string,multiSelectOptions=[{description=string,displayName=string,id=string}],required=boolean,validationRegex=string,valueType=string

        JSON Example:

            --config-template-additional='[{"description": "string", "enumOptions": [{"description": "string", "displayName": "string", "id": "string"}], "id": "string", "multiSelectOptions": [{"description": "string", "displayName": "string", "id": "string"}], "required": boolean, "validationRegex": "string", "valueType": "string"}]'

        File Example:

            --config-template-additional=path_to_file.(yaml|json)

     The attribute values associated with resource.

     Arguments for the Value.

     At most one of these can be specified:

       The attribute values of data type enum.

       --enum-values=[description=DESCRIPTION],[displayName=DISPLAYNAME],[id=ID],[immutable=IMMUTABLE]
          Required, The attribute values in case attribute data type is enum.

           description
              The detailed description of the allowed value.

           displayName
              The display name of the allowed value.

           id
              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][0-9]-/.

           immutable
              When set to true, the allowed value cannot be updated or deleted
              by the user. It can only be true for System defined attributes.

          Shorthand Example:

              --enum-values=description=string,displayName=string,id=string,immutable=boolean --enum-values=description=string,displayName=string,id=string,immutable=boolean

          JSON Example:

              --enum-values='[{"description": "string", "displayName": "string", "id": "string", "immutable": boolean}]'

          File Example:

              --enum-values=path_to_file.(yaml|json)

       The attribute values of data type string or JSON.

       --json-values=[JSON_VALUES,...]
          The attribute values in case attribute data type is string or JSON.

       The attribute values of data type string or JSON.

       --string-values=[STRING_VALUES,...]
          The attribute values in case attribute data type is string or JSON.

       The attribute values of data type string or JSON.

       --uri-values=[URI_VALUES,...]
          The attribute values in case attribute data type is string or JSON.

GCLOUD WIDE FLAGS
    These flags are available to all commands: --access-token-file, --account,
    --billing-project, --configuration, --flags-file, --flatten, --format,
    --help, --impersonate-service-account, --log-http, --project, --quiet,
    --trace-token, --user-output-enabled, --verbosity.

    Run $ gcloud help for details.

API REFERENCE
    This command uses the apihub/v1 API. The full documentation for this API
    can be found at:
    https://cloud.google.com/apigee/docs/api-hub/what-is-api-hub

NOTES
    This command is currently in alpha and might change without notice. If this
    command fails with API permission errors despite specifying the correct
    project, you might be trying to access an API with an invitation-only early
    access allowlist. This variant is also available:

        $ gcloud apihub plugins create

