proto/scim/v2/users.pb.go (1,198 lines of code) (raw):

// Copyright 2020 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 v5.26.1 // source: proto/scim/v2/users.proto // Package scim provides protocol buffer versions of the SCIM 2.0 User objects // and related operations, allowing endpoints to receive requests and return // responses using these messages. // Core Schema: https://tools.ietf.org/html/rfc7643 // Protocol: https://tools.ietf.org/html/rfc7644 package v2 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) 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) ) // SCIM representation of a 'User' as per // https://tools.ietf.org/html/rfc7643#section-4.1 type User struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The schemas attribute is an array of Strings which allows introspection of // the supported schema version for a SCIM representation as well any schema // extensions supported by that representation. Each String value must be a // unique URI. This specification defines URIs for User, Group, and a standard // "enterprise" extension. All representations of SCIM schema MUST include a // non-zero value array with value(s) of the URIs supported by that // representation. Duplicate values MUST NOT be included. Value order is not // specified and MUST not impact behavior. REQUIRED. Schemas []string `protobuf:"bytes,1,rep,name=schemas,proto3" json:"schemas,omitempty"` // Unique identifier for the SCIM Resource as defined by the Service Provider. // This is returned when the resource is created. // Each representation of the Resource MUST include a non-empty id value. This // identifier MUST be unique across the Service Provider's entire set of // Resources. It MUST be a stable, non-reassignable identifier that does not // change when the same Resource is returned in subsequent requests. The value // of the id attribute is always issued by the Service Provider and MUST never // be specified by the Service Consumer. bulkId: is a reserved keyword and // MUST NOT be used in the unique identifier. REQUIRED and READ-ONLY. Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` // An identifier for the Resource as defined by the Service Consumer. The // externalId may simplify identification of the Resource between Service // Consumer and Service provider by allowing the Consumer to refer to the // Resource with its own identifier, obviating the need to store a local // mapping between the local identifier of the Resource and the identifier // used by the Service Provider. Each Resource MAY include a non-empty // externalId value. The value of the externalId attribute is always issued be // the Service Consumer and can never be specified by the Service Provider. // The Service Provider MUST always interpret the externalId as scoped to the // Service Consumer's tenant. ExternalId string `protobuf:"bytes,3,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` // A complex attribute containing resource metadata. All sub-attributes are // OPTIONAL. Meta *ResourceMetadata `protobuf:"bytes,4,opt,name=meta,proto3" json:"meta,omitempty"` // Unique identifier for the User, typically used by the user to directly // authenticate to the service provider. Often displayed to the user // as their unique identifier within the system (as opposed to id or // externalId, which are generally opaque and not user-friendly identifiers). // Each User MUST include a non-empty userName value. This identifier MUST be // unique across the Service Consumer's entire set of Users. REQUIRED. UserName string `protobuf:"bytes,5,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"` // The components of the User's real name. Providers MAY return just the full // name as a single string in the formatted sub-attribute, or they MAY return // just the individual component attributes using the other sub-attributes, or // they MAY return both. If both variants are returned, they SHOULD be // describing the same name, with the formatted name indicating how the // component attributes should be combined. Name *Name `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` // The name of the User, suitable for display to end-users. The name SHOULD // be the full name of the User being described, if known. DisplayName string `protobuf:"bytes,7,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` // The casual way to address the user in real life, e.g., 'Bob' or 'Bobby' // instead of 'Robert'. This attribute SHOULD NOT be used to represent a // User's username (e.g., 'bjensen' or 'mpepperidge'). NickName string `protobuf:"bytes,8,opt,name=nick_name,json=nickName,proto3" json:"nick_name,omitempty"` // A fully qualified URL to a page representing the User's online profile. ProfileUrl string `protobuf:"bytes,9,opt,name=profile_url,json=profileUrl,proto3" json:"profile_url,omitempty"` // The user's title, such as "Vice President." Title string `protobuf:"bytes,10,opt,name=title,proto3" json:"title,omitempty"` // Used to identify the relationship between the organization and the // user. Typical values used might be "Contractor", "Employee", // "Intern", "Temp", "External", and "Unknown", but any value may be // used. UserType string `protobuf:"bytes,11,opt,name=user_type,json=userType,proto3" json:"user_type,omitempty"` // Indicates the user's preferred written or spoken languages and is // generally used for selecting a localized user interface. The // value indicates the set of natural languages that are preferred. // The format of the value is the same as the HTTP Accept-Language // header field (not including "Accept-Language:") and is specified // in Section 5.3.5 of [RFC7231]. The intent of this value is to // enable cloud applications to perform matching of language tags // [RFC4647] to the user's language preferences, regardless of what // may be indicated by a user agent (which might be shared), or in an // interaction that does not involve a user (such as in a delegated // OAuth 2.0 [RFC6749] style interaction) where normal HTTP // Accept-Language header negotiation cannot take place. PreferredLanguage string `protobuf:"bytes,12,opt,name=preferred_language,json=preferredLanguage,proto3" json:"preferred_language,omitempty"` // Used to indicate the User's default location for purposes of // localizing such items as currency, date time format, or numerical // representations. A valid value is a language tag as defined in // [RFC5646]. Computer languages are explicitly excluded. // // A language tag is a sequence of one or more case-insensitive // sub-tags, each separated by a hyphen character ("-", %x2D). For // backward compatibility, servers MAY accept tags separated by an // underscore character ("_", %x5F). In most cases, a language tag // consists of a primary language sub-tag that identifies a broad // family of related languages (e.g., "en" = English) and that is // optionally followed by a series of sub-tags that refine or narrow // that language's range (e.g., "en-CA" = the variety of English as // communicated in Canada). Whitespace is not allowed within a // language tag. Example tags include: // // fr, en-US, es-419, az-Arab, x-pig-latin, man-Nkoo-GN // // See [RFC5646] for further information. Locale string `protobuf:"bytes,13,opt,name=locale,proto3" json:"locale,omitempty"` // The User's time zone, in IANA Time Zone database format [RFC6557], // also known as the "Olson" time zone database format [Olson-TZ] // (e.g., "America/Los_Angeles"). Timezone string `protobuf:"bytes,14,opt,name=timezone,proto3" json:"timezone,omitempty"` // A Boolean value indicating the User's administrative status. The definitive // meaning of this attribute is determined by the Service Provider though a // value of true infers the User is, for example, able to login while a value // of false implies the User's account has been suspended. Active bool `protobuf:"varint,15,opt,name=active,proto3" json:"active,omitempty"` // UNUSED but present for completeness. Password string `protobuf:"bytes,16,opt,name=password,proto3" json:"password,omitempty"` // E-mail addresses for the User. The value SHOULD be canonicalized by the // Service Provider, e.g. bjensen@example.com instead of bjensen@EXAMPLE.COM. // Canonical Type values of work, home, and other. Emails []*Attribute `protobuf:"bytes,17,rep,name=emails,proto3" json:"emails,omitempty"` // Phone numbers for the User. The value SHOULD be canonicalized by the // Service Provider according to format in RFC3966 e.g. 'tel:+1-201-555-0123'. // Canonical Type values of work, home, mobile, fax, pager and other. PhoneNumbers []*Attribute `protobuf:"bytes,18,rep,name=phone_numbers,json=phoneNumbers,proto3" json:"phone_numbers,omitempty"` // Instant messaging address for the User. No official canonicalization rules // exist for all instant messaging addresses, but Service Providers SHOULD, // when appropriate, remove all whitespace and convert the address to // lowercase. Instead of the standard Canonical Values for type, this // attribute defines the following Canonical Values to represent currently // popular IM services: gtalk, icq, xmpp, msn, skype, qq. Ims []*Attribute `protobuf:"bytes,19,rep,name=ims,proto3" json:"ims,omitempty"` // A URI that is a uniform resource locator (as defined in // Section 1.1.3 of [RFC3986]) that points to a resource location // representing the user's image. The resource MUST be a file (e.g., // a GIF, JPEG, or PNG image file) rather than a web page containing // an image. Service providers MAY return the same image in // different sizes, although it is recognized that no standard for // describing images of various sizes currently exists. Note that // this attribute SHOULD NOT be used to send down arbitrary photos // taken by this user; instead, profile photos of the user that are // suitable for display when describing the user should be sent. // Instead of the standard canonical values for type, this attribute // defines the following canonical values to represent popular photo // sizes: "photo" and "thumbnail". Photos []*Attribute `protobuf:"bytes,20,rep,name=photos,proto3" json:"photos,omitempty"` // Physical mailing addresses for this User. Canonical Type Values of work, // home, and other. Addresses []*Address `protobuf:"bytes,21,rep,name=addresses,proto3" json:"addresses,omitempty"` // A list of groups to which the user belongs, either through direct // membership, through nested groups, or dynamically calculated. Groups []*Attribute `protobuf:"bytes,22,rep,name=groups,proto3" json:"groups,omitempty"` // A list of entitlements for the user that represent a thing the // user has. An entitlement may be an additional right to a thing, // object, or service. No vocabulary or syntax is specified; service // providers and clients are expected to encode sufficient // information in the value so as to accurately and without ambiguity // determine what the user has access to. This value has no // canonical types, although a type may be useful as a means to scope // entitlements. Entitlements []*Attribute `protobuf:"bytes,23,rep,name=entitlements,proto3" json:"entitlements,omitempty"` // A list of roles for the user that collectively represent who the // user is, e.g., "Student", "Faculty". No vocabulary or syntax is // specified, although it is expected that a role value is a String // or label representing a collection of entitlements. This value // has no canonical types. Roles []*Attribute `protobuf:"bytes,24,rep,name=roles,proto3" json:"roles,omitempty"` // A list of certificates associated with the resource (e.g., a // User). Each value contains exactly one DER-encoded X.509 // certificate (see Section 4 of [RFC5280]), which MUST be base64 // encoded per Section 4 of [RFC4648]. A single value MUST NOT // contain multiple certificates and so does not contain the encoding // "SEQUENCE OF Certificate" in any guise. X509Certificates []*Attribute `protobuf:"bytes,25,rep,name=x509_certificates,json=x509Certificates,proto3" json:"x509_certificates,omitempty"` // Attributes commonly used in representing users that belong to, or act on // behalf of a business or enterprise. EnterpriseExtension *EnterpriseUserExtension `protobuf:"bytes,26,opt,name=enterprise_extension,json=urn:ietf:params:scim:schemas:extension:enterprise:2.0:User,proto3" json:"enterprise_extension,omitempty"` } func (x *User) Reset() { *x = User{} if protoimpl.UnsafeEnabled { mi := &file_proto_scim_v2_users_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *User) String() string { return protoimpl.X.MessageStringOf(x) } func (*User) ProtoMessage() {} func (x *User) ProtoReflect() protoreflect.Message { mi := &file_proto_scim_v2_users_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 User.ProtoReflect.Descriptor instead. func (*User) Descriptor() ([]byte, []int) { return file_proto_scim_v2_users_proto_rawDescGZIP(), []int{0} } func (x *User) GetSchemas() []string { if x != nil { return x.Schemas } return nil } func (x *User) GetId() string { if x != nil { return x.Id } return "" } func (x *User) GetExternalId() string { if x != nil { return x.ExternalId } return "" } func (x *User) GetMeta() *ResourceMetadata { if x != nil { return x.Meta } return nil } func (x *User) GetUserName() string { if x != nil { return x.UserName } return "" } func (x *User) GetName() *Name { if x != nil { return x.Name } return nil } func (x *User) GetDisplayName() string { if x != nil { return x.DisplayName } return "" } func (x *User) GetNickName() string { if x != nil { return x.NickName } return "" } func (x *User) GetProfileUrl() string { if x != nil { return x.ProfileUrl } return "" } func (x *User) GetTitle() string { if x != nil { return x.Title } return "" } func (x *User) GetUserType() string { if x != nil { return x.UserType } return "" } func (x *User) GetPreferredLanguage() string { if x != nil { return x.PreferredLanguage } return "" } func (x *User) GetLocale() string { if x != nil { return x.Locale } return "" } func (x *User) GetTimezone() string { if x != nil { return x.Timezone } return "" } func (x *User) GetActive() bool { if x != nil { return x.Active } return false } func (x *User) GetPassword() string { if x != nil { return x.Password } return "" } func (x *User) GetEmails() []*Attribute { if x != nil { return x.Emails } return nil } func (x *User) GetPhoneNumbers() []*Attribute { if x != nil { return x.PhoneNumbers } return nil } func (x *User) GetIms() []*Attribute { if x != nil { return x.Ims } return nil } func (x *User) GetPhotos() []*Attribute { if x != nil { return x.Photos } return nil } func (x *User) GetAddresses() []*Address { if x != nil { return x.Addresses } return nil } func (x *User) GetGroups() []*Attribute { if x != nil { return x.Groups } return nil } func (x *User) GetEntitlements() []*Attribute { if x != nil { return x.Entitlements } return nil } func (x *User) GetRoles() []*Attribute { if x != nil { return x.Roles } return nil } func (x *User) GetX509Certificates() []*Attribute { if x != nil { return x.X509Certificates } return nil } func (x *User) GetEnterpriseExtension() *EnterpriseUserExtension { if x != nil { return x.EnterpriseExtension } return nil } // Metadata about the resource. type ResourceMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The name of the resource type of the resource. This attribute has a // mutability of "readOnly" and "caseExact" as "true". ResourceType string `protobuf:"bytes,1,opt,name=resource_type,json=resourceType,proto3" json:"resource_type,omitempty"` // The DateTime the Resource was added to the Service Provider. Created string `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"` // The most recent DateTime that the details of this resource were updated at // the service provider. If this resource has never been modified since its // initial creation, the value MUST be the same as the value of "created". LastModified string `protobuf:"bytes,3,opt,name=last_modified,json=lastModified,proto3" json:"last_modified,omitempty"` // The URI of the resource being returned. This value MUST be the same as // the "Content-Location" HTTP response header (see Section 3.1.4.2 of // [RFC7231]). Location string `protobuf:"bytes,4,opt,name=location,proto3" json:"location,omitempty"` // The version of the resource being returned. This value must be the same // as the entity-tag (ETag) HTTP response header (see Sections 2.1 and 2.3 of // [RFC7232]). This attribute has "caseExact" as "true". Service provider // support for this attribute is optional and subject to the service // provider's support for versioning (see Section 3.14 of [RFC7644]). If a // service provider provides "version" (entity-tag) for a // representation and the generation of that entity-tag does not // satisfy all of the characteristics of a strong validator (see // Section 2.1 of [RFC7232]), then the origin server MUST mark the // "version" (entity-tag) as weak by prefixing its opaque value // with "W/" (case sensitive). Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"` } func (x *ResourceMetadata) Reset() { *x = ResourceMetadata{} if protoimpl.UnsafeEnabled { mi := &file_proto_scim_v2_users_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ResourceMetadata) String() string { return protoimpl.X.MessageStringOf(x) } func (*ResourceMetadata) ProtoMessage() {} func (x *ResourceMetadata) ProtoReflect() protoreflect.Message { mi := &file_proto_scim_v2_users_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 ResourceMetadata.ProtoReflect.Descriptor instead. func (*ResourceMetadata) Descriptor() ([]byte, []int) { return file_proto_scim_v2_users_proto_rawDescGZIP(), []int{1} } func (x *ResourceMetadata) GetResourceType() string { if x != nil { return x.ResourceType } return "" } func (x *ResourceMetadata) GetCreated() string { if x != nil { return x.Created } return "" } func (x *ResourceMetadata) GetLastModified() string { if x != nil { return x.LastModified } return "" } func (x *ResourceMetadata) GetLocation() string { if x != nil { return x.Location } return "" } func (x *ResourceMetadata) GetVersion() string { if x != nil { return x.Version } return "" } // Name of the user. type Name struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The full name, including all middle names, titles, and suffixes as // appropriate, formatted for display (e.g., "Ms. Barbara Jane Jensen, III"). Formatted string `protobuf:"bytes,1,opt,name=formatted,proto3" json:"formatted,omitempty"` // The family name of the User, or "Last Name" in most Western languages (e.g. // Jensen given the full name Ms. Barbara Jane Jensen, III.). FamilyName string `protobuf:"bytes,2,opt,name=family_name,json=familyName,proto3" json:"family_name,omitempty"` // The given name of the User, or "First Name" in most Western languages (e.g. // Barbara given the full name Ms. Barbara Jane Jensen, III.). GivenName string `protobuf:"bytes,3,opt,name=given_name,json=givenName,proto3" json:"given_name,omitempty"` // The middle name(s) of the User (e.g., "Jane" given the full name // "Ms. Barbara Jane Jensen, III"). MiddleName string `protobuf:"bytes,4,opt,name=middle_name,json=middleName,proto3" json:"middle_name,omitempty"` // The honorific prefix(es) of the User, or title in most Western languages // (e.g., "Ms." given the full name "Ms. Barbara Jane Jensen, III"). HonorificPrefix string `protobuf:"bytes,5,opt,name=honorific_prefix,json=honorificPrefix,proto3" json:"honorific_prefix,omitempty"` // The honorific suffix(es) of the User, or suffix in most Western languages // (e.g., "III" given the full name "Ms. Barbara Jane Jensen, III"). HonorificSuffix string `protobuf:"bytes,6,opt,name=honorific_suffix,json=honorificSuffix,proto3" json:"honorific_suffix,omitempty"` } func (x *Name) Reset() { *x = Name{} if protoimpl.UnsafeEnabled { mi := &file_proto_scim_v2_users_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Name) String() string { return protoimpl.X.MessageStringOf(x) } func (*Name) ProtoMessage() {} func (x *Name) ProtoReflect() protoreflect.Message { mi := &file_proto_scim_v2_users_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 Name.ProtoReflect.Descriptor instead. func (*Name) Descriptor() ([]byte, []int) { return file_proto_scim_v2_users_proto_rawDescGZIP(), []int{2} } func (x *Name) GetFormatted() string { if x != nil { return x.Formatted } return "" } func (x *Name) GetFamilyName() string { if x != nil { return x.FamilyName } return "" } func (x *Name) GetGivenName() string { if x != nil { return x.GivenName } return "" } func (x *Name) GetMiddleName() string { if x != nil { return x.MiddleName } return "" } func (x *Name) GetHonorificPrefix() string { if x != nil { return x.HonorificPrefix } return "" } func (x *Name) GetHonorificSuffix() string { if x != nil { return x.HonorificSuffix } return "" } // Attribute encodes https://tools.ietf.org/html/rfc7643#section-2.4 type Attribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // A label indicating the attribute's function, e.g., "work" or "home". Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // A Boolean value indicating the 'primary' or preferred attribute // value for this attribute, e.g., the preferred mailing address or // the primary email address. The primary attribute value "true" // MUST appear no more than once. If not specified, the value of // "primary" SHALL be assumed to be "false". Primary bool `protobuf:"varint,2,opt,name=primary,proto3" json:"primary,omitempty"` // A human-readable name, primarily used for display purposes and // having a mutability of "immutable". Display string `protobuf:"bytes,3,opt,name=display,proto3" json:"display,omitempty"` // The attribute's significant value, e.g., email address, phone number. Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` // The reference URI of a target resource, if the attribute is a // reference. URIs are canonicalized per Section 6.2 of [RFC3986]. // While the representation of a resource may vary in different SCIM // protocol API versions (see Section 3.13 of [RFC7644]), URIs for // SCIM resources with an API version SHALL be considered comparable // to URIs without a version or with a different version. For // example, "https://example.com/Users/12345" is equivalent to // "https://example.com/v2/Users/12345". Ref string `protobuf:"bytes,5,opt,name=ref,json=$ref,proto3" json:"ref,omitempty"` // CUSTOM EXTENSION. The attribute's value has been verified via a trusted // source or a trusted protocol as evidence that this attribute's value // belongs to the user. ExtensionVerified bool `protobuf:"varint,6,opt,name=extension_verified,json=verified,proto3" json:"extension_verified,omitempty"` } func (x *Attribute) Reset() { *x = Attribute{} if protoimpl.UnsafeEnabled { mi := &file_proto_scim_v2_users_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Attribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*Attribute) ProtoMessage() {} func (x *Attribute) ProtoReflect() protoreflect.Message { mi := &file_proto_scim_v2_users_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 Attribute.ProtoReflect.Descriptor instead. func (*Attribute) Descriptor() ([]byte, []int) { return file_proto_scim_v2_users_proto_rawDescGZIP(), []int{3} } func (x *Attribute) GetType() string { if x != nil { return x.Type } return "" } func (x *Attribute) GetPrimary() bool { if x != nil { return x.Primary } return false } func (x *Attribute) GetDisplay() string { if x != nil { return x.Display } return "" } func (x *Attribute) GetValue() string { if x != nil { return x.Value } return "" } func (x *Attribute) GetRef() string { if x != nil { return x.Ref } return "" } func (x *Attribute) GetExtensionVerified() bool { if x != nil { return x.ExtensionVerified } return false } // A physical mailing address for this User. type Address struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // A label indicating the attribute's function, e.g., "work" or "home". Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // A Boolean value indicating the 'primary' or preferred attribute // value for this attribute, e.g., the preferred mailing address or // the primary email address. The primary attribute value "true" // MUST appear no more than once. If not specified, the value of // "primary" SHALL be assumed to be "false". Primary bool `protobuf:"varint,2,opt,name=primary,proto3" json:"primary,omitempty"` // The reference URI of a target resource, if the attribute is a // reference. URIs are canonicalized per Section 6.2 of [RFC3986]. // While the representation of a resource may vary in different SCIM // protocol API versions (see Section 3.13 of [RFC7644]), URIs for // SCIM resources with an API version SHALL be considered comparable // to URIs without a version or with a different version. For // example, "https://example.com/Users/12345" is equivalent to // "https://example.com/v2/Users/12345". Ref string `protobuf:"bytes,3,opt,name=ref,json=$ref,proto3" json:"ref,omitempty"` // The full mailing address, formatted for display or use // with a mailing label. This attribute MAY contain newlines. Formatted string `protobuf:"bytes,4,opt,name=formatted,proto3" json:"formatted,omitempty"` // The full street address component, which may include house number, street // name, P.O. box, and multi-line extended street address information. This // attribute MAY contain newlines. StreetAddress string `protobuf:"bytes,5,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` // The city or locality component. Locality string `protobuf:"bytes,6,opt,name=locality,proto3" json:"locality,omitempty"` // The state or region component. Region string `protobuf:"bytes,7,opt,name=region,proto3" json:"region,omitempty"` // The zipcode or postal code component. PostalCode string `protobuf:"bytes,8,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` // The country name component. When specified the value MUST be in ISO 3166-1 // alpha 2 "short" code format; e.g., the United States and Sweden are "US" // and "SE", respectively. Country string `protobuf:"bytes,9,opt,name=country,proto3" json:"country,omitempty"` } func (x *Address) Reset() { *x = Address{} if protoimpl.UnsafeEnabled { mi := &file_proto_scim_v2_users_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Address) String() string { return protoimpl.X.MessageStringOf(x) } func (*Address) ProtoMessage() {} func (x *Address) ProtoReflect() protoreflect.Message { mi := &file_proto_scim_v2_users_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 Address.ProtoReflect.Descriptor instead. func (*Address) Descriptor() ([]byte, []int) { return file_proto_scim_v2_users_proto_rawDescGZIP(), []int{4} } func (x *Address) GetType() string { if x != nil { return x.Type } return "" } func (x *Address) GetPrimary() bool { if x != nil { return x.Primary } return false } func (x *Address) GetRef() string { if x != nil { return x.Ref } return "" } func (x *Address) GetFormatted() string { if x != nil { return x.Formatted } return "" } func (x *Address) GetStreetAddress() string { if x != nil { return x.StreetAddress } return "" } func (x *Address) GetLocality() string { if x != nil { return x.Locality } return "" } func (x *Address) GetRegion() string { if x != nil { return x.Region } return "" } func (x *Address) GetPostalCode() string { if x != nil { return x.PostalCode } return "" } func (x *Address) GetCountry() string { if x != nil { return x.Country } return "" } // This SCIM extension defines attributes commonly used in representing users // that belong to, or act on behalf of a business or enterprise. // See: https://tools.ietf.org/html/rfc7643#section-4.3 type EnterpriseUserExtension struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Numeric or alphanumeric identifier assigned to a person, typically based on // order of hire or association with an organization. EmployeeNumber string `protobuf:"bytes,1,opt,name=employee_number,json=employeeNumber,proto3" json:"employee_number,omitempty"` // Identifies the name of a cost center. CostCenter string `protobuf:"bytes,2,opt,name=cost_center,json=costCenter,proto3" json:"cost_center,omitempty"` // Identifies the name of an organization. Organization string `protobuf:"bytes,3,opt,name=organization,proto3" json:"organization,omitempty"` // Identifies the name of a division. Division string `protobuf:"bytes,5,opt,name=division,proto3" json:"division,omitempty"` // Identifies the name of a department. Department string `protobuf:"bytes,6,opt,name=department,proto3" json:"department,omitempty"` // Represents organizational hierarchy by referencing another User. Manager *Manager `protobuf:"bytes,7,opt,name=manager,proto3" json:"manager,omitempty"` } func (x *EnterpriseUserExtension) Reset() { *x = EnterpriseUserExtension{} if protoimpl.UnsafeEnabled { mi := &file_proto_scim_v2_users_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EnterpriseUserExtension) String() string { return protoimpl.X.MessageStringOf(x) } func (*EnterpriseUserExtension) ProtoMessage() {} func (x *EnterpriseUserExtension) ProtoReflect() protoreflect.Message { mi := &file_proto_scim_v2_users_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 EnterpriseUserExtension.ProtoReflect.Descriptor instead. func (*EnterpriseUserExtension) Descriptor() ([]byte, []int) { return file_proto_scim_v2_users_proto_rawDescGZIP(), []int{5} } func (x *EnterpriseUserExtension) GetEmployeeNumber() string { if x != nil { return x.EmployeeNumber } return "" } func (x *EnterpriseUserExtension) GetCostCenter() string { if x != nil { return x.CostCenter } return "" } func (x *EnterpriseUserExtension) GetOrganization() string { if x != nil { return x.Organization } return "" } func (x *EnterpriseUserExtension) GetDivision() string { if x != nil { return x.Division } return "" } func (x *EnterpriseUserExtension) GetDepartment() string { if x != nil { return x.Department } return "" } func (x *EnterpriseUserExtension) GetManager() *Manager { if x != nil { return x.Manager } return nil } // A complex type that optionally allows service providers to represent // organizational hierarchy by referencing the "id" attribute of another User. type Manager struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The "id" of the SCIM resource representing the user's manager. // RECOMMENDED. Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` // The URI of the SCIM resource representing the User's manager. RECOMMENDED. Ref string `protobuf:"bytes,2,opt,name=ref,json=$ref,proto3" json:"ref,omitempty"` // The displayName of the user's manager. This attribute is OPTIONAL, and // mutability is "readOnly". DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` } func (x *Manager) Reset() { *x = Manager{} if protoimpl.UnsafeEnabled { mi := &file_proto_scim_v2_users_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Manager) String() string { return protoimpl.X.MessageStringOf(x) } func (*Manager) ProtoMessage() {} func (x *Manager) ProtoReflect() protoreflect.Message { mi := &file_proto_scim_v2_users_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 Manager.ProtoReflect.Descriptor instead. func (*Manager) Descriptor() ([]byte, []int) { return file_proto_scim_v2_users_proto_rawDescGZIP(), []int{6} } func (x *Manager) GetValue() string { if x != nil { return x.Value } return "" } func (x *Manager) GetRef() string { if x != nil { return x.Ref } return "" } func (x *Manager) GetDisplayName() string { if x != nil { return x.DisplayName } return "" } // PATCH request operation as per // https://tools.ietf.org/html/rfc7644#section-3.5.2. type Patch struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The schemas attribute is an array of Strings which allows introspection of // the supported schema version for a SCIM representation as well any schema // extensions supported by that representation. Each String value must be a // unique URI. This specification defines URIs for User, Group, and a standard // "enterprise" extension. All representations of SCIM schema MUST include a // non-zero value array with value(s) of the URIs supported by that // representation. Duplicate values MUST NOT be included. Value order is not // specified and MUST not impact behavior. REQUIRED. Schemas []string `protobuf:"bytes,1,rep,name=schemas,proto3" json:"schemas,omitempty"` // A batch of operations to perform as part of a PATCH. Operations []*Patch_Operation `protobuf:"bytes,2,rep,name=operations,json=Operations,proto3" json:"operations,omitempty"` } func (x *Patch) Reset() { *x = Patch{} if protoimpl.UnsafeEnabled { mi := &file_proto_scim_v2_users_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Patch) String() string { return protoimpl.X.MessageStringOf(x) } func (*Patch) ProtoMessage() {} func (x *Patch) ProtoReflect() protoreflect.Message { mi := &file_proto_scim_v2_users_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 Patch.ProtoReflect.Descriptor instead. func (*Patch) Descriptor() ([]byte, []int) { return file_proto_scim_v2_users_proto_rawDescGZIP(), []int{7} } func (x *Patch) GetSchemas() []string { if x != nil { return x.Schemas } return nil } func (x *Patch) GetOperations() []*Patch_Operation { if x != nil { return x.Operations } return nil } // Response for ListUsers per https://tools.ietf.org/html/rfc7644#section-3.4.2 type ListUsersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // List of SCIM User resources. Resources []*User `protobuf:"bytes,1,rep,name=resources,json=Resources,proto3" json:"resources,omitempty"` // Index of the first element of the page. StartIndex uint32 `protobuf:"varint,2,opt,name=start_index,json=startIndex,proto3" json:"start_index,omitempty"` // Number of items in current page. ItemsPerPage uint32 `protobuf:"varint,3,opt,name=items_per_page,json=itemsPerPage,proto3" json:"items_per_page,omitempty"` // Number of results matched for this query. TotalResults uint32 `protobuf:"varint,4,opt,name=total_results,json=totalResults,proto3" json:"total_results,omitempty"` // The schemas attribute is an array of Strings which allows introspection of // the supported schema version for a SCIM representation as well any schema // extensions supported by that representation. Each String value must be a // unique URI. This specification defines URIs for User, Group, and a standard // "enterprise" extension. All representations of SCIM schema MUST include a // non-zero value array with value(s) of the URIs supported by that // representation. Duplicate values MUST NOT be included. Value order is not // specified and MUST not impact behavior. REQUIRED. Schemas []string `protobuf:"bytes,5,rep,name=schemas,proto3" json:"schemas,omitempty"` } func (x *ListUsersResponse) Reset() { *x = ListUsersResponse{} if protoimpl.UnsafeEnabled { mi := &file_proto_scim_v2_users_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListUsersResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListUsersResponse) ProtoMessage() {} func (x *ListUsersResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_scim_v2_users_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 ListUsersResponse.ProtoReflect.Descriptor instead. func (*ListUsersResponse) Descriptor() ([]byte, []int) { return file_proto_scim_v2_users_proto_rawDescGZIP(), []int{8} } func (x *ListUsersResponse) GetResources() []*User { if x != nil { return x.Resources } return nil } func (x *ListUsersResponse) GetStartIndex() uint32 { if x != nil { return x.StartIndex } return 0 } func (x *ListUsersResponse) GetItemsPerPage() uint32 { if x != nil { return x.ItemsPerPage } return 0 } func (x *ListUsersResponse) GetTotalResults() uint32 { if x != nil { return x.TotalResults } return 0 } func (x *ListUsersResponse) GetSchemas() []string { if x != nil { return x.Schemas } return nil } // JavaScript Object Notation (JSON) Patch [RFC6902]. type Patch_Operation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Operation objects MUST have exactly one "op" member, whose value // indicates the operation to perform. Its value MUST be one of "add", // "remove", "replace", "move", "copy", or "test"; other values are // errors. Op string `protobuf:"bytes,1,opt,name=op,proto3" json:"op,omitempty"` // Objects MUST have exactly one "path" member. That member's value is a // string containing a JSON-Pointer value [RFC6901] that references a // location within the target document (the "target location") where the // operation is performed. Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` // The value to patch related to the given operation and path when it is a // string. Not supplied if operation is "remove". Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` // The value to patch related to the given operation and path when it is a // complex object. Not supplied if operation is "remove". This maps to // a "value" complex object, but cannot use proto "any" as "@type" is not // provided, therefore this map needs to be mapped from JSON. Object map[string]string `protobuf:"bytes,4,rep,name=object,proto3" json:"object,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *Patch_Operation) Reset() { *x = Patch_Operation{} if protoimpl.UnsafeEnabled { mi := &file_proto_scim_v2_users_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Patch_Operation) String() string { return protoimpl.X.MessageStringOf(x) } func (*Patch_Operation) ProtoMessage() {} func (x *Patch_Operation) ProtoReflect() protoreflect.Message { mi := &file_proto_scim_v2_users_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 Patch_Operation.ProtoReflect.Descriptor instead. func (*Patch_Operation) Descriptor() ([]byte, []int) { return file_proto_scim_v2_users_proto_rawDescGZIP(), []int{7, 0} } func (x *Patch_Operation) GetOp() string { if x != nil { return x.Op } return "" } func (x *Patch_Operation) GetPath() string { if x != nil { return x.Path } return "" } func (x *Patch_Operation) GetValue() string { if x != nil { return x.Value } return "" } func (x *Patch_Operation) GetObject() map[string]string { if x != nil { return x.Object } return nil } var File_proto_scim_v2_users_proto protoreflect.FileDescriptor var file_proto_scim_v2_users_proto_rawDesc = []byte{ 0x0a, 0x19, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x63, 0x69, 0x6d, 0x2f, 0x76, 0x32, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x22, 0x9d, 0x08, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x06, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x37, 0x0a, 0x0d, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x03, 0x69, 0x6d, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x03, 0x69, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x06, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x06, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x12, 0x2e, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x36, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x11, 0x78, 0x35, 0x30, 0x39, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x10, 0x78, 0x35, 0x30, 0x39, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x7a, 0x0a, 0x14, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x3a, 0x75, 0x72, 0x6e, 0x3a, 0x69, 0x65, 0x74, 0x66, 0x3a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x73, 0x63, 0x69, 0x6d, 0x3a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x3a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x3a, 0x32, 0x2e, 0x30, 0x3a, 0x55, 0x73, 0x65, 0x72, 0x22, 0xac, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xdb, 0x01, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x68, 0x6f, 0x6e, 0x6f, 0x72, 0x69, 0x66, 0x69, 0x63, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x68, 0x6f, 0x6e, 0x6f, 0x72, 0x69, 0x66, 0x69, 0x63, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x29, 0x0a, 0x10, 0x68, 0x6f, 0x6e, 0x6f, 0x72, 0x69, 0x66, 0x69, 0x63, 0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x68, 0x6f, 0x6e, 0x6f, 0x72, 0x69, 0x66, 0x69, 0x63, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x22, 0xa2, 0x01, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x11, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x24, 0x72, 0x65, 0x66, 0x12, 0x24, 0x0a, 0x12, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x22, 0xfe, 0x01, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x11, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x24, 0x72, 0x65, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x65, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x22, 0xef, 0x01, 0x0a, 0x17, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x22, 0x55, 0x0a, 0x07, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x11, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x24, 0x72, 0x65, 0x66, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x9c, 0x02, 0x0a, 0x05, 0x50, 0x61, 0x74, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xbe, 0x01, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x1a, 0x39, 0x0a, 0x0b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 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, 0xc6, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x63, 0x69, 0x6d, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x09, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x50, 0x65, 0x72, 0x50, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x42, 0x53, 0x5a, 0x51, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x63, 0x61, 0x72, 0x65, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x63, 0x69, 0x6d, 0x2f, 0x76, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_proto_scim_v2_users_proto_rawDescOnce sync.Once file_proto_scim_v2_users_proto_rawDescData = file_proto_scim_v2_users_proto_rawDesc ) func file_proto_scim_v2_users_proto_rawDescGZIP() []byte { file_proto_scim_v2_users_proto_rawDescOnce.Do(func() { file_proto_scim_v2_users_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_scim_v2_users_proto_rawDescData) }) return file_proto_scim_v2_users_proto_rawDescData } var file_proto_scim_v2_users_proto_msgTypes = make([]protoimpl.MessageInfo, 11) var file_proto_scim_v2_users_proto_goTypes = []interface{}{ (*User)(nil), // 0: scim.v2.User (*ResourceMetadata)(nil), // 1: scim.v2.ResourceMetadata (*Name)(nil), // 2: scim.v2.Name (*Attribute)(nil), // 3: scim.v2.Attribute (*Address)(nil), // 4: scim.v2.Address (*EnterpriseUserExtension)(nil), // 5: scim.v2.EnterpriseUserExtension (*Manager)(nil), // 6: scim.v2.Manager (*Patch)(nil), // 7: scim.v2.Patch (*ListUsersResponse)(nil), // 8: scim.v2.ListUsersResponse (*Patch_Operation)(nil), // 9: scim.v2.Patch.Operation nil, // 10: scim.v2.Patch.Operation.ObjectEntry } var file_proto_scim_v2_users_proto_depIdxs = []int32{ 1, // 0: scim.v2.User.meta:type_name -> scim.v2.ResourceMetadata 2, // 1: scim.v2.User.name:type_name -> scim.v2.Name 3, // 2: scim.v2.User.emails:type_name -> scim.v2.Attribute 3, // 3: scim.v2.User.phone_numbers:type_name -> scim.v2.Attribute 3, // 4: scim.v2.User.ims:type_name -> scim.v2.Attribute 3, // 5: scim.v2.User.photos:type_name -> scim.v2.Attribute 4, // 6: scim.v2.User.addresses:type_name -> scim.v2.Address 3, // 7: scim.v2.User.groups:type_name -> scim.v2.Attribute 3, // 8: scim.v2.User.entitlements:type_name -> scim.v2.Attribute 3, // 9: scim.v2.User.roles:type_name -> scim.v2.Attribute 3, // 10: scim.v2.User.x509_certificates:type_name -> scim.v2.Attribute 5, // 11: scim.v2.User.enterprise_extension:type_name -> scim.v2.EnterpriseUserExtension 6, // 12: scim.v2.EnterpriseUserExtension.manager:type_name -> scim.v2.Manager 9, // 13: scim.v2.Patch.operations:type_name -> scim.v2.Patch.Operation 0, // 14: scim.v2.ListUsersResponse.resources:type_name -> scim.v2.User 10, // 15: scim.v2.Patch.Operation.object:type_name -> scim.v2.Patch.Operation.ObjectEntry 16, // [16:16] is the sub-list for method output_type 16, // [16:16] is the sub-list for method input_type 16, // [16:16] is the sub-list for extension type_name 16, // [16:16] is the sub-list for extension extendee 0, // [0:16] is the sub-list for field type_name } func init() { file_proto_scim_v2_users_proto_init() } func file_proto_scim_v2_users_proto_init() { if File_proto_scim_v2_users_proto != nil { return } if !protoimpl.UnsafeEnabled { file_proto_scim_v2_users_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*User); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_proto_scim_v2_users_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ResourceMetadata); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_proto_scim_v2_users_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Name); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_proto_scim_v2_users_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Attribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_proto_scim_v2_users_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Address); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_proto_scim_v2_users_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EnterpriseUserExtension); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_proto_scim_v2_users_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Manager); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_proto_scim_v2_users_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Patch); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_proto_scim_v2_users_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListUsersResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_proto_scim_v2_users_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Patch_Operation); 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_proto_scim_v2_users_proto_rawDesc, NumEnums: 0, NumMessages: 11, NumExtensions: 0, NumServices: 0, }, GoTypes: file_proto_scim_v2_users_proto_goTypes, DependencyIndexes: file_proto_scim_v2_users_proto_depIdxs, MessageInfos: file_proto_scim_v2_users_proto_msgTypes, }.Build() File_proto_scim_v2_users_proto = out.File file_proto_scim_v2_users_proto_rawDesc = nil file_proto_scim_v2_users_proto_goTypes = nil file_proto_scim_v2_users_proto_depIdxs = nil }