Remote User API

Portal Server Remote User API Specification

Generating an Authentication Token

To perform a Remote User API call, you must first sign in into the portal and generate an “API Authentication Token”. When generating the token you can enter a purpose (only used as information) and also restrict the remote IP addresses for which the token is valid.

“alt attribute”

“alt attribute”

API Functions

The API supports the following functions (so-called “actions”):

Common Functions:

  • getUserAccountInfo (Get information about the own user account)
  • getPricePlanInfo (Get information about the current price plan)

Projects, Resource Sets and Files Functions:

  • getProjectTree (Get the project tree inclusive all resource sets and all file information)
  • createProject (Create a new project)
  • deleteProject (Delete a project)
  • getResourceSetsOfProject (Get all resource sets of a project, inclusive all file information)
  • createResourceSet (Create a new resource set)
  • deleteResourceSet (Delete a resource set)
  • getFilesInfoOfResourceSet (Get all files information of a resource set)
  • createFile (Create or overwrite a file)
  • getFile (Get the content of a file and the file information)
  • deleteFile (Delete a file)

Measuring Agents Functions:

  • getMeasuringAgents (Get all defined measuring agents)
  • getMinRequiredMeasuringAgentVersion (Get the minimum required measuring agent version)
  • addMeasuringAgent (Add a new measuring agent)
  • pingMeasuringAgent (Ping a measuring agent)
  • setMeasuringAgentActive (Set the state of a measuring agent to active or inactive)
  • deleteMeasuringAgent (Delete a measuring agent)

Measuring Agent Cluster Functions:

  • getMeasuringAgentClusters (Get all defined measuring agent clusters)
  • getClusterControllers (Get all cluster controllers and for each cluster controller a list of measuring agent clusters which are referencing the cluster controller)
  • getMinRequiredClusterControllerVersion (Get the minimum required cluster controller version)
  • pingClusterController (Ping a cluster controller)
  • addMeasuringAgentCluster (Add a new measuring agent cluster)
  • addMemberToMeasuringAgentCluster (Add a member to a measuring agent cluster)
  • removeMemberFromMeasuringAgentCluster (Remove a member from a measuring agent cluster)
  • pingMeasuringAgentClusterMembers (Ping the cluster members of a measuring agent cluster via cluster controller)
  • setMeasuringAgentClusterActive (Set the state of a measuring agent cluster to active or inactive)
  • deleteMeasuringAgentCluster (Delete a measuring agent cluster)

HTTP/S Remote Proxy Recorders Functions:

  • getProxyRecorders (Get all defined HTTP/S proxy recorders)
  • getMinRequiredProxyRecorderVersion (Get the minimum required HTTP/S proxy recorder version)
  • addProxyRecorder (Add a new HTTP/S proxy recorder)
  • pingProxyRecorder (Ping a HTTP/S proxy recorder)
  • deleteProxyRecorder (Delete a HTTP/S proxy recorder)
  • getProxyRecordersClientCertificates (Get all client certificates for HTTP/S proxy recorders)
  • addProxyRecordersClientCertificate (Add a client certificate for HTTP/S proxy recorders)
  • setProxyRecordersClientCertificateActive (Set a client certificate for HTTP/S proxy recorders to active or inactive)
  • modifyProxyRecordersClientCertificate (Modify a client certificate for HTTP/S proxy recorders)
  • deleteProxyRecordersClientCertificate (Delete a client certificate for HTTP/S proxy recorders)

Load Test Jobs Functions:

  • getTestjobTemplates (Get all test job templates)
  • defineNewTestjobFromTemplate (Define new test job from template)
  • submitTestjob (Submit a ‘defined’ test job to the measuring agent or to the cluster controller)
  • makeTestjobReadyToRun (Turn a remote test job which is in the state ‘submitted’ into the state ‘ready to run’)
  • startTestjob (Turn a remote test job which is in the state ‘ready to run’ into the state ‘running’)
  • getMeasuringAgentTestjobs (Get from a measuring agent all test jobs, inclusive their states)
  • getTestjobOutDirectoryFilesInfo (Get from test job information about all files located in a measuring agent job or cluster controller job ‘out’ subdirectory)
  • getTestjobOutDirectoryFile (Get from a measuring agent or from a cluster controller the content of a file located in a testjob/cluster-job out subdirectory in base64 format)
  • saveTestjobOutDirectoryFileToProjectTree (Get from a measuring agent or from a cluster controller the content of a file located in a testjob/cluster-job out subdirectory and save it in a resource set of the project tree)
  • deleteTestjob (Delete a test job locally and also on the measuring agent or cluster controller)

Test Execution Suites Functions:

  • getTestExecutionSuites (Get all test execution suites with a summary of all results of the executed test runs)
  • getCurrentlyRunningTestExecutionSuiteIds (Get the ID(s) of all currently running test execution suites)
  • startTestExecutionSuiteTestRun (Start a new run of a test execution suite)
  • getTestExecutionSuiteTestRunResultDetail (Get a test run result detail of a test execution suite)
  • getTestExecutionSuiteTestRunTestJobOutputFileContent (Get the content of a test job output file of a test execution suite run)
  • deleteTestExecutionSuiteTestRun (Delete a test run of a test execution suite)
URL HTTP Method
https://portal.realload.com/RemoteUserAPI POST
All data are sent and received in JSON data format. The “authTokenValue” and the “action” must always be sent when an API call is made.

Example

API HTTP/S Request

curl -v --request POST --header "Content-Type: application/json" --data {\"authTokenValue\":\"jPmFClqeDUXaEk8Q274q\",\"action\":\"getUserAccountInfo\"}  https://portal.realload.com/RemoteUserAPI

API Request Data

{
  "authTokenValue": "jPmFClqeDUXaEk8Q274q",
  "action": "getUserAccountInfo"
}

API Response Data

{
  "userAccountInfo":{
    "userId":48,
    "nickname":"BET",
    "firstName":"Bettina",
    "lastName":"MeierHans",
    "primaryEmail":"bettina@meierhans.id.au",
    "primarySMSPhone":"+61401111111",
    "secondaryEmail":"",
    "secondarySMSPhone":"",
    "accountBlocked":false,
    "accountCreateTime":1623719604561,
    "lastLoginTime":1625348376450,
    "lastLoginIP":"127.0.0.1",
    "pricePlanId":6,
    "accountExpiresTime":1625953109397,
    "pricePlanTitle":"BASIC1"
    },
  "isError":false
}

If the API call is successful, then the response field “isError” is false. If a numeric field has a value of -1 (minus one), this means “no data” or “unlimited” depending on the context.

getUserAccountInfo

Specific Request Fields:

  • [none]

Specific Error Flags:

  • [none]

getPricePlanInfo

Specific Request Fields:

  • [none]

Specific Error Flags:

  • [none]

JSON Response Example:

{
  "pricePlanInfo":{
    "pricePlanId":6,
    "title":"BASIC1",
    "description":"",
    "isDeprecated":false,
    "lastModified":1625348413042,
    "maxDiskSpaceMB":1024,
    "maxSubUserAccounts":0,
    "maxMeasuringAgentsOwnedByUser":3,
    "maxRemoteProxyRecordersOwnedByUser":3,
    "executeLoadJobsEnabled":true,
    "executeMonitoringJobsEnabled":false,
    "apiAccessEnabled":true,
    "maxStartLoadJobsLast24h":24,
    "maxUsersPerLoadJob":500,
    "maxDurationPerLoadJob":1800
  },
  "isError":false
}

The unit for “maxDurationPerLoadJob” is seconds.

getProjectTree

Specific Request Fields:

  • [none]

Specific Error Flags:

  • [none]

JSON Response Example:

{
  "projectsArray": [
    {
      "projectId": 97,
      "projectName": "Common",
      "projectDescription": "",
      "resourceSetsArray": [
        {
          "resourceSetId": 154,
          "resourceSetName": "Input Files",
          "resourceSetDescription": "",
          "filesArray": [
            {
              "fileName": "InputFile.txt",
              "fileSize": 233,
              "fileHashCode": 1873256029,
              "fileLastModified": 1613835992073
            }
          ]
        },
        {
          "resourceSetId": 155,
          "resourceSetName": "Jar Files",
          "resourceSetDescription": "",
          "filesArray": [
            {
              "fileName": "com.dkfqs.tools.jar",
              "fileSize": 578087,
              "fileHashCode": -2033420926,
              "fileLastModified": 1613838181727
            }
          ]
        },
        {
          "resourceSetId": 156,
          "resourceSetName": "Plug-Ins",
          "resourceSetDescription": "",
          "filesArray": [
            {
              "fileName": "HttpSessionPlugin_ChangeCopyright.json",
              "fileSize": 5321,
              "fileHashCode": 1958407366,
              "fileLastModified": 1613838287871
            }
          ]
        }
      ]
    },
...
...
...
  ],
  "isError": false
}

createProject

Specific Request Fields:

  • projectName
  • projectDescription (optional)

Response Fields:

  • projectId

Specific Error Flags:

  • projectNameError
  • diskSpaceLimitExceededError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"createProject",
  "projectName":"My New Project",
  "projectDescription": "Created by API call"
}

JSON Response Example (Success Case):

{"projectId":113,"isError":false}

JSON Response Example (Error Case):

{"isError":true,"genericErrorText":"","diskSpaceLimitExceededError":false,"projectNameError":true}

deleteProject

Specific Request Fields:

  • projectId
  • moveToTrash (optional, default: false)

Specific Error Flags:

  • projectIdError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"deleteProject",
  "projectId":113,
  "moveToTrash":false
}

getResourceSetsOfProject

Specific Request Fields:

  • projectId

Specific Error Flags:

  • projectIdError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getResourceSetsOfProject",
  "projectId":97
}

JSON Response Example (Success Case):

{
  "resourceSetsArray": [
    {
      "resourceSetId": 154,
      "resourceSetName": "Input Files",
      "resourceSetDescription": "",
      "filesArray": [
        {
          "fileName": "InputFile.txt",
          "fileSize": 233,
          "fileHashCode": 1873256029,
          "fileLastModified": 1613835992073
        }
      ]
    },
    {
      "resourceSetId": 155,
      "resourceSetName": "Jar Files",
      "resourceSetDescription": "",
      "filesArray": [
        {
          "fileName": "com.dkfqs.tools.jar",
          "fileSize": 578087,
          "fileHashCode": -2033420926,
          "fileLastModified": 1613838181727
        }
      ]
    },
    {
      "resourceSetId": 156,
      "resourceSetName": "Plug-Ins",
      "resourceSetDescription": "",
      "filesArray": [
        {
          "fileName": "HttpSessionPlugin_ChangeCopyright.json",
          "fileSize": 5321,
          "fileHashCode": 1958407366,
          "fileLastModified": 1613838287871
        }
      ]
    }
  ],
  "isError": false
}

createResourceSet

Specific Request Fields:

  • projectId
  • resourceSetName
  • resourceSetDescription (optional)

Response Fields:

  • resourceSetId

Specific Error Flags:

  • projectIdError
  • resourceSetNameError
  • diskSpaceLimitExceededError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"createResourceSet",
  "projectId":97,
  "resourceSetName":"My New Resource Set",
  "resourceSetDescription": "Created by API call"
}

JSON Response Example (Success Case):

{"resourceSetId":172,"isError":false}

JSON Response Example (Error Case):

{"isError":true,"genericErrorText":"","resourceSetNameError":true,"projectIdError":false,"diskSpaceLimitExceededError":false}

deleteResourceSet

Specific Request Fields:

  • projectId
  • resourceSetId
  • moveToTrash (optional, default: false)

Specific Error Flags:

  • projectIdError
  • resourceSetIdError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"deleteResourceSet",
  "projectId":97,
  "resourceSetId":172,
  "moveToTrash":false
}

getFilesInfoOfResourceSet

Specific Request Fields:

  • projectId
  • resourceSetId

Specific Error Flags:

  • projectIdError
  • resourceSetIdError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getFilesInfoOfResourceSet",
  "projectId":23,
  "resourceSetId":143
}

JSON Response Example:

{
  "filesArray": [
    {
      "fileName": "DKFQSLibrary2.psm1",
      "fileSize": 16339,
      "fileHashCode": -1503445747,
      "fileLastModified": 1603566144851
    },
    {
      "fileName": "powershell-http-bern2.ps1",
      "fileSize": 12900,
      "fileHashCode": -1174212096,
      "fileLastModified": 1603566162094
    },
    {
      "fileName": "TestResult_powershell-http-bern2Neu_2020-10-24@21-06-04.json",
      "fileSize": 14395,
      "fileHashCode": -951574615,
      "fileLastModified": 1603566379097
    },
    {
      "fileName": "TestResult_powershell-http-bern2Neu_2020-10-24@21-09-45.json",
      "fileSize": 55128,
      "fileHashCode": 1499924815,
      "fileLastModified": 1603566591322
    }
  ],
  "isError": false
}

createFile

