REST API Reference > Data Integration REST API > Taskflows
  

Taskflows

You can use the REST API to get the status of a taskflow and publish multiple taskflows simultaneously.
For more information about how to run a taskflow as an API, see Running a taskflow as an API.

Running a taskflow as an API

After you publish a taskflow as a service, you can run the taskflow as an API or schedule the taskflow. You can use the endpoint URLs to run the taskflow as an API, and dynamically provide input parameters for the tasks that the taskflow contains and perform orchestration.
    1Navigate to the taskflow that you published as a service.
    2From the Actions menu, select Properties Detail.
    The Properties Detail dialog box appears displaying the service URL and the SOAP service URL as shown in the following image:
    The image displays the Properties Detail dialog box with the service URL and the SOAP service URL.
    The service URL uses the following format:
    <Informatica Intelligent Cloud Services URL>/active-bpel/rt/<API_name>
    The SOAP service URL uses the following format:
    <Informatica Intelligent Cloud Services URL>/active-bpel/soap/<API_name>
    You can also view the associated Swagger file and WSDL file.
    3To run the taskflow, perform one of the following steps based on the type of client that you want to use:
    You can pass inputs using the service URL through a browser or a third-party tool. For more information, see Passing inputs through a browser or Passing inputs through a REST client.
    You receive the taskflow run ID as the response.
    4To monitor the taskflow with the run ID, perform one of the following steps:

Passing inputs through a browser

When you run a taskflow as an API, you can pass inputs using the endpoint URLs through a browser.
    1Open the taskflow and click Actions > Properties Detail > Copy Service URL.
    2Open a text editor and add the input field and value to the service URL as shown below:
    <Informatica Intelligent Cloud Service URL>/active-bpel/rt/<API_name>?<inputfield>=<value>
    For example: https://na1.dm-us.informaticacloud.com/active-bpel/rt/Taskflow?CustomerName=TestConsumer
    To pass values for more than one field, use & to separate the input fields as shown below:
    https://na1.dm-us.informaticacloud.com/active-bpel/rt/Taskflow?CustomerName=TestConsumer&CustomerEmail=testconsumer@mailinator.com&ItemName=item1&ItemCount=2
    3Open a browser and paste the service URL with the input fields and values. If the taskflow uses authentication, you must enter the allowed user name and password.
    The service returns the taskflow run ID as the response. You can monitor the taskflow execution by using the run ID.

Passing inputs through a REST client

When you have multiple input values to pass and have a complex body, you can use a REST client such as Postman. You must use the service URL and the API definition available in the Swagger file to send a request through a REST client. The Swagger file contains the operation name, authentication method, and the input for the taskflow. You can use the Swagger editor to parse the Swagger file and get the Swagger request.
The following is a sample swagger request:
{
"input": "ACCOUNT.csv",
"inputConn": {
"input": {
"source": {
"Source": {
"object": "RetailCustomer",
"connection": "0100000B000000000004"
}
},
"connectionNameParam": "ACCOUNT.csv"
}
}
}
    1Open Postman.
    2Select the HTTP verb such as GET or POST and specify the generated REST service URL as shown in the following image:
    The image shows the HTTP verb and the REST service URL specified in Postman.
    3Enter the user account details in the Authorization tab.
    4Specify the swagger request in the Body tab as shown in the following image:
    The image shows the swagger request specified in the Body tab.
    5Specify the input values in the request body.
    6Click Send.
    You receive the taskflow run ID as the response as shown in the following image:
    The image shows the taskflow run ID as the response. You can monitor the taskflow execution by using the run ID.

Resume a suspended taskflow

You can use the resumeWithFaultRetry resource to resume a suspended taskflow instance from a faulted step. You can also use the resumeWithFaultSkip resource to skip a faulted step and resume a suspended taskflow instance from the next step.
Note:
If you configure the Custom Error Handling option for a step within a taskflow, you can't use the resumeWithFaultyRetry resource to resume the taskflow from the failed step.

resumeWithFaultRetry

To resume a suspended taskflow instance from a faulted step, use the following URI in a PUT request:
PUT <Informatica Intelligent Cloud Services URL>/active-bpel/management/runtime/v1/resumeWithFaultRetry/<run ID>
Include the following information in the request:
Field
Type
Required
Description
run ID
String
Yes
Run ID for the taskflow.
resumeWithFaultRetry PUT example
Use this sample as a reference to resume a suspended taskflow instance from a faulted step in a PUT request.
PUT https://na1.dm-us.informaticacloud.com/active-bpel/management/runtime/v1/resumeWithFaultRetry/681134580186693632
Accept: application/json
INFA-SESSION-ID: 9KA11tLGqxVcGeul8SQBK3
resumeWithFaultRetry PUT response
Returns the 204 response code if the request is successful.
Returns an error object if error occurs.

resumeWithFaultSkip

