I've been working with the Restful api for a few weeks now and have been able to figure out most of what I need to automate testing of our reports. However, one task that I have not been able to figure out is how to refresh a document that contains both a context and two prompts for dates.
Here is what I have tried, and what the API responds with.
1) I queried the API for this document's parameters using the following call after logging in -
headers = {:accept=>'application/xml', :content_type=>'application/xml', :x_sap_logontoken=>@token}
url = "http://our.url.net:6405/biprws/raylight/v1/documents/12345/parameters"
RestClient.get(url, headers)
The response from the API is:
<parameters>
<parameter dpId="DP0" type="context" optional="false">
<id>0</id>
<technicalName>cQuery 1</technicalName>
<name>Select a context</name>
<answer type="Text" constrained="true">
<info cardinality="Single">
<lov partial="false">
<values>
<value id="CTX_1">LOAN</value>
<value id="CTX_9">LOAN_APPLICATION</value>
</values>
</lov>
<values>
<value id="CTX_1">LOAN</value>
<value id="CTX_9">LOAN_APPLICATION</value>
</values>
<previous>
<value id="CTX_9">LOAN_APPLICATION</value>
</previous>
</info>
<values>
<value id="CTX_9">LOAN_APPLICATION</value>
</values>
</answer>
</parameter>
</parameters>
2) This tells me I need to supply a context, so I then replace my RestClient.get call with a RestClient.put call with the following payload:
<parameters>
<parameter>
<id>0</id>
<answer>
<values>
<value id=\"CTX_9\"/>
</values>
</answer>
</parameter>
</parameters>
3) This satisfies the context portion of the refresh. The API replies with the following response, telling me I need to answer two prompts -
<parameters>
<parameter dpId=\"DP0\" type=\"prompt\" optional=\"false\">
<id>1</id>
<technicalName>psEnter value(s) for Start Date of Application Received Date</technicalName>
<name>Enter value(s) for Start Date of Application Received Date</name>
<answer type=\"DateTime\" constrained=\"false\">\
<info cardinality=\"Single\"/>
</answer>
</parameter>
<parameter dpId=\"DP0\" type=\"prompt\" optional=\"false\">
<id>2</id>
<technicalName>psEnter value for End Date of Application Received Date</technicalName>
<name>Enter value for End Date of Application Received Date</name>\
<answer type=\"DateTime\" constrained=\"false\">
<info cardinality=\"Single\"/>
</answer>
</parameter>
</parameters>
4) Here is where I am having problems. I have tried all kinds of permutations of the below payload/response body. All I ever get from the API is a 400 - BadResponse error.
<parameters>
<parameter>
<id>0</id>
<answer>
<values>
<value id=\"CTX_9\"/>
</values>
</answer>
</parameter>
</parameters>
<parameters>
<parameter type=\"prompt\">
<id > 1 </ id>
<answer type=\"DateTime\">
<values>
<value>2012-06-11T09:50:54.000-04:00</value>
</values>
</answer>
</parameter>
<parameter type=\"prompt\">
<id > 2 </ id>
<answer type=\"DateTime\">
<values>
<value>2014-07-11T09:50:54.967-04:00</value>
</values>
</answer>
</parameter>
</parameters>
I am not very good with XML and the terminology around it, and I haven't received much training around using the Restful API other than the SDK documentation. I have a feeling there is something very basic that Im missing here. What is the correct XML needed in the response body to properly refresh the document?