Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Consume multiple records through one rest Api Call

Kristina2
Tera Contributor

Hey guys,

I am exploring Batch API 

My requirement is , an internal team will post 10000 of Rest Calls per day. 

Each Rest Call has around 300 records that has to be inserted to target table . So i cannot use Import Set API , as Import Set API only inserts/updates one record per call . 

So I was exploring Scripted Rest API to parse the JSON and then insert to the Import Set table to transform. 

There are some reference fields i have to populate and also create a Parent Child Relationships , so i would have to have a transform to build logic . 

I also wanted to know about the Batch API . 

Lets assume , i provide the Batch API end point to a different team, if they are going to post Rest Calls with multiple records , how is the data being transformed and how can i add logic before i transform data to Target table . 

Is Batch API is an upgraded version of Table API with batches of Records ?? 

 

 

Thank You 

 

@Chuck Tomasi  @Ankur Bawiskar 

1 ACCEPTED SOLUTION

Hi,

you need to send array of json objects

the key would be the column name in import set

Example:

field1 and field2 are the column names of the import set staging table

[

{

"field1":"value1",

"field2":"value2"

},

{

"field1":"value3",

"field2":"value3"

}

]

Regards
Ankur

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

View solution in original post

20 REPLIES 20

Hi Ankur , 

I guess the request body is good

Records are getting created , no issues there , mapping doesn't work

[
{
"fqdn": "ce-romegacl00w.cpe.ga.atlanta.comcast.net",
"location": "Philly Depot",
"platform": "Cisco ASR"
 
},
{
"fqdn": "ce-romegacl00w.cpe.ga.atlanta.comcast.net",
"location": "Philly Depot",
"platform": "Cisco ASR",
"parent": false
 
}
]
 
 
I just wanted to know , if i did the right mapping , when i am creating the records in staging table. 
 
Records are getting created , but null values. 
 
 
How do i do my mapping here 
 
 
 var importSetRowGr = new GlideRecord(this.importSetTable);
        importSetRowGr.initialize();
        importSetRowGr.setValue('sys_import_set', this.importSetSysID);
        importSetRowGr.setValue('sys_import_row', this.importSetRowCounter);
        importSetRowGr.setValue('sys_import_state', 'pending');
        /*@ARG: Map all the columns in the Request Body to the Import set Columns  */
        for (var jsonColumn in jsonRow) {
            try {
                importSetRowGr[jsonColumn] = jsonRow[jsonColumn];
            } catch (e) {
                gs.log('Unable to import the column ' + jsonColumn + ' Error:' + e.getMessage());
            }
        }
for (var jsonColumn in jsonRow) {
            try {
                importSetRowGr[jsonColumn] = jsonRow[jsonColumn];

Hi,

I believe your staging tables will be having columns starting with u_

so update the body as this

[
{
"u_fqdn": "ce-romegacl00w.cpe.ga.atlanta.comcast.net",
"u_location": "Philly Depot",
"u_platform": "Cisco ASR"
 
},
{
"u_fqdn": "ce-romegacl00w.cpe.ga.atlanta.comcast.net",
"u_location": "Philly Depot",
"u_platform": "Cisco ASR",
"u_parent": false
 
}
]

Regards
Ankur

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

One last question , how do i add a response body here ? Still i am getting null response , because i dont see a response body code in here . 

Should i add in Rest Api Resource or the script include ?

Hi,

if you wish to send response from scripted rest API then it should be in the script section of scripted rest api

Regards
Ankur

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

@Kristina 

Hope you are doing good.

Did my reply answer your question?

If so, please mark appropriate response as correct & helpful so that the question will appear as resolved for others who may have a similar question in the future.

If not, please let us know if you need some more assistance.

Thanks!
Ankur

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