To skip a faulted step and resume a suspended taskflow instance from the next step, use the following URI in a PUT request:
PUT <Informatica Intelligent Cloud Services URL>/active-bpel/management/runtime/v1/resumeWithFaultSkip/<run ID>
Include the following information in the request:
Field
Type
Required
Description
run ID
String
Yes
Run ID for the taskflow.
resumeWithFaultSkip PUT example
Use this sample as a reference to skip a faulted step and resume a suspended taskflow instance from the next step in a PUT request.
PUT https://na1.dm-us.informaticacloud.com/active-bpel/management/runtime/v1/resumeWithFaultSkip/681134580186693632
Accept: application/json
INFA-SESSION-ID: 9KA11tLGqxVcGeul8SQBK4
resumeWithFaultSkip PUT response
Returns the 204 response code if the request is successful.
Returns an error object if error occurs.

Listing suspended taskflows through an API

You can use a JLS API to get a list of taskflows that are suspended. By default, the number of suspended taskflows that the API returns is 200.
To get a list of suspended taskflows, use the following URI:
{{<Informatica Intelligent Cloud Services URL>}}/jls-di/api/v1/Orgs(<Organization ID>)/JobLogEntries?$top=<Number of suspended taskflows>&$filter=(status eq 'SUSPENDED' and assetType eq 'TASKFLOW')
To get a list of latest suspended taskflows within an organization based on the users who started the taskflows, use the following URI :
{{<Informatica Intelligent Cloud Services URL>}}/jls-di/api/v1/Orgs(<Organization ID>)/JobLogEntries?$top=<Number of suspended taskflows>&$filter=(status eq 'SUSPENDED' and startedBy eq '<username>' and assetType eq 'TASKFLOW')

Terminating taskflows through an API

You can terminate one or more taskflows using an API. The maximum number of taskflows that you can terminate at a time is 200.
Use the following URI to terminate one or more taskflows:
PUT <Informatica Intelligent Cloud Services URL>/active-bpel/services/tf/terminate
Enter the taskflow run IDs as the input in the body of the PUT request.
Enclose the run IDs within double quotation marks and separate multiple run IDs with a comma. For example, enter: < { "runid" : [ "7645954072982472420" , "675348537035183518"] } >.
The API displays error messages when you enter a run ID that does not exist or is not valid. The API supports basic authentication and session ID authorization.
The following image shows a sample terminate request and response:
The image shows a sample terminate request and response.

Modifying taskflow attributes with the update resource

If you are assigned the Administrator, Deployer, Designer, or Operator role, you can use the update resource to update the values of the API Name, Allowed Users, Allowed Groups, Parameter Setand fields of a taskflow. You can update these fields for both single and multiple taskflows.
Use the request body to pass the values. The updates can be applied to one or more taskflows using the update resource.
To perform the updates, use the following URI with the updated values included in the request body:
PUT<Informatica Intelligent Cloud Services URL>/active-bpel/asset/v1/update?assetType=<Taskflow>

Rules and guidelines for Parameter Set field

Consider the following rules and guidelines when you use the Parameter Set field:

Rules and guidelines for API Name field

Consider the following rules and guidelines when you use the API Name field:

PUT request

The following HTTP header shows a PUT request to update the API Name, Allowed Users, Allowed Groups, and Parameter Set fields:
PUT <Informatica Intelligent Cloud Services URL>/active-bpel/asset/v1/update?assetType=Taskflow
Content-Type: application/json
Accept: application/json
INFA-SESSION-ID: <Your_Session_ID>

Example

Use the following sample PUT request to update the API Name, Allowed Users, Allowed Groups, and Parameter Set fields of a taskflow:
PUT <baseApiUrl>/active-bpel/asset/v1/update?assetType=Taskflow
Content-Type: application/json
Accept: application/json
INFA-SESSION-ID: <Infa-Session-ID>

