The basics of how to talk to the IpSwitch MoveIt DMZ managed file transfer server.
The perl libraries provided by IpSwitch are no longer maintained, but are still available for download. Java and .net (I guess) libraries are kept up to date. The IpSwitch documentation is helpful, but not directly relavent to those who want to use the RESTful API. They do not provide a document for the RESTful API. Furthermore, I'm not sure how often it might change between versions.
I've asked that the old perl libraries be opensourced. You can ask too by using this form or calling (781) 645-5570 between 8:00 am and 6:00 pm Central U.S. time zone (GMT-6), Monday through Friday. Better yet, submit a support ticket.
The endpoint is at https://acme.com/machine.aspx
You need a minimum of three arguments in the GET string
- transaction
- username
- password
Other arguments are specified with arg#, numbered as the method requires. The transaction is essentially the action or query that you want to issue to the server. Sometimes the method names in the MoveIt DMZ API documentation translate to their lcased transaction names. Sometimes, they don't quite match.
If you enter an invalid transaction name (thanks to zero documentation), you'll get this error:
curl 'https://files.acme.com/machine.aspx?transaction=bogusxaction&username=bob&password=seekret&arg01=georgiabest-030&arg02=bob'<?xml version="1.0"?>
<siLockResponse><ErrorCode>2320</ErrorCode><ErrorDescription>Invalid transaction 'bogusxaction'</ErrorDescription><Payload></Payload></siLockResponse>If you're missing a required argument or if the argument value given is invalid, you'll probably see something helpful like this:
curl 'https://files.acme.com/machine.aspx?transaction=usergroupchangemembership1&username=bob&password=seekret&arg02=bob'<?xml version="1.0"?>
<siLockResponse><ErrorCode>2850</ErrorCode><ErrorDescription>Could not locate group ''</ErrorDescription><Payload>False</Payload></siLockResponse>Interacting primitively with the API is eased by some great tools
- curl - for making arbitrary HTTP calls from the command line
- Chrome REST Console
- XML::XPath - for searching the XML responses from the command-line (xpath command included with libxml-xpath-perl Ubuntu package)
curl 'https://acme.com/machine.aspx?transaction=folderlist&username=bob&password=seekret'<?xml version="1.0"?>
<siLockResponse><ErrorCode>3400</ErrorCode><ErrorDescription>Licensing error: This key does not enable this feature.</ErrorDescription><Payload></Payload></siLockResponse>curl 'https://files.acme.com/machine.aspx?transaction=folderlist&username=bob&password=seekret'curl 'https://files.acme.com/machine.aspx?transaction=usergroupchangemembership&username=bob&password=seekret&arg01=coolkids&arg02=bob&arg03=2'curl 'https://files.acme.com/machine.aspx?transaction=usergrouplist&username=bob&password=seekret&arg01=bob'here's an example of xpath usage and output:
curl 'https://files.acme.com/machine.aspx?transaction=usergrouplist&username=bob&password=seekret&arg01=bob'|xpath -e "//Name"<Name>demo-930</Name>
<Name>demo-980</Name>
<Name>test-01</Name>