// ===================================================================
// Title:       User-Security Organizations and Persons
// $State: Exp $
// $Date: 2004/08/15 05:55:42 $
// $Source: /cvsroot/wbemservices/open/mof/dmtf/2.9/User_Org.mof,v $
// $Revision: 1.1 $
// ===================================================================
//#pragma inLine ("Includes/copyright.inc")
// Copyright 1998-2004 Distributed Management Task Force, Inc. (DMTF).
// All rights reserved.
// DMTF is a not-for-profit association of industry members dedicated
// to promoting enterprise and systems management and interoperability.
// DMTF specifications and documents may be reproduced for uses
// consistent with this purpose by members and non-members,
// provided that correct attribution is given.
// As DMTF specifications may be revised from time to time,
// the particular version and release date should always be noted.
// 
// Implementation of certain elements of this standard or proposed
// standard may be subject to third party patent rights, including
// provisional patent rights (herein "patent rights"). DMTF makes
// no representations to users of the standard as to the existence
// of such rights, and is not responsible to recognize, disclose, or
// identify any or all such third party patent right, owners or
// claimants, nor for any incomplete or inaccurate identification or
// disclosure of such rights, owners or claimants. DMTF shall have no
// liability to any party, in any manner or circumstance, under any
// legal theory whatsoever, for failure to recognize, disclose, or
// identify any such third party patent rights, or for such party's
// reliance on the standard or incorporation thereof in its product,
// protocols or testing procedures. DMTF shall have no liability to
// any party implementing such standard, whether such implementation
// is foreseeable or not, nor to any patent owner or claimant, and shall
// have no liability or responsibility for costs or losses incurred if
// a standard is withdrawn or modified after publication, and shall be
// indemnified and held harmless by any party implementing the
// standard from any and all claims of infringement by a patent owner
// for such implementations.
// 
// For information about patents held by third-parties which have
// notified the DMTF that, in their opinion, such patent may relate to
// or impact implementations of DMTF standards, visit
// http://www.dmtf.org/about/policies/disclosures.php.
//#pragma inLine
// ===================================================================
// Description: The User Model extends the management concepts that
//              are related to users and security.
//              This file defines the concepts and classes related to
//              Organizations and Persons.
// 
//              The object classes below are listed in an order that
//              avoids forward references. Required objects, defined
//              by other working groups, are omitted.
// ===================================================================
// Change Log for v2.8 Final
//  CR1218: Accept the deprecation of MemberPrincipal
//  CR1220: Accept the definition of UserContact for Final release, and
//           the subclassing of Person from it
// 
// Change Log for v2.8 Preliminary
//  CR1011: Deprecate MemberPrincipal
//  CR1012: Move subset of Person info to UserContact and
//           clarify Descriptions of these classes
// 
// Change Log for v2.7
// CR835 - Add 2 properties, GivenName and UserID, to CIM_Person
// (ERRATA) CR854 - Change subclassing of OtherPersonInformation
//         from UserEntity to ManagedElement
// (ERRATA) CR855 - Change cardinality of the Antecedent from 0..1
//         to 1 for MoreOrganizationInfo, MoreOrgUnitInfo, and
//         MorePersonInfo
// CR980 - Remove the Experimental qualifier from 2 properties in
//         Person
// ===================================================================

#pragma Locale ("en_US")


// ==================================================================
// MemberPrincipal
// ==================================================================
   [Association, Deprecated { "CIM_MemberOfCollection" }, Aggregation,
    Version ( "2.8.0" ), Description (
       "CIM_MemberPrincipal is an aggregation used to establish "
       "membership of principals (i.e., users) in a Collection. That "
       "membership can be established either directly or indirectly as "
       "indicated in the UsersAccessBy property. For example, a user "
       "may be identified directly by their userid (i.e., Account "
       "object instance) or the user may be identified indirectly by "
       "realm from which a ticket was issued (i.e., "
       "CredentialManagementService object instance). \n"
       "\n"
       "This association is deprecated in lieu of its superclass. "
       "Usage feedback on the class has indicated confusion regarding "
       "defining the members of the collection. Also, the UsersAccess "
       "aspects of this association have been deprecated.")]
class CIM_MemberPrincipal : CIM_MemberOfCollection {

      [Deprecated { "CIM_MemberOfCollection.Collection" }, Aggregate,
       Override ( "Collection" )]
   CIM_Collection REF Collection;

      [Deprecated { "CIM_MemberOfCollection.Member" },
          Override ( "Member" )]
   CIM_ManagedElement REF Member;

      [Deprecated { "No value" }, Description (
          "A MemberPrincipal may be identifed in several ways that may "
          "be either direct or indirect membership in the collection. "
          "\n-A 'UsersAccess' membership directly identifies the user "
          "by the UsersAccess object instance. \n"
          "- An 'Account' membership directly identifies the user by "
          "the Account object class instance. \n"
          "- A 'UsingElement' membership indirectly identifies the "
          "user by the ManagedElement object instance that has "
          "ElementAsUser associations to UsersAccess object instances. "
          "Hence, all UsersAccess instances are indirectly included in "
          "the collection."), 
       ValueMap { "1", "2", "3", "4" }, 
       Values { "UsersAccess", "Account", "UsingElement",
          "CredentialManagementService" }]
   uint16 UserAccessBy;
};


