// This file was autogenerated by go-to-protobuf. Do not edit it manually!

syntax = 'proto2';

package github.com.openshift.origin.pkg.user.api.v1;

import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto";
import "k8s.io/kubernetes/pkg/api/v1/generated.proto";
import "k8s.io/kubernetes/pkg/runtime/generated.proto";
import "k8s.io/kubernetes/pkg/util/intstr/generated.proto";

// Package-wide variables from generator "generated".
option go_package = "v1";

// Group represents a referenceable set of Users
message Group {
  // Standard object's metadata.
  optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1;

  // Users is the list of users in this group.
  optional OptionalNames users = 2;
}

// GroupList is a collection of Groups
message GroupList {
  // Standard object's metadata.
  optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1;

  // Items is the list of groups
  repeated Group items = 2;
}

// Identity records a successful authentication of a user with an identity provider. The
// information about the source of authentication is stored on the identity, and the identity
// is then associated with a single user object. Multiple identities can reference a single
// user. Information retrieved from the authentication provider is stored in the extra field
// using a schema determined by the provider.
message Identity {
  // Standard object's metadata.
  optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1;

  // ProviderName is the source of identity information
  optional string providerName = 2;

  // ProviderUserName uniquely represents this identity in the scope of the provider
  optional string providerUserName = 3;

  // User is a reference to the user this identity is associated with
  // Both Name and UID must be set
  optional k8s.io.kubernetes.pkg.api.v1.ObjectReference user = 4;

  // Extra holds extra information about this identity
  map<string, string> extra = 5;
}

// IdentityList is a collection of Identities
message IdentityList {
  // Standard object's metadata.
  optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1;

  // Items is the list of identities
  repeated Identity items = 2;
}

// OptionalNames is an array that may also be left nil to distinguish between set and unset.
// +protobuf.nullable=true
// +protobuf.options.(gogoproto.goproto_stringer)=false
message OptionalNames {
  // items, if empty, will result in an empty slice

  repeated string items = 1;
}

// Upon log in, every user of the system receives a User and Identity resource. Administrators
// may directly manipulate the attributes of the users for their own tracking, or set groups
// via the API. The user name is unique and is chosen based on the value provided by the
// identity provider - if a user already exists with the incoming name, the user name may have
// a number appended to it depending on the configuration of the system.
message User {
  // Standard object's metadata.
  optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1;

  // FullName is the full name of user
  optional string fullName = 2;

  // Identities are the identities associated with this user
  repeated string identities = 3;

  // Groups are the groups that this user is a member of
  repeated string groups = 4;
}

// UserIdentityMapping maps a user to an identity
message UserIdentityMapping {
  // Standard object's metadata.
  optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1;

  // Identity is a reference to an identity
  optional k8s.io.kubernetes.pkg.api.v1.ObjectReference identity = 2;

  // User is a reference to a user
  optional k8s.io.kubernetes.pkg.api.v1.ObjectReference user = 3;
}

// UserList is a collection of Users
message UserList {
  // Standard object's metadata.
  optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1;

  // Items is the list of users
  repeated User items = 2;
}