Specific Request Fields:

  • projectId
  • resourceSetId
  • fileName
  • fileContentB64 (the content of the file, in Base64 format)

Response Fields:

  • fileName
  • fileSize
  • fileHashCode
  • fileLastModified

Specific Error Flags:

  • projectIdError
  • resourceSetIdError
  • fileNameError
  • diskSpaceLimitExceededError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"createFile",
  "projectId":23,
  "resourceSetId":143,
  "fileName":"test.txt",
  "fileContentB64":"VGhpcyBpcyB0aGUgY29udGVudCBvZiB0aGUgZmlsZS4=" 
}

JSON Response Example (Success Case):

{
  "fileName":"test.txt",
  "fileSize":32,
  "fileHashCode":-1460278014,
  "fileLastModified":1625423562384,
  "isError":false
}

JSON Response Example (Error Case):

{"isError":true,"genericErrorText":"","projectIdError":false,"resourceSetIdError":false,"diskSpaceLimitExceededError":false,"fileNameError":true}

getFile

Specific Request Fields:

  • projectId
  • resourceSetId
  • fileName

Response Fields:

  • fileName
  • fileContentB64 (the content of the file, in Base64 format)
  • fileSize
  • fileHashCode
  • fileLastModified

Specific Error Flags:

  • projectIdError
  • resourceSetIdError
  • fileNameError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getFile",
  "projectId":23,
  "resourceSetId":143,
  "fileName":"test.txt"
}

JSON Response Example (Success Case):

{
  "fileName":"test.txt",
  "fileContentB64":"VGhpcyBpcyB0aGUgY29udGVudCBvZiB0aGUgZmlsZS4=",
  "fileSize":32,
  "fileHashCode":-1460278014,
  "fileLastModified":1625423562384,
  "isError":false
}

deleteFile

Specific Request Fields:

  • projectId
  • resourceSetId
  • fileName
  • moveToTrash (optional, default: false)

Response Fields:

  • fileDeleted (a flag which is true if the file was deleted)

Specific Error Flags:

  • projectIdError
  • resourceSetIdError
  • fileNameError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"deleteFile",
  "projectId":23,
  "resourceSetId":143,
  "fileName":"test.txt",
  "moveToTrash":false
}

JSON Response Example (Success Case):

{"fileDeleted":true,"isError":false}

JSON Response Example (Error Case):

{"isError":true,"genericErrorText":"","projectIdError":false,"resourceSetIdError":false,"fileNameError":true}

getMeasuringAgents

Specific Request Fields:

  • [none]

Response Fields:

  • agentId (the unique measuring agent id)
  • createdBySystem (normally false, true = the user cannot modify or delete the measuring agent)
  • ownerUserId (always the same as the user account id)
  • agentActive (flag: if false then the availability of the measuring agent is not monitored)
  • agentDescription
  • agentHost
  • agentPort
  • authToken (the authentication token to access the measuring agent, or an empty string = no access protection | don’t confuse it with the API authTokenValue)

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getMeasuringAgents"
}

JSON Response Example (Success Case):

{
  "measuringAgentsArray": [
    {
      "agentId": 46,
      "createdBySystem": false,
      "ownerUserId": 13,
      "agentActive": true,
      "agentDescription": "Local Agent",
      "agentHost": "127.0.0.1",
      "agentPort": 8080,
      "authToken": "OrKmpkbyNWEHok"
    },
    {
      "agentId": 49,
      "createdBySystem": false,
      "ownerUserId": 13,
      "agentActive": false,
      "agentDescription": "Rasberry 1",
      "agentHost": "192.168.0.51",
      "agentPort": 8080,
      "authToken": ""
    },
    {
      "agentId": 50,
      "createdBySystem": false,
      "ownerUserId": 13,
      "agentActive": true,
      "agentDescription": "Ubuntu 10",
      "agentHost": "192.168.0.110",
      "agentPort": 8080,
      "authToken": ""
    },
    {
      "agentId": 51,
      "createdBySystem": false,
      "ownerUserId": 13,
      "agentActive": true,
      "agentDescription": "Ubuntu 11",
      "agentHost": "192.168.0.111",
      "agentPort": 8080,
      "authToken": ""
    }
  ],
  "isError": false
}

getMinRequiredMeasuringAgentVersion

Specific Request Fields:

  • [none]

Response Fields:

  • minRequiredMeasuringAgentVersion (the minimum required measuring agent version)

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getMinRequiredMeasuringAgentVersion"
}

JSON Response Example (Success Case):

{
  "minRequiredMeasuringAgentVersion":"3.9.34",
  "isError":false
}

addMeasuringAgent

Specific Request Fields:

  • agentDescription (must be unique across all measuring agents of the user, cannot be an empty string)
  • agentHost
  • agentPort
  • agentActive (flag: if false then the availability of the measuring agent is not monitored)
  • agentAuthToken (the authentication token to access the measuring agent, or an empty string = no access protection)

Response Fields (JSON object “measuringAgent”):

  • agentId (the unique measuring agent id)
  • createdBySystem (always false for this function)
  • ownerUserId (always the same as the user account id)
  • agentActive (flag: if false then the availability of the measuring agent is not monitored)
  • agentDescription
  • agentHost
  • agentPort
  • authToken (the authentication token to access the measuring agent, or an empty string = no access protection)

Specific Error Flags:

  • agentDescriptionError
  • agentHostError
  • agentPortError
  • maxNumberMeasuringAgentsLimitExceededError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"addMeasuringAgent",
  "agentDescription":"Ubuntu 12",
  "agentHost":"192.168.0.112",
  "agentPort":8080,
  "agentActive": true,
  "agentAuthToken": "nixda"
}

JSON Response Example (Success Case):

{
  "measuringAgent": {
    "agentId": 53,
    "createdBySystem": false,
    "ownerUserId": 13,
    "agentActive": true,
    "agentDescription": "Ubuntu 12",
    "agentHost": "192.168.0.112",
    "agentPort": 8080,
    "authToken": "nixda"
  },
  "isError": false
}

pingMeasuringAgent

Specific Request Fields:

  • agentId

Response Fields (JSON object “agentResponse”):

  • pingFromRemoteIp
  • pingFromRemoteUserId
  • productVersion (measuring agent version | don’t confuse with portal server version)
  • limitMaxUsersPerJob (limit of the measuring agent, -1 = unlimited | don’t confuse with price plan limit)
  • limitMaxJobDurationSeconds (limit of the measuring agent, -1 = unlimited | don’t confuse with price plan limit)
  • osName
  • osVersion
  • javaVersion
  • javaVendor
  • javaMaxMemory
  • systemTime
  • deltaTimeMillis
  • agentStartupTimeStamp
  • httpExecuteTimeMillis

Specific Error Flags:

  • agentIdError
  • agentAccessDeniedError
  • agentVersionOutdatedError
  • agentNotReachableError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"pingMeasuringAgent",
  "agentId":48
}

JSON Response Example (Success Case):

{
  "agentResponse": {
    "pingFromRemoteIp": "83.150.39.44",
    "pingFromRemoteUserId": 13,
    "productVersion": "3.9.30",
    "limitMaxUsersPerJob": 500,
    "limitMaxJobDurationSeconds": 300,
    "osName": "Linux",
    "osVersion": "4.15.0-136-generic",
    "javaVersion": "11.0.1",
    "javaVendor": "Oracle Corporation",
    "javaMaxMemory":"2048 MB",
    "systemTime": 1625513238236,
    "deltaTimeMillis": 841,
    "agentStartupTimeStamp": 1622836702172,
    "httpExecuteTimeMillis": 247
  },
  "isError": false
}

JSON Response Example (Error Case 1):

{
  "isError": true,
  "genericErrorText": "API V1 request to 192.168.0.51:8080 timed out",
  "agentIdError": false,
  "agentAccessDeniedError": false,
  "agentNotReachableError": true,
  "agentVersionOutdatedError": false
}

JSON Response Example (Error Case 2):

{
  "isError": true,
  "genericErrorText": "Min. measuring agent version required: 3.9.30",
  "agentIdError": false,
  "agentAccessDeniedError": false,
  "agentNotReachableError": false,
  "agentVersionOutdatedError": true
}

setMeasuringAgentActive

Specific Request Fields:

  • agentId
  • agentActive

Response Fields:

  • [none]

Specific Error Flags:

  • agentIdError
  • agentAccessDeniedError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"setMeasuringAgentActive",
  "agentId":46,
  "agentActive":false
}

JSON Response Example (Success Case):

{"isError":false}

deleteMeasuringAgent

Specific Request Fields:

  • agentId

Response Fields:

  • [none]

Specific Error Flags:

  • agentIdError
  • agentAccessDeniedError
  • agentDeleteDeniedError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"deleteMeasuringAgent",
  "agentId":54
}

JSON Response Example (Success Case):

{"isError":false}

getMeasuringAgentClusters

Specific Request Fields:

  • [none]

Response Fields (JSON array “measuringAgentClustersArray”):

  • clusterId (the unique cluster id)
  • createdBySystem (normally false, true = the user cannot modify or delete the cluster)
  • ownerUserId (always the same as the user account id)
  • clusterActive (flag: if false then the availability of the cluster is not monitored)
  • clusterDescription
  • controllerHost (the hostname or IP address of the cluster controller)
  • controllerPort (the IP port of the cluster controller)
  • controllerAuthToken (the authentication token to access the cluster controller, or an empty string = no access protection | don’t confuse it with the API authTokenValue)
  • clusterMembersArray
    • clusterMemberId (the unique cluster member id)
    • loadFactor (integer 0..100: the default load factor of this cluster member)
    • agentId (the referenced measuring agent id)
    • agentActive (flag: if false then the availability of the measuring agent is not monitored)
    • agentDescription
    • agentHost
    • agentPort
    • agentAuthToken (the authentication token to access the measuring agent, or an empty string = no access protection | don’t confuse it with the API authTokenValue)

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getMeasuringAgentClusters"
}

JSON Response Example:

{
  "measuringAgentClustersArray": [
    {
      "clusterId": 11,
      "createdBySystem": false,
      "ownerUserId": 13,
      "clusterActive": true,
      "clusterDescription": "C1",
      "controllerHost": "192.168.0.50",
      "controllerPort": 8083,
      "controllerAuthToken": "aberaber",
      "clusterMembersArray": [
        {
          "clusterMemberId": 59,
          "loadFactor": 1,
          "agentId": 64,
          "agentActive": true,
          "agentDescription": "Agent 1",
          "agentHost": "192.168.0.10",
          "agentPort": 8080,
          "agentAuthToken": "OrKmAAbyNWEHok"
        },
        {
          "clusterMemberId": 60,
          "loadFactor": 1,
          "agentId": 59,
          "agentActive": true,
          "agentDescription": "Ubuntu 10",
          "agentHost": "192.168.0.110",
          "agentPort": 8080,
          "agentAuthToken": "asc7jhacab"
        },
        {
          "clusterMemberId": 61,
          "loadFactor": 1,
          "agentId": 60,
          "agentActive": true,
          "agentDescription": "Ubuntu 11",
          "agentHost": "192.168.0.111",
          "agentPort": 8080,
          "agentAuthToken": "66ascascsdac"
        }
      ]
    },
    {
      "clusterId": 14,
      "createdBySystem": false,
      "ownerUserId": 13,
      "clusterActive": true,
      "clusterDescription": "C2",
      "controllerHost": "192.168.0.50",
      "controllerPort": 8083,
      "controllerAuthToken": "aberaber",
      "clusterMembersArray": [
        {
          "clusterMemberId": 66,
          "loadFactor": 1,
          "agentId": 56,
          "agentActive": true,
          "agentDescription": "Test System",
          "agentHost": "192.168.0.60",
          "agentPort": 8080,
          "agentAuthToken": "aberdoch"
        },
        {
          "clusterMemberId": 67,
          "loadFactor": 1,
          "agentId": 59,
          "agentActive": true,
          "agentDescription": "Ubuntu 10",
          "agentHost": "192.168.0.110",
          "agentPort": 8080,
          "agentAuthToken": "asc7jhacab"
        }
      ]
    }
  ],
  "isError": false
}

getClusterControllers

Specific Request Fields:

  • [none]

Response Fields (JSON array “clusterControllersArray”):

  • controllerHost (the hostname or IP address of the cluster controller)
  • controllerPort (the IP port of the cluster controller)
  • controllerAuthToken (the authentication token to access the cluster controller)
  • measuringAgentClustersArray (an array of measuring agent clusters which are referencing this cluster controller)
    • clusterId
    • clusterDescription
    • clusterActive

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getClusterControllers"
}

JSON Response Example:

