You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Here you can download a file with example configurations for the scripted REST API: [SOC] - Scripted REST API. Import the pack to your instance and try the following example settings. 

Example 1. Get a system property value without authorization


To verify the example: 

  1. Go to the main page of your instance.
  2. Add to the URL bar the following value: /v1/api/c_simple/api_module_path/api_action_path?param_1=value_1.
  3. Copy the result URL.
  4. Go to the URL in Incognito mode.

As a result, you receive a response from the API action /record/sys_api_action/164054047017513732 with a system property value simple.auth_page.support_phone

Example 2. Create a task record with an attachment


To verify the example: 

  1. Open the record /record/sys_script/164053985417710860 .
  2. Click Run to run the script.

As a result, you receive a response from the API action /record/sys_api_action/161831494014244852.

On the bottom of the script form, there is a link to the created task record. See the screenshot below:

The record contains two attachments with base 64 files transferred in lines 14-15 of the script in Step 1. See the screenshot below:

Create Attachment with Scripted REST API


You can create attachments using Scripted REST API. To pass file content, use the base64 format. To get a file content in base64 format, use the readBase64(attachmentId) method. 

To send an attachment with the Scripted Rest API, do the following:
1) Create an API action to operate POST resquests with the attached content. For more information see the Configuring Scripted REST API article.

Script example for an API action
(function (request, response) {
  const data = request.getBody();
  const TABLE_ID = data.table_id;
  const RECORD_ID = data.record_id;
  const RECORD_DOC_ID = ss.getDocIdByIds(TABLE_ID, RECORD_ID);
  const attachments = data.attachments;
  const simpleAttach = new SimpleAttachment();
  let createdAttachmentIds = [];
  Object.keys(attachments).forEach(attachment => {
    createdAttachmentIds.push(simpleAttach.writeBase64(RECORD_DOC_ID, ...attachments[attachment]));
  });
  response.setBody(createdAttachmentIds);

}) (SimpleApiRequest, SimpleApiResponse)


2) Create a script to send the requests.

A script example to send a POST request
const API_ACTION_URL = ''; // https://docs.simpleone.ru/display/SAPI/Configuring+Scripted+REST+API#ConfiguringScriptedRESTAPI-ScriptedRESTAPIURIs

const payloadRequest = sws.restRequestV1();
payloadRequest.setRequestUrl(API_ACTION_URL);
payloadRequest.setRequestMethod('POST');
payloadRequest.setRequestHeader('Content-type', 'application/json');
const payload = {
  table_id: '155931135900000084', //  user table ID
  record_id: '155931135900000001', //  admin record ID
 record  attachments: {
    1: ['file_example.gif', 'R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=', 'image/gif']
  }
}

payloadRequest.setRequestBody(JSON.stringify(payload));
const response = payloadRequest.execute().getBody();
print('Response: ' + response);

Features and recommendations


  1. API action script is executed regardless of ACL.
  2. Authorization of requests to the Scripted REST API is not possible with Basic Auth. To authorize, use the solution described above in the Authorization section.
  3. A reply to the API action containing a key error with a value Undefined index: SimpleApiResponse means the script API action contains an error.
  4. To avoid data corruption, convert JSON data type into type String using a JSON.stringify() method.

  5. If the execution time of the API action script exceeds the Timeout, move a part of the script to the Event Script and call a system event with an API action script.

  • No labels