Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

send multiple attachments via REST Outbound API

tanz
Tera Expert

Hi,

I have created a BR on after insert on Incident table to send the attachments. I am facing no issues in sending single attachment. However when I try to send the multiple attachments during the creation of Incident , it does not send. please can you help me with the solution and the scripting part.

if (current.operation() == 'insert') {
            var t = [];
            var base64Data = [];
            var attach = new GlideRecord('sys_attachment');
            attach.addQuery('table_name', 'incident');
            attach.addQuery('table_sys_id', current.sys_id);
            attach.query();
            while (attach.next()) {
                t =attach.file_name.toString();
                var sa = new GlideSysAttachment();
                var binData = sa.getBytes(attach);
                base64Data = GlideStringUtil.base64Encode(binData);
                gs.info('Sap rise attachment ' + t +" "+ base64Data +" "+attach.sys_id);
                r.setStringParameterNoEscape('filename', t);               
                r.setStringParameterNoEscape('data', base64Data);
                //r.setRequestBodyFromAttachment(attach.sys_id);
            }
            }

I am trying to create a payload something like this for multiple attachments:

{

"attachments": [

 

    {

 

      "attachment": {

 

        "filename": "testpayload.txt",

 

        "file": "dGVzdA=="

 

      }

 

    },

 

    {

 

      "attachment": {

 

        "filename": "testpayload2.txt",

 

        "file": "dGVzdA=="

 

      }

 

    }

 

  ]

}

3 REPLIES 3

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

you will have to form the json object first and then use REST Message

Can you share complete script?

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

Hi Ankur,

PFB my script

try{

 var r = new sn_ws.RESTMessageV2('Integration', 'CreateTkt');
            r.setRequestHeader("authorizationToken", "Bearer " + token);//replace token will the value
            r.setRequestHeader("Content-Type", "application/JSON");
            r.setRequestHeader("Accept", "application/JSON");


            if (current.operation() == 'insert') {
            var t = [];
            var base64Data = [];
            var attach = new GlideRecord('sys_attachment');
            attach.addQuery('table_name', 'incident');
            attach.addQuery('table_sys_id', current.sys_id);
            attach.query();
            while (attach.next()) {
                t =attach.file_name.toString();
                var sa = new GlideSysAttachment();
                var binData = sa.getBytes(attach);
                base64Data = GlideStringUtil.base64Encode(binData);
                gs.info('Sap rise attachment ' + t +" "+ base64Data +" "+attach.sys_id);
                r.setStringParameterNoEscape('filename', t);               
                r.setStringParameterNoEscape('data', base64Data);
                //r.setRequestBodyFromAttachment(attach.sys_id);
            }
            } 

            var response = r.execute();
            var responseBody = response.getBody();
            var httpStatus = response.getStatusCode();
            gs.log("Response Body : " + responseBody + "  Status Code : " + httpStatus);
            }
         catch (ex) {
            var message = ex.message;
            gs.log(" in Catch loop " + message);
        }

 Hi Ankur,

PFB my complete script:

try {
            var r = new sn_ws.RESTMessageV2('Integration', 'CreateUpdateTkt');
            r.setRequestHeader("authorizationToken", "Bearer " + token);// replace token with value
            r.setRequestHeader("Content-Type", "application/JSON");
            r.setRequestHeader("Accept", "application/JSON");

 if (current.operation() == 'insert') {
            var t = [];
            var base64Data = [];
            var attach = new GlideRecord('sys_attachment');
            attach.addQuery('table_name', 'incident');
            attach.addQuery('table_sys_id', current.sys_id);
            attach.query();
            while (attach.next()) {
                t =attach.file_name.toString();
                var sa = new GlideSysAttachment();
                var binData = sa.getBytes(attach);
                base64Data = GlideStringUtil.base64Encode(binData);
                gs.info('attachment ' + t +" "+ base64Data +" "+attach.sys_id);
                r.setStringParameterNoEscape('filename', t);               
                r.setStringParameterNoEscape('data', base64Data);
                //r.setRequestBodyFromAttachment(attach.sys_id);
            }
            }

           var response = r.execute();
            var responseBody = response.getBody();
            var httpStatus = response.getStatusCode();
            gs.log("Response Body : " + responseBody + " Status Code : " + httpStatus);
            }
         catch (ex) {
            var message = ex.message;
            gs.log("in Catch loop " + message);
        }