This is documentation for Horde 3. Using Horde as a SOAP server Horde applications can have their APIs automatically served through SOAP, XML-RPC, and with the right API methods implemented, WebDAV and SyncML. (more details on this should go here or be linked here) Complex Types You can define complex types in the $_types array in app/lib/api.php Here is an example:

$_types = array(
    'attrValues' => array('attr'   => 'string',
                          'values' => '{urn:horde}stringArray'),
    'attrValuesArray' => array(array('item' => '{urn:horde}serviceman_attrValues')),
);
which automagically generates this WSDL:


        
                
                
        


        
                
                        
                
        

The application which uses these types serves several thousand SOAP transactions a day, with a !J2EE/Axis application on the other end. Here is another example including both the $_types and $_services definitions for an application which checks ADSL coverage areas:

$_types['coverageResults'] = array(
    'number'   => 'string',
    'initial_range' => 'string',
    'final_range' => 'string',
    'miga' => 'string',
    'final_range' => 'string',
    'miga' => 'string',
    'central' => 'string',
    'demarcacion' => 'string',
    'services' => 'string',
);

$_types['coverageResultsArray'] = array(
    array('item' => '{urn:horde}coverage_coverageResults')
);

$_services['check'] = array(
    'args' => array('numbers' => '{urn:horde}stringArray'),
    'checkperms' => false,
    'type' => '{urn:horde}coverage_coverageResultsArray'
);

function _coverage_check($numbers) {
    // code that returns an array of results
    return array($return);
}