{
  "clusterControllersArray": [
    {
      "controllerHost": "192.168.0.33",
      "controllerPort": 8083,
      "controllerAuthToken": "2fasdtfffe",
      "measuringAgentClustersArray": [
        {
          "clusterId": 11,
          "clusterDescription": "C1",
          "clusterActive": 1
        },
        {
          "clusterId": 13,
          "clusterDescription": "C2",
          "clusterActive": 1
        },
        {
          "clusterId": 14,
          "clusterDescription": "C3",
          "clusterActive": 1
        }
      ]
    },
    {
      "controllerHost": "192.168.0.50",
      "controllerPort": 8083,
      "controllerAuthToken": "asfsdgh763",
      "measuringAgentClustersArray": [
        {
          "clusterId": 15,
          "clusterDescription": "C4",
          "clusterActive": 1
        },
        {
          "clusterId": 16,
          "clusterDescription": "C7",
          "clusterActive": 1
        }
      ]
    }
  ],
  "isError": false
}

getMinRequiredClusterControllerVersion

Specific Request Fields:

  • [none]

Response Fields:

  • minRequiredClusterControllerVersion (the minimum required cluster controller version)

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getMinRequiredClusterControllerVersion"
}

JSON Response Example:

{
  "minRequiredClusterControllerVersion":"4.0.4",
  "isError":false
}

pingClusterController

Specific Request Fields:

  • controllerHost (the cluster controller host name or IP address)
  • controllerPort (the cluster controller IP port)
  • controllerAuthToken (the authentication token to access the cluster controller, or an empty string = no access protection)

Response Fields (JSON object “controllerResponse”):

  • pingFromRemoteIp
  • pingFromRemoteUserId
  • productVersion (cluster controller version | don’t confuse with portal server version)
  • osName
  • osVersion
  • javaVersion
  • javaVendor
  • javaMaxMemory
  • systemTime
  • deltaTimeMillis
  • controllerStartupTimeStamp
  • httpExecuteTimeMillis
  • clusterControllerOutdated

Specific Error Flags:

  • controllerHostError
  • controllerPortError
  • controllerVersionOutdatedError
  • controllerNotReachableError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"pingClusterController",
    "controllerHost":"192.168.0.50",
    "controllerPort":8083,
    "controllerAuthToken":"hagsajjs99"
}

JSON Response Example (Success Case):

{
  "controllerResponse": {
    "pingFromRemoteIp": "192.168.0.100",
    "pingFromRemoteUserId": 13,
    "productVersion": "4.0.4",
    "osName": "Linux",
    "osVersion": "4.15.0-135-generic",
    "javaVersion": "11.0.1",
    "javaVendor": "Oracle Corporation",
    "javaMaxMemory": "512 MB",
    "systemTime": 1643406118552,
    "deltaTimeMillis": 1120,
    "controllerStartupTimeStamp": 1643322597013,
    "httpExecuteTimeMillis": 249,
    "clusterControllerOutdated": false
  },
  "isError": false
}

JSON Response Example (Error Case 1):

{
  "isError": true,
  "genericErrorText": "API call pingGetControllerInfo failed. Error code = 18, Error message = Invalid authentication token",
  "controllerHostError": false,
  "controllerVersionOutdatedError": false,
  "controllerNotReachableError": true,
  "controllerPortError": false
}

JSON Response Example (Error Case 2):

{
  "isError": true,
  "genericErrorText": "Min. cluster controller version required: 4.0.4",
  "controllerHostError": false,
  "controllerVersionOutdatedError": true,
  "controllerNotReachableError": false,
  "controllerPortError": false
}

addMeasuringAgentCluster

Specific Request Fields:

  • clusterActive (flag: if false then the availability of the cluster is not monitored)
  • clusterDescription (must be unique across all measuring agent clusters and all measuring agents of the user, cannot be an empty string)
  • controllerHost (the cluster controller host name or IP address)
  • controllerPort (the cluster controller IP port)
  • controllerAuthToken (the authentication token to access the cluster controller, or an empty string = no access protection)
  • clusterMembersArray (an array of cluster members - can also be empty)
    • agentId (the referenced measuring agent id)
    • loadFactor (integer 0..100: the load factor of this cluster member, recommended value = 1)

Response Fields:

  • clusterId (the unique cluster id)
  • clusterMembersArray (the array of cluster members)
    • clusterMemberId (the unique cluster member id)
    • agentId (the referenced measuring agent id)
    • loadFactor (integer 0..100: the load factor of this cluster member)

Specific Error Flags:

  • clusterDescriptionError
  • controllerHostError
  • controllerPortError
  • agentIdError
  • loadFactorError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"addMeasuringAgentCluster",
  "clusterActive":true,
  "clusterDescription":"C7",
  "controllerHost":"192.168.0.50",
  "controllerPort":8083,
  "controllerAuthToken":"aberaber",
  "clusterMembersArray":[
    {
      "agentId":59,
      "loadFactor":1
    },
    {
      "agentId":60,
      "loadFactor":1
    }
  ]
}

JSON Response Example (Success Case):

{
  "clusterId":16,
  "clusterMembersArray":[
    {
      "clusterMemberId":71,
      "agentId":59,
      "loadFactor":1
    },
    {
      "clusterMemberId":72,
      "agentId":60,
      "loadFactor":1
    }
  ],
  "isError":false
}

JSON Response Example (Error Case):

{
  "isError": true,
  "genericErrorText": "Invalid agentId = 101",
  "controllerHostError": false,
  "agentIdError": true,
  "controllerPortError": false,
  "loadFactorError": false,
  "clusterDescriptionError": false
}

addMemberToMeasuringAgentCluster

Specific Request Fields:

  • clusterId
  • agentId (the referenced measuring agent id)
  • loadFactor (integer 0..100: the load factor of this cluster member, recommended value = 1)

Response Fields (JSON object “clusterMember”):

  • clusterMemberId (the unique cluster member id)
  • agentId
  • loadFactor

Specific Error Flags:

  • clusterIdError
  • clusterAccessDeniedError
  • clusterModifyDeniedError
  • agentIdError
  • agentAccessDeniedError
  • loadFactorError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"addMemberToMeasuringAgentCluster",
  "clusterId":17,
  "agentId":64,
  "loadFactor":1
}

JSON Response Example:

{
  "clusterMember": {
    "clusterMemberId": 75,
    "agentId": 64,
    "loadFactor": 1
  },
  "isError": false
}

removeMemberFromMeasuringAgentCluster

Specific Request Fields:

  • clusterId
  • clusterMemberId

Response Fields:

  • [none]

Specific Error Flags:

  • clusterIdError
  • clusterAccessDeniedError
  • clusterModifyDeniedError
  • clusterMemberIdError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"removeMemberFromMeasuringAgentCluster",
  "clusterId":17,
  "clusterMemberId":75
}

JSON Response Example:

{"isError":false}

pingMeasuringAgentClusterMembers

Specific Request Fields:

  • clusterId

Response Fields (JSON object “controllerResponse”):

  • productVersion (cluster controller version)
  • clusterConnectResult (the connect information to the cluster members)
    • measuringAgentClusterMemberArray (the array of cluster members)
      • clusterMemberId
      • loadFactor
      • agentId
      • agentActive
      • agentDescription
      • agentHost
      • agentPort
      • agentAuthToken
    • connectSuccessfulClusterMemberArray (the array of cluster member ids to which the connection was successful established)
    • connectFailedClusterMemberArray (the array of cluster members to which the connection has failed)
      • clusterMemberId
      • errorMessage
    • clusterConnectStartTimestamp
    • clusterConnectDurationMillis
  • clusterActionResult (the ping result of the cluster members)
    • actionSuccessfulClusterMemberArray (the array of cluster member ids which have performed the ping to the measuring agent)
    • actionFailedClusterMemberArray (the array of cluster members which have not performed the ping to the measuring agent)
      • clusterMemberId
      • errorMessage
    • jsonResponseClusterMemberArray (the array of cluster member which have performed the ping)
      • clusterMemberId
      • jsonResponseObject (the pong response of the cluster member)
        • productVersion (measuring agent product version)
        • systemTime
        • deltaTimeMillis (the OS time difference in milliseconds between the cluster controller and the measuring agent)
        • osName
        • osVersion
        • javaVersion
        • javaVendor
        • javaMaxMemory
        • samplingGranularityMillis (the data collector sampling granularity in milliseconds)
        • isError (boolean flag, normally always false)
        • measuringAgentOutdated (a boolean flag, true = measuring agent product version is outdated)
    • clusterActionStartTimestamp
    • clusterActionDurationMillis
  • httpExecuteTimeMillis
  • clusterControllerOutdated

Specific Error Flags:

  • clusterIdError
  • clusterAccessDeniedError
  • controllerVersionOutdatedError
  • controllerNotReachableError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"pingMeasuringAgentClusterMembers",
  "clusterId":16
}

JSON Response Example (Success Case):

{
  "controllerResponse": {
    "productVersion": "4.0.4",
    "clusterConnectResult": {
      "measuringAgentClusterMemberArray": [
        {
          "clusterMemberId": 71,
          "loadFactor": 1,
          "agentId": 59,
          "agentActive": true,
          "agentDescription": "Ubuntu 10",
          "agentHost": "192.168.0.110",
          "agentPort": 8080,
          "agentAuthToken": "agsdhagsj"
        },
        {
          "clusterMemberId": 72,
          "loadFactor": 1,
          "agentId": 60,
          "agentActive": true,
          "agentDescription": "Ubuntu 11",
          "agentHost": "192.168.0.111",
          "agentPort": 8080,
          "agentAuthToken": "nvbjnvbnn"
        }
      ],
      "connectSuccessfulClusterMemberArray": [
        71,
        72
      ],
      "connectFailedClusterMemberArray": [],
      "clusterConnectStartTimestamp": 1643410829270,
      "clusterConnectDurationMillis": 79
    },
    "clusterActionResult": {
      "actionSuccessfulClusterMemberArray": [
        71,
        72
      ],
      "actionFailedClusterMemberArray": [],
      "jsonResponseClusterMemberArray": [
        {
          "clusterMemberId": 71,
          "jsonResponseObject": {
            "productVersion": "4.0.4",
            "systemTime": 1643410829340,
            "deltaTimeMillis": -10,
            "osName": "Linux",
            "osVersion": "5.4.0-92-generic",
            "javaVersion": "11.0.1",
            "javaVendor": "Oracle Corporation",
            "javaMaxMemory": "2048 MB",
            "samplingGranularityMillis": 4000,
            "isError": false,
            "measuringAgentOutdated": false
          }
        },
        {
          "clusterMemberId": 72,
          "jsonResponseObject": {
            "productVersion": "4.0.4",
            "systemTime": 1643410829351,
            "deltaTimeMillis": -10,
            "osName": "Linux",
            "osVersion": "5.4.0-92-generic",
            "javaVersion": "11.0.1",
            "javaVendor": "Oracle Corporation",
            "javaMaxMemory": "2048 MB",
            "samplingGranularityMillis": 4000,
            "isError": false,
            "measuringAgentOutdated": false
          }
        }
      ],
      "clusterActionStartTimestamp": 1643410829349,
      "clusterActionDurationMillis": 43
    },
    "httpExecuteTimeMillis": 1778,
    "clusterControllerOutdated": false
  },
  "isError": false
}

JSON Response Example (Error Case / Partly failed):

{
  "controllerResponse": {
    "productVersion": "4.0.4",
    "clusterConnectResult": {
      "measuringAgentClusterMemberArray": [
        {
          "clusterMemberId": 71,
          "loadFactor": 1,
          "agentId": 59,
          "agentActive": true,
          "agentDescription": "Ubuntu 10",
          "agentHost": "192.168.0.110",
          "agentPort": 8080,
          "agentAuthToken": "marderzahn"
        },
        {
          "clusterMemberId": 72,
          "loadFactor": 1,
          "agentId": 60,
          "agentActive": true,
          "agentDescription": "Ubuntu 11",
          "agentHost": "192.168.0.111",
          "agentPort": 8080,
          "agentAuthToken": "marderzahn"
        }
      ],
      "connectSuccessfulClusterMemberArray": [
        72
      ],
      "connectFailedClusterMemberArray": [
        {
          "clusterMemberId": 71,
          "errorMessage": "Connection refused (Connection refused)"
        }
      ],
      "clusterConnectStartTimestamp": 1643414272214,
      "clusterConnectDurationMillis": 97
    },
    "clusterActionResult": {
      "actionSuccessfulClusterMemberArray": [
        72
      ],
      "actionFailedClusterMemberArray": [],
      "jsonResponseClusterMemberArray": [
        {
          "clusterMemberId": 72,
          "jsonResponseObject": {
            "productVersion": "4.0.4",
            "systemTime": 1643414272310,
            "deltaTimeMillis": -8,
            "osName": "Linux",
            "osVersion": "5.4.0-92-generic",
            "javaVersion": "11.0.1",
            "javaVendor": "Oracle Corporation",
            "javaMaxMemory": "2048 MB",
            "samplingGranularityMillis": 4000,
            "isError": false,
            "measuringAgentOutdated": false
          }
        }
      ],
      "clusterActionStartTimestamp": 1643414272311,
      "clusterActionDurationMillis": 21
    },
    "httpExecuteTimeMillis": 1769,
    "clusterControllerOutdated": false
  }
}

