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
}