QPR ProcessAnalyzer API: Difference between revisions

From QPR ProcessAnalyzer Wiki
Jump to navigation Jump to search
No edit summary
 
(13 intermediate revisions by the same user not shown)
Line 43: Line 43:
||Stops currently running tasks (by the task identifier) to save computing resources.
||Stops currently running tasks (by the task identifier) to save computing resources.
|-
|-
||[[Web_API:_saml2/Acs|api/saml2/Acs]]
||[[Web_API:_saml2/acs|api/saml2/acs]]
||Identity provides sends the SAML assertion to this endpoint, which responses with 302 containing a url with the samlhash.
||Identity provider (IdP) will send the SAML 2.0 assertion to this endpoint, which responses with 302 to redirect to QPR ProcessAnalyzer UI.
|-
|-
||[[Web_API:_saml2|api/saml2]]
||[[Web_API:_saml2|api/saml2]]
||Returns the SAML 2.0 service provider metadata, if SAML 2.0 authentication has been configured.
||Returns the SAML 2.0 service provider (SP) metadata, if SAML 2.0 authentication has been configured.
|}
|}


Line 58: Line 58:
* [[Web_API_for_Scripts|scripts]]
* [[Web_API_for_Scripts|scripts]]
* [[Web_API_for_User_Management|users, groups and roles]]
* [[Web_API_for_User_Management|users, groups and roles]]
== Examples ==
Following function written in Python starts a script in QPR ProcessAnalyzer by calling the REST API. The function does following: (1) login to QPR ProcessAnalyzer, (2) start the script, and (3) log out. The call just starts the script without waiting for it to complete (asynchronous behavior).
<syntaxhighlight lang="python" line>
def startQprProcessAnalyzerScript(serverUrl: str, username: str, password: str, scriptId: int):
  loginData = {
      "grant_type": "password",
      "username": username,
      "password": password
  }
  loginResponse = requests.post(
    url = serverUrl + "/token",
    data = loginData
  )
  loginResponse.raise_for_status()
  sessionToken = loginResponse.json().get("access_token")
 
  startScriptResponse = requests.post(
    url = serverUrl + "/api/scripts/run/" + str(scriptId),
    headers = {
      "Authorization": "Bearer " + sessionToken,
      "Content-type": "application/json"
    }
  )
  startScriptResponse.raise_for_status()
  logOutResponse = requests.post(
      url = serverUrl + "/api/signout",
      headers = {
        "Authorization": "Bearer " + sessionToken,
        "Content-type": "application/json"
      }
    )
  logOutResponse.raise_for_status()
</syntaxhighlight>
The function can be called as follows:
<syntaxhighlight lang="python" line>
startQprProcessAnalyzerScript(
  serverUrl = "https://server.onqpr.com/qprpa",
  username = "qpr",
  password = "demo",
  scriptId = 1
)
</syntaxhighlight>
The script id can be found in the scripts list in the Workspace.


__NOTOC__
__NOTOC__


[[Category: QPR ProcessAnalyzer]]
[[Category: QPR ProcessAnalyzer]]

Latest revision as of 20:06, 14 December 2023

QPR ProcessAnalyzer API can be used to build integrations with other applications and automate operations in the process mining system.

QPR ProcessAnalyzer API is a JSON based API following the REST design principles. All methods (except the token and serverinfo) require a prior login to establish a session. The session is initialized with the token call with username and password, and the access token is returned as a response for a successful login. The methods requiring prior authenticated session, need to have a HTTP request header Authorization with value Bearer <access token> to identify the session.

Url for calling the API has the following form (replace the server hostname with a correct one):

https://customer.onqpr.com/qprpa/api/<methodName>

Following methods are available:

Method Description
token Login user using username and password and get a session token as a response.
api/signout Logs out a user session.
api/expression Runs an expression.
api/expression/query Runs query written using the expression language and returns result data as response.
api/filters Get filters for all models or filters for a single model.
api/serverinfo Returns common system information needed by UI, such as the default UI language and in whether SSO has been configured.
api/importfile Import data into datatable from .csv, .xes or .pacm file.
api/usersettings Save user specific settings to the server.
api/operations/terminate Stops the defined tasks (by the task id) to save computing resources.
api/analysis/cancel Stops currently running tasks (by the task identifier) to save computing resources.
api/saml2/acs Identity provider (IdP) will send the SAML 2.0 assertion to this endpoint, which responses with 302 to redirect to QPR ProcessAnalyzer UI.
api/saml2 Returns the SAML 2.0 service provider (SP) metadata, if SAML 2.0 authentication has been configured.

In addition, there are methods for

Examples

Following function written in Python starts a script in QPR ProcessAnalyzer by calling the REST API. The function does following: (1) login to QPR ProcessAnalyzer, (2) start the script, and (3) log out. The call just starts the script without waiting for it to complete (asynchronous behavior).

def startQprProcessAnalyzerScript(serverUrl: str, username: str, password: str, scriptId: int):
  loginData = {
      "grant_type": "password",
      "username": username,
      "password": password
  }
  loginResponse = requests.post(
    url = serverUrl + "/token",
    data = loginData
  )
  loginResponse.raise_for_status()
  sessionToken = loginResponse.json().get("access_token")
  
  startScriptResponse = requests.post(
    url = serverUrl + "/api/scripts/run/" + str(scriptId),
    headers = {
      "Authorization": "Bearer " + sessionToken,
      "Content-type": "application/json"
    }
  )
  startScriptResponse.raise_for_status()

  logOutResponse = requests.post(
      url = serverUrl + "/api/signout",
       headers = {
         "Authorization": "Bearer " + sessionToken,
         "Content-type": "application/json"
       }
    )
  logOutResponse.raise_for_status()

The function can be called as follows:

startQprProcessAnalyzerScript(
  serverUrl = "https://server.onqpr.com/qprpa",
  username = "qpr",
  password = "demo",
  scriptId = 1
)

The script id can be found in the scripts list in the Workspace.