This is an automated email from the ASF dual-hosted git repository.
hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/main by this push:
new 7d9c3b0b16 update rest-api docs, fixes #4278 (#7552)
7d9c3b0b16 is described below
commit 7d9c3b0b166ec77ce2341ec5b2780260cc16631c
Author: Hans Van Akelyen <[email protected]>
AuthorDate: Fri Jul 17 13:49:25 2026 +0200
update rest-api docs, fixes #4278 (#7552)
---
.../modules/ROOT/pages/hop-server/rest-api.adoc | 330 ++++++++++++++++-----
1 file changed, 262 insertions(+), 68 deletions(-)
diff --git a/docs/hop-user-manual/modules/ROOT/pages/hop-server/rest-api.adoc
b/docs/hop-user-manual/modules/ROOT/pages/hop-server/rest-api.adoc
index f1363b169e..197541c636 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/hop-server/rest-api.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/hop-server/rest-api.adoc
@@ -46,26 +46,31 @@ Add a zipped pipeline or workflow to the body payload as a
binary file.
endPoint::
GET `hop/addExport`
+The zipped export is sent as the binary request body.
+
parameters::
-* type: `pipeline` or `workflow`
-* load: -
+* type: the type of resource in the export, `pipeline` or `workflow`
+* 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+` with zipped workflow as
payload
+`+http://localhost:8081/hop/addExport/?type=workflow&load=my-workflow.hwf+`
with 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:
[source,xml]
----
<?xml version="1.0" encoding="UTF-8"?>
<webresult>
<result>OK</result>
-
<message>file:///tmp/export_70eb8ef1-9721-4cf5-afa3-940cd0f771d9.zip</message>
- <id/>
+
<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)_
[WARNING]
@@ -86,10 +91,12 @@ 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).
+* 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=Y+` with XML payload
+`+http://localhost:8081/hop/addPipeline/?xml=Y+` with XML payload
result::
-
@@ -114,10 +121,12 @@ 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).
+* 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=Y+` with XML payload
+`+http://localhost:8081/hop/addWorkflow/?xml=Y+` with XML payload
result::
-
@@ -135,7 +144,7 @@ GET `hop/pipelineImage`
parameters::
* name: name of the pipeline to generate the image for
-* id: id 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+`
@@ -156,12 +165,14 @@ GET `hop/pipelineStatus`
parameters::
* name: name of the pipeline to get the status for
-* id: id 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 `name` is 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>+`
+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
@@ -174,12 +185,19 @@ status
description::
Get the status of the server
+endPoint::
+GET `hop/status`
+
parameters::
-none
+* 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.
@@ -196,10 +214,10 @@ GET `hop/workflowImage`
parameters::
* name: name of the workflow to generate the image for
-* id: id 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 `name` is used.
example request::
-GET `+http://localhost:8081/hop/workflowImage/?name=<NAME>>&id=<ID>+`
+GET `+http://localhost:8081/hop/workflowImage/?name=<NAME>&id=<ID>+`
result::
an SVG image of the workflow graph
@@ -217,10 +235,11 @@ 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
+* name: name of the workflow to get the status for. Can be omitted when `id`
is specified.
+* id (optional): id of the workflow to get the status for. When omitted, the
first workflow matching `name` is 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>+`
@@ -241,7 +260,9 @@ GET `/hop/pausePipeline`
parameters::
* name: name of the pipeline to pause or restart
-* id: id of the pipeline to pause or restart
+* id (optional): id of the pipeline to pause or restart. When omitted, the
first pipeline matching `name` is 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>+`
@@ -281,9 +302,10 @@ 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
+* id (optional): the id of the pipeline to prepare execution for. When
omitted, the first pipeline matching `name` is 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>+`
@@ -303,26 +325,41 @@ Example result:
----
-//=== Register Package
-//
-//name::
-//registerPackage
-//
-//description::
-//Upload a resources export file
-//
-//endPoint::
-//GET `/hop/registerPackage`
-//
-//parameters::
-//* load
-//* type
-//
-//example request::
-//-
-//
-//result::
-//-
+== 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, `pipeline` or `workflow`
+* 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 a `webresult`.
+
+NOTE: 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.hpl+`
with 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:
+
+[source,xml]
+----
+<?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
@@ -338,10 +375,13 @@ 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).
+* 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+`
+`+http://localhost:8081/hop/registerPipeline/?xml=Y+`
with XML payload (example):
[source,xml]
@@ -537,13 +577,26 @@ GET `/hop/registerWorkflow`
* Content-Type: text/xml;charset=UTF-8
parameters::
-* xml:
+* 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 <<Register
Pipeline,`registerPipeline`>> payload.
example request::
--
+`+http://localhost:8081/hop/registerWorkflow/?xml=Y+` with XML payload
result::
--
+The id of the registered workflow, e.g.
+
+[source,xml]
+----
+<?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
@@ -557,8 +610,10 @@ endPoint::
GET `/hop/removePipeline`
parameters::
-- name: the name of the pipeline to remove
-- id: the id of the pipeline to remove
+* name: the name of the pipeline to remove
+* id (optional): the id of the pipeline to remove. When omitted, the first
pipeline matching `name` is 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>+`
@@ -597,7 +652,9 @@ GET `/hop/removeWorkflow`
parameters::
* name: the name of the workflow to remove
-* id: the id of the workflow to remove
+* id (optional): the id of the workflow to remove. When omitted, the first
workflow matching `name` is 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>+`
@@ -635,16 +692,16 @@ endPoint::
GET `/hop/sniffTransform`
parameters::
-* xml: use XML (default: Y)
* pipeline: name of the pipeline to sniff
-* id: id of the pipeline to sniff
+* id (optional): id of the pipeline to sniff. When omitted, the first pipeline
matching `pipeline` is used.
* 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
+* type (optional): sniff `input` or `output` (default `output`)
+* 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::
-* xml
* id or pipeline
* transform
@@ -657,9 +714,11 @@ result::
Example result (empty):
[source,xml]
+----
<row-buffer>
<row-meta/>
</row-buffer>
+----
== Start Pipeline Execution
@@ -674,9 +733,12 @@ 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 `name` is 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>+`
+GET `+http://localhost:8081/hop/startExec?name=<NAME>&id=<ID>+`
result::
@@ -687,14 +749,14 @@ Example result:
<HTML>
<HEAD>
- <TITLE>Start of pipeline</TITLE>
- <META http-equiv="Refresh"
content="2;url=/hop/pipelineStatus?name=<NAME>">
+ <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>] was started.</H1>
- <a
href="/hop/pipelineStatus?name=<NAME>&id=8bea27db-de97-4bd0-a210-d9bba3aacac2">Back
to the status page</a>
+ <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>
@@ -715,9 +777,12 @@ 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 `name` is 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>+`
+GET `+http://localhost:8081/hop/startPipeline?name=<NAME>&id=<ID>+`
result::
@@ -752,13 +817,16 @@ description::
Prepare and start the execution of a workflow
endPoint::
-GET `/hop/startPipeline`
+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 `name` is 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>+`
+GET `+http://localhost:8081/hop/startWorkflow?name=<NAME>&id=<ID>+`
result::
@@ -769,8 +837,8 @@ Example result:
<HTML>
<HEAD>
- <TITLE>Start of workflow</TITLE>
- <META http-equiv="Refresh"
content="2;url=/hop/startWorkflow?name=<NAME>">
+ <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>
@@ -801,6 +869,7 @@ parameters::
* pipeline (required): File path to the pipeline (.hpl file). Can use
variables like `{openvar}PROJECT_HOME{closevar}` 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, unlike `pipeline`, `level` and `runConfig`, 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::
@@ -878,6 +947,7 @@ parameters::
* workflow (required): File path to the workflow (.hwf file). Can use
variables like `{openvar}PROJECT_HOME{closevar}` 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, unlike `workflow`, `level` and `runConfig`, 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::
@@ -938,6 +1008,126 @@ notes::
* The workflow is automatically registered in the server's workflow map and
can be queried using `getWorkflowStatus`.
* All URL parameters except `workflow`, `level`, and `runConfig` are passed to
the workflow as parameters or variables.
+== Register Execution Information
+
+name::
+registerExecInfo
+
+description::
+Register execution information at an
xref:metadata-types/execution-information-location.adoc[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:
+
+[source,xml]
+----
+<?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 xref:metadata-types/execution-information-location.adoc[execution
information location] defined in the server's metadata.
+The `type` parameter 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_ID` and `DELETE`, optional for
`DATA`.
+* 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`, `Transform` or
`Action`. Required for types `LAST_EXECUTION` and `CHILD_IDS`.
+* children (optional): include child executions, use `&children=Y`. Only
applies to type `IDS`.
+* limit (optional): for type `IDS` the maximum number of ids to return
(default `100`), for type `STATE_LOGGING` the maximum size of the logging text
to return (default `-1`, no limit).
+
+The `type` parameter accepts the following values:
+
+[options="header"]
+|===
+|type|description|required parameters
+|`STATE`|Get the execution state of an execution|id
+|`STATE_LOGGING`|Get the logging text of an execution state|id
+|`IDS`|Get a list of execution ids|-
+|`EXECUTION`|Get a single execution|id
+|`CHILDREN`|Get the child executions of an execution|id
+|`DATA`|Get the execution data of an execution|parentId
+|`LAST_EXECUTION`|Get the last execution with a given name and type|name,
execType
+|`CHILD_IDS`|Get the child ids of an execution|id, execType
+|`PARENT_ID`|Get the parent id of a child execution|id
+|`DELETE`|Delete an execution|id
+|===
+
+IMPORTANT: 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)_
+
+[WARNING]
+====
+*Deprecated since 2.18.0.* Use <<Get Execution Information,`getExecInfo`>>
(`hop/getExecInfo`) with `type=DELETE` instead.
+This endpoint has no callers in the application and will be removed in a
future release.
+====
+
+name::
+deleteExecInfo
+
+description::
+Delete an execution from an
xref:metadata-types/execution-information-location.adoc[execution information
location] defined in the server's metadata.
+*Deprecated* — use `getExecInfo` with `type=DELETE` instead.
+
+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:
+
+[source,xml]
+----
+<?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::
@@ -951,7 +1141,9 @@ GET `/hop/stopPipeline`
parameters::
* name: the name of the pipeline to stop
-* id: the id of the pipeline to stop
+* id (optional): the id of the pipeline to stop. When omitted, the first
pipeline matching `name` is 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>+`
@@ -966,7 +1158,7 @@ Example Result:
<HEAD>
<TITLE>Stop pipeline</TITLE>
- <META http-equiv="Refresh"
content="2;url=/hop/pipelineStatus?name=<NAME>>">
+ <META http-equiv="Refresh"
content="2;url=/hop/pipelineStatus?name=<NAME>">
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</HEAD>
@@ -993,7 +1185,9 @@ GET `/hop/stopWorkflow`
parameters::
* name: the name of the workflow to stop
-* id: the id of the workflow to stop
+* id (optional): the id of the workflow to stop. When omitted, the first
workflow matching `name` is 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>+`
@@ -1009,7 +1203,7 @@ Example Result:
<HEAD>
<TITLE>Stop workflow</TITLE>
- <META http-equiv="Refresh"
content="2;url=/hop/workflowStatus?name=<NAME>>">
+ <META http-equiv="Refresh"
content="2;url=/hop/workflowStatus?name=<NAME>">
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</HEAD>