Search code examples
rally

How to obtain a list of workspaces using Rally REST .NET


I'm trying to obtain a list of available workspaces for a given Rally subscription, but it doesn't seem like the actual workspaces are being returned in the query.

Here's what I have so far:

        RallyRestApi restApi = new RallyRestApi("username", "password");
        List<string> list = new List<string>();

        Request request = new Request("Subscriptions");
        request.Fetch = new List<string>(){
            "Name",
            "SubscriptionID",
            "Workspaces"
        };

        QueryResult queryResult = restApi.Query(request);

        foreach (var result in queryResult.Results)
        {
            var workspaces = result["Workspaces"];
        }

I can't seem to tease the workspace references or names out of that QueryResult. Am I missing an extra step/query?


Solution

  • v2.0 removed the ability to return child collections in the same response for performance reasons. Now fetching a collection will return an object with the count and the url from which to get the collection data.

    Example: /subscription/12345/workspaces

    The recently released 2.0 version of the .NET Rest Toolkit supports WSAPI v2.0 and collection querying.

    RallyRestApi restApi = new RallyRestApi("username", "password");
    
    //get the current subscription
    DynamicJsonObject sub = restApi.getSubscription("Workspaces");
    
    //query the Workspaces collection
    QueryResult queryResult = restApi.Query(new Request(sub["Workspaces"])); 
    
    foreach (var result in queryResult.Results)
    {
        var workspaceRef = result["_ref"];
        var workspaceName = result["Name"];
    }