REST API:staticResource Resource
From AgileApps Support Wiki
Revision as of 07:42, 11 August 2020 by imported>Aeric
Manage Static Resources stored on the platform using the REST API.
Access Permissions
Users that have the Use Development Features permission can use these resources. However, a logged in user can access the APIs listed in the sections Get a List of all Static Resources and Get a Static Resource, regardless of the Use Development Features permission.
Get a List of all Static Resources
- Method
- GET
- URI
- https://{yourDomain}/networking/rest/staticResource
- Response
<platform> <staticResource> <id>567rty789uio</id> <name>JSPsample</name> <resource_file_name>jsp.txt</resource_file_name> <size>613</size> <mime_type>text/plain</mime_type> <date_created>2010-11-12T13:14:15Z</date_created> <created_id type="USER" uri="https://{{domain}}/networking/rest/user/123qwe456rty" displayValue="John Public">123qwe456rty</created_id> <date_modified>2010-11-12T13:14:15Z</date_modified> <modified_id type="USER" uri="https://{{domain}}/networking/rest/user/123qwe456rty" displayValue="John Public">123qwe456rty</modified_id> </staticResource> ... <message> <code>0</code> <description>Success</description> </message> <recordCount>24</recordCount> </platform>
- See also: REST API:Error Codes
Get a Static Resource
- Method
- GET
- URI
- https://{yourDomain}/networking/rest/staticResource/{resourceId}?{query_parameters}
- Query Parameters
- getfile
- If true, download the physical file
- If false, return the XML descriptor only (default)
- For more information, see: Specifying Query Parameters in REST APIs
- Response
<message> <staticResource> <id>567rty789uio</id> <name>JSPsample</name> <resource_file_name>jsp.txt</resource_file_name> <size>613</size> <mime_type>text/plain</mime_type> <date_created>2010-11-12T13:14:15Z</date_created> <created_id type="USER" uri="https://{{domain}}/networking/rest/user/123qwe456rty" displayValue="John Public">123qwe456rty</created_id> <date_modified>2010-11-12T13:14:15Z</date_modified> <modified_id type="USER" uri="https://{{domain}}/networking/rest/user/123qwe456rty" displayValue="John Public">123qwe456rty</modified_id> </staticResource> <code>0</code> <description>Success</description> </message> </platform>
- See also: REST API:Error Codes
Add a Static Resource
- Method
- POST
- URI
- https://{yourDomain}/networking/rest/staticResource
- Request
- A multipart request with file part for the resource and an XML/JSON part with processing information.
- Here's a sample request that loads a properties file.
- Considerations
-
- For a JSON payload, the name would be __json_data__, and the content-type would be application/json.
- For the full program, see the Sample Http Client below.))
Content-Type: multipart/form-data; boundary=.............................103832778631715 --.............................103832778631715 Content-Disposition: form-data; name="__xml_data__"; Content-Type=application/xml; <platform> <record> <name>JSPsample</name> <description>Simple JSP page.</description> </record> </platform> .............................103832778631715 Content-Disposition: form-data; name="file_part"; filename="message.properties" Content-type: text/plain <h1 align="center">Hello World!</h1> .............................103832778631715--
- Learn more: REST API:Multipart Request
- Response
<platform> <message> <code>0</code> <description>Success</description> <id>...</id> // ID of the added resource </message> </platform>
- See also: REST API:Error Codes
Update a Static Resource
- Method
- PUT
- URI
- https://{yourDomain}/networking/rest/staticResource/{resourceId}
- Request
- The format of the request is identical to that shown in Add a Static Resource.
- Response
<platform> <message> <code>0</code> <description>Success</description> <id>...</id> // ID of the updated resource </message> </platform>
- See also: REST API:Error Codes
Delete a Static Resource
- Method
- DELETE
- URI
- https://{yourDomain}/networking/rest/staticResource/{recordId}
- Response
<platform> <message> <code>0</code> <description>Success</description> </message> </platform>
- See also: REST API:Error Codes
Fields
Name Type Attribute Required During Add Description Additional Information id String Read Only Record Id name String Read Only Static Resource name description String Editable on Add/Update Description of content document_id String Read Only resource_file_name String Read Only size Integer Read Only mime_type String Read Only date_created Data Read Only created_id Lookup Read Only date_modified Date Read Only modified_id Lookup Read Only
Sample Http Client to Upload a Static Resource
The StaticResourceUploadClient demo program extends the REST API:BaseClient class to upload a static resource. With a couple of modifications, it can be used to do updates or load arbitrary file types.
Tip: The REST_samples.zip file contains BaseClient, the utility class it uses, and extensions like this one that demonstrate REST operations.
package demo.rest; import java.io.File; import javax.ws.rs.core.MediaType; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.PutMethod; import org.apache.commons.httpclient.methods.multipart.FilePart; import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity; import org.apache.commons.httpclient.methods.multipart.Part; import org.apache.commons.httpclient.methods.multipart.StringPart; /** * Load a static resource file. * Load a static resource file. This program extends demo.rest.BaseClient.java * which in turn makes use of demo.rest.BaseUtil.java. * <p> * Note:<br/> * This class uses the Apache commons HttpClient. * The Apache wink RestClient is generally more straightforward, * but multipart requests currently do not work when made using that client. */ public class StaticResourceUploadClient extends BaseClient { public void execute(String cookieString) { String url = baseUrl + "/staticResource"; //Use this for an update: // String url = baseUrl + "/staticResource/{id}"; // <--[1] String xml = "<platform>" + "<staticResource>" + "<name>upload_test</name>" + "<description>Test an API-driven upload</description>" + "</staticResource>" + "</platform>"; try { // File part File file = new File("C:/testfiles/test.txt"); FilePart fp = new FilePart("file_part", file); fp.setContentType(MediaType.TEXT_PLAIN); // <--[3] //Use BaseUtil.mediaType() to set type based on file extension // XML part // For JSON, use __json_data__ and APPLICATION_JSON StringPart sp = new StringPart("__xml_data__", xml); sp.setContentType(MediaType.APPLICATION_XML); // Multipart wrapper final Part[] part = {fp, sp}; // Create the request HttpClient httpClient = new HttpClient(); PostMethod httpMethod = new PostMethod(url); // <--[2] // Use PutMethod for an update // Set the response type (xml) and the session cookie. //(Had we logged in with HttpClient, the cookie would be handled // automatically. But since we let BaseClient do the log in and log out, // we need to tack on the cookie string here.) httpMethod.addRequestHeader("Cookie", cookieString); httpMethod.addRequestHeader("Accept", MediaType.APPLICATION_XML); httpMethod.setRequestEntity( new MultipartRequestEntity(part, httpMethod.getParams()) ); // Check status & echo response int status = httpClient.executeMethod(httpMethod); String responseXml = httpMethod.getResponseBodyAsString(); if ((status == 200) || (status == 201)) { // 200=Successful GET, PUT, or DELETE. 201=Successful POST. echoResponse(httpMethod.getResponseBodyAsStream()); } else { echoStatus(status, responseXml); } } catch (ClientWebException webException) { echoResponse(webException); } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } } public static void main(String[] args) { StaticResourceUploadClient client = new StaticResourceUploadClient(); String cookieString = client.login(); client.execute(cookieString); client.logout(); } }
- Notes:
- [1,2] - Change these lines to update an existing resource
- [3] - Use the BaseUtil mediaType() method to automatically set the content type appropriate for the file.