Hop Server Web Services Overview
Hop Server has a rich set of web services that can be used to query and manage the server’s status, or to manage pipeline and workflow execution details.
| when specified, the id for a workflow or pipeline represents one execution of a workflow or pipeline on the server. |
addExport (deprecated)
| Deprecated since 2.18.0. Use |
- name
-
addExport
- description
-
Upload a resources export file. Add a zipped pipeline or workflow to the body payload as a binary file. Deprecated — use
registerPackageinstead. - endPoint
-
GET
hop/addExport
The zipped export is sent as the binary request body.
- parameters
-
-
type: the type of resource in the export,
pipelineorworkflow -
load: the name of the file inside the zip to load and register, e.g.
my-workflow.hwf. When left empty the export is only uploaded to the server, nothing is loaded or registered.
-
- example request
-
http://localhost:8081/hop/addExport/?type=workflow&load=my-workflow.hwfwith zipped workflow as payload - result
-
A zip file with the export is created on the server’s file system. The message contains the url of the loaded file inside that archive, the id contains the id of the registered pipeline or workflow:
<?xml version="1.0" encoding="UTF-8"?>
<webresult>
<result>OK</result>
<message>zip:file:///tmp/export_70eb8ef1-9721-4cf5-afa3-940cd0f771d9.zip!my-workflow.hwf</message>
<id>c1451bfb-b867-4c76-b123-c29d2b05da17</id>
</webresult> When load is left empty the message contains the url of the uploaded archive and the id stays empty.
addPipeline (deprecated)
| Deprecated since 2.18.0. Use |
- name
-
addPipeline
- description
-
Add a pipeline for execution. Deprecated — use
registerPipelineinstead. - endPoint
-
GET
hop/addPipeline-
Content-Type: text/xml;charset=UTF-8
-
- parameters
-
-
xml (optional): return the result as xml (default HTML) use
&xml=Y
-
The request body should contain the xml of a pipeline_configuration (a pipeline and a pipeline_execution_configuration wrapped in a pipeline_configuration tag).
- example request
-
http://localhost:8081/hop/addPipeline/?xml=Ywith XML payload - result
-
-
addWorkflow (deprecated)
| Deprecated since 2.18.0. Use |
- name
-
addWorkflow
- description
-
Add a workflow for execution. Deprecated — use
registerWorkflowinstead. - endPoint
-
GET
hop/addWorkflow-
Content-Type: text/xml;charset=UTF-8
-
- parameters
-
-
xml (optional): return the result as xml (default HTML) use
&xml=Y
-
The request body should contain the xml of a workflow_configuration (a workflow and a workflow_execution_configuration wrapped in a workflow_configuration tag).
- example request
-
http://localhost:8081/hop/addWorkflow/?xml=Ywith XML payload - result
-
-
getPipelineImage
- name
-
getPipelineImage
- description
-
Generate a SVG image of a pipeline
- endPoint
-
GET
hop/pipelineImage - parameters
-
-
name: name of the pipeline to generate the image for
-
id (required): id of the pipeline to generate the image for
-
- example request
-
GET
http://localhost:8081/hop/pipelineImage/?name=remote-pipeline&id=c1451bfb-b867-4c76-b123-c29d2b05da17 - result
-
an SVG image of the pipeline graph
getPipelineStatus
- name
-
getPipelineStatus
- description
-
Get the status of a pipeline
- endPoint
-
GET
hop/pipelineStatus - parameters
-
-
name: name of the pipeline to get the status for
-
id (optional): id of the pipeline to get the status for. When omitted, the first pipeline matching
nameis used. -
xml (optional): return the information as xml (default HTML) use &xml=Y
-
json (optional): return the information as json (default HTML) use &json=Y
-
from (optional): the first log line number to return (default
0). Use this to incrementally fetch the log of a running pipeline. -
sendResult (optional): include the pipeline result in the response, use
&sendResult=Y. Only applies to the xml and json output.
-
- example request
-
GET
http://localhost:8081/hop/pipelineStatus/?name=<NAME>&id=<ID> - result
-
an HTML response with the execution status, transform details and canvas preview for this pipeline
Status
- name
-
status
- description
-
Get the status of the server
- endPoint
-
GET
hop/status - parameters
-
-
xml (optional): return the information as xml (default HTML) use &xml=Y
-
json (optional): return the information as json (default HTML) use &json=Y
-
useLightTheme (optional): render the HTML status page with the light theme, use
&useLightTheme=Y. Only applies to the HTML output.
-
- example request
-
GET
http://localhost:8081/hop/status/
GET http://localhost:8081/hop/status/?json=Y
- result
-
an HTML page with an overview of the pipelines and workflows on the server, their execution details and the server’s configuration details.
getWorkflowImage
- name
-
getWorkflowImage
- description
-
Generate an SVG image of a workflow
- endPoint
-
GET
hop/workflowImage - parameters
-
-
name: name of the workflow to generate the image for
-
id (optional): id of the workflow to generate the image for. When omitted, the first workflow matching
nameis used.
-
- example request
-
GET
http://localhost:8081/hop/workflowImage/?name=<NAME>&id=<ID> - result
-
an SVG image of the workflow graph
getWorkflowStatus
- name
-
getWorkflowStatus
- description
-
Get the status of a workflow
- endPoint
-
GET
hop/workflowStatus - parameters
-
-
name: name of the workflow to get the status for. Can be omitted when
idis specified. -
id (optional): id of the workflow to get the status for. When omitted, the first workflow matching
nameis used. -
xml (optional): return the information as xml (default HTML) use &xml=Y
-
json (optional): return the information as json (default HTML) use &json=Y
-
from (optional): the first log line number to return (default
0). Use this to incrementally fetch the log of a running workflow.
-
- example request
-
GET
http://localhost:8081/hop/workflowStatus/?name=<NAME>&id=<ID> - result
-
an HTML response with the execution status, action details and canvas preview for this workflow
pausePipeline
- name
-
pausePipeline
- description
-
Pause or continue a pipeline
- endPoint
-
GET
/hop/pausePipeline - parameters
-
-
name: name of the pipeline to pause or restart
-
id (optional): id of the pipeline to pause or restart. When omitted, the first pipeline matching
nameis used. -
xml (optional): return the result as xml (default HTML) use &xml=Y
-
json (optional): return the result as json (default HTML) use &json=Y
-
- example request
-
GET
http://localhost:8081/hop/pausePipeline/?name=<NAME>&id=<ID> - result
-
HTML page with the request status, e.g.
<HTML>
<HEAD>
<TITLE>Pause pipeline</TITLE>
<META http-equiv="Refresh" content="2;url=/hop/pipelineStatus?name=<NAME>&id=<ID>">
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</HEAD>
<BODY>
<H1>Pipeline [tmp] : pause requested.</H1>
<a href="/hop/pipelineStatus?name=<NAME>&id=<ID>">Back to the pipeline status page</a>
<p>
<p>
</BODY>
</HTML> Prepare Execution
- name
-
prepareExec
- description
-
Prepare the execution of a pipeline
- endPoint
-
GET
/hop/prepareExec - parameters
-
-
name: the name of the pipeline to prepare execution for
-
id (optional): the id of the pipeline to prepare execution for. When omitted, the first pipeline matching
nameis used. -
xml (optional): return the result as xml (default HTML) use &xml=Y
-
json (optional): return the result as json (default HTML) use &json=Y
-
- example request
-
GET
http://localhost:8081/hop/prepareExec/?xml=Y&name=<NAME>&id=<ID> - result
-
Example result:
<?xml version="1.0" encoding="UTF-8"?>
<webresult>
<result>OK</result>
<message/>
<id/>
</webresult> Register Package
- name
-
registerPackage
- description
-
Upload a resources export file and optionally load and register the pipeline or workflow it contains. This is the endpoint used by the remote pipeline and workflow engines for all export operations, and the replacement for the deprecated
addExport. - endPoint
-
GET
/hop/registerPackage
The zipped export is sent as the binary request body.
- parameters
-
-
type: the type of resource to load from the export,
pipelineorworkflow -
load: the name of the file inside the zip to load, e.g.
my-pipeline.hpl. When left empty the export is only uploaded to the server, nothing is loaded or registered and the response contains only the xml header, without awebresult.
-
this endpoint always responds with xml, the xml and json parameters have no effect. |
- example request
-
http://localhost:8081/hop/registerPackage/?type=pipeline&load=my-pipeline.hplwith the zipped export as payload - result
-
The url of the loaded file inside the uploaded archive as the message, and the id of the registered pipeline or workflow as the id:
<?xml version="1.0" encoding="UTF-8"?>
<webresult>
<result>OK</result>
<message>zip:file:///tmp/export_70eb8ef1-9721-4cf5-afa3-940cd0f771d9.zip!my-pipeline.hpl</message>
<id>c1451bfb-b867-4c76-b123-c29d2b05da17</id>
</webresult> Register Pipeline
- name
-
registerPipeline
- description
-
Register a pipeline for execution
- endPoint
-
GET
hop/registerPipeline-
Content-Type: text/xml;charset=UTF-8
-
- parameters
-
-
xml (optional): return the result as xml (default HTML) use
&xml=Y -
json (optional): return the result as json (default HTML) use
&json=Y
-
The request body should contain the xml of a pipeline_configuration (a pipeline and a pipeline_execution_configuration wrapped in a pipeline_configuration tag).
- example request
-
http://localhost:8081/hop/registerPipeline/?xml=Y
with XML payload (example):
<pipeline_configuration>
<pipeline>
<info>
<name>generate_rows</name>
<name_sync_with_filename>Y</name_sync_with_filename>
<description/>
<extended_description/>
<pipeline_version/>
<pipeline_type>Normal</pipeline_type>
<parameters>
</parameters>
<capture_transform_performance>N</capture_transform_performance>
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
<created_user>-</created_user>
<created_date>2022/02/03 13:47:49.645</created_date>
<modified_user>-</modified_user>
<modified_date>2022/02/03 13:47:49.645</modified_date>
<key_for_session_key>H4sIAAAAAAAA/wMAAAAAAAAAAAA=</key_for_session_key>
<is_key_private>N</is_key_private>
</info>
<notepads>
</notepads>
<order>
<hop>
<from>Generate rows</from>
<to>Delay row</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Delay row</from>
<to>result</to>
<enabled>Y</enabled>
</hop>
</order>
<transform>
<name>Delay row</name>
<type>Delay</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<scaletime>seconds</scaletime>
<timeout>1</timeout>
<attributes/>
<GUI>
<xloc>416</xloc>
<yloc>96</yloc>
</GUI>
</transform>
<transform>
<name>Generate rows</name>
<type>RowGenerator</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<fields>
<field>
<length>-1</length>
<name>value</name>
<precision>-1</precision>
<set_empty_string>N</set_empty_string>
<type>String</type>
<nullif>test</nullif>
</field>
</fields>
<interval_in_ms>5000</interval_in_ms>
<last_time_field>FiveSecondsAgo</last_time_field>
<never_ending>N</never_ending>
<limit>10000</limit>
<row_time_field>now</row_time_field>
<attributes/>
<GUI>
<xloc>160</xloc>
<yloc>96</yloc>
</GUI>
</transform>
<transform>
<name>result</name>
<type>Dummy</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<attributes/>
<GUI>
<xloc>720</xloc>
<yloc>96</yloc>
</GUI>
</transform>
<transform_error_handling>
</transform_error_handling>
<attributes/>
</pipeline>
<pipeline_execution_configuration>
<pass_export>N</pass_export>
<parameters>
</parameters>
<variables>
<variable><name>HOP_AUDIT_FOLDER</name><value>/Users/hans/config/audit</value></variable>
<variable><name>HOP_AUTO_CREATE_CONFIG</name><value>Y</value></variable>
<variable><name>HOP_CONFIG_FOLDER</name><value>/Users/hans/config</value></variable>
<variable><name>HOP_DATASETS_FOLDER</name><value>/Users/hans/test/datasets</value></variable>
<variable><name>HOP_ENVIRONMENT_NAME</name><value>test1</value></variable>
<variable><name>HOP_METADATA_FOLDER</name><value>/Users/hans/test/metadata</value></variable>
<variable><name>HOP_PIPELINE_PAN_JVM_EXIT_CODE</name><value/></variable>
<variable><name>HOP_PROJECTS</name><value>/Users/hans/tmp/</value></variable>
<variable><name>HOP_PROJECT_NAME</name><value>test</value></variable>
<variable><name>HOP_UNIT_TESTS_FOLDER</name><value>/Users/hans/test</value></variable>
<variable><name>NEO4J_CONNECTION</name><value>neo4j</value></variable>
<variable><name>PROJECT_HOME</name><value>/Users/hans/test</value></variable>
<variable><name>TEST</name><value>TEST</value></variable>
<variable><name>ftp.nonProxyHosts</name><value>local|*.local|169.254/16|*.169.254/16</value></variable>
<variable><name>http.nonProxyHosts</name><value>local|*.local|169.254/16|*.169.254/16</value></variable>
<variable><name>jdk.debug</name><value>release</value></variable>
<variable><name>native.encoding</name><value>UTF-8</value></variable>
<variable><name>p1</name><value>a</value></variable>
<variable><name>socksNonProxyHosts</name><value>local|*.local|169.254/16|*.169.254/16</value></variable>
</variables>
<log_level>Basic</log_level>
<log_file>N</log_file>
<log_filename/>
<log_file_append>N</log_file_append>
<create_parent_folder>N</create_parent_folder>
<clear_log>Y</clear_log>
<show_subcomponents>Y</show_subcomponents>
<run_configuration>local</run_configuration>
</pipeline_execution_configuration>
<metastore_json>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
ljWkYK7zO7toJAlk3Xw8/QVlC+SCFRAAAA==
</metastore_json>
</pipeline_configuration> The metastore_json is base64 encoded GZip content
- result
-
-
Register Workflow
- name
-
registerWorkflow
- description
-
Register a workflow on the server
- endPoint
-
GET
/hop/registerWorkflow-
Content-Type: text/xml;charset=UTF-8
-
- parameters
-
-
xml (optional): return the result as xml (default HTML) use
&xml=Y -
json (optional): return the result as json (default HTML) use
&json=Y
-
The request body should contain the xml of a workflow_configuration (a workflow and a workflow_execution_configuration wrapped in a workflow_configuration tag), in the same form as the registerPipeline payload.
- example request
-
http://localhost:8081/hop/registerWorkflow/?xml=Ywith XML payload - result
-
The id of the registered workflow, e.g.
<?xml version="1.0" encoding="UTF-8"?>
<webresult>
<result>OK</result>
<message>Workflow 'my-workflow' was added to the list with id c1451bfb-b867-4c76-b123-c29d2b05da17</message>
<id>c1451bfb-b867-4c76-b123-c29d2b05da17</id>
</webresult> Remove Pipeline
- name
-
removePipeline
- description
-
Remove a pipeline from the server
- endPoint
-
GET
/hop/removePipeline - parameters
-
-
name: the name of the pipeline to remove
-
id (optional): the id of the pipeline to remove. When omitted, the first pipeline matching
nameis used. -
xml (optional): return the result as xml (default HTML) use &xml=Y
-
json (optional): return the result as json (default HTML) use &json=Y
-
- example request
-
GET
http://localhost:8081/hop/removePipeline/?name=<NAME>&id=<ID> - result
-
Example result:
<HTML>
<HEAD>
<TITLE>The pipeline was removed</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</HEAD>
<BODY>
<H3>The pipeline with name [<NAME>] and hopServer object id <ID> was removed from Hop
Server.</H3>
<a href="/hop/status">Back to the status page</a><br>
<p>
</BODY> Remove Workflow
- name
-
removeWorkflow
- description
-
Remove a workflow from the server
- endPoint
-
GET
/hop/removeWorkflow - parameters
-
-
name: the name of the workflow to remove
-
id (optional): the id of the workflow to remove. When omitted, the first workflow matching
nameis used. -
xml (optional): return the result as xml (default HTML) use &xml=Y
-
json (optional): return the result as json (default HTML) use &json=Y
-
- example request
-
GET
http://localhost:8081/hop/removeWorkflow/?name=<NAME>&id=<ID> - result
-
Example result:
<HTML>
<HEAD>
<TITLE>The workflow was removed</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</HEAD>
<BODY>
<H3>The workflow with name [<NAME>] and hopServer object id <ID> was removed from Hop
Server.</H3>
<a href="/hop/status">Back to the status page</a><br>
<p>
</BODY> Sniff Transform
- name
-
sniffTransform
- description
-
Sniff test a pipeline transform
- endPoint
-
GET
/hop/sniffTransform - parameters
-
-
pipeline: name of the pipeline to sniff
-
id (optional): id of the pipeline to sniff. When omitted, the first pipeline matching
pipelineis used. -
transform: name of the transform to sniff
-
type (optional): sniff
inputoroutput(defaultoutput) -
lines (optional): number of lines to wait for (default
0) -
copynr (optional): when using multiple copies you can specify the copynr (default
0) -
xml (optional): return the rows as xml (default HTML) use &xml=Y
-
json (optional): return the rows as json (default HTML) use &json=Y
-
- following parameters are required
-
-
id or pipeline
-
transform
-
- example request
-
GET
http://localhost:8081/hop/sniffTransform/?xml=Y&pipeline=<NAME>&id=<ID>&transform=<TRANSFORMNAME>&type=output&lines=100 - result
-
Example result (empty):
<row-buffer>
<row-meta/>
</row-buffer> Start Pipeline Execution
- name
-
startExec
- description
-
Start the execution of a pipeline
- endPoint
-
GET
/hop/startExec - parameters
-
-
name: the name of the pipeline to start
-
id (optional): the id of the pipeline to start. When omitted, the first pipeline matching
nameis used. -
xml (optional): return the result as xml (default HTML) use &xml=Y
-
json (optional): return the result as json (default HTML) use &json=Y
-
- example request
-
GET
http://localhost:8081/hop/startExec?name=<NAME>&id=<ID> - result
-
Example result:
<HTML>
<HEAD>
<TITLE>Prepare execution of pipeline</TITLE>
<META http-equiv="Refresh" content="2;url=/hop/status?name=<NAME>">
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</HEAD>
<BODY>
<H1>Pipeline '<NAME>' has been executed.</H1>
<a href="/hop/pipelineStatus?name=<NAME>&id=8bea27db-de97-4bd0-a210-d9bba3aacac2">Back to the pipeline status page</a>
<p>
<p>
</BODY>
</HTML> Start Pipeline
- name
-
startPipeline
- description
-
Prepare and start the execution of a pipeline
- endPoint
-
GET
/hop/startPipeline - parameters
-
-
name: the name of the pipeline to start
-
id (optional): the id of the pipeline to start. When omitted, the first pipeline matching
nameis used. -
xml (optional): return the result as xml (default HTML) use &xml=Y
-
json (optional): return the result as json (default HTML) use &json=Y
-
- example request
-
GET
http://localhost:8081/hop/startPipeline?name=<NAME>&id=<ID> - result
-
Example result:
<HTML>
<HEAD>
<TITLE>Start of pipeline</TITLE>
<META http-equiv="Refresh" content="2;url=/hop/pipelineStatus?name=<NAME>">
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</HEAD>
<BODY>
<H1>Pipeline [<NAME>] was started.</H1>
<a href="/hop/pipelineStatus?name=<NAME>&id=8bea27db-de97-4bd0-a210-d9bba3aacac2">Back to the status page</a>
<p>
<p>
</BODY>
</HTML> Start Workflow
- name
-
startWorkflow
- description
-
Prepare and start the execution of a workflow
- endPoint
-
GET
/hop/startWorkflow - parameters
-
-
name: the name of the workflow to start
-
id (optional): the id of the workflow to start. When omitted, the first workflow matching
nameis used. -
xml (optional): return the result as xml (default HTML) use &xml=Y
-
json (optional): return the result as json (default HTML) use &json=Y
-
- example request
-
GET
http://localhost:8081/hop/startWorkflow?name=<NAME>&id=<ID> - result
-
Example result:
<HTML>
<HEAD>
<TITLE>Start workflow</TITLE>
<META http-equiv="Refresh" content="2;url=/hop/status?name=<NAME>">
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</HEAD>
<BODY>
<H1>Workflow [<NAME>] was started.</H1>
<a href="/hop/workflowStatus?name=<NAME>&id=8bea27db-de97-4bd0-a210-d9bba3aacac2">Back to the status page</a>
<p>
<p>
</BODY>
</HTML> Execute Pipeline from File
- name
-
execPipeline
- description
-
Execute a pipeline directly from a file path on the server’s file system. The pipeline is loaded, executed synchronously, and the result is returned immediately. This servlet supports variable resolution in file paths (e.g.,
${PROJECT_HOME}) and can pass parameters and variables to the pipeline. - endPoint
-
GET
/hop/execPipeline - parameters
-
-
pipeline (required): File path to the pipeline (.hpl file). Can use variables like
${PROJECT_HOME}which will be resolved by the server. -
level (optional): Logging level (e.g., Debug, Basic, Detailed, Error, Minimal, Nothing, RowLevel). Defaults to server’s default log level.
-
runConfig (optional): Run configuration name to use for execution. If not specified, the default run configuration from metadata is used, or "local" if no default is found.
-
json (optional): return the result as json (default xml) use
&json=Y. Note that, unlikepipeline,levelandrunConfig, this parameter is also passed to the pipeline as a variable. -
any parameter name: Any additional URL parameters will be passed as pipeline parameters or variables. If the parameter name matches a pipeline parameter, it will be set as a parameter; otherwise, it will be set as a variable.
-
- example request
-
GET
http://localhost:8081/hop/execPipeline?pipeline=/opt/hop/config/projects/samples/pipelines/pipeline-with-parameter.hpl&PRM_EXAMPLE=test_value&level=BASIC
Using project variables: GET http://localhost:8081/hop/execPipeline?pipeline=${PROJECT_HOME}/pipelines/my-pipeline.hpl&runConfig=local&level=Detailed
- result
-
Success response (HTTP 200):
<?xml version="1.0" encoding="UTF-8"?>
<webresult>
<result>OK</result>
<message>Pipeline executed successfully</message>
<id/>
</webresult> Error response - Missing parameter (HTTP 400):
<?xml version="1.0" encoding="UTF-8"?>
<webresult>
<result>ERROR</result>
<message>Missing mandatory parameter: pipeline</message>
<id/>
</webresult> Error response - File not found (HTTP 404):
<?xml version="1.0" encoding="UTF-8"?>
<webresult>
<result>ERROR</result>
<message>Unable to find pipeline: /path/to/nonexistent.hpl (resolved: /path/to/nonexistent.hpl)</message>
<id/>
</webresult> Error response - Execution error (HTTP 500):
<?xml version="1.0" encoding="UTF-8"?>
<webresult>
<result>ERROR</result>
<message>Error executing pipeline: [log output]</message>
<id/>
</webresult> - notes
-
-
The pipeline path supports variable resolution. If the server is started with a project (using
-jflag), variables like${PROJECT_HOME}will be resolved. -
The execution is synchronous - the servlet waits for the pipeline to complete before returning.
-
The pipeline is automatically registered in the server’s pipeline map and can be queried using
getPipelineStatus. -
All URL parameters except
pipeline,level, andrunConfigare passed to the pipeline as parameters or variables.
-
Execute Workflow from File
- name
-
execWorkflow
- description
-
Execute a workflow directly from a file path on the server’s file system. The workflow is loaded, executed synchronously, and the result is returned immediately. This servlet supports variable resolution in file paths (e.g.,
${PROJECT_HOME}) and can pass parameters and variables to the workflow. - endPoint
-
GET
/hop/execWorkflow - parameters
-
-
workflow (required): File path to the workflow (.hwf file). Can use variables like
${PROJECT_HOME}which will be resolved by the server. -
level (optional): Logging level (e.g., Debug, Basic, Detailed, Error, Minimal, Nothing, RowLevel). Defaults to server’s default log level.
-
runConfig (optional): Run configuration name to use for execution. If not specified, the default run configuration from metadata is used, or "local" if no default is found.
-
json (optional): return the result as json (default xml) use
&json=Y. Note that, unlikeworkflow,levelandrunConfig, this parameter is also passed to the workflow as a variable. -
any parameter name: Any additional URL parameters will be passed as workflow parameters or variables. If the parameter name matches a workflow parameter, it will be set as a parameter; otherwise, it will be set as a variable.
-
- example request
-
GET
http://localhost:8081/hop/execWorkflow?workflow=/opt/hop/config/projects/samples/workflows/parallel/parallel-workflow.hwf&level=BASIC
Using project variables: GET http://localhost:8081/hop/execWorkflow?workflow=${PROJECT_HOME}/workflows/my-workflow.hwf&runConfig=local&level=Detailed
- result
-
Success response (HTTP 200):
<?xml version="1.0" encoding="UTF-8"?>
<webresult>
<result>OK</result>
<message>Workflow executed successfully</message>
<id/>
</webresult> Error response - Missing parameter (HTTP 400):
<?xml version="1.0" encoding="UTF-8"?>
<webresult>
<result>ERROR</result>
<message>Missing mandatory parameter: workflow</message>
<id/>
</webresult> Error response - File not found (HTTP 404):
<?xml version="1.0" encoding="UTF-8"?>
<webresult>
<result>ERROR</result>
<message>Unable to find workflow: /path/to/nonexistent.hwf (resolved: /path/to/nonexistent.hwf)</message>
<id/>
</webresult> Error response - Execution error (HTTP 500):
<?xml version="1.0" encoding="UTF-8"?>
<webresult>
<result>ERROR</result>
<message>Error executing workflow: [log output]</message>
<id/>
</webresult> - notes
-
-
The workflow path supports variable resolution. If the server is started with a project (using
-jflag), variables like${PROJECT_HOME}will be resolved. -
The execution is synchronous - the servlet waits for the workflow to complete before returning.
-
The workflow is automatically registered in the server’s workflow map and can be queried using
getWorkflowStatus. -
All URL parameters except
workflow,level, andrunConfigare passed to the workflow as parameters or variables.
-
Register Execution Information
- name
-
registerExecInfo
- description
-
Register execution information at an execution information location defined in the server’s metadata. This endpoint is used by the pipeline and workflow engines to report execution information to a central location. The payload to register is sent as the request body.
- endPoint
-
GET
/hop/registerExecInfo - parameters
-
-
type: the type of execution information in the body. One of
execution,state,data. -
location: the name of the execution information location (as defined in the metadata) to register the information at.
-
- example request
-
GET
http://localhost:8081/hop/registerExecInfo/?type=execution&location=<LOCATION_NAME>with the execution information json as payload - result
-
an xml response confirming the registration:
<?xml version="1.0" encoding="UTF-8"?>
<webresult>
<result>OK</result>
<message>Registration successful at location <LOCATION_NAME></message>
<id/>
</webresult> Get Execution Information
- name
-
getExecInfo
- description
-
Query an execution information location defined in the server’s metadata. The
typeparameter selects the kind of query to perform, and determines which of the other parameters are needed. - endPoint
-
GET
/hop/getExecInfo - parameters
-
-
type: the type of query to perform, see the table below.
-
location: the name of the execution information location (as defined in the metadata) to query.
-
id: the execution id to query. Required for types
STATE,STATE_LOGGING,EXECUTION,CHILDREN,CHILD_IDS,PARENT_IDandDELETE, optional forDATA. -
parentId: the parent execution id. Required for type
DATA. -
name: the name of the pipeline or workflow. Required for type
LAST_EXECUTION. -
execType: the execution type, one of
Pipeline,Workflow,TransformorAction. Required for typesLAST_EXECUTIONandCHILD_IDS. -
children (optional): include child executions, use
&children=Y. Only applies to typeIDS. -
limit (optional): for type
IDSthe maximum number of ids to return (default100), for typeSTATE_LOGGINGthe maximum size of the logging text to return (default-1, no limit).
-
The type parameter accepts the following values:
| type | description | required parameters |
|---|---|---|
| Get the execution state of an execution | id |
| Get the logging text of an execution state | id |
| Get a list of execution ids | - |
| Get a single execution | id |
| Get the child executions of an execution | id |
| Get the execution data of an execution | parentId |
| Get the last execution with a given name and type | name, execType |
| Get the child ids of an execution | id, execType |
| Get the parent id of a child execution | id |
| Delete an execution | id |
the type and execType values are case sensitive. Use type=STATE_LOGGING and execType=Pipeline exactly as written above, anything else results in an error. |
- example request
-
GET
http://localhost:8081/hop/getExecInfo/?type=IDS&location=<LOCATION_NAME>&limit=10
GET http://localhost:8081/hop/getExecInfo/?type=STATE&location=<LOCATION_NAME>&id=<ID>
- result
-
a json response with the requested execution information. This endpoint always responds with json.
Delete Execution Information (deprecated)
| Deprecated since 2.18.0. Use |
- name
-
deleteExecInfo
- description
-
Delete an execution from an execution information location defined in the server’s metadata. Deprecated — use
getExecInfowithtype=DELETEinstead. - endPoint
-
GET
/hop/deleteExecInfo - parameters
-
-
id: the id of the execution to delete.
-
location: the name of the execution information location (as defined in the metadata) to delete the execution from.
-
- example request
-
GET
http://localhost:8081/hop/deleteExecInfo/?id=<ID>&location=<LOCATION_NAME> - result
-
an xml response confirming the deletion:
<?xml version="1.0" encoding="UTF-8"?>
<webresult>
<result>OK</result>
<message>Execution deletion was successful at location <LOCATION_NAME></message>
<id/>
</webresult> Stop Pipeline
- name
-
stopPipeline
- description
-
Stop a pipeline
- endPoint
-
GET
/hop/stopPipeline - parameters
-
-
name: the name of the pipeline to stop
-
id (optional): the id of the pipeline to stop. When omitted, the first pipeline matching
nameis used. -
xml (optional): return the result as xml (default HTML) use &xml=Y
-
json (optional): return the result as json (default HTML) use &json=Y
-
- example request
-
GET
http://localhost:8081/hop/stopPipeline?name=<NAME>&id=<ID> - result
-
Example Result:
<HTML>
<HEAD>
<TITLE>Stop pipeline</TITLE>
<META http-equiv="Refresh" content="2;url=/hop/pipelineStatus?name=<NAME>">
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</HEAD>
<BODY>
<H1>Pipeline [<NAME>] stop requested.</H1>
<a href="/hop/pipelineStatus?name=<NAME>&id=<ID>">Back to the pipeline status page</a>
<p>
<p>
</BODY>
</HTML> Stop Workflow
- name
-
stopWorkflow
- description
-
Stop a workflow
- endPoint
-
GET
/hop/stopWorkflow - parameters
-
-
name: the name of the workflow to stop
-
id (optional): the id of the workflow to stop. When omitted, the first workflow matching
nameis used. -
xml (optional): return the result as xml (default HTML) use &xml=Y
-
json (optional): return the result as json (default HTML) use &json=Y
-
- example request
-
GET
http://localhost:8081/hop/stopWorkflow?name=<NAME>&id=<ID> - result
-
Example Result:
<HTML>
<HEAD>
<TITLE>Stop workflow</TITLE>
<META http-equiv="Refresh" content="2;url=/hop/workflowStatus?name=<NAME>">
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</HEAD>
<BODY>
<H1>Workflow [<NAME>] stop requested.</H1>
<a href="/hop/workflowStatus?name=<NAME>&id=<ID>">Back to the pipeline status page</a>
<p>
<p>
</BODY>
</HTML>