googleapis/google/cloud/apihub/v1/common_fields.proto
Google APIs 6b78856d96 feat: Introduce new services for data collection (ApiHubCollect) and curation (ApiHubCurate)
feat: Add full lifecycle management for API Operations within API Versions (Create, Update, Delete)
feat: Significantly expand Plugin and Plugin Instance management capabilities, including creation, execution, and lifecycle control
feat: Enable Deletion of ApiHub Instances via the Provisioning service
feat: Enhance list filtering options across various resources (APIs, Versions, Specs, Operations, Deployments) with support for user-defined attributes
feat: Add new fields and enums to resources to support richer metadata, including source tracking (SourceMetadata), plugin configurations (AuthConfig, ConfigVariable), new attributes, and additional deployment details
feat: Make CMEK configuration optional for ApiHub Instances, defaulting to GMEK
docs: Update field descriptions, comments, and links in existing services

PiperOrigin-RevId: 805646287
2025-09-10 21:03:10 -07:00

2034 lines
75 KiB
Protocol Buffer

// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.cloud.apihub.v1;
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/protobuf/timestamp.proto";
option csharp_namespace = "Google.Cloud.ApiHub.V1";
option go_package = "cloud.google.com/go/apihub/apiv1/apihubpb;apihubpb";
option java_multiple_files = true;
option java_outer_classname = "CommonFieldsProto";
option java_package = "com.google.cloud.apihub.v1";
option php_namespace = "Google\\Cloud\\ApiHub\\V1";
option ruby_package = "Google::Cloud::ApiHub::V1";
option (google.api.resource_definition) = {
type: "aiplatform.googleapis.com/Extension"
pattern: "projects/{project}/locations/{location}/extensions/{extension}"
};
option (google.api.resource_definition) = {
type: "iam.googleapis.com/ServiceAccount"
pattern: "projects/{project}/serviceAccounts/{service_account}"
};
// Lint state represents success or failure for linting.
enum LintState {
// Lint state unspecified.
LINT_STATE_UNSPECIFIED = 0;
// Linting was completed successfully.
LINT_STATE_SUCCESS = 1;
// Linting encountered errors.
LINT_STATE_ERROR = 2;
}
// Enumeration of linter types.
enum Linter {
// Linter type unspecified.
LINTER_UNSPECIFIED = 0;
// Linter type spectral.
SPECTRAL = 1;
// Linter type other.
OTHER = 2;
}
// Severity of the issue.
enum Severity {
// Severity unspecified.
SEVERITY_UNSPECIFIED = 0;
// Severity error.
SEVERITY_ERROR = 1;
// Severity warning.
SEVERITY_WARNING = 2;
// Severity info.
SEVERITY_INFO = 3;
// Severity hint.
SEVERITY_HINT = 4;
}
// AuthType represents the authentication type.
enum AuthType {
// Authentication type not specified.
AUTH_TYPE_UNSPECIFIED = 0;
// No authentication.
NO_AUTH = 1;
// Google service account authentication.
GOOGLE_SERVICE_ACCOUNT = 2;
// Username and password authentication.
USER_PASSWORD = 3;
// API Key authentication.
API_KEY = 4;
// Oauth 2.0 client credentials grant authentication.
OAUTH2_CLIENT_CREDENTIALS = 5;
}
// Enum for the plugin category.
enum PluginCategory {
// Default unspecified plugin type.
PLUGIN_CATEGORY_UNSPECIFIED = 0;
// API_GATEWAY plugins represent plugins built for API Gateways like Apigee.
API_GATEWAY = 1;
// API_PRODUCER plugins represent plugins built for API Producers like
// Cloud Run, Application Integration etc.
API_PRODUCER = 2;
}
// An API resource in the API Hub.
message Api {
option (google.api.resource) = {
type: "apihub.googleapis.com/Api"
pattern: "projects/{project}/locations/{location}/apis/{api}"
plural: "apis"
singular: "api"
};
// Identifier. The name of the API resource in the API Hub.
//
// Format:
// `projects/{project}/locations/{location}/apis/{api}`
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// Required. The display name of the API resource.
string display_name = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. The description of the API resource.
string description = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. The documentation for the API resource.
Documentation documentation = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Owner details for the API resource.
Owner owner = 5 [(google.api.field_behavior) = OPTIONAL];
// Output only. The list of versions present in an API resource.
// Note: An API resource can be associated with more than 1 version.
// Format is
// `projects/{project}/locations/{location}/apis/{api}/versions/{version}`
repeated string versions = 6 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = { type: "apihub.googleapis.com/Version" }
];
// Output only. The time at which the API resource was created.
google.protobuf.Timestamp create_time = 7
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which the API resource was last updated.
google.protobuf.Timestamp update_time = 8
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The target users for the API.
// This maps to the following system defined attribute:
// `projects/{project}/locations/{location}/attributes/system-target-user`
// attribute.
// The number of 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.
AttributeValues target_user = 9 [(google.api.field_behavior) = OPTIONAL];
// Optional. The team owning the API.
// This maps to the following system defined attribute:
// `projects/{project}/locations/{location}/attributes/system-team`
// attribute.
// The number of 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.
AttributeValues team = 10 [(google.api.field_behavior) = OPTIONAL];
// Optional. The business unit owning the API.
// This maps to the following system defined attribute:
// `projects/{project}/locations/{location}/attributes/system-business-unit`
// attribute.
// The number of 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.
AttributeValues business_unit = 11 [(google.api.field_behavior) = OPTIONAL];
// Optional. The maturity level of the API.
// This maps to the following system defined attribute:
// `projects/{project}/locations/{location}/attributes/system-maturity-level`
// attribute.
// The number of 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.
AttributeValues maturity_level = 12 [(google.api.field_behavior) = OPTIONAL];
// Optional. The list of user defined attributes associated with the API
// resource. The key is the attribute name. It will be of the format:
// `projects/{project}/locations/{location}/attributes/{attribute}`.
// The value is the attribute values associated with the resource.
map<string, AttributeValues> attributes = 13
[(google.api.field_behavior) = OPTIONAL];
// Optional. The style of the API.
// This maps to the following system defined attribute:
// `projects/{project}/locations/{location}/attributes/system-api-style`
// attribute.
// The number of 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.
AttributeValues api_style = 14 [(google.api.field_behavior) = OPTIONAL];
// Optional. The selected version for an API resource.
// This can be used when special handling is needed on client side for
// particular version of the API. Format is
// `projects/{project}/locations/{location}/apis/{api}/versions/{version}`
string selected_version = 15 [
(google.api.field_behavior) = OPTIONAL,
(google.api.resource_reference) = { type: "apihub.googleapis.com/Version" }
];
// Optional. The api requirement doc associated with the API resource.
// Carinality is 1 for this attribute. This maps to the following system
// defined attribute:
// `projects/{project}/locations/{location}/attributes/system-api-requirements`
// attribute. The value of the attribute should be a proper URI, and in case
// of Cloud Storage URI, it should point to a Cloud Storage object,
// not a directory.
AttributeValues api_requirements = 16
[(google.api.field_behavior) = OPTIONAL];
// Optional. Fingerprint of the API resource.
string fingerprint = 17 [(google.api.field_behavior) = OPTIONAL];
// Output only. The list of sources and metadata from the sources of the API
// resource.
repeated SourceMetadata source_metadata = 18
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The api functional requirements associated with the API resource.
// Carinality is 1 for this attribute.
// This maps to the following system defined attribute:
// `projects/{project}/locations/{location}/attributes/system-api-functional-requirements`
// attribute. The value of the attribute should be a proper URI, and in case
// of Cloud Storage URI, it should point to a Cloud Storage object,
// not a directory.
AttributeValues api_functional_requirements = 19
[(google.api.field_behavior) = OPTIONAL];
// Optional. The api technical requirements associated with the API resource.
// Carinality is 1 for this attribute. This maps to the following system
// defined attribute:
// `projects/{project}/locations/{location}/attributes/system-api-technical-requirements`
// attribute. The value of the attribute should be a proper URI, and in case
// of Cloud Storage URI, it should point to a Cloud Storage object,
// not a directory.
AttributeValues api_technical_requirements = 20
[(google.api.field_behavior) = OPTIONAL];
}
// Represents a version of the API resource in API hub. This is also referred
// to as the API version.
message Version {
option (google.api.resource) = {
type: "apihub.googleapis.com/Version"
pattern: "projects/{project}/locations/{location}/apis/{api}/versions/{version}"
plural: "versions"
singular: "version"
};
// Identifier. The name of the version.
//
// Format:
// `projects/{project}/locations/{location}/apis/{api}/versions/{version}`
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// Required. The display name of the version.
string display_name = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. The description of the version.
string description = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. The documentation of the version.
Documentation documentation = 4 [(google.api.field_behavior) = OPTIONAL];
// Output only. The specs associated with this version.
// Note that an API version can be associated with multiple specs.
// Format is
// `projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}`
repeated string specs = 5 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = { type: "apihub.googleapis.com/Spec" }
];
// Output only. The operations contained in the API version.
// These operations will be added to the version when a new spec is
// added or when an existing spec is updated. Format is
// `projects/{project}/locations/{location}/apis/{api}/versions/{version}/operations/{operation}`
repeated string api_operations = 6 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = {
type: "apihub.googleapis.com/ApiOperation"
}
];
// Output only. The definitions contained in the API version.
// These definitions will be added to the version when a new spec is
// added or when an existing spec is updated. Format is
// `projects/{project}/locations/{location}/apis/{api}/versions/{version}/definitions/{definition}`
repeated string definitions = 7 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = {
type: "apihub.googleapis.com/Definition"
}
];
// Optional. The deployments linked to this API version.
// Note: A particular API version could be deployed to multiple deployments
// (for dev deployment, UAT deployment, etc)
// Format is
// `projects/{project}/locations/{location}/deployments/{deployment}`
repeated string deployments = 8 [
(google.api.field_behavior) = OPTIONAL,
(google.api.resource_reference) = {
type: "apihub.googleapis.com/Deployment"
}
];
// Output only. The time at which the version was created.
google.protobuf.Timestamp create_time = 9
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which the version was last updated.
google.protobuf.Timestamp update_time = 10
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The lifecycle of the API version.
// This maps to the following system defined attribute:
// `projects/{project}/locations/{location}/attributes/system-lifecycle`
// attribute.
// The number of 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.
AttributeValues lifecycle = 11 [(google.api.field_behavior) = OPTIONAL];
// Optional. The compliance associated with the API version.
// This maps to the following system defined attribute:
// `projects/{project}/locations/{location}/attributes/system-compliance`
// attribute.
// The number of 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.
AttributeValues compliance = 12 [(google.api.field_behavior) = OPTIONAL];
// Optional. The accreditations associated with the API version.
// This maps to the following system defined attribute:
// `projects/{project}/locations/{location}/attributes/system-accreditation`
// attribute.
// The number of 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.
AttributeValues accreditation = 13 [(google.api.field_behavior) = OPTIONAL];
// Optional. The list of user defined attributes associated with the Version
// resource. The key is the attribute name. It will be of the format:
// `projects/{project}/locations/{location}/attributes/{attribute}`.
// The value is the attribute values associated with the resource.
map<string, AttributeValues> attributes = 14
[(google.api.field_behavior) = OPTIONAL];
// Optional. The selected deployment for a Version resource.
// This can be used when special handling is needed on client side for a
// particular deployment linked to the version.
// Format is
// `projects/{project}/locations/{location}/deployments/{deployment}`
string selected_deployment = 16 [
(google.api.field_behavior) = OPTIONAL,
(google.api.resource_reference) = {
type: "apihub.googleapis.com/Deployment"
}
];
// Output only. The list of sources and metadata from the sources of the
// version.
repeated SourceMetadata source_metadata = 17
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Represents a spec associated with an API version in the API
// Hub. Note that specs of various types can be uploaded, however
// parsing of details is supported for OpenAPI spec currently.
message Spec {
option (google.api.resource) = {
type: "apihub.googleapis.com/Spec"
pattern: "projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}"
plural: "specs"
singular: "spec"
};
// Specifies the parsing mode for API specifications during creation and
// update.
// - `RELAXED`: Parsing errors in the specification content do not fail the
// API call.
// - `STRICT`: Parsing errors in the specification content result in failure
// of the API call.
// If not specified, defaults to `RELAXED`.
enum ParsingMode {
// Defaults to `RELAXED`.
PARSING_MODE_UNSPECIFIED = 0;
// Parsing of the Spec on create and update is relaxed, meaning that
// parsing errors the spec contents will not fail the API call.
RELAXED = 1;
// Parsing of the Spec on create and update is strict, meaning that
// parsing errors in the spec contents will fail the API call.
STRICT = 2;
}
// Identifier. The name of the spec.
//
// Format:
// `projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}`
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// Required. The display name of the spec.
// This can contain the file name of the spec.
string display_name = 2 [(google.api.field_behavior) = REQUIRED];
// Required. The type of spec.
// The value should be one of the allowed values defined for
// `projects/{project}/locations/{location}/attributes/system-spec-type`
// attribute.
// The number of values for this attribute will be based on the
// cardinality of the attribute. The same can be retrieved via GetAttribute
// API.
//
// Note, this field is mandatory if content is provided.
AttributeValues spec_type = 3 [(google.api.field_behavior) = REQUIRED];
// Optional. Input only. The contents of the uploaded spec.
SpecContents contents = 4 [
(google.api.field_behavior) = OPTIONAL,
(google.api.field_behavior) = INPUT_ONLY
];
// Output only. Details parsed from the spec.
SpecDetails details = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The URI of the spec source in case file is uploaded
// from an external version control system.
string source_uri = 6 [(google.api.field_behavior) = OPTIONAL];
// Output only. The time at which the spec was created.
google.protobuf.Timestamp create_time = 7
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which the spec was last updated.
google.protobuf.Timestamp update_time = 8
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The lint response for the spec.
LintResponse lint_response = 9 [(google.api.field_behavior) = OPTIONAL];
// Optional. The list of user defined attributes associated with the spec.
// The key is the attribute name. It will be of the format:
// `projects/{project}/locations/{location}/attributes/{attribute}`.
// The value is the attribute values associated with the resource.
map<string, AttributeValues> attributes = 10
[(google.api.field_behavior) = OPTIONAL];
// Optional. The documentation of the spec.
// For OpenAPI spec, this will be populated from `externalDocs` in OpenAPI
// spec.
Documentation documentation = 11 [(google.api.field_behavior) = OPTIONAL];
// Optional. Input only. Enum specifying the parsing mode for OpenAPI
// Specification (OAS) parsing.
ParsingMode parsing_mode = 12 [
(google.api.field_behavior) = OPTIONAL,
(google.api.field_behavior) = INPUT_ONLY
];
// Output only. The list of sources and metadata from the sources of the spec.
repeated SourceMetadata source_metadata = 13
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Details of the deployment where APIs are hosted.
// A deployment could represent an Apigee proxy, API gateway, other Google Cloud
// services or non-Google Cloud services as well. A deployment entity is a root
// level entity in the API hub and exists independent of any API.
message Deployment {
option (google.api.resource) = {
type: "apihub.googleapis.com/Deployment"
pattern: "projects/{project}/locations/{location}/deployments/{deployment}"
plural: "deployments"
singular: "deployment"
};
// Identifier. The name of the deployment.
//
// Format:
// `projects/{project}/locations/{location}/deployments/{deployment}`
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// Required. The display name of the deployment.
string display_name = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. The description of the deployment.
string description = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. The documentation of the deployment.
Documentation documentation = 4 [(google.api.field_behavior) = OPTIONAL];
// Required. The type of deployment.
// This maps to the following system defined attribute:
// `projects/{project}/locations/{location}/attributes/system-deployment-type`
// attribute.
// The number of 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.
AttributeValues deployment_type = 5 [(google.api.field_behavior) = REQUIRED];
// Required. The resource URI identifies the deployment within its gateway.
// For Apigee gateways, its recommended to use the format:
// organizations/{org}/environments/{env}/apis/{api}.
// For ex: if a proxy with name `orders` is deployed in `staging`
// environment of `cymbal` organization, the resource URI would be:
// `organizations/cymbal/environments/staging/apis/orders`.
string resource_uri = 6 [(google.api.field_behavior) = REQUIRED];
// Required. The endpoints at which this deployment resource is listening for
// API requests. This could be a list of complete URIs, hostnames or an IP
// addresses.
repeated string endpoints = 7 [(google.api.field_behavior) = REQUIRED];
// Output only. The API versions linked to this deployment.
// Note: A particular deployment could be linked to multiple different API
// versions (of same or different APIs).
repeated string api_versions = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which the deployment was created.
google.protobuf.Timestamp create_time = 9
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which the deployment was last updated.
google.protobuf.Timestamp update_time = 10
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The SLO for this deployment.
// This maps to the following system defined attribute:
// `projects/{project}/locations/{location}/attributes/system-slo`
// attribute.
// The number of 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.
AttributeValues slo = 11 [(google.api.field_behavior) = OPTIONAL];
// Optional. The environment mapping to this deployment.
// This maps to the following system defined attribute:
// `projects/{project}/locations/{location}/attributes/system-environment`
// attribute.
// The number of 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.
AttributeValues environment = 12 [(google.api.field_behavior) = OPTIONAL];
// Optional. The list of user defined attributes associated with the
// deployment resource. The key is the attribute name. It will be of the
// format: `projects/{project}/locations/{location}/attributes/{attribute}`.
// The value is the attribute values associated with the resource.
map<string, AttributeValues> attributes = 13
[(google.api.field_behavior) = OPTIONAL];
// Output only. The list of sources and metadata from the sources of the
// deployment.
repeated SourceMetadata source_metadata = 14
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The uri where users can navigate to for the management of the
// deployment. This maps to the following system defined attribute:
// `projects/{project}/locations/{location}/attributes/system-management-url`
// The number of values for this attribute will be based on the
// cardinality of the attribute. The same can be retrieved via GetAttribute
// API. The value of the attribute should be a valid URL.
AttributeValues management_url = 15 [(google.api.field_behavior) = OPTIONAL];
// Optional. The uri where additional source specific information for this
// deployment can be found. This maps to the following system defined
// attribute:
// `projects/{project}/locations/{location}/attributes/system-source-uri`
// The number of values for this attribute will be based on the
// cardinality of the attribute. The same can be retrieved via GetAttribute
// API. The value of the attribute should be a valid URI, and in case
// of Cloud Storage URI, it should point to a Cloud Storage object,
// not a directory.
AttributeValues source_uri = 16 [(google.api.field_behavior) = OPTIONAL];
// Optional. The project to which the deployment belongs.
// For GCP gateways, this will refer to the project identifier.
// For others like Edge/OPDK, this will refer to the org identifier.
string source_project = 17 [(google.api.field_behavior) = OPTIONAL];
// Optional. The environment at source for the deployment.
// For example: prod, dev, staging, etc.
string source_environment = 18 [(google.api.field_behavior) = OPTIONAL];
}
// Represents an operation contained in an API version in the API Hub.
// An operation is added/updated/deleted in an API version when a new spec is
// added or an existing spec is updated/deleted in a version.
// Currently, an operation will be created only corresponding to OpenAPI spec as
// parsing is supported for OpenAPI spec.
// Alternatively operations can be managed via create,update and delete APIs,
// creation of apiOperation can be possible only for version with no parsed
// operations and update/delete can be possible only for operations created via
// create API.
message ApiOperation {
option (google.api.resource) = {
type: "apihub.googleapis.com/ApiOperation"
pattern: "projects/{project}/locations/{location}/apis/{api}/versions/{version}/operations/{operation}"
plural: "apiOperations"
singular: "apiOperation"
};
// Identifier. The name of the operation.
//
// Format:
// `projects/{project}/locations/{location}/apis/{api}/versions/{version}/operations/{operation}`
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// Output only. The name of the spec will be of the format:
// `projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}`
// Note:The name of the spec will be empty if the operation is created via
// [CreateApiOperation][google.cloud.apihub.v1.ApiHub.CreateApiOperation] API.
string spec = 2 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = { type: "apihub.googleapis.com/Spec" }
];
// Optional. Operation details.
// Note: Even though this field is optional, it is required for
// [CreateApiOperation][google.cloud.apihub.v1.ApiHub.CreateApiOperation]
// API and we will fail the request if not provided.
OperationDetails details = 3 [(google.api.field_behavior) = OPTIONAL];
// Output only. The time at which the operation was created.
google.protobuf.Timestamp create_time = 4
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which the operation was last updated.
google.protobuf.Timestamp update_time = 5
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The list of user defined attributes associated with the API
// operation resource. The key is the attribute name. It will be of the
// format: `projects/{project}/locations/{location}/attributes/{attribute}`.
// The value is the attribute values associated with the resource.
map<string, AttributeValues> attributes = 6
[(google.api.field_behavior) = OPTIONAL];
// Output only. The list of sources and metadata from the sources of the API
// operation.
repeated SourceMetadata source_metadata = 7
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Represents a definition for example schema, request, response definitions
// contained in an API version.
// A definition is added/updated/deleted in an API version when a new spec is
// added or an existing spec is updated/deleted in a version. Currently,
// definition will be created only corresponding to OpenAPI spec as parsing is
// supported for OpenAPI spec. Also, within OpenAPI spec, only `schema` object
// is supported.
message Definition {
option (google.api.resource) = {
type: "apihub.googleapis.com/Definition"
pattern: "projects/{project}/locations/{location}/apis/{api}/versions/{version}/definitions/{definition}"
plural: "definitions"
singular: "definition"
};
// Enumeration of definition types.
enum Type {
// Definition type unspecified.
TYPE_UNSPECIFIED = 0;
// Definition type schema.
SCHEMA = 1;
}
oneof value {
// Output only. The value of a schema definition.
Schema schema = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Identifier. The name of the definition.
//
// Format:
// `projects/{project}/locations/{location}/apis/{api}/versions/{version}/definitions/{definition}`
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// Output only. The name of the spec from where the definition was parsed.
// Format is
// `projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}`
string spec = 2 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = { type: "apihub.googleapis.com/Spec" }
];
// Output only. The type of the definition.
Type type = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which the definition was created.
google.protobuf.Timestamp create_time = 5
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which the definition was last updated.
google.protobuf.Timestamp update_time = 6
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The list of user defined attributes associated with the
// definition resource. The key is the attribute name. It will be of the
// format: `projects/{project}/locations/{location}/attributes/{attribute}`.
// The value is the attribute values associated with the resource.
map<string, AttributeValues> attributes = 7
[(google.api.field_behavior) = OPTIONAL];
}
// An attribute in the API Hub.
// An attribute is a name value pair which can be attached to different
// resources in the API hub based on the scope of the attribute. Attributes can
// either be pre-defined by the API Hub or created by users.
message Attribute {
option (google.api.resource) = {
type: "apihub.googleapis.com/Attribute"
pattern: "projects/{project}/locations/{location}/attributes/{attribute}"
plural: "attributes"
singular: "attribute"
};
// The value that can be assigned to the attribute when the data type is
// enum.
message AllowedValue {
// 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][0-9]-/.
string id = 1 [(google.api.field_behavior) = REQUIRED];
// Required. The display name of the allowed value.
string display_name = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. The detailed description of the allowed value.
string description = 3 [(google.api.field_behavior) = OPTIONAL];
// 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.
bool immutable = 4 [(google.api.field_behavior) = OPTIONAL];
}
// Enumeration of attribute definition types.
enum DefinitionType {
// Attribute definition type unspecified.
DEFINITION_TYPE_UNSPECIFIED = 0;
// The attribute is predefined by the API Hub. Note that only the list of
// allowed values can be updated in this case via UpdateAttribute method.
SYSTEM_DEFINED = 1;
// The attribute is defined by the user.
USER_DEFINED = 2;
}
// Enumeration for the scope of the attribute representing the resource in the
// API Hub to which the attribute can be linked.
enum Scope {
// Scope Unspecified.
SCOPE_UNSPECIFIED = 0;
// Attribute can be linked to an API.
API = 1;
// Attribute can be linked to an API version.
VERSION = 2;
// Attribute can be linked to a Spec.
SPEC = 3;
// Attribute can be linked to an API Operation.
API_OPERATION = 4;
// Attribute can be linked to a Deployment.
DEPLOYMENT = 5;
// Attribute can be linked to a Dependency.
DEPENDENCY = 6;
// Attribute can be linked to a definition.
DEFINITION = 7;
// Attribute can be linked to a ExternalAPI.
EXTERNAL_API = 8;
// Attribute can be linked to a Plugin.
PLUGIN = 9;
}
// Enumeration of attribute's data type.
enum DataType {
// Attribute data type unspecified.
DATA_TYPE_UNSPECIFIED = 0;
// Attribute's value is of type enum.
ENUM = 1;
// Attribute's value is of type json.
JSON = 2;
// Attribute's value is of type string.
STRING = 3;
// Attribute's value is of type uri.
URI = 4;
}
// Identifier. The name of the attribute in the API Hub.
//
// Format:
// `projects/{project}/locations/{location}/attributes/{attribute}`
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// Required. The display name of the attribute.
string display_name = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. The description of the attribute.
string description = 3 [(google.api.field_behavior) = OPTIONAL];
// Output only. The definition type of the attribute.
DefinitionType definition_type = 4
[(google.api.field_behavior) = OUTPUT_ONLY];
// Required. The scope of the attribute. It represents the resource in the API
// Hub to which the attribute can be linked.
Scope scope = 5 [(google.api.field_behavior) = REQUIRED];
// Required. The type of the data of the attribute.
DataType data_type = 6 [(google.api.field_behavior) = REQUIRED];
// Optional. The list of allowed values when the attribute value is of type
// enum. This is required when the data_type of the attribute is ENUM. The
// maximum number of allowed values of an attribute will be 1000.
repeated AllowedValue allowed_values = 7
[(google.api.field_behavior) = OPTIONAL];
// Optional. The maximum number of values that the attribute can have when
// associated with an API Hub resource. Cardinality 1 would represent a
// single-valued attribute. It must not be less than 1 or greater than 20. If
// not specified, the cardinality would be set to 1 by default and represent a
// single-valued attribute.
int32 cardinality = 8 [(google.api.field_behavior) = OPTIONAL];
// Output only. When mandatory is true, the attribute is mandatory for the
// resource specified in the scope. Only System defined attributes can be
// mandatory.
bool mandatory = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which the attribute was created.
google.protobuf.Timestamp create_time = 10
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which the attribute was last updated.
google.protobuf.Timestamp update_time = 11
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// The spec contents.
message SpecContents {
// Required. The contents of the spec.
bytes contents = 1 [(google.api.field_behavior) = REQUIRED];
// Required. The mime type of the content for example application/json,
// application/yaml, application/wsdl etc.
string mime_type = 2 [(google.api.field_behavior) = REQUIRED];
}
// SpecDetails contains the details parsed from supported
// spec types.
message SpecDetails {
oneof details {
// Output only. Additional details apart from `OperationDetails` parsed from
// an OpenAPI spec. The OperationDetails parsed from the spec can be
// obtained by using
// [ListAPIOperations][google.cloud.apihub.v1.ApiHub.ListApiOperations]
// method.
OpenApiSpecDetails open_api_spec_details = 2
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Output only. The description of the spec.
string description = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// OpenApiSpecDetails contains the details parsed from an OpenAPI spec in
// addition to the fields mentioned in
// [SpecDetails][google.cloud.apihub.v1.SpecDetails].
message OpenApiSpecDetails {
// Enumeration of spec formats.
enum Format {
// SpecFile type unspecified.
FORMAT_UNSPECIFIED = 0;
// OpenAPI Spec v2.0.
OPEN_API_SPEC_2_0 = 1;
// OpenAPI Spec v3.0.
OPEN_API_SPEC_3_0 = 2;
// OpenAPI Spec v3.1.
OPEN_API_SPEC_3_1 = 3;
}
// Output only. The format of the spec.
Format format = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The version in the spec.
// This maps to `info.version` in OpenAPI spec.
string version = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Owner details for the spec.
// This maps to `info.contact` in OpenAPI spec.
Owner owner = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// The operation details parsed from the spec.
message OperationDetails {
oneof operation {
// The HTTP Operation.
HttpOperation http_operation = 4;
}
// Optional. Description of the operation behavior.
// For OpenAPI spec, this will map to `operation.description` in the
// spec, in case description is empty, `operation.summary` will be used.
string description = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Additional external documentation for this operation.
// For OpenAPI spec, this will map to `operation.documentation` in the spec.
Documentation documentation = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. For OpenAPI spec, this will be set if `operation.deprecated`is
// marked as `true` in the spec.
bool deprecated = 3 [(google.api.field_behavior) = OPTIONAL];
}
// The HTTP Operation.
message HttpOperation {
// Enumeration of Method types.
enum Method {
// Method unspecified.
METHOD_UNSPECIFIED = 0;
// Get Operation type.
GET = 1;
// Put Operation type.
PUT = 2;
// Post Operation type.
POST = 3;
// Delete Operation type.
DELETE = 4;
// Options Operation type.
OPTIONS = 5;
// Head Operation type.
HEAD = 6;
// Patch Operation type.
PATCH = 7;
// Trace Operation type.
TRACE = 8;
}
// Optional. The path details for the Operation.
// Note: Even though this field is optional, it is required for
// [CreateApiOperation][google.cloud.apihub.v1.ApiHub.CreateApiOperation]
// API and we will fail the request if not provided.
Path path = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Operation method
// Note: Even though this field is optional, it is required for
// [CreateApiOperation][google.cloud.apihub.v1.ApiHub.CreateApiOperation]
// API and we will fail the request if not provided.
Method method = 2 [(google.api.field_behavior) = OPTIONAL];
}
// The path details derived from the spec.
message Path {
// Optional. Complete path relative to server endpoint.
// Note: Even though this field is optional, it is required for
// [CreateApiOperation][google.cloud.apihub.v1.ApiHub.CreateApiOperation]
// API and we will fail the request if not provided.
string path = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. A short description for the path applicable to all operations.
string description = 2 [(google.api.field_behavior) = OPTIONAL];
}
// The schema details derived from the spec. Currently, this entity is supported
// for OpenAPI spec only.
// For OpenAPI spec, this maps to the schema defined in
// the `definitions` section for OpenAPI 2.0 version and in
// `components.schemas` section for OpenAPI 3.0 and 3.1 version.
message Schema {
// Output only. The display name of the schema.
// This will map to the name of the schema in the spec.
string display_name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The raw value of the schema definition corresponding to the
// schema name in the spec.
bytes raw_value = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Owner details.
message Owner {
// Optional. The name of the owner.
string display_name = 1 [(google.api.field_behavior) = OPTIONAL];
// Required. The email of the owner.
string email = 2 [(google.api.field_behavior) = REQUIRED];
}
// Documentation details.
message Documentation {
// Optional. The uri of the externally hosted documentation.
string external_uri = 1 [(google.api.field_behavior) = OPTIONAL];
}
// The attribute values associated with resource.
message AttributeValues {
// The attribute values of data type enum.
message EnumAttributeValues {
// Required. The attribute values in case attribute data type is enum.
repeated Attribute.AllowedValue values = 1
[(google.api.field_behavior) = REQUIRED];
}
// The attribute values of data type string or JSON.
message StringAttributeValues {
// Required. The attribute values in case attribute data type is string or
// JSON.
repeated string values = 1 [(google.api.field_behavior) = REQUIRED];
}
// The attribute values associated with the resource.
oneof Value {
// The attribute values associated with a resource in case attribute data
// type is enum.
EnumAttributeValues enum_values = 2;
// The attribute values associated with a resource in case attribute data
// type is string.
StringAttributeValues string_values = 3;
// The attribute values associated with a resource in case attribute data
// type is JSON.
StringAttributeValues json_values = 4;
// The attribute values associated with a resource in case attribute data
// type is URL, URI or IP, like gs://bucket-name/object-name.
StringAttributeValues uri_values = 5;
}
// Output only. The name of the attribute.
// Format: projects/{project}/locations/{location}/attributes/{attribute}
string attribute = 1 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = {
type: "apihub.googleapis.com/Attribute"
}
];
}
// A dependency resource defined in the API hub describes a dependency directed
// from a consumer to a supplier entity. A dependency can be defined between two
// [Operations][google.cloud.apihub.v1.ApiOperation] or between
// an [Operation][google.cloud.apihub.v1.ApiOperation] and [External
// API][google.cloud.apihub.v1.ExternalApi].
message Dependency {
option (google.api.resource) = {
type: "apihub.googleapis.com/Dependency"
pattern: "projects/{project}/locations/{location}/dependencies/{dependency}"
plural: "dependencies"
singular: "dependency"
};
// Possible states for a dependency.
enum State {
// Default value. This value is unused.
STATE_UNSPECIFIED = 0;
// Dependency will be in a proposed state when it is newly identified by the
// API hub on its own.
PROPOSED = 1;
// Dependency will be in a validated state when it is validated by the
// admin or manually created in the API hub.
VALIDATED = 2;
}
// Possible modes of discovering the dependency.
enum DiscoveryMode {
// Default value. This value is unused.
DISCOVERY_MODE_UNSPECIFIED = 0;
// Manual mode of discovery when the dependency is defined by the user.
MANUAL = 1;
}
// Identifier. The name of the dependency in the API Hub.
//
// Format: `projects/{project}/locations/{location}/dependencies/{dependency}`
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// Required. Immutable. The entity acting as the consumer in the dependency.
DependencyEntityReference consumer = 2 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.field_behavior) = REQUIRED
];
// Required. Immutable. The entity acting as the supplier in the dependency.
DependencyEntityReference supplier = 3 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.field_behavior) = REQUIRED
];
// Output only. State of the dependency.
State state = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. Human readable description corresponding of the dependency.
string description = 5 [(google.api.field_behavior) = OPTIONAL];
// Output only. Discovery mode of the dependency.
DiscoveryMode discovery_mode = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Error details of a dependency if the system has detected it
// internally.
DependencyErrorDetail error_detail = 7
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which the dependency was created.
google.protobuf.Timestamp create_time = 8
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which the dependency was last updated.
google.protobuf.Timestamp update_time = 9
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The list of user defined attributes associated with the
// dependency resource. The key is the attribute name. It will be of the
// format: `projects/{project}/locations/{location}/attributes/{attribute}`.
// The value is the attribute values associated with the resource.
map<string, AttributeValues> attributes = 10
[(google.api.field_behavior) = OPTIONAL];
}
// Reference to an entity participating in a dependency.
message DependencyEntityReference {
// Required. Unique identifier for the participating entity.
oneof identifier {
// The resource name of an operation in the API Hub.
//
// Format:
// `projects/{project}/locations/{location}/apis/{api}/versions/{version}/operations/{operation}`
string operation_resource_name = 2;
// The resource name of an external API in the API Hub.
//
// Format:
// `projects/{project}/locations/{location}/externalApis/{external_api}`
string external_api_resource_name = 3;
}
// Output only. Display name of the entity.
string display_name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Details describing error condition of a dependency.
message DependencyErrorDetail {
// Possible values representing an error in the dependency.
enum Error {
// Default value used for no error in the dependency.
ERROR_UNSPECIFIED = 0;
// Supplier entity has been deleted.
SUPPLIER_NOT_FOUND = 1;
// Supplier entity has been recreated.
SUPPLIER_RECREATED = 2;
}
// Optional. Error in the dependency.
Error error = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Timestamp at which the error was found.
google.protobuf.Timestamp error_time = 2
[(google.api.field_behavior) = OPTIONAL];
}
// LintResponse contains the response from the linter.
message LintResponse {
// Count of issues with a given severity.
message SummaryEntry {
// Required. Severity of the issue.
Severity severity = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Count of issues with the given severity.
int32 count = 2 [(google.api.field_behavior) = REQUIRED];
}
// Optional. Array of issues found in the analyzed document.
repeated Issue issues = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Summary of all issue types and counts for each severity level.
repeated SummaryEntry summary = 2 [(google.api.field_behavior) = OPTIONAL];
// Required. Lint state represents success or failure for linting.
LintState state = 3 [(google.api.field_behavior) = REQUIRED];
// Required. Name of the linting application.
string source = 4 [(google.api.field_behavior) = REQUIRED];
// Required. Name of the linter used.
Linter linter = 5 [(google.api.field_behavior) = REQUIRED];
// Required. Timestamp when the linting response was generated.
google.protobuf.Timestamp create_time = 6
[(google.api.field_behavior) = REQUIRED];
}
// Issue contains the details of a single issue found by the linter.
message Issue {
// Required. Rule code unique to each rule defined in linter.
string code = 1 [(google.api.field_behavior) = REQUIRED];
// Required. An array of strings indicating the location in the analyzed
// document where the rule was triggered.
repeated string path = 2 [(google.api.field_behavior) = REQUIRED];
// Required. Human-readable message describing the issue found by the linter.
string message = 3 [(google.api.field_behavior) = REQUIRED];
// Required. Severity level of the rule violation.
Severity severity = 4 [(google.api.field_behavior) = REQUIRED];
// Required. Object describing where in the file the issue was found.
Range range = 5 [(google.api.field_behavior) = REQUIRED];
}
// Object describing where in the file the issue was found.
message Range {
// Required. Start of the issue.
Point start = 1 [(google.api.field_behavior) = REQUIRED];
// Required. End of the issue.
Point end = 2 [(google.api.field_behavior) = REQUIRED];
}
// Point within the file (line and character).
message Point {
// Required. Line number (zero-indexed).
int32 line = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Character position within the line (zero-indexed).
int32 character = 2 [(google.api.field_behavior) = REQUIRED];
}
// Represents the metadata of the long-running operation.
message OperationMetadata {
// Output only. The time the operation was created.
google.protobuf.Timestamp create_time = 1
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time the operation finished running.
google.protobuf.Timestamp end_time = 2
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Server-defined resource path for the target of the operation.
string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Name of the verb executed by the operation.
string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Human-readable status of the operation, if any.
string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Identifies whether the user has requested cancellation
// of the operation. Operations that have been cancelled successfully
// have [Operation.error][google.longrunning.Operation.error] value with a
// [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to
// `Code.CANCELLED`.
bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. API version used to start the operation.
string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// An ApiHubInstance represents the instance resources of the API Hub.
// Currently, only one ApiHub instance is allowed for each project.
message ApiHubInstance {
option (google.api.resource) = {
type: "apihub.googleapis.com/ApiHubInstance"
pattern: "projects/{project}/locations/{location}/apiHubInstances/{api_hub_instance}"
plural: "apiHubInstances"
singular: "apiHubInstance"
};
// Available configurations to provision an ApiHub Instance.
message Config {
// Types of data encryption.
enum EncryptionType {
// Encryption type unspecified.
ENCRYPTION_TYPE_UNSPECIFIED = 0;
// Default encryption using Google managed encryption key.
GMEK = 1;
// Encryption using customer managed encryption key.
CMEK = 2;
}
// Optional. The Customer Managed Encryption Key (CMEK) used for data
// encryption. The CMEK name should follow the format of
// `projects/([^/]+)/locations/([^/]+)/keyRings/([^/]+)/cryptoKeys/([^/]+)`,
// where the location must match the instance location.
// If the CMEK is not provided, a GMEK will be created for the instance.
string cmek_key_name = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. If true, the search will be disabled for the instance. The
// default value is false.
bool disable_search = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. The name of the Vertex AI location where the data store is
// stored.
string vertex_location = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Encryption type for the region. If the encryption type is CMEK,
// the cmek_key_name must be provided. If no encryption type is provided,
// GMEK will be used.
EncryptionType encryption_type = 4 [(google.api.field_behavior) = OPTIONAL];
}
// State of the ApiHub Instance.
enum State {
// The default value. This value is used if the state is omitted.
STATE_UNSPECIFIED = 0;
// The ApiHub instance has not been initialized or has been deleted.
INACTIVE = 1;
// The ApiHub instance is being created.
CREATING = 2;
// The ApiHub instance has been created and is ready for use.
ACTIVE = 3;
// The ApiHub instance is being updated.
UPDATING = 4;
// The ApiHub instance is being deleted.
DELETING = 5;
// The ApiHub instance encountered an error during a state change.
FAILED = 6;
}
// Identifier. Format:
// `projects/{project}/locations/{location}/apiHubInstances/{apiHubInstance}`.
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// Output only. Creation timestamp.
google.protobuf.Timestamp create_time = 2
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Last update timestamp.
google.protobuf.Timestamp update_time = 3
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The current state of the ApiHub instance.
State state = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Extra information about ApiHub instance state. Currently the
// message would be populated when state is `FAILED`.
string state_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
// Required. Config of the ApiHub instance.
Config config = 6 [(google.api.field_behavior) = REQUIRED];
// Optional. Instance labels to represent user-provided metadata.
// Refer to cloud documentation on labels for more details.
// https://cloud.google.com/compute/docs/labeling-resources
map<string, string> labels = 7 [(google.api.field_behavior) = OPTIONAL];
// Optional. Description of the ApiHub instance.
string description = 8 [(google.api.field_behavior) = OPTIONAL];
}
// An external API represents an API being provided by external sources. This
// can be used to model third-party APIs and can be used to define dependencies.
message ExternalApi {
option (google.api.resource) = {
type: "apihub.googleapis.com/ExternalApi"
pattern: "projects/{project}/locations/{location}/externalApis/{external_api}"
plural: "externalApis"
singular: "externalApi"
};
// Identifier. Format:
// `projects/{project}/locations/{location}/externalApi/{externalApi}`.
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// Required. Display name of the external API. Max length is 63 characters
// (Unicode Code Points).
string display_name = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. Description of the external API. Max length is 2000 characters
// (Unicode Code Points).
string description = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. List of endpoints on which this API is accessible.
repeated string endpoints = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. List of paths served by this API.
repeated string paths = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. Documentation of the external API.
Documentation documentation = 6 [(google.api.field_behavior) = OPTIONAL];
// Optional. The list of user defined attributes associated with the Version
// resource. The key is the attribute name. It will be of the format:
// `projects/{project}/locations/{location}/attributes/{attribute}`.
// The value is the attribute values associated with the resource.
map<string, AttributeValues> attributes = 7
[(google.api.field_behavior) = OPTIONAL];
// Output only. Creation timestamp.
google.protobuf.Timestamp create_time = 8
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Last update timestamp.
google.protobuf.Timestamp update_time = 9
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// ConfigValueOption represents an option for a config variable of type enum or
// multi select.
message ConfigValueOption {
// Required. Id of the option.
string id = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Display name of the option.
string display_name = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. Description of the option.
string description = 3 [(google.api.field_behavior) = OPTIONAL];
}
// Secret provides a reference to entries in Secret Manager.
message Secret {
// Required. The resource name of the secret version in the format,
// format as: `projects/*/secrets/*/versions/*`.
string secret_version = 1 [(google.api.field_behavior) = REQUIRED];
}
// ConfigVariableTemplate represents a configuration variable template present
// in a Plugin Config.
message ConfigVariableTemplate {
// ValueType indicates the data type of the value.
enum ValueType {
// Value type is not specified.
VALUE_TYPE_UNSPECIFIED = 0;
// Value type is string.
STRING = 1;
// Value type is integer.
INT = 2;
// Value type is boolean.
BOOL = 3;
// Value type is secret.
SECRET = 4;
// Value type is enum.
ENUM = 5;
// Value type is multi select.
MULTI_SELECT = 6;
// Value type is multi string.
MULTI_STRING = 7;
// Value type is multi int.
MULTI_INT = 8;
}
// Required. ID of the config variable. Must be unique within the
// configuration.
string id = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Type of the parameter: string, int, bool etc.
ValueType value_type = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. Description.
string description = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Regular expression in RE2 syntax used for validating the `value`
// of a `ConfigVariable`.
string validation_regex = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Flag represents that this `ConfigVariable` must be provided for a
// PluginInstance.
bool required = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. Enum options. To be populated if `ValueType` is `ENUM`.
repeated ConfigValueOption enum_options = 6
[(google.api.field_behavior) = OPTIONAL];
// Optional. Multi select options. To be populated if `ValueType` is
// `MULTI_SELECT`.
repeated ConfigValueOption multi_select_options = 7
[(google.api.field_behavior) = OPTIONAL];
}
// ConfigVariable represents a additional configuration variable present in a
// PluginInstance Config or AuthConfig, based on a ConfigVariableTemplate.
message ConfigVariable {
// The config variable value of data type multi select.
message MultiSelectValues {
// Optional. The config variable value of data type multi select.
repeated ConfigValueOption values = 1
[(google.api.field_behavior) = OPTIONAL];
}
// The config variable value of data type multi string.
message MultiStringValues {
// Optional. The config variable value of data type multi string.
repeated string values = 1 [(google.api.field_behavior) = OPTIONAL];
}
// The config variable value of data type multi int.
message MultiIntValues {
// Optional. The config variable value of data type multi int.
repeated int32 values = 1 [(google.api.field_behavior) = OPTIONAL];
}
// The values associated with the config variable.
oneof value {
// Optional. The config variable value in case of config variable of type
// string.
string string_value = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. The config variable value in case of config variable of type
// integer.
int64 int_value = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. The config variable value in case of config variable of type
// boolean.
bool bool_value = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. The config variable value in case of config variable of type
// secret.
Secret secret_value = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. The config variable value in case of config variable of type
// enum.
ConfigValueOption enum_value = 6 [(google.api.field_behavior) = OPTIONAL];
// Optional. The config variable value in case of config variable of type
// multi select.
MultiSelectValues multi_select_values = 7
[(google.api.field_behavior) = OPTIONAL];
// Optional. The config variable value in case of config variable of type
// multi string.
MultiStringValues multi_string_values = 8
[(google.api.field_behavior) = OPTIONAL];
// Optional. The config variable value in case of config variable of type
// multi integer.
MultiIntValues multi_int_values = 9
[(google.api.field_behavior) = OPTIONAL];
}
// Output only. Key will be the
// [id][google.cloud.apihub.v1.ConfigVariableTemplate.id] to uniquely identify
// the config variable.
string key = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Config for Google service account authentication.
message GoogleServiceAccountConfig {
// 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.
string service_account = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "iam.googleapis.com/ServiceAccount"
}
];
}
// AuthConfig represents the authentication information.
message AuthConfig {
// Parameters to support Username and Password Authentication.
message UserPasswordConfig {
// Required. Username.
string username = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Secret version reference containing the password.
// The `secretmanager.versions.access` permission should be
// granted to the service account accessing the secret.
Secret password = 2 [(google.api.field_behavior) = REQUIRED];
}
// Parameters to support Oauth 2.0 client credentials grant authentication.
// See https://tools.ietf.org/html/rfc6749#section-1.3.4 for more details.
message Oauth2ClientCredentialsConfig {
// Required. The client identifier.
string client_id = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Secret version reference containing the client secret.
// The `secretmanager.versions.access` permission should be
// granted to the service account accessing the secret.
Secret client_secret = 2 [(google.api.field_behavior) = REQUIRED];
}
// Config for authentication with API key.
message ApiKeyConfig {
// Enum of location an HTTP element can be.
enum HttpElementLocation {
// HTTP element location not specified.
HTTP_ELEMENT_LOCATION_UNSPECIFIED = 0;
// Element is in the HTTP request query.
QUERY = 1;
// Element is in the HTTP request header.
HEADER = 2;
// Element is in the HTTP request path.
PATH = 3;
// Element is in the HTTP request body.
BODY = 4;
// Element is in the HTTP request cookie.
COOKIE = 5;
}
// Required. The parameter name of the API key.
// E.g. If the API request is "https://example.com/act?api_key=<API KEY>",
// "api_key" would be the parameter name.
string name = 1 [(google.api.field_behavior) = REQUIRED];
// Required. The name of the SecretManager secret version resource storing
// the API key. Format:
// `projects/{project}/secrets/{secrete}/versions/{version}`. The
// `secretmanager.versions.access` permission should be granted to the
// service account accessing the secret.
Secret api_key = 2 [(google.api.field_behavior) = REQUIRED];
// Required. The location of the API key.
// The default value is QUERY.
HttpElementLocation http_element_location = 3
[(google.api.field_behavior) = REQUIRED];
}
// Supported auth types.
oneof config {
// Google Service Account.
GoogleServiceAccountConfig google_service_account_config = 2;
// User Password.
UserPasswordConfig user_password_config = 3;
// Api Key Config.
ApiKeyConfig api_key_config = 4;
// Oauth2.0 Client Credentials.
Oauth2ClientCredentialsConfig oauth2_client_credentials_config = 5;
}
// Required. The authentication type.
AuthType auth_type = 1 [(google.api.field_behavior) = REQUIRED];
}
// SourceMetadata represents the metadata for a resource at the source.
message SourceMetadata {
// PluginInstanceActionSource represents the plugin instance action source.
message PluginInstanceActionSource {
// Output only. The resource name of the source plugin instance.
// Format is
// `projects/{project}/locations/{location}/plugins/{plugin}/instances/{instance}`
string plugin_instance = 1 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = {
type: "apihub.googleapis.com/PluginInstance"
}
];
// Output only. The id of the plugin instance action.
string action_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// The possible types of the source.
enum SourceType {
// Source type not specified.
SOURCE_TYPE_UNSPECIFIED = 0;
// Source type plugin.
PLUGIN = 1;
}
// The source of the resource.
oneof source {
// Output only. The source of the resource is a plugin instance action.
PluginInstanceActionSource plugin_instance_action_source = 1
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Output only. The type of the source.
SourceType source_type = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The unique identifier of the resource at the source.
string original_resource_id = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which the resource was created at the source.
google.protobuf.Timestamp original_resource_create_time = 4
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which the resource was last updated at the source.
google.protobuf.Timestamp original_resource_update_time = 5
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Respresents an API Observation observed in one of the sources.
message DiscoveredApiObservation {
option (google.api.resource) = {
type: "apihub.googleapis.com/DiscoveredApiObservation"
pattern: "projects/{project}/locations/{location}/discoveredApiObservations/{discovered_api_observation}"
plural: "discoveredApiObservations"
singular: "discoveredApiObservation"
};
// DiscoveredApiObservation protocol style
enum Style {
// Unknown style
STYLE_UNSPECIFIED = 0;
// Style is Rest API
REST = 1;
// Style is Grpc API
GRPC = 2;
// Style is GraphQL API
GRAPHQL = 3;
}
// The possible types of the source from which the observation was collected.
enum SourceType {
// Source type not specified.
SOURCE_TYPE_UNSPECIFIED = 0;
// GCP external load balancer.
GCP_XLB = 1;
// GCP internal load balancer.
GCP_ILB = 2;
}
// Identifier. The name of the discovered API Observation.
//
// Format:
// `projects/{project}/locations/{location}/discoveredApiObservations/{discovered_api_observation}`
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// Optional. Style of ApiObservation
Style style = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. The IP address (IPv4 or IPv6) of the origin server that the
// request was sent to. This field can include port information. Examples:
// `"192.168.1.1"`, `"10.0.0.1:80"`, `"FE80::0202:B3FF:FE1E:8329"`.
repeated string server_ips = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. The hostname of requests processed for this Observation.
string hostname = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Last event detected time stamp
google.protobuf.Timestamp last_event_detected_time = 5
[(google.api.field_behavior) = OPTIONAL];
// Optional. The location of the observation source.
repeated string source_locations = 6 [
(google.api.field_behavior) = OPTIONAL,
(google.api.resource_reference) = {
type: "locations.googleapis.com/Location"
}
];
// Optional. The number of observed API Operations.
int64 api_operation_count = 7 [(google.api.field_behavior) = OPTIONAL];
// Optional. For an observation pushed from a gcp resource, this would be the
// gcp project id.
string origin = 8 [(google.api.field_behavior) = OPTIONAL];
// Optional. The type of the source from which the observation was collected.
repeated SourceType source_types = 9 [(google.api.field_behavior) = OPTIONAL];
// Output only. The number of known API Operations.
int64 known_operations_count = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The number of unknown API Operations.
int64 unknown_operations_count = 11
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Create time stamp of the observation in API Hub.
google.protobuf.Timestamp create_time = 12
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Update time stamp of the observation in API Hub.
google.protobuf.Timestamp update_time = 13
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The metadata of the source from which the observation was
// collected.
SourceMetadata source_metadata = 14
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// DiscoveredApiOperation represents an API Operation observed in one of the
// sources.
message DiscoveredApiOperation {
option (google.api.resource) = {
type: "apihub.googleapis.com/DiscoveredApiOperation"
pattern: "projects/{project}/locations/{location}/discoveredApiObservations/{discovered_api_observation}/discoveredApiOperations/{discovered_api_operation}"
plural: "discoveredApiOperations"
singular: "discoveredApiOperation"
};
// MatchResult represents the result of matching a discovered API operation
// with a catalog API operation.
message MatchResult {
// Output only. The name of the matched API Operation.
//
// Format:
// `projects/{project}/locations/{location}/apis/{api}/versions/{version}/operations/{operation}`
string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// The classification of the discovered API operation.
enum Classification {
// Operation is not classified as known or unknown.
CLASSIFICATION_UNSPECIFIED = 0;
// Operation has a matched catalog operation.
KNOWN = 1;
// Operation does not have a matched catalog operation.
UNKNOWN = 2;
}
// ApiOperation protocol style
oneof operation {
// Optional. An HTTP Operation.
HttpOperationDetails http_operation = 2
[(google.api.field_behavior) = OPTIONAL];
}
// Identifier. The name of the discovered API Operation.
//
// Format:
// `projects/{project}/locations/{location}/discoveredApiObservations/{discovered_api_observation}/discoveredApiOperations/{discovered_api_operation}`
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// Optional. First seen time stamp
google.protobuf.Timestamp first_seen_time = 3
[(google.api.field_behavior) = OPTIONAL];
// Optional. Last seen time stamp
google.protobuf.Timestamp last_seen_time = 4
[(google.api.field_behavior) = OPTIONAL];
// Optional. The number of occurrences of this API Operation.
int64 count = 5 [(google.api.field_behavior) = OPTIONAL];
// Output only. The classification of the discovered API operation.
Classification classification = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The list of matched results for the discovered API operation.
// This will be populated only if the classification is known. The current
// usecase is for a single match. Keeping it repeated to support multiple
// matches in future.
repeated MatchResult match_results = 7
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The metadata of the source from which the api operation was
// collected.
SourceMetadata source_metadata = 8
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Create time stamp of the discovered API operation in API Hub.
google.protobuf.Timestamp create_time = 9
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Update time stamp of the discovered API operation in API Hub.
google.protobuf.Timestamp update_time = 10
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// An HTTP-based API Operation, sometimes called a "REST" Operation.
message HttpOperationDetails {
// HTTP Path parameter.
message PathParam {
// Optional. Segment location in the path, 1-indexed
int32 position = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Data type of path param
DataType data_type = 2 [(google.api.field_behavior) = OPTIONAL];
}
// An aggregation of HTTP query parameter occurrences.
message QueryParam {
// Required. Name of query param
string name = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. The number of occurrences of this query parameter across
// transactions.
int64 count = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Data type of path param
DataType data_type = 3 [(google.api.field_behavior) = OPTIONAL];
}
// An aggregation of HTTP header occurrences.
message Header {
// Header name.
string name = 1;
// The number of occurrences of this Header across transactions.
int64 count = 2;
// Data type of header
DataType data_type = 3;
}
// An aggregation of HTTP requests.
message HttpRequest {
// Optional. Unordered map from header name to header metadata
map<string, Header> headers = 1 [(google.api.field_behavior) = OPTIONAL];
}
// An aggregation of HTTP responses.
message HttpResponse {
// Optional. Unordered map from header name to header metadata
map<string, Header> headers = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Map of status code to observed count
map<int32, int64> response_codes = 2
[(google.api.field_behavior) = OPTIONAL];
}
// Type of data
enum DataType {
// Unspecified data type
DATA_TYPE_UNSPECIFIED = 0;
// Boolean data type
BOOL = 1;
// Integer data type
INTEGER = 2;
// Float data type
FLOAT = 3;
// String data type
STRING = 4;
// UUID data type
UUID = 5;
}
// Required. An HTTP Operation.
HttpOperation http_operation = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. Path params of HttpOperation
repeated PathParam path_params = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Query params of HttpOperation
map<string, QueryParam> query_params = 3
[(google.api.field_behavior) = OPTIONAL];
// Optional. Request metadata.
HttpRequest request = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Response metadata.
HttpResponse response = 5 [(google.api.field_behavior) = OPTIONAL];
}