// ==================================================================
// CollectionInSystem
// ==================================================================
   [Association, Aggregation, Version ( "2.6.0" ), Description (
       "CIM_CollectionInSystem is an association used to establish a "
       "parent-child relationship between a collection and an 'owning' "
       "System such as an AdminDomain or ComputerSystem. A single "
       "collection should not have both a CollectionInOrganization and "
       "a CollectionInSystem association.")]
class CIM_CollectionInSystem {

      [Key, Aggregate, Max ( 1 ), Description (
          "The parent system responsible for the collection.")]
   CIM_System REF Parent;

      [Key, Description (
          "The collection.")]
   CIM_Collection REF Child;
};


// ==================================================================
// OrganizationalEntity
// ==================================================================
   [Abstract, Version ( "2.6.0" ), Description (
       "OrganizationalEntity is an abstract class from which classes "
       "that fit into an organizational structure are derived.")]
class CIM_OrganizationalEntity : CIM_ManagedElement {
};


// ==================================================================
// OrgStructure
// ==================================================================
   [Association, Aggregation, Version ( "2.6.0" ), Description (
       "CIM_OrgStructure is an association used to establish "
       "parent-child relationships between OrganizationalEntity "
       "instances. This is used to capture organizational "
       "relationships between object instances such as those that are "
       "imported from an LDAP-accessible directory.")]
class CIM_OrgStructure {

      [Key, Aggregate, Max ( 1 ), Description (
          "The organizational parent in this association.")]
   CIM_OrganizationalEntity REF Parent;

      [Key, Description (
          "The organizational child in this association, i.e., the "
          "sub-unit or other owned object instance.")]
   CIM_OrganizationalEntity REF Child;
};


// ==================================================================
// CollectionInOrganization
// ==================================================================
   [Association, Aggregation, Version ( "2.6.0" ), Description (
       "CIM_CollectionInOrganization is an association used to "
       "establish a parent-child relationship between a collection and "
       "an 'owning' OrganizationalEntity. A single collection should "
       "not have both a CollectionInOrganization and a "
       "CollectionInSystem association.")]
class CIM_CollectionInOrganization {

      [Key, Aggregate, Max ( 1 ), Description (
          "The parent organization responsible for the collection.")]
   CIM_OrganizationalEntity REF Parent;

      [Key, Description (
          "The collection.")]
   CIM_Collection REF Child;
};


// ==================================================================
// Organization
// ==================================================================
   [Version ( "2.6.0" ), Description (
       "The Organization class is used to represent an organization "
       "such as a corporation or other autonomous entity. The class is "
       "defined so as to incorporate commonly-used LDAP attributes to "
       "permit implementations to easily derive this information from "
       "LDAP-accessible directories. This class's properties are a "
       "subset of a related class, OtherOrganizationInformation, which "
       "defines all the group properties and in array form for "
       "directory compatibility.")]
class CIM_Organization : CIM_OrganizationalEntity {

      [Key, Description (
          "CreationClassName indicates the name of the class or the "
          "subclass used in the creation of an instance. When used "
          "with the other key properties of this class, this property "
          "allows all instances of this class and its subclasses to be "
          "uniquely identified."), 
       MaxLen ( 256 )]
   string CreationClassName;

      [Key, Description (
          "The Name property defines the label by which the object is "
          "known. In the case of an LDAP-derived instance, the Name "
          "property value may be set to the distinguished name of the "
          "LDAP-accessed object instance."), 
       MaxLen ( 1024 )]
   string Name;

      [Description (
          "This property describes the kind of business performed by "
          "an organization."), 
       MaxLen ( 128 )]
   string BusinessCategory;

      [Description (
          "The organization's facsimile telephone number.")]
   string FacsimileTelephoneNumber;

      [Description (
          "This property contains the name of a locality, such as a "
          "city, county or other geographic region.")]
   string LocalityName;

      [Description (
          "Based on RFC1274, the mail box addresses for the "
          "organization as defined in RFC822.")]
   string Mail;

      [Required, Description (
          "The name of the organization.")]
   string OrganizationName;

      [Description (
          "The PostalAddress property values specify the address "
          "information required for the physical delivery of postal "
          "messages by the postal authority to the organization.")]
   string PostalAddress[];

      [Description (
          "The PostalCode property specifies the postal code of the "
          "organization. If this value is present it will be part of "
          "the object's postal address."), 
       MaxLen ( 40 )]
   string PostalCode;

      [Description (
          "The State or Province name property specifies a state or "
          "province.")]
   string StateOrProvince;

      [Description (
          "The TelephoneNumber property specifies a telephone number "
          "of the organization, e.g. + 44 582 10101)."), 
       MaxLen ( 32 )]
   string TelephoneNumber;
};


// ==================================================================
// OtherOrganizationInformation
// ==================================================================
   [Version ( "2.6.0" ), Description (
       "The OtherOrganizationInformation class is used to provide "
       "additional information about an associated Organization "
       "instance. This class is defined so as to incorporate "
       "commonly-used LDAP attributes to permit implementations to "
       "easily derive this information from LDAP-accessible "
       "directories.")]
class CIM_OtherOrganizationInformation : CIM_ManagedElement {

      [Key, Description (
          "CreationClassName indicates the name of the class or the "
          "subclass used in the creation of an instance. When used "
          "with the other key properties of this class, this property "
          "allows all instances of this class and its subclasses to be "
          "uniquely identified."), 
       MaxLen ( 256 )]
   string CreationClassName;

      [Key, Description (
          "The Name property defines the label by which the object is "
          "known. In the case of an LDAP-derived instance, the Name "
          "property value may be set to the distinguished name of the "
          "LDAP-accessed object instance."), 
       MaxLen ( 1024 )]
   string Name;