{
"taskflows": [
{
"guid": {
"$t": "<guidvalue>"
},
"deployment": [
{
"key": {
"$t": "API Name"
},
"value": {
"$t": "<new-api-name>"
}
},
{
"key": {
"$t": "Parameter Set"
},
"value":[ {
"$t": "paramSetData"
},
{
"key": {
"$t": "Allowed Users"
},
"value":[ {
"$t": "user1"
},
{
"$t": "user2"
}]
},
{
"key": {
"$t": "Allowed Groups"
},
"value":[ {
"$t": "group1"
},
{
"$t": "group2"
}]
}
]
}
]
}
Send a JSON payload in the body of the PUT request that contains a list of taskflows and the fields that you want to update, such as API Name, Allowed Users, Allowed Groups, and Parameter Set.
Use the following sample PUT request to update the API Name, Allowed Users, Allowed Groups, and Parameter Set fields of multiple taskflows:
{
"taskflows": [
{
"guid": {
"$t": "{{guid1}}"
},
"deployment": [
{
"key": {
"$t": "API Name"
},
"value": {
"$t": <<"apiname">>
}
},
{
"key": {
"$t": "Parameter Set"
},
"value":[
{
"$t": "paramSetData"
},
{
"key": {
"$t": "Allowed Users"
},
"value": [
{
"$t": "user1"
},
{
"$t": "user2"
}
]
},
{
"key": {
"$t": "Allowed Groups"
},
"value": [
{
"$t": "user_Group1"
},
{
"$t": "user_Group2"
}
]
}
]
},
{
"guid": {
"$t": "{{guid2}}"
},
"deployment": [
{
"key": {
"$t": "API Name"
},
"value": {
"$t": <<"apiname1">>
}
},
{
"key": {
"$t": "Parameter Set"
},
"value": [
{
"$t": "paramSetData"
},
{
"key": {
"$t": "Allowed Users"
},
"value": [
{
"$t": "user1"
},
{
"$t": "user2"
}
]
},
{
"key": {
"$t": "Allowed Groups"
},
"value": [
{
"$t": "user_Group1"
},
{
"$t": "user_Group2"
}
]
}
]
}
]
}

PUT response example

If the fields are successfully updated, you receive the following response:
// Success Response
{
"status": {
"$t": "SUCCESS"
}
}
If the fields include invalid data, you receive the following error response:
// Failure Response
{
"status": {
"$t": "FAILED"
},
"errorDetails": {
"error": {
"$t": "Update failed for assets"
},
"failedAssets": {
"updateAssetFaultInfo": {
"xmlns": "https://com.informatica.icrt/2021/08/updateAssets.xsd",
"xmlns$aetgt": "https://com.informatica.icrt/2021/08/updateAssets.xsd",
"name": {},
"GUID": {
"$t": "<Incorrectguidvalue>"
},
"fault": {
"$t": "The Api Name is not valid. Specify a valid Api Name."
}
}
}
}
}

Adding a custom name to a taskflow name

You can add a custom name to a taskflow name by using an API and the RunAJob utility. You can use the custom name as an identifier for the taskflow.

Adding a custom name to a taskflow name using an API

After you publish a taskflow as a service, you can run the taskflow as an API and add a custom name to the taskflow name. When you use the API to add a custom name that contains Japanese characters, you must pass the URL encoded characters.
    1Navigate to the taskflow that you published as a service.
    2From the Actions menu, select Properties Detail.
    The Properties Detail dialog box appears displaying the service URL and the SOAP service URL as shown in the following image:
    The image displays the Properties Detail dialog box with the service URL and the SOAP service URL.
    The service URL uses the following format:
    <Informatica Intelligent Cloud Services URL>/active-bpel/rt/<API_name>
    The SOAP service URL uses the following format:
    <Informatica Intelligent Cloud Services URL>/active-bpel/soap/<API_name>
    You can also view the associated Swagger file and WSDL file.
    3To run the taskflow, perform one of the following steps based on the type of client that you want to use:
    You can pass inputs using the service URL through a browser or a third-party tool. For more information, see Passing inputs through a REST client.
    You receive the taskflow run ID as the response.
    4In the GET request, add the TF-INSTANCE-NAME header and set the header value to the custom name that you want to use. The following image shows the custom name set to the value OrderManagement: The image shows the custom name set to OrderManagement.
    5To monitor the taskflow with the run ID, use the run ID to monitor the taskflow run in the My Jobs page. The instance name uses the following format: <taskflow name>-<custom name>-<run ID>

Adding a custom name to a taskflow name using RunAJob utility

You can add a custom name to a taskflow name using the RunAJob utility. To run a taskflow using the RunAJob utility, the taskflow must be published. Add the custom name by providing -in as the short argument and --instanceName as the long argument in the RunAJob command.
For more information about short and long options for RunAJob utility arguments, see RunAJob utility arguments in REST API Reference.
To add a custom name to a taskflow name using the RunAJob utility, use the following syntax:
cli.bat runAJobCli -t <task_type> -in <custom_name> -un <taskflow_name>
For example: cli.bat runAJobCli -t TASKFLOW -in Order -un taskflowManagement
When you use the RunAJob utility, the custom names can't contain the following characters:
The taskflow name with the custom name appears in the My Jobs page in the following format:
<taskflow name>-<custom name>-<runID>

Monitoring taskflow status with the status resource

If you have the privilege to view job results in Monitor, you can use the status resource to get the status of a taskflow. You can get the status of a taskflow using the taskflow run ID as a path parameter or using query parameters such as run ID, run status, start time, end time, offset, and row limit.

GET request

To get the status of a taskflow using the run ID as a path parameter, use the following URI:
<Informatica Intelligent Cloud Services URL>/active-bpel/services/tf/status/<run ID>
For example:
https://na4.dm.us.informaticacloud.com/active-bpel/services/tf/status/20262247166322413568
You can add the optional subtaskDetails parameter in the Taskflow Status API URL to indicate whether you want to return the status of only the taskflow or you also want to return the status of the subtasks within the taskflow.
Use the following URL:
GET/active-bpel/services/tf/status/<runId>?subtaskDetails =<value>
Set the subtaskDetails parameter to No or leave the parameter empty to return only the taskflow status. Default is No. To get the status of multiple subtasks within the taskflow, set the subtaskDetails parameter to Yes.
For example:
https://na4.dm.us.informaticacloud.com/active-bpel/services/tf/status/20262247166322413568?subtaskDetails=No
When the subtaskDetails is set to No (default), you get the following sample API response:
{
"assetName": "Taskflow1",
"assetType": "TASKFLOW",
"duration": 1,
"endTime": "2025-06-30T07:53:53Z",
"errorMessage": "",
"location": "Default",
"runId": 1.1242464044289925e+18,
"runtimeEnv": "application-integration:8443",
"runtimeEnvName": "",
"startedBy": "kkunal@informatica.com",
"startTime": "2025-06-30T07:53:52Z",
"status": "SUCCESS",
"subtasks": 1,
"updateTime": "2025-06-30T07:53:53Z",
"subtaskDetails": {
"details": {
"tasks": []
}
}
}
You can also get the status of multiple taskflows using query parameters. The query parameters are case sensitive.
You can use the following optional query parameters in the GET request URI:
Field
Description
runId
Run ID for the taskflow.
For example, to get the status of a particular taskflow with a run ID, use the following URI:
https://na4.dm.us.informaticacloud.com/active-bpel/services/tf/status?runId=20262247166322413568
runStatus
Execution status of the taskflow. You can specify the status as Success, Failed, Suspended, or Running.
For example, to get the status of all the taskflows that were successfully executed in the last 24 hours, use the following URl:
https://na4.dm.us.informaticacloud.com/active-bpel/services/tf/status?runStatus=Success
startTime
Start time for the taskflow runs at the beginning of the date and time range. Use Coordinated Universal Time (UTC).
For example, to get the status of all the taskflows that started on or after 2021-06-10T05:48:28Z, use the following URl:
https://na4.dm.us.informaticacloud.com/active-bpel/services/tf/status?startTime=2021-06-10T05:48:28Z
endTime
Start time for the taskflow runs at the end of the date and time range. Use Coordinated Universal Time (UTC).
For example, to get the status of all the taskflows that started between 2021-06-10T05:48:28Z and 2021-06-11T05:48:28Z, use the following URl:
https://na4.dm.us.informaticacloud.com/active-bpel/services/tf/status?startTime=2021-06-10T05:48:28Z&endTime=2021-06-11T05:48:28Z
offset
Number of rows to skip. For example, you might want to skip the first three rows.
rowLimit
Maximum number of rows to return. The maximum number you can specify is 50. If you omit this parameter, the query returns all available rows, up to a maximum of 10 rows.
You can use any combination of these query parameters to get the status of multiple taskflows. For example, you can use the following URI:
<Informatica Intelligent Cloud Services URL>/active-bpel/services/tf/status?startTime=<startTime>&runStatus=<runStatus>&endTime=<endTime>&rowLimit=<rowLimit>
Note:
If the startTime or endTime parameters are not used in the query, the response contains status information about the taskflows that ran in the last 24 hours.
Authenticate the GET request in one of the following ways:
Send the request using JSON format. Include the following line in the header: Accept: application/json

GET response

Returns the taskflow status information if successful or an error object if errors occur.
If successful, returns the following status information for a taskflow:
Field
Type
Description
assetName
String
Name of the taskflow.
The taskflow name also includes the custom name, if you had added a custom name to the taskflow using an API or the RunAJob utility.
assetType
String
Type of the object. Returns the value TASKFLOW.
duration
String
Time in seconds that the taskflow ran before it completed, was suspended, was failed, or was stopped.
endTime
Date/time
End time for the taskflow run. Uses Coordinated Universal Time (UTC).
location
String
Project and folder path where the taskflow is located.
runId
Long
Run ID for the taskflow.
runtimeEnv
String
ID of the runtime environment where the taskflow runs.
runtimeEnvName
String
Name of the runtime environment where the taskflow runs.
startTime
Date/time
Start time for the taskflow run. Uses Coordinated Universal Time (UTC).
startedBy
String
User who started the taskflow.
status
String
Execution status of the taskflow.
Returns one of the following values to indicate the taskflow status:
  • - RUNNING. The taskflow is running.
  • - SUCCESS. The taskflow completed successfully.
  • - FAILED. The taskflow did not complete because it encountered errors.
  • - SUSPENDED. The taskflow run was suspended.
subtasks
String
Number of subtasks that the taskflow contains.
updateTime
Date/time
Last time the taskflow run status was updated. Uses Coordinated Universal Time (UTC).
errorMessage
String
Error message string.
subtaskDetails
String
Object that contains status details for all subtasks in the taskflow.
details
String
Status details. Includes status information for each subtask in the tasks object.
tasks
Collection
Status information for all subtasks that the taskflow contains.
The tasks object includes the following status information for each subtask that the taskflow contains:
Field
Type
Description
assetName
String
Name of the subtask in the taskflow.
assetType
String
Type of the subtask. Returns one of the following values:
  • - MTT. Mapping task.
  • - DSS. Synchronization task.
duration
String
Time in seconds that the subtask ran before it completed, was failed, or was stopped.
endTime
Date/time
End time for the subtask run. Uses Coordinated Universal Time (UTC).
errorMessage
String
Error message string.
errorRows
String
Total number of rows that resulted in errors in a subtask.
location
String
Project and folder path where the subtask is located.
rowsProcessed
String
Total number of rows that were processed in a subtask.
runId
Long
Run ID for the subtask.
runtimeEnv
String
ID of the runtime environment where the subtask runs.
runtimeEnvName
String
Name of the runtime environment where the subtask runs.
startTime
Date/time
Start time for the subtask run. Uses Coordinated Universal Time (UTC).
startedBy
String
User who started the task. This field is the same as the user who started the taskflow.
status
String
Execution status of the subtask.
Returns one of the following values to indicate the subtask status:
  • - QUEUED. The subtask is queued on a Secure Agent, but it has not started yet.
  • - STARTING. The subtask is starting.
  • - RUNNING. The subtask is running.
  • - COMPLETED. The subtask completed successfully.
  • - SUSPENDED. The subtaskflow is suspended.
  • - STOPPED. The taskflow has stopped running, so the subtask cannot start.
  • - WARNING. The subtask completed with errors.
  • - FAILED. The subtask did not complete because it encountered errors.
subtasks
String
Reserved for future use. When this field is returned for a subtask, the value is always 0.
successRows
String
Total number of rows that were processed successfully in a subtask.
updateTime
Date/time
Last time the subtask run status was updated. Uses Coordinated Universal Time (UTC).
You might receive one of the following responses:
Response
Description
Purged logs
If logs are purged for the instance, the response is as follows:
{ "status": "No status available." }
The HTTP status code is 200 OK.
Invalid run ID
If the run ID is not valid, the response is as follows:
{
"error": "CMN_003-Bad request. Error message - The property '<runID>', used in a query expression, is not defined in type 'OData.job-log-service.JobLogEntry'."
}
The HTTP status code is 400 Bad Request(From JLS).
Invalid filter clause
If the parameter value is not valid, the response is as follows:
{
"error": "JLS_007-Invalid Filter clause in OData request. RawURI = http://internal-na1-elb.infacloudops.net:443/jls-di/internal/api/v1"
}
The HTTP status code is 400 Bad Request(From JLS).
Unavailable JLS service
If the JLS service is unavailable, the response is as follows:
{ "error": "503-Service Unavailable." }
The HTTP status code is 503 Service Unavailable.
Note:
If you receive a 503 error code, you perform retries to ensure resiliency. It is recommended to execute at least six retries with an exponential backoff starting at 10 seconds. If you use the runAJob CLI, retries occur automatically. For more information about RETRYCOUNT parameter, see the Job status section in REST API Reference.

GET example using the run ID as a path parameter

The following example shows a taskflow status request that uses the run ID as a path parameter:
GET https://pod.ics.dev:444/active-bpel/services/tf/status/20262247166322413568
Content-type: application/json
Accept: application/json
INFA-SESSION-ID: 9KA11tLGqxVcGeul8SQBK3
Based on the taskflow configuration and request inputs, the response can be of the following types:
Taskflow without subtasks
If the request is successful and the taskflow does not contain subtasks, the response includes taskflow status information as shown in the following example:
{
"assetName": "Taskflow1",
"assetType": "TASKFLOW",
"duration": "2",
"endTime": "2018-12-25T15:56:39Z",
"location": "Default",
"runId": "262247166322413568",
"runtimeEnv": "tf_runtime",
"runtimeEnvName": "",
"startTime": "2018-12-25T15:56:37Z",
"startedBy": "sb",
"status": "SUCCESS",
"subtasks": "0",
"updateTime": "2018-12-25T15:56:39Z",
"errorMessage": {},
"subtaskDetails": {
"details": {}
}
}
The HTTP status code is 200 OK.
Taskflow with subtasks
If the request is successful and the taskflow contains multiple subtasks, the response includes status information for each subtask that the taskflow contains as shown in the following example:
{
"assetName": "Taskflow2",
"assetType": "TASKFLOW",
"duration": "89",
"endTime": "2018-12-23T17:25:16Z",
"location": "Default",
"runId": 20262247166322413568,
"runtimeEnv": "tf_runtime",
"runtimeEnvName": "",
"startTime": "2018-12-23T17:23:47Z",
"startedBy": "sb",
"status": "SUCCESS",
"subtasks": "2",
"updateTime": "2018-12-23T17:25:17Z",
"errorMessage": {},
"subtaskDetails": {
"details": {
"tasks": [
{
"assetName": "MTR",
"assetType": "MTT",
"duration": "3",
"endTime": "2018-12-23T17:24:45Z",
"errorMessage": "",
"errorRows": "0",
"location": "Default",
"rowsProcessed": "7",
"runId": "4",
"runtimeEnv": "01001Q25000000000002",
"runtimeEnvName": "tf_runtime_devagent",
"startTime": "2018-12-23T17:24:42Z",
"startedBy": "sb",
"status": "COMPLETED",
"subtasks": "0",
"successRows": "7",
"updateTime": "2018-12-23T17:24:46Z"
},
{
"assetName": "MTR",
"assetType": "MTT",
"duration": "10",
"endTime": "2018-12-23T17:23:59Z",
"errorMessage": "",
"errorRows": "0",
"location": "Default",
"rowsProcessed": "7",
"runId": "3",
"runtimeEnv": "01001Q25000000000002",
"runtimeEnvName": "tf_runtime_devagent",
"startTime": "2018-12-23T17:23:49Z",
"startedBy": "sb",
"status": "COMPLETED",
"subtasks": "0",
"successRows": "7",
"updateTime": "2018-12-23T17:24:00Z"
}
]
}
}
}
The HTTP status code is 200 OK.

GET example using query parameters

The following example shows a taskflow status request that uses run ID, run status, and row limit as query parameters:
GET https://pod.ics.dev:444/active-bpel/services/tf/status?runId=20262247166322413568&runStatus=Success&rowLimit=3
Accept: application/json
INFA-SESSION-ID: 9KA11tLGqxVcGeul8SQBK3
If the request is successful, the response format is the same as when we use the path parameter, but within square brackets [ ].
If the request is successful and the taskflow does not contain subtasks, the response includes taskflow status information as shown in the following example:
[
{
"assetName": "Taskflow1",
"assetType": "TASKFLOW",
"duration": "2",
"endTime": "2018-12-25T15:56:39Z",
"location": "Default",
"runId": 262247166322413568,
"runtimeEnv": "tf_runtime",
"runtimeEnvName": "",
"startTime": "2018-12-25T15:56:37Z",
"startedBy": "sb",
"status": "SUCCESS",
"subtasks": "0",
"updateTime": "2018-12-25T15:56:39Z",
"errorMessage": {},
"subtaskDetails": {
"details": {
"tasks": []
}
}
}
]
The HTTP status code is 200 OK.

GET example without any parameter

The following example shows a taskflow status request without a path parameter or query parameter:
<Informatica Intelligent Cloud Services URL>/active-bpel/services/tf/status
The response contains status information of the last 10 taskflows that were run in the last 24 hours.

GET example of a running taskflow

If you use the status resource to get the status of a running taskflow, the response includes taskflow status information with the endTime as null without quotes as shown in the following example:
{
"assetName": "waitStatus",
"assetType": "TASKFLOW",
"duration": 27,
"endTime": null,
"errorMessage": "",
"location": "Default",
"runId": 737194191850250240,
"runtimeEnv": "taskflow-preview-usw1-r40-app02.infacloudops.net:4430",
"runtimeEnvName": "",
"startedBy": "sb",
"startTime": "2022-07-28T06:26:32Z",
"status": "RUNNING",
"subtasks": 0,
"updateTime": "2022-07-28T06:26:32Z",
"subtaskDetails": {
"details": {
"tasks": []
}
}
}
After the taskflow is complete, the correct endTime value is displayed.

Publishing taskflows in bulk

You can use the publish resource to publish a single taskflow or multiple taskflows simultaneously and save time.
The taskflows are published in the same order as given in the request payload. You can publish a maximum of 199 taskflows at a time.
    1In a REST client, use a POST request with the following URL:
    <Informatica Intelligent Cloud Services URL>/active-bpel/asset/v1/publish
    For example: https://na1.dm-us.informaticacloud.com/active-bpel/asset/v1/publish
    2Add the following headers:
    Key
    Value
    Accept
    application/vnd.api+json
    Content-Type
    application/vnd.api+json
    INFA-SESSION-ID
    Use the login resource to get the session ID. For more information about the login resource, see REST API Reference.
    3In the body, use the assetPaths attribute to specify one or more locations and names of the taskflows that you want to publish.
    Use the following format:
    {
    "data": {
    "type": "publish",
    "attributes": {
    "assetPaths": [
    "Explore/<location-of-taskflow1>/<name-of-taskflow1>.TASKFLOW.xml",
    "Explore/<location of taskflow2>/<name-of-taskflow2>.TASKFLOW.xml",
    "Explore/<location-of-taskflown>/<name-of-taskflown>.TASKFLOW.xml"
    ]
    }
    }
    }
    4Send the POST request.
    You see a publish ID and a success or failure response. If the request fails, the response also gives the error details.
    The following snippet shows a sample response:
    {
    "data": {
    "type": "publish",
    "id": "690487059198201856",
    "attributes": {
    "jobState": "NOT_STARTED",
    "jobStatusDetail": {},
    "startedBy": "autouser_pod1",
    "startDate": "2022-03-21T09:09:04.000+0000",
    "totalCount": 1,
    "processedCount": 0,
    "assetPaths": [
    "Explore/Pavan/BulkPublishApi/BPTaskflow1.TASKFLOW.xml"
    ]
    }
    },
    "links": {
    "self": https://na1.dm-us.informaticacloud.com/active-bpel/asset/v1/publish/690487059198201856,
    "status": https://na1.dm-us.informaticacloud.com/active-bpel/asset/v1/publish/690487059198201856/Status
    }
    }
    The publish ID in this example is 690487059198201856.
    5To view information about the publish status and publish job, use a GET request with the following URLs:
    URL
    Description
    <Informatica Intelligent Cloud Services URL>/active-bpel/asset/v1/publish/<publishId>/Status
    Displays the publish status.
    <Informatica Intelligent Cloud Services URL>/active-bpel/asset/v1/publish/<publishId>
    Displays the publish job information.

Unpublishing taskflows in bulk

You can use the unpublish resource to unpublish a single taskflow or multiple taskflows simultaneously and save time.
The taskflows are unpublished in the same order as given in the request payload. You can unpublish a maximum of 199 taskflows at a time.
    1In a REST client, use a POST request with the following URL:
    <Informatica Intelligent Cloud Services URL>/active-bpel/asset/v1/unpublish
    For example: https://na1.dm-us.informaticacloud.com/active-bpel/asset/v1/unpublish
    2Add the following headers:
    Key
    Value
    Accept
    application/vnd.api+json
    Content-Type
    application/vnd.api+json
    INFA-SESSION-ID
    Use the login resource to get the session ID. For more information about the login resource, see REST API Reference.
    3In the body, use the assetPaths attribute to specify one or more locations and names of the taskflows that you want to unpublish.
    Use the following format:
    {
    "data": {
    "type": "unpublish",
    "attributes": {
    "assetPaths": [
    "Explore/<location-of-taskflow1>/<name-of-taskflow1>.TASKFLOW.xml",
    "Explore/<location of taskflow2>/<name-of-taskflow2>.TASKFLOW.xml",
    "Explore/<location-of-taskflown>/<name-of-taskflown>.TASKFLOW.xml"
    ]
    }
    }
    }
    4Send the POST request.
    You see an unpublish job ID and a success or failure response. If the request fails, the response also gives the error details.
    The following snippet shows a sample response:
    {
    "data": {
    "type": "unpublish",
    "id": "7645874567965431",
    "attributes": {
    "jobState": "NOT_STARTED",
    "jobStatusDetail": {},
    "startedBy": "autouser_pod1",
    "startDate": "2022-03-21T09:09:04.000+0000",
    "totalCount": 1,
    "processedCount": 0,
    "assetPaths": [
    "Explore/Pavan/BulkUnpublishApi/BPTaskflow1.TASKFLOW.xml"
    ]
    }
    },
    "links": {
    "self": https://na1.dm-us.informaticacloud.com/active-bpel/asset/v1/unpublish/7645874567965431,
    "status": https://na1.dm-us.informaticacloud.com/active-bpel/asset/v1/unpublish/7645874567965431/Status
    }
    }
    The unpublish job ID in this example is 7645874567965431.
    5To view information about the unpublish status and unpublish job, use a GET request with the following URLs:
    URL
    Description
    <Informatica Intelligent Cloud Services URL>/active-bpel/asset/v1/unpublish/<unpublishId>/Status
    Displays the unpublish status.
    <Informatica Intelligent Cloud Services URL>/active-bpel/asset/v1/unpublish/<unpublishId>
    Displays the unpublish job information.

Customer Managed Secure Agent group REST API

You can use the REST API to run, stop, and monitor taskflows directly on a Customer Managed Secure Agent group, without routing the request through IDMC. Use these APIs to get taskflow status when the agent group is disconnected from IDMC.
Taskflows REST API resources send requests to the IDMC URL. However, the Customer Managed Secure Agent group REST API sends requests directly to the Secure Agent in the agent group.
Use the Customer Managed Secure Agent group REST API to perform the following tasks:
For information about creating and configuring a Customer Managed Secure Agent group, see the Administrator help.

Authenticating API requests to a Customer Managed Secure Agent group

To call the taskflow REST API resources on a Customer Managed Secure Agent group, authenticate with the Secure Agent and get a JSON web token (JWT). Include this token in the Authorization header of each subsequent request.
Authenticate with a separate password that you set for API and command line access. This password is distinct from your IDMC password and never confirms your identity against IDMC. The Secure Agent validates this password locally, so authentication works even when the agent group is disconnected from IDMC.
For more information, see Rest API Reference and Runtime Environments in the Administrator help.

POST request

To get a JWT, use the following URI:
POST https://<Secure Agent host>:<port>/rm/api/v2/login
Content-Type: application/json

{
"username": "<Informatica Intelligent Cloud Services user name>",
"password": "<second password>"
}
The default port is 9443.

POST response

The API returns a JWT if the credentials are valid, or an error object if the request fails.
If the credentials are valid, the response is similar to the following example:
{
"token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": 900
}
The response contains the following fields:
Field
Type
Description
token
String
JWT to include in the RM-USER-TOKEN header of subsequent requests.
expiresIn
Integer
Number of seconds until the token expires.
Note:
By default, the token expires after 15 minutes. You can request for a new token before the current one expires. There's no session renewal endpoint. Hence, you need to call this resource again to generate a new token.

Running a taskflow on a Customer Managed Secure Agent group

Use the REST API to run a taskflow directly on a Customer Managed Secure Agent group. Use this resource to trigger taskflows from a third-party scheduler or an orchestration tool without an IDMC connection.
Before you run a taskflow on a Customer Managed Secure Agent group, verify the following prerequisites:

POST request

To run a taskflow, use the following URI:
POST https://<Secure Agent host>:<port>/rm/api/v2/job
RM-USER-TOKEN: <token>
Content-Type: application/json

{
"taskId": "<taskflow task ID>",
"parameters": {
"<parameter name>": "<parameter value>"
}
}
The request body contains the following fields:
Field
Type
Description
taskId
String
Required. The ID of the deployed taskflow task to run.
parameters
Object
Input parameters to pass to the taskflow, as name-value pairs.

POST response

The API returns an execution ID if the agent accepts the request, or an error object if the request fails.
{
"executionId": "<execution ID>"
}
A 202 Accepted response means the agent accepted the job. It doesn't mean that the taskflow completed. Use the execution ID to check the run status. For more information, see Monitoring taskflow status on a Customer Managed Secure Agent group.

Stopping a taskflow run on a Customer Managed Secure Agent group

Use the REST API to stop a taskflow run that is in progress on a Customer Managed Secure Agent group.
Before you stop a run, verify the following prerequisites:

PUT request

To stop a running taskflow, use the following URI:
PUT https://<Secure Agent host>:<port>/rm/active-bpel/restadmin/processes/<run ID>/terminate?isManual=true
RM-USER-TOKEN: <token>
The request body contains the following fields:
Parameter
Type
Description
<run ID>
Number
The ID of the taskflow run to stop.
isManual
Boolean
Required. Set to true.

PUT response

The API returns the HTTP status code 204 and an empty response body if the agent accepts the request. If the request fails, the response contains the same error information as the corresponding Data Integration resource.

Resuming a suspended taskflow run on a Customer Managed Secure Agent group

Use the REST API to resume a taskflow run that is suspended on a Customer Managed Secure Agent group.
To find suspended runs, query the status resource and filter by the Suspended status. For more information, see Monitoring taskflow status on a Customer Managed Secure Agent group.

PUT request

To resume a suspended taskflow run, use the following URI:
PUT https://<Secure Agent host>:<port>/rm/active-bpel/restadmin/processes/<run ID>/resume
RM-USER-TOKEN: <token>
In the URI, <run ID> is the ID of the taskflow run to resume.

PUT response

The API returns the HTTP status code 204 and an empty response body if the agent accepts the request. The run status changes from Suspended to Running.
If the run isn't suspended, the request has no effect on the run.

Restarting a taskflow run on a Customer Managed Secure Agent group

Use the REST API to restart a taskflow run on a Customer Managed Secure Agent group. The agent starts a new run of the taskflow. The original run doesn't change.
You can restart a suspended taskflow instance but not a taskflow instance that's still running.

POST request

To restart a taskflow run, use the following URI:
POST https://<Secure Agent host>:<port>/rm/active-bpel/restadmin/processes/<run ID>/restartasnew
RM-USER-TOKEN: <token>
In the URI, <run ID> is the ID of the taskflow instance to restart.

POST response

The API returns the HTTP status code 204 and an empty response body if the agent accepts the request. The response doesn't include the run ID of the new run. To find the new run, use the status resource. For more information, see Monitoring taskflow status on a Customer Managed Secure Agent group.
If the original run is still running, the request fails with the same error that Data Integration returns.

Monitoring taskflow status on a Customer Managed Secure Agent group

Use the status resource to monitor a taskflow running on a Customer Managed Secure Agent group. The request and response match those for the status resource described in Monitoring taskflow status with the status resource. The only difference is that you send the request directly to the agent, not to your IDMC URL.

GET request for a single run

To get the status of one taskflow run, use the following URI:
GET https://<Secure Agent host>:<port>/rm/active-bpel/services/tf/status/<run ID>
RM-USER-TOKEN: <token>
To include details about each subtask, add ?subtaskDetails=yes to the URI.
You can include the following optional headers. The headers apply only to requests for a single run.
Header
Description
Max-Retry
Number of times the agent retries the lookup if it doesn't find the run. Maximum value is 5.
Retry-Interval
Number of seconds between retries. Maximum value is 20.
For more information about the status parameters, see Monitoring taskflow status with the status resource
Query this resource directly on the agent to get real-time status when the agent group is disconnected from IDMC. Taskflow runs that start while the agent group is disconnected don't appear in Monitor until the agent group reconnects and synchronizes run history. Synchronization time depends on the number of runs that occurred during the disconnection.
You can't perform live job actions, such as stop or restart, against runs from Monitor in IDMC while the agent group is disconnected. To stop a run while disconnected, use the agent-side stop resource. For more information, see Stopping a taskflow run on a Customer Managed Secure Agent group.

GET request for suspended runs

To list the taskflow runs that are suspended, use the following URI:
GET https://<Secure Agent host>:<port>/rm/active-bpel/services/tf/status?runStatus=Suspended
RM-USER-TOKEN: <token>
You can also use the startTime, endTime, offset, rowLimit, and subtaskDetails query parameters. These parameters work the same way as they do in Monitoring taskflow status with the status resource. The rowLimit value can range from 10 through 50.
A run doesn't appear in this list after you resume it or stop it.

GET response

A request for a single run returns one status object. A request for suspended runs returns an array of status objects. If no run matches, the response is HTTP status code 200 with the following body:
{
"status": "No status available"
}
The agent returns the HTTP status code 400 if the run ID isn't valid, and 500 if the agent can't read the run data. The response body contains the reason, code, detail, and message fields.

Rules and Guidelines

Consider the following rules and guidelines when you monitor taskflow runs on a Customer Managed Secure Agent group: