Open-Xchange Provisioning using SOAP
Provision Open-Xchange using SOAP
Beneath RMI and commandline, Open-Xchange can be provisioned using SOAP.
PHP users, please read the PHP warning below!
Installation
Just go ahead and install the package open-xchange-admin-soap using the package manager of your Linux system.
Setup SOAP services on Open-Xchange
Nothing to be done once the package open-xchange-admin-soap has been installed. After restarting the Open-Xchange server, you can check for the SOAP services in accessing the URL http://yourox.example.com/webservices
Beginning with Open-Xchange version 6.22, the Axis2 engine has been replaced by the CXF engine. The corresponding package open-xchange-soap-cxf will be installed as a dependency when installing one of the admin soap packages as described above.
Example code
SOAP API documentation can be found in this document.
Java examples can be found here: Open-Xchange-SOAP-WSDL2JAVA
You can find Perl and PHP example code in the git repository wd/backend/com.openexchange.admin.soap. Please follow the SourceCodeAccess guide on how to access the source code.
once checked out, find examples in
com.openexchange.admin.soap/test/perl com.openexchange.admin.soap/test/php
Further documentation and examples:
- SOAP API documentation including examples in perl: http://software.open-xchange.com/products/appsuite/doc/SOAP/admin/OX-Admin-SOAP.html
- The Open-Xchange APS package for Parallels contains some more examples in php.
- The OX as a Service APS package for Parallels contains examples in perl.
- The guide OX as a Service Provisioning using SOAP is explaining how to specifically handle OXaaS
- The cPanel OXtender is also using SOAP via perl
- Provision using C#
- Provisioning using Java
Short warning to PHP users
We do not recommend to use PHP when accessing our SOAP provisioning API. This is because PHP has trouble sending simple arrays in a way we can handle it. This applies to ALL Open-Xchange versions!
If you still want to use PHP, you might need this information:
instead of
#$ctx = new Context(); #$ctx->id = $random_id; #$ctx->maxQuota = 10; #$ctx->loginMappings = array( "mapping1", "mapping2", "mapping3");
in php you have to do
$mctx = array("id" => $random_id, "maxQuota" => 10); $mctx["loginMappings"] = "mapping1"; $mctx["loginMappings "] = "mapping2"; $mctx["loginMappings "] = "mapping3";
and then this:
$result = getContextClient($SOAPHOST)->create(new SoapVar($mctx,SOAP_ENC_OBJECT), $user, getCredentialsObject($OXMASTER_ADMIN, $OXMASTER_ADMIN_PASS));
instead of that:
#$result = getContextClient($SOAPHOST)->create($ctx, $user, getCredentialsObject($OXMASTER_ADMIN, $OXMASTER_ADMIN_PASS));
when using the examples from
com.openexchange.admin.soap/test/php
This information is based on this code
printo_stderr("Update context aliases list\n"); // XXX: OX requires all mappings entries on top level of context // PHP SOAP serializer can't accomplish such task // workaround problem naming keys in array with spaces: // - transparent for XML, different for PHP $map = array('id' => $ctx->id); $key = 'loginMappings'; for ($i = 0; $i < count($mappings); $i++) { $map[$key] = $mappings[$i]; $key .= ' '; }
as taken from the Parallels APS package (see above).