setMeasuringAgentClusterActive

Specific Request Fields:

  • clusterId
  • clusterActive

Response Fields:

  • [none]

Specific Error Flags:

  • clusterIdError
  • clusterAccessDeniedError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"setMeasuringAgentClusterActive",
  "clusterId":16,
  "clusterActive":true
}

JSON Response Example (Success Case):

{"isError":false}

deleteMeasuringAgentCluster

Specific Request Fields:

  • clusterId

Response Fields:

  • [none]

Specific Error Flags:

  • clusterIdError
  • clusterAccessDeniedError
  • clusterDeleteDeniedError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"deleteMeasuringAgentCluster",
  "clusterId":16
}

JSON Response Example (Success Case):

{"isError":false}

getProxyRecorders

Specific Request Fields:

  • [none]

Response Fields (JSON array “proxyRecordersArray”):

  • recorderId (the unique proxy recorder id)
  • createdBySystem (normally false, true = the user cannot modify or delete the proxy recorder)
  • ownerUserId (always the same as the user account id)
  • recorderDescription
  • recorderProxyHost
  • recorderProxyPort (HTTP and HTTPS port of the proxy)
  • recorderProxyAuthUsername (proxy authentication username, or an empty string = no proxy authentication required)
  • recorderProxyAuthPassword (proxy authentication password)
  • recorderControlPort (the proxy recorder control port)
  • recorderControlAuthToken (the authentication token to access the proxy recorder control port, or an empty string = no access protection | don’t confuse it with the API authTokenValue)

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getProxyRecorders"
}

JSON Response Example:

{
  "proxyRecordersArray": [
    {
      "recorderId": 3,
      "createdBySystem": false,
      "ownerUserId": 13,
      "recorderDescription": "Erster",
      "recorderProxyHost": "192.168.0.40",
      "recorderProxyPort": 8082,
      "recorderProxyAuthUsername": "",
      "recorderProxyAuthPassword": "",
      "recorderControlPort": 8081,
      "recorderControlAuthToken": ""
    },
    {
      "recorderId": 4,
      "createdBySystem": false,
      "ownerUserId": 13,
      "recorderDescription": "proxy.realload.com",
      "recorderProxyHost": "proxy.realload.com",
      "recorderProxyPort": 8082,
      "recorderProxyAuthUsername": "max.meier",
      "recorderProxyAuthPassword": "123456",
      "recorderControlPort": 8081,
      "recorderControlAuthToken": "aZujkl97zuwert"
    }
  ],
  "isError": false
}

getMinRequiredProxyRecorderVersion

Specific Request Fields:

  • [none]

Response Fields:

  • minRequiredProxyRecorderVersion (the minimum required HTTP/S proxy recorder version)

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getMinRequiredProxyRecorderVersion"
}

JSON Response Example (Success Case):

{
  "minRequiredProxyRecorderVersion":"0.2.2",
  "isError":false
}

addProxyRecorder

Specific Request Fields:

  • recorderDescription (must be unique across all HTTP/S proxy recorders of the user, cannot be an empty string)
  • recorderProxyHost
  • recorderProxyPort (HTTP and HTTPS port of the proxy)
  • recorderProxyAuthUsername (proxy authentication username, or an empty string = no proxy authentication required)
  • recorderProxyAuthPassword (proxy authentication password, applied if recorderProxyAuthUsername is not an empty string)
  • recorderControlPort (the proxy recorder control port)
  • recorderControlAuthToken (the authentication token to access the proxy recorder control port, or an empty string = no access protection)

Response Fields (JSON object “proxyRecorder”):

  • recorderId (the unique HTTP/S proxy recorder id)
  • createdBySystem (always false for this function)
  • ownerUserId (always the same as the user account id)
  • recorderDescription
  • recorderProxyHost
  • recorderProxyPort
  • recorderProxyAuthUsername
  • recorderProxyAuthPassword
  • recorderControlPort
  • recorderControlAuthToken

Specific Error Flags:

  • recorderDescriptionError
  • recorderProxyHostError
  • recorderProxyPortError
  • recorderControlPortError
  • maxNumberProxyRecordersLimitExceededError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"addProxyRecorder",
  "recorderDescription":"My New Proxy Recorder",
  "recorderProxyHost":"192.168.0.148",
  "recorderProxyPort":8082,
  "recorderProxyAuthUsername":"max.meier",
  "recorderProxyAuthPassword":"123456",
  "recorderControlPort":8081,
  "recorderControlAuthToken":"aZujkl97zuwert"
}

JSON Response Example (Success Case):

{
  "proxyRecorder": {
    "recorderId": 10,
    "createdBySystem": false,
    "ownerUserId": 13,
    "recorderDescription": "My New Proxy Recorder",
    "recorderProxyHost": "192.168.0.148",
    "recorderProxyPort": 8082,
    "recorderProxyAuthUsername": "max.meier",
    "recorderProxyAuthPassword": "123456",
    "recorderControlPort": 8081,
    "recorderControlAuthToken": "aZujkl97zuwert"
  },
  "isError": false
}

pingProxyRecorder

Specific Request Fields:

  • recorderId

Response Fields (JSON object “pongResponse”):

  • pingFromRemoteIp
  • pingFromRemoteUserId
  • productVersion (the remote proxy recorder version | don’t confuse with portal server version)
  • recorderComponentVersion (the proxy recorder component version | don’t confuse with portal server version)
  • isRecording
  • recordHostFilter
  • numRecordedElements
  • osName
  • osVersion
  • javaMemoryMB
  • javaVersion
  • javaVendor
  • systemTime
  • deltaTimeMillis
  • httpExecuteTimeMillis

Specific Error Flags:

  • recorderIdError
  • recorderAccessDeniedError
  • recorderNotReachableError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"pingProxyRecorder",
  "recorderId":4
}

JSON Response Example (Success Case):

{
  "pongResponse": {
    "pingFromRemoteIp": "83.150.39.44",
    "pingFromRemoteUserId": 13,
    "productVersion": "0.2.0",
    "recorderComponentVersion": "1.1.0",
    "isRecording": false,
    "recordHostFilter": "www.dkfqa.com",
    "numRecordedElements": 0,
    "osName": "Linux",
    "osVersion": "5.4.0-74-generic",
    "javaMemoryMB": 2048,
    "javaVersion": "11.0.1",
    "javaVendor": "Oracle Corporation",
    "systemTime": 1625529858405,
    "deltaTimeMillis": 790,
    "httpExecuteTimeMillis": 88
  },
  "isError": false
}

JSON Response Example (Error Case):

{
  "isError": true,
  "genericErrorText": "connect timed out",
  "recorderNotReachableError": true,
  "recorderIdError": false,
  "recorderAccessDeniedError": false
}

deleteProxyRecorder

Specific Request Fields:

  • recorderId

Response Fields:

  • [none]

Specific Error Flags:

  • recorderIdError
  • recorderAccessDeniedError
  • recorderDeleteDeniedError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"deleteProxyRecorder",
  "recorderId":10
}

JSON Response Example (Success Case):

{"isError":false}

getProxyRecordersClientCertificates

Specific Request Fields:

  • [none]

Response Fields:

  • certificateId (unique ID)
  • ownerUserId (always the own user ID)
  • recorderId (always -1 = apply for all proxy recorders)
  • originalCertFileName (without disk path)
  • certFileType (always PKCS#12)
  • certFileDataB64 (the file data in base64 format)
  • certPassword
  • certDescription
  • certActive (if false then do not transmit the certificate to the proxy recorders)
  • applyForHost
  • applyForPort

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getProxyRecordersClientCertificates"
}

JSON Response Example (Success Case):

{
  "clientCertificatesArray": [
    {
      "certificateId": 1,
      "ownerUserId": 13,
      "recorderId": -1,
      "originalCertFileName": "fischer@dkfqa.com.p12",
      "certFileType": "PKCS#12",
      "certFileDataB64": "MIIRQQ.....CAA=",
      "certPassword": "12345678",
      "certDescription": "Fischer's Cert",
      "certActive": true,
      "applyForHost": "192.168.0.100",
      "applyForPort": 499
    },
    {
      "certificateId": 3,
      "ownerUserId": 13,
      "recorderId": -1,
      "originalCertFileName": "miller@dkfqa.com.p12",
      "certFileType": "PKCS#12",
      "certFileDataB64": "MIIRXB.....CCAA=",
      "certPassword": "abcdefgh",
      "certDescription": "",
      "certActive": false,
      "applyForHost": "www.werwaswo.com",
      "applyForPort": 443
    }
  ],
  "isError": false
}

addProxyRecordersClientCertificate

Specific Request Fields:

  • recorderId (always -1 = apply for all proxy recorders)
  • certFileName (without disk path)
  • certFileType (always PKCS#12)
  • certFileDataB64 (the file data in base64 format)
  • certPassword
  • certDescription (optional, but not null)
  • certActive (if false then do not transmit the certificate to the proxy recorders)
  • applyForHost
  • applyForPort

Response Fields:

  • certificateId (the new unique ID)
  • ownerUserId (always the own user ID)
  • recorderId (always -1 = apply for all proxy recorders)
  • originalCertFileName (without disk path)
  • certFileType (always PKCS#12)
  • certDescription
  • certActive
  • applyForHost
  • applyForPort

Specific Error Flags:

  • certDescriptionError
  • applyForHostError
  • applyForPortError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"addProxyRecordersClientCertificate",
  "recorderId": -1,
  "certFileName": "felix@dkfqa.com.p12",
  "certFileType": "PKCS#12",
  "certFileDataB64": "MIIRQQIBAzCCEQ.....3dUWQICCAA=",
  "certPassword": "mammamia",
  "certDescription":"",
  "certActive": true,
  "applyForHost": "www.dkfqa.com",
  "applyForPort": 443
}

JSON Response Example (Success Case):

{
  "addedClientCertificate": {
    "certificateId": 5,
    "ownerUserId": 13,
    "recorderId": -1,
    "originalCertFileName": "felix@dkfqa.com.p12",
    "certFileType": "PKCS#12",
    "certDescription": "",
    "certActive": true,
    "applyForHost": "www.dkfqa.com",
    "applyForPort": 443
  },
  "isError": false
}

setProxyRecordersClientCertificateActive

Specific Request Fields:

  • certificateId
  • certActive (if false then do not transmit the certificate to the proxy recorders)

Response Fields:

  • certificateId
  • ownerUserId (always the own user ID)
  • recorderId (always -1 = apply for all proxy recorders)
  • originalCertFileName (without disk path)
  • certFileType (always PKCS#12)
  • certDescription
  • certActive
  • applyForHost
  • applyForPort

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"setProxyRecordersClientCertificateActive",
  "certificateId": 5,
  "certActive": false
}

JSON Response Example (Success Case):

{
  "updatedClientCertificate": {
    "certificateId": 5,
    "ownerUserId": 13,
    "recorderId": -1,
    "originalCertFileName": "felix@dkfqa.com.p12",
    "certFileType": "PKCS#12",
    "certDescription": "",
    "certActive": false,
    "applyForHost": "www.dkfqa.com",
    "applyForPort": 443
  },
  "isError": false
}

modifyProxyRecordersClientCertificate

Specific Request Fields:

  • certificateId
  • certDescription (optional but not null)
  • applyForHost (required)
  • applyForPort (required)

Response Fields:

  • certificateId
  • ownerUserId (always the own user ID)
  • recorderId (always -1 = apply for all proxy recorders)
  • originalCertFileName (without disk path)
  • certFileType (always PKCS#12)
  • certDescription
  • certActive
  • applyForHost
  • applyForPort

Specific Error Flags:

  • certDescriptionError
  • applyForHostError
  • applyForPortError

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"modifyProxyRecordersClientCertificate",
  "certificateId": 5,
  "certDescription": "My Cert",
  "applyForHost": "www.dkfqa.com",
  "applyForPort": 444
}

JSON Response Example (Success Case):

{
  "updatedClientCertificate": {
    "certificateId": 5,
    "ownerUserId": 13,
    "recorderId": -1,
    "originalCertFileName": "felix@dkfqa.com.p12",
    "certFileType": "PKCS#12",
    "certDescription": "My Cert",
    "certActive": false,
    "applyForHost": "www.dkfqa.com",
    "applyForPort": 444
  },
  "isError": false
}

deleteProxyRecordersClientCertificate

Specific Request Fields:

  • certificateId

Response Fields:

  • [none]

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"deleteProxyRecordersClientCertificate",
  "certificateId": 5
}

JSON Response Example (Success Case):

{"isError": false}

JSON Response Example (Error Case):

{"isError": true, "genericErrorText": "Invalid certificate Id"}

getTestjobTemplates

Specific Request Fields:

  • [none]

Response Fields:

  • testjobTemplatesArray

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getTestjobTemplates"
}

JSON Response Example (Success Case):

