@sisyphus.js/google
Version:
Precompiled google common protos by sisyphus protobuf compiler
251 lines • 9.31 kB
TypeScript
import '@sisyphus.js/runtime/lib/google/protobuf/descriptor';
/**
* A simple descriptor of a resource type.
*
* ResourceDescriptor annotates a resource message (either by means of a
* protobuf annotation or use in the service config), and associates the
* resource's schema, the resource type, and the pattern of the resource name.
*
* Example:
*
* message Topic {
* // Indicates this message defines a resource schema.
* // Declares the resource type in the format of {service}/{kind}.
* // For Kubernetes resources, the format is {api group}/{kind}.
* option (google.api.resource) = {
* type: "pubsub.googleapis.com/Topic"
* pattern: "projects/{project}/topics/{topic}"
* };
* }
*
* The ResourceDescriptor Yaml config will look like:
*
* resources:
* - type: "pubsub.googleapis.com/Topic"
* pattern: "projects/{project}/topics/{topic}"
*
* Sometimes, resources have multiple patterns, typically because they can
* live under multiple parents.
*
* Example:
*
* message LogEntry {
* option (google.api.resource) = {
* type: "logging.googleapis.com/LogEntry"
* pattern: "projects/{project}/logs/{log}"
* pattern: "folders/{folder}/logs/{log}"
* pattern: "organizations/{organization}/logs/{log}"
* pattern: "billingAccounts/{billing_account}/logs/{log}"
* };
* }
*
* The ResourceDescriptor Yaml config will look like:
*
* resources:
* - type: 'logging.googleapis.com/LogEntry'
* pattern: "projects/{project}/logs/{log}"
* pattern: "folders/{folder}/logs/{log}"
* pattern: "organizations/{organization}/logs/{log}"
* pattern: "billingAccounts/{billing_account}/logs/{log}"
*/
export interface ResourceDescriptor {
/**
* The resource type. It must be in the format of
* {service_name}/{resource_type_kind}. The `resource_type_kind` must be
* singular and must not include version numbers.
*
* Example: `storage.googleapis.com/Bucket`
*
* The value of the resource_type_kind must follow the regular expression
* /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and
* should use PascalCase (UpperCamelCase). The maximum number of
* characters allowed for the `resource_type_kind` is 100.
*/
type?: string;
/**
* Optional. The relative resource name pattern associated with this resource
* type. The DNS prefix of the full resource name shouldn't be specified here.
*
* The path pattern must follow the syntax, which aligns with HTTP binding
* syntax:
*
* Template = Segment { "/" Segment } ;
* Segment = LITERAL | Variable ;
* Variable = "{" LITERAL "}" ;
*
* Examples:
*
* - "projects/{project}/topics/{topic}"
* - "projects/{project}/knowledgeBases/{knowledge_base}"
*
* The components in braces correspond to the IDs for each resource in the
* hierarchy. It is expected that, if multiple patterns are provided,
* the same component name (e.g. "project") refers to IDs of the same
* type of resource.
*/
pattern?: string[];
/**
* Optional. The field on the resource that designates the resource name
* field. If omitted, this is assumed to be "name".
*/
nameField?: string;
/**
* Optional. The historical or future-looking state of the resource pattern.
*
* Example:
*
* // The InspectTemplate message originally only supported resource
* // names with organization, and project was added later.
* message InspectTemplate {
* option (google.api.resource) = {
* type: "dlp.googleapis.com/InspectTemplate"
* pattern:
* "organizations/{organization}/inspectTemplates/{inspect_template}"
* pattern: "projects/{project}/inspectTemplates/{inspect_template}"
* history: ORIGINALLY_SINGLE_PATTERN
* };
* }
*/
history?: ResourceDescriptor.History | (keyof typeof ResourceDescriptor.History);
/**
* The plural name used in the resource name and permission names, such as
* 'projects' for the resource name of 'projects/{project}' and the permission
* name of 'cloudresourcemanager.googleapis.com/projects.get'. It is the same
* concept of the `plural` field in k8s CRD spec
* https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
*
* Note: The plural form is required even for singleton resources. See
* https://aip.dev/156
*/
plural?: string;
/**
* The same concept of the `singular` field in k8s CRD spec
* https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
* Such as "project" for the `resourcemanager.googleapis.com/Project` type.
*/
singular?: string;
/**
* Style flag(s) for this resource.
* These indicate that a resource is expected to conform to a given
* style. See the specific style flags for additional information.
*/
style?: ResourceDescriptor.Style | (keyof typeof ResourceDescriptor.Style)[];
}
export declare namespace ResourceDescriptor {
const name = "google.api.ResourceDescriptor";
/**
* A description of the historical or future-looking state of the
* resource pattern.
*/
enum History {
/** The "unset" value. */
HISTORY_UNSPECIFIED = 0,
/**
* The resource originally had one pattern and launched as such, and
* additional patterns were added later.
*/
ORIGINALLY_SINGLE_PATTERN = 1,
/**
* The resource has one pattern, but the API owner expects to add more
* later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents
* that from being necessary once there are multiple patterns.)
*/
FUTURE_MULTI_PATTERN = 2
}
namespace History {
const name = "google.api.ResourceDescriptor.History";
}
/** A flag representing a specific style that a resource claims to conform to. */
enum Style {
/** The unspecified value. Do not use. */
STYLE_UNSPECIFIED = 0,
/**
* This resource is intended to be "declarative-friendly".
*
* Declarative-friendly resources must be more strictly consistent, and
* setting this to true communicates to tools that this resource should
* adhere to declarative-friendly expectations.
*
* Note: This is used by the API linter (linter.aip.dev) to enable
* additional checks.
*/
DECLARATIVE_FRIENDLY = 1
}
namespace Style {
const name = "google.api.ResourceDescriptor.Style";
}
}
/**
* Defines a proto annotation that describes a string field that refers to
* an API resource.
*/
export interface ResourceReference {
/**
* The resource type that the annotated field references.
*
* Example:
*
* message Subscription {
* string topic = 2 [(google.api.resource_reference) = {
* type: "pubsub.googleapis.com/Topic"
* }];
* }
*
* Occasionally, a field may reference an arbitrary resource. In this case,
* APIs use the special value * in their resource reference.
*
* Example:
*
* message GetIamPolicyRequest {
* string resource = 2 [(google.api.resource_reference) = {
* type: "*"
* }];
* }
*/
type?: string;
/**
* The resource type of a child collection that the annotated field
* references. This is useful for annotating the `parent` field that
* doesn't have a fixed resource type.
*
* Example:
*
* message ListLogEntriesRequest {
* string parent = 1 [(google.api.resource_reference) = {
* child_type: "logging.googleapis.com/LogEntry"
* };
* }
*/
childType?: string;
}
export declare namespace ResourceReference {
const name = "google.api.ResourceReference";
}
declare module '@sisyphus.js/runtime/lib/google/protobuf/descriptor' {
interface FieldOptions {
/**
* An annotation that describes a resource reference, see
* [ResourceReference][].
*/
resourceReference: ResourceReference;
}
}
declare module '@sisyphus.js/runtime/lib/google/protobuf/descriptor' {
interface FileOptions {
/**
* An annotation that describes a resource definition without a corresponding
* message; see [ResourceDescriptor][].
*/
resourceDefinition: ResourceDescriptor[];
}
}
declare module '@sisyphus.js/runtime/lib/google/protobuf/descriptor' {
interface MessageOptions {
/**
* An annotation that describes a resource definition, see
* [ResourceDescriptor][].
*/
resource: ResourceDescriptor;
}
}
//# sourceMappingURL=resource.d.ts.map