returns the Object layout (from which I can extract Measure data).
This particular Object though contains 'Alternative Dimensions'.
I would like to know - How can I query the Object layout by a given 'alternate' dimension (in my case, my base dimension is City, and my alternate dimension is State, I would like to query GetLayout by 'state' and not 'city')?
I think the way the client solves this is by having a "container hypercube" in a property named "qLayoutExclude" under the hypercube for the relevant object. The purpose of this hypercube is simply to store the available alternative dimensions. To activate a certain alternative, the client copies the dimension from the "container hypercube" to the real hypercube by modifying the properties of the object.
So in reality, there is no such thing as an "Alternative dimension" as far as the engine API goes. The way the client implements the functionality is to do on-the-fly modifications to the hypercube even though you're not in edit mode. This is very similar to what the client does when you for instance reorder the columns of a table. After doing so, next time you go to edit mode and click on such a table, you will get a message stating that the object has changed and whether you would like to keep those changes or not.
In the case of choosing alternative dimensions, this is the type of messages you will see in the websocket traffic when you choose a dimension for a bar chart: