| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | #!/usr/bin/perl | 
| 2 |  |  |  |  |  |  |  | 
| 3 |  |  |  |  |  |  | package eBay::API::XML::Call::GetProducts; | 
| 4 |  |  |  |  |  |  |  | 
| 5 | 1 |  |  | 1 |  | 2467 | use strict; | 
|  | 1 |  |  |  |  | 4 |  | 
|  | 1 |  |  |  |  | 32 |  | 
| 6 | 1 |  |  | 1 |  | 5 | use warnings; | 
|  | 1 |  |  |  |  | 2 |  | 
|  | 1 |  |  |  |  | 40 |  | 
| 7 |  |  |  |  |  |  |  | 
| 8 |  |  |  |  |  |  | ########################################################################## | 
| 9 |  |  |  |  |  |  | # | 
| 10 |  |  |  |  |  |  | # Module: ............... eBay/API/XML | 
| 11 |  |  |  |  |  |  | # File: ................. GetProducts.pm | 
| 12 |  |  |  |  |  |  | # Generated by: ......... genEBayApiDataTypes.pl | 
| 13 |  |  |  |  |  |  | # Last Generated: ....... 08/24/2008 16:44 | 
| 14 |  |  |  |  |  |  | # API Release Number: ... 579 | 
| 15 |  |  |  |  |  |  | # | 
| 16 |  |  |  |  |  |  | ########################################################################## | 
| 17 |  |  |  |  |  |  |  | 
| 18 |  |  |  |  |  |  | =head1 NAME | 
| 19 |  |  |  |  |  |  |  | 
| 20 |  |  |  |  |  |  | eBay::API::XML::Call::GetProducts | 
| 21 |  |  |  |  |  |  |  | 
| 22 |  |  |  |  |  |  | =head1 DESCRIPTION | 
| 23 |  |  |  |  |  |  |  | 
| 24 |  |  |  |  |  |  |  | 
| 25 |  |  |  |  |  |  |  | 
| 26 |  |  |  |  |  |  | =head1 SYNOPSIS | 
| 27 |  |  |  |  |  |  |  | 
| 28 |  |  |  |  |  |  | =cut | 
| 29 |  |  |  |  |  |  |  | 
| 30 |  |  |  |  |  |  |  | 
| 31 |  |  |  |  |  |  | =head1 INHERITANCE | 
| 32 |  |  |  |  |  |  |  | 
| 33 |  |  |  |  |  |  | eBay::API::XML::Call::GetProducts inherits from the L class | 
| 34 |  |  |  |  |  |  |  | 
| 35 |  |  |  |  |  |  | =cut | 
| 36 |  |  |  |  |  |  |  | 
| 37 | 1 |  |  | 1 |  | 36 | use eBay::API::XML::BaseCall; | 
|  | 0 |  |  |  |  |  |  | 
|  | 0 |  |  |  |  |  |  | 
| 38 |  |  |  |  |  |  | our @ISA = ("eBay::API::XML::BaseCall"); | 
| 39 |  |  |  |  |  |  |  | 
| 40 |  |  |  |  |  |  | use eBay::API::XML::Call::GetProducts::GetProductsRequestType; | 
| 41 |  |  |  |  |  |  | use eBay::API::XML::Call::GetProducts::GetProductsResponseType; | 
| 42 |  |  |  |  |  |  |  | 
| 43 |  |  |  |  |  |  |  | 
| 44 |  |  |  |  |  |  | =head1 Subroutines: | 
| 45 |  |  |  |  |  |  |  | 
| 46 |  |  |  |  |  |  | =cut | 
| 47 |  |  |  |  |  |  |  | 
| 48 |  |  |  |  |  |  | sub getApiCallName { | 
| 49 |  |  |  |  |  |  | return 'GetProducts'; | 
| 50 |  |  |  |  |  |  | } | 
| 51 |  |  |  |  |  |  | sub getRequestDataTypeFullPackage { | 
| 52 |  |  |  |  |  |  | return 'eBay::API::XML::Call::GetProducts::GetProductsRequestType'; | 
| 53 |  |  |  |  |  |  | } | 
| 54 |  |  |  |  |  |  | sub getResponseDataTypeFullPackage { | 
| 55 |  |  |  |  |  |  | return 'eBay::API::XML::Call::GetProducts::GetProductsResponseType'; | 
| 56 |  |  |  |  |  |  | } | 
| 57 |  |  |  |  |  |  |  | 
| 58 |  |  |  |  |  |  | # | 
| 59 |  |  |  |  |  |  | # input properties | 
| 60 |  |  |  |  |  |  | # | 
| 61 |  |  |  |  |  |  |  | 
| 62 |  |  |  |  |  |  | =head2 setAffiliateTrackingDetails() | 
| 63 |  |  |  |  |  |  |  | 
| 64 |  |  |  |  |  |  | See the | 
| 65 |  |  |  |  |  |  | eBay Partner Network. | 
| 66 |  |  |  |  |  |  | eBay uses the specified details to build a View Item URL | 
| 67 |  |  |  |  |  |  | string in the response that includes your | 
| 68 |  |  |  |  |  |  | affiliate tracking information in the correct format. | 
| 69 |  |  |  |  |  |  | When a user clicks through the URL to eBay and performs | 
| 70 |  |  |  |  |  |  | certain tasks, you may get a commission (see the URL above). | 
| 71 |  |  |  |  |  |  | Only applicable when IncludeItemArray is specified | 
| 72 |  |  |  |  |  |  | (because the View Item URL is only returned in item information, | 
| 73 |  |  |  |  |  |  | not in product information). | 
| 74 |  |  |  |  |  |  |  | 
| 75 |  |  |  |  |  |  | SeeLink: URL: http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&topic=AffiliateTrackingConcepts | 
| 76 |  |  |  |  |  |  | Title: Affiliate Tracking Concepts | 
| 77 |  |  |  |  |  |  |  | 
| 78 |  |  |  |  |  |  | RequiredInput: No | 
| 79 |  |  |  |  |  |  | #    Argument: 'ns:AffiliateTrackingDetailsType' | 
| 80 |  |  |  |  |  |  |  | 
| 81 |  |  |  |  |  |  | =cut | 
| 82 |  |  |  |  |  |  |  | 
| 83 |  |  |  |  |  |  | sub setAffiliateTrackingDetails { | 
| 84 |  |  |  |  |  |  | my $self   = shift; | 
| 85 |  |  |  |  |  |  | my $pAffiliateTrackingDetails = shift; | 
| 86 |  |  |  |  |  |  | $self->getRequestDataType()->setAffiliateTrackingDetails($pAffiliateTrackingDetails); | 
| 87 |  |  |  |  |  |  | } | 
| 88 |  |  |  |  |  |  |  | 
| 89 |  |  |  |  |  |  | =head2 setIncludeBuyingGuideDetails() | 
| 90 |  |  |  |  |  |  |  | 
| 91 |  |  |  |  |  |  | If true, the response includes up to 5 buying guides (if any) | 
| 92 |  |  |  |  |  |  | for the product specified in ExternalProductID or | 
| 93 |  |  |  |  |  |  | ProductReferenceID. | 
| 94 |  |  |  |  |  |  | Not applicable with QueryKeywords. | 
| 95 |  |  |  |  |  |  |  | 
| 96 |  |  |  |  |  |  | RequiredInput: No | 
| 97 |  |  |  |  |  |  | Default: false | 
| 98 |  |  |  |  |  |  | #    Argument: 'xs:boolean' | 
| 99 |  |  |  |  |  |  |  | 
| 100 |  |  |  |  |  |  | =cut | 
| 101 |  |  |  |  |  |  |  | 
| 102 |  |  |  |  |  |  | sub setIncludeBuyingGuideDetails { | 
| 103 |  |  |  |  |  |  | my $self   = shift; | 
| 104 |  |  |  |  |  |  | my $sIncludeBuyingGuideDetails = shift; | 
| 105 |  |  |  |  |  |  | $self->getRequestDataType()->setIncludeBuyingGuideDetails($sIncludeBuyingGuideDetails); | 
| 106 |  |  |  |  |  |  | } | 
| 107 |  |  |  |  |  |  |  | 
| 108 |  |  |  |  |  |  | =head2 setIncludeHistogram() | 
| 109 |  |  |  |  |  |  |  | 
| 110 |  |  |  |  |  |  | If true, the response includes a histogram that lists the | 
| 111 |  |  |  |  |  |  | number of matching products found and the domains in which | 
| 112 |  |  |  |  |  |  | they were found. (A domain is like a high-level category.) | 
| 113 |  |  |  |  |  |  | Including the histogram can affect the call's performance. | 
| 114 |  |  |  |  |  |  | You may see significantly slower response times when many | 
| 115 |  |  |  |  |  |  | matching products are found. | 
| 116 |  |  |  |  |  |  |  | 
| 117 |  |  |  |  |  |  | RequiredInput: No | 
| 118 |  |  |  |  |  |  | Default: false | 
| 119 |  |  |  |  |  |  | #    Argument: 'xs:boolean' | 
| 120 |  |  |  |  |  |  |  | 
| 121 |  |  |  |  |  |  | =cut | 
| 122 |  |  |  |  |  |  |  | 
| 123 |  |  |  |  |  |  | sub setIncludeHistogram { | 
| 124 |  |  |  |  |  |  | my $self   = shift; | 
| 125 |  |  |  |  |  |  | my $sIncludeHistogram = shift; | 
| 126 |  |  |  |  |  |  | $self->getRequestDataType()->setIncludeHistogram($sIncludeHistogram); | 
| 127 |  |  |  |  |  |  | } | 
| 128 |  |  |  |  |  |  |  | 
| 129 |  |  |  |  |  |  | =head2 setIncludeItemArray() | 
| 130 |  |  |  |  |  |  |  | 
| 131 |  |  |  |  |  |  | If true, the response includes items (if any) that match the | 
| 132 |  |  |  |  |  |  | product specified in ExternalProductID or ProductReferenceID. | 
| 133 |  |  |  |  |  |  | Not applicable with QueryKeywords. | 
| 134 |  |  |  |  |  |  |  | 
| 135 |  |  |  |  |  |  | RequiredInput: No | 
| 136 |  |  |  |  |  |  | Default: false | 
| 137 |  |  |  |  |  |  | #    Argument: 'xs:boolean' | 
| 138 |  |  |  |  |  |  |  | 
| 139 |  |  |  |  |  |  | =cut | 
| 140 |  |  |  |  |  |  |  | 
| 141 |  |  |  |  |  |  | sub setIncludeItemArray { | 
| 142 |  |  |  |  |  |  | my $self   = shift; | 
| 143 |  |  |  |  |  |  | my $sIncludeItemArray = shift; | 
| 144 |  |  |  |  |  |  | $self->getRequestDataType()->setIncludeItemArray($sIncludeItemArray); | 
| 145 |  |  |  |  |  |  | } | 
| 146 |  |  |  |  |  |  |  | 
| 147 |  |  |  |  |  |  | =head2 setIncludeReviewDetails() | 
| 148 |  |  |  |  |  |  |  | 
| 149 |  |  |  |  |  |  | If true, the response includes up to 20 reviews (if any) | 
| 150 |  |  |  |  |  |  | for the product specified in ExternalProductID or | 
| 151 |  |  |  |  |  |  | ProductReferenceID. | 
| 152 |  |  |  |  |  |  | The reviews are sorted by most helpful (most votes) first. | 
| 153 |  |  |  |  |  |  | When you include review details, please note that | 
| 154 |  |  |  |  |  |  | response times may be longer than 60 seconds. | 
| 155 |  |  |  |  |  |  | Not applicable with QueryKeywords. | 
| 156 |  |  |  |  |  |  |  | 
| 157 |  |  |  |  |  |  | RequiredInput: No | 
| 158 |  |  |  |  |  |  | Default: false | 
| 159 |  |  |  |  |  |  | #    Argument: 'xs:boolean' | 
| 160 |  |  |  |  |  |  |  | 
| 161 |  |  |  |  |  |  | =cut | 
| 162 |  |  |  |  |  |  |  | 
| 163 |  |  |  |  |  |  | sub setIncludeReviewDetails { | 
| 164 |  |  |  |  |  |  | my $self   = shift; | 
| 165 |  |  |  |  |  |  | my $sIncludeReviewDetails = shift; | 
| 166 |  |  |  |  |  |  | $self->getRequestDataType()->setIncludeReviewDetails($sIncludeReviewDetails); | 
| 167 |  |  |  |  |  |  | } | 
| 168 |  |  |  |  |  |  |  | 
| 169 |  |  |  |  |  |  | =head2 setProductSearch() | 
| 170 |  |  |  |  |  |  |  | 
| 171 |  |  |  |  |  |  | Contains the fields that form the search query. You can query | 
| 172 |  |  |  |  |  |  | against keywords, an eBay product reference ID (not to be confused | 
| 173 |  |  |  |  |  |  | with an eBay product ID), or external product ID (like an ISBN). | 
| 174 |  |  |  |  |  |  |  | 
| 175 |  |  |  |  |  |  | RequiredInput: Yes | 
| 176 |  |  |  |  |  |  | #    Argument: 'ns:ProductSearchType' | 
| 177 |  |  |  |  |  |  |  | 
| 178 |  |  |  |  |  |  | =cut | 
| 179 |  |  |  |  |  |  |  | 
| 180 |  |  |  |  |  |  | sub setProductSearch { | 
| 181 |  |  |  |  |  |  | my $self   = shift; | 
| 182 |  |  |  |  |  |  | my $pProductSearch = shift; | 
| 183 |  |  |  |  |  |  | $self->getRequestDataType()->setProductSearch($pProductSearch); | 
| 184 |  |  |  |  |  |  | } | 
| 185 |  |  |  |  |  |  |  | 
| 186 |  |  |  |  |  |  | =head2 setProductSort() | 
| 187 |  |  |  |  |  |  |  | 
| 188 |  |  |  |  |  |  | Sorts the list of products returned. This is mostly only useful | 
| 189 |  |  |  |  |  |  | with QueryKeywords. (When you use ExternalProductID or | 
| 190 |  |  |  |  |  |  | ProductReferenceID, eBay usually only returns one product.) | 
| 191 |  |  |  |  |  |  |  | 
| 192 |  |  |  |  |  |  | RequiredInput: No | 
| 193 |  |  |  |  |  |  | #    Argument: 'ns:ProductSortCodeType' | 
| 194 |  |  |  |  |  |  |  | 
| 195 |  |  |  |  |  |  | =cut | 
| 196 |  |  |  |  |  |  |  | 
| 197 |  |  |  |  |  |  | sub setProductSort { | 
| 198 |  |  |  |  |  |  | my $self   = shift; | 
| 199 |  |  |  |  |  |  | my $sProductSort = shift; | 
| 200 |  |  |  |  |  |  | $self->getRequestDataType()->setProductSort($sProductSort); | 
| 201 |  |  |  |  |  |  | } | 
| 202 |  |  |  |  |  |  |  | 
| 203 |  |  |  |  |  |  |  | 
| 204 |  |  |  |  |  |  |  | 
| 205 |  |  |  |  |  |  | # | 
| 206 |  |  |  |  |  |  | # output properties | 
| 207 |  |  |  |  |  |  | # | 
| 208 |  |  |  |  |  |  |  | 
| 209 |  |  |  |  |  |  | =head2 getApproximatePages() | 
| 210 |  |  |  |  |  |  |  | 
| 211 |  |  |  |  |  |  | The total number of pages that can be returned, given the same query and | 
| 212 |  |  |  |  |  |  | filters in the request. As GetProducts only returns up to 2000 products, | 
| 213 |  |  |  |  |  |  | the maximum possible value is theoretically 2000 (if you were to set | 
| 214 |  |  |  |  |  |  | EntriesPerPage to 1 in the request). | 
| 215 |  |  |  |  |  |  |  | 
| 216 |  |  |  |  |  |  | Returned: Always | 
| 217 |  |  |  |  |  |  | #    Returns: 'xs:int' | 
| 218 |  |  |  |  |  |  |  | 
| 219 |  |  |  |  |  |  | =cut | 
| 220 |  |  |  |  |  |  |  | 
| 221 |  |  |  |  |  |  | sub getApproximatePages { | 
| 222 |  |  |  |  |  |  | my $self = shift; | 
| 223 |  |  |  |  |  |  | return $self->getResponseDataType()->getApproximatePages(); | 
| 224 |  |  |  |  |  |  | } | 
| 225 |  |  |  |  |  |  |  | 
| 226 |  |  |  |  |  |  | =head2 getBuyingGuideDetails() | 
| 227 |  |  |  |  |  |  |  | 
| 228 |  |  |  |  |  |  | Contains information for up to 5 buying guides that match the | 
| 229 |  |  |  |  |  |  | query. Only returned when you set IncludeBuyingGuideDetails to | 
| 230 |  |  |  |  |  |  | true. Buying guides provide useful information about shopping | 
| 231 |  |  |  |  |  |  | in a particular domain, like Digital Cameras. | 
| 232 |  |  |  |  |  |  | For example, a digital camera buying guide | 
| 233 |  |  |  |  |  |  | could help a buyer determine what kind of digital camera | 
| 234 |  |  |  |  |  |  | is right for them. | 
| 235 |  |  |  |  |  |  | If no buying guides are associated with the product, this only | 
| 236 |  |  |  |  |  |  | returns a link to the buying guide hub (the main Guides page). | 
| 237 |  |  |  |  |  |  |  | 
| 238 |  |  |  |  |  |  | Returned: Conditionally | 
| 239 |  |  |  |  |  |  | #    Returns: 'ns:BuyingGuideDetailsType' | 
| 240 |  |  |  |  |  |  |  | 
| 241 |  |  |  |  |  |  | =cut | 
| 242 |  |  |  |  |  |  |  | 
| 243 |  |  |  |  |  |  | sub getBuyingGuideDetails { | 
| 244 |  |  |  |  |  |  | my $self = shift; | 
| 245 |  |  |  |  |  |  | return $self->getResponseDataType()->getBuyingGuideDetails(); | 
| 246 |  |  |  |  |  |  | } | 
| 247 |  |  |  |  |  |  |  | 
| 248 |  |  |  |  |  |  | =head2 getCharacteristicsSetProductHistogram() | 
| 249 |  |  |  |  |  |  |  | 
| 250 |  |  |  |  |  |  | A histogram that lists the number of matching products found | 
| 251 |  |  |  |  |  |  | and the domains in which they were found. | 
| 252 |  |  |  |  |  |  | A domain is essentially | 
| 253 |  |  |  |  |  |  | a set of categories that share certain common features | 
| 254 |  |  |  |  |  |  | (as determined by eBay). Each domain has its own name and ID. | 
| 255 |  |  |  |  |  |  |  | 
| 256 |  |  |  |  |  |  | Returned: Always | 
| 257 |  |  |  |  |  |  | #    Returns: 'ns:CharacteristicsSetProductHistogramType' | 
| 258 |  |  |  |  |  |  |  | 
| 259 |  |  |  |  |  |  | =cut | 
| 260 |  |  |  |  |  |  |  | 
| 261 |  |  |  |  |  |  | sub getCharacteristicsSetProductHistogram { | 
| 262 |  |  |  |  |  |  | my $self = shift; | 
| 263 |  |  |  |  |  |  | return $self->getResponseDataType()->getCharacteristicsSetProductHistogram(); | 
| 264 |  |  |  |  |  |  | } | 
| 265 |  |  |  |  |  |  |  | 
| 266 |  |  |  |  |  |  | =head2 isHasMore() | 
| 267 |  |  |  |  |  |  |  | 
| 268 |  |  |  |  |  |  | If true, more pages of results are available. | 
| 269 |  |  |  |  |  |  | That is, PageNumber is less than ApproximatePages. | 
| 270 |  |  |  |  |  |  |  | 
| 271 |  |  |  |  |  |  | Returned: Always | 
| 272 |  |  |  |  |  |  | #    Returns: 'xs:boolean' | 
| 273 |  |  |  |  |  |  |  | 
| 274 |  |  |  |  |  |  | =cut | 
| 275 |  |  |  |  |  |  |  | 
| 276 |  |  |  |  |  |  | sub isHasMore { | 
| 277 |  |  |  |  |  |  | my $self = shift; | 
| 278 |  |  |  |  |  |  | return $self->getResponseDataType()->isHasMore(); | 
| 279 |  |  |  |  |  |  | } | 
| 280 |  |  |  |  |  |  |  | 
| 281 |  |  |  |  |  |  | =head2 getItemArray() | 
| 282 |  |  |  |  |  |  |  | 
| 283 |  |  |  |  |  |  | A list of items (if any) that match the product identified in | 
| 284 |  |  |  |  |  |  | ExternalProductID or ProductReferenceID in the request. | 
| 285 |  |  |  |  |  |  | Only returned when you set IncludeItemArray to true. | 
| 286 |  |  |  |  |  |  | The items are sorted by end time (ending soonest), and this order | 
| 287 |  |  |  |  |  |  | is not configurable in the request. | 
| 288 |  |  |  |  |  |  | Up to 200 items can be returned. All items are returned on | 
| 289 |  |  |  |  |  |  | the first page (page 1). Not returned when you use | 
| 290 |  |  |  |  |  |  | QueryKeywords. 
 | 
| 291 |  |  |  |  |  |  | 
 | 
| 292 |  |  |  |  |  |  | If ItemCount is greater than 200, use GetSearchResults if you | 
| 293 |  |  |  |  |  |  | want to retrieve more matching items. 
 | 
| 294 |  |  |  |  |  |  | 
 | 
| 295 |  |  |  |  |  |  | Note: | 
| 296 |  |  |  |  |  |  | GetSearchResults doesn't currently support ProductReferenceID | 
| 297 |  |  |  |  |  |  | queries. So, you can use ExternalProductID (if present) as input | 
| 298 |  |  |  |  |  |  | to GetSearchResults. Otherwise, see Product.DetailsURL for | 
| 299 |  |  |  |  |  |  | a workaround to determine a ProductID value to use with | 
| 300 |  |  |  |  |  |  | GetSearchResults. | 
| 301 |  |  |  |  |  |  |  | 
| 302 |  |  |  |  |  |  | Returned: Conditionally | 
| 303 |  |  |  |  |  |  | #    Returns: 'ns:ItemArrayType' | 
| 304 |  |  |  |  |  |  |  | 
| 305 |  |  |  |  |  |  | =cut | 
| 306 |  |  |  |  |  |  |  | 
| 307 |  |  |  |  |  |  | sub getItemArray { | 
| 308 |  |  |  |  |  |  | my $self = shift; | 
| 309 |  |  |  |  |  |  | return $self->getResponseDataType()->getItemArray(); | 
| 310 |  |  |  |  |  |  | } | 
| 311 |  |  |  |  |  |  |  | 
| 312 |  |  |  |  |  |  | =head2 getPageNumber() | 
| 313 |  |  |  |  |  |  |  | 
| 314 |  |  |  |  |  |  | The number of the page of data returned. If many products | 
| 315 |  |  |  |  |  |  | are found and multiple pages of results are available, use | 
| 316 |  |  |  |  |  |  | this in combination with ApproximatePages and HasMore to decide | 
| 317 |  |  |  |  |  |  | which page to retrieve next. As GetProducts only returns | 
| 318 |  |  |  |  |  |  | up to 2000 products, the maximum possible value is theoretically | 
| 319 |  |  |  |  |  |  | 2000 (if you were to set EntriesPerPage to 1 in the request). | 
| 320 |  |  |  |  |  |  |  | 
| 321 |  |  |  |  |  |  | Returned: Always | 
| 322 |  |  |  |  |  |  | #    Returns: 'xs:int' | 
| 323 |  |  |  |  |  |  |  | 
| 324 |  |  |  |  |  |  | =cut | 
| 325 |  |  |  |  |  |  |  | 
| 326 |  |  |  |  |  |  | sub getPageNumber { | 
| 327 |  |  |  |  |  |  | my $self = shift; | 
| 328 |  |  |  |  |  |  | return $self->getResponseDataType()->getPageNumber(); | 
| 329 |  |  |  |  |  |  | } | 
| 330 |  |  |  |  |  |  |  | 
| 331 |  |  |  |  |  |  | =head2 getProduct() | 
| 332 |  |  |  |  |  |  |  | 
| 333 |  |  |  |  |  |  | An eBay catalog product. This contains stock information about a | 
| 334 |  |  |  |  |  |  | particular DVD, camera, set of golf clubs, or other product. | 
| 335 |  |  |  |  |  |  | When you use QueryKeywords in the request, GetProducts returns a | 
| 336 |  |  |  |  |  |  | maximum of 20 products per page. | 
| 337 |  |  |  |  |  |  | When you use ExternalProductID or ProductReferenceID in the | 
| 338 |  |  |  |  |  |  | request, GetProducts usually only returns 1 product. | 
| 339 |  |  |  |  |  |  | (If more than one product matches the same ExternalProductID, | 
| 340 |  |  |  |  |  |  | GetProducts will return all of those products. As of the time | 
| 341 |  |  |  |  |  |  | of this writing, we expect this to be a rare case.) | 
| 342 |  |  |  |  |  |  |  | 
| 343 |  |  |  |  |  |  | Returned: Always | 
| 344 |  |  |  |  |  |  | #    Returns: reference to an array | 
| 345 |  |  |  |  |  |  | of 'ns:CatalogProductType' | 
| 346 |  |  |  |  |  |  |  | 
| 347 |  |  |  |  |  |  | =cut | 
| 348 |  |  |  |  |  |  |  | 
| 349 |  |  |  |  |  |  | sub getProduct { | 
| 350 |  |  |  |  |  |  | my $self = shift; | 
| 351 |  |  |  |  |  |  | return $self->getResponseDataType()->getProduct(); | 
| 352 |  |  |  |  |  |  | } | 
| 353 |  |  |  |  |  |  |  | 
| 354 |  |  |  |  |  |  | =head2 getTotalProducts() | 
| 355 |  |  |  |  |  |  |  | 
| 356 |  |  |  |  |  |  | The total number of matching products found. | 
| 357 |  |  |  |  |  |  | (If more than 2000 products are found, the call fails | 
| 358 |  |  |  |  |  |  | with an error.) | 
| 359 |  |  |  |  |  |  |  | 
| 360 |  |  |  |  |  |  | Returned: Always | 
| 361 |  |  |  |  |  |  | #    Returns: 'xs:int' | 
| 362 |  |  |  |  |  |  |  | 
| 363 |  |  |  |  |  |  | =cut | 
| 364 |  |  |  |  |  |  |  | 
| 365 |  |  |  |  |  |  | sub getTotalProducts { | 
| 366 |  |  |  |  |  |  | my $self = shift; | 
| 367 |  |  |  |  |  |  | return $self->getResponseDataType()->getTotalProducts(); | 
| 368 |  |  |  |  |  |  | } | 
| 369 |  |  |  |  |  |  |  | 
| 370 |  |  |  |  |  |  |  | 
| 371 |  |  |  |  |  |  |  | 
| 372 |  |  |  |  |  |  |  | 
| 373 |  |  |  |  |  |  |  | 
| 374 |  |  |  |  |  |  | 1; |