Servicenow – Magic xpi

Goal : Get, Create Incident with Magic xpi using servicenow REST API

Prerequisites :

1/ Create your servicenow instance (https://developer.servicenow.com/dev.do) and verify that your user has admin role in other to be able to access Application registry on your instance

2/ Create an Application OAuth

Log in to your servicenow instance with your admin user and search for OAuth

Create a new OAuth Application

Give a name and leave Client secret blank (it will be generated automatically) and click Save (right clic on top grey area)

After saving, copy the Name, ClientID and ClientSecret

3/ Create a dedicated user to access the API

Search for users and access the users list

Create a user magicxpi and grant him an admin role( to be able to access everything , you can of course adjust the roles) and Tic the check Box « Web service access only »

(the user will be an API user and not a UI user)

  • Save the new user information (right clic on grey top area)
  • Click Set Password
  • Generate Password
  • Copy the password
  • click Save Password

4/ Check with REST API explorer that it’s working

Choose Incident tablename and click Send, you should receveive 200 Http status code

5/ Check with Postman

  • Check that you can get the token

Do a POST on this URL (https://<yourinstance>.service-now.com/oauth_token.do)

Set the body with all the relevant information in x-www-form-urlencoded

  • Check that you can retrieve the incident List

Create a new request and do a GET on https://<yourinstance>.com/api/now/v2/table/incident?sysparm_limit=10

add in the Header : Authorization with value Bearer <access_token>

6/ Go back to API Explorer in your instance and Export the yaml file from servicenow that corresponds to Table API

Modify the yaml file. Add under parameters (use https://editor.swagger.io)

name: « Authorization »
in: header
required: true
schema: {type: string}

Remove / and the end of the url (servers)

Save the new yaml file.

7/ Open your magic xpi project and Create a REST Client resource for the Access Token

Servicenow token URL is : https://<yourinstance>.service-now.com/oauth_token.do

8/ Create another REST Client resource to access the servicenow TABLE_API (RESTServicenowTable)

Load the previous yaml file

Click on Paths, you should discover all the available Paths

For the first Path, you should have Keywork « Authorization » in the header tab control

(*) if you want to have this keyword for all paths, you should add the keyword in the yaml file (step 6)

9/ Create a new flow

Create 2 flow variables (F.BodyToken (Blob), F.Token (alpha unlimited))

Update F.BodyToken with the body information

10/ Drag & Drop REST Client connector

Link the step to the Token Resource

Click OK and set DataBlob to F.BodyToken

11/ Get the access_token

use a flow data and update the F.Token with the expression ‘Bearer ‘&StrToken (C.UserBlob,4,' »‘)

(*) you can use a datamapper to parse the json

12/ Drag & Drop a new REST Client connector

Link the step to the « RESTServicenowTable »

Choose a GET on path : /api/now/table/{tableName}

You can set the parameters like below

sysparm_query : description LIKElaptop (to filter with « like » clause on description)

sysparm_fields : ‘number,resolved_by,opened_by,description’ (to retrieve only these fields)

sysparm_limit : ’20’ (to limit the result to 20 occurences)

Authorization : trim(F.token) (to pass the autorization header)

(*) for the other parameters, set them to null

13/ Execute the flow in debug mode

You should get a 200 HTTP Status code with OK

14/ Create an Incident

create a Flow variable (F.BodyIncident blob) and update this variable with the requested json

{« description »: »test3″, »short_description »: « this is a short description3 »}

15/ Drag & Drop a REST Client connector

Do a POST on https://<yourinstance>.service-now.com/api/now/v2/table/incident

set the DataBlob to F.BodyIncident and tableName to Incident

16/ Execute the flow in debug mode

you should receive HTTP Status Code 201

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Copy link
URL has been copied successfully!
Follow by Email
YouTube
LinkedIn
LinkedIn
Share
Retour en haut