1description: >
2    Provides user management functionality.
3    As communication to this service is done through authenticated
4    & authorized session, there won't be any validation for both.
5
6methods:
7    - name: CreateUser
8      description: >
9          Creates a new user. If the user already exists, then it will throw
10          an error.
11      parameters:
12          - name: UserName
13            type: string
14            description: >
15                User name which has to be created.
16          - name: GroupNames
17            type: array[string]
18            description: >
19                List of groups to which the user has to be added.
20          - name: Privilege
21            type: string
22            description: >
23                Privilege of the user to be added.
24          - name: Enabled
25            type: boolean
26            description: >
27                User enabled / disabled.
28      errors:
29          - xyz.openbmc_project.Common.Error.InternalFailure
30          - xyz.openbmc_project.Common.Error.InsufficientPermission
31          - xyz.openbmc_project.Common.Error.InvalidArgument
32          - xyz.openbmc_project.User.Common.Error.UserNameExists
33          - xyz.openbmc_project.User.Common.Error.UserNameGroupFail
34          - xyz.openbmc_project.User.Common.Error.UserNamePrivFail
35          - xyz.openbmc_project.User.Common.Error.NoResource
36
37    - name: RenameUser
38      description: >
39          Rename's existing user to new one. All other properties of the
40          user will remain same.
41      parameters:
42          - name: UserName
43            type: string
44            description: >
45                User name which has to be updated.
46          - name: NewUserName
47            type: string
48            description: >
49                New User name to which user has to be updated.
50      errors:
51          - xyz.openbmc_project.Common.Error.InternalFailure
52          - xyz.openbmc_project.Common.Error.InsufficientPermission
53          - xyz.openbmc_project.Common.Error.InvalidArgument
54          - xyz.openbmc_project.User.Common.Error.UserNameDoesNotExist
55          - xyz.openbmc_project.User.Common.Error.UserNameExists
56          - xyz.openbmc_project.User.Common.Error.UserNameGroupFail
57          - xyz.openbmc_project.User.Common.Error.UserNamePrivFail
58          - xyz.openbmc_project.User.Common.Error.NoResource
59
60    - name: GetUserInfo
61      description: >
62          Get user properites.
63          If its local user, method returns
64             -user privilege
65             -user groups
66             -user enabled state
67             -user locked state
68             -user password expired state
69             -remote user flag
70          If its ldap user, method returns
71             -user privilege
72             -remote user flag
73      parameters:
74          - name: UserName
75            type: string
76            description: >
77                User name whose properties have to be returned.
78      returns:
79          - name: UserInfo
80            type: dict[string,variant[string,array[string],boolean]]
81            description: >
82                Dictionary of user properties.
83                List of key name and data type of properties below.
84                UserPrivilege -> privilege of the user(string)
85                UserGroups    -> list of groups user belongs to(array[string])
86                UserEnabled   -> user enabled state(boolean)
87                UserLockedForFailedAttempt -> user locked state(boolean)
88                UserPasswordExpired -> user password expired(boolean)
89                RemoteUser    ->  remote or local user(boolean)
90
91                For detailed documentation of user properties refer
92                Attributes.interface.yaml
93                examples:
94                    1.UserInfo["RemoteUser"] returns true for ldap user
95                    and false for local user.
96                    2.UserInfo["UserGroups"] gets list of groups of user.
97      errors:
98          - xyz.openbmc_project.Common.Error.InternalFailure
99          - xyz.openbmc_project.Common.Error.InsufficientPermission
100          - xyz.openbmc_project.Common.Error.InvalidArgument
101          - xyz.openbmc_project.User.Common.Error.UserNameDoesNotExist
102
103properties:
104    - name: AllPrivileges
105      type: array[string]
106      flags:
107          - const
108      description: >
109          Lists all available user privileges in the system.
110
111    - name: AllGroups
112      type: array[string]
113      flags:
114          - const
115      description: >
116          Lists all available groups in the system.
117
118signals:
119    - name: UserRenamed
120      description: >
121          Signal indicating user's name is updated.
122      properties:
123          - name: UserName
124            type: string
125            description: Name of the user which got renamed.
126          - name: NewUserName
127            type: string
128            description: New name of the user.
129