      [Description (
          "In the case of an LDAP-derived instance, the ObjectClass "
          "property value(s) may be set to the objectClass attribute "
          "values.")]
   string ObjectClass[];

      [Description (
          "This property describes the kind of business performed by "
          "an organization."), 
       MaxLen ( 128 )]
   string BusinessCategory[];

      [Description (
          "The Descriptions property values may contain human-readable "
          "descriptions of the object. In the case of an LDAP-derived "
          "instance, the description attribute may have multiple "
          "values that, therefore, cannot be placed in the inherited "
          "Description property."), 
       MaxLen ( 1024 )]
   string Descriptions[];

      [Description (
          "This property is used for the organization's telegram "
          "service."), 
       MaxLen ( 128 )]
   string DestinationIndicator[];

      [Description (
          "The organization's facsimile telephone number.")]
   string FacsimileTelephoneNumber[];

      [Description (
          "The organization's International ISDN number."), 
       MaxLen ( 16 )]
   string InternationaliSDNNumber[];

      [Description (
          "Uniform Resource Identifier with optional label as defined "
          "in RFC2079.")]
   string LabeledURI[];

      [Description (
          "This property contains the name of a locality, such as a "
          "city, county or other geographic region.")]
   string LocalityName[];

      [Description (
          "Based on RFC1274, the mail box addresses for the "
          "organization as defined in RFC822.")]
   string Mail[];

      [Description (
          "The manager for the organization. In the case of an "
          "LDAP-derived instance, the Manager property value may "
          "contain the distinguished name of the Manager.")]
   string Manager[];

      [Description (
          "The name of the organization.")]
   string OrganizationName[];

      [Description (
          "Based on RFC1274, this property may be used for electronic "
          "mail box addresses other than RFC822 and X.400.")]
   string OtherMailbox[];

      [Description (
          "The PhysicalDeliveryOfficeName property specifies the name "
          "of the city, village, etc. where a physical delivery office "
          "is situated."), 
       MaxLen ( 128 )]
   string PhysicalDeliveryOfficeName[];

      [Description (
          "The PostalAddress property values specify the address "
          "information required for the physical delivery of postal "
          "messages by the postal authority to the organization.")]
   string PostalAddress[];

      [Description (
          "The PostalCode property specifies the postal code of the "
          "organization. If this value is present it will be part of "
          "the object's postal address."), 
       MaxLen ( 40 )]
   string PostalCode[];

      [Description (
          "The PostOfficeBox property specifies the PO box by which "
          "the organization will receive physical postal delivery. If "
          "present, the property value is part of the object's postal "
          "address."), 
       MaxLen ( 40 )]
   string PostOfficeBox[];

      [Description (
          "The PreferredDeliveryMethod property specifies the "
          "organization's preferred method to be used for "
          "communicating with it.")]
   string PreferredDeliveryMethod;

      [Description (
          "This property specifies a postal address suitable for "
          "receipt of telegrams or expedited documents, where it is "
          "necessary to have the recipient accept delivery.")]
   string RegisteredAddress[];

      [Description (
          "This property value is for use by X.500 clients in "
          "constructing search filters.")]
   string SearchGuide[];

      [Description (
          "In the case of an LDAP-derived instance, the SeeAlso "
          "property specifies distinguishedName of other Directory "
          "objects which may be other aspects (in some sense) of the "
          "same real world object.")]
   string SeeAlso[];

      [Description (
          "The State or Province name property specifies a state or "
          "province.")]
   string StateOrProvince[];

      [Description (
          "The Street address property specifies a site for the local "
          "distribution and physical delivery in a postal address, "
          "i.e. the street name, place, avenue, and the number."), 
       MaxLen ( 128 )]
   string Street[];

      [Description (
          "The TelephoneNumber property specifies a telephone number "
          "of the organization, e.g. + 44 582 10101)."), 
       MaxLen ( 32 )]
   string TelephoneNumber[];

      [Description (
          "The TeletexTerminalIdentifier property specifies the "
          "Teletex terminal identifier (and, optionally, parameters) "
          "for a teletex terminal associated with the organization.")]
   string TeletexTerminalIdentifier[];

      [Description (
          "The TelexNumber property specifies the telex number, "
          "country code, and answerback code of a telex terminal for "
          "the organization.")]
   string TelexNumber[];

      [Description (
          "An image of the organization logo."), 
       OctetString]
   string ThumbnailLogo[];

      [Description (
          "A unique identifier that may be assigned in an environment "
          "to differentiate between uses of a given named organization "
          "instance.")]
   string UniqueIdentifier[];

      [Description (
          "In the case of an LDAP-derived instance, the UserPassword "
          "property may contain an encrypted password used to access "
          "the organization's resources in a directory."), 
       OctetString]
   string UserPassword[];

      [Description (
          "An X.121 address for the organization."), 
       MaxLen ( 15 )]
   string X121Address[];
};


// ==================================================================
// MoreOrganizationInfo
// ==================================================================
   [Association, Version ( "2.7.0" ), Description (
       "CIM_MoreOrganizationInfo is an association used to extend the "
       "information in a CIM_Organization class instance.")]
class CIM_MoreOrganizationInfo : CIM_Dependency {

      [Override ( "Antecedent" ), Min ( 1 ), Max ( 1 ), Description (
          "The Organization which has more information.")]
   CIM_Organization REF Antecedent;

