title: Magento Soap - Get detailed product list with one single call
body: <p>I'm currently using a SOAP method called 'catalogProductList' (<a href="http://www.magentocommerce.com/api/soap/catalog/catalogProduct/catalog_product.list.html" rel="nofollow">http://www.magentocommerce.com/api/soap/catalog/catalogProduct/catalog_product.list.html</a>) that retrieves a Array of catalogProductEntity. </p>
  
  <p>The problem is that <code>catalogProductEntity</code> doesn't have some attributes like 'price' and 'description'. The question is: Is there any (already implemented) SOAP method that gives me this information with one single call?</p>
  
  <p>If don't, how/where can I add this fields to the returned values? I mean, change the php code in the server side to get this 'detailed list of products' in one single call.</p>
  
  <p>I'm trying to avoid several queries to each product to get this info.</p>
  
  <p>PS: I'm using Magento 1.7.</p>
  
  <hr>
  
  <p><strong>Edited</strong></p>
  
  <p>Following @Mat tips, I edited the \app\code\core\Mage\Catalog\Model\Product\Api.php file and my method <code>items</code> is just like this:</p>
  
  <pre><code>public function items($filters = null, $store = null)
  {
      $collection = Mage::getModel('catalog/product')-&gt;getCollection()
          -&gt;addStoreFilter($this-&gt;_getStoreId($store))
          -&gt;addAttributeToSelect('price')
          -&gt;addAttributeToSelect('description')
          -&gt;addAttributeToSelect('name');
  
      /** @var $apiHelper Mage_Api_Helper_Data */
      $apiHelper = Mage::helper('api');
      $filters = $apiHelper-&gt;parseFilters($filters, $this-&gt;_filtersMap);
      try {
          foreach ($filters as $field =&gt; $value) {
              $collection-&gt;addFieldToFilter($field, $value);
          }
      } catch (Mage_Core_Exception $e) {
          $this-&gt;_fault('filters_invalid', $e-&gt;getMessage());
      }
      $result = array();
      foreach ($collection as $product) {
          $result[] = array(
              'product_id' =&gt; $product-&gt;getId(),
              'sku'        =&gt; $product-&gt;getSku(),
              'price'      =&gt; $product-&gt;getData('price'),
              'description'=&gt; $product-&gt;getData('description'),
              'name'       =&gt; $product-&gt;getName(),
              'set'        =&gt; $product-&gt;getAttributeSetId(),
              'type'       =&gt; $product-&gt;getTypeId(),
              'category_ids' =&gt; $product-&gt;getCategoryIds(),
              'website_ids'  =&gt; $product-&gt;getWebsiteIds()
          );
      }
      error_log(print_r($result, true) . "\n", 3, "c:\log.txt");
      return $result;
  }
  </code></pre>
  
  <p>The log file outputs this result:</p>
  
  <pre><code> Array
  (
      [0] =&gt; Array
          (
              [product_id] =&gt; 3
              [sku] =&gt; sim12ple1235
              [price] =&gt; 99.9500
              [description] =&gt; Simple Description
              [name] =&gt; Simple Product
              [set] =&gt; 4
              [type] =&gt; simple
              [category_ids] =&gt; Array
                  (
                  )
              [website_ids] =&gt; Array
                  (
                      [0] =&gt; 1
                  )
          )
  )
  </code></pre>
  
  <p>Note that price and description are in the $result variable, but the xml response I get in the client application is:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:Magento" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"&gt;
  &lt;SOAP-ENV:Body&gt;
  &lt;ns1:catalogProductListResponse&gt;
  &lt;storeView SOAP-ENC:arrayType="ns1:catalogProductEntity[1]" xsi:type="ns1:catalogProductEntityArray"&gt;
  &lt;item xsi:type="ns1:catalogProductEntity"&gt;
  &lt;product_id xsi:type="xsd:string"&gt;3&lt;/product_id&gt;
  &lt;sku xsi:type="xsd:string"&gt;sim12ple1235&lt;/sku&gt;
  &lt;name xsi:type="xsd:string"&gt;Simple Product&lt;/name&gt;
  &lt;set xsi:type="xsd:string"&gt;4&lt;/set&gt;
  &lt;type xsi:type="xsd:string"&gt;simple&lt;/type&gt;
  &lt;category_ids SOAP-ENC:arrayType="xsd:string[0]" xsi:type="ns1:ArrayOfString"/&gt;
  &lt;website_ids SOAP-ENC:arrayType="xsd:string[1]" xsi:type="ns1:ArrayOfString"&gt;
  &lt;item xsi:type="xsd:string"&gt;1&lt;/item&gt;
  &lt;/website_ids&gt;
  &lt;/item&gt;
  &lt;/storeView&gt;
  &lt;/ns1:catalogProductListResponse&gt;
  &lt;/SOAP-ENV:Body&gt;
  &lt;/SOAP-ENV:Envelope&gt;
  </code></pre>
  
  <p>My question is: Is there any xml schema or another config file that specifies the output? Anything else I'm missing to edit in the server side?</p>