{
  "testjobTemplatesArray": [
    {
      "testjobTemplate": {
        "templateId": 10,
        "templateName": "SimpleTest 1VU",
        "templateDescription": "",
        "testjobProperties": {
          "testjobResultFileName": "",
          "executeMeasuringAgentClusterInfo": "",
          "testjobConcurrentUsers": "1",
          "testjobDescription": "SimpleTest",
          "testjobDebugMeasuring": "false",
          "testjobMaxTestDuration": "30",
          "isClusterJob": "",
          "testjobRampUpTime": "10",
          "localTestjobId": "",
          "testjobMaxLoopsPerUser": "1",
          "productVersion": "4.8.23",
          "remoteTestjobId": "",
          "testjobAdditionalArguments": "",
          "definedFromTestId": "384",
          "testjobSignature": "",
          "testjobDelayPerLoop": "1000",
          "testjobExitCode": "",
          "createTimeStamp": "1694549684261",
          "userInputFieldsFileName": "",
          "testjobType": "load test",
          "enableAutomaticFileSync": "true",
          "testjobState": "invalid",
          "isClusterControllerJobProperties": "",
          "testjobDebugExecution": "false",
          "executeOnUserMeasuringAgentId": "",
          "definedFromTimeZoneId": "Europe/Berlin",
          "executeMeasuringAgentInfo": "",
          "executeOnMeasuringAgentClusterId": ""
        },
        "hasUserInputFields": false
      },
      "testIsHealthy": true
    },
    {
      "testjobTemplate": {
        "templateId": 11,
        "templateName": "SimpleTestWithInputFields 10VU",
        "templateDescription": "",
        "testjobProperties": {
          "testjobResultFileName": "",
          "executeMeasuringAgentClusterInfo": "",
          "testjobConcurrentUsers": "10",
          "testjobDescription": "SimpleTestWithInputFields",
          "testjobDebugMeasuring": "false",
          "testjobMaxTestDuration": "60",
          "isClusterJob": "",
          "testjobRampUpTime": "10",
          "localTestjobId": "",
          "testjobMaxLoopsPerUser": "5",
          "productVersion": "4.8.23",
          "remoteTestjobId": "",
          "testjobAdditionalArguments": "",
          "definedFromTestId": "385",
          "testjobSignature": "",
          "testjobDelayPerLoop": "1000",
          "testjobExitCode": "",
          "createTimeStamp": "1695047319785",
          "userInputFieldsFileName": "InputFields_SimpleTestWithInputFields.json",
          "testjobType": "load test",
          "enableAutomaticFileSync": "true",
          "testjobState": "invalid",
          "isClusterControllerJobProperties": "",
          "testjobDebugExecution": "true",
          "executeOnUserMeasuringAgentId": "",
          "definedFromTimeZoneId": "Europe/Berlin",
          "executeMeasuringAgentInfo": "",
          "executeOnMeasuringAgentClusterId": ""
        },
        "hasUserInputFields": true,
        "userInputFieldsFile": {
          "useShortNames": false,
          "magicPattern": "UserInputFields",
          "productVersion": "4.8.23",
          "userInputFieldsArray": [
            {
              "useShortNames": false,
              "productVersion": "4.8.23",
              "label": "Input Host",
              "variableName": "vHost",
              "inputType": "string",
              "defaultValue": "126.3.4.5",
              "currentValue": "126.3.4.5"
            },
            {
              "useShortNames": false,
              "productVersion": "4.8.23",
              "label": "Input Port",
              "variableName": "vPort",
              "inputType": "integer",
              "defaultValue": "444",
              "currentValue": "444"
            }
          ]
        }
      },
      "testIsHealthy": true
    }
  ],
  "isError": false
}

defineNewTestjobFromTemplate

Specific Request Fields:

  • templateId
  • measuringAgentOrClusterId
  • isCluster (boolean)
  • jobDescription

Response Fields:

  • newTestjobId

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"defineNewTestjobFromTemplate",
  "templateId":10,
  "measuringAgentOrClusterId":65,
  "isCluster":false,
  "jobDescription": "Simple Test"
}

JSON Response Example (Success Case):

{ 
  "newTestjobId":33533,
  "isError":false
}

submitTestjob

Specific Request Fields:

  • localTestjobId

Response Fields:

  • agentResponse (for measuring agents), or
  • controllerResponse (for cluster controllers)

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"submitTestjob",
  "localTestjobId":33534
}

JSON Response Example (Success Case):

{
  "isClusterJob": false,
  "agentResponse": {
    "remoteTestjobId": 24129,
    "httpExecuteTimeMillis": 338
  },
  "isError": false
}

makeTestjobReadyToRun

Specific Request Fields:

  • localTestjobId

Response Fields:

  • agentResponse (for measuring agents), or
  • controllerResponse (for cluster controllers)

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"makeTestjobReadyToRun",
  "localTestjobId":33534
}

JSON Response Example (Success Case):

{
  "isClusterJob": false,
  "agentResponse": {
    "testjobProperties": {
      "testjobResultFileName": "",
      "executeMeasuringAgentClusterInfo": "",
      "testjobConcurrentUsers": "1",
      "testjobDescription": "Simple Test",
      "testjobDebugMeasuring": "false",
      "testjobMaxTestDuration": "30",
      "isClusterJob": "false",
      "testjobRampUpTime": "10",
      "localTestjobId": "33534",
      "testjobMaxLoopsPerUser": "1",
      "productVersion": "4.8.18",
      "remoteTestjobId": "24129",
      "testjobAdditionalArguments": "",
      "definedFromTestId": "384",
      "testjobSignature": "Z9B963yIj232nht1DIX5aSRt8m77QuXpvVA5736Tl9Wc7UZ7jOiU3l6UC7y3Nx6CXDDZB4qUg4FHDtTuHsD9xd0T/CSq/g==",
      "testjobDelayPerLoop": "1000",
      "testjobExitCode": "",
      "createTimeStamp": "1695050460395",
      "userInputFieldsFileName": "",
      "testjobType": "load test",
      "enableAutomaticFileSync": "true",
      "testjobState": "ready to run",
      "isClusterControllerJobProperties": "",
      "testjobDebugExecution": "false",
      "executeOnUserMeasuringAgentId": "65",
      "definedFromTimeZoneId": "Europe/Berlin",
      "executeMeasuringAgentInfo": "agent2.realload.com:8080",
      "executeOnMeasuringAgentClusterId": ""
    },
    "httpExecuteTimeMillis": 2871
  },
  "isError": false
}

startTestjob

Specific Request Fields:

  • localTestjobId

Response Fields:

  • agentResponse (for measuring agents), or
  • controllerResponse (for cluster controllers)

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"startTestjob",
  "localTestjobId":33534
}

JSON Response Example (Success Case):

{
  "isClusterJob": false,
  "agentResponse": {
    "testjobProperties": {
      "testjobResultFileName": "",
      "executeMeasuringAgentClusterInfo": "",
      "testjobConcurrentUsers": "1",
      "testjobDescription": "Simple Test",
      "testjobDebugMeasuring": "false",
      "testjobMaxTestDuration": "30",
      "isClusterJob": "false",
      "testjobRampUpTime": "10",
      "localTestjobId": "33534",
      "testjobMaxLoopsPerUser": "1",
      "productVersion": "4.8.18",
      "remoteTestjobId": "24129",
      "testjobAdditionalArguments": "",
      "definedFromTestId": "384",
      "testjobSignature": "Z9B963yIj232nht1DIX5aSRt8m77QuXpvVA5736Tl9Wc7UZ7jOiU3l6UC7y3Nx6CXDDZB4qUg4FHDtTuHsD9xd0T/CSq/g==",
      "testjobDelayPerLoop": "1000",
      "testjobExitCode": "",
      "createTimeStamp": "1695050460395",
      "userInputFieldsFileName": "",
      "testjobType": "load test",
      "enableAutomaticFileSync": "true",
      "testjobState": "running",
      "isClusterControllerJobProperties": "",
      "testjobDebugExecution": "false",
      "executeOnUserMeasuringAgentId": "65",
      "definedFromTimeZoneId": "Europe/Berlin",
      "executeMeasuringAgentInfo": "agent2.realload.com:8080",
      "executeOnMeasuringAgentClusterId": ""
    },
    "httpExecuteTimeMillis": 249
  },
  "isError": false
}

getMeasuringAgentTestjobs

Specific Request Fields:

  • measuringAgentId
  • synchronizeLocalTestjobsState (boolean)

Response Fields:

  • agentResponse

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getMeasuringAgentTestjobs",
  "measuringAgentId":65,
  "synchronizeLocalTestjobsState":true
}

JSON Response Example (Success Case):

{
  "agentResponse": {
    "allTestjobsArray": [
      {
        "testjobProperties": {
          "testjobResultFileName": "TestResult_RealloadTest_2023-09-09@23-45-34.json",
          "executeMeasuringAgentClusterInfo": "",
          "testjobConcurrentUsers": "1",
          "testjobDescription": "RealloadTest",
          "testjobDebugMeasuring": "false",
          "testjobMaxTestDuration": "60",
          "isClusterJob": "false",
          "testjobRampUpTime": "10",
          "localTestjobId": "30717",
          "testjobMaxLoopsPerUser": "1",
          "productVersion": "4.8.18",
          "remoteTestjobId": "15240",
          "testjobAdditionalArguments": "",
          "definedFromTestId": "379",
          "testjobSignature": "NeYJG4vf8/joAwz4nR4Fie3W0Qr7ijps25ONuk6F5BLghuD8/clPL9mBKc/ogQiic7wI8OXOf53Mi4YDCpg4dQzuaWQ==",
          "testjobDelayPerLoop": "1000",
          "testjobExitCode": "0",
          "createTimeStamp": "1694295923799",
          "userInputFieldsFileName": "",
          "testjobType": "load test",
          "enableAutomaticFileSync": "true",
          "testjobState": "completed",
          "isClusterControllerJobProperties": "",
          "testjobDebugExecution": "true",
          "executeOnUserMeasuringAgentId": "65",
          "definedFromTimeZoneId": "Europe/Berlin",
          "executeMeasuringAgentInfo": "agent2.realload.com:8080",
          "executeOnMeasuringAgentClusterId": ""
        },
        "testProperties": {
          "referencedResourceFilesList": [
            {
              "projectId": 130,
              "testplanId": 203,
              "fileName": "com.dkfqs.selenium.jar"
            },
            {
              "projectId": 130,
              "testplanId": 203,
              "fileName": "commons-io-2.13.0.jar"
            },
            {
              "projectId": 130,
              "testplanId": 203,
              "fileName": "hamcrest-core-1.3.jar"
            },
            {
              "projectId": 130,
              "testplanId": 203,
              "fileName": "com.dkfqs.tools.jar"
            },
            {
              "projectId": 130,
              "testplanId": 203,
              "fileName": "junit-4.13.2.jar"
            },
            {
              "projectId": 130,
              "testplanId": 203,
              "fileName": "selenium_bundle-4.12.1.jar"
            }
          ],
          "jsonConfigObject": {
            "productVersion": "4.8.20",
            "jUnitConfigExecutionClassArray": [
              {
                "productVersion": "4.8.20",
                "executingClassName": "RealloadTest",
                "testMethodNamesArray": [
                  "realload"
                ]
              }
            ],
            "seleniumWebBrowserType": "Firefox"
          },
          "executingScript": "RealloadTest.jar",
          "executingScriptResourceFileList": "",
          "createTimeStamp": "1694293491984",
          "testDescription": "",
          "definedFromTestplanId": "251",
          "productVersion": "4.8.20",
          "definedFromProjectId": "137",
          "visibleTestName": "RealloadTest",
          "scriptType": "Selenium4byJUnit4",
          "testId": "379"
        }
      },
      {
        "testjobProperties": {
          "testjobResultFileName": "TestResult_SimpleTest_2023-09-18@17-01-08.json",
          "executeMeasuringAgentClusterInfo": "",
          "testjobConcurrentUsers": "1",
          "testjobDescription": "Simple Test",
          "testjobDebugMeasuring": "false",
          "testjobMaxTestDuration": "30",
          "isClusterJob": "false",
          "testjobRampUpTime": "10",
          "localTestjobId": "33533",
          "testjobMaxLoopsPerUser": "1",
          "productVersion": "4.8.18",
          "remoteTestjobId": "24112",
          "testjobAdditionalArguments": "",
          "definedFromTestId": "384",
          "testjobSignature": "JYstx+myVNqbyVMr24u4Pi8IXkLGH0iXUquRh5+NL0veKs4DRJX/w2ZT77wLXF70J9YmTPzR7g==",
          "testjobDelayPerLoop": "1000",
          "testjobExitCode": "0",
          "createTimeStamp": "1695049264730",
          "userInputFieldsFileName": "",
          "testjobType": "load test",
          "enableAutomaticFileSync": "true",
          "testjobState": "completed",
          "isClusterControllerJobProperties": "",
          "testjobDebugExecution": "false",
          "executeOnUserMeasuringAgentId": "65",
          "definedFromTimeZoneId": "Europe/Berlin",
          "executeMeasuringAgentInfo": "agent2.realload.com:8080",
          "executeOnMeasuringAgentClusterId": ""
        },
        "testProperties": {
          "referencedResourceFilesList": [
            {
              "projectId": 130,
              "testplanId": 203,
              "fileName": "com.dkfqs.tools.jar"
            }
          ],
          "jsonConfigObject": {},
          "executingScript": "SimpleTest.jar",
          "executingScriptResourceFileList": "",
          "createTimeStamp": "1694549112155",
          "testDescription": "",
          "definedFromTestplanId": "251",
          "productVersion": "4.8.21",
          "definedFromProjectId": "137",
          "visibleTestName": "SimpleTest",
          "scriptType": "OpenJDK11Jar",
          "testId": "384"
        }
      },
      {
        "testjobProperties": {
          "testjobResultFileName": "TestResult_SimpleTest_2023-09-18@17-51-53.json",
          "executeMeasuringAgentClusterInfo": "",
          "testjobConcurrentUsers": "1",
          "testjobDescription": "Simple Test",
          "testjobDebugMeasuring": "false",
          "testjobMaxTestDuration": "30",
          "isClusterJob": "false",
          "testjobRampUpTime": "10",
          "localTestjobId": "33534",
          "testjobMaxLoopsPerUser": "1",
          "productVersion": "4.8.18",
          "remoteTestjobId": "24129",
          "testjobAdditionalArguments": "",
          "definedFromTestId": "384",
          "testjobSignature": "Z9B963yIj232nht1DIX5aSRt8m77QuXYjP9rn4OBSq/g==",
          "testjobDelayPerLoop": "1000",
          "testjobExitCode": "0",
          "createTimeStamp": "1695050460395",
          "userInputFieldsFileName": "",
          "testjobType": "load test",
          "enableAutomaticFileSync": "true",
          "testjobState": "completed",
          "isClusterControllerJobProperties": "",
          "testjobDebugExecution": "false",
          "executeOnUserMeasuringAgentId": "65",
          "definedFromTimeZoneId": "Europe/Berlin",
          "executeMeasuringAgentInfo": "agent2.realload.com:8080",
          "executeOnMeasuringAgentClusterId": ""
        },
        "testProperties": {
          "referencedResourceFilesList": [
            {
              "projectId": 130,
              "testplanId": 203,
              "fileName": "com.dkfqs.tools.jar"
            }
          ],
          "jsonConfigObject": {},
          "executingScript": "SimpleTest.jar",
          "executingScriptResourceFileList": "",
          "createTimeStamp": "1694549112155",
          "testDescription": "",
          "definedFromTestplanId": "251",
          "productVersion": "4.8.21",
          "definedFromProjectId": "137",
          "visibleTestName": "SimpleTest",
          "scriptType": "OpenJDK11Jar",
          "testId": "384"
        }
      }
    ],
    "httpExecuteTimeMillis": 141
  },
  "isError": false
}