      [Override ( "Dependent" ), Max ( 1 ), Description (
          "Additional data concerning the Organization.")]
   CIM_OtherOrganizationInformation REF Dependent;
};


// ==================================================================
// OrgUnit
// ==================================================================
   [Version ( "2.6.0" ), Description (
       "The OrgUnit class is used to represent a sub-unit of an "
       "organization such a division or department. The class is "
       "defined so as to incorporate commonly-used LDAP attributes to "
       "permit implementations to easily derive this information from "
       "LDAP-accessible directories. This class's properties are a "
       "subset of a related class, OtherOrgUnitInformation, which "
       "defines all the group properties and in array form for "
       "directory compatibility.")]
class CIM_OrgUnit : CIM_OrganizationalEntity {

      [Key, Description (
          "CreationClassName indicates the name of the class or the "
          "subclass used in the creation of an instance. When used "
          "with the other key properties of this class, this property "
          "allows all instances of this class and its subclasses to be "
          "uniquely identified."), 
       MaxLen ( 256 )]
   string CreationClassName;

      [Key, Description (
          "The Name property defines the label by which the object is "
          "known. In the case of an LDAP-derived instance, the Name "
          "property value may be set to the distinguished name of the "
          "LDAP-accessed object instance."), 
       MaxLen ( 1024 )]
   string Name;

      [Description (
          "This property describes the kind of business performed by "
          "an organizational unit."), 
       MaxLen ( 128 )]
   string BusinessCategory;

      [Description (
          "The organizational unit's facsimile telephone number.")]
   string FacsimileTelephoneNumber;

      [Description (
          "This property contains the name of a locality, such as a "
          "city, county or other geographic region.")]
   string LocalityName;

      [Required, Description (
          "The name of the organizational unit.")]
   string OU;

      [Description (
          "The PostalAddress property values specify the address "
          "information required for the physical delivery of postal "
          "messages by the postal authority to the organizational "
          "unit.")]
   string PostalAddress[];

      [Description (
          "The PostalCode property specifies the postal code of the "
          "organizational unit. If this value is present it will be "
          "part of the object's postal address."), 
       MaxLen ( 40 )]
   string PostalCode;

      [Description (
          "The State or Province name property specifies a state or "
          "province.")]
   string StateOrProvince;

      [Description (
          "The TelephoneNumber property specifies a telephone number "
          "of the organizational unit, e.g. + 44 582 10101)."), 
       MaxLen ( 32 )]
   string TelephoneNumber;
};


// ==================================================================
// OtherOrgUnitInformation
// ==================================================================
   [Version ( "2.6.0" ), Description (
       "The OtherOrgUnitInformation class is used to provide "
       "additional information about an associated OrgUnit instance. "
       "This class is defined so as to incorporate commonly-used LDAP "
       "attributes to permit implementations to easily derive this "
       "information from LDAP-accessible directories.")]
class CIM_OtherOrgUnitInformation : CIM_ManagedElement {

      [Key, Description (
          "CreationClassName indicates the name of the class or the "
          "subclass used in the creation of an instance. When used "
          "with the other key properties of this class, this property "
          "allows all instances of this class and its subclasses to be "
          "uniquely identified."), 
       MaxLen ( 256 )]
   string CreationClassName;

      [Key, Description (
          "The Name property defines the label by which the object is "
          "known. In the case of an LDAP-derived instance, the Name "
          "property value may be set to the distinguished name of the "
          "LDAP-accessed object instance."), 
       MaxLen ( 1024 )]
   string Name;

      [Description (
          "In the case of an LDAP-derived instance, the ObjectClass "
          "property value(s) may be set to the objectClass attribute "
          "values.")]
   string ObjectClass[];

      [Description (
          "This property describes the kind of business performed by "
          "an organizational unit."), 
       MaxLen ( 128 )]
   string BusinessCategory[];

      [Description (
          "The Descriptions property values may contain human-readable "
          "descriptions of the object. In the case of an LDAP-derived "
          "instance, the description attribute may have multiple "
          "values that, therefore, cannot be placed in the inherited "
          "Description property."), 
       MaxLen ( 1024 )]
   string Descriptions[];

      [Description (
          "This property is used for the organizational unit's "
          "telegram service."), 
       MaxLen ( 128 )]
   string DestinationIndicator[];

      [Description (
          "The organizational unit's facsimile telephone number.")]
   string FacsimileTelephoneNumber[];

      [Description (
          "The organizational unit's International ISDN number."), 
       MaxLen ( 16 )]
   string InternationaliSDNNumber[];

      [Description (
          "This property contains the name of a locality, such as a "
          "city, county or other geographic region.")]
   string LocalityName[];

      [Description (
          "The name of the organizational unit.")]
   string OU[];

      [Description (
          "The PhysicalDeliveryOfficeName property specifies the name "
          "of the city, village, etc. where a physical delivery office "
          "is situated."), 
       MaxLen ( 128 )]
   string PhysicalDeliveryOfficeName[];

      [Description (
          "The PostalAddress property values specify the address "
          "information required for the physical delivery of postal "
          "messages by the postal authority to the organizational "
          "unit.")]
   string PostalAddress[];

      [Description (
          "The PostalCode property specifies the postal code of the "
          "organizational unit. If this value is present it will be "
          "part of the object's postal address."), 
       MaxLen ( 40 )]
   string PostalCode[];

      [Description (
          "The PostOfficeBox property specifies the PO box by which "
          "the organizational unit will receive physical postal "
          "delivery. If present, the property value is part of the "
          "object's postal address."), 
       MaxLen ( 40 )]
   string PostOfficeBox[];

