REST API
Representational State Transfer (REST) is an architectural design standard for creating web services.
Since version 2.5.4, Int4 IFTT provides REST API for accessing test scenarios, test cases, and test runs data.
Before using the API, activate the SICF /sap/bc/int4/iftt/v1. This setting can be done in /INT4/IFTT_CUST transaction or directly in SICF.
Data format
IFTT REST API returns data in JSON or XML format. Default format is JSON. To retrieve data in XML format use HTTP request header: key= Accept, value= application/xml
CSRF Protection
All changing requests (PUT, POST, and DELETE) require a CSRF (Cross-Site Request Forgery) token to be included in the request header.
The token can be obtained by sending a GET request with HTTP request header: key= X-CSRF-Token, value= fetch.
The CSRF token is then returned in the same header and can be used for subsequent calls. If a valid token is not present in X-CSRF-Token header on a changing call, the server will respond with an HTTP 403 ("Forbidden") return code.
Int4 IFTT REST API endpoints:
Scenarios (folders) API
Entry point: /sap/bc/int4/iftt/v1/scenarios
Read single scenario by id
GET /sap/bc/int4/iftt/v1/scenarios/{id}
Example request: /sap/bc/int4/iftt/v1/scenarios/825
Example response:
{
"DATA": [
{
"SCNRID": "0000000825",
"PARENTID": "0000000000",
"ATTR1": "",
"ATTR2": "",
"ATTR3": "",
"ATTR4": "",
"ATTR5": "",
"DESCR": "Cloud Platform Integration Tests",
"CREATED_ON": "2020-03-19",
"CREATED_TIME": "12:25:37",
"CREATED_BY": "TEST_USER",
"LANDSCAPE_ID": "DEV"
}
]
}
2. Read list of scenarios
GET /sap/bc/int4/iftt/v1/scenarios
Query options:
Parameter | Description |
---|---|
SCNRID | Filter based on folder ID |
PARENTID | Filter based on parent folder ID |
ATTR1 - ATTR5 | Filter based on attributes (1-5) |
DESCR | Filter based on Description |
q | Filter based on Description (text search) |
$children | true/false (default false) Include subfolders in the result list |
$expandLevels | [1..9999] number of levels to expand the hierarchy ( used if $children=true ) ( default 1) |
Example requests:
GET /sap/bc/int4/iftt/v1/scenarios
return all scenarios
GET /sap/bc/int4/iftt/v1/scenarios?PARENTID=0
return all top-level scenarios
GET /sap/bc/int4/iftt/v1/scenarios?DESCR=Test
return all scenarios with name Test
GET /sap/bc/int4/iftt/v1/scenarios?q=SD
return all scenarios with ‘SD’ in description
GET /sap/bc/int4/iftt/v1/scenarios/825?$children=true&$expandLevels=2
return scenario with ID 825 and all scenarios up to 2 levels below
Example response:
{
"DATA": [
{
"SCNRID": "0000000670",
"PARENTID": "0000000000",
"ATTR1": "",
"ATTR2": "",
"ATTR3": "",
"ATTR4": "",
"ATTR5": "",
"DESCR": "__REGRESSION",
"CREATED_ON": "2020-01-12",
"CREATED_TIME": "11:49:53",
"CREATED_BY": "USER1",
"LANDSCAPE_ID": "DEV"
},
{
"SCNRID": "0000000676",
"PARENTID": "0000000670",
"ATTR1": "",
"ATTR2": "",
"ATTR3": "",
"ATTR4": "",
"ATTR5": "",
"DESCR": "Unit Tests",
"CREATED_ON": "2020-01-29",
"CREATED_TIME": "09:23:47",
"CREATED_BY": "USER2",
"LANDSCAPE_ID": "TEST"
}
]
}
Test case API
Entry point: /sap/bc/int4/iftt/v1/testcases
Read single test case by id
GET /sap/bc/int4/iftt/v1/testcases/{id}
Example request: /sap/bc/int4/iftt/v1/testcases/23019
Example response:
{
"DATA": [
{
"CASEID": "0000023019",
"SCNRID": "0000000712",
"DESCR": "Purchase Order TC#1",
"DOCNUM": "127a8e11-af73-1ed9-afda-c812044c6280",
"OBJDEFID": "IF0101_EDI_SPLIT",
"CREATED_ON": "2020-02-28",
"CREATED_TIME": "17:33:25",
"CREATED_BY": "TEST_USER1",
"IFTYPE": 1,
"PARENT_CASEID": "",
"ORIG_SYSTEM": "SD1CLNT001",
"ORIG_CASEID": "0000003874",
"LANDSCAPE_ID": "TEST",
"ORIG_LANDSCAPE_ID": "TEST",
"LAST_RUN_ID": "12C695B4CC1C1EDB9FBA6EDB6B02258E",
"LAST_STARTED_BY": "TEST_USER2",
"LAST_STARTED_DATE": "2020-03-05",
"LAST_STARTED_TIME": "16:54:36",
"LAST_STATUS": "E",
"LAST_STATUS_TXT": "Failed"
}
]
}
2. Read list of test cases
GET /sap/bc/int4/iftt/v1/testcases
Query options:
Parameter | Description |
---|---|
CASEID | Filter based on test case ID |
SCNRID | Filter based on folder ID |
DESCR | Filter based on test case description |
DOCNUM | Filter based on document number (e.g. PI message ID) |
OBJDEFID | Filter based on automation object |
IFTYPE | Filter based on test type |
PARENT_CASEID | Filter based on parent test case ID |
q | Filter based on Description (text search) |
$includeSubfolders | true/false (default false) Include testcases from subfolders in the result list (used if SCNRID is provided) |
Example requests:
GET /sap/bc/int4/iftt/v1/testcases
return all test cases
GET /sap/bc/int4/iftt/v1/testcases?descr=UAT TC#1
return test case with description ‘UAT TC#1’
GET /sap/bc/int4/iftt/v1/testcases?scnrid=1015&$includeSubfolders=true
return all test cases from folder 1015 and subfolders
GET /sap/bc/int4/iftt/v1/testcases?iftype=20
return all PI Unit Tests ( test type 20)
GET /sap/bc/int4/iftt/v1/testcases?q=sync
return all test cases with ‘sync’ in description
Â
3. Read test case results
GET /sap/bc/int4/iftt/v1/testcases/{id}/results
Example request: /sap/bc/int4/iftt/v1/testcases/23019/results
Â
4. Read test case content (payloads)
GET /sap/bc/int4/iftt/v1/testcases/{id}/contenttypes
Example request: /sap/bc/int4/iftt/v1/testcases/23019/contenttypes
Â
5. Download test case payload
GET /sap/bc/int4/iftt/v1/testcases/{id}/contenttypes/{contentId}
Example request: /sap/bc/int4/iftt/v1/testcases/23019/contenttypes/p00
contentId can be obtained by calling /testcases/{id}/contenttypes endpoint
Â
6. Read test case variables ( user defined values from Cockpit )
GET /sap/bc/int4/iftt/v1/testcases/{id}/variables
Example request: /sap/bc/int4/iftt/v1/testcases/23019/variables
Test results API
Entry point: /sap/bc/int4/iftt/v1/testruns
Read single test run results by id
GET /sap/bc/int4/iftt/v1/testruns/{id}
Example request: /sap/bc/int4/iftt/v1/testruns/127A8E11AF731EDB8FD86C2C365C63CE
Example response:
2. Read list of test results
GET /sap/bc/int4/iftt/v1/testruns
Query options:
Parameter | Description |
---|---|
RUN_ID | Filter based on test run ID |
NAME | Filter based on test run name |
TYPE | Filter based on test run type |
STARTED_BY | Filter based on user ID starting the run |
STARTED_DATE | Filter based on test run date |
STARTED_FROM | Filter based on test run date |
STARTED_TO | Filter based on test run date |
q | Filter based on test run name (text search) |
$includeDetails | true/false (default false) Include detailed test results ( test case level) |
$includeComparison | true/false (default false) Include detailed comparison data ( field level) |
Example requests:
GET /sap/bc/int4/iftt/v1/testruns/12C695B4CC1C1EDB8CDCDE287F4C2547?$includeDetails=true
return test run detailed results
GET /sap/bc/int4/iftt/v1/testruns?q=UAT
return all test runs with ‘UAT’ in description
GET /sap/bc/int4/iftt/v1/testruns?STARTED_DATE=2020-12-01
return all test runs started on 2020-12-01
GET /sap/bc/int4/iftt/v1/testruns?STARTED_FROM=2020-11-25&STARTED_TO=2020-11-30
return all test runs started between 2020-11-25 and 2020-11-30
Test execution API
Entry point: /sap/bc/int4/iftt/v1/testruns
POST /sap/bc/int4/iftt/v1/testruns
( requires valid CSRF token )
Request body (payload) - JSON representation of structure /INT4/IFTT_ST_REST_TEST_RUN_CR:
The use of parameters is the same as for RFC API.
Response: test run result in the same format as returned by Test results API
Example request payloads:
Execute a single test case:
Execute a single test case on a specific landscape:
Execute single test case with parameters
Execute all test cases from a specific folder and all sub-folders:
Execute all test cases from a specific folder and all sub-folders asynchronously. In this case, API returns the Test Run ID immediately. Status and results can be checked using
GET /sap/bc/int4/iftt/v1/testruns/{TestRunID}
Â
© 2017 - 2022 Int4 AG All rights reserved