getTestjobOutDirectoryFilesInfo

Specific Request Fields:

  • localTestjobId

Response Fields:

  • filesInfoArray (for measuring agents), or
  • controllerResponse (for cluster controllers)

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getTestjobOutDirectoryFilesInfo",
  "localTestjobId":33534
}

JSON Response Example (Success Case):

{
  "isClusterJob": false,
  "measuringAgentData": {
    "agentId": 65,
    "createdBySystem": false,
    "ownerUserId": 13,
    "agentActive": true,
    "agentDescription": "Demo Agent 2",
    "agentHost": "agent2.realload.com",
    "agentPort": 8080,
    "authToken": "************",
    "sharedMeasuringAgentTemplateId": -1,
    "isLaunchedByCloudCredits": false
  },
  "filesInfoArray": [
    {
      "fileName": "DataCollector.err",
      "fileSize": 0,
      "lastModified": 1695051456261,
      "mimeType": "application/octet-stream"
    },
    {
      "fileName": "DataCollector.out",
      "fileSize": 5647,
      "lastModified": 1695052318516,
      "mimeType": "application/octet-stream"
    },
    {
      "fileName": "DataCollector.pid",
      "fileSize": 8,
      "lastModified": 1695051456273,
      "mimeType": "application/octet-stream"
    },
    {
      "fileName": "DataCollector.port",
      "fileSize": 6,
      "lastModified": 1695051457729,
      "mimeType": "application/octet-stream"
    },
    {
      "fileName": "DataCollector.state",
      "fileSize": 2,
      "lastModified": 1695052318512,
      "mimeType": "application/octet-stream"
    },
    {
      "fileName": "TestResult_SimpleTest_2023-09-18@17-51-53.json",
      "fileSize": 7421,
      "lastModified": 1695052315488,
      "mimeType": "application/json"
    },
    {
      "fileName": "user_1_statistics.out",
      "fileSize": 5037,
      "lastModified": 1695052313788,
      "mimeType": "application/octet-stream"
    },
    {
      "fileName": "users.out",
      "fileSize": 1923,
      "lastModified": 1695052314000,
      "mimeType": "application/octet-stream"
    }
  ],
  "isError": false
}

getTestjobOutDirectoryFile

Specific Request Fields:

  • localTestjobId
  • clusterMemberId (optional, -1 = no cluster member file)
  • fileName

Response Fields:

  • filesInfoArray (for measuring agents), or
  • controllerResponse (for cluster controllers)

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getTestjobOutDirectoryFile",
  "localTestjobId":33534,
  "fileName":"users.out"
}

JSON Response Example (Success Case):

{
  "isClusterJob": false,
  "measuringAgentData": {
    "agentId": 65,
    "createdBySystem": false,
    "ownerUserId": 13,
    "agentActive": true,
    "agentDescription": "Demo Agent 2",
    "agentHost": "agent2.realload.com",
    "agentPort": 8080,
    "authToken": "************",
    "sharedMeasuringAgentTemplateId": -1,
    "isLaunchedByCloudCredits": false
  },
  "fileContentB64": "MjAyMy0wOS0xOCAxNTo1MTo1Mi42MjYgfCBtYWluIHwgSU5GTyB8IE1heC4gSmF2YSBNZW1vcnkgPSAzMzAwIE1CCjIwMjMtMDktMTggMTU6NTE6NTIuNjU1IHwgbWFpbiB8IElORk8gfCBUaW1lIFpvbmUgPSBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZSArMDA6MDAKMjAyMy0wOS0xOCAxNTo1MTo1Mi42NjggfCBtYWluIHwgSU5GTyB8IC0tLSB2dnYgLS0tIHJlc291cmNlIGZpbGVzIC0tLSB2dnYgLS0tCjIwMjMtMDktMTggMTU6NTE6NTIuNjY5IHwgbWFpbiB8IElORk8gfCAtLS0gXl5eIC0tLSByZXNvdXJjZSBmaWxlcyAtLS0gXl5eIC0tLQoyMDIzLTA5LTE4IDE1OjUxOjUyLjY2OSB8IG1haW4gfCBJTkZPIHwgLS0tIHZ2diAtLS0gZ2VuZXJpYyBhcmd1bWVudHMgLS0tIHZ2diAtLS0KMjAyMy0wOS0xOCAxNTo1MTo1Mi42NjkgfCBtYWluIHwgSU5GTyB8IHVzZXJzID0gMQoyMDIzLTA5LTE4IDE1OjUxOjUyLjY2OSB8IG1haW4gfCBJTkZPIHwgZHVyYXRpb24gPSAzMAoyMDIzLTA5LTE4IDE1OjUxOjUyLjY3MCB8IG1haW4gfCBJTkZPIHwgbWF4TG9vcHMgPSAxCjIwMjMtMDktMTggMTU6NTE6NTIuNjcwIHwgbWFpbiB8IElORk8gfCBkZWxheVBlckxvb3AgPSAxMDAwCjIwMjMtMDktMTggMTU6NTE6NTIuNjcwIHwgbWFpbiB8IElORk8gfCByYW1wdXBUaW1lID0gMTAKMjAyMy0wOS0xOCAxNTo1MTo1Mi42NzAgfCBtYWluIHwgSU5GTyB8IGRhdGFPdXRwdXREaXIgPSAvaG9tZS9ka2Zxcy9hZ2VudC91c2Vyc0RhdGEvVXNlcl8xMy9UZXN0Sm9icy9UZXN0am9iXzI0MTI5L291dAoyMDIzLTA5LTE4IDE1OjUxOjUyLjY3MCB8IG1haW4gfCBJTkZPIHwgZGVidWdFeGVjID0gZmFsc2UKMjAyMy0wOS0xOCAxNTo1MTo1Mi42NzEgfCBtYWluIHwgSU5GTyB8IGRlYnVnRGF0YSA9IGZhbHNlCjIwMjMtMDktMTggMTU6NTE6NTIuNjcxIHwgbWFpbiB8IElORk8gfCBkZXNjcmlwdGlvbiA9IFNpbXBsZSBUZXN0CjIwMjMtMDktMTggMTU6NTE6NTIuNjcxIHwgbWFpbiB8IElORk8gfCAtLS0gXl5eIC0tLSBnZW5lcmljIGFyZ3VtZW50cyAtLS0gXl5eIC0tLQoyMDIzLTA5LTE4IDE1OjUxOjUyLjkyMSB8IG1haW4gfCBJTkZPIHwgSlZNIFdhcm11cCBwZXJmb3JtZWQgaW4gMjM2IG1zCjIwMjMtMDktMTggMTU6NTE6NTIuOTc3IHwgbWFpbiB8IElORk8gfCAtLS0gdnZ2IC0tLSBzcGVjaWZpYyBhcmd1bWVudHMgLS0tIHZ2diAtLS0KMjAyMy0wOS0xOCAxNTo1MTo1Mi45OTQgfCBtYWluIHwgSU5GTyB8IHRjcFRpbWVvdXQgPSAxMDAwMAoyMDIzLTA5LTE4IDE1OjUxOjUyLjk5NSB8IG1haW4gfCBJTkZPIHwgc3NsVGltZW91dCA9IDUwMDAKMjAyMy0wOS0xOCAxNTo1MTo1Mi45OTcgfCBtYWluIHwgSU5GTyB8IGh0dHBUaW1lb3V0ID0gMzAwMDAKMjAyMy0wOS0xOCAxNTo1MTo1Mi45OTcgfCBtYWluIHwgSU5GTyB8IC0tLSBeXl4gLS0tIHNwZWNpZmljIGFyZ3VtZW50cyAtLS0gXl5eIC0tLQoyMDIzLTA5LTE4IDE1OjUxOjUzLjAwMiB8IG1haW4gfCBJTkZPIHwgW1N0YXJ0IG9mIFRlc3RdCjIwMjMtMDktMTggMTU6NTE6NTMuMDAzIHwgVXNlci0xIHwgSU5GTyB8IFVzZXIgc3RhcnRlZAoyMDIzLTA5LTE4IDE1OjUxOjUzLjAyNiB8IHBlcmlvZGljLXRocmVhZCB8IElORk8gfCBUaHJlYWQgc3RhcnRlZAoyMDIzLTA5LTE4IDE1OjUxOjUzLjAyNiB8IFVzZXItMSB8IElORk8gfCBTdGFydCBleGVjdXRlIHNlc3Npb24gbm8uIDEgLi4uCjIwMjMtMDktMTggMTU6NTE6NTMuNTk3IHwgVXNlci0xIHwgSU5GTyB8IC4uLiBFbmQgZXhlY3V0ZSBzZXNzaW9uIG5vLiAxIHN1Y2Nlc3NmdWwgcGFzc2VkCjIwMjMtMDktMTggMTU6NTE6NTMuNjQ5IHwgVXNlci0xIHwgSU5GTyB8IFVzZXIgbm9ybWFsIHRlcm1pbmF0ZWQKMjAyMy0wOS0xOCAxNTo1MTo1NC4wMDMgfCBtYWluIHwgSU5GTyB8IFtFbmQgb2YgVGVzdF0K",
  "isError": false
}

saveTestjobOutDirectoryFileToProjectTree

Specific Request Fields:

  • localTestjobId
  • clusterMemberId (optional, -1 = no cluster member file)
  • fileName
  • saveAsFileName
  • projectId
  • resourceSetId

Response Fields:

  • fileHashCode

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"saveTestjobOutDirectoryFileToProjectTree",
  "localTestjobId":33534,
  "fileName":"users.out",
  "saveAsFileName":"users.out",
  "projectId":137,
  "resourceSetId":251
}

JSON Response Example (Success Case):

{
  "isClusterJob": false,
  "fileHashCode": 4557110,
  "isError": false
}

deleteTestjob

Specific Request Fields:

  • localTestjobId
  • deleteAlsoRemoteTestjob (boolean)

Response Fields:

  • localTestjobState (before the testjob was delete)
  • agentResponse (for measuring agents), or
  • controllerResponse (for cluster controllers)

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"deleteTestjob",
  "localTestjobId":33534,
  "deleteAlsoRemoteTestjob":true
}