      [Description (
          "The PreferredDeliveryMethod property specifies the "
          "organizational unit's preferred method to be used for "
          "communicating with it.")]
   string PreferredDeliveryMethod;

      [Description (
          "This property value is for use by X.500 clients in "
          "constructing search filters.")]
   string SearchGuide[];

      [Description (
          "In the case of an LDAP-derived instance, the SeeAlso "
          "property specifies distinguished name of other Directory "
          "objects which may be other aspects (in some sense) of the "
          "same real world object.")]
   string SeeAlso[];

      [Description (
          "The State or Province name property specifies a state or "
          "province.")]
   string StateOrProvince[];

      [Description (
          "The Street address property specifies a site for the local "
          "distribution and physical delivery in a postal address, "
          "i.e. the street name, place, avenue, and the number."), 
       MaxLen ( 128 )]
   string Street[];

      [Description (
          "The TelephoneNumber property specifies a telephone number "
          "of the organizational unit, e.g. + 44 582 10101)."), 
       MaxLen ( 32 )]
   string TelephoneNumber[];

      [Description (
          "The TeletexTerminalIdentifier property specifies the "
          "Teletex terminal identifier (and, optionally, parameters) "
          "for a teletex terminal associated with the organizational "
          "unit.")]
   string TeletexTerminalIdentifier[];

      [Description (
          "The TelexNumber property specifies the telex number, "
          "country code, and answerback code of a telex terminal for "
          "the organization.")]
   string TelexNumber[];

      [Description (
          "In the case of an LDAP-derived instance, the UserPassword "
          "property may contain an encrypted password used to access "
          "the organizational unit's resources in a directory."), 
       OctetString]
   string UserPassword[];

      [Description (
          "An X.121 address for the organization."), 
       MaxLen ( 15 )]
   string X121Address[];
};


// ==================================================================
// MoreOrgUnitInfo
// ==================================================================
   [Association, Version ( "2.7.0" ), Description (
       "CIM_MoreOrgUnitInfo is an association used to extend the "
       "information in an CIM_OrgUnit class instance.")]
class CIM_MoreOrgUnitInfo : CIM_Dependency {

      [Override ( "Antecedent" ), Min ( 1 ), Max ( 1 ), Description (
          "The OrgUnit which has more information.")]
   CIM_OrgUnit REF Antecedent;

      [Override ( "Dependent" ), Max ( 1 ), Description (
          "Additional data concerning the OrgUnit.")]
   CIM_OtherOrgUnitInformation REF Dependent;
};


// ==================================================================
// UserEntity
// ==================================================================
   [Abstract, Version ( "2.6.0" ), Description (
       "UserEntity is an abstract class that represents users - their "
       "names, contact data and similar information.")]
class CIM_UserEntity : CIM_OrganizationalEntity {
};


// ==================================================================
// UserContact
// ==================================================================
   [Version ( "2.8.0" ), Description (
       "UserContact contains the details related to contacting a user. "
       "This information will be promoted to UserEntity in a later "
       "major release of CIM, but cannot be promoted at this time "
       "since UserEntity is abstract today, with no keys. Key and "
       "required properties cannot be added to a class in a minor "
       "version release since this breaks backward compatibility.")]
class CIM_UserContact : CIM_UserEntity {

      [Key, Description (
          "CreationClassName indicates the name of the class or the "
          "subclass used in the creation of an instance. When used "
          "with the other key properties of this class, this property "
          "allows all instances of this class and its subclasses to be "
          "uniquely identified."), 
       MaxLen ( 256 )]
   string CreationClassName;

      [Key, Description (
          "The Name property defines the label by which the object is "
          "known. In the case of an LDAP-derived instance, the Name "
          "property value may be set to the distinguished name of the "
          "LDAP-accessed object instance."), 
       MaxLen ( 1024 )]
   string Name;

      [Description (
          "The Given Name property is used for the part of a person's "
          "name that is not their surname nor their middle name (i.e., "
          "their first name).")]
   string GivenName;

      [Required, Description (
          "The Surname property specifies the linguistic construct "
          "that normally is inherited by an individual from the "
          "individual's parent or assumed by marriage, and by which "
          "the individual is commonly known.")]
   string Surname;

      [Description (
          "Based on RFC1274, the mail box addresses for the person as "
          "defined in RFC822.")]
   string Mail;

      [Description (
          "A User ID property. Based on RFC1274, the property may be "
          "used to specify a computer system login name.")]
   string UserID;

      [Description (
          "This property contains the name of a locality, such as a "
          "city, county or other geographic region.")]
   string LocalityName;

      [Description (
          "The PostalAddress property values specify the address "
          "information required for the physical delivery of postal "
          "messages by the postal authority to the person.")]
   string PostalAddress[];

      [Description (
          "The State or Province name property specifies a state or "
          "province.")]
   string StateOrProvince;

      [Description (
          "The PostalCode property specifies the postal code of the "
          "organization. If this value is present it will be part of "
          "the object's postal address."), 
       MaxLen ( 40 )]
   string PostalCode;

      [Description (
          "The TelephoneNumber property specifies a telephone number "
          "of the organization, e.g. + 44 582 10101)."), 
       MaxLen ( 32 )]
   string TelephoneNumber;
};


