Planning Analytics

 View Only
  • 1.  Trouble accessing async object from RestAPI Prefer: respond-async

    Posted 3 days ago
    Edited by William Smith 3 days ago

    Hi all,

    I'm having trouble interacting with the TM1 rest API in the following way. I'm hoping maybe there's some obvious that I'm missing :)

    Kick-off TI process

    public async static Task<string> RunProcessWithPolingAsync(TM1SharpConfig tm1, string processName, Dictionary<string, string>? parameters = null)
    {
    	var client = tm1.GetTM1RestClient();
    
    	client.DefaultRequestHeaders.Add("Prefer", "respond-async");
    
    	var jsonBody = new StringBuilder();
    
    	if (parameters != null)
    	{
    		jsonBody.Append("{\"Parameters\":[");
    
    		parameters.AsEnumerable().ToList().ForEach(x =>
    		{
    			jsonBody.Append("{\"Name\":\"" + x.Key + "\", \"Value\":\"" + x.Value + "\"}");
    		});
    
    		jsonBody.Append("]}");
    	}
    
    	var jsonPayload = new StringContent(jsonBody.ToString(), new MediaTypeWithQualityHeaderValue("application/json"));
    
    	var response = await client.PostAsync(tm1.ServerHTTPSAddress + @"/api/v1/Processes('" + processName + "')/tm1.ExecuteWithReturn", jsonPayload);
    
    	var asyncId = ParseAsyncId(response.Headers.Where(x => x.Key.Equals("Location")).First().Value.First());
    
    	return await GetAsyncStatus(tm1, asyncId);
    }

    Returns location header, parse out ID: 

    ../_async('OLTJUN4E4XFBAoV1fiSrQsmK9tn1U')

    Call to check status always 404s. Doesn't matter how long I wait or how many times I check.

    https://server:port/api/v1/_async('OLTJUN4E4XFBAoV1fiSrQsmK9tn1U')
    Status Code: 404
    Content: {"error":{"code":"278","message":"Resource '/api/v1/_async('OLTJUN4E4XFBAoV1fiSrQsmK9tn1U')' not found"}}



    ------------------------------
    William Smith
    ------------------------------



  • 2.  RE: Trouble accessing async object from RestAPI Prefer: respond-async

    Posted 3 days ago

    Reference: https://community.ibm.com/community/user/businessanalytics/discussion/executewithreturn-asynchronously

    User Robert Gordy advised that he was able to resolve the issue with 404 / not found, but I don't see specific steps taken :(



    ------------------------------
    William Smith
    ------------------------------



  • 3.  RE: Trouble accessing async object from RestAPI Prefer: respond-async

    Posted 3 days ago

    Solution: Make sure you're attempting to access the async object / endpoint from the same http session that you started the TI process on. Trying to access it from a different http session will always 404.



    ------------------------------
    William Smith
    ------------------------------



  • 4.  RE: Trouble accessing async object from RestAPI Prefer: respond-async

    Posted 3 days ago

    See below for implementation details:

    https://github.com/WilliamSmithEdward/AndromedaTM1Sharp/blob/master/AndromedaTM1Sharp/TM1RestAPI_AsyncStatus.cs

    https://github.com/WilliamSmithEdward/AndromedaTM1Sharp/blob/master/AndromedaTM1Sharp/TM1RestAPI_RunProcess.cs



    ------------------------------
    William Smith
    ------------------------------