JSON Response Example (Success Case):

{
  "isClusterJob": false,
  "localTestjobState": "completed",
  "agentResponse": {
    "httpExecuteTimeMillis": 143
  },
  "isError": false
}

getTestExecutionSuites

Specific Request Fields:

  • [none]

Response Fields:

  • testExecutionSuitesArray
    • testExecutionSuite
    • testRunResultsArray

Specific Error Flags:

  • [none]

Values of testRunResultsArray[n].executionState :

  • EXECUTION_STATE_INITIALIZED = 0;
  • EXECUTION_STATE_RUNNING = 1;
  • EXECUTION_STATE_RUN_COMPLETED = 2;
  • EXECUTION_STATE_RUN_FAILED = 3;
  • EXECUTION_STATE_RUN_ABORTED = 4;

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getTestExecutionSuites"
}

JSON Response Example (Success Case):

{
  "testExecutionSuitesArray": [
    {
      "testExecutionSuite": {
        "testExecutionSuiteId": 2,
        "testExecutionSuiteName": "First Suite",
        "testExecutionSuiteDescription": "",
        "topExecuteOnMeasuringAgentOrClusterId": "m-145",
        "topExecutionOrder": 2,
        "totalNumberOfTestjobs": 3,
        "isTestExecutionSuiteHealthy": true
      },
      "testRunResultsArray": [
        {
          "userId": 13,
          "subUserId": -1,
          "testRunId": 1,
          "executionState": 2,
          "annotationArray": [],
          "testRunStartTimestamp": 1699716014207,
          "testRunLastUpdatedTimestamp": 1699716054368,
          "numTestjobTemplatesToExecute": 3,
          "numTestjobTemplatesExecutionPassed": 3,
          "numTestjobTemplatesExecutionFailed": 0,
          "totalSessionsPassed": 8,
          "totalSessionsFailed": 0,
          "totalSessionsPassedTimeSum": 5295,
          "totalSamplesPassed": 12,
          "totalSamplesFailed": 0,
          "maxConcurrentUsers": 1,
          "maxPendingSamples": 1
        },
        {
          "userId": 13,
          "subUserId": -1,
          "testRunId": 2,
          "executionState": 2,
          "annotationArray": [],
          "testRunStartTimestamp": 1699716108571,
          "testRunLastUpdatedTimestamp": 1699716151826,
          "numTestjobTemplatesToExecute": 3,
          "numTestjobTemplatesExecutionPassed": 3,
          "numTestjobTemplatesExecutionFailed": 0,
          "totalSessionsPassed": 8,
          "totalSessionsFailed": 0,
          "totalSessionsPassedTimeSum": 5503,
          "totalSamplesPassed": 12,
          "totalSamplesFailed": 0,
          "maxConcurrentUsers": 1,
          "maxPendingSamples": 1
        }
      ]
    },
    {
      "testExecutionSuite": {
        "testExecutionSuiteId": 3,
        "testExecutionSuiteName": "Second Suite Long Run",
        "testExecutionSuiteDescription": "",
        "topExecuteOnMeasuringAgentOrClusterId": "c-27",
        "topExecutionOrder": 1,
        "totalNumberOfTestjobs": 2,
        "isTestExecutionSuiteHealthy": true
      },
      "testRunResultsArray": [
        {
          "userId": 13,
          "subUserId": -1,
          "testRunId": 1,
          "executionState": 2,
          "annotationArray": [],
          "testRunStartTimestamp": 1699715808192,
          "testRunLastUpdatedTimestamp": 1699715867468,
          "numTestjobTemplatesToExecute": 2,
          "numTestjobTemplatesExecutionPassed": 2,
          "numTestjobTemplatesExecutionFailed": 0,
          "totalSessionsPassed": 44,
          "totalSessionsFailed": 0,
          "totalSessionsPassedTimeSum": 4400,
          "totalSamplesPassed": 44,
          "totalSamplesFailed": 0,
          "maxConcurrentUsers": 4,
          "maxPendingSamples": 4
        },
        {
          "userId": 13,
          "subUserId": -1,
          "testRunId": 2,
          "executionState": 2,
          "annotationArray": [],
          "testRunStartTimestamp": 1699715952212,
          "testRunLastUpdatedTimestamp": 1699716012124,
          "numTestjobTemplatesToExecute": 2,
          "numTestjobTemplatesExecutionPassed": 2,
          "numTestjobTemplatesExecutionFailed": 0,
          "totalSessionsPassed": 44,
          "totalSessionsFailed": 0,
          "totalSessionsPassedTimeSum": 4400,
          "totalSamplesPassed": 44,
          "totalSamplesFailed": 0,
          "maxConcurrentUsers": 4,
          "maxPendingSamples": 3
        },
        {
          "userId": 13,
          "subUserId": -1,
          "testRunId": 3,
          "executionState": 2,
          "annotationArray": [],
          "testRunStartTimestamp": 1699717843777,
          "testRunLastUpdatedTimestamp": 1699717905674,
          "numTestjobTemplatesToExecute": 2,
          "numTestjobTemplatesExecutionPassed": 2,
          "numTestjobTemplatesExecutionFailed": 0,
          "totalSessionsPassed": 43,
          "totalSessionsFailed": 0,
          "totalSessionsPassedTimeSum": 4300,
          "totalSamplesPassed": 43,
          "totalSamplesFailed": 0,
          "maxConcurrentUsers": 4,
          "maxPendingSamples": 3
        }
      ]
    }
  ],
  "isError": false
}

getCurrentlyRunningTestExecutionSuiteIds

Specific Request Fields:

  • [none]

Response Fields:

  • testExecutionSuiteIdArray

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getCurrentlyRunningTestExecutionSuiteIds"
}

JSON Response Example (Success Case):

{
  "testExecutionSuiteIdArray": [
    3
  ],
  "isError": false
}

startTestExecutionSuiteTestRun

Specific Request Fields:

  • testExecutionSuiteId
  • testRunAnnotation (optional, can also be an empty string)
  • topExecuteOnMeasuringAgentOrClusterId (the ’top execution’ measuring agent id or cluster id)
  • topExecuteOnCluster (boolean, if true: top execution = cluster id, or false: top execution = measuring agent id)

Response Fields:

  • newTestRunId

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"startTestExecutionSuiteTestRun",
  "testExecutionSuiteId":3,
  "testRunAnnotation":"",
  "topExecuteOnMeasuringAgentOrClusterId":143,
  "topExecuteOnCluster":false
}

JSON Response Example (Success Case):

{
  "newTestRunId": 5,
  "isError": false
}

JSON Response Example (Error Case):

{
  "isError": true,
  "genericErrorText": "Test execution suite currently running"
}

getTestExecutionSuiteTestRunResultDetail

Specific Request Fields:

  • testExecutionSuiteId
  • testRunId

Response Fields:

  • testRunResultDetail
    • testRunResult
    • executedByUserNickname
    • testjobsOutFilesArray

Specific Error Flags:

  • [none]

Values of executionState :

  • EXECUTION_STATE_INITIALIZED = 0;
  • EXECUTION_STATE_RUNNING = 1;
  • EXECUTION_STATE_RUN_COMPLETED = 2;
  • EXECUTION_STATE_RUN_FAILED = 3;
  • EXECUTION_STATE_RUN_ABORTED = 4;

Values of logLevel :

  • LOG_DEBUG = 4;
  • LOG_INFO = 7;
  • LOG_WARN = 8;
  • LOG_ERROR = 9;
  • LOG_FATAL = 10;

Values of elementType :

  • ELEMENT_TYPE_TESTJOB_TEMPLATE = 1;
  • ELEMENT_TYPE_EXECUTION_GROUP = 10;

Values of executionOrder :

  • EXECUTION_ORDER_SEQUENTIAL = 1;
  • EXECUTION_ORDER_PARALLEL = 2;

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getTestExecutionSuiteTestRunResultDetail",
  "testExecutionSuiteId":3,
  "testRunId":5
}

JSON Response Example (Success Case):