// ==================================================================
// Person
// ==================================================================
   [Version ( "2.8.0" ), Description (
       "The Person class is used to represent people, and holds their "
       "white and yellow pages data. The class is defined so as to "
       "incorporate commonly-used LDAP attributes to permit "
       "implementations to easily derive this information from "
       "LDAP-accessible directories. This class's properties are a "
       "subset of a related class, OtherPersonInformation, which "
       "defines all the group properties and in array form for "
       "directory compatibility.")]
class CIM_Person : CIM_UserContact {

      [Description (
          "This property describes the kind of business performed by "
          "an organization."), 
       MaxLen ( 128 )]
   string BusinessCategory;

      [Required, Description (
          "A CommonName is a (possibly ambiguous) name by which the "
          "Person is commonly known in some limited scope (such as an "
          "organization) and conforms to the naming conventions of the "
          "country or culture with which it is associated.")]
   string CommonName;

      [Description (
          "Based on inetOrgPerson, the EmployeeNumber property "
          "specifies a numeric or an alphanumeric identifier assigned "
          "to a person.")]
   string EmployeeNumber;

      [Description (
          "Based on inetOrgPerson, the EmployeeType property is used "
          "to identify the employer to employee relationship. Typical "
          "values used may include 'Contractor', 'Employee', 'Intern', "
          "'Temp', 'External', and 'Unknown' but any value may be "
          "used.")]
   string EmployeeType;

      [Description (
          "The person's facsimile telephone number.")]
   string FacsimileTelephoneNumber;

      [Description (
          "Based on RFC1274, the HomePhone property specifies a home "
          "telephone number for the person, e.g. + 44 582 10101)."), 
       MaxLen ( 32 )]
   string HomePhone;

      [Description (
          "The HomePostalAddress property values specify the home "
          "address information required for the physical delivery of "
          "postal messages by the postal authority.")]
   string HomePostalAddress[];

      [Description (
          "From inetOrgPerson, the JPEGPhoto property values may be "
          "used for one or more images of a person using the JPEG File "
          "Interchange Format.")]
   string JPEGPhoto;

      [Description (
          "The person's manager within the organization. In the case "
          "of an LDAP-derived instance, the Manager property value may "
          "contain the distinguished name of the Manager.")]
   string Manager;

      [Description (
          "Based on RFC1274, the Mobile phone property specifies a "
          "mobile telephone number for the person, e.g. + 44 582 "
          "10101)."), 
       MaxLen ( 32 )]
   string Mobile;

      [Description (
          "The name of an organizational unit related to the person.")]
   string OU;

      [Description (
          "Based on RFC1274, the Pager property specifies a pager "
          "telephone number for the person, e.g. + 44 582 10101)."), 
       MaxLen ( 32 )]
   string Pager;

      [Description (
          "Based on inetOrgPerson, the person's preferred written or "
          "spoken language.")]
   string PreferredLanguage;

      [Description (
          "Based on RFC1274, the Secretary property may be used to "
          "specify a secretary for the person. In the case of an "
          "LDAP-derived object instance, the value may be a "
          "distinguished name.")]
   string Secretary;

      [Description (
          "The Title property may be used to specify the person's "
          "designated position or function of the object within an "
          "organization, e.g., Manager, Vice-President, etc.")]
   string Title;
};


// ==================================================================
// SystemAdministrator
// ==================================================================
   [Association, Version ( "2.6.0" ), Description (
       "CIM_SystemAdministrator is an association used to identify the "
       "UserEntity as a system administrator of a CIM_System.")]
class CIM_SystemAdministrator : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The administered system.")]
   CIM_System REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The UserEntity that provides the admininstrative function "
          "for the associated system.")]
   CIM_UserEntity REF Dependent;
};


// ==================================================================
// OtherPersonInformation
// ==================================================================
   [Version ( "2.7.0" ), Description (
       "The OtherPersonInformation class is used to provide additional "
       "information about an associated Person instance. This class is "
       "defined so as to incorporate commonly-used LDAP attributes to "
       "permit implementations to easily derive this information from "
       "LDAP-accessible directories.")]
class CIM_OtherPersonInformation : CIM_ManagedElement {

      [Key, Description (
          "CreationClassName indicates the name of the class or the "
          "subclass used in the creation of an instance. When used "
          "with the other key properties of this class, this property "
          "allows all instances of this class and its subclasses to be "
          "uniquely identified."), 
       MaxLen ( 256 )]
   string CreationClassName;

      [Key, Description (
          "The Name property defines the label by which the object is "
          "known. In the case of an LDAP-derived instance, the Name "
          "property value may be set to the distinguished name of the "
          "LDAP-accessed object instance."), 
       MaxLen ( 1024 )]
   string Name;

      [Description (
          "In the case of an LDAP-derived instance, the ObjectClass "
          "property value(s) may be set to the objectClass attribute "
          "values.")]
   string ObjectClass[];

      [Description (
          "The Audio property may be used to store an audio clip of "
          "the person."), 
       OctetString]
   string Audio[];

      [Description (
          "This property describes the kind of business performed by "
          "an organization."), 
       MaxLen ( 128 )]
   string BusinessCategory[];

      [Description (
          "The CarLicense property is used to record the values of the "
          "vehicle license or registration plate associated with an "
          "individual."), 
       MaxLen ( 128 )]
   string CarLicense[];

      [Description (
          "A CommonName is a (possibly ambiguous) name by which the "
          "role is commonly known in some limited scope (such as an "
          "organization) and conforms to the naming conventions of the "
          "country or culture with which it is associated.")]
   string CommonName[];

      [Description (
          "The CountryName property specifies a country as defined in "
          "ISO 3166.")]
   string CountryName[];

      [Description (
          "Based on inetOrgPerson, the DepartmentNumber is a code for "
          "department to which a person belongs. This can be strictly "
          "numeric (e.g., 1234) or alphanumeric (e.g., ABC/123).")]
   string DepartmentNumber[];

      [Description (
          "The Descriptions property values may contain human-readable "
          "descriptions of the object. In the case of an LDAP-derived "
          "instance, the description attribute may have multiple "
          "values that, therefore, cannot be placed in the inherited "
          "Description property."), 
       MaxLen ( 1024 )]
   string Descriptions[];

      [Description (
          "This property is used for the organization's telegram "
          "service."), 
       MaxLen ( 128 )]
   string DestinationIndicator[];

      [Description (
          "Based on inetOrgPerson, the DisplayName property values are "
          "used when displaying an entry.")]
   string DisplayName[];

      [Description (
          "Based on inetOrgPerson, the EmployeeNumber property "
          "specifies a numeric or an alphanumeric identifier assigned "
          "to a person.")]
   string EmployeeNumber;

      [Description (
          "Based on inetOrgPerson, the EmployeeType property is used "
          "to identify the employer to employee relationship. Typical "
          "values used may include 'Contractor', 'Employee', 'Intern', "
          "'Temp', 'External', and 'Unknown' but any value may be "
          "used.")]
   string EmployeeType[];

      [Description (
          "The person's facsimile telephone number.")]
   string FacsimileTelephoneNumber[];

      [Description (
          "Based on liPerson, the GenerationQualifier property "
          "specifies a name qualifier that represents the person's "
          "generation (e.g., JR., III, etc.).")]
   string GenerationQualifier[];

      [Description (
          "The GivenName property is used for the part of a person's "
          "name that is not their surname nor their middle name.")]
   string GivenName[];

      [Description (
          "Based on liPerson, the HomeFax property specifies the "
          "person's facsimile telephone number at home.")]
   string HomeFax[];

      [Description (
          "Based on RFC1274, the HomePhone property specifies a home "
          "telephone number for the person, e.g. + 44 582 10101)."), 
       MaxLen ( 32 )]
   string HomePhone[];

      [Description (
          "The HomePostalAddress property values specify the home "
          "address information required for the physical delivery of "
          "postal messages by the postal authority.")]
   string HomePostalAddress[];

      [Description (
          "Based on inetOrgPerson, the Initials property specifies the "
          "first letters of the person's name, typically the property "
          "values will exclude the first letter of the surname.")]
   string Initials[];

      [Description (
          "The person's International ISDN number."), 
       MaxLen ( 16 )]
   string InternationaliSDNNumber[];

      [Description (
          "From inetOrgPerson, the JPEG Photo property values may be "
          "used for one or more images of a person using the JPEG File "
          "Interchange Format.")]
   string JPEGPhoto[];

      [Description (
          "Uniform Resource Identifier with optional label as defined "
          "in RFC2079.")]
   string LabeledURI[];

      [Description (
          "This property contains the name of a locality, such as a "
          "city, county or other geographic region.")]
   string LocalityName[];

      [Description (
          "Based on RFC1274, the mail box addresses for the person as "
          "defined in RFC822.")]
   string Mail[];

      [Description (
          "The person's manager within the organization. In the case "
          "of an LDAP-derived instance, the Manager property value may "
          "contain the distinguishedName of the Manager.")]
   string Manager[];

      [Description (
          "Based on liPerson, the middle name of the person.")]
   string MiddleName[];

      [Description (
          "Based on RFC1274, the Mobile phone property specifies a "
          "mobile telephone number for the person, e.g. + 44 582 "
          "10101)."), 
       MaxLen ( 32 )]
   string Mobile[];

      [Required, Description (
          "The name of the person's organization.")]
   string OrganizationName[];

      [Description (
          "Based on RFC1274, the OrganizationalStatus property "
          "specifies a category by which a person is often referred to "
          "within an organization. Examples of usage in academia might "
          "include undergraduate student, researcher, lecturer, etc.")]
   string OrganizationalStatus[];

      [Description (
          "Based on RFC1274, this property may be used for electronic "
          "mail box addresses other than RFC822 and X.400.")]
   string OtherMailbox[];

      [Description (
          "The name of an organizational unit related to the person.")]
   string OU[];

      [Description (
          "Based on RFC1274, the Pager property specifies a pager "
          "telephone number for the person, e.g. + 44 582 10101)."), 
       MaxLen ( 32 )]
   string Pager[];

      [Description (
          "Based on liPerson, the PersonalTitle property may be used "
          "to specify the person's personal title such as Mr., Ms., "
          "Dr., Prof. etc.")]
   string PersonalTitle[];

      [Description (
          "Based on RFC1274, the Photo property may be used to specify "
          "a photograph for the person encoded in G3 fax as explained "
          "in recommendation T.4, with an ASN.1 wrapper to make it "
          "compatible with an X.400 BodyPart as defined in X.420."), 
       OctetString]
   string Photo[];

      [Description (
          "The PhysicalDeliveryOfficeName property specifies the name "
          "of the city, village, etc. where a physical delivery office "
          "is situated."), 
       MaxLen ( 128 )]
   string PhysicalDeliveryOfficeName[];

      [Description (
          "The PostalAddress property values specify the address "
          "information required for the physical delivery of postal "
          "messages by the postal authority to the person.")]
   string PostalAddress[];

      [Description (
          "The PostalCode property specifies the postal code of the "
          "organization. If this value is present, it will be part of "
          "the object's postal address."), 
       MaxLen ( 40 )]
   string PostalCode[];

      [Description (
          "The PostOfficeBox property specifies the PO box by which "
          "the person will receive physical postal delivery. If "
          "present, the property value is part of the object's postal "
          "address."), 
       MaxLen ( 40 )]
   string PostOfficeBox[];

      [Description (
          "The PreferredDeliveryMethod property specifies the "
          "preferred method to be used for contacting the person.")]
   string PreferredDeliveryMethod;

      [Description (
          "Based on inetOrgPerson, the person's preferred written or "
          "spoken language.")]
   string PreferredLanguage;

      [Description (
          "This property specifies a postal address suitable for "
          "receipt of telegrams or expedited documents, where it is "
          "necessary to have the recipient accept delivery.")]
   string RegisteredAddress[];

      [Description (
          "Based on RFC1274, the RoomNumber property specifies the "
          "room number for the person.")]
   string RoomNumber[];

      [Description (
          "Based on RFC1274, the Secretary property may be used to "
          "specify a secretary for the person. In the case of an "
          "LDAP-derived object instance, the value may be a "
          "distinguishedName.")]
   string Secretary[];

      [Description (
          "In the case of an LDAP-derived instance, the SeeAlso "
          "property specifies distinguished name of other Directory "
          "objects which may be other aspects (in some sense) of the "
          "same real world object.")]
   string SeeAlso[];

      [Description (
          "The State or Province name property specifies a state or "
          "province.")]
   string StateOrProvince[];

      [Description (
          "The Street address property specifies a site for the local "
          "distribution and physical delivery in a postal address, "
          "i.e. the street name, place, avenue, and the number."), 
       MaxLen ( 128 )]
   string Street[];

      [Description (
          "The Surname property specifies the linguistic construct "
          "that normally is inherited by an individual from the "
          "individual's parent or assumed by marriage, and by which "
          "the individual is commonly known.")]
   string Surname[];

      [Description (
          "The TelephoneNumber property specifies a telephone number "
          "of the organization, e.g. + 44 582 10101)."), 
       MaxLen ( 32 )]
   string TelephoneNumber[];

      [Description (
          "The TeletexTerminalIdentifier property specifies the "
          "Teletex terminal identifier (and, optionally, parameters) "
          "for a teletex terminal associated with the organization.")]
   string TeletexTerminalIdentifier[];

      [Description (
          "The TelexNumber property specifies the telex number, "
          "country code, and answerback code of a telex terminal for "
          "the organization.")]
   string TelexNumber[];

      [Description (
          "A small image of the person's organization logo."), 
       OctetString]
   string ThumbnailLogo[];

      [Description (
          "A small image of the person."), 
       OctetString]
   string ThumbnailPhoto[];

      [Description (
          "The Title property may be used to specify the person's "
          "designated position or function of the object within an "
          "organization, e.g., Manager, Vice-President, etc.")]
   string Title[];

      [Description (
          "Based on RFC1274, the UserID property may be used to "
          "specify a computer system login name.")]
   string UserID[];

      [Description (
          "A unique identifier that may be assigned in an environment "
          "to differentiate between uses of a given named person "
          "instance.")]
   string UniqueIdentifier[];

      [Description (
          "Based on inetOrgPerson and for directory compatibility, the "
          "UserCertificate property may be used to specify a public "
          "key certificate for the person."), 
       OctetString]
   string UserCertificate[];

      [Description (
          "In the case of an LDAP-derived instance, the UserPassword "
          "property may contain an encrypted password used to access "
          "the person's resources in a directory."), 
       OctetString]
   string UserPassword[];

      [Description (
          "Based on inetOrgPerson and for directory compatibility, the "
          "UserPKCS12 property value may be used to provide a format "
          "for exchange of personal identity information. The property "
          "values are PFX PDUs stored as Octetstrings."), 
       OctetString]
   string UserPKCS12[];

      [Description (
          "Based on inetOrgPerson, the User S/MIME Certificate "
          "property may be used to specify the person's an S/MIME "
          "(RFC1847) signed message with a zero-length body. It "
          "contains the entire certificate chain and the signed "
          "attribute that describes their algorithm capabilities. If "
          "available, this property is preferred over the "
          "UserCertificate property for S/MIME applications."), 
       OctetString]
   string UserSMIMECertificate[];

      [Description (
          "An X.121 address for the organization."), 
       MaxLen ( 15 )]
   string X121Address[];

      [Description (
          "An X.500 specified unique identifier that may be assigned "
          "in an environment to differentiate between uses of a given "
          "named person object instance."), 
       OctetString]
   string X500UniqueIdentifier[];
};


// ==================================================================
// MorePersonInfo
// ==================================================================
   [Association, Version ( "2.7.0" ), Description (
       "CIM_MorePersonInfo is an association used to extend the "
       "information in a CIM_Person class instance.")]
class CIM_MorePersonInfo : CIM_Dependency {

      [Override ( "Antecedent" ), Min ( 1 ), Max ( 1 ), Description (
          "The Person which has more information.")]
   CIM_Person REF Antecedent;

      [Override ( "Dependent" ), Max ( 1 ), Description (
          "Additional data concerning the Person.")]
   CIM_OtherPersonInformation REF Dependent;
};


// ===================================================================
// end of file
// ===================================================================
