{
    "Resources": [
        {
            "Uri": "/cli/v1/user",
            "Interfaces": [
                {
                    "Type": "Get",
                    "Description": "Get the information of user"
                }
            ]
        },
        {
            "Uri": "/cli/v1/user/list",
            "Interfaces": [
                {
                    "Type": "Get",
                    "Description": "List all user information",
                    "Usage": "ipmcget -t user -d list",
                    "RspBody": {
                        "user_table": "${Statements/AccountInfo()}"
                    },
                    "Statements": {
                        "AccountPaths": {
                            "Steps": [
                                {
                                    "Type": "Plugin",
                                    "Formula": "orchestrator.account.get_paths(Context)"
                                }
                            ]
                        },
                        "AccountInfo": {
                            "Input": "${Statements/AccountPaths()}",
                            "Steps": [
                                {
                                    "Type": "Expand",
                                    "Formula": "1"
                                }
                            ]
                        }
                    },
                    "Echoes": [
                        "ipmcget/user_list",
                        ""
                    ]
                }
            ]
        },
        {
            "Uri": "/bmc/kepler/AccountService/Accounts/:id",
            "Interfaces": [
                {
                    "Type": "Get",
                    "RspBody": {
                        "Id": "${ProcessingFlow[1]/Destination/Id}",
                        "Name": "${ProcessingFlow[1]/Destination/Name}",
                        "Privilege": "${Statements/Privilege()}",
                        "Interface": "${ProcessingFlow[1]/Destination/Interface}",
                        "PublicKeyHash": "${ProcessingFlow[1]/Destination/PublicKeyHash}",
                        "State": "${ProcessingFlow[1]/Destination/State}"
                    },
                    "Statements": {
                        "Privilege": {
                            "Input": "${ProcessingFlow[1]/Destination/Privilege}",
                            "Steps": [
                                {
                                    "Type": "Switch",
                                    "Formula": [
                                        {
                                            "Case": 0,
                                            "To": "NO ACCESS"
                                        },
                                        {
                                            "Case": 2,
                                            "To": "USER"
                                        },
                                        {
                                            "Case": 3,
                                            "To": "OPERATOR"
                                        },
                                        {
                                            "Case": 4,
                                            "To": "ADMINISTRATOR"
                                        },
                                        {
                                            "Case": 5,
                                            "To": "CUSTOM ROLE1"
                                        },
                                        {
                                            "Case": 6,
                                            "To": "CUSTOM ROLE2"
                                        },
                                        {
                                            "Case": 7,
                                            "To": "CUSTOM ROLE3"
                                        },
                                        {
                                            "Case": 8,
                                            "To": "CUSTOM ROLE4"
                                        },
                                        {
                                            "Case": 9,
                                            "To": "CUSTOM ROLE5"
                                        },
                                        {
                                            "Case": 10,
                                            "To": "CUSTOM ROLE6"
                                        },
                                        {
                                            "Case": 11,
                                            "To": "CUSTOM ROLE7"
                                        },
                                        {
                                            "Case": 12,
                                            "To": "CUSTOM ROLE8"
                                        },
                                        {
                                            "Case": 13,
                                            "To": "CUSTOM ROLE9"
                                        },
                                        {
                                            "Case": 14,
                                            "To": "CUSTOM ROLE10"
                                        },
                                        {
                                            "Case": 15,
                                            "To": "CUSTOM ROLE11"
                                        },
                                        {
                                            "Case": 16,
                                            "To": "CUSTOM ROLE12"
                                        },
                                        {
                                            "Case": 17,
                                            "To": "CUSTOM ROLE13"
                                        },
                                        {
                                            "Case": 18,
                                            "To": "CUSTOM ROLE14"
                                        },
                                        {
                                            "Case": 19,
                                            "To": "CUSTOM ROLE15"
                                        },
                                        {
                                            "Case": 20,
                                            "To": "CUSTOM ROLE16"
                                        }
                                    ]
                                }
                            ]
                        }
                    },
                    "ProcessingFlow": [
                        {
                            "Type": "Property",
                            "Path": "/bmc/kepler/AccountService/Accounts/${Uri/id}",
                            "Interface": "bmc.kepler.AccountService.ManagerAccount",
                            "Destination": {
                                "Id": "Id",
                                "UserName": "Name",
                                "RoleId": "Privilege",
                                "LoginInterface": "Interface",
                                "SshPublicKeyHash": "PublicKeyHash",
                                "Enabled": "State"
                            }
                        }
                    ]
                }
            ]
        },
        {
            "Uri": "/cli/v1/user/passwordcomplexity",
            "Interfaces": [
                {
                    "Type": "Get",
                    "Description": "Get password complexity check enable status",
                    "Usage": "ipmcget -t user -d passwordcomplexity",
                    "RspBody": {
                        "PasswordComplexityEnable": "${ProcessingFlow[1]/Destination/PasswordComplexityEnable}"
                    },
                    "ProcessingFlow": [
                        {
                            "Type": "Property",
                            "Path": "/bmc/kepler/AccountService",
                            "Interface": "bmc.kepler.AccountService",
                            "Destination": {
                                "PasswordComplexityEnable": "PasswordComplexityEnable"
                            }
                        }
                    ],
                    "Echoes": [
                        "ipmcget/user_passwordcomplexity",
                        ""
                    ]
                }
            ]
        },
        {
            "Uri": "/cli/v1/_/passwordcomplexity",
            "Interfaces": [
                {
                    "Type": "Get",
                    "Description": "Get password complexity check enable status",
                    "Usage": "ipmcget -d passwordcomplexity",
                    "RspBody": {
                        "PasswordComplexityEnable": "${ProcessingFlow[1]/Destination/PasswordComplexityEnable}"
                    },
                    "ProcessingFlow": [
                        {
                            "Type": "Property",
                            "Path": "/bmc/kepler/AccountService",
                            "Interface": "bmc.kepler.AccountService",
                            "Destination": {
                                "PasswordComplexityEnable": "PasswordComplexityEnable"
                            }
                        }
                    ],
                    "Echoes": [
                        "ipmcget/user_passwordcomplexity",
                        ""
                    ]
                }
            ]
        },
        {
            "Uri": "/cli/v1/user/sshpasswordauthentication",
            "Interfaces": [
                {
                    "Type": "Get",
                    "Description": "Get SSH password authentication status",
                    "Usage": "ipmcget -d sshpasswordauthentication",
                    "RspBody": {
                        "GetPasswordAuthEnabled": "${Statements/GetPasswordAuthEnabled()}"
                    },
                    "Statements": {
                        "GetPasswordAuthEnabled": {
                            "Input": "${ProcessingFlow[1]/Destination/PasswordAuthEnabled}",
                            "Steps": [
                                {
                                    "Type": "Switch",
                                    "Formula": [
                                        {
                                            "Case": true,
                                            "To": "enabled"
                                        },
                                        {
                                            "Case": false,
                                            "To": "disabled"
                                        }
                                    ]
                                }
                            ]
                        }
                    },
                    "ProcessingFlow": [
                        {
                            "Type": "Property",
                            "Path": "/bmc/kepler/Managers/1/NetworkProtocol/SSH",
                            "Interface": "bmc.kepler.Managers.NetworkProtocol.SSH",
                            "Destination": {
                                "PasswordAuthEnabled": "PasswordAuthEnabled"
                            }
                        }
                    ],
                    "Echoes": [
                        "ipmcget/user_sshpasswordauthentication",
                        ""
                    ]
                }
            ]
        },
        {
            "Uri": "/cli/v1/_/userlist",
            "Interfaces": [
                {
                    "Type": "Get",
                    "Description": "List all user information",
                    "Usage": "ipmcget -d userlist",
                    "RspBody": {
                        "user_table": "${Statements/AccountInfo()}"
                    },
                    "Statements": {
                        "AccountPaths": {
                            "Steps": [
                                {
                                    "Type": "Plugin",
                                    "Formula": "orchestrator.account.get_paths(Context)"
                                }
                            ]
                        },
                        "AccountInfo": {
                            "Input": "${Statements/AccountPaths()}",
                            "Steps": [
                                {
                                    "Type": "Expand",
                                    "Formula": "1"
                                }
                            ]
                        }
                    },
                    "Echoes": [
                        "ipmcget/user_list",
                        ""
                    ]
                }
            ]
        },
        {
            "Uri": "/cli/v1/user/osadminprivilege",
            "Interfaces": [
                {
                    "Type": "Get",
                    "Description": "Get the host side administrator privilege enable status",
                    "Usage": "ipmcget -t user -d osadminprivilege",
                    "RspBody": {
                        "GetOSAdministratorPrivilegeStatus": "${Statements/GetOSAdministratorPrivilegeStatus()}"
                    },
                    "Statements": {
                        "GetOSAdministratorPrivilegeStatus": {
                            "Input": "${ProcessingFlow[1]/Destination/OSAdministratorPrivilegeEnabled}",
                            "Steps": [
                                {
                                    "Type": "Switch",
                                    "Formula": [
                                        {
                                            "Case": true,
                                            "To": "Enabled"
                                        },
                                        {
                                            "Case": false,
                                            "To": "Disabled"
                                        }
                                    ]
                                }
                            ]
                        }
                    },
                    "ProcessingFlow": [
                        {
                            "Type": "Property",
                            "Path": "/bmc/kepler/AccountService",
                            "Interface": "bmc.kepler.AccountService",
                            "Destination": {
                                "OSAdministratorPrivilegeEnabled": "OSAdministratorPrivilegeEnabled"
                            }
                        }
                    ],
                    "Echoes": [
                        "ipmcget/user_osadminprivilege",
                        ""
                    ]
                }
            ]
        },
        {
            "Uri": "/cli/v1/user/usermgmtbyhost",
            "Interfaces": [
                {
                    "Type": "Get",
                    "Description": "Get user management status on the host side",
                    "Usage": "ipmcget -t user -d usermgmtbyhost",
                    "RspBody": {
                        "GetUserMgmtStatus": "${Statements/GetUserMgmtStatus()}"
                    },
                    "Statements": {
                        "GetUserMgmtStatus": {
                            "Input": "${ProcessingFlow[1]/Destination/HostUserManagementEnabled}",
                            "Steps": [
                                {
                                    "Type": "Switch",
                                    "Formula": [
                                        {
                                            "Case": true,
                                            "To": "Enable"
                                        },
                                        {
                                            "Case": false,
                                            "To": "Disable"
                                        }
                                    ]
                                }
                            ]
                        }
                    },
                    "ProcessingFlow": [
                        {
                            "Type": "Property",
                            "Path": "/bmc/kepler/AccountService",
                            "Interface": "bmc.kepler.AccountService",
                            "Destination": {
                                "HostUserManagementEnabled": "HostUserManagementEnabled"
                            }
                        }
                    ],
                    "Echoes": [
                        "ipmcget/user_usermgmtbyhost",
                        ""
                    ]
                }
            ]
        },
        {
            "Uri": "/cli/v1/_/notimeoutstate",
            "Interfaces": [
                {
                    "Type": "Get",
                    "Description": "Get CLI session notimeout state",
                    "Usage": "ipmcget -d notimeoutstate",
                    "RspBody": {
                        "SessionTimeoutMinutes": "${Statements/SessionTimeoutMinutes()}"
                    },
                    "Statements": {
                        "SessionTimeoutMinutes": {
                            "Steps": [
                                {
                                    "Type": "Script",
                                    "Formula": "return ProcessingFlow[1].Destination.SessionTimeout // 60"
                                }
                            ]
                        }
                    },
                    "ProcessingFlow": [
                        {
                            "Type": "Property",
                            "Path": "/bmc/kepler/SessionService/CLI",
                            "Interface": "bmc.kepler.SessionService",
                            "Destination": {
                                "SessionTimeout": "SessionTimeout"
                            }
                        }
                    ],
                    "Echoes": [
                        "ipmcget/user_notimeoutstate",
                        ""
                    ]
                }
            ]
        },
        {
            "Uri": "/cli/v1/_/minimumpasswordage",
            "Interfaces": [
                {
                    "Type": "Get",
                    "Description": "Get minimum password age",
                    "Usage": "ipmcget -d minimumpasswordage",
                    "RspBody": {
                        "MinPasswordValidDays": "${ProcessingFlow[1]/Destination/MinPasswordValidDays}"
                    },
                    "ProcessingFlow": [
                        {
                            "Type": "Property",
                            "Path": "/bmc/kepler/AccountService",
                            "Interface": "bmc.kepler.AccountService",
                            "Destination": {
                                "MinPasswordValidDays": "MinPasswordValidDays"
                            }
                        }
                    ],
                    "Echoes": [
                        "ipmcget/_minimumpasswordage",
                        ""
                    ]
                }
            ]
        },
        {
            "Uri": "/cli/v1/user/passwordrulepolicy",
            "Interfaces": [
                {
                    "Type": "Get",
                    "Description": "Get the password complexity check mode",
                    "Usage": "ipmcget -t user -d passwordrulepolicy -v <AccountType>",
                    "Example": [
                        "ipmcget -t user -d passwordrulepolicy -v 0"
                    ],
                    "ReqBody": {
                        "Type": "object",
                        "Required": true,
                        "Properties": {
                            "AccountType": {
                                "Type": "integer",
                                "Required": true,
                                "Validator": [
                                    {
                                        "Type": "Enum",
                                        "Formula": [
                                            0,
                                            1,
                                            2
                                        ]
                                    }
                                ],
                                "Description": "\n 0              Local Account.\n 1              Snmp Community.\n 2              VNC."
                            }
                        }
                    },
                    "RspBody": {
                        "GetPasswordRulePolicy": "${Statements/GetPasswordRulePolicy()}"
                    },
                    "Statements": {
                        "GetPath": {
                            "Input": "${ReqBody/AccountType}",
                            "Steps": [
                                {
                                    "Type": "Switch",
                                    "Formula": [
                                        {
                                            "Case": 0,
                                            "To": "Local"
                                        },
                                        {
                                            "Case": 1,
                                            "To": "SnmpCommunity"
                                        },
                                        {
                                            "Case": 2,
                                            "To": "VNC"
                                        }
                                    ]
                                },
                                {
                                    "Type": "Script",
                                    "Formula": "return '/bmc/kepler/AccountService/PasswordPolicys/' ..  Input"
                                }
                            ]
                        },
                        "GetPasswordRulePolicy": {
                            "Input": "${ProcessingFlow[1]/Destination/Policy}",
                            "Steps": [
                                {
                                    "Type": "Switch",
                                    "Formula": [
                                        {
                                            "Case": 1,
                                            "To": "Default"
                                        },
                                        {
                                            "Case": 2,
                                            "To": "Customized"
                                        },
                                        {
                                            "Case": 3,
                                            "To": "Hybrid"
                                        }
                                    ]
                                }
                            ]
                        }
                    },
                    "ProcessingFlow": [
                        {
                            "Type": "Property",
                            "Path": "${Statements/GetPath()}",
                            "Interface": "bmc.kepler.AccountService.PasswordPolicy",
                            "Destination": {
                                "Policy": "Policy"
                            }
                        }
                    ],
                    "Echoes": [
                        "ipmcget/user_passwordrulepolicy",
                        ""
                    ]
                }
            ]
        },
        {
            "Uri": "/cli/v1/user/passwordpattern",
            "Interfaces": [
                {
                    "Type": "Get",
                    "Description": "Get the regular expression for checking password complexity",
                    "Usage": "ipmcget -t user -d passwordpattern -v <AccountType>",
                    "Example": [
                        "ipmcget -t user -d passwordpattern -v 0"
                    ],
                    "ReqBody": {
                        "Type": "object",
                        "Required": true,
                        "Properties": {
                            "AccountType": {
                                "Type": "integer",
                                "Required": true,
                                "Validator": [
                                    {
                                        "Type": "Enum",
                                        "Formula": [
                                            0,
                                            1,
                                            2
                                        ]
                                    }
                                ],
                                "Description": "\n 0              Local Account.\n 1              Snmp Community.\n 2              VNC."
                            }
                        }
                    },
                    "RspBody": {
                        "GetPasswordRulePattern": "${ProcessingFlow[1]/Destination/Pattern}"
                    },
                    "Statements": {
                        "GetPath": {
                            "Input": "${ReqBody/AccountType}",
                            "Steps": [
                                {
                                    "Type": "Switch",
                                    "Formula": [
                                        {
                                            "Case": 0,
                                            "To": "Local"
                                        },
                                        {
                                            "Case": 1,
                                            "To": "SnmpCommunity"
                                        },
                                        {
                                            "Case": 2,
                                            "To": "VNC"
                                        }
                                    ]
                                },
                                {
                                    "Type": "Script",
                                    "Formula": "return '/bmc/kepler/AccountService/PasswordPolicys/' ..  Input"
                                }
                            ]
                        }
                    },
                    "ProcessingFlow": [
                        {
                            "Type": "Property",
                            "Path": "${Statements/GetPath()}",
                            "Interface": "bmc.kepler.AccountService.PasswordPolicy",
                            "Destination": {
                                "Pattern": "Pattern"
                            }
                        }
                    ],
                    "Echoes": [
                        "ipmcget/user_passwordpattern",
                        ""
                    ]
                }
            ]
        }
    ]
}