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
- name
 -  
addExport
 - description
 -  
Upload a resources export file. Add a zipped pipeline or workflow to the body payload as a binary file.
 - endPoint
 -  
GET
hop/addExport - parameters
 -  
-  
type:
pipelineorworkflow -  
load: -
 
 -  
 - example request
 -  
http://localhost:8081/hop/addExport/?type=workflowwith zipped workflow as payload - result
 -  
A zip file with the export is created on the server’s file system.
 
<?xml version="1.0" encoding="UTF-8"?>
<webresult>
    <result>OK</result>
    <message>file:///tmp/export_70eb8ef1-9721-4cf5-afa3-940cd0f771d9.zip</message>
    <id/>
</webresult> addPipeline
- name
 -  
addPipeline
 - description
 -  
Add a pipeline for execution
 - endPoint
 -  
GET
hop/addPipeline-  
Content-Type: text/xml;charset=UTF-8
 
 -  
 - parameters
 -  
-  
xml Request body should contain xml containing pipeline_configuration (pipeline and pipeline_execution_configuration wrapped in pipeline_configuration tag).
 
 -  
 - example request
 -  
http://localhost:8081/hop/addPipeline/xml=Ywith XML payload - result
 -  
-
 
addWorkflow
- name
 -  
addWorkflow
 - description
 -  
Add a workflow for execution
 - endPoint
 -  
GET
hop/addWorkflow-  
Content-Type: text/xml;charset=UTF-8
 
 -  
 - parameters
 -  
-  
xml Request body should contain xml containing workflow_configuration (pipeline and workflow_execution_configuration wrapped in pipeline_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: 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: id of the pipeline to get the status for
 -  
xml (optional): return the information as xml (default HTML) use &xml=Y
 -  
json (optional): return the information as json (default HTML) use &json=Y
 
 -  
 - 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
 - parameters
 -  
none
 - example request
 -  
GET
http://localhost:8081/hop/status/ - 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: id of the workflow to generate the image for
 
 -  
 - 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
 -  
id: id of the workflow to get the status for
 -  
xml (optional): return the information as xml (default HTML) use &xml=Y
 -  
json (optional): return the information as json (default HTML) use &json=Y
 
 -  
 - 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: id of the pipeline to pause or restart
 
 -  
 - 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
 -  
-  
xml: use xml, default Y
 -  
name: the name of the pipeline to prepare execution for
 -  
id: the id of the pipeline to prepare execution for
 
 -  
 - 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 Pipeline
- name
 -  
registerPipeline
 - description
 -  
Register a pipeline for execution
 - endPoint
 -  
GET
hop/registerPipeline-  
Content-Type: text/xml;charset=UTF-8
 
 -  
 - parameters
 -  
-  
xml Request body should contain xml containing pipeline_configuration (pipeline and pipeline_execution_configuration wrapped in 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:
 
 -  
 - example request
 -  
-
 - result
 -  
-
 
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: the id of the pipeline to remove
 
 -  
 - 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: the id of the workflow to remove
 
 -  
 - 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
 -  
-  
xml: use XML (default: Y)
 -  
pipeline: name of the pipeline to sniff
 -  
id: id of the pipeline to sniff
 -  
transform: name of the transform to sniff
 -  
type: (input/output) sniff input or output
 -  
lines: number of lines to wait for
 -  
copynr: when using multiple copies you can specify the copynr
 
 -  
 - following parameters are required
 -  
-  
xml
 -  
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
 
 -  
 - example request
 -  
GET
http://localhost:8081/hop/startExec?name=<NAME> - 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 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
 
 -  
 - example request
 -  
GET
http://localhost:8081/hop/startPipeline?name=<NAME> - 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/startPipeline - parameters
 -  
-  
name: the name of the workflow to start
 
 -  
 - example request
 -  
GET
http://localhost:8081/hop/startWorkflow?name=<NAME> - result
 -  
Example result:
 
<HTML>
<HEAD>
	<TITLE>Start of workflow</TITLE>
	<META http-equiv="Refresh" content="2;url=/hop/startWorkflow?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> Stop Pipeline
- name
 -  
stopPipeline
 - description
 -  
Stop a pipeline
 - endPoint
 -  
GET
/hop/stopPipeline - parameters
 -  
-  
name: the name of the pipeline to stop
 -  
id: the id of the pipeline to stop
 
 -  
 - 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: the id of the workflow to stop
 
 -  
 - 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>