// Copyright 2023 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. // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 // protoc v4.25.3 // source: google/cloud/resourcemanager/v3/projects.proto package resourcemanagerpb import ( context "context" reflect "reflect" sync "sync" iampb "cloud.google.com/go/iam/apiv1/iampb" longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) // Project lifecycle states. type Project_State int32 const ( // Unspecified state. This is only used/useful for distinguishing // unset values. Project_STATE_UNSPECIFIED Project_State = 0 // The normal and active state. Project_ACTIVE Project_State = 1 // The project has been marked for deletion by the user // (by invoking // [DeleteProject][google.cloud.resourcemanager.v3.Projects.DeleteProject]) // or by the system (Google Cloud Platform). // This can generally be reversed by invoking [UndeleteProject] // [google.cloud.resourcemanager.v3.Projects.UndeleteProject]. Project_DELETE_REQUESTED Project_State = 2 ) // Enum value maps for Project_State. var ( Project_State_name = map[int32]string{ 0: "STATE_UNSPECIFIED", 1: "ACTIVE", 2: "DELETE_REQUESTED", } Project_State_value = map[string]int32{ "STATE_UNSPECIFIED": 0, "ACTIVE": 1, "DELETE_REQUESTED": 2, } ) func (x Project_State) Enum() *Project_State { p := new(Project_State) *p = x return p } func (x Project_State) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Project_State) Descriptor() protoreflect.EnumDescriptor { return file_google_cloud_resourcemanager_v3_projects_proto_enumTypes[0].Descriptor() } func (Project_State) Type() protoreflect.EnumType { return &file_google_cloud_resourcemanager_v3_projects_proto_enumTypes[0] } func (x Project_State) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Project_State.Descriptor instead. func (Project_State) EnumDescriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{0, 0} } // A project is a high-level Google Cloud entity. It is a // container for ACLs, APIs, App Engine Apps, VMs, and other // Google Cloud Platform resources. type Project struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Output only. The unique resource name of the project. It is an int64 // generated number prefixed by "projects/". // // Example: `projects/415104041262` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Optional. A reference to a parent Resource. eg., `organizations/123` or // `folders/876`. Parent string `protobuf:"bytes,2,opt,name=parent,proto3" json:"parent,omitempty"` // Immutable. The unique, user-assigned id of the project. // It must be 6 to 30 lowercase ASCII letters, digits, or hyphens. // It must start with a letter. // Trailing hyphens are prohibited. // // Example: `tokyo-rain-123` ProjectId string `protobuf:"bytes,3,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` // Output only. The project lifecycle state. State Project_State `protobuf:"varint,4,opt,name=state,proto3,enum=google.cloud.resourcemanager.v3.Project_State" json:"state,omitempty"` // Optional. A user-assigned display name of the project. // When present it must be between 4 to 30 characters. // Allowed characters are: lowercase and uppercase letters, numbers, // hyphen, single-quote, double-quote, space, and exclamation point. // // Example: `My Project` DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` // Output only. Creation time. CreateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` // Output only. The most recent time this resource was modified. UpdateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` // Output only. The time at which this resource was requested for deletion. DeleteTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=delete_time,json=deleteTime,proto3" json:"delete_time,omitempty"` // Output only. A checksum computed by the server based on the current value // of the Project resource. This may be sent on update and delete requests to // ensure the client has an up-to-date value before proceeding. Etag string `protobuf:"bytes,9,opt,name=etag,proto3" json:"etag,omitempty"` // Optional. The labels associated with this project. // // Label keys must be between 1 and 63 characters long and must conform // to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?. // // Label values must be between 0 and 63 characters long and must conform // to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?. // // No more than 64 labels can be associated with a given resource. // // Clients should store labels in a representation such as JSON that does not // depend on specific characters being disallowed. // // Example: `"myBusinessDimension" : "businessValue"` Labels map[string]string `protobuf:"bytes,10,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *Project) Reset() { *x = Project{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Project) String() string { return protoimpl.X.MessageStringOf(x) } func (*Project) ProtoMessage() {} func (x *Project) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Project.ProtoReflect.Descriptor instead. func (*Project) Descriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{0} } func (x *Project) GetName() string { if x != nil { return x.Name } return "" } func (x *Project) GetParent() string { if x != nil { return x.Parent } return "" } func (x *Project) GetProjectId() string { if x != nil { return x.ProjectId } return "" } func (x *Project) GetState() Project_State { if x != nil { return x.State } return Project_STATE_UNSPECIFIED } func (x *Project) GetDisplayName() string { if x != nil { return x.DisplayName } return "" } func (x *Project) GetCreateTime() *timestamppb.Timestamp { if x != nil { return x.CreateTime } return nil } func (x *Project) GetUpdateTime() *timestamppb.Timestamp { if x != nil { return x.UpdateTime } return nil } func (x *Project) GetDeleteTime() *timestamppb.Timestamp { if x != nil { return x.DeleteTime } return nil } func (x *Project) GetEtag() string { if x != nil { return x.Etag } return "" } func (x *Project) GetLabels() map[string]string { if x != nil { return x.Labels } return nil } // The request sent to the // [GetProject][google.cloud.resourcemanager.v3.Projects.GetProject] // method. type GetProjectRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The name of the project (for example, `projects/415104041262`). Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *GetProjectRequest) Reset() { *x = GetProjectRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetProjectRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetProjectRequest) ProtoMessage() {} func (x *GetProjectRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetProjectRequest.ProtoReflect.Descriptor instead. func (*GetProjectRequest) Descriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{1} } func (x *GetProjectRequest) GetName() string { if x != nil { return x.Name } return "" } // The request sent to the // [ListProjects][google.cloud.resourcemanager.v3.Projects.ListProjects] // method. type ListProjectsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The name of the parent resource whose projects are being listed. // Only children of this parent resource are listed; descendants are not // listed. // // If the parent is a folder, use the value `folders/{folder_id}`. If the // parent is an organization, use the value `organizations/{org_id}`. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Optional. A pagination token returned from a previous call to // [ListProjects] [google.cloud.resourcemanager.v3.Projects.ListProjects] that // indicates from where listing should continue. PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` // Optional. The maximum number of projects to return in the response. // The server can return fewer projects than requested. // If unspecified, server picks an appropriate default. PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Optional. Indicate that projects in the `DELETE_REQUESTED` state should // also be returned. Normally only `ACTIVE` projects are returned. ShowDeleted bool `protobuf:"varint,4,opt,name=show_deleted,json=showDeleted,proto3" json:"show_deleted,omitempty"` } func (x *ListProjectsRequest) Reset() { *x = ListProjectsRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListProjectsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListProjectsRequest) ProtoMessage() {} func (x *ListProjectsRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListProjectsRequest.ProtoReflect.Descriptor instead. func (*ListProjectsRequest) Descriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{2} } func (x *ListProjectsRequest) GetParent() string { if x != nil { return x.Parent } return "" } func (x *ListProjectsRequest) GetPageToken() string { if x != nil { return x.PageToken } return "" } func (x *ListProjectsRequest) GetPageSize() int32 { if x != nil { return x.PageSize } return 0 } func (x *ListProjectsRequest) GetShowDeleted() bool { if x != nil { return x.ShowDeleted } return false } // A page of the response received from the // [ListProjects][google.cloud.resourcemanager.v3.Projects.ListProjects] // method. // // A paginated response where more pages are available has // `next_page_token` set. This token can be used in a subsequent request to // retrieve the next request page. // // NOTE: A response may contain fewer elements than the request `page_size` and // still have a `next_page_token`. type ListProjectsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The list of Projects under the parent. This list can be paginated. Projects []*Project `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"` // Pagination token. // // If the result set is too large to fit in a single response, this token // is returned. It encodes the position of the current result cursor. // Feeding this value into a new list request with the `page_token` parameter // gives the next page of the results. // // When `next_page_token` is not filled in, there is no next page and // the list returned is the last page in the result set. // // Pagination tokens have a limited lifetime. NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } func (x *ListProjectsResponse) Reset() { *x = ListProjectsResponse{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListProjectsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListProjectsResponse) ProtoMessage() {} func (x *ListProjectsResponse) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListProjectsResponse.ProtoReflect.Descriptor instead. func (*ListProjectsResponse) Descriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{3} } func (x *ListProjectsResponse) GetProjects() []*Project { if x != nil { return x.Projects } return nil } func (x *ListProjectsResponse) GetNextPageToken() string { if x != nil { return x.NextPageToken } return "" } // The request sent to the // [SearchProjects][google.cloud.resourcemanager.v3.Projects.SearchProjects] // method. type SearchProjectsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Optional. A query string for searching for projects that the caller has // `resourcemanager.projects.get` permission to. If multiple fields are // included in the query, then it will return results that match any of the // fields. Some eligible fields are: // // - **`displayName`, `name`**: Filters by displayName. // - **`parent`**: Project's parent (for example: `folders/123`, // `organizations/*`). Prefer `parent` field over `parent.type` and // `parent.id`. // - **`parent.type`**: Parent's type: `folder` or `organization`. // - **`parent.id`**: Parent's id number (for example: `123`). // - **`id`, `projectId`**: Filters by projectId. // - **`state`, `lifecycleState`**: Filters by state. // - **`labels`**: Filters by label name or value. // - **`labels.` (where `` is the name of a label)**: Filters by label // name. // // Search expressions are case insensitive. // // Some examples queries: // // - **`name:how*`**: The project's name starts with "how". // - **`name:Howl`**: The project's name is `Howl` or `howl`. // - **`name:HOWL`**: Equivalent to above. // - **`NAME:howl`**: Equivalent to above. // - **`labels.color:*`**: The project has the label `color`. // - **`labels.color:red`**: The project's label `color` has the value `red`. // - **`labels.color:red labels.size:big`**: The project's label `color` has // the value `red` or its label `size` has the value `big`. // // If no query is specified, the call will return projects for which the user // has the `resourcemanager.projects.get` permission. Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` // Optional. A pagination token returned from a previous call to // [ListProjects] [google.cloud.resourcemanager.v3.Projects.ListProjects] that // indicates from where listing should continue. PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` // Optional. The maximum number of projects to return in the response. // The server can return fewer projects than requested. // If unspecified, server picks an appropriate default. PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` } func (x *SearchProjectsRequest) Reset() { *x = SearchProjectsRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchProjectsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchProjectsRequest) ProtoMessage() {} func (x *SearchProjectsRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchProjectsRequest.ProtoReflect.Descriptor instead. func (*SearchProjectsRequest) Descriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{4} } func (x *SearchProjectsRequest) GetQuery() string { if x != nil { return x.Query } return "" } func (x *SearchProjectsRequest) GetPageToken() string { if x != nil { return x.PageToken } return "" } func (x *SearchProjectsRequest) GetPageSize() int32 { if x != nil { return x.PageSize } return 0 } // A page of the response received from the // [SearchProjects][google.cloud.resourcemanager.v3.Projects.SearchProjects] // method. // // A paginated response where more pages are available has // `next_page_token` set. This token can be used in a subsequent request to // retrieve the next request page. type SearchProjectsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The list of Projects that matched the list filter query. This list can // be paginated. Projects []*Project `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"` // Pagination token. // // If the result set is too large to fit in a single response, this token // is returned. It encodes the position of the current result cursor. // Feeding this value into a new list request with the `page_token` parameter // gives the next page of the results. // // When `next_page_token` is not filled in, there is no next page and // the list returned is the last page in the result set. // // Pagination tokens have a limited lifetime. NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } func (x *SearchProjectsResponse) Reset() { *x = SearchProjectsResponse{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchProjectsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchProjectsResponse) ProtoMessage() {} func (x *SearchProjectsResponse) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchProjectsResponse.ProtoReflect.Descriptor instead. func (*SearchProjectsResponse) Descriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{5} } func (x *SearchProjectsResponse) GetProjects() []*Project { if x != nil { return x.Projects } return nil } func (x *SearchProjectsResponse) GetNextPageToken() string { if x != nil { return x.NextPageToken } return "" } // The request sent to the // [CreateProject][google.cloud.resourcemanager.v3.Projects.CreateProject] // method. type CreateProjectRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The Project to create. // // Project ID is required. If the requested ID is unavailable, the request // fails. // // If the `parent` field is set, the `resourcemanager.projects.create` // permission is checked on the parent resource. If no parent is set and // the authorization credentials belong to an Organization, the parent // will be set to that Organization. Project *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` } func (x *CreateProjectRequest) Reset() { *x = CreateProjectRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateProjectRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateProjectRequest) ProtoMessage() {} func (x *CreateProjectRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateProjectRequest.ProtoReflect.Descriptor instead. func (*CreateProjectRequest) Descriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{6} } func (x *CreateProjectRequest) GetProject() *Project { if x != nil { return x.Project } return nil } // A status object which is used as the `metadata` field for the Operation // returned by CreateProject. It provides insight for when significant phases of // Project creation have completed. type CreateProjectMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Creation time of the project creation workflow. CreateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` // True if the project can be retrieved using `GetProject`. No other // operations on the project are guaranteed to work until the project creation // is complete. Gettable bool `protobuf:"varint,2,opt,name=gettable,proto3" json:"gettable,omitempty"` // True if the project creation process is complete. Ready bool `protobuf:"varint,3,opt,name=ready,proto3" json:"ready,omitempty"` } func (x *CreateProjectMetadata) Reset() { *x = CreateProjectMetadata{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateProjectMetadata) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateProjectMetadata) ProtoMessage() {} func (x *CreateProjectMetadata) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateProjectMetadata.ProtoReflect.Descriptor instead. func (*CreateProjectMetadata) Descriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{7} } func (x *CreateProjectMetadata) GetCreateTime() *timestamppb.Timestamp { if x != nil { return x.CreateTime } return nil } func (x *CreateProjectMetadata) GetGettable() bool { if x != nil { return x.Gettable } return false } func (x *CreateProjectMetadata) GetReady() bool { if x != nil { return x.Ready } return false } // The request sent to the // [UpdateProject][google.cloud.resourcemanager.v3.Projects.UpdateProject] // method. // // Only the `display_name` and `labels` fields can be change. Use the // [MoveProject][google.cloud.resourcemanager.v3.Projects.MoveProject] method to // change the `parent` field. type UpdateProjectRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The new definition of the project. Project *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` // Optional. An update mask to selectively update fields. UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` } func (x *UpdateProjectRequest) Reset() { *x = UpdateProjectRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateProjectRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateProjectRequest) ProtoMessage() {} func (x *UpdateProjectRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateProjectRequest.ProtoReflect.Descriptor instead. func (*UpdateProjectRequest) Descriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{8} } func (x *UpdateProjectRequest) GetProject() *Project { if x != nil { return x.Project } return nil } func (x *UpdateProjectRequest) GetUpdateMask() *fieldmaskpb.FieldMask { if x != nil { return x.UpdateMask } return nil } // A status object which is used as the `metadata` field for the Operation // returned by UpdateProject. type UpdateProjectMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateProjectMetadata) Reset() { *x = UpdateProjectMetadata{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateProjectMetadata) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateProjectMetadata) ProtoMessage() {} func (x *UpdateProjectMetadata) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateProjectMetadata.ProtoReflect.Descriptor instead. func (*UpdateProjectMetadata) Descriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{9} } // The request sent to // [MoveProject][google.cloud.resourcemanager.v3.Projects.MoveProject] // method. type MoveProjectRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The name of the project to move. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Required. The new parent to move the Project under. DestinationParent string `protobuf:"bytes,2,opt,name=destination_parent,json=destinationParent,proto3" json:"destination_parent,omitempty"` } func (x *MoveProjectRequest) Reset() { *x = MoveProjectRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MoveProjectRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*MoveProjectRequest) ProtoMessage() {} func (x *MoveProjectRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use MoveProjectRequest.ProtoReflect.Descriptor instead. func (*MoveProjectRequest) Descriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{10} } func (x *MoveProjectRequest) GetName() string { if x != nil { return x.Name } return "" } func (x *MoveProjectRequest) GetDestinationParent() string { if x != nil { return x.DestinationParent } return "" } // A status object which is used as the `metadata` field for the Operation // returned by MoveProject. type MoveProjectMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *MoveProjectMetadata) Reset() { *x = MoveProjectMetadata{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MoveProjectMetadata) String() string { return protoimpl.X.MessageStringOf(x) } func (*MoveProjectMetadata) ProtoMessage() {} func (x *MoveProjectMetadata) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use MoveProjectMetadata.ProtoReflect.Descriptor instead. func (*MoveProjectMetadata) Descriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{11} } // [DeleteProject][google.cloud.resourcemanager.v3.Projects.DeleteProject] // method. type DeleteProjectRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The name of the Project (for example, `projects/415104041262`). Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *DeleteProjectRequest) Reset() { *x = DeleteProjectRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteProjectRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteProjectRequest) ProtoMessage() {} func (x *DeleteProjectRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteProjectRequest.ProtoReflect.Descriptor instead. func (*DeleteProjectRequest) Descriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{12} } func (x *DeleteProjectRequest) GetName() string { if x != nil { return x.Name } return "" } // A status object which is used as the `metadata` field for the Operation // returned by `DeleteProject`. type DeleteProjectMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteProjectMetadata) Reset() { *x = DeleteProjectMetadata{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteProjectMetadata) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteProjectMetadata) ProtoMessage() {} func (x *DeleteProjectMetadata) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteProjectMetadata.ProtoReflect.Descriptor instead. func (*DeleteProjectMetadata) Descriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{13} } // The request sent to the [UndeleteProject] // [google.cloud.resourcemanager.v3.Projects.UndeleteProject] // method. type UndeleteProjectRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The name of the project (for example, `projects/415104041262`). // // Required. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *UndeleteProjectRequest) Reset() { *x = UndeleteProjectRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UndeleteProjectRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UndeleteProjectRequest) ProtoMessage() {} func (x *UndeleteProjectRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UndeleteProjectRequest.ProtoReflect.Descriptor instead. func (*UndeleteProjectRequest) Descriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{14} } func (x *UndeleteProjectRequest) GetName() string { if x != nil { return x.Name } return "" } // A status object which is used as the `metadata` field for the Operation // returned by `UndeleteProject`. type UndeleteProjectMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UndeleteProjectMetadata) Reset() { *x = UndeleteProjectMetadata{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UndeleteProjectMetadata) String() string { return protoimpl.X.MessageStringOf(x) } func (*UndeleteProjectMetadata) ProtoMessage() {} func (x *UndeleteProjectMetadata) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UndeleteProjectMetadata.ProtoReflect.Descriptor instead. func (*UndeleteProjectMetadata) Descriptor() ([]byte, []int) { return file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP(), []int{15} } var File_google_cloud_resourcemanager_v3_projects_proto protoreflect.FileDescriptor var file_google_cloud_resourcemanager_v3_projects_proto_rawDesc = []byte{ 0x0a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x61, 0x6d, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xce, 0x05, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x51, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x40, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x45, 0x44, 0x10, 0x02, 0x3a, 0x47, 0xea, 0x41, 0x44, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x52, 0x01, 0x01, 0x22, 0x5c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x03, 0x12, 0x01, 0x2a, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x73, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x84, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x78, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x5f, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x65, 0x74, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x67, 0x65, 0x74, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x22, 0xa1, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x17, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x97, 0x01, 0x0a, 0x12, 0x4d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x03, 0x12, 0x01, 0x2a, 0x52, 0x11, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x15, 0x0a, 0x13, 0x4d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5f, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x61, 0x0a, 0x16, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x32, 0x8f, 0x10, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x24, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x33, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x9a, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0xa6, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0xda, 0x41, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0xb1, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4a, 0xca, 0x41, 0x20, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x0c, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0xce, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x67, 0xca, 0x41, 0x20, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x13, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x3a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x32, 0x1d, 0x2f, 0x76, 0x33, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xc4, 0x01, 0x0a, 0x0b, 0x4d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x61, 0xca, 0x41, 0x1e, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x13, 0x4d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x18, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x20, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x22, 0x1a, 0x2f, 0x76, 0x33, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0xae, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x47, 0xca, 0x41, 0x20, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x2a, 0x15, 0x2f, 0x76, 0x33, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xc0, 0x01, 0x0a, 0x0f, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x55, 0xca, 0x41, 0x22, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x17, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x22, 0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x87, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3c, 0xda, 0x41, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x3a, 0x01, 0x2a, 0x22, 0x26, 0x2f, 0x76, 0x33, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x8f, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x44, 0xda, 0x41, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2c, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x3a, 0x01, 0x2a, 0x22, 0x26, 0x2f, 0x76, 0x33, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0xba, 0x01, 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0xda, 0x41, 0x15, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2c, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x3a, 0x01, 0x2a, 0x22, 0x2c, 0x2f, 0x76, 0x33, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x74, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x90, 0x01, 0xca, 0x41, 0x23, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x67, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x42, 0xee, 0x01, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x42, 0x0d, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x33, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x70, 0x62, 0x3b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x70, 0x62, 0xaa, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x56, 0x33, 0xca, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5c, 0x56, 0x33, 0xea, 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_google_cloud_resourcemanager_v3_projects_proto_rawDescOnce sync.Once file_google_cloud_resourcemanager_v3_projects_proto_rawDescData = file_google_cloud_resourcemanager_v3_projects_proto_rawDesc ) func file_google_cloud_resourcemanager_v3_projects_proto_rawDescGZIP() []byte { file_google_cloud_resourcemanager_v3_projects_proto_rawDescOnce.Do(func() { file_google_cloud_resourcemanager_v3_projects_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_resourcemanager_v3_projects_proto_rawDescData) }) return file_google_cloud_resourcemanager_v3_projects_proto_rawDescData } var file_google_cloud_resourcemanager_v3_projects_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_google_cloud_resourcemanager_v3_projects_proto_msgTypes = make([]protoimpl.MessageInfo, 17) var file_google_cloud_resourcemanager_v3_projects_proto_goTypes = []interface{}{ (Project_State)(0), // 0: google.cloud.resourcemanager.v3.Project.State (*Project)(nil), // 1: google.cloud.resourcemanager.v3.Project (*GetProjectRequest)(nil), // 2: google.cloud.resourcemanager.v3.GetProjectRequest (*ListProjectsRequest)(nil), // 3: google.cloud.resourcemanager.v3.ListProjectsRequest (*ListProjectsResponse)(nil), // 4: google.cloud.resourcemanager.v3.ListProjectsResponse (*SearchProjectsRequest)(nil), // 5: google.cloud.resourcemanager.v3.SearchProjectsRequest (*SearchProjectsResponse)(nil), // 6: google.cloud.resourcemanager.v3.SearchProjectsResponse (*CreateProjectRequest)(nil), // 7: google.cloud.resourcemanager.v3.CreateProjectRequest (*CreateProjectMetadata)(nil), // 8: google.cloud.resourcemanager.v3.CreateProjectMetadata (*UpdateProjectRequest)(nil), // 9: google.cloud.resourcemanager.v3.UpdateProjectRequest (*UpdateProjectMetadata)(nil), // 10: google.cloud.resourcemanager.v3.UpdateProjectMetadata (*MoveProjectRequest)(nil), // 11: google.cloud.resourcemanager.v3.MoveProjectRequest (*MoveProjectMetadata)(nil), // 12: google.cloud.resourcemanager.v3.MoveProjectMetadata (*DeleteProjectRequest)(nil), // 13: google.cloud.resourcemanager.v3.DeleteProjectRequest (*DeleteProjectMetadata)(nil), // 14: google.cloud.resourcemanager.v3.DeleteProjectMetadata (*UndeleteProjectRequest)(nil), // 15: google.cloud.resourcemanager.v3.UndeleteProjectRequest (*UndeleteProjectMetadata)(nil), // 16: google.cloud.resourcemanager.v3.UndeleteProjectMetadata nil, // 17: google.cloud.resourcemanager.v3.Project.LabelsEntry (*timestamppb.Timestamp)(nil), // 18: google.protobuf.Timestamp (*fieldmaskpb.FieldMask)(nil), // 19: google.protobuf.FieldMask (*iampb.GetIamPolicyRequest)(nil), // 20: google.iam.v1.GetIamPolicyRequest (*iampb.SetIamPolicyRequest)(nil), // 21: google.iam.v1.SetIamPolicyRequest (*iampb.TestIamPermissionsRequest)(nil), // 22: google.iam.v1.TestIamPermissionsRequest (*longrunningpb.Operation)(nil), // 23: google.longrunning.Operation (*iampb.Policy)(nil), // 24: google.iam.v1.Policy (*iampb.TestIamPermissionsResponse)(nil), // 25: google.iam.v1.TestIamPermissionsResponse } var file_google_cloud_resourcemanager_v3_projects_proto_depIdxs = []int32{ 0, // 0: google.cloud.resourcemanager.v3.Project.state:type_name -> google.cloud.resourcemanager.v3.Project.State 18, // 1: google.cloud.resourcemanager.v3.Project.create_time:type_name -> google.protobuf.Timestamp 18, // 2: google.cloud.resourcemanager.v3.Project.update_time:type_name -> google.protobuf.Timestamp 18, // 3: google.cloud.resourcemanager.v3.Project.delete_time:type_name -> google.protobuf.Timestamp 17, // 4: google.cloud.resourcemanager.v3.Project.labels:type_name -> google.cloud.resourcemanager.v3.Project.LabelsEntry 1, // 5: google.cloud.resourcemanager.v3.ListProjectsResponse.projects:type_name -> google.cloud.resourcemanager.v3.Project 1, // 6: google.cloud.resourcemanager.v3.SearchProjectsResponse.projects:type_name -> google.cloud.resourcemanager.v3.Project 1, // 7: google.cloud.resourcemanager.v3.CreateProjectRequest.project:type_name -> google.cloud.resourcemanager.v3.Project 18, // 8: google.cloud.resourcemanager.v3.CreateProjectMetadata.create_time:type_name -> google.protobuf.Timestamp 1, // 9: google.cloud.resourcemanager.v3.UpdateProjectRequest.project:type_name -> google.cloud.resourcemanager.v3.Project 19, // 10: google.cloud.resourcemanager.v3.UpdateProjectRequest.update_mask:type_name -> google.protobuf.FieldMask 2, // 11: google.cloud.resourcemanager.v3.Projects.GetProject:input_type -> google.cloud.resourcemanager.v3.GetProjectRequest 3, // 12: google.cloud.resourcemanager.v3.Projects.ListProjects:input_type -> google.cloud.resourcemanager.v3.ListProjectsRequest 5, // 13: google.cloud.resourcemanager.v3.Projects.SearchProjects:input_type -> google.cloud.resourcemanager.v3.SearchProjectsRequest 7, // 14: google.cloud.resourcemanager.v3.Projects.CreateProject:input_type -> google.cloud.resourcemanager.v3.CreateProjectRequest 9, // 15: google.cloud.resourcemanager.v3.Projects.UpdateProject:input_type -> google.cloud.resourcemanager.v3.UpdateProjectRequest 11, // 16: google.cloud.resourcemanager.v3.Projects.MoveProject:input_type -> google.cloud.resourcemanager.v3.MoveProjectRequest 13, // 17: google.cloud.resourcemanager.v3.Projects.DeleteProject:input_type -> google.cloud.resourcemanager.v3.DeleteProjectRequest 15, // 18: google.cloud.resourcemanager.v3.Projects.UndeleteProject:input_type -> google.cloud.resourcemanager.v3.UndeleteProjectRequest 20, // 19: google.cloud.resourcemanager.v3.Projects.GetIamPolicy:input_type -> google.iam.v1.GetIamPolicyRequest 21, // 20: google.cloud.resourcemanager.v3.Projects.SetIamPolicy:input_type -> google.iam.v1.SetIamPolicyRequest 22, // 21: google.cloud.resourcemanager.v3.Projects.TestIamPermissions:input_type -> google.iam.v1.TestIamPermissionsRequest 1, // 22: google.cloud.resourcemanager.v3.Projects.GetProject:output_type -> google.cloud.resourcemanager.v3.Project 4, // 23: google.cloud.resourcemanager.v3.Projects.ListProjects:output_type -> google.cloud.resourcemanager.v3.ListProjectsResponse 6, // 24: google.cloud.resourcemanager.v3.Projects.SearchProjects:output_type -> google.cloud.resourcemanager.v3.SearchProjectsResponse 23, // 25: google.cloud.resourcemanager.v3.Projects.CreateProject:output_type -> google.longrunning.Operation 23, // 26: google.cloud.resourcemanager.v3.Projects.UpdateProject:output_type -> google.longrunning.Operation 23, // 27: google.cloud.resourcemanager.v3.Projects.MoveProject:output_type -> google.longrunning.Operation 23, // 28: google.cloud.resourcemanager.v3.Projects.DeleteProject:output_type -> google.longrunning.Operation 23, // 29: google.cloud.resourcemanager.v3.Projects.UndeleteProject:output_type -> google.longrunning.Operation 24, // 30: google.cloud.resourcemanager.v3.Projects.GetIamPolicy:output_type -> google.iam.v1.Policy 24, // 31: google.cloud.resourcemanager.v3.Projects.SetIamPolicy:output_type -> google.iam.v1.Policy 25, // 32: google.cloud.resourcemanager.v3.Projects.TestIamPermissions:output_type -> google.iam.v1.TestIamPermissionsResponse 22, // [22:33] is the sub-list for method output_type 11, // [11:22] is the sub-list for method input_type 11, // [11:11] is the sub-list for extension type_name 11, // [11:11] is the sub-list for extension extendee 0, // [0:11] is the sub-list for field type_name } func init() { file_google_cloud_resourcemanager_v3_projects_proto_init() } func file_google_cloud_resourcemanager_v3_projects_proto_init() { if File_google_cloud_resourcemanager_v3_projects_proto != nil { return } if !protoimpl.UnsafeEnabled { file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Project); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProjectRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProjectsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProjectsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchProjectsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchProjectsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateProjectRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateProjectMetadata); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateProjectRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateProjectMetadata); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MoveProjectRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MoveProjectMetadata); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteProjectRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteProjectMetadata); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UndeleteProjectRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_resourcemanager_v3_projects_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UndeleteProjectMetadata); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_resourcemanager_v3_projects_proto_rawDesc, NumEnums: 1, NumMessages: 17, NumExtensions: 0, NumServices: 1, }, GoTypes: file_google_cloud_resourcemanager_v3_projects_proto_goTypes, DependencyIndexes: file_google_cloud_resourcemanager_v3_projects_proto_depIdxs, EnumInfos: file_google_cloud_resourcemanager_v3_projects_proto_enumTypes, MessageInfos: file_google_cloud_resourcemanager_v3_projects_proto_msgTypes, }.Build() File_google_cloud_resourcemanager_v3_projects_proto = out.File file_google_cloud_resourcemanager_v3_projects_proto_rawDesc = nil file_google_cloud_resourcemanager_v3_projects_proto_goTypes = nil file_google_cloud_resourcemanager_v3_projects_proto_depIdxs = nil } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context var _ grpc.ClientConnInterface // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion6 // ProjectsClient is the client API for Projects service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type ProjectsClient interface { // Retrieves the project identified by the specified `name` (for example, // `projects/415104041262`). // // The caller must have `resourcemanager.projects.get` permission // for this project. GetProject(ctx context.Context, in *GetProjectRequest, opts ...grpc.CallOption) (*Project, error) // Lists projects that are direct children of the specified folder or // organization resource. `list()` provides a strongly consistent view of the // projects underneath the specified parent resource. `list()` returns // projects sorted based upon the (ascending) lexical ordering of their // `display_name`. The caller must have `resourcemanager.projects.list` // permission on the identified parent. ListProjects(ctx context.Context, in *ListProjectsRequest, opts ...grpc.CallOption) (*ListProjectsResponse, error) // Search for projects that the caller has both `resourcemanager.projects.get` // permission on, and also satisfy the specified query. // // This method returns projects in an unspecified order. // // This method is eventually consistent with project mutations; this means // that a newly created project may not appear in the results or recent // updates to an existing project may not be reflected in the results. To // retrieve the latest state of a project, use the // [GetProject][google.cloud.resourcemanager.v3.Projects.GetProject] method. SearchProjects(ctx context.Context, in *SearchProjectsRequest, opts ...grpc.CallOption) (*SearchProjectsResponse, error) // Request that a new project be created. The result is an `Operation` which // can be used to track the creation process. This process usually takes a few // seconds, but can sometimes take much longer. The tracking `Operation` is // automatically deleted after a few hours, so there is no need to call // `DeleteOperation`. CreateProject(ctx context.Context, in *CreateProjectRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Updates the `display_name` and labels of the project identified by the // specified `name` (for example, `projects/415104041262`). Deleting all // labels requires an update mask for labels field. // // The caller must have `resourcemanager.projects.update` permission for this // project. UpdateProject(ctx context.Context, in *UpdateProjectRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Move a project to another place in your resource hierarchy, under a new // resource parent. // // Returns an operation which can be used to track the process of the project // move workflow. // Upon success, the `Operation.response` field will be populated with the // moved project. // // The caller must have `resourcemanager.projects.move` permission on the // project, on the project's current and proposed new parent. // // If project has no current parent, or it currently does not have an // associated organization resource, you will also need the // `resourcemanager.projects.setIamPolicy` permission in the project. MoveProject(ctx context.Context, in *MoveProjectRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Marks the project identified by the specified // `name` (for example, `projects/415104041262`) for deletion. // // This method will only affect the project if it has a lifecycle state of // [ACTIVE][google.cloud.resourcemanager.v3.Project.State.ACTIVE]. // // This method changes the Project's lifecycle state from // [ACTIVE][google.cloud.resourcemanager.v3.Project.State.ACTIVE] // to // [DELETE_REQUESTED][google.cloud.resourcemanager.v3.Project.State.DELETE_REQUESTED]. // The deletion starts at an unspecified time, // at which point the Project is no longer accessible. // // Until the deletion completes, you can check the lifecycle state // checked by retrieving the project with [GetProject] // [google.cloud.resourcemanager.v3.Projects.GetProject], // and the project remains visible to [ListProjects] // [google.cloud.resourcemanager.v3.Projects.ListProjects]. // However, you cannot update the project. // // After the deletion completes, the project is not retrievable by // the [GetProject] // [google.cloud.resourcemanager.v3.Projects.GetProject], // [ListProjects] // [google.cloud.resourcemanager.v3.Projects.ListProjects], and // [SearchProjects][google.cloud.resourcemanager.v3.Projects.SearchProjects] // methods. // // This method behaves idempotently, such that deleting a `DELETE_REQUESTED` // project will not cause an error, but also won't do anything. // // The caller must have `resourcemanager.projects.delete` permissions for this // project. DeleteProject(ctx context.Context, in *DeleteProjectRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Restores the project identified by the specified // `name` (for example, `projects/415104041262`). // You can only use this method for a project that has a lifecycle state of // [DELETE_REQUESTED] // [Projects.State.DELETE_REQUESTED]. // After deletion starts, the project cannot be restored. // // The caller must have `resourcemanager.projects.undelete` permission for // this project. UndeleteProject(ctx context.Context, in *UndeleteProjectRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Returns the IAM access control policy for the specified project, in the // format `projects/{ProjectIdOrNumber}` e.g. projects/123. // Permission is denied if the policy or the resource do not exist. GetIamPolicy(ctx context.Context, in *iampb.GetIamPolicyRequest, opts ...grpc.CallOption) (*iampb.Policy, error) // Sets the IAM access control policy for the specified project, in the // format `projects/{ProjectIdOrNumber}` e.g. projects/123. // // CAUTION: This method will replace the existing policy, and cannot be used // to append additional IAM settings. // // Note: Removing service accounts from policies or changing their roles can // render services completely inoperable. It is important to understand how // the service account is being used before removing or updating its roles. // // The following constraints apply when using `setIamPolicy()`: // // + Project does not support `allUsers` and `allAuthenticatedUsers` as // `members` in a `Binding` of a `Policy`. // // + The owner role can be granted to a `user`, `serviceAccount`, or a group // that is part of an organization. For example, // group@myownpersonaldomain.com could be added as an owner to a project in // the myownpersonaldomain.com organization, but not the examplepetstore.com // organization. // // + Service accounts can be made owners of a project directly // without any restrictions. However, to be added as an owner, a user must be // invited using the Cloud Platform console and must accept the invitation. // // + A user cannot be granted the owner role using `setIamPolicy()`. The user // must be granted the owner role using the Cloud Platform Console and must // explicitly accept the invitation. // // + Invitations to grant the owner role cannot be sent using // `setIamPolicy()`; // they must be sent only using the Cloud Platform Console. // // + If the project is not part of an organization, there must be at least // one owner who has accepted the Terms of Service (ToS) agreement in the // policy. Calling `setIamPolicy()` to remove the last ToS-accepted owner // from the policy will fail. This restriction also applies to legacy // projects that no longer have owners who have accepted the ToS. Edits to // IAM policies will be rejected until the lack of a ToS-accepting owner is // rectified. If the project is part of an organization, you can remove all // owners, potentially making the organization inaccessible. SetIamPolicy(ctx context.Context, in *iampb.SetIamPolicyRequest, opts ...grpc.CallOption) (*iampb.Policy, error) // Returns permissions that a caller has on the specified project, in the // format `projects/{ProjectIdOrNumber}` e.g. projects/123.. TestIamPermissions(ctx context.Context, in *iampb.TestIamPermissionsRequest, opts ...grpc.CallOption) (*iampb.TestIamPermissionsResponse, error) } type projectsClient struct { cc grpc.ClientConnInterface } func NewProjectsClient(cc grpc.ClientConnInterface) ProjectsClient { return &projectsClient{cc} } func (c *projectsClient) GetProject(ctx context.Context, in *GetProjectRequest, opts ...grpc.CallOption) (*Project, error) { out := new(Project) err := c.cc.Invoke(ctx, "/google.cloud.resourcemanager.v3.Projects/GetProject", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *projectsClient) ListProjects(ctx context.Context, in *ListProjectsRequest, opts ...grpc.CallOption) (*ListProjectsResponse, error) { out := new(ListProjectsResponse) err := c.cc.Invoke(ctx, "/google.cloud.resourcemanager.v3.Projects/ListProjects", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *projectsClient) SearchProjects(ctx context.Context, in *SearchProjectsRequest, opts ...grpc.CallOption) (*SearchProjectsResponse, error) { out := new(SearchProjectsResponse) err := c.cc.Invoke(ctx, "/google.cloud.resourcemanager.v3.Projects/SearchProjects", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *projectsClient) CreateProject(ctx context.Context, in *CreateProjectRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { out := new(longrunningpb.Operation) err := c.cc.Invoke(ctx, "/google.cloud.resourcemanager.v3.Projects/CreateProject", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *projectsClient) UpdateProject(ctx context.Context, in *UpdateProjectRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { out := new(longrunningpb.Operation) err := c.cc.Invoke(ctx, "/google.cloud.resourcemanager.v3.Projects/UpdateProject", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *projectsClient) MoveProject(ctx context.Context, in *MoveProjectRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { out := new(longrunningpb.Operation) err := c.cc.Invoke(ctx, "/google.cloud.resourcemanager.v3.Projects/MoveProject", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *projectsClient) DeleteProject(ctx context.Context, in *DeleteProjectRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { out := new(longrunningpb.Operation) err := c.cc.Invoke(ctx, "/google.cloud.resourcemanager.v3.Projects/DeleteProject", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *projectsClient) UndeleteProject(ctx context.Context, in *UndeleteProjectRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { out := new(longrunningpb.Operation) err := c.cc.Invoke(ctx, "/google.cloud.resourcemanager.v3.Projects/UndeleteProject", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *projectsClient) GetIamPolicy(ctx context.Context, in *iampb.GetIamPolicyRequest, opts ...grpc.CallOption) (*iampb.Policy, error) { out := new(iampb.Policy) err := c.cc.Invoke(ctx, "/google.cloud.resourcemanager.v3.Projects/GetIamPolicy", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *projectsClient) SetIamPolicy(ctx context.Context, in *iampb.SetIamPolicyRequest, opts ...grpc.CallOption) (*iampb.Policy, error) { out := new(iampb.Policy) err := c.cc.Invoke(ctx, "/google.cloud.resourcemanager.v3.Projects/SetIamPolicy", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *projectsClient) TestIamPermissions(ctx context.Context, in *iampb.TestIamPermissionsRequest, opts ...grpc.CallOption) (*iampb.TestIamPermissionsResponse, error) { out := new(iampb.TestIamPermissionsResponse) err := c.cc.Invoke(ctx, "/google.cloud.resourcemanager.v3.Projects/TestIamPermissions", in, out, opts...) if err != nil { return nil, err } return out, nil } // ProjectsServer is the server API for Projects service. type ProjectsServer interface { // Retrieves the project identified by the specified `name` (for example, // `projects/415104041262`). // // The caller must have `resourcemanager.projects.get` permission // for this project. GetProject(context.Context, *GetProjectRequest) (*Project, error) // Lists projects that are direct children of the specified folder or // organization resource. `list()` provides a strongly consistent view of the // projects underneath the specified parent resource. `list()` returns // projects sorted based upon the (ascending) lexical ordering of their // `display_name`. The caller must have `resourcemanager.projects.list` // permission on the identified parent. ListProjects(context.Context, *ListProjectsRequest) (*ListProjectsResponse, error) // Search for projects that the caller has both `resourcemanager.projects.get` // permission on, and also satisfy the specified query. // // This method returns projects in an unspecified order. // // This method is eventually consistent with project mutations; this means // that a newly created project may not appear in the results or recent // updates to an existing project may not be reflected in the results. To // retrieve the latest state of a project, use the // [GetProject][google.cloud.resourcemanager.v3.Projects.GetProject] method. SearchProjects(context.Context, *SearchProjectsRequest) (*SearchProjectsResponse, error) // Request that a new project be created. The result is an `Operation` which // can be used to track the creation process. This process usually takes a few // seconds, but can sometimes take much longer. The tracking `Operation` is // automatically deleted after a few hours, so there is no need to call // `DeleteOperation`. CreateProject(context.Context, *CreateProjectRequest) (*longrunningpb.Operation, error) // Updates the `display_name` and labels of the project identified by the // specified `name` (for example, `projects/415104041262`). Deleting all // labels requires an update mask for labels field. // // The caller must have `resourcemanager.projects.update` permission for this // project. UpdateProject(context.Context, *UpdateProjectRequest) (*longrunningpb.Operation, error) // Move a project to another place in your resource hierarchy, under a new // resource parent. // // Returns an operation which can be used to track the process of the project // move workflow. // Upon success, the `Operation.response` field will be populated with the // moved project. // // The caller must have `resourcemanager.projects.move` permission on the // project, on the project's current and proposed new parent. // // If project has no current parent, or it currently does not have an // associated organization resource, you will also need the // `resourcemanager.projects.setIamPolicy` permission in the project. MoveProject(context.Context, *MoveProjectRequest) (*longrunningpb.Operation, error) // Marks the project identified by the specified // `name` (for example, `projects/415104041262`) for deletion. // // This method will only affect the project if it has a lifecycle state of // [ACTIVE][google.cloud.resourcemanager.v3.Project.State.ACTIVE]. // // This method changes the Project's lifecycle state from // [ACTIVE][google.cloud.resourcemanager.v3.Project.State.ACTIVE] // to // [DELETE_REQUESTED][google.cloud.resourcemanager.v3.Project.State.DELETE_REQUESTED]. // The deletion starts at an unspecified time, // at which point the Project is no longer accessible. // // Until the deletion completes, you can check the lifecycle state // checked by retrieving the project with [GetProject] // [google.cloud.resourcemanager.v3.Projects.GetProject], // and the project remains visible to [ListProjects] // [google.cloud.resourcemanager.v3.Projects.ListProjects]. // However, you cannot update the project. // // After the deletion completes, the project is not retrievable by // the [GetProject] // [google.cloud.resourcemanager.v3.Projects.GetProject], // [ListProjects] // [google.cloud.resourcemanager.v3.Projects.ListProjects], and // [SearchProjects][google.cloud.resourcemanager.v3.Projects.SearchProjects] // methods. // // This method behaves idempotently, such that deleting a `DELETE_REQUESTED` // project will not cause an error, but also won't do anything. // // The caller must have `resourcemanager.projects.delete` permissions for this // project. DeleteProject(context.Context, *DeleteProjectRequest) (*longrunningpb.Operation, error) // Restores the project identified by the specified // `name` (for example, `projects/415104041262`). // You can only use this method for a project that has a lifecycle state of // [DELETE_REQUESTED] // [Projects.State.DELETE_REQUESTED]. // After deletion starts, the project cannot be restored. // // The caller must have `resourcemanager.projects.undelete` permission for // this project. UndeleteProject(context.Context, *UndeleteProjectRequest) (*longrunningpb.Operation, error) // Returns the IAM access control policy for the specified project, in the // format `projects/{ProjectIdOrNumber}` e.g. projects/123. // Permission is denied if the policy or the resource do not exist. GetIamPolicy(context.Context, *iampb.GetIamPolicyRequest) (*iampb.Policy, error) // Sets the IAM access control policy for the specified project, in the // format `projects/{ProjectIdOrNumber}` e.g. projects/123. // // CAUTION: This method will replace the existing policy, and cannot be used // to append additional IAM settings. // // Note: Removing service accounts from policies or changing their roles can // render services completely inoperable. It is important to understand how // the service account is being used before removing or updating its roles. // // The following constraints apply when using `setIamPolicy()`: // // + Project does not support `allUsers` and `allAuthenticatedUsers` as // `members` in a `Binding` of a `Policy`. // // + The owner role can be granted to a `user`, `serviceAccount`, or a group // that is part of an organization. For example, // group@myownpersonaldomain.com could be added as an owner to a project in // the myownpersonaldomain.com organization, but not the examplepetstore.com // organization. // // + Service accounts can be made owners of a project directly // without any restrictions. However, to be added as an owner, a user must be // invited using the Cloud Platform console and must accept the invitation. // // + A user cannot be granted the owner role using `setIamPolicy()`. The user // must be granted the owner role using the Cloud Platform Console and must // explicitly accept the invitation. // // + Invitations to grant the owner role cannot be sent using // `setIamPolicy()`; // they must be sent only using the Cloud Platform Console. // // + If the project is not part of an organization, there must be at least // one owner who has accepted the Terms of Service (ToS) agreement in the // policy. Calling `setIamPolicy()` to remove the last ToS-accepted owner // from the policy will fail. This restriction also applies to legacy // projects that no longer have owners who have accepted the ToS. Edits to // IAM policies will be rejected until the lack of a ToS-accepting owner is // rectified. If the project is part of an organization, you can remove all // owners, potentially making the organization inaccessible. SetIamPolicy(context.Context, *iampb.SetIamPolicyRequest) (*iampb.Policy, error) // Returns permissions that a caller has on the specified project, in the // format `projects/{ProjectIdOrNumber}` e.g. projects/123.. TestIamPermissions(context.Context, *iampb.TestIamPermissionsRequest) (*iampb.TestIamPermissionsResponse, error) } // UnimplementedProjectsServer can be embedded to have forward compatible implementations. type UnimplementedProjectsServer struct { } func (*UnimplementedProjectsServer) GetProject(context.Context, *GetProjectRequest) (*Project, error) { return nil, status.Errorf(codes.Unimplemented, "method GetProject not implemented") } func (*UnimplementedProjectsServer) ListProjects(context.Context, *ListProjectsRequest) (*ListProjectsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListProjects not implemented") } func (*UnimplementedProjectsServer) SearchProjects(context.Context, *SearchProjectsRequest) (*SearchProjectsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SearchProjects not implemented") } func (*UnimplementedProjectsServer) CreateProject(context.Context, *CreateProjectRequest) (*longrunningpb.Operation, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateProject not implemented") } func (*UnimplementedProjectsServer) UpdateProject(context.Context, *UpdateProjectRequest) (*longrunningpb.Operation, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateProject not implemented") } func (*UnimplementedProjectsServer) MoveProject(context.Context, *MoveProjectRequest) (*longrunningpb.Operation, error) { return nil, status.Errorf(codes.Unimplemented, "method MoveProject not implemented") } func (*UnimplementedProjectsServer) DeleteProject(context.Context, *DeleteProjectRequest) (*longrunningpb.Operation, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteProject not implemented") } func (*UnimplementedProjectsServer) UndeleteProject(context.Context, *UndeleteProjectRequest) (*longrunningpb.Operation, error) { return nil, status.Errorf(codes.Unimplemented, "method UndeleteProject not implemented") } func (*UnimplementedProjectsServer) GetIamPolicy(context.Context, *iampb.GetIamPolicyRequest) (*iampb.Policy, error) { return nil, status.Errorf(codes.Unimplemented, "method GetIamPolicy not implemented") } func (*UnimplementedProjectsServer) SetIamPolicy(context.Context, *iampb.SetIamPolicyRequest) (*iampb.Policy, error) { return nil, status.Errorf(codes.Unimplemented, "method SetIamPolicy not implemented") } func (*UnimplementedProjectsServer) TestIamPermissions(context.Context, *iampb.TestIamPermissionsRequest) (*iampb.TestIamPermissionsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method TestIamPermissions not implemented") } func RegisterProjectsServer(s *grpc.Server, srv ProjectsServer) { s.RegisterService(&_Projects_serviceDesc, srv) } func _Projects_GetProject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetProjectRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ProjectsServer).GetProject(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.resourcemanager.v3.Projects/GetProject", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProjectsServer).GetProject(ctx, req.(*GetProjectRequest)) } return interceptor(ctx, in, info, handler) } func _Projects_ListProjects_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListProjectsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ProjectsServer).ListProjects(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.resourcemanager.v3.Projects/ListProjects", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProjectsServer).ListProjects(ctx, req.(*ListProjectsRequest)) } return interceptor(ctx, in, info, handler) } func _Projects_SearchProjects_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SearchProjectsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ProjectsServer).SearchProjects(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.resourcemanager.v3.Projects/SearchProjects", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProjectsServer).SearchProjects(ctx, req.(*SearchProjectsRequest)) } return interceptor(ctx, in, info, handler) } func _Projects_CreateProject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateProjectRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ProjectsServer).CreateProject(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.resourcemanager.v3.Projects/CreateProject", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProjectsServer).CreateProject(ctx, req.(*CreateProjectRequest)) } return interceptor(ctx, in, info, handler) } func _Projects_UpdateProject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateProjectRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ProjectsServer).UpdateProject(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.resourcemanager.v3.Projects/UpdateProject", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProjectsServer).UpdateProject(ctx, req.(*UpdateProjectRequest)) } return interceptor(ctx, in, info, handler) } func _Projects_MoveProject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MoveProjectRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ProjectsServer).MoveProject(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.resourcemanager.v3.Projects/MoveProject", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProjectsServer).MoveProject(ctx, req.(*MoveProjectRequest)) } return interceptor(ctx, in, info, handler) } func _Projects_DeleteProject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteProjectRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ProjectsServer).DeleteProject(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.resourcemanager.v3.Projects/DeleteProject", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProjectsServer).DeleteProject(ctx, req.(*DeleteProjectRequest)) } return interceptor(ctx, in, info, handler) } func _Projects_UndeleteProject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UndeleteProjectRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ProjectsServer).UndeleteProject(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.resourcemanager.v3.Projects/UndeleteProject", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProjectsServer).UndeleteProject(ctx, req.(*UndeleteProjectRequest)) } return interceptor(ctx, in, info, handler) } func _Projects_GetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(iampb.GetIamPolicyRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ProjectsServer).GetIamPolicy(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.resourcemanager.v3.Projects/GetIamPolicy", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProjectsServer).GetIamPolicy(ctx, req.(*iampb.GetIamPolicyRequest)) } return interceptor(ctx, in, info, handler) } func _Projects_SetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(iampb.SetIamPolicyRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ProjectsServer).SetIamPolicy(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.resourcemanager.v3.Projects/SetIamPolicy", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProjectsServer).SetIamPolicy(ctx, req.(*iampb.SetIamPolicyRequest)) } return interceptor(ctx, in, info, handler) } func _Projects_TestIamPermissions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(iampb.TestIamPermissionsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ProjectsServer).TestIamPermissions(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.resourcemanager.v3.Projects/TestIamPermissions", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProjectsServer).TestIamPermissions(ctx, req.(*iampb.TestIamPermissionsRequest)) } return interceptor(ctx, in, info, handler) } var _Projects_serviceDesc = grpc.ServiceDesc{ ServiceName: "google.cloud.resourcemanager.v3.Projects", HandlerType: (*ProjectsServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "GetProject", Handler: _Projects_GetProject_Handler, }, { MethodName: "ListProjects", Handler: _Projects_ListProjects_Handler, }, { MethodName: "SearchProjects", Handler: _Projects_SearchProjects_Handler, }, { MethodName: "CreateProject", Handler: _Projects_CreateProject_Handler, }, { MethodName: "UpdateProject", Handler: _Projects_UpdateProject_Handler, }, { MethodName: "MoveProject", Handler: _Projects_MoveProject_Handler, }, { MethodName: "DeleteProject", Handler: _Projects_DeleteProject_Handler, }, { MethodName: "UndeleteProject", Handler: _Projects_UndeleteProject_Handler, }, { MethodName: "GetIamPolicy", Handler: _Projects_GetIamPolicy_Handler, }, { MethodName: "SetIamPolicy", Handler: _Projects_SetIamPolicy_Handler, }, { MethodName: "TestIamPermissions", Handler: _Projects_TestIamPermissions_Handler, }, }, Streams: []grpc.StreamDesc{}, Metadata: "google/cloud/resourcemanager/v3/projects.proto", }