{
  "testRunResultDetail": {
    "testRunResult": {
      "userId": 13,
      "subUserId": -1,
      "testExecutionSuite": {
        "testExecutionSuiteId": 3,
        "testExecutionSuiteName": "Second Suite Long Run",
        "testExecutionSuiteDescription": "",
        "topExecuteOnMeasuringAgentOrClusterId": "c-27",
        "topExecutionOrder": 1,
        "testExecutionElementsArray": [
          {
            "productVersion": "4.8.24",
            "elementType": 10,
            "elementId": 737867696,
            "elementInactive": false,
            "executionGroupName": "Top Group",
            "executionGroupDescription": "",
            "executionOrder": 2,
            "executeOnMeasuringAgentOrClusterId": "",
            "executionElementsArray": [
              {
                "productVersion": "4.8.24",
                "elementType": 1,
                "elementId": 1040705161,
                "elementInactive": false,
                "templateId": 18
              },
              {
                "productVersion": "4.8.24",
                "elementType": 1,
                "elementId": 493179849,
                "elementInactive": false,
                "templateId": 18
              }
            ]
          }
        ]
      },
      "testjobTemplatesArray": [
        {
          "templateId": 18,
          "templateName": "Simple Test 2VU Long Run",
          "templateDescription": "",
          "testjobProperties": {
            "testjobResultFileName": "",
            "executeMeasuringAgentClusterInfo": "",
            "testjobConcurrentUsers": "2",
            "testjobDescription": "Simple Test 2VU Long Run",
            "testjobDebugMeasuring": "false",
            "testjobMaxTestDuration": "30",
            "isClusterJob": "",
            "testjobRampUpTime": "1",
            "localTestjobId": "",
            "testjobMaxLoopsPerUser": "-1",
            "productVersion": "4.8.24",
            "remoteTestjobId": "",
            "testjobAdditionalArguments": "",
            "definedFromTestId": "384",
            "testjobSignature": "",
            "testjobDelayPerLoop": "3000",
            "testjobExitCode": "",
            "createTimeStamp": "1697224057753",
            "userInputFieldsFileName": "",
            "testjobType": "load test",
            "enableAutomaticFileSync": "true",
            "testjobState": "invalid",
            "isClusterControllerJobProperties": "",
            "testjobDebugExecution": "false",
            "executeOnUserMeasuringAgentId": "",
            "definedFromTimeZoneId": "Europe/Berlin",
            "executeMeasuringAgentInfo": "",
            "executeOnMeasuringAgentClusterId": ""
          },
          "hasUserInputFields": false
        }
      ],
      "testRunId": 5,
      "executorLog": {
        "userId": 13,
        "testExecutionSuiteId": 3,
        "testRunId": 5,
        "logEntriesArray": [
          {
            "timestamp": 1699726961703,
            "logLevel": 7,
            "threadName": "TestSuiteExecutor-S:3-R:5",
            "testExecutionElementId": -1,
            "logMessage": "Test run #5 started",
            "stacktraceArray": []
          },
          {
            "timestamp": 1699726963704,
            "logLevel": 7,
            "threadName": "TestSuiteExecutorGroup-S:3-R:5-G:737867696",
            "testExecutionElementId": 737867696,
            "logMessage": "Execution Group 'Top Group' started",
            "stacktraceArray": []
          },
          {
            "timestamp": 1699726963706,
            "logLevel": 7,
            "threadName": "TestSuiteExecutorGroup-S:3-R:5-T:1040705161",
            "testExecutionElementId": 1040705161,
            "logMessage": "Test Job Template 'Simple Test 2VU Long Run' execution started",
            "stacktraceArray": []
          },
          {
            "timestamp": 1699726963708,
            "logLevel": 7,
            "threadName": "TestSuiteExecutorGroup-S:3-R:5-T:493179849",
            "testExecutionElementId": 493179849,
            "logMessage": "Test Job Template 'Simple Test 2VU Long Run' execution started",
            "stacktraceArray": []
          },
          {
            "timestamp": 1699726963731,
            "logLevel": 7,
            "threadName": "TestSuiteExecutorGroup-S:3-R:5-T:1040705161",
            "testExecutionElementId": 1040705161,
            "logMessage": "Test Job Template 'Simple Test 2VU Long Run' test job defined with id = 34442",
            "stacktraceArray": []
          },
          {
            "timestamp": 1699726963753,
            "logLevel": 7,
            "threadName": "TestSuiteExecutorGroup-S:3-R:5-T:493179849",
            "testExecutionElementId": 493179849,
            "logMessage": "Test Job Template 'Simple Test 2VU Long Run' test job defined with id = 34443",
            "stacktraceArray": []
          },
          {
            "timestamp": 1699726964081,
            "logLevel": 7,
            "threadName": "TestSuiteExecutorGroup-S:3-R:5-T:1040705161",
            "testExecutionElementId": 1040705161,
            "logMessage": "Test Job Template 'Simple Test 2VU Long Run' test job submitted to 'Shared Agent 2', remote test job id = 791",
            "stacktraceArray": []
          },
          {
            "timestamp": 1699726964128,
            "logLevel": 7,
            "threadName": "TestSuiteExecutorGroup-S:3-R:5-T:493179849",
            "testExecutionElementId": 493179849,
            "logMessage": "Test Job Template 'Simple Test 2VU Long Run' test job submitted to 'Shared Agent 2', remote test job id = 792",
            "stacktraceArray": []
          },
          {
            "timestamp": 1699726968458,
            "logLevel": 7,
            "threadName": "TestSuiteExecutorGroup-S:3-R:5-T:493179849",
            "testExecutionElementId": 493179849,
            "logMessage": "Test Job Template 'Simple Test 2VU Long Run' started on 'Shared Agent 2', remote test job id = 792",
            "stacktraceArray": []
          },
          {
            "timestamp": 1699726968466,
            "logLevel": 7,
            "threadName": "TestSuiteExecutorGroup-S:3-R:5-T:1040705161",
            "testExecutionElementId": 1040705161,
            "logMessage": "Test Job Template 'Simple Test 2VU Long Run' started on 'Shared Agent 2', remote test job id = 791",
            "stacktraceArray": []
          },
          {
            "timestamp": 1699727005910,
            "logLevel": 7,
            "threadName": "TestSuiteExecutorGroup-S:3-R:5-T:493179849",
            "testExecutionElementId": 493179849,
            "logMessage": "Test Job Template 'Simple Test 2VU Long Run' execution successful",
            "stacktraceArray": []
          },
          {
            "timestamp": 1699727006912,
            "logLevel": 7,
            "threadName": "TestSuiteExecutorGroup-S:3-R:5-T:1040705161",
            "testExecutionElementId": 1040705161,
            "logMessage": "Test Job Template 'Simple Test 2VU Long Run' execution successful",
            "stacktraceArray": []
          },
          {
            "timestamp": 1699727012111,
            "logLevel": 7,
            "threadName": "TestSuiteExecutorGroup-S:3-R:5-T:1040705161",
            "testExecutionElementId": 1040705161,
            "logMessage": "Test Job Template 'Simple Test 2VU Long Run' execution terminated",
            "stacktraceArray": []
          },
          {
            "timestamp": 1699727012112,
            "logLevel": 7,
            "threadName": "TestSuiteExecutorGroup-S:3-R:5-T:493179849",
            "testExecutionElementId": 493179849,
            "logMessage": "Test Job Template 'Simple Test 2VU Long Run' execution terminated",
            "stacktraceArray": []
          },
          {
            "timestamp": 1699727012113,
            "logLevel": 7,
            "threadName": "TestSuiteExecutorGroup-S:3-R:5-G:737867696",
            "testExecutionElementId": 737867696,
            "logMessage": "Execution Group 'Top Group' terminated",
            "stacktraceArray": []
          },
          {
            "timestamp": 1699727014114,
            "logLevel": 7,
            "threadName": "TestSuiteExecutor-S:3-R:5",
            "testExecutionElementId": -1,
            "logMessage": "Test run #5 done. Execution state = completed",
            "stacktraceArray": []
          }
        ]
      },
      "executionState": 2,
      "annotationArray": [],
      "testRunStartTimestamp": 1699726961701,
      "testRunLastUpdatedTimestamp": 1699727012113,
      "numTestjobTemplatesToExecute": 2,
      "numTestjobTemplatesExecutionPassed": 2,
      "numTestjobTemplatesExecutionFailed": 0,
      "totalSessionsPassed": 44,
      "totalSessionsFailed": 0,
      "totalSessionsPassedTimeSum": 4400,
      "totalSamplesPassed": 44,
      "totalSamplesFailed": 0,
      "maxConcurrentUsers": 4,
      "maxPendingSamples": 2,
      "testRunExecutionGroupResultArray": [
        {
          "testExecutionSuiteId": 3,
          "testRunId": 5,
          "executionGroupElementId": 737867696,
          "containsMeasuringAgent": true,
          "measuringAgent": {
            "agentId": 143,
            "createdBySystem": true,
            "ownerUserId": 13,
            "agentActive": true,
            "agentDescription": "Shared Agent 2",
            "agentHost": "192.168.0.50",
            "agentPort": 8081,
            "sharedMeasuringAgentTemplateId": 5,
            "isLaunchedByCloudCredits": false
          },
          "containsMeasuringAgentCluster": false,
          "executionState": 2,
          "executionStartTimestamp": 1699726963704,
          "executionEndTimestamp": 1699727012113,
          "numTestjobTemplatesExecutionPassed": 2,
          "numTestjobTemplatesExecutionFailed": 0,
          "totalSessionsPassed": 44,
          "totalSessionsFailed": 0,
          "totalSessionsPassedTimeSum": 4400,
          "totalSamplesPassed": 44,
          "totalSamplesFailed": 0
        }
      ],
      "testRunTestjobResultArray": [
        {
          "testExecutionSuiteId": 3,
          "testRunId": 5,
          "testExecutionGroupElementId": 737867696,
          "testjobTemplateElementId": 493179849,
          "testjobTemplate": {
            "templateId": 18,
            "templateName": "Simple Test 2VU Long Run",
            "templateDescription": "",
            "testjobProperties": {
              "testjobResultFileName": "TestResult_SimpleTest_2023-11-11@19-22-49.json",
              "executeMeasuringAgentClusterInfo": "",
              "testjobConcurrentUsers": "2",
              "testjobDescription": "Simple Test 2VU Long Run",
              "testjobDebugMeasuring": "false",
              "testjobMaxTestDuration": "30",
              "isClusterJob": "false",
              "testjobRampUpTime": "1",
              "localTestjobId": "34443",
              "testjobMaxLoopsPerUser": "-1",
              "productVersion": "4.8.24",
              "remoteTestjobId": "792",
              "testjobAdditionalArguments": "",
              "definedFromTestId": "384",
              "testjobSignature": "",
              "testjobDelayPerLoop": "3000",
              "testjobExitCode": "",
              "createTimeStamp": "1697224057753",
              "userInputFieldsFileName": "",
              "testjobType": "load test",
              "enableAutomaticFileSync": "true",
              "testjobState": "invalid",
              "isClusterControllerJobProperties": "",
              "testjobDebugExecution": "false",
              "executeOnUserMeasuringAgentId": "143",
              "definedFromTimeZoneId": "Europe/Berlin",
              "executeMeasuringAgentInfo": "Shared Agent 2",
              "executeOnMeasuringAgentClusterId": ""
            },
            "hasUserInputFields": false
          },
          "executionState": 2,
          "executionStartTimestamp": 1699726963708,
          "executionEndTimestamp": 1699727005710,
          "jobStartTimestamp": 1699726969618,
          "jobEndTimestamp": 1699727003517,
          "totalSessionsPassed": 22,
          "totalSessionsFailed": 0,
          "totalSessionsPassedTimeSum": 2200,
          "totalSamplesPassed": 22,
          "totalSamplesFailed": 0,
          "maxConcurrentUsers": 2,
          "maxPendingSamples": 1
        },
        {
          "testExecutionSuiteId": 3,
          "testRunId": 5,
          "testExecutionGroupElementId": 737867696,
          "testjobTemplateElementId": 1040705161,
          "testjobTemplate": {
            "templateId": 18,
            "templateName": "Simple Test 2VU Long Run",
            "templateDescription": "",
            "testjobProperties": {
              "testjobResultFileName": "TestResult_SimpleTest_2023-11-11@19-22-49.json",
              "executeMeasuringAgentClusterInfo": "",
              "testjobConcurrentUsers": "2",
              "testjobDescription": "Simple Test 2VU Long Run",
              "testjobDebugMeasuring": "false",
              "testjobMaxTestDuration": "30",
              "isClusterJob": "false",
              "testjobRampUpTime": "1",
              "localTestjobId": "34442",
              "testjobMaxLoopsPerUser": "-1",
              "productVersion": "4.8.24",
              "remoteTestjobId": "791",
              "testjobAdditionalArguments": "",
              "definedFromTestId": "384",
              "testjobSignature": "",
              "testjobDelayPerLoop": "3000",
              "testjobExitCode": "",
              "createTimeStamp": "1697224057753",
              "userInputFieldsFileName": "",
              "testjobType": "load test",
              "enableAutomaticFileSync": "true",
              "testjobState": "invalid",
              "isClusterControllerJobProperties": "",
              "testjobDebugExecution": "false",
              "executeOnUserMeasuringAgentId": "143",
              "definedFromTimeZoneId": "Europe/Berlin",
              "executeMeasuringAgentInfo": "Shared Agent 2",
              "executeOnMeasuringAgentClusterId": ""
            },
            "hasUserInputFields": false
          },
          "executionState": 2,
          "executionStartTimestamp": 1699726963706,
          "executionEndTimestamp": 1699727006711,
          "jobStartTimestamp": 1699726969515,
          "jobEndTimestamp": 1699727003517,
          "totalSessionsPassed": 22,
          "totalSessionsFailed": 0,
          "totalSessionsPassedTimeSum": 2200,
          "totalSamplesPassed": 22,
          "totalSamplesFailed": 0,
          "maxConcurrentUsers": 2,
          "maxPendingSamples": 1
        }
      ]
    },
    "executedByUserNickname": "DKF",
    "testjobsOutFilesArray": [
      {
        "elementId": 1040705161,
        "outFileInfoArray": [
          {
            "fileName": "DataCollector.err",
            "fileSize": 0,
            "lastModified": 1699727006724,
            "mimeType": "application/octet-stream"
          },
          {
            "fileName": "DataCollector.out",
            "fileSize": 6537,
            "lastModified": 1699727006726,
            "mimeType": "application/octet-stream"
          },
          {
            "fileName": "DataCollector.pid",
            "fileSize": 7,
            "lastModified": 1699727006736,
            "mimeType": "application/octet-stream"
          },
          {
            "fileName": "DataCollector.port",
            "fileSize": 6,
            "lastModified": 1699727006737,
            "mimeType": "application/octet-stream"
          },
          {
            "fileName": "DataCollector.state",
            "fileSize": 1,
            "lastModified": 1699727006738,
            "mimeType": "application/octet-stream"
          },
          {
            "fileName": "TestResult_SimpleTest_2023-11-11@19-22-49.json",
            "fileSize": 11913,
            "lastModified": 1699727006739,
            "mimeType": "application/json"
          },
          {
            "fileName": "users.out",
            "fileSize": 5507,
            "lastModified": 1699727006741,
            "mimeType": "application/octet-stream"
          }
        ]
      },
      {
        "elementId": 493179849,
        "outFileInfoArray": [
          {
            "fileName": "DataCollector.err",
            "fileSize": 0,
            "lastModified": 1699727005722,
            "mimeType": "application/octet-stream"
          },
          {
            "fileName": "DataCollector.out",
            "fileSize": 6264,
            "lastModified": 1699727005725,
            "mimeType": "application/octet-stream"
          },
          {
            "fileName": "DataCollector.pid",
            "fileSize": 7,
            "lastModified": 1699727005733,
            "mimeType": "application/octet-stream"
          },
          {
            "fileName": "DataCollector.port",
            "fileSize": 6,
            "lastModified": 1699727005734,
            "mimeType": "application/octet-stream"
          },
          {
            "fileName": "DataCollector.state",
            "fileSize": 1,
            "lastModified": 1699727005735,
            "mimeType": "application/octet-stream"
          },
          {
            "fileName": "TestResult_SimpleTest_2023-11-11@19-22-49.json",
            "fileSize": 11850,
            "lastModified": 1699727005736,
            "mimeType": "application/json"
          },
          {
            "fileName": "users.out",
            "fileSize": 5507,
            "lastModified": 1699727005738,
            "mimeType": "application/octet-stream"
          }
        ]
      }
    ]
  },
  "isError": false
}

getTestExecutionSuiteTestRunTestJobOutputFileContent

Specific Request Fields:

  • testExecutionSuiteId
  • testRunId
  • testjobTemplateElementId (don’t confuse with testjobTemplateId)
  • fileName

Response Fields:

  • fileContentB64

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"getTestExecutionSuiteTestRunTestJobOutputFileContent",
  "testExecutionSuiteId":3,
  "testRunId":5,
  "testjobTemplateElementId":1040705161,
  "fileName":"users.out"
}

JSON Response Example (Success Case):

{
  "fileContentB64": "MjAyMy0xMS0xMSAxO ... uZCBvZiBUZXN0XQo=",
  "isError": false
}

deleteTestExecutionSuiteTestRun

Specific Request Fields:

  • testExecutionSuiteId
  • testRunId

Response Fields:

  • [none]

Specific Error Flags:

  • [none]

JSON Request Example:

{
  "authTokenValue":"jPmFClqeDUXaEk8Q274q",
  "action":"deleteTestExecutionSuiteTestRun",
  "testExecutionSuiteId":3,
  "testRunId":5
}

JSON Response Example (Success Case):

{
  "isError": false
}