Module: Complex Product API
Resource: product_downloadable_link
Method:
- product_downloadable_link.add (SOAP V1)
 - catalogProductDownloadableLinkAdd (SOAP V2)
 
Allows you to add a new link to a downloadable product.
Arguments:
| Type | Name | Description | 
|---|---|---|
| string | sessionId | Session ID | 
| string |  productId  | 
Product ID | 
| array |  resource  | 
Array of catalogProductDownloadableLinkAddEntity | 
| string |  resourceType  | 
Resource type. Can have one of the following values: "sample" or "link". | 
| string |  store  | 
Store view ID or code (optional) | 
| string |  identifierType  | 
Type of the product identifier. Can have one of the following values: "sku" or "id". | 
Return:
| Type | Name | Description | 
|---|---|---|
| int | result | Result of adding a link to the downloadable product | 
The catalogProductDownloadableLinkAddEntity content is as follows:
| Type | Name | Description | 
|---|---|---|
| string |  title  | 
Link title | 
| string |  price  | 
Custom option value row price | 
| int |  is_unlimited  | 
Defines whether the number of downloads is unlimited | 
| int |  number_of_downloads  | 
Maximum number of possible downloads | 
| int |  is_shareable  | 
Defines whether the link is shareable | 
| array |  sample  | 
Array of catalogProductDownloadableLinkAddSampleEntity | 
| string |  type  | 
Type of the data source. Can have one of the following values: "file" or "url" | 
| array |  file  | 
Array of catalogProductDownloadableLinkFileEntity | 
| string |  link_url  | 
Link URL address | 
| string |  sample_url  | 
Sample URL address | 
| int |  sort_order  | 
Link sort order | 
The catalogProductDownloadableLinkAddSampleEntity content is as follows:
| Type | Name | Description | 
|---|---|---|
| string | type |  Type of the data source. Can have one of the following values: "file" or "url"   | 
| array |  file  | 
Array of catalogProductDownloadableLinkFileEntity | 
| string |  url  | 
URL to upload | 
The catalogProductDownloadableLinkFileEntity content is as follows:
| Type | Name | Description | 
|---|---|---|
| string |  name  | 
File name | 
| string |  base64_content  | 
 BASE64 encoded file  | 
Faults:
| Fault Code | Fault Message | 
|---|---|
| 414 |  Unable to save action. Details in error message.  | 
| 415 |  Validation error has occurred.  | 
Examples
Request Example SOAP V1
$proxy = new SoapClient('http://magentohost/api/soap/?wsdl');
$sessionId = $proxy->login('apiUser', 'apiKey');
$filesPath = '/var/www/ws/tests/WebService/etc/Modules/Downloadable/Product/Link';
$downloadableProductId = 'downloadable_demo_product';
$items = array(
    'small' => array(
        'link' => array(
            'title' => 'Test file',
            'price' => '123',
            'is_unlimited' => '1',
            'number_of_downloads' => '111',
            'is_shareable' => '0',
            'sample' => array(
                'type' => 'file',
                'file' =>
                array(
                    'filename' => 'files/test.txt',
                ),
                'url' => 'http://www.magentocommerce.com/img/logo.gif',
            ),
            'type' => 'file',
            'file' =>
            array(
                'filename' => 'files/test.txt',
            ),
            'link_url' => 'http://www.magentocommerce.com/img/logo.gif',
        ),
        'sample' => array(
            'title' => 'Test sample file',
            'type' => 'file',
            'file' => array(
                'filename' => 'files/image.jpg',
            ),
            'sample_url' => 'http://www.magentocommerce.com/img/logo.gif',
            'sort_order' => '3',
        )
    ),
    'big' => array(
        'link' => array(
            'title' => 'Test url',
            'price' => '123',
            'is_unlimited' => '0',
            'number_of_downloads' => '111',
            'is_shareable' => '1',
            'sample' => array(
                'type' => 'url',
                'file' => array(
                    'filename' => 'files/book.pdf',
                ),
                'url' => 'http://www.magentocommerce.com/img/logo.gif',
            ),
            'type' => 'url',
            'file' => array(
                'filename' => 'files/song.mp3',
            ),
            'link_url' => 'http://www.magentocommerce.com/img/logo.gif',
        ),
        'sample' => array(
            'title' => 'Test sample url',
            'type' => 'url',
            'file' => array(
                'filename' => 'files/image.jpg',
            ),
            'sample_url' => 'http://www.magentocommerce.com/img/logo.gif',
            'sort_order' => '3',
        )
    )
);
$result = true;
foreach ($items as $item) {
    foreach ($item as $key => $value) {
        if ($value['type'] == 'file') {
            $filePath = $filesPath . '/' . $value['file']['filename'];
            $value['file'] = array('name' => str_replace('/', '_', $value['file']['filename']), 'base64_content' => base64_encode(file_get_contents($filePath)), 'type' => $value['type']);
        }
        if ($value['sample']['type'] == 'file') {
            $filePath = $filesPath . '/' . $value['sample']['file']['filename'];
            $value['sample']['file'] = array('name' => str_replace('/', '_', $value['sample']['file']['filename']), 'base64_content' => base64_encode(file_get_contents($filePath)));
        }
        if (!$proxy->call(
            $sessionId,
            'product_downloadable_link.add',
            array($downloadableProductId, $value, $key)
        )
        ) {
            $result = false;
        }
    }
}
		Request Example SOAP V2 (WS-I Compliance Mode)
$proxy = new SoapClient('http://magentohost/api/v2_soap/?wsdl');
$sessionId = $proxy->login((object)array('username' => 'apiUser', 'apiKey' => 'apiKey'));
$result = $proxy->catalogProductDownloadableLinkAdd((object)array('sessionId' => $sessionId->result, 'productId' => '3', 'resourceType' => 'link', 'resource' => ((object)array(
'title' => 'link',
'price' => '10.99',
'sample' => array(
'type' => 'url',
'url' => 'http://sometesturl.com')
))));
var_dump($result->result);
		$proxy = new SoapClient('http://magentohost/api/v2_soap/?wsdl');
$sessionId = $proxy->login((object)array('username' => 'apiUser', 'apiKey' => 'apiKey'));
$result = $proxy->catalogProductDownloadableLinkAdd((object)array('sessionId' => $sessionId->result, 'productId' => '3', 'resourceType' => 'link', 'resource' => ((object)array(
'title' => 'link_2',
'price' => '11.99',
'type' => 'file',
'file' => array(
'name' => 'file_test',
'base64_content' => '/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAXABcDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDLooor8XP4DCiiigAooooAKKKKAP/Z'
)
))));
var_dump($result->result);