{
    "Resources": [
        {
            "Uri": "/cli/v1/service",
            "Interfaces": [
                {
                    "Type": "Get",
                    "Description": "Get service information"
                }
            ]
        },
        {
            "Uri": "/cli/v1/service/list",
            "Interfaces": [
                {
                    "Type": "Get",
                    "Description": "List all service information",
                    "Usage": "ipmcget -t service -d list",
                    "RspBody": {
                        "service_table": "${Statements/service_table()}",
                        "IsMultihost": "${ProcessingFlow[2]/Destination/HostType}"
                    },
                    "Statements": {
                        "service_table": {
                            "Input": "${ProcessingFlow[1]/Destination/service_table}",
                            "Steps": [
                                {
                                    "Type": "Expand"
                                }
                            ]
                        }
                    },
                    "ProcessingFlow": [
                        {
                            "Type": "List",
                            "Path": "/bmc/kepler/Managers/1/NetworkProtocol",
                            "Destination": {
                                "Members": "service_table"
                            }
                        },
                        {
                            "Type": "Property",
                            "Path": "/bmc/kepler/Managers/1/Multihost",
                            "Interface": "bmc.kepler.Managers.Multihost",
                            "Destination": {
                                "HostType": "HostType"
                            }
                        }
                    ],
                    "Echoes": [
                        "ipmcget/service_list",
                        ""
                    ]
                }
            ]
        },
        {
            "Uri": "/bmc/kepler/Managers/1/NetworkProtocol/:id",
            "Interfaces": [
                {
                    "Type": "Get",
                    "RspBody": {
                        "Name": "${Uri/id}",
                        "Enabled": "${Statements/GetEnabled()}",
                        "PortCount": "${Statements/GetPortCount()}",
                        "DefaultPort": "${Statements/GetDefaultPort()}",
                        "Port": "${Statements/GetPort()}",
                        "DefaultSparePort": "${Statements/GetDefaultSparePort()}",
                        "SparePort": "${Statements/GetSparePort()}"
                    },
                    "Statements": {
                        "GetMultiSystemServiceType": {
                            "Input": "${Uri/id}",
                            "Steps": [
                                {
                                    "Type": "Switch",
                                    "Formula": [
                                        {
                                            "Case": "KVMIP",
                                            "To": true
                                        },
                                        {
                                            "Case": "VirtualMedia",
                                            "To": true
                                        },
                                        {
                                            "To": false
                                        }
                                    ]
                                }
                            ]
                        },
                        "GetEnabled": {
                            "Input": "${Uri/id}",
                            "Steps": [
                                {
                                    "Type": "Switch",
                                    "Formula": [
                                        {
                                            "Case": "KVMIP",
                                            "To": "${ProcessingFlow[2]/Destination/Enabled}"
                                        },
                                        {
                                            "Case": "VirtualMedia",
                                            "To": "${ProcessingFlow[2]/Destination/Enabled}"
                                        },
                                        {
                                            "To": "${ProcessingFlow[1]/Destination/Enabled}"
                                        }
                                    ]
                                }
                            ]
                        },
                        "GetPortCount": {
                            "Input": "${Uri/id}",
                            "Steps": [
                                {
                                    "Type": "Switch",
                                    "Formula": [
                                        {
                                            "Case": "KVMIP",
                                            "To": "${ProcessingFlow[2]/Destination/PortCount}"
                                        },
                                        {
                                            "Case": "VirtualMedia",
                                            "To": "${ProcessingFlow[2]/Destination/PortCount}"
                                        },
                                        {
                                            "To": "${ProcessingFlow[1]/Destination/PortCount}"
                                        }
                                    ]
                                }
                            ]
                        },
                        "GetDefaultPort": {
                            "Input": "${Uri/id}",
                            "Steps": [
                                {
                                    "Type": "Switch",
                                    "Formula": [
                                        {
                                            "Case": "KVMIP",
                                            "To": "${ProcessingFlow[2]/Destination/DefaultPort}"
                                        },
                                        {
                                            "Case": "VirtualMedia",
                                            "To": "${ProcessingFlow[2]/Destination/DefaultPort}"
                                        },
                                        {
                                            "To": "${ProcessingFlow[1]/Destination/DefaultPort}"
                                        }
                                    ]
                                }
                            ]
                        },
                        "GetPort": {
                            "Input": "${Uri/id}",
                            "Steps": [
                                {
                                    "Type": "Switch",
                                    "Formula": [
                                        {
                                            "Case": "KVMIP",
                                            "To": "${ProcessingFlow[2]/Destination/Port}"
                                        },
                                        {
                                            "Case": "VirtualMedia",
                                            "To": "${ProcessingFlow[2]/Destination/Port}"
                                        },
                                        {
                                            "To": "${ProcessingFlow[1]/Destination/Port}"
                                        }
                                    ]
                                }
                            ]
                        },
                        "GetDefaultSparePort": {
                            "Input": "${Uri/id}",
                            "Steps": [
                                {
                                    "Type": "Switch",
                                    "Formula": [
                                        {
                                            "Case": "KVMIP",
                                            "To": "${ProcessingFlow[2]/Destination/DefaultSparePort}"
                                        },
                                        {
                                            "Case": "VirtualMedia",
                                            "To": "${ProcessingFlow[2]/Destination/DefaultSparePort}"
                                        },
                                        {
                                            "To": "${ProcessingFlow[1]/Destination/DefaultSparePort}"
                                        }
                                    ]
                                }
                            ]
                        },
                        "GetSparePort": {
                            "Input": "${Uri/id}",
                            "Steps": [
                                {
                                    "Type": "Switch",
                                    "Formula": [
                                        {
                                            "Case": "KVMIP",
                                            "To": "${ProcessingFlow[2]/Destination/SparePort}"
                                        },
                                        {
                                            "Case": "VirtualMedia",
                                            "To": "${ProcessingFlow[2]/Destination/SparePort}"
                                        },
                                        {
                                            "To": "${ProcessingFlow[1]/Destination/SparePort}"
                                        }
                                    ]
                                }
                            ]
                        }
                    },
                    "ProcessingFlow": [
                        {
                            "Type": "Property",
                            "Path": "/bmc/kepler/Managers/1/NetworkProtocol/${Uri/id}",
                            "Interface": "bmc.kepler.Managers.NetworkProtocol.PortConfig",
                            "Destination": {
                                "Enabled": "Enabled",
                                "PortCount": "PortCount",
                                "DefaultPort": "DefaultPort",
                                "Port": "Port",
                                "DefaultSparePort": "DefaultSparePort",
                                "SparePort": "SparePort"
                            },
                            "CallIf": {
                                "${Statements/GetMultiSystemServiceType()}": false
                            }
                        },
                        {
                            "Type": "Property",
                            "Path": "/bmc/kepler/Managers/1/NetworkProtocol/${Uri/id}/1",
                            "Interface": "bmc.kepler.Managers.NetworkProtocol.PortConfig",
                            "Destination": {
                                "Enabled": "Enabled",
                                "PortCount": "PortCount",
                                "DefaultPort": "DefaultPort",
                                "Port": "Port",
                                "DefaultSparePort": "DefaultSparePort",
                                "SparePort": "SparePort"
                            },
                            "CallIf": {
                                "${Statements/GetMultiSystemServiceType()}": true
                            }
                        }
                    ]
                }
            ]
        }
    ]
}