summaryrefslogtreecommitdiffstats
path: root/java/sca-contrib/tutorials
diff options
context:
space:
mode:
Diffstat (limited to 'java/sca-contrib/tutorials')
-rw-r--r--java/sca-contrib/tutorials/pom.xml46
-rw-r--r--java/sca-contrib/tutorials/store/README29
-rw-r--r--java/sca-contrib/tutorials/store/Tutorial.pdfbin0 -> 309524 bytes
-rw-r--r--java/sca-contrib/tutorials/store/assets/META-INF/sca-contribution.xml27
-rw-r--r--java/sca-contrib/tutorials/store/assets/pom.xml89
-rw-r--r--java/sca-contrib/tutorials/store/assets/services/Cart.java28
-rw-r--r--java/sca-contrib/tutorials/store/assets/services/Catalog.java27
-rw-r--r--java/sca-contrib/tutorials/store/assets/services/CurrencyConverter.java29
-rw-r--r--java/sca-contrib/tutorials/store/assets/services/CurrencyConverterImpl.java38
-rw-r--r--java/sca-contrib/tutorials/store/assets/services/FruitsCatalogImpl.java52
-rw-r--r--java/sca-contrib/tutorials/store/assets/services/Item.java66
-rw-r--r--java/sca-contrib/tutorials/store/assets/services/ShoppingCartImpl.java112
-rw-r--r--java/sca-contrib/tutorials/store/assets/services/Total.java29
-rw-r--r--java/sca-contrib/tutorials/store/assets/services/VegetablesCatalogImpl.java42
-rw-r--r--java/sca-contrib/tutorials/store/assets/services/db/ShoppingCartTableImpl.java171
-rw-r--r--java/sca-contrib/tutorials/store/assets/services/db/cart.sql27
-rw-r--r--java/sca-contrib/tutorials/store/assets/services/map/FruitsCatalogImpl.java56
-rw-r--r--java/sca-contrib/tutorials/store/assets/services/market/MarketCatalogImpl.java66
-rw-r--r--java/sca-contrib/tutorials/store/assets/services/merger/MergedCatalogImpl.java66
-rw-r--r--java/sca-contrib/tutorials/store/assets/tutorial.html37
-rw-r--r--java/sca-contrib/tutorials/store/assets/uiservices/store.html159
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/pom.xml107
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/src/main/java/services/ejb/CatalogEJBHome.java28
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/src/main/java/services/ejb/CatalogEJBRemote.java28
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/src/main/java/services/ejb/Vegetable.java54
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/src/main/java/services/ejb/VegetablesCatalogEJBSessionBean.java62
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/META-INF/ejb-jar.xml35
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/META-INF/openejb-jar.xml78
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/VegetablesCatalogEJB.componentType26
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/catalog-ejb.composite31
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/client/CatalogEJBClientTestCase.java67
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/org/omg/stub/javax/ejb/_EJBHome_Stub.java223
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/org/omg/stub/javax/ejb/_EJBObject_Stub.java252
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/org/omg/stub/javax/ejb/_Handle_Stub.java89
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/org/omg/stub/javax/ejb/_HomeHandle_Stub.java89
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/services/ejb/_CatalogEJBHome_Stub.java269
-rw-r--r--java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/services/ejb/_CatalogEJBRemote_Stub.java292
-rw-r--r--java/sca-contrib/tutorials/store/catalog-mediation/META-INF/sca-contribution.xml25
-rw-r--r--java/sca-contrib/tutorials/store/catalog-mediation/catalog-mediation.composite34
-rw-r--r--java/sca-contrib/tutorials/store/catalog-mediation/pom.xml91
-rw-r--r--java/sca-contrib/tutorials/store/catalog-mediation/services/mediation/VegetablesCatalogMediationImpl.java51
-rw-r--r--java/sca-contrib/tutorials/store/catalog-webapp/catalog-web.composite43
-rw-r--r--java/sca-contrib/tutorials/store/catalog-webapp/pom.xml110
-rw-r--r--java/sca-contrib/tutorials/store/catalog-webapp/webapp/META-INF/sca-contribution.xml24
-rw-r--r--java/sca-contrib/tutorials/store/catalog-webapp/webapp/WEB-INF/web.xml41
-rw-r--r--java/sca-contrib/tutorials/store/catalog-webapp/webapp/catalog.jsp52
-rw-r--r--java/sca-contrib/tutorials/store/domain/cloud.composite36
-rw-r--r--java/sca-contrib/tutorials/store/domain/cloud/CatalogEJBNode.composite35
-rw-r--r--java/sca-contrib/tutorials/store/domain/cloud/CatalogMediationNode.composite33
-rw-r--r--java/sca-contrib/tutorials/store/domain/cloud/CatalogWebAppNode.composite36
-rw-r--r--java/sca-contrib/tutorials/store/domain/cloud/CatalogsNode.composite33
-rw-r--r--java/sca-contrib/tutorials/store/domain/cloud/CurrencyNode.composite33
-rw-r--r--java/sca-contrib/tutorials/store/domain/cloud/StoreClientNode.composite33
-rw-r--r--java/sca-contrib/tutorials/store/domain/cloud/StoreDBNode.composite35
-rw-r--r--java/sca-contrib/tutorials/store/domain/cloud/StoreEUNode.composite36
-rw-r--r--java/sca-contrib/tutorials/store/domain/cloud/StoreMarketNode.composite35
-rw-r--r--java/sca-contrib/tutorials/store/domain/cloud/StoreMashupNode.composite35
-rw-r--r--java/sca-contrib/tutorials/store/domain/cloud/StoreMergerNode.composite35
-rw-r--r--java/sca-contrib/tutorials/store/domain/cloud/StoreNode.composite35
-rw-r--r--java/sca-contrib/tutorials/store/domain/cloud/StoreSupplierNode.composite36
-rw-r--r--java/sca-contrib/tutorials/store/domain/domain.composite36
-rw-r--r--java/sca-contrib/tutorials/store/domain/launch/LaunchCatalogMediationNode.java28
-rw-r--r--java/sca-contrib/tutorials/store/domain/launch/LaunchCatalogsNode.java28
-rw-r--r--java/sca-contrib/tutorials/store/domain/launch/LaunchCurrencyNode.java28
-rw-r--r--java/sca-contrib/tutorials/store/domain/launch/LaunchStoreDBNode.java28
-rw-r--r--java/sca-contrib/tutorials/store/domain/launch/LaunchStoreEUNode.java28
-rw-r--r--java/sca-contrib/tutorials/store/domain/launch/LaunchStoreMarketNode.java28
-rw-r--r--java/sca-contrib/tutorials/store/domain/launch/LaunchStoreMashupNode.java28
-rw-r--r--java/sca-contrib/tutorials/store/domain/launch/LaunchStoreMergerNode.java28
-rw-r--r--java/sca-contrib/tutorials/store/domain/launch/LaunchStoreNode.java28
-rw-r--r--java/sca-contrib/tutorials/store/domain/launch/LaunchStoreSupplierNode.java28
-rw-r--r--java/sca-contrib/tutorials/store/domain/launch/LaunchTutorialDomainManager.java33
-rw-r--r--java/sca-contrib/tutorials/store/domain/pom.xml172
-rw-r--r--java/sca-contrib/tutorials/store/domain/workspace.xml35
-rw-r--r--java/sca-contrib/tutorials/store/pom.xml59
-rw-r--r--java/sca-contrib/tutorials/store/store-client/META-INF/sca-contribution.xml23
-rw-r--r--java/sca-contrib/tutorials/store/store-client/client/Shopper.java29
-rw-r--r--java/sca-contrib/tutorials/store/store-client/client/ShopperImpl.java63
-rw-r--r--java/sca-contrib/tutorials/store/store-client/launch/LaunchStoreClientNode.java43
-rw-r--r--java/sca-contrib/tutorials/store/store-client/pom.xml123
-rw-r--r--java/sca-contrib/tutorials/store/store-client/services/Cart.java28
-rw-r--r--java/sca-contrib/tutorials/store/store-client/services/Catalog.java27
-rw-r--r--java/sca-contrib/tutorials/store/store-client/services/Item.java66
-rw-r--r--java/sca-contrib/tutorials/store/store-client/services/Total.java29
-rw-r--r--java/sca-contrib/tutorials/store/store-client/store-client.composite38
-rw-r--r--java/sca-contrib/tutorials/store/store-db/META-INF/sca-contribution.xml27
-rw-r--r--java/sca-contrib/tutorials/store/store-db/pom.xml125
-rw-r--r--java/sca-contrib/tutorials/store/store-db/store-db.composite75
-rw-r--r--java/sca-contrib/tutorials/store/store-eu/META-INF/sca-contribution.xml26
-rw-r--r--java/sca-contrib/tutorials/store/store-eu/pom.xml111
-rw-r--r--java/sca-contrib/tutorials/store/store-eu/store-eu.composite70
-rw-r--r--java/sca-contrib/tutorials/store/store-eu/uiservices/store-eu.html162
-rw-r--r--java/sca-contrib/tutorials/store/store-market/META-INF/sca-contribution.xml26
-rw-r--r--java/sca-contrib/tutorials/store/store-market/build.xml54
-rw-r--r--java/sca-contrib/tutorials/store/store-market/pom.xml77
-rw-r--r--java/sca-contrib/tutorials/store/store-market/store-market.composite68
-rw-r--r--java/sca-contrib/tutorials/store/store-mashup/META-INF/sca-contribution.xml25
-rw-r--r--java/sca-contrib/tutorials/store/store-mashup/build-openajax.xml86
-rw-r--r--java/sca-contrib/tutorials/store/store-mashup/gadget/map-gadget.html50
-rw-r--r--java/sca-contrib/tutorials/store/store-mashup/gadget/store-gadget.html166
-rw-r--r--java/sca-contrib/tutorials/store/store-mashup/map-gadget.composite32
-rw-r--r--java/sca-contrib/tutorials/store/store-mashup/mashup/store-mash.html70
-rw-r--r--java/sca-contrib/tutorials/store/store-mashup/pom.xml136
-rw-r--r--java/sca-contrib/tutorials/store/store-mashup/store-gadget.composite64
-rw-r--r--java/sca-contrib/tutorials/store/store-mashup/store-mashup.composite48
-rw-r--r--java/sca-contrib/tutorials/store/store-merger/META-INF/sca-contribution.xml26
-rw-r--r--java/sca-contrib/tutorials/store/store-merger/pom.xml77
-rw-r--r--java/sca-contrib/tutorials/store/store-merger/store-merger.composite75
-rw-r--r--java/sca-contrib/tutorials/store/store-supplier/META-INF/sca-contribution.xml27
-rw-r--r--java/sca-contrib/tutorials/store/store-supplier/pom.xml126
-rw-r--r--java/sca-contrib/tutorials/store/store-supplier/store-supplier.composite77
-rw-r--r--java/sca-contrib/tutorials/store/store-test/META-INF/sca-contribution.xml27
-rw-r--r--java/sca-contrib/tutorials/store/store-test/client/Shopper.java29
-rw-r--r--java/sca-contrib/tutorials/store/store-test/pom.xml201
-rw-r--r--java/sca-contrib/tutorials/store/store-test/test/StoreSupplierTestCase.java89
-rw-r--r--java/sca-contrib/tutorials/store/store/META-INF/sca-contribution.xml25
-rw-r--r--java/sca-contrib/tutorials/store/store/pom.xml77
-rw-r--r--java/sca-contrib/tutorials/store/store/store.composite64
-rw-r--r--java/sca-contrib/tutorials/store/web-services/META-INF/sca-contribution.xml25
-rw-r--r--java/sca-contrib/tutorials/store/web-services/catalogs.composite43
-rw-r--r--java/sca-contrib/tutorials/store/web-services/currency.composite32
-rw-r--r--java/sca-contrib/tutorials/store/web-services/pom.xml77
-rw-r--r--java/sca-contrib/tutorials/store/www-services/cart-amazon/amazon/cart/AmazonCart.java44
-rw-r--r--java/sca-contrib/tutorials/store/www-services/cart-amazon/amazon/cart/AmazonCart.wsdl451
-rw-r--r--java/sca-contrib/tutorials/store/www-services/cart-amazon/amazon/cart/AmazonCartImpl.java120
-rw-r--r--java/sca-contrib/tutorials/store/www-services/cart-amazon/amazoncart.composite33
-rw-r--r--java/sca-contrib/tutorials/store/www-services/cart-amazon/launch/LaunchAmazonCart.java52
-rw-r--r--java/sca-contrib/tutorials/store/www-services/cart-amazon/pom.xml215
-rw-r--r--java/sca-contrib/tutorials/store/www-services/cart-amazon/test/AmazonCartTestCase.java99
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/README77
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/build.xml74
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/lib/AWS2007_05_14.jarbin0 -> 297809 bytes
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/shoppingstore.pngbin0 -> 382749 bytes
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/server/ShoppingStoreServer.java25
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/services/cart/CartService.java35
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/services/cart/CartServiceImpl.java144
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/services/proxy/ShoppingStoreService.java30
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/services/proxy/ShoppingStoreServiceImpl.java49
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/resources/shoppingstore.composite20
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/resources/wsdl/shoppingstore.wsdl3023
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/pom.xml95
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/CatalogClient.java37
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/CatalogService.java28
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/amazon/AmazonCatalogService.java31
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/amazon/AmazonCatalogServiceImpl.java94
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/ebay/EBayCatalogService.java32
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/ebay/EBayCatalogServiceImpl.java99
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/util/NamespaceContextImpl.java126
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/util/XPathHelper.java55
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/resources/catalog.composite55
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/resources/wsdl/AWSECommerceService.wsdl3244
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/resources/wsdl/ShoppingService.wsdl12607
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/pom.xml149
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/launch/LaunchCatalog.java34
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/services/Catalog.java27
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/services/CatalogImpl.java120
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/services/CurrencyConverter.java29
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/util/CreateDB.java79
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/resources/store-catalog-database.composite31
-rw-r--r--java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/store.sql37
-rw-r--r--java/sca-contrib/tutorials/store/www-services/pom.xml46
162 files changed, 29132 insertions, 0 deletions
diff --git a/java/sca-contrib/tutorials/pom.xml b/java/sca-contrib/tutorials/pom.xml
new file mode 100644
index 0000000000..331a268016
--- /dev/null
+++ b/java/sca-contrib/tutorials/pom.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tuscany-tutorials</artifactId>
+ <packaging>pom</packaging>
+ <name>Apache Tuscany SCA Tutorials</name>
+
+ <profiles>
+ <profile>
+ <id>default</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <modules>
+ <module>store</module>
+ <!-- <module>photo-gallery</module> -->
+ </modules>
+ </profile>
+
+ </profiles>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/README b/java/sca-contrib/tutorials/store/README
new file mode 100644
index 0000000000..6169a05292
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/README
@@ -0,0 +1,29 @@
+Store Tutorial
+======================================
+
+This is a tutorial that shows how to use SCA and Tuscany to build multiple
+variations of an online Store application.
+
+For an overview of the scenarios covered here, please refer to Tutorial.pdf.
+
+For more detailed information, please see:
+
+http://incubator.apache.org/tuscany/sca-java-tutorial.html
+
+
+Running The Tutorial Application
+--------------------------------
+
+Start the SCA Domain Manager:
+ cd domain
+ java -jar ../../modules/tuscany-node2-launcher-1.2-incubating.jar domain
+
+To access the SCA Manager application, point your Web browser to:
+ http://localhost:9990/ui/cloud/
+
+Select the node you want to start (e.g StoreNode), then click the Start button.
+
+You should now be able to access the online Store application. Point your Web
+browser to:
+ http://localhost:8100/ui/
+
diff --git a/java/sca-contrib/tutorials/store/Tutorial.pdf b/java/sca-contrib/tutorials/store/Tutorial.pdf
new file mode 100644
index 0000000000..e22f1b4c9d
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/Tutorial.pdf
Binary files differ
diff --git a/java/sca-contrib/tutorials/store/assets/META-INF/sca-contribution.xml b/java/sca-contrib/tutorials/store/assets/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..cba1564cb4
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/META-INF/sca-contribution.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <export.java package="services"/>
+ <export.java package="services.market"/>
+ <export.java package="services.merger"/>
+ <export.java package="services.db"/>
+ <export.java package="services.map"/>
+ <export.resource uri="uiservices/store.html"/>
+</contribution> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/assets/pom.xml b/java/sca-contrib/tutorials/store/assets/pom.xml
new file mode 100644
index 0000000000..befd197c3f
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/pom.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-assets</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial Reusable Assets</name>
+
+ <repositories>
+ <repository>
+ <id>apache.incubator</id>
+ <url>http://people.apache.org/repo/m2-incubating-repository</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-data-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.3.1.4</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <sourceDirectory>${basedir}</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ <exclude>**/.*/**</exclude>
+ <exclude>pom.xml</exclude>
+ <exclude>build.xml</exclude>
+ <exclude>target/**</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/assets/services/Cart.java b/java/sca-contrib/tutorials/store/assets/services/Cart.java
new file mode 100644
index 0000000000..3fb5439bc3
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/services/Cart.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services;
+
+import org.apache.tuscany.sca.data.collection.Collection;
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Cart extends Collection<String, Item> {
+
+}
diff --git a/java/sca-contrib/tutorials/store/assets/services/Catalog.java b/java/sca-contrib/tutorials/store/assets/services/Catalog.java
new file mode 100644
index 0000000000..b5e504fe11
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/services/Catalog.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Catalog {
+ Item[] get();
+}
diff --git a/java/sca-contrib/tutorials/store/assets/services/CurrencyConverter.java b/java/sca-contrib/tutorials/store/assets/services/CurrencyConverter.java
new file mode 100644
index 0000000000..a064f3dd69
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/services/CurrencyConverter.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface CurrencyConverter {
+ public double getConversion(String fromCurrenycCode, String toCurrencyCode, double amount);
+
+ public String getCurrencySymbol(String currencyCode);
+}
diff --git a/java/sca-contrib/tutorials/store/assets/services/CurrencyConverterImpl.java b/java/sca-contrib/tutorials/store/assets/services/CurrencyConverterImpl.java
new file mode 100644
index 0000000000..c354aed447
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/services/CurrencyConverterImpl.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services;
+
+public class CurrencyConverterImpl implements CurrencyConverter {
+ public double getConversion(String fromCurrencyCode, String toCurrencyCode, double amount) {
+ if (toCurrencyCode.equals("USD"))
+ return amount;
+ else if (toCurrencyCode.equals("EUR"))
+ return ((double)Math.round(amount * 0.7256 * 100)) /100;
+ return 0;
+ }
+
+ public String getCurrencySymbol(String currencyCode) {
+ if (currencyCode.equals("USD"))
+ return "$";
+ else if (currencyCode.equals("EUR"))
+ return "E"; //"€";
+ return "?";
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/assets/services/FruitsCatalogImpl.java b/java/sca-contrib/tutorials/store/assets/services/FruitsCatalogImpl.java
new file mode 100644
index 0000000000..d132a24b00
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/services/FruitsCatalogImpl.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.oasisopen.sca.annotation.Init;
+import org.oasisopen.sca.annotation.Property;
+import org.oasisopen.sca.annotation.Reference;
+
+public class FruitsCatalogImpl implements Catalog {
+
+ @Property
+ public String currencyCode = "USD";
+
+ @Reference
+ public CurrencyConverter currencyConverter;
+
+ private List<Item> catalog = new ArrayList<Item>();
+
+ @Init
+ public void init() {
+ String currencySymbol = currencyConverter.getCurrencySymbol(currencyCode);
+ catalog.add(new Item("Apple", currencySymbol + currencyConverter.getConversion("USD", currencyCode, 2.99)));
+ catalog.add(new Item("Orange", currencySymbol + currencyConverter.getConversion("USD", currencyCode, 3.55)));
+ catalog.add(new Item("Pear", currencySymbol + currencyConverter.getConversion("USD", currencyCode, 1.55)));
+ }
+
+ public Item[] get() {
+ Item[] catalogArray = new Item[catalog.size()];
+ catalog.toArray(catalogArray);
+ return catalogArray;
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/assets/services/Item.java b/java/sca-contrib/tutorials/store/assets/services/Item.java
new file mode 100644
index 0000000000..81cefcdbef
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/services/Item.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services;
+
+
+public class Item {
+ private String name;
+ private String price;
+ private String origin;
+
+ public Item() {
+ }
+
+ public Item(String name, String price, String origin) {
+ this.name = name;
+ this.price = price;
+ this.origin = origin;
+ }
+
+ public Item(String name, String price) {
+ this.name = name;
+ this.price = price;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getPrice() {
+ return price;
+ }
+
+ public void setPrice(String price) {
+ this.price = price;
+ }
+
+ public String getOrigin() {
+ return origin;
+ }
+
+ public void setOrigin(String origin) {
+ this.origin = origin;
+ }
+
+}
diff --git a/java/sca-contrib/tutorials/store/assets/services/ShoppingCartImpl.java b/java/sca-contrib/tutorials/store/assets/services/ShoppingCartImpl.java
new file mode 100644
index 0000000000..698614212d
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/services/ShoppingCartImpl.java
@@ -0,0 +1,112 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.tuscany.sca.data.collection.Entry;
+import org.apache.tuscany.sca.data.collection.NotFoundException;
+import org.oasisopen.sca.annotation.Init;
+import org.oasisopen.sca.annotation.Scope;
+
+@Scope("COMPOSITE")
+public class ShoppingCartImpl implements Cart, Total {
+
+ private Map<String, Item> cart;
+
+ @Init
+ public void init() {
+ cart = new HashMap<String, Item>();
+ }
+
+ public Entry<String, Item>[] getAll() {
+ Entry<String, Item>[] entries = new Entry[cart.size()];
+ int i = 0;
+ for (Map.Entry<String, Item> e: cart.entrySet()) {
+ entries[i++] = new Entry<String, Item>(e.getKey(), e.getValue());
+ }
+ return entries;
+ }
+
+ public Item get(String key) throws NotFoundException {
+ Item item = cart.get(key);
+ if (item == null) {
+ throw new NotFoundException(key);
+ } else {
+ return item;
+ }
+ }
+
+ public String post(String key, Item item) {
+ if (key == null) {
+ key ="cart-" + UUID.randomUUID().toString();
+ }
+ cart.put(key, item);
+ return key;
+ }
+
+ public void put(String key, Item item) throws NotFoundException {
+ if (!cart.containsKey(key)) {
+ throw new NotFoundException(key);
+ }
+ cart.put(key, item);
+ }
+
+ public void delete(String key) throws NotFoundException {
+ if (key == null || key.equals("")) {
+ cart.clear();
+ } else {
+ Item item = cart.remove(key);
+ if (item == null)
+ throw new NotFoundException(key);
+ }
+ }
+
+ public Entry<String, Item>[] query(String queryString) {
+ List<Entry<String, Item>> entries = new ArrayList<Entry<String,Item>>();
+ if (queryString.startsWith("name=")) {
+ String name = queryString.substring(5);
+ for (Map.Entry<String, Item> e: cart.entrySet()) {
+ Item item = e.getValue();
+ if (item.getName().equals(name)) {
+ entries.add(new Entry<String, Item>(e.getKey(), e.getValue()));
+ }
+ }
+ }
+ return entries.toArray(new Entry[entries.size()]);
+ }
+
+ public String getTotal() {
+ double total = 0;
+ String currencySymbol = "";
+ if (!cart.isEmpty()) {
+ Item item = cart.values().iterator().next();
+ currencySymbol = item.getPrice().substring(0, 1);
+ }
+ for (Item item : cart.values()) {
+ total += Double.valueOf(item.getPrice().substring(1));
+ }
+ return currencySymbol + String.valueOf(total);
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/assets/services/Total.java b/java/sca-contrib/tutorials/store/assets/services/Total.java
new file mode 100644
index 0000000000..b77cc1c7ac
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/services/Total.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Total {
+
+ String getTotal();
+
+}
diff --git a/java/sca-contrib/tutorials/store/assets/services/VegetablesCatalogImpl.java b/java/sca-contrib/tutorials/store/assets/services/VegetablesCatalogImpl.java
new file mode 100644
index 0000000000..0e1155dfcb
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/services/VegetablesCatalogImpl.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.oasisopen.sca.annotation.Init;
+
+public class VegetablesCatalogImpl implements Catalog {
+ private List<Item> catalog = new ArrayList<Item>();
+
+ @Init
+ public void init() {
+ catalog.add(new Item("Broccoli", "$2.99"));
+ catalog.add(new Item("Asparagus", "$3.55"));
+ catalog.add(new Item("Cauliflower", "$1.55"));
+ }
+
+ public Item[] get() {
+ Item[] catalogArray = new Item[catalog.size()];
+ catalog.toArray(catalogArray);
+ return catalogArray;
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/assets/services/db/ShoppingCartTableImpl.java b/java/sca-contrib/tutorials/store/assets/services/db/ShoppingCartTableImpl.java
new file mode 100644
index 0000000000..1414889b81
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/services/db/ShoppingCartTableImpl.java
@@ -0,0 +1,171 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services.db;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.tuscany.sca.data.collection.Entry;
+import org.apache.tuscany.sca.data.collection.NotFoundException;
+import org.oasisopen.sca.ServiceRuntimeException;
+import org.oasisopen.sca.annotation.Destroy;
+import org.oasisopen.sca.annotation.Init;
+import org.oasisopen.sca.annotation.Property;
+
+import services.Cart;
+import services.Item;
+import services.Total;
+
+public class ShoppingCartTableImpl implements Cart, Total {
+
+ @Property
+ public String database;
+
+ private Connection connection;
+
+ @Init
+ public void init() throws Exception {
+ Class.forName("org.apache.derby.jdbc.EmbeddedDriver", true, Thread.currentThread().getContextClassLoader());
+ String baseDir = System.getProperty("basedir");
+ String url = "jdbc:derby:directory:" + (baseDir != null? baseDir + "/" + database : database);
+ System.out.println("Connecting to database: " + url);
+ connection = DriverManager.getConnection(url, "", "");
+ }
+
+ @Destroy
+ public void shutdown() throws Exception {
+ if(connection != null) {
+ connection.close();
+ connection = null;
+ }
+ }
+
+ public Entry<String, Item>[] getAll() {
+ try {
+ Statement statement = connection.createStatement();
+ ResultSet results = statement.executeQuery("select * from Cart");
+ List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
+ while (results.next()) {
+ Item item = new Item(results.getString("name"), results.getString("price"));
+ entries.add(new Entry<String, Item>(results.getString("id"), item));
+ }
+ return entries.toArray(new Entry[entries.size()]);
+ } catch (SQLException e) {
+ throw new ServiceRuntimeException(e);
+ }
+ }
+
+ public Item get(String key) throws NotFoundException {
+ try {
+ Statement statement = connection.createStatement();
+ ResultSet results = statement.executeQuery("select * from Cart where id = '" + key + "'");
+ if (results.next()) {
+ return new Item(results.getString("name"), results.getString("price"));
+ } else {
+ throw new NotFoundException(key);
+ }
+ } catch (SQLException e) {
+ throw new ServiceRuntimeException(e);
+ }
+ }
+
+ public String post(String key, Item item) {
+ if (key == null) {
+ key = "cart-" + UUID.randomUUID().toString();
+ }
+ try {
+ Statement statement = connection.createStatement();
+ String query = "insert into Cart values ('" + key + "', '" + item.getName() + "', '" + item.getPrice() + "')";
+ System.out.println(query);
+ statement.executeUpdate(query);
+ } catch (SQLException e) {
+ throw new ServiceRuntimeException(e);
+ }
+ return key;
+ }
+
+ public void put(String key, Item item) throws NotFoundException {
+ try {
+ Statement statement = connection.createStatement();
+ String query = "update into Cart set name = '" + item.getName() + "', price = '" + item.getPrice() + "' where id = '" + key + "'";
+ System.out.println(query);
+ int count = statement.executeUpdate(query);
+ if (count == 0)
+ throw new NotFoundException(key);
+ } catch (SQLException e) {
+ throw new ServiceRuntimeException(e);
+ }
+ }
+
+ public void delete(String key) throws NotFoundException {
+ try {
+ Statement statement = connection.createStatement();
+ if (key == null || key.equals("")) {
+ String query = "delete from Cart";
+ System.out.println(query);
+ statement.executeUpdate(query);
+ } else {
+ String query = "delete from Cart where id = '" + key + "'";
+ System.out.println(query);
+ int count = statement.executeUpdate(query);
+ if (count == 0)
+ throw new NotFoundException(key);
+ }
+ } catch (SQLException e) {
+ throw new ServiceRuntimeException(e);
+ }
+ }
+
+ public Entry<String, Item>[] query(String queryString) {
+ try {
+ Statement statement = connection.createStatement();
+ ResultSet results = statement.executeQuery("select * from Cart where " + queryString);
+ List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
+ while (results.next()) {
+ Item item = new Item(results.getString("name"), results.getString("price"));
+ entries.add(new Entry<String, Item>(results.getString("id"), item));
+ }
+ return entries.toArray(new Entry[entries.size()]);
+ } catch (SQLException e) {
+ throw new ServiceRuntimeException(e);
+ }
+ }
+
+ public String getTotal() {
+ Entry<String, Item>[] entries = getAll();
+ double total = 0;
+ String currencySymbol = "";
+ if (entries.length > 0) {
+ Item item = entries[0].getData();
+ currencySymbol = item.getPrice().substring(0, 1);
+ }
+ for (Entry<String, Item> entry : entries) {
+ Item item = entry.getData();
+ total += Double.valueOf(item.getPrice().substring(1));
+ }
+ return currencySymbol + total;
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/assets/services/db/cart.sql b/java/sca-contrib/tutorials/store/assets/services/db/cart.sql
new file mode 100644
index 0000000000..750e23ebde
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/services/db/cart.sql
@@ -0,0 +1,27 @@
+--
+-- Licensed to the Apache Software Foundation (ASF) under one
+-- or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information
+-- regarding copyright ownership. The ASF licenses this file
+-- to you under the Apache License, Version 2.0 (the
+-- "License"); you may not use this file except in compliance
+-- with the License. You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing,
+-- software distributed under the License is distributed on an
+-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+-- KIND, either express or implied. See the License for the
+-- specific language governing permissions and limitations
+-- under the License.
+--
+
+DROP TABLE CART;
+
+CREATE TABLE CART(
+ id VARCHAR(50) NOT NULL,
+ name VARCHAR(50),
+ price VARCHAR(10),
+ primary key (id)
+);
diff --git a/java/sca-contrib/tutorials/store/assets/services/map/FruitsCatalogImpl.java b/java/sca-contrib/tutorials/store/assets/services/map/FruitsCatalogImpl.java
new file mode 100644
index 0000000000..1acd30d719
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/services/map/FruitsCatalogImpl.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services.map;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.oasisopen.sca.annotation.Init;
+import org.oasisopen.sca.annotation.Property;
+import org.oasisopen.sca.annotation.Reference;
+
+import services.Catalog;
+import services.CurrencyConverter;
+import services.Item;
+
+public class FruitsCatalogImpl implements Catalog {
+
+ @Property
+ public String currencyCode = "USD";
+
+ @Reference
+ public CurrencyConverter currencyConverter;
+
+ private List<Item> catalog = new ArrayList<Item>();
+
+ @Init
+ public void init() {
+ String currencySymbol = currencyConverter.getCurrencySymbol(currencyCode);
+ catalog.add(new Item("Apple", currencySymbol + currencyConverter.getConversion("USD", currencyCode, 2.99), "34.425744,-119.711151"));
+ catalog.add(new Item("Orange", currencySymbol + currencyConverter.getConversion("USD", currencyCode, 3.55), "25.811018,-80.130844"));
+ catalog.add(new Item("Pear", currencySymbol + currencyConverter.getConversion("USD", currencyCode, 1.55), "36.596649,-121.8964"));
+ }
+
+ public Item[] get() {
+ Item[] catalogArray = new Item[catalog.size()];
+ catalog.toArray(catalogArray);
+ return catalogArray;
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/assets/services/market/MarketCatalogImpl.java b/java/sca-contrib/tutorials/store/assets/services/market/MarketCatalogImpl.java
new file mode 100644
index 0000000000..8a7306c83c
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/services/market/MarketCatalogImpl.java
@@ -0,0 +1,66 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services.market;
+
+import java.util.Vector;
+
+import org.oasisopen.sca.annotation.Property;
+import org.oasisopen.sca.annotation.Reference;
+
+import services.Catalog;
+import services.CurrencyConverter;
+import services.Item;
+
+
+public class MarketCatalogImpl implements Catalog {
+
+ @Property
+ public String currencyCode = "USD";
+
+ @Reference
+ public CurrencyConverter currencyConverter;
+
+ @Reference(required=false)
+ protected Catalog[] goodsCatalog;
+
+
+ public Item[] get() {
+
+ String currencySymbol = currencyConverter.getCurrencySymbol(currencyCode);
+ Vector<Item> catalog = new Vector<Item>();
+
+ for (int i = 0; i < goodsCatalog.length; i++) {
+ Item[] items = goodsCatalog[i].get();
+
+ for (Item item : items) {
+ double price = Double.valueOf(item.getPrice().substring(1));
+ price = currencyConverter.getConversion("USD", currencyCode, price);
+ catalog.addElement(new Item(item.getName(), currencySymbol + price));
+ }
+ }
+
+ Item[] catalogArray = new Item[catalog.size()];
+ catalog.copyInto(catalogArray);
+
+ return catalogArray;
+ }
+
+} \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/assets/services/merger/MergedCatalogImpl.java b/java/sca-contrib/tutorials/store/assets/services/merger/MergedCatalogImpl.java
new file mode 100644
index 0000000000..3f8cee085d
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/services/merger/MergedCatalogImpl.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services.merger;
+
+import org.oasisopen.sca.annotation.Property;
+import org.oasisopen.sca.annotation.Reference;
+
+import services.Catalog;
+import services.CurrencyConverter;
+import services.Item;
+
+public class MergedCatalogImpl implements Catalog {
+
+ @Property
+ public String currencyCode = "USD";
+
+ @Reference
+ public CurrencyConverter currencyConverter;
+
+ @Reference
+ public Catalog fruitsCatalog;
+
+ @Reference
+ public Catalog vegetablesCatalog;
+
+ public Item[] get() {
+ String currencySymbol = currencyConverter.getCurrencySymbol(currencyCode);
+
+ Item[] fruits = fruitsCatalog.get();
+ Item[] vegetables = vegetablesCatalog.get();
+
+ Item[] catalog = new Item[fruits.length + vegetables.length];
+ int i =0;
+ for (Item item: fruits) {
+ double price = Double.valueOf(item.getPrice().substring(1));
+ price = currencyConverter.getConversion("USD", currencyCode, price);
+ catalog[i++] = new Item(item.getName(), currencySymbol + price);
+ }
+
+ for (Item item: vegetables) {
+ double price = Double.valueOf(item.getPrice().substring(1));
+ price = currencyConverter.getConversion("USD", currencyCode, price);
+ catalog[i++] = new Item(item.getName(), currencySymbol + price);
+ }
+
+ return catalog;
+ }
+
+}
diff --git a/java/sca-contrib/tutorials/store/assets/tutorial.html b/java/sca-contrib/tutorials/store/assets/tutorial.html
new file mode 100644
index 0000000000..14f81e0c22
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/tutorial.html
@@ -0,0 +1,37 @@
+<html>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ -->
+<head>
+<title>Apache Tuscany - Online Store Tutorial</title>
+</head>
+
+<body>
+<h1>Apache Tuscany - Online Store Tutorial
+<h2><a href="http://localhost:9990/ui/home">Online Store - SCA Domain</a>
+<h2><a href="http://localhost:8100/ui/store.html">Online Store - Fruits</a>
+<h2><a href="http://localhost:8200/VegetablesCatalogWebService?wsdl">Vegetables Catalog Web Service</a>
+<h2><a href="http://localhost:8101/ui/store.html">Merger - Fruits and Vegetables</a>
+<h2><a href="http://localhost:8102/ui/store.html">Online Store - Cart Database</a>
+<h2><a href="http://localhost:8103/ui/store.html">Online Store - Supplier</a>
+<h2><a href="http://localhost:8105/ui/store.html">Online Store - Marketplace</a>
+<h2><a href="http://localhost:8333/CatalogWebService?wsdl">Merged Catalog Web Service</a>
+<h2><a href="http://localhost:8104/ui/store-eu.html">EU Online Store</a>
+<h2><a href="http://localhost:8106/mashup/store-mash.html">Online Store Mashup</a>
+</body>
+</html> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/assets/uiservices/store.html b/java/sca-contrib/tutorials/store/assets/uiservices/store.html
new file mode 100644
index 0000000000..f2425b4885
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/assets/uiservices/store.html
@@ -0,0 +1,159 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<html>
+<head>
+<title>Store</title>
+
+<script type="text/javascript" src="store.js"></script>
+
+<script language="JavaScript">
+
+ //@Reference
+ var catalog = new Reference("catalog");
+
+ //@Reference
+ var shoppingCart = new Reference("shoppingCart");
+
+ //@Reference
+ var shoppingTotal = new Reference("shoppingTotal");
+
+ var catalogItems;
+
+ function catalog_getResponse(items,exception) {
+ if(exception){
+ alert(exception.message);
+ return;
+ }
+ var catalog = "";
+ for (var i=0; i<items.length; i++) {
+ var item = items[i].name + ' - ' + items[i].price;
+ catalog += '<input name="items" type="checkbox" value="' +
+ item + '">' + item + ' <br>';
+ }
+ document.getElementById('catalog').innerHTML=catalog;
+ catalogItems = items;
+ }
+
+ function shoppingCart_getResponse(feed) {
+ if (feed != null) {
+ var entries = feed.getElementsByTagName("entry");
+ var list = "";
+ for (var i=0; i<entries.length; i++) {
+ var content = entries[i].getElementsByTagName("content")[0];
+ var name = content.getElementsByTagName("name")[0].firstChild.nodeValue;
+ var price = content.getElementsByTagName("price")[0].firstChild.nodeValue;
+ list += name + ' - ' + price + ' <br>';
+ }
+ document.getElementById("shoppingCart").innerHTML = list;
+
+ if (entries.length != 0) {
+ try {
+ shoppingTotal.getTotal(shoppingTotal_getTotalResponse);
+ }
+ catch(e) {
+ alert(e);
+ }
+ }
+ }
+ }
+
+ function shoppingTotal_getTotalResponse(total,exception) {
+ if(exception){
+ alert(exception.message);
+ return;
+ }
+ document.getElementById('total').innerHTML = total;
+ }
+
+ function shoppingCart_postResponse(entry) {
+ shoppingCart.get("", shoppingCart_getResponse);
+ }
+
+ function addToCart() {
+ var items = document.catalogForm.items;
+ var j = 0;
+ for (var i=0; i<items.length; i++)
+ if (items[i].checked) {
+ var entry = '<entry xmlns="http://www.w3.org/2005/Atom"><title>item</title><content type="text/xml">' +
+ '<Item xmlns="http://services/">' +
+ '<name xmlns="">' + catalogItems[i].name + '</name>' + '<price xmlns="">' + catalogItems[i].price + '</price>' +
+ '</Item>' + '</content></entry>';
+ shoppingCart.post(entry, shoppingCart_postResponse);
+ items[i].checked = false;
+ }
+ }
+ function checkoutCart() {
+ document.getElementById('store').innerHTML='<h2>' +
+ 'Thanks for Shopping With Us!</h2>'+
+ '<h2>Your Order</h2>'+
+ '<form name="orderForm">'+
+ document.getElementById('shoppingCart').innerHTML+
+ '<br>'+
+ document.getElementById('total').innerHTML+
+ '<br>'+
+ '<br>'+
+ '<input type="submit" value="Continue Shopping">'+
+ '</form>';
+ shoppingCart.del("", null);
+ }
+ function deleteCart() {
+ shoppingCart.del("", null);
+ document.getElementById('shoppingCart').innerHTML = "";
+ document.getElementById('total').innerHTML = "";
+ }
+
+ function init() {
+ try {
+ catalog.get(catalog_getResponse);
+ shoppingCart.get("", shoppingCart_getResponse);
+ }
+ catch(e) {
+ alert(e);
+ }
+ }
+
+</script>
+
+</head>
+
+<body onload="init()">
+<h1>Store</h1>
+ <div id="store">
+ <h2>Catalog</h2>
+ <form name="catalogForm">
+ <div id="catalog" ></div>
+ <br>
+ <input type="button" onClick="addToCart()" value="Add to Cart">
+ </form>
+
+ <br>
+
+ <h2>Your Shopping Cart</h2>
+ <form name="shoppingCartForm">
+ <div id="shoppingCart"></div>
+ <br>
+ <div id="total"></div>
+ <br>
+ <input type="button" onClick="checkoutCart()" value="Checkout">
+ <input type="button" onClick="deleteCart()" value="Empty">
+ <a href="../ShoppingCart/Cart/">(feed)</a>
+ </form>
+ </div>
+</body>
+</html>
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/pom.xml b/java/sca-contrib/tutorials/store/catalog-ejb/pom.xml
new file mode 100644
index 0000000000..8e8b17cecb
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/pom.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>tutorial-catalog-ejb</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial Catalog EJB</name>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-ejb_3.0_spec</artifactId>
+ <version>1.0</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.geronimo.modules</groupId>
+ <artifactId>geronimo-openejb</artifactId>
+ <version>2.1.1</version>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.geronimo.modules</groupId>
+ <artifactId>geronimo-connector</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.geronimo.modules</groupId>
+ <artifactId>geronimo-persistence-jpa10</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-ejbd</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-server</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-loader</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-jee</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-ejbd</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-javaagent</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <resources>
+ <resource>
+ <directory>${pom.basedir}/src/main/resources</directory>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+ </build>
+
+</project>
+
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/src/main/java/services/ejb/CatalogEJBHome.java b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/java/services/ejb/CatalogEJBHome.java
new file mode 100644
index 0000000000..c7ad31b682
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/java/services/ejb/CatalogEJBHome.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services.ejb;
+
+import javax.ejb.EJBHome;
+
+public interface CatalogEJBHome extends EJBHome {
+
+ CatalogEJBRemote create() throws javax.ejb.CreateException, java.rmi.RemoteException;
+
+}
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/src/main/java/services/ejb/CatalogEJBRemote.java b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/java/services/ejb/CatalogEJBRemote.java
new file mode 100644
index 0000000000..7e79fc8b9d
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/java/services/ejb/CatalogEJBRemote.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services.ejb;
+
+import java.rmi.RemoteException;
+
+import javax.ejb.EJBObject;
+
+public interface CatalogEJBRemote extends EJBObject {
+ Vegetable[] get() throws RemoteException;
+}
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/src/main/java/services/ejb/Vegetable.java b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/java/services/ejb/Vegetable.java
new file mode 100644
index 0000000000..cf81539ba5
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/java/services/ejb/Vegetable.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services.ejb;
+
+import java.io.Serializable;
+
+public class Vegetable implements Serializable {
+ private static final long serialVersionUID = -5847326138627338217L;
+
+ private String name;
+ private String price;
+
+ public Vegetable() {
+ }
+
+ public Vegetable(String name, String price) {
+ this.name = name;
+ this.price = price;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getPrice() {
+ return price;
+ }
+
+ public void setPrice(String price) {
+ this.price = price;
+ }
+
+}
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/src/main/java/services/ejb/VegetablesCatalogEJBSessionBean.java b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/java/services/ejb/VegetablesCatalogEJBSessionBean.java
new file mode 100644
index 0000000000..ff2004fe1b
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/java/services/ejb/VegetablesCatalogEJBSessionBean.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services.ejb;
+
+import java.rmi.RemoteException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.ejb.CreateException;
+import javax.ejb.EJBException;
+import javax.ejb.SessionBean;
+import javax.ejb.SessionContext;
+
+public class VegetablesCatalogEJBSessionBean implements SessionBean {
+ private static final long serialVersionUID = -7421020241291271838L;
+
+ private List<Vegetable> catalog = new ArrayList<Vegetable>();
+
+ public VegetablesCatalogEJBSessionBean() {
+ catalog.add(new Vegetable("Broccoli", "$2.99"));
+ catalog.add(new Vegetable("Asparagus", "$3.55"));
+ catalog.add(new Vegetable("Cauliflower", "$1.55"));
+ }
+
+ public Vegetable[] get() {
+ Vegetable[] catalogArray = new Vegetable[catalog.size()];
+ catalog.toArray(catalogArray);
+ return catalogArray;
+ }
+
+ public void ejbCreate() throws CreateException {
+ }
+
+ public void ejbActivate() throws EJBException, RemoteException {
+ }
+
+ public void ejbPassivate() throws EJBException, RemoteException {
+ }
+
+ public void ejbRemove() throws EJBException, RemoteException {
+ }
+
+ public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException {
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/META-INF/ejb-jar.xml b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/META-INF/ejb-jar.xml
new file mode 100644
index 0000000000..a0a7adf6fa
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/META-INF/ejb-jar.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+ http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
+ version="2.1">
+
+ <display-name>Apache Tuscany SCA Tutorial Catalog EJB</display-name>
+ <enterprise-beans>
+ <session id="VegetablesCatalogEJB">
+ <ejb-name>VegetablesCatalogEJB</ejb-name>
+ <home>services.ejb.CatalogEJBHome</home>
+ <remote>services.ejb.CatalogEJBRemote</remote>
+ <ejb-class>services.ejb.VegetablesCatalogEJBSessionBean</ejb-class>
+ <session-type>Stateless</session-type>
+ <transaction-type>Container</transaction-type>
+ </session>
+ </enterprise-beans>
+</ejb-jar>
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/META-INF/openejb-jar.xml b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/META-INF/openejb-jar.xml
new file mode 100644
index 0000000000..04d77ee39e
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/META-INF/openejb-jar.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1"
+ xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2">
+ <sys:environment>
+ <sys:moduleId>
+ <sys:groupId>${pom.groupId}</sys:groupId>
+ <sys:artifactId>${pom.artifactId}</sys:artifactId>
+ <sys:version>${version}</sys:version>
+ <sys:type>jar</sys:type>
+ </sys:moduleId>
+ <sys:dependencies>
+ <sys:dependency>
+ <sys:groupId>org.apache.geronimo.configs</sys:groupId>
+ <sys:artifactId>j2ee-corba-yoko</sys:artifactId>
+ <!--
+ <sys:version>2.0.2</sys:version>
+ -->
+ <sys:type>car</sys:type>
+ </sys:dependency>
+ </sys:dependencies>
+ <sys:hidden-classes />
+ <sys:non-overridable-classes />
+ </sys:environment>
+
+ <enterprise-beans>
+ <session>
+ <ejb-name>VegetablesCatalogEJB</ejb-name>
+ <jndi-name>VegetablesCatalogEJB</jndi-name>
+ <tss-link>IdentityTokenNoSecurity</tss-link>
+ </session>
+ </enterprise-beans>
+
+ <!--
+ NOTE: for geronimo 2.0.2, please make sure the following system module is started
+ before the deployment of the EJB jar
+ org.apache.geronimo.configs/openejb-corba-deployer/2.0.2/car
+ -->
+ <gbean name="IdentityTokenNoSecurity" class="org.apache.geronimo.corba.TSSBean">
+ <attribute name="POAName">IdentityTokenNoSecurity</attribute>
+ <reference name="Server">
+ <name>UnprotectedServer</name>
+ </reference>
+ <xml-attribute name="tssConfig">
+ <tss:tss xmlns:tss="http://openejb.apache.org/xml/ns/corba-tss-config-2.1"
+ xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.2">
+ <tss:compoundSecMechTypeList>
+ <tss:compoundSecMech>
+ <tss:sasMech>
+ <tss:identityTokenTypes>
+ <tss:ITTAnonymous />
+ <tss:ITTPrincipalNameGSSUP
+ principal-class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" />
+ <tss:ITTDistinguishedName />
+ <tss:ITTX509CertChain />
+ </tss:identityTokenTypes>
+ </tss:sasMech>
+ </tss:compoundSecMech>
+ </tss:compoundSecMechTypeList>
+ </tss:tss>
+ </xml-attribute>
+ </gbean>
+</openejb-jar>
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/META-INF/sca-contribution.xml b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..2e46b31047
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:c="http://catalog">
+ <export.java package="services.ejb"/>
+ <deployable composite="c:catalog-ejb"/>
+</contribution> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/VegetablesCatalogEJB.componentType b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/VegetablesCatalogEJB.componentType
new file mode 100644
index 0000000000..bc57b35e79
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/VegetablesCatalogEJB.componentType
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0">
+
+ <service name="CatalogEJB">
+ <interface.java interface="services.ejb.CatalogEJBRemote"/>
+ </service>
+
+</componentType>
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/catalog-ejb.composite b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/catalog-ejb.composite
new file mode 100644
index 0000000000..f733524809
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/src/main/resources/catalog-ejb.composite
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://catalog"
+ name="catalog-ejb">
+
+ <component name="VegetablesCatalogEJB">
+ <implementation.ejb ejb-link="tutorial-catalog-ejb.jar#VegetablesCatalogEJB"/>
+ <service name="CatalogEJB">
+ <binding.ejb uri="/VegetablesCatalogEJB"/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/client/CatalogEJBClientTestCase.java b/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/client/CatalogEJBClientTestCase.java
new file mode 100644
index 0000000000..f9bd16f050
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/client/CatalogEJBClientTestCase.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package client;
+
+import javax.naming.InitialContext;
+import javax.rmi.PortableRemoteObject;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import services.ejb.CatalogEJBHome;
+import services.ejb.CatalogEJBRemote;
+import services.ejb.Vegetable;
+
+/**
+ * A test client for the catalog EJB.
+ *
+ * @version $Rev$ $Date$
+ */
+public class CatalogEJBClientTestCase {
+
+ @Test
+ @Ignore // Ignore the test case for maven build, remove it if you want to run
+ public void testCatalogEJB() throws Exception {
+ InitialContext context = new InitialContext();
+
+ Object o = context.lookup("corbaname:iiop:1.2@localhost:1050#VegetablesCatalogEJB");
+
+ // The narrow(...) call requires generated EJB stubs. Tuscany binding.ejb doesn't the stubs
+ CatalogEJBHome home = (CatalogEJBHome)PortableRemoteObject.narrow(o, CatalogEJBHome.class);
+
+ // The following call will hang with SUN jdk1.6.0_05, please use SUN or IBM jdk 1.5.x instead
+ CatalogEJBRemote catalog = home.create();
+
+ Vegetable items[] = catalog.get();
+ for (Vegetable item : items) {
+ System.out.println(item.getName() + " " + item.getPrice());
+ }
+ }
+
+ public static void main(String args[]) throws Exception {
+ String javaVersion = System.getProperty("java.version");
+ String javaVendor = System.getProperty("java.vendor");
+
+ if (javaVendor.toUpperCase().contains("SUN") && javaVersion.startsWith("1.6.")) {
+ System.err.println("The EJB invocation may hang due to a bug in " + javaVendor + ":" + javaVersion);
+ }
+ new CatalogEJBClientTestCase().testCatalogEJB();
+ }
+
+}
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/org/omg/stub/javax/ejb/_EJBHome_Stub.java b/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/org/omg/stub/javax/ejb/_EJBHome_Stub.java
new file mode 100644
index 0000000000..6930093042
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/org/omg/stub/javax/ejb/_EJBHome_Stub.java
@@ -0,0 +1,223 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+// Stub class generated by rmic, do not edit.
+// Contents subject to change without notice.
+
+package org.omg.stub.javax.ejb;
+
+import java.rmi.RemoteException;
+import java.rmi.UnexpectedException;
+
+import javax.ejb.EJBHome;
+import javax.ejb.EJBMetaData;
+import javax.ejb.Handle;
+import javax.ejb.HomeHandle;
+import javax.ejb.RemoveException;
+import javax.rmi.CORBA.Stub;
+import javax.rmi.CORBA.Util;
+
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.portable.ApplicationException;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.RemarshalException;
+import org.omg.CORBA.portable.ServantObject;
+import org.omg.CORBA_2_3.portable.InputStream;
+
+public class _EJBHome_Stub extends Stub implements EJBHome {
+
+ private static final String[] _type_ids = {
+ "RMI:javax.ejb.EJBHome:0000000000000000"
+ };
+
+ public String[] _ids() {
+ return _type_ids;
+ }
+
+ public EJBMetaData getEJBMetaData() throws RemoteException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("_get_EJBMetaData", true);
+ in = (InputStream)_invoke(out);
+ return (EJBMetaData) in.read_value(EJBMetaData.class);
+ } catch (ApplicationException ex) {
+ in = (InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("_get_EJBMetaData",javax.ejb.EJBHome.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ EJBMetaData result = ((javax.ejb.EJBHome)so.servant).getEJBMetaData();
+ return (EJBMetaData)Util.copyObject(result,_orb());
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+
+ public HomeHandle getHomeHandle() throws RemoteException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("_get_homeHandle", true);
+ in = (InputStream)_invoke(out);
+ return (HomeHandle) in.read_abstract_interface(HomeHandle.class);
+ } catch (ApplicationException ex) {
+ in = (InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("_get_homeHandle",javax.ejb.EJBHome.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ HomeHandle result = ((javax.ejb.EJBHome)so.servant).getHomeHandle();
+ return (HomeHandle)Util.copyObject(result,_orb());
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+
+ public void remove(Handle arg0) throws RemoteException, RemoveException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("remove__javax_ejb_Handle", true);
+ Util.writeAbstractObject(out,arg0);
+ _invoke(out);
+ return;
+ } catch (ApplicationException ex) {
+ in = (InputStream) ex.getInputStream();
+ String id = in.read_string();
+ if (id.equals("IDL:javax/ejb/RemoveEx:1.0")) {
+ throw (RemoveException) in.read_value(RemoveException.class);
+ }
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("remove__javax_ejb_Handle",javax.ejb.EJBHome.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ Handle arg0Copy = (Handle) Util.copyObject(arg0,_orb());
+ ((javax.ejb.EJBHome)so.servant).remove(arg0Copy);
+ return;
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ if (exCopy instanceof RemoveException) {
+ throw (RemoveException)exCopy;
+ }
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+
+ public void remove(Object arg0) throws RemoteException, RemoveException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("remove__java_lang_Object", true);
+ Util.writeAny(out,arg0);
+ _invoke(out);
+ return;
+ } catch (ApplicationException ex) {
+ in = (InputStream) ex.getInputStream();
+ String id = in.read_string();
+ if (id.equals("IDL:javax/ejb/RemoveEx:1.0")) {
+ throw (RemoveException) in.read_value(RemoveException.class);
+ }
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("remove__java_lang_Object",javax.ejb.EJBHome.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ Object arg0Copy = (Object) Util.copyObject(arg0,_orb());
+ ((javax.ejb.EJBHome)so.servant).remove(arg0Copy);
+ return;
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ if (exCopy instanceof RemoveException) {
+ throw (RemoveException)exCopy;
+ }
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/org/omg/stub/javax/ejb/_EJBObject_Stub.java b/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/org/omg/stub/javax/ejb/_EJBObject_Stub.java
new file mode 100644
index 0000000000..3482ebb9ec
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/org/omg/stub/javax/ejb/_EJBObject_Stub.java
@@ -0,0 +1,252 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+// Stub class generated by rmic, do not edit.
+// Contents subject to change without notice.
+
+package org.omg.stub.javax.ejb;
+
+import java.rmi.RemoteException;
+import java.rmi.UnexpectedException;
+
+import javax.ejb.EJBHome;
+import javax.ejb.EJBObject;
+import javax.ejb.Handle;
+import javax.ejb.RemoveException;
+import javax.rmi.CORBA.Stub;
+import javax.rmi.CORBA.Util;
+
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.portable.ApplicationException;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.RemarshalException;
+import org.omg.CORBA.portable.ServantObject;
+
+public class _EJBObject_Stub extends Stub implements EJBObject {
+
+ private static final String[] _type_ids = {
+ "RMI:javax.ejb.EJBObject:0000000000000000"
+ };
+
+ public String[] _ids() {
+ return _type_ids;
+ }
+
+ public EJBHome getEJBHome() throws RemoteException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("_get_EJBHome", true);
+ in = _invoke(out);
+ return (EJBHome) in.read_Object(EJBHome.class);
+ } catch (ApplicationException ex) {
+ in = ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("_get_EJBHome",javax.ejb.EJBObject.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ EJBHome result = ((javax.ejb.EJBObject)so.servant).getEJBHome();
+ return (EJBHome)Util.copyObject(result,_orb());
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+
+ public Handle getHandle() throws RemoteException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("_get_handle", true);
+ in = (org.omg.CORBA_2_3.portable.InputStream)_invoke(out);
+ return (Handle) in.read_abstract_interface(Handle.class);
+ } catch (ApplicationException ex) {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("_get_handle",javax.ejb.EJBObject.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ Handle result = ((javax.ejb.EJBObject)so.servant).getHandle();
+ return (Handle)Util.copyObject(result,_orb());
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+
+ public Object getPrimaryKey() throws RemoteException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("_get_primaryKey", true);
+ in = _invoke(out);
+ return Util.readAny(in);
+ } catch (ApplicationException ex) {
+ in = ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("_get_primaryKey",javax.ejb.EJBObject.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ Object result = ((javax.ejb.EJBObject)so.servant).getPrimaryKey();
+ return (Object)Util.copyObject(result,_orb());
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+
+ public boolean isIdentical(EJBObject arg0) throws RemoteException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("isIdentical", true);
+ Util.writeRemoteObject(out,arg0);
+ in = _invoke(out);
+ return in.read_boolean();
+ } catch (ApplicationException ex) {
+ in = ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("isIdentical",javax.ejb.EJBObject.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ EJBObject arg0Copy = (EJBObject) Util.copyObject(arg0,_orb());
+ return ((javax.ejb.EJBObject)so.servant).isIdentical(arg0Copy);
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+
+ public void remove() throws RemoteException, RemoveException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("remove", true);
+ _invoke(out);
+ return;
+ } catch (ApplicationException ex) {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ if (id.equals("IDL:javax/ejb/RemoveEx:1.0")) {
+ throw (RemoveException) in.read_value(RemoveException.class);
+ }
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("remove",javax.ejb.EJBObject.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ ((javax.ejb.EJBObject)so.servant).remove();
+ return;
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ if (exCopy instanceof RemoveException) {
+ throw (RemoveException)exCopy;
+ }
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/org/omg/stub/javax/ejb/_Handle_Stub.java b/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/org/omg/stub/javax/ejb/_Handle_Stub.java
new file mode 100644
index 0000000000..d848fbb280
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/org/omg/stub/javax/ejb/_Handle_Stub.java
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+// Stub class generated by rmic, do not edit.
+// Contents subject to change without notice.
+
+package org.omg.stub.javax.ejb;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.rmi.UnexpectedException;
+
+import javax.ejb.EJBObject;
+import javax.ejb.Handle;
+import javax.rmi.CORBA.Stub;
+import javax.rmi.CORBA.Util;
+
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.portable.ApplicationException;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.RemarshalException;
+import org.omg.CORBA.portable.ServantObject;
+
+public class _Handle_Stub extends Stub implements Handle,
+Remote {
+
+ private static final String[] _type_ids = {
+ "RMI:javax.ejb.Handle:0000000000000000"
+ };
+
+ public String[] _ids() {
+ return _type_ids;
+ }
+
+ public EJBObject getEJBObject() throws RemoteException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("_get_EJBObject", true);
+ in = _invoke(out);
+ return (EJBObject) in.read_Object(EJBObject.class);
+ } catch (ApplicationException ex) {
+ in = ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("_get_EJBObject",javax.ejb.Handle.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ EJBObject result = ((javax.ejb.Handle)so.servant).getEJBObject();
+ return (EJBObject)Util.copyObject(result,_orb());
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/org/omg/stub/javax/ejb/_HomeHandle_Stub.java b/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/org/omg/stub/javax/ejb/_HomeHandle_Stub.java
new file mode 100644
index 0000000000..6efc86b608
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/org/omg/stub/javax/ejb/_HomeHandle_Stub.java
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+// Stub class generated by rmic, do not edit.
+// Contents subject to change without notice.
+
+package org.omg.stub.javax.ejb;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.rmi.UnexpectedException;
+
+import javax.ejb.EJBHome;
+import javax.ejb.HomeHandle;
+import javax.rmi.CORBA.Stub;
+import javax.rmi.CORBA.Util;
+
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.portable.ApplicationException;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.RemarshalException;
+import org.omg.CORBA.portable.ServantObject;
+
+public class _HomeHandle_Stub extends Stub implements HomeHandle,
+Remote {
+
+ private static final String[] _type_ids = {
+ "RMI:javax.ejb.HomeHandle:0000000000000000"
+ };
+
+ public String[] _ids() {
+ return _type_ids;
+ }
+
+ public EJBHome getEJBHome() throws RemoteException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("_get_EJBHome", true);
+ in = _invoke(out);
+ return (EJBHome) in.read_Object(EJBHome.class);
+ } catch (ApplicationException ex) {
+ in = ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("_get_EJBHome",javax.ejb.HomeHandle.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ EJBHome result = ((javax.ejb.HomeHandle)so.servant).getEJBHome();
+ return (EJBHome)Util.copyObject(result,_orb());
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/services/ejb/_CatalogEJBHome_Stub.java b/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/services/ejb/_CatalogEJBHome_Stub.java
new file mode 100644
index 0000000000..bdc1a5cfd5
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/services/ejb/_CatalogEJBHome_Stub.java
@@ -0,0 +1,269 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+// Stub class generated by rmic, do not edit.
+// Contents subject to change without notice.
+
+package services.ejb;
+
+import java.rmi.RemoteException;
+import java.rmi.UnexpectedException;
+
+import javax.ejb.CreateException;
+import javax.ejb.EJBMetaData;
+import javax.ejb.Handle;
+import javax.ejb.HomeHandle;
+import javax.ejb.RemoveException;
+import javax.rmi.CORBA.Stub;
+import javax.rmi.CORBA.Util;
+
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.portable.ApplicationException;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.RemarshalException;
+import org.omg.CORBA.portable.ServantObject;
+import org.omg.CORBA_2_3.portable.InputStream;
+
+public class _CatalogEJBHome_Stub extends Stub implements CatalogEJBHome {
+
+ private static final String[] _type_ids = {
+ "RMI:services.ejb.CatalogEJBHome:0000000000000000",
+ "RMI:javax.ejb.EJBHome:0000000000000000"
+ };
+
+ public String[] _ids() {
+ return _type_ids;
+ }
+
+ public EJBMetaData getEJBMetaData() throws RemoteException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("_get_EJBMetaData", true);
+ in = (InputStream)_invoke(out);
+ return (EJBMetaData) in.read_value(EJBMetaData.class);
+ } catch (ApplicationException ex) {
+ in = (InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("_get_EJBMetaData",javax.ejb.EJBHome.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ EJBMetaData result = ((javax.ejb.EJBHome)so.servant).getEJBMetaData();
+ return (EJBMetaData)Util.copyObject(result,_orb());
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+
+ public HomeHandle getHomeHandle() throws RemoteException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("_get_homeHandle", true);
+ in = (InputStream)_invoke(out);
+ return (HomeHandle) in.read_abstract_interface(HomeHandle.class);
+ } catch (ApplicationException ex) {
+ in = (InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("_get_homeHandle",javax.ejb.EJBHome.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ HomeHandle result = ((javax.ejb.EJBHome)so.servant).getHomeHandle();
+ return (HomeHandle)Util.copyObject(result,_orb());
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+
+ public void remove(Handle arg0) throws RemoteException, RemoveException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("remove__javax_ejb_Handle", true);
+ Util.writeAbstractObject(out,arg0);
+ _invoke(out);
+ return;
+ } catch (ApplicationException ex) {
+ in = (InputStream) ex.getInputStream();
+ String id = in.read_string();
+ if (id.equals("IDL:javax/ejb/RemoveEx:1.0")) {
+ throw (RemoveException) in.read_value(RemoveException.class);
+ }
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("remove__javax_ejb_Handle",javax.ejb.EJBHome.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ Handle arg0Copy = (Handle) Util.copyObject(arg0,_orb());
+ ((javax.ejb.EJBHome)so.servant).remove(arg0Copy);
+ return;
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ if (exCopy instanceof RemoveException) {
+ throw (RemoveException)exCopy;
+ }
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+
+ public void remove(Object arg0) throws RemoteException, RemoveException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("remove__java_lang_Object", true);
+ Util.writeAny(out,arg0);
+ _invoke(out);
+ return;
+ } catch (ApplicationException ex) {
+ in = (InputStream) ex.getInputStream();
+ String id = in.read_string();
+ if (id.equals("IDL:javax/ejb/RemoveEx:1.0")) {
+ throw (RemoveException) in.read_value(RemoveException.class);
+ }
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("remove__java_lang_Object",javax.ejb.EJBHome.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ Object arg0Copy = (Object) Util.copyObject(arg0,_orb());
+ ((javax.ejb.EJBHome)so.servant).remove(arg0Copy);
+ return;
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ if (exCopy instanceof RemoveException) {
+ throw (RemoveException)exCopy;
+ }
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+
+ public CatalogEJBRemote create() throws CreateException, RemoteException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("create", true);
+ in = (InputStream)_invoke(out);
+ return (CatalogEJBRemote) in.read_Object(CatalogEJBRemote.class);
+ } catch (ApplicationException ex) {
+ in = (InputStream) ex.getInputStream();
+ String id = in.read_string();
+ if (id.equals("IDL:javax/ejb/CreateEx:1.0")) {
+ throw (CreateException) in.read_value(CreateException.class);
+ }
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("create",services.ejb.CatalogEJBHome.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ CatalogEJBRemote result = ((services.ejb.CatalogEJBHome)so.servant).create();
+ return (CatalogEJBRemote)Util.copyObject(result,_orb());
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ if (exCopy instanceof CreateException) {
+ throw (CreateException)exCopy;
+ }
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/services/ejb/_CatalogEJBRemote_Stub.java b/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/services/ejb/_CatalogEJBRemote_Stub.java
new file mode 100644
index 0000000000..a24108714e
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-ejb/src/test/java/services/ejb/_CatalogEJBRemote_Stub.java
@@ -0,0 +1,292 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+// Stub class generated by rmic, do not edit.
+// Contents subject to change without notice.
+
+package services.ejb;
+
+import java.rmi.RemoteException;
+import java.rmi.UnexpectedException;
+
+import javax.ejb.EJBHome;
+import javax.ejb.EJBObject;
+import javax.ejb.Handle;
+import javax.ejb.RemoveException;
+import javax.rmi.CORBA.Stub;
+import javax.rmi.CORBA.Util;
+
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.portable.ApplicationException;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.RemarshalException;
+import org.omg.CORBA.portable.ServantObject;
+
+public class _CatalogEJBRemote_Stub extends Stub implements CatalogEJBRemote {
+
+ private static final String[] _type_ids = {
+ "RMI:services.ejb.CatalogEJBRemote:0000000000000000",
+ "RMI:javax.ejb.EJBObject:0000000000000000"
+ };
+
+ public String[] _ids() {
+ return _type_ids;
+ }
+
+ public EJBHome getEJBHome() throws RemoteException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("_get_EJBHome", true);
+ in = _invoke(out);
+ return (EJBHome) in.read_Object(EJBHome.class);
+ } catch (ApplicationException ex) {
+ in = ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("_get_EJBHome",javax.ejb.EJBObject.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ EJBHome result = ((javax.ejb.EJBObject)so.servant).getEJBHome();
+ return (EJBHome)Util.copyObject(result,_orb());
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+
+ public Handle getHandle() throws RemoteException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("_get_handle", true);
+ in = (org.omg.CORBA_2_3.portable.InputStream)_invoke(out);
+ return (Handle) in.read_abstract_interface(Handle.class);
+ } catch (ApplicationException ex) {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("_get_handle",javax.ejb.EJBObject.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ Handle result = ((javax.ejb.EJBObject)so.servant).getHandle();
+ return (Handle)Util.copyObject(result,_orb());
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+
+ public Object getPrimaryKey() throws RemoteException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("_get_primaryKey", true);
+ in = _invoke(out);
+ return Util.readAny(in);
+ } catch (ApplicationException ex) {
+ in = ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("_get_primaryKey",javax.ejb.EJBObject.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ Object result = ((javax.ejb.EJBObject)so.servant).getPrimaryKey();
+ return (Object)Util.copyObject(result,_orb());
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+
+ public boolean isIdentical(EJBObject arg0) throws RemoteException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("isIdentical", true);
+ Util.writeRemoteObject(out,arg0);
+ in = _invoke(out);
+ return in.read_boolean();
+ } catch (ApplicationException ex) {
+ in = ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("isIdentical",javax.ejb.EJBObject.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ EJBObject arg0Copy = (EJBObject) Util.copyObject(arg0,_orb());
+ return ((javax.ejb.EJBObject)so.servant).isIdentical(arg0Copy);
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+
+ public void remove() throws RemoteException, RemoveException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("remove", true);
+ _invoke(out);
+ return;
+ } catch (ApplicationException ex) {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ if (id.equals("IDL:javax/ejb/RemoveEx:1.0")) {
+ throw (RemoveException) in.read_value(RemoveException.class);
+ }
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("remove",javax.ejb.EJBObject.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ ((javax.ejb.EJBObject)so.servant).remove();
+ return;
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ if (exCopy instanceof RemoveException) {
+ throw (RemoveException)exCopy;
+ }
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+
+ public Vegetable[] get() throws RemoteException {
+ while(true) {
+ if (!Util.isLocal(this)) {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try {
+ try {
+ OutputStream out = _request("get", true);
+ in = (org.omg.CORBA_2_3.portable.InputStream)_invoke(out);
+ return (Vegetable[]) in.read_value(Vegetable[].class);
+ } catch (ApplicationException ex) {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ } catch (RemarshalException ex) {
+ continue;
+ }
+ } catch (SystemException ex) {
+ throw Util.mapSystemException(ex);
+ } finally {
+ _releaseReply(in);
+ }
+ } else {
+ ServantObject so = _servant_preinvoke("get",services.ejb.CatalogEJBRemote.class);
+ if (so == null) {
+ continue;
+ }
+ try {
+ Vegetable[] result = ((services.ejb.CatalogEJBRemote)so.servant).get();
+ return (Vegetable[])Util.copyObject(result,_orb());
+ } catch (Throwable ex) {
+ Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
+ throw Util.wrapException(exCopy);
+ } finally {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/catalog-mediation/META-INF/sca-contribution.xml b/java/sca-contrib/tutorials/store/catalog-mediation/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..88950bf740
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-mediation/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:c="http://catalog">
+ <import.java package="services"/>
+ <import.java package="services.ejb"/>
+ <deployable composite="c:catalog-mediation"/>
+</contribution> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/catalog-mediation/catalog-mediation.composite b/java/sca-contrib/tutorials/store/catalog-mediation/catalog-mediation.composite
new file mode 100644
index 0000000000..d832e88acc
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-mediation/catalog-mediation.composite
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://catalog"
+ name="catalog-mediation">
+
+ <component name="MediatedVegetablesCatalog">
+ <implementation.java class="services.mediation.VegetablesCatalogMediationImpl"/>
+ <service name="Catalog">
+ <binding.ws/>
+ </service>
+ <reference name="catalog" target="VegetablesCatalogEJB">
+ <binding.ejb/>
+ </reference>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/catalog-mediation/pom.xml b/java/sca-contrib/tutorials/store/catalog-mediation/pom.xml
new file mode 100644
index 0000000000..8c508f2224
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-mediation/pom.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-catalog-mediation</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial Catalog Mediation</name>
+
+ <repositories>
+ <repository>
+ <id>apache.incubator</id>
+ <url>http://people.apache.org/repo/m2-incubating-repository</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tutorial-assets</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tutorial-catalog-ejb</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-ejb_3.0_spec</artifactId>
+ <version>1.0</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <sourceDirectory>${basedir}</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ <exclude>**/.*/**</exclude>
+ <exclude>pom.xml</exclude>
+ <exclude>build.xml</exclude>
+ <exclude>target/**</exclude>
+ </excludes>
+ </resource>
+ </resources>
+
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/catalog-mediation/services/mediation/VegetablesCatalogMediationImpl.java b/java/sca-contrib/tutorials/store/catalog-mediation/services/mediation/VegetablesCatalogMediationImpl.java
new file mode 100644
index 0000000000..2271034dae
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-mediation/services/mediation/VegetablesCatalogMediationImpl.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services.mediation;
+
+import java.rmi.RemoteException;
+
+import org.oasisopen.sca.ServiceRuntimeException;
+import org.oasisopen.sca.annotation.Reference;
+
+import services.Catalog;
+import services.Item;
+import services.ejb.CatalogEJBRemote;
+import services.ejb.Vegetable;
+
+public class VegetablesCatalogMediationImpl implements Catalog {
+
+ @Reference
+ public CatalogEJBRemote catalog;
+
+ public Item[] get() {
+ Vegetable[] vegetables;
+ try {
+ vegetables = catalog.get();
+ } catch (RemoteException e) {
+ throw new ServiceRuntimeException(e);
+ }
+ Item[] items = new Item[vegetables.length];
+ for (int i = 0; i < vegetables.length; i++) {
+ items[i] = new Item(vegetables[i].getName(), vegetables[i].getPrice());
+ }
+ return items;
+ }
+
+}
diff --git a/java/sca-contrib/tutorials/store/catalog-webapp/catalog-web.composite b/java/sca-contrib/tutorials/store/catalog-webapp/catalog-web.composite
new file mode 100644
index 0000000000..3ba76da078
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-webapp/catalog-web.composite
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://catalog"
+ name="catalog-web">
+
+ <component name="WebFruitsCatalog">
+ <implementation.java class="services.FruitsCatalogImpl"/>
+ <service name="Catalog">
+ <binding.ws/>
+ </service>
+ <property name="currencyCode">USD</property>
+ <reference name="currencyConverter" target="CurrencyConverterWebService">
+ <binding.ws/>
+ </reference>
+ </component>
+
+ <component name="LocalFruitsCatalog">
+ <implementation.java class="services.FruitsCatalogImpl"/>
+ <property name="currencyCode">USD</property>
+ <reference name="currencyConverter" target="CurrencyConverterWebService">
+ <binding.ws/>
+ </reference>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/catalog-webapp/pom.xml b/java/sca-contrib/tutorials/store/catalog-webapp/pom.xml
new file mode 100644
index 0000000000..a07d468892
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-webapp/pom.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-catalog-webapp</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial Catalog WAR Contribution</name>
+ <packaging>war</packaging>
+
+ <repositories>
+ <repository>
+ <id>apache.incubator</id>
+ <url>http://people.apache.org/repo/m2-incubating-repository</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tutorial-assets</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-launcher</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <sourceDirectory>${basedir}</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ <exclude>**/.*/**</exclude>
+ <exclude>pom.xml</exclude>
+ <exclude>build.xml</exclude>
+ <exclude>target/**</exclude>
+ <exclude>webapp/**</exclude>
+ <exclude>target/**</exclude>
+ </excludes>
+ </resource>
+ </resources>
+
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <configuration>
+ <warSourceDirectory>webapp</warSourceDirectory>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/catalog-webapp/webapp/META-INF/sca-contribution.xml b/java/sca-contrib/tutorials/store/catalog-webapp/webapp/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..7f06dc7ccb
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-webapp/webapp/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:c="http://catalog">
+ <import.java package="services"/>
+ <deployable composite="c:catalog-web"/>
+</contribution> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/catalog-webapp/webapp/WEB-INF/web.xml b/java/sca-contrib/tutorials/store/catalog-webapp/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..e08d617dad
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-webapp/webapp/WEB-INF/web.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web
+Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app>
+
+ <display-name>Fruit Catalog</display-name>
+
+ <filter>
+ <filter-name>tuscany</filter-name>
+ <filter-class>org.apache.tuscany.sca.node.launcher.NodeServletFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>tuscany</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+ <welcome-file-list id="WelcomeFileList">
+ <welcome-file>catalog.jsp</welcome-file>
+ </welcome-file-list>
+
+</web-app>
diff --git a/java/sca-contrib/tutorials/store/catalog-webapp/webapp/catalog.jsp b/java/sca-contrib/tutorials/store/catalog-webapp/webapp/catalog.jsp
new file mode 100644
index 0000000000..dcee7c33f4
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/catalog-webapp/webapp/catalog.jsp
@@ -0,0 +1,52 @@
+<%--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+--%>
+
+<%@ page import="org.apache.tuscany.sca.node.SCAClient"%>
+<%@ page import="services.Catalog" %>
+<%@page import="services.Item"%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+<%
+
+ SCAClient client = (SCAClient) application.getAttribute("org.apache.tuscany.sca.node.SCAClient");
+
+ Catalog catalog = (Catalog)client.getService(Catalog.class, "LocalFruitsCatalog");
+ Item[] items = catalog.get();
+
+%>
+
+<html>
+<head><title>Catalog</title></head>
+
+<body>
+<h1>Catalog</h1>
+
+<table border="0">
+
+<% for (int i = 0, n = items.length; i < n; i++) { %>
+
+ <tr><td><%=items[i].getName() %></td><td><%=items[i].getPrice() %></td></tr>
+
+<% } %>
+
+</table>
+
+</body>
+</html>
diff --git a/java/sca-contrib/tutorials/store/domain/cloud.composite b/java/sca-contrib/tutorials/store/domain/cloud.composite
new file mode 100644
index 0000000000..8f879c5261
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/cloud.composite
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite name="cloud"
+ targetNamespace="http://tuscany.apache.org/xmlns/sca/1.0/"
+ xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:ns1="http://www.osoa.org/xmlns/sca/1.0">
+ <include name="ns2:CurrencyNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
+ <include name="ns2:CatalogsNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
+ <include name="ns2:StoreNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
+ <include name="ns2:StoreMergerNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
+ <include name="ns2:StoreClientNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
+ <include name="ns2:StoreDBNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
+ <include name="ns2:StoreSupplierNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
+ <include name="ns2:StoreEUNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
+ <include name="ns2:StoreMashupNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
+ <include name="ns2:StoreMarketNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
+ <include name="ns2:CatalogWebAppNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
+ <include name="ns2:CatalogMediationNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
+ <include name="ns2:CatalogEJBNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
+</composite>
diff --git a/java/sca-contrib/tutorials/store/domain/cloud/CatalogEJBNode.composite b/java/sca-contrib/tutorials/store/domain/cloud/CatalogEJBNode.composite
new file mode 100644
index 0000000000..02e83d4c8d
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/cloud/CatalogEJBNode.composite
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscany.apache.org/cloud"
+ xmlns:c="http://catalog"
+ name="CatalogEJBNode">
+
+ <component name="CatalogEJBNode">
+ <t:implementation.node uri="catalog-ejb" composite="c:catalog-ejb"/>
+ <service name="Node">
+ <t:binding.http uri="http://localhost:8080"/>
+ <!-- <binding.ejb uri="corbaname:iiop:1.2@localhost:2809/NameServiceServerRoot#"/> -->
+ <binding.ejb uri="corbaname:iiop:1.2@localhost:1050#"/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/domain/cloud/CatalogMediationNode.composite b/java/sca-contrib/tutorials/store/domain/cloud/CatalogMediationNode.composite
new file mode 100644
index 0000000000..bac96d9781
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/cloud/CatalogMediationNode.composite
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscany.apache.org/cloud"
+ xmlns:c="http://catalog"
+ name="CatalogMediationNode">
+
+ <component name="CatalogMediationNode">
+ <t:implementation.node uri="catalog-mediation" composite="c:catalog-mediation"/>
+ <service name="Node">
+ <binding.ws uri="http://localhost:8105"/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/domain/cloud/CatalogWebAppNode.composite b/java/sca-contrib/tutorials/store/domain/cloud/CatalogWebAppNode.composite
new file mode 100644
index 0000000000..f3ed2dfdd5
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/cloud/CatalogWebAppNode.composite
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:c="http://catalog"
+ targetNamespace="http://tuscany.apache.org/cloud"
+ name="CatalogWebAppNode">
+
+ <component name="CatalogWebAppNode">
+ <t:implementation.node uri="catalog-webapp" composite="c:catalog-web" />
+ <service name="Node">
+ <binding.ws uri="http://localhost:8080/CatalogWebAppNode" />
+ <t:binding.http uri="http://localhost:8080/CatalogWebAppNode" />
+ <t:binding.jsonrpc uri="http://localhost:8080/CatalogWebAppNode" />
+ <t:binding.atom uri="http://localhost:8080/CatalogWebAppNode" />
+ </service>
+ </component>
+
+</composite> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/domain/cloud/CatalogsNode.composite b/java/sca-contrib/tutorials/store/domain/cloud/CatalogsNode.composite
new file mode 100644
index 0000000000..3a5ec770cb
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/cloud/CatalogsNode.composite
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscany.apache.org/cloud"
+ xmlns:c="http://services"
+ name="CatalogsNode">
+
+ <component name="CatalogsNode">
+ <t:implementation.node uri="web-services" composite="c:catalogs"/>
+ <service name="Node">
+ <binding.ws uri="http://localhost:8200"/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/domain/cloud/CurrencyNode.composite b/java/sca-contrib/tutorials/store/domain/cloud/CurrencyNode.composite
new file mode 100644
index 0000000000..ed80268f22
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/cloud/CurrencyNode.composite
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscany.apache.org/cloud"
+ xmlns:c="http://services"
+ name="CurrencyNode">
+
+ <component name="CurrencyNode">
+ <t:implementation.node uri="web-services" composite="c:currency"/>
+ <service name="Node">
+ <binding.ws uri="http://localhost:8201"/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/domain/cloud/StoreClientNode.composite b/java/sca-contrib/tutorials/store/domain/cloud/StoreClientNode.composite
new file mode 100644
index 0000000000..91948b5476
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/cloud/StoreClientNode.composite
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscany.apache.org/cloud"
+ xmlns:s="http://store"
+ name="StoreClientNode">
+
+ <component name="StoreClientNode">
+ <t:implementation.node uri="store-client" composite="s:store-client"/>
+ <service name="Node">
+ <t:binding.http uri="http://localhost:8107"/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/domain/cloud/StoreDBNode.composite b/java/sca-contrib/tutorials/store/domain/cloud/StoreDBNode.composite
new file mode 100644
index 0000000000..9b09bd7344
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/cloud/StoreDBNode.composite
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscany.apache.org/cloud"
+ xmlns:s="http://store"
+ name="StoreDBNode">
+
+ <component name="StoreDBNode">
+ <t:implementation.node uri="store-db" composite="s:store-db"/>
+ <service name="Node">
+ <t:binding.http uri="http://localhost:8102"/>
+ <t:binding.jsonrpc uri="http://localhost:8102"/>
+ <t:binding.atom uri="http://localhost:8102"/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/domain/cloud/StoreEUNode.composite b/java/sca-contrib/tutorials/store/domain/cloud/StoreEUNode.composite
new file mode 100644
index 0000000000..6a50de56d5
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/cloud/StoreEUNode.composite
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscany.apache.org/cloud"
+ xmlns:s="http://store"
+ name="StoreEUNode">
+
+ <component name="StoreEUNode">
+ <t:implementation.node uri="store-eu" composite="s:store-eu"/>
+ <service name="Node">
+ <t:binding.http uri="http://localhost:8104"/>
+ <t:binding.jsonrpc uri="http://localhost:8104"/>
+ <t:binding.atom uri="http://localhost:8104"/>
+ <binding.ws uri="http://localhost:8444"/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/domain/cloud/StoreMarketNode.composite b/java/sca-contrib/tutorials/store/domain/cloud/StoreMarketNode.composite
new file mode 100644
index 0000000000..1bdd994c2b
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/cloud/StoreMarketNode.composite
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscany.apache.org/cloud"
+ xmlns:s="http://store"
+ name="StoreMarketNode">
+
+ <component name="StoreMarketNode">
+ <t:implementation.node uri="store-market" composite="s:store-market"/>
+ <service name="Node">
+ <t:binding.http uri="http://localhost:8107"/>
+ <t:binding.jsonrpc uri="http://localhost:8107"/>
+ <t:binding.atom uri="http://localhost:8107"/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/domain/cloud/StoreMashupNode.composite b/java/sca-contrib/tutorials/store/domain/cloud/StoreMashupNode.composite
new file mode 100644
index 0000000000..0db43df8c3
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/cloud/StoreMashupNode.composite
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscany.apache.org/cloud"
+ xmlns:s="http://store"
+ name="StoreMashupNode">
+
+ <component name="StoreMashupNode">
+ <t:implementation.node uri="store-mashup" composite="s:store-mashup"/>
+ <service name="Node">
+ <t:binding.http uri="http://localhost:8106"/>
+ <t:binding.jsonrpc uri="http://localhost:8106"/>
+ <t:binding.atom uri="http://localhost:8106"/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/domain/cloud/StoreMergerNode.composite b/java/sca-contrib/tutorials/store/domain/cloud/StoreMergerNode.composite
new file mode 100644
index 0000000000..0ce6e6a231
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/cloud/StoreMergerNode.composite
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscany.apache.org/cloud"
+ xmlns:s="http://store"
+ name="StoreMergerNode">
+
+ <component name="StoreMergerNode">
+ <t:implementation.node uri="store-merger" composite="s:store-merger"/>
+ <service name="Node">
+ <t:binding.http uri="http://localhost:8101"/>
+ <t:binding.jsonrpc uri="http://localhost:8101"/>
+ <t:binding.atom uri="http://localhost:8101"/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/domain/cloud/StoreNode.composite b/java/sca-contrib/tutorials/store/domain/cloud/StoreNode.composite
new file mode 100644
index 0000000000..e2b61a98e1
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/cloud/StoreNode.composite
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscany.apache.org/cloud"
+ xmlns:s="http://store"
+ name="StoreNode">
+
+ <component name="StoreNode">
+ <t:implementation.node uri="store" composite="s:store"/>
+ <service name="Node">
+ <t:binding.http uri="http://localhost:8100"/>
+ <t:binding.jsonrpc uri="http://localhost:8100"/>
+ <t:binding.atom uri="http://localhost:8100"/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/domain/cloud/StoreSupplierNode.composite b/java/sca-contrib/tutorials/store/domain/cloud/StoreSupplierNode.composite
new file mode 100644
index 0000000000..df46bb8813
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/cloud/StoreSupplierNode.composite
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscany.apache.org/cloud"
+ xmlns:s="http://store"
+ name="StoreSupplierNode">
+
+ <component name="StoreSupplierNode">
+ <t:implementation.node uri="store-supplier" composite="s:store-supplier"/>
+ <service name="Node">
+ <t:binding.http uri="http://localhost:8103"/>
+ <t:binding.jsonrpc uri="http://localhost:8103"/>
+ <t:binding.atom uri="http://localhost:8103"/>
+ <binding.ws uri="http://localhost:8333"/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/domain/domain.composite b/java/sca-contrib/tutorials/store/domain/domain.composite
new file mode 100644
index 0000000000..8d47697df8
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/domain.composite
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite name="domain"
+ targetNamespace="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:ns1="http://www.osoa.org/xmlns/sca/1.0">
+ <include name="ns2:store" uri="store" xmlns:ns2="http://store"/>
+ <include name="ns2:store-merger" uri="store-merger" xmlns:ns2="http://store"/>
+ <include name="ns2:store-client" uri="store-client" xmlns:ns2="http://store"/>
+ <include name="ns2:store-db" uri="store-db" xmlns:ns2="http://store"/>
+ <include name="ns2:store-supplier" uri="store-supplier" xmlns:ns2="http://store"/>
+ <include name="ns2:store-market" uri="store-market" xmlns:ns2="http://store"/>
+ <include name="ns2:store-eu" uri="store-eu" xmlns:ns2="http://store"/>
+ <include name="ns2:store-mashup" uri="store-mashup" xmlns:ns2="http://store"/>
+ <include name="ns2:catalogs" uri="web-services" xmlns:ns2="http://services"/>
+ <include name="ns2:currency" uri="web-services" xmlns:ns2="http://services"/>
+ <include name="ns2:catalog-web" uri="catalog-webapp" xmlns:ns2="http://catalog"/>
+ <include name="ns2:catalog-mediation" uri="catalog-mediation" xmlns:ns2="http://catalog"/>
+ <include name="ns2:catalog-ejb" uri="catalog-ejb" xmlns:ns2="http://catalog"/>
+</composite>
diff --git a/java/sca-contrib/tutorials/store/domain/launch/LaunchCatalogMediationNode.java b/java/sca-contrib/tutorials/store/domain/launch/LaunchCatalogMediationNode.java
new file mode 100644
index 0000000000..4e0772d211
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/launch/LaunchCatalogMediationNode.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package launch;
+
+import org.apache.tuscany.sca.node.launcher.NodeLauncher;
+
+public class LaunchCatalogMediationNode {
+ public static void main(String[] args) throws Exception {
+ NodeLauncher.main(new String[] {"http://localhost:9990/node-config/CatalogMediationNode"});
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/domain/launch/LaunchCatalogsNode.java b/java/sca-contrib/tutorials/store/domain/launch/LaunchCatalogsNode.java
new file mode 100644
index 0000000000..a0c04a2f34
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/launch/LaunchCatalogsNode.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package launch;
+
+import org.apache.tuscany.sca.node.launcher.NodeLauncher;
+
+public class LaunchCatalogsNode {
+ public static void main(String[] args) throws Exception {
+ NodeLauncher.main(new String[] {"http://localhost:9990/node-config/CatalogsNode"});
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/domain/launch/LaunchCurrencyNode.java b/java/sca-contrib/tutorials/store/domain/launch/LaunchCurrencyNode.java
new file mode 100644
index 0000000000..d9110f5804
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/launch/LaunchCurrencyNode.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package launch;
+
+import org.apache.tuscany.sca.node.launcher.NodeLauncher;
+
+public class LaunchCurrencyNode {
+ public static void main(String[] args) throws Exception {
+ NodeLauncher.main(new String[] {"http://localhost:9990/node-config/CurrencyNode"});
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreDBNode.java b/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreDBNode.java
new file mode 100644
index 0000000000..b83db75646
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreDBNode.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package launch;
+
+import org.apache.tuscany.sca.node.launcher.NodeLauncher;
+
+public class LaunchStoreDBNode {
+ public static void main(String[] args) throws Exception {
+ NodeLauncher.main(new String[] {"http://localhost:9990/node-config/StoreDBNode"});
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreEUNode.java b/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreEUNode.java
new file mode 100644
index 0000000000..de0e421e2d
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreEUNode.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package launch;
+
+import org.apache.tuscany.sca.node.launcher.NodeLauncher;
+
+public class LaunchStoreEUNode {
+ public static void main(String[] args) throws Exception {
+ NodeLauncher.main(new String[] {"http://localhost:9990/node-config/StoreEUNode"});
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreMarketNode.java b/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreMarketNode.java
new file mode 100644
index 0000000000..b95d2a8d74
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreMarketNode.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package launch;
+
+import org.apache.tuscany.sca.node.launcher.NodeLauncher;
+
+public class LaunchStoreMarketNode {
+ public static void main(String[] args) throws Exception {
+ NodeLauncher.main(new String[] {"http://localhost:9990/node-config/StoreMarketNode"});
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreMashupNode.java b/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreMashupNode.java
new file mode 100644
index 0000000000..aa7cbdc4ca
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreMashupNode.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package launch;
+
+import org.apache.tuscany.sca.node.launcher.NodeLauncher;
+
+public class LaunchStoreMashupNode {
+ public static void main(String[] args) throws Exception {
+ NodeLauncher.main(new String[] {"http://localhost:9990/node-config/StoreMashupNode"});
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreMergerNode.java b/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreMergerNode.java
new file mode 100644
index 0000000000..a29c9b7d61
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreMergerNode.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package launch;
+
+import org.apache.tuscany.sca.node.launcher.NodeLauncher;
+
+public class LaunchStoreMergerNode {
+ public static void main(String[] args) throws Exception {
+ NodeLauncher.main(new String[] {"http://localhost:9990/node-config/StoreMergerNode"});
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreNode.java b/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreNode.java
new file mode 100644
index 0000000000..11f1b2ce86
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreNode.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package launch;
+
+import org.apache.tuscany.sca.node.launcher.NodeLauncher;
+
+public class LaunchStoreNode {
+ public static void main(String[] args) throws Exception {
+ NodeLauncher.main(new String[] {"http://localhost:9990/node-config/StoreNode"});
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreSupplierNode.java b/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreSupplierNode.java
new file mode 100644
index 0000000000..fce27d7d3b
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/launch/LaunchStoreSupplierNode.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package launch;
+
+import org.apache.tuscany.sca.node.launcher.NodeLauncher;
+
+public class LaunchStoreSupplierNode {
+ public static void main(String[] args) throws Exception {
+ NodeLauncher.main(new String[] {"http://localhost:9990/node-config/StoreSupplierNode"});
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/domain/launch/LaunchTutorialDomainManager.java b/java/sca-contrib/tutorials/store/domain/launch/LaunchTutorialDomainManager.java
new file mode 100644
index 0000000000..7408e99c63
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/launch/LaunchTutorialDomainManager.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package launch;
+
+/**
+ * Launches the domain manager from this module.
+ *
+ * @version $Rev$ $Date$
+ */
+public class LaunchTutorialDomainManager {
+
+ public static void main(String[] args) throws Exception {
+ org.apache.tuscany.sca.node.launcher.DomainManagerLauncher.main(args);
+ }
+
+}
diff --git a/java/sca-contrib/tutorials/store/domain/pom.xml b/java/sca-contrib/tutorials/store/domain/pom.xml
new file mode 100644
index 0000000000..808195c491
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/pom.xml
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-domain</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial Domain</name>
+
+ <repositories>
+ <repository>
+ <id>apache.incubator</id>
+ <url>http://people.apache.org/repo/m2-incubating-repository</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-launcher</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-domain-manager</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-node-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-widget-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-resource-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-atom-abdera</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-http-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-sca-axis2</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ejb-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-ejb</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.3.1.4</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <sourceDirectory>${basedir}</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ <exclude>**/.*/**</exclude>
+ <exclude>pom.xml</exclude>
+ <exclude>build.xml</exclude>
+ <exclude>target/**</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <configuration>
+ <mainClass>launch.LaunchTutorialAdmin</mainClass>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/domain/workspace.xml b/java/sca-contrib/tutorials/store/domain/workspace.xml
new file mode 100644
index 0000000000..9cdbe04ac7
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/domain/workspace.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<workspace xmlns="http://tuscany.apache.org/xmlns/sca/1.0" xmlns:ns1="http://tuscany.apache.org/xmlns/sca/1.0">
+ <contribution location="file:../assets/target/tutorial-assets.jar" uri="assets"/>
+ <contribution location="file:../store/target/tutorial-store.jar" uri="store"/>
+ <contribution location="file:../store-merger/target/tutorial-store-merger.jar" uri="store-merger"/>
+ <contribution location="file:../store-client/target/tutorial-store-client.jar" uri="store-client"/>
+ <contribution location="file:../store-db/target/tutorial-store-db.jar" uri="store-db"/>
+ <contribution location="file:../store-supplier/target/tutorial-store-supplier.jar" uri="store-supplier"/>
+ <contribution location="file:../store-market/target/tutorial-store-market.jar" uri="store-market"/>
+ <contribution location="file:../store-eu/target/tutorial-store-eu.jar" uri="store-eu"/>
+ <contribution location="file:../store-mashup" uri="store-mashup"/>
+ <contribution location="file:../web-services/target/tutorial-web-services.jar" uri="web-services"/>
+ <contribution location="file:../catalog-webapp/target/tutorial-catalog-webapp.war" uri="catalog-webapp"/>
+ <contribution location="file:../catalog-mediation/target/tutorial-catalog-mediation.jar" uri="catalog-mediation"/>
+ <contribution location="file:../catalog-ejb/target/tutorial-catalog-ejb.jar" uri="catalog-ejb"/>
+ <contribution location="file:../domain/cloud" uri="http://tuscany.apache.org/cloud"/>
+</workspace>
diff --git a/java/sca-contrib/tutorials/store/pom.xml b/java/sca-contrib/tutorials/store/pom.xml
new file mode 100644
index 0000000000..69db461cfc
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorials</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <packaging>pom</packaging>
+ <name>Apache Tuscany SCA Store Tutorial</name>
+
+ <profiles>
+ <profile>
+ <id>default</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <modules>
+ <module>domain</module>
+ <module>assets</module>
+ <module>store</module>
+ <module>store-merger</module>
+ <module>store-client</module>
+ <module>store-db</module>
+ <module>store-supplier</module>
+ <module>store-market</module>
+ <module>store-eu</module>
+ <module>store-mashup</module>
+ <module>web-services</module>
+ <module>catalog-webapp</module>
+ <module>catalog-ejb</module>
+ <module>catalog-mediation</module>
+ <module>store-test</module>
+ </modules>
+ </profile>
+
+ </profiles>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/store-client/META-INF/sca-contribution.xml b/java/sca-contrib/tutorials/store/store-client/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..30ffa61ed2
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-client/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:s="http://store">
+ <deployable composite="s:store-client"/>
+</contribution> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/store-client/client/Shopper.java b/java/sca-contrib/tutorials/store/store-client/client/Shopper.java
new file mode 100644
index 0000000000..4e2fa63493
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-client/client/Shopper.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package client;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Shopper {
+
+ String shop(String itemName, int quantity);
+
+}
diff --git a/java/sca-contrib/tutorials/store/store-client/client/ShopperImpl.java b/java/sca-contrib/tutorials/store/store-client/client/ShopperImpl.java
new file mode 100644
index 0000000000..eef92b71f1
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-client/client/ShopperImpl.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package client;
+
+import org.apache.tuscany.sca.data.collection.NotFoundException;
+import org.oasisopen.sca.annotation.Reference;
+
+import services.Cart;
+import services.Catalog;
+import services.Item;
+import services.Total;
+
+public class ShopperImpl implements Shopper {
+
+ @Reference
+ public Catalog catalog;
+
+ @Reference
+ public Cart shoppingCart;
+
+ @Reference
+ public Total shoppingTotal;
+
+ public String shop(String itemName, int quantity) {
+
+ Item[] items = catalog.get();
+ for (Item item: items) {
+ if (item.getName().startsWith(itemName)) {
+
+ try {
+ shoppingCart.delete("");
+ } catch (NotFoundException e) {
+ }
+
+ for (int i = 0; i < quantity; i++) {
+ shoppingCart.post("item" + i, item);
+ }
+
+ return shoppingTotal.getTotal();
+ }
+ }
+
+ return "";
+ }
+
+}
diff --git a/java/sca-contrib/tutorials/store/store-client/launch/LaunchStoreClientNode.java b/java/sca-contrib/tutorials/store/store-client/launch/LaunchStoreClientNode.java
new file mode 100644
index 0000000000..d1a9dfb36c
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-client/launch/LaunchStoreClientNode.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package launch;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.launcher.NodeLauncher;
+
+import client.Shopper;
+
+public class LaunchStoreClientNode {
+
+ public static void main(String[] args) throws Exception {
+ NodeLauncher nodeLauncher = NodeLauncher.newInstance();
+ SCANode storeClientNode = nodeLauncher.createNodeFromURL("http://localhost:9990/node-config/StoreClientNode");
+ storeClientNode.start();
+ SCAClient client = (SCAClient)storeClientNode;
+
+ Shopper shopper = client.getService(Shopper.class, "StoreClient");
+
+ String total = shopper.shop("Orange", 5);
+ System.out.println("Total: " + total);
+
+ storeClientNode.stop();
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/store-client/pom.xml b/java/sca-contrib/tutorials/store/store-client/pom.xml
new file mode 100644
index 0000000000..24909223cb
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-client/pom.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-store-client</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial Online Store Client</name>
+
+ <repositories>
+ <repository>
+ <id>apache.incubator</id>
+ <url>http://people.apache.org/repo/m2-incubating-repository</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-data-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-launcher</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-node-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-atom-abdera</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <sourceDirectory>${basedir}</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ <exclude>**/.*/**</exclude>
+ <exclude>pom.xml</exclude>
+ <exclude>build.xml</exclude>
+ <exclude>target/**</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/store-client/services/Cart.java b/java/sca-contrib/tutorials/store/store-client/services/Cart.java
new file mode 100644
index 0000000000..3fb5439bc3
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-client/services/Cart.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services;
+
+import org.apache.tuscany.sca.data.collection.Collection;
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Cart extends Collection<String, Item> {
+
+}
diff --git a/java/sca-contrib/tutorials/store/store-client/services/Catalog.java b/java/sca-contrib/tutorials/store/store-client/services/Catalog.java
new file mode 100644
index 0000000000..b5e504fe11
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-client/services/Catalog.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Catalog {
+ Item[] get();
+}
diff --git a/java/sca-contrib/tutorials/store/store-client/services/Item.java b/java/sca-contrib/tutorials/store/store-client/services/Item.java
new file mode 100644
index 0000000000..81cefcdbef
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-client/services/Item.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services;
+
+
+public class Item {
+ private String name;
+ private String price;
+ private String origin;
+
+ public Item() {
+ }
+
+ public Item(String name, String price, String origin) {
+ this.name = name;
+ this.price = price;
+ this.origin = origin;
+ }
+
+ public Item(String name, String price) {
+ this.name = name;
+ this.price = price;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getPrice() {
+ return price;
+ }
+
+ public void setPrice(String price) {
+ this.price = price;
+ }
+
+ public String getOrigin() {
+ return origin;
+ }
+
+ public void setOrigin(String origin) {
+ this.origin = origin;
+ }
+
+}
diff --git a/java/sca-contrib/tutorials/store/store-client/services/Total.java b/java/sca-contrib/tutorials/store/store-client/services/Total.java
new file mode 100644
index 0000000000..b77cc1c7ac
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-client/services/Total.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Total {
+
+ String getTotal();
+
+}
diff --git a/java/sca-contrib/tutorials/store/store-client/store-client.composite b/java/sca-contrib/tutorials/store/store-client/store-client.composite
new file mode 100644
index 0000000000..3c5f1637ef
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-client/store-client.composite
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://store"
+ name="store-client">
+
+ <component name="StoreClient">
+ <implementation.java class="client.ShopperImpl"/>
+ <reference name="catalog" target="StoreSupplierCatalog">
+ <binding.ws/>
+ </reference>
+ <reference name="shoppingCart" target="StoreSupplierShoppingCart/Cart">
+ <t:binding.atom/>
+ </reference>
+ <reference name="shoppingTotal" target="StoreSupplierShoppingCart/Total">
+ <binding.ws/>
+ </reference>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/store-db/META-INF/sca-contribution.xml b/java/sca-contrib/tutorials/store/store-db/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..7a5d5613be
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-db/META-INF/sca-contribution.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:s="http://store">
+ <import.java package="services"/>
+ <import.java package="services.merger"/>
+ <import.java package="services.db"/>
+ <import.resource uri="uiservices/store.html"/>
+ <deployable composite="s:store-db"/>
+</contribution> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/store-db/pom.xml b/java/sca-contrib/tutorials/store/store-db/pom.xml
new file mode 100644
index 0000000000..923c4004b8
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-db/pom.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-store-db</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial Online Store Using DB</name>
+
+ <repositories>
+ <repository>
+ <id>apache.incubator</id>
+ <url>http://people.apache.org/repo/m2-incubating-repository</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <sourceDirectory>${basedir}</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ <exclude>**/.*/**</exclude>
+ <exclude>pom.xml</exclude>
+ <exclude>build.xml</exclude>
+ <exclude>target/**</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>sql-maven-plugin</artifactId>
+ <version>1.3</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.3.1.4</version>
+ </dependency>
+ </dependencies>
+
+ <executions>
+ <execution>
+ <id>create-db</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
+ <url>jdbc:derby:${basedir}/target/cart-db;create=true</url>
+ <autocommit>true</autocommit>
+ <onError>continue</onError>
+ <onConnectionError>skip</onConnectionError>
+ <delimiter>;</delimiter>
+ <srcFiles>
+ <srcFile>${basedir}/../assets/services/db/cart.sql</srcFile>
+ </srcFiles>
+ </configuration>
+ </execution>
+
+ <!-- Shutdown DB in order to be able to run unit tests -->
+ <execution>
+ <id>shutdown-database-sothat-test-can-run</id>
+ <phase>process-test-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
+ <url>jdbc:derby:${basedir}/target/cart-db;shutdown=true</url>
+ <skipOnConnectionError>true</skipOnConnectionError>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/store-db/store-db.composite b/java/sca-contrib/tutorials/store/store-db/store-db.composite
new file mode 100644
index 0000000000..03094be5ad
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-db/store-db.composite
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://store"
+ name="store-db">
+
+ <component name="StoreDB">
+ <t:implementation.widget location="uiservices/store.html"/>
+ <service name="Widget">
+ <t:binding.http uri="/ui"/>
+ </service>
+ <reference name="catalog" target="StoreDBCatalog">
+ <t:binding.jsonrpc/>
+ </reference>
+ <reference name="shoppingCart" target="StoreDBShoppingCart/Cart">
+ <t:binding.atom/>
+ </reference>
+ <reference name="shoppingTotal" target="StoreDBShoppingCart/Total">
+ <t:binding.jsonrpc/>
+ </reference>
+ </component>
+
+ <component name="StoreDBCatalog">
+ <implementation.java class="services.merger.MergedCatalogImpl"/>
+ <property name="currencyCode">USD</property>
+ <service name="Catalog">
+ <t:binding.jsonrpc/>
+ </service>
+ <reference name="fruitsCatalog" target="StoreDBFruitsCatalog"/>
+ <reference name="vegetablesCatalog" target="VegetablesCatalogWebService">
+ <binding.ws/>
+ </reference>
+ <reference name="currencyConverter" target="StoreDBCurrencyConverter"/>
+ </component>
+
+ <component name="StoreDBFruitsCatalog">
+ <implementation.java class="services.FruitsCatalogImpl"/>
+ <property name="currencyCode">USD</property>
+ <reference name="currencyConverter" target="StoreDBCurrencyConverter"/>
+ </component>
+
+ <component name="StoreDBShoppingCart">
+ <implementation.java class="services.db.ShoppingCartTableImpl"/>
+ <property name="database">../store-db/target/cart-db</property>
+ <service name="Cart">
+ <t:binding.atom uri="/ShoppingCart/Cart"/>
+ </service>
+ <service name="Total">
+ <t:binding.jsonrpc/>
+ </service>
+ </component>
+
+ <component name="StoreDBCurrencyConverter">
+ <implementation.java class="services.CurrencyConverterImpl"/>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/store-eu/META-INF/sca-contribution.xml b/java/sca-contrib/tutorials/store/store-eu/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..552932b0e7
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-eu/META-INF/sca-contribution.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:s="http://store">
+ <import.java package="services"/>
+ <import.java package="services.merger"/>
+ <import.java package="services.db"/>
+ <deployable composite="s:store-eu"/>
+</contribution> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/store-eu/pom.xml b/java/sca-contrib/tutorials/store/store-eu/pom.xml
new file mode 100644
index 0000000000..f9e9898695
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-eu/pom.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-store-eu</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial EU Online Store</name>
+
+ <repositories>
+ <repository>
+ <id>apache.incubator</id>
+ <url>http://people.apache.org/repo/m2-incubating-repository</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <sourceDirectory>${basedir}</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ <exclude>**/.*/**</exclude>
+ <exclude>pom.xml</exclude>
+ <exclude>build.xml</exclude>
+ <exclude>target/**</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>sql-maven-plugin</artifactId>
+ <version>1.3</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.3.1.4</version>
+ </dependency>
+ </dependencies>
+
+ <executions>
+ <execution>
+ <id>create-db</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
+ <url>jdbc:derby:${basedir}/target/cart-eu-db;create=true</url>
+ <autocommit>true</autocommit>
+ <onError>continue</onError>
+ <delimiter>;</delimiter>
+ <srcFiles>
+ <srcFile>${basedir}/../assets/services/db/cart.sql</srcFile>
+ </srcFiles>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/store-eu/store-eu.composite b/java/sca-contrib/tutorials/store/store-eu/store-eu.composite
new file mode 100644
index 0000000000..a0b8b50975
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-eu/store-eu.composite
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://store"
+ name="store-eu">
+
+ <component name="StoreEU">
+ <t:implementation.widget location="uiservices/store-eu.html"/>
+ <service name="Widget">
+ <t:binding.http uri="/ui"/>
+ </service>
+ <reference name="catalog" target="StoreEUCatalog">
+ <t:binding.jsonrpc/>
+ </reference>
+ <reference name="shoppingCart" target="StoreEUShoppingCart/Cart">
+ <t:binding.atom/>
+ </reference>
+ <reference name="shoppingTotal" target="StoreEUShoppingCart/Total">
+ <t:binding.jsonrpc/>
+ </reference>
+ </component>
+
+ <component name="StoreEUCatalog">
+ <implementation.java class="services.merger.MergedCatalogImpl"/>
+ <property name="currencyCode">EUR</property>
+ <service name="Catalog">
+ <t:binding.jsonrpc/>
+ <binding.ws uri="/CatalogWebService"/>
+ </service>
+ <reference name="fruitsCatalog" target="FruitsCatalogWebService">
+ <binding.ws/>
+ </reference>
+ <reference name="vegetablesCatalog" target="VegetablesCatalogWebService">
+ <binding.ws/>
+ </reference>
+ <reference name="currencyConverter" target="CurrencyConverterWebService">
+ <binding.ws/>
+ </reference>
+ </component>
+
+ <component name="StoreEUShoppingCart">
+ <implementation.java class="services.db.ShoppingCartTableImpl"/>
+ <property name="database">../store-eu/target/cart-eu-db</property>
+ <service name="Cart">
+ <t:binding.atom uri="/ShoppingCart/Cart"/>
+ </service>
+ <service name="Total">
+ <t:binding.jsonrpc/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/store-eu/uiservices/store-eu.html b/java/sca-contrib/tutorials/store/store-eu/uiservices/store-eu.html
new file mode 100644
index 0000000000..4569b76b3f
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-eu/uiservices/store-eu.html
@@ -0,0 +1,162 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<html>
+<head>
+<title>EU Store</title>
+
+<script type="text/javascript" src="store-eu.js"></script>
+
+<script language="JavaScript">
+
+ //@Reference
+ var catalog = new Reference("catalog");
+
+ //@Reference
+ var shoppingCart = new Reference("shoppingCart");
+
+ //@Reference
+ var shoppingTotal = new Reference("shoppingTotal");
+
+ var catalogItems;
+
+ function catalog_getResponse(items, exception) {
+ if(exception){
+ alert(exception.message);
+ return;
+ }
+ var catalog = "";
+ for (var i=0; i<items.length; i++) {
+ var item = items[i].name + ' - ' + items[i].price;
+ catalog += '<input name="items" type="checkbox" value="' +
+ item + '">' + item + ' <br>';
+ }
+ document.getElementById('catalog').innerHTML=catalog;
+ catalogItems = items;
+ }
+
+ function shoppingCart_getResponse(feed) {
+ if (feed != null) {
+ var entries = feed.getElementsByTagName("entry");
+ var list = "";
+ for (var i=0; i<entries.length; i++) {
+ var content = entries[i].getElementsByTagName("content")[0];
+ var name = content.getElementsByTagName("name")[0].firstChild.nodeValue;
+ var price = content.getElementsByTagName("price")[0].firstChild.nodeValue;
+ list += name + ' - ' + price + ' <br>';
+ }
+ document.getElementById("shoppingCart").innerHTML = list;
+
+ if (entries.length != 0) {
+ try {
+ shoppingTotal.getTotal(shoppingTotal_getTotalResponse);
+ }
+ carch(e) {
+ alert(e);
+ }
+
+ }
+ }
+ }
+
+ function shoppingTotal_getTotalResponse(total,exception) {
+ if(exception){
+ alert(exception.message);
+ return;
+ }
+ document.getElementById('total').innerHTML = total;
+ }
+
+ function shoppingCart_postResponse(entry) {
+ shoppingCart.get("", shoppingCart_getResponse);
+ }
+
+ function addToCart() {
+ var items = document.catalogForm.items;
+ var j = 0;
+ for (var i=0; i<items.length; i++)
+ if (items[i].checked) {
+ var entry = '<entry xmlns="http://www.w3.org/2005/Atom"><title>item</title><content type="text/xml">' +
+ '<Item xmlns="http://services/">' +
+ '<name xmlns="">' + catalogItems[i].name + '</name>' + '<price xmlns="">' + catalogItems[i].price + '</price>' +
+ '</Item>' + '</content></entry>';
+ shoppingCart.post(entry, shoppingCart_postResponse);
+ items[i].checked = false;
+ }
+ }
+ function checkoutCart() {
+ document.getElementById('store').innerHTML='<h2>' +
+ 'Thanks for Shopping With Us!</h2>'+
+ '<h2>Your Order</h2>'+
+ '<form name="orderForm">'+
+ document.getElementById('shoppingCart').innerHTML+
+ '<br>'+
+ document.getElementById('total').innerHTML+
+ '<br>'+
+ '<br>'+
+ '<input type="submit" value="Continue Shopping">'+
+ '</form>';
+ shoppingCart.del("", null);
+ }
+ function deleteCart() {
+ shoppingCart.del("", null);
+ document.getElementById('shoppingCart').innerHTML = "";
+ document.getElementById('total').innerHTML = "";
+ }
+
+ function init() {
+ try {
+ catalog.get(catalog_getResponse);
+ shoppingCart.get("", shoppingCart_getResponse);
+ }
+ catch(e) {
+ alert(e);
+ }
+
+ }
+
+</script>
+
+</head>
+
+<body onload="init()">
+<h1>Store</h1>
+ <p>Fruits and Vegetables - Fruits et Legumes - Obst und Gemuese
+ <div id="store">
+ <h2>Catalog</h2>
+ <form name="catalogForm">
+ <div id="catalog" ></div>
+ <br>
+ <input type="button" onClick="addToCart()" value="Add to Cart">
+ </form>
+
+ <br>
+
+ <h2>Your Shopping Cart</h2>
+ <form name="shoppingCartForm">
+ <div id="shoppingCart"></div>
+ <br>
+ <div id="total"></div>
+ <br>
+ <input type="button" onClick="checkoutCart()" value="Checkout">
+ <input type="button" onClick="deleteCart()" value="Empty">
+ <a href="../ShoppingCart/Cart/">(feed)</a>
+ </form>
+ </div>
+</body>
+</html>
diff --git a/java/sca-contrib/tutorials/store/store-market/META-INF/sca-contribution.xml b/java/sca-contrib/tutorials/store/store-market/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..491230c952
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-market/META-INF/sca-contribution.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:s="http://store">
+ <import.java package="services" />
+ <import.java package="services.market" />
+ <import.resource uri="uiservices/store.html"/>
+ <deployable composite="s:store-market" />
+</contribution> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/store-market/build.xml b/java/sca-contrib/tutorials/store/store-market/build.xml
new file mode 100644
index 0000000000..94c8b2cad8
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-market/build.xml
@@ -0,0 +1,54 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="tutorial-store-market" default="compile">
+
+ <target name="compile">
+ <mkdir dir="target/classes"/>
+ <javac destdir="target/classes" debug="on" source="1.5" target="1.5">
+ <src path="."/>
+ <classpath>
+ <fileset refid="tuscany.jars"/>
+ <fileset refid="3rdparty.jars"/>
+ </classpath>
+ </javac>
+ <copy todir="target/classes">
+ <fileset dir="." excludes="**/*.java, pom.xml, build.xml, target"/>
+ </copy>
+ <jar destfile="target/tutorial-store-market.jar" basedir="target/classes">
+ <manifest>
+ </manifest>
+ </jar>
+ </target>
+
+ <target name="package" depends="compile"/>
+
+ <target name="clean">
+ <delete includeemptydirs="true">
+ <fileset dir="target"/>
+ </delete>
+ </target>
+
+ <fileset id="tuscany.jars" dir="../../modules">
+ <include name="tuscany-sca-api-2.0-SNAPSHOT.jar"/>
+ </fileset>
+ <fileset id="3rdparty.jars" dir="../../lib">
+ </fileset>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/store-market/pom.xml b/java/sca-contrib/tutorials/store/store-market/pom.xml
new file mode 100644
index 0000000000..5b2aa91bda
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-market/pom.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-store-market</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial Marketplace Online Store</name>
+
+ <repositories>
+ <repository>
+ <id>apache.incubator</id>
+ <url>http://people.apache.org/repo/m2-incubating-repository</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <sourceDirectory>${basedir}</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ <exclude>**/.*/**</exclude>
+ <exclude>pom.xml</exclude>
+ <exclude>build.xml</exclude>
+ <exclude>target/**</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/store-market/store-market.composite b/java/sca-contrib/tutorials/store/store-market/store-market.composite
new file mode 100644
index 0000000000..1c225e6c07
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-market/store-market.composite
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://store"
+ name="store-market">
+
+ <component name="StoreMarket">
+ <t:implementation.widget location="uiservices/store.html"/>
+ <service name="Widget">
+ <t:binding.http uri="/ui"/>
+ </service>
+ <reference name="catalog" target="StoreMarketCatalog">
+ <t:binding.jsonrpc/>
+ </reference>
+ <reference name="shoppingCart" target="StoreMarketShoppingCart/Cart">
+ <t:binding.atom/>
+ </reference>
+ <reference name="shoppingTotal" target="StoreMarketShoppingCart/Total">
+ <t:binding.jsonrpc/>
+ </reference>
+ </component>
+
+ <component name="StoreMarketCatalog">
+ <implementation.java class="services.market.MarketCatalogImpl"/>
+ <property name="currencyCode">USD</property>
+ <service name="Catalog">
+ <t:binding.jsonrpc/>
+ </service>
+ <reference name="goodsCatalog" multiplicity="0..n" target="VegetablesCatalogWebService FruitsCatalogWebService" >
+ <binding.ws />
+ </reference>
+ <reference name="currencyConverter" target="StoreMarketCurrencyConverter"/>
+
+ </component>
+
+ <component name="StoreMarketShoppingCart">
+ <implementation.java class="services.ShoppingCartImpl"/>
+ <service name="Cart">
+ <t:binding.atom uri="/ShoppingCart/Cart"/>
+ </service>
+ <service name="Total">
+ <t:binding.jsonrpc/>
+ </service>
+ </component>
+
+ <component name="StoreMarketCurrencyConverter">
+ <implementation.java class="services.CurrencyConverterImpl"/>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/store-mashup/META-INF/sca-contribution.xml b/java/sca-contrib/tutorials/store/store-mashup/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..4ec08403e5
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-mashup/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:s="http://store">
+ <import.java package="services"/>
+ <import.java package="services.map"/>
+ <deployable composite="s:store-mashup"/>
+</contribution>
diff --git a/java/sca-contrib/tutorials/store/store-mashup/build-openajax.xml b/java/sca-contrib/tutorials/store/store-mashup/build-openajax.xml
new file mode 100644
index 0000000000..4668dedc1d
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-mashup/build-openajax.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project name="OpenAjaxZipInstaller">
+
+ <property name="openajax.version" value="1.0_build117_v1.0"/>
+ <property name="unpack.location" value="${basedir}/openajax"/>
+
+ <target name="check-openajax-installed">
+ <condition property="already.installed" >
+ <available file="${localRepository}/openajax/openajax/${openajax.version}/openajax-${openajax.version}.zip"/>
+ </condition>
+ <condition property="maven.suffix" value="">
+ <os family="unix"/>
+ </condition>
+ <condition property="maven.suffix" value=".bat">
+ <os family="windows"/>
+ </condition>
+ </target>
+
+
+ <target name="check-openajax-unpacked">
+ <condition property="already.unpacked" >
+ <available file="${unpack.location}"/>
+ </condition>
+ </target>
+
+ <target name="install-openajax" depends="check-openajax-installed" unless="already.installed">
+ <mkdir dir="${basedir}/target/openajax-download/"/>
+ <get src="http://downloads.sourceforge.net/openajaxallianc/OpenAjaxHub${openajax.version}.zip"
+ dest="${basedir}/target/openajax-download/openajax-${openajax.version}.zip"
+ verbose="true"
+ usetimestamp="true"/>
+ <exec executable="mvn${maven.suffix}" dir="${basedir}" failonerror="false">
+ <arg line="install:install-file -DgroupId=openajax -DartifactId=openajax -Dversion=${openajax.version} -Dpackaging=zip -DgeneratePom=true -Dfile=${basedir}/target/openajax-download/openajax-${openajax.version}.zip"/>
+ </exec>
+ </target>
+
+ <target name="install-openajax-nomaven" depends="check-openajax-installed" unless="already.installed">
+ <mkdir dir="${basedir}/target/openajax-download/"/>
+ <get src="http://downloads.sourceforge.net/openajaxallianc/OpenAjaxHub${openajax.version}.zip"
+ dest="${basedir}/target/openajax-download/openajax-${openajax.version}.zip"
+ verbose="true"
+ usetimestamp="true"/>
+ <copy file="${basedir}/target/openajax-download/openajax-${openajax.version}.zip"
+ tofile="${localRepository}/openajax/openajax/${openajax.version}/openajax-${openajax.version}.zip"/>
+ </target>
+
+
+ <target name="unpack-openajax-files" depends="check-openajax-installed, check-openajax-unpacked" unless="already.unpacked">
+ <fail message="openajax zip file not installed in local repository: ${localRepository}" unless="already.installed"/>
+ <mkdir dir="${basedir}/target/openajax-unpack-temp/"/>
+ <unzip src="${localRepository}/openajax/openajax/${openajax.version}/openajax-${openajax.version}.zip"
+ dest="${basedir}/target/openajax-unpack-temp/"
+ overwrite="false">
+ <patternset>
+ <include name="OpenAjaxHub${openajax.version}/release/**"/>
+ </patternset>
+ </unzip>
+ <move file="${basedir}/target/openajax-unpack-temp/OpenAjaxHub${openajax.version}/release"
+ tofile="${unpack.location}"
+ verbose="true"/>
+ <delete dir="${basedir}/target/openajax-unpack-temp/"/>
+ </target>
+
+
+ <target name="clean-openajax-files">
+ <delete dir="${unpack.location}"/>
+ </target>
+</project>
diff --git a/java/sca-contrib/tutorials/store/store-mashup/gadget/map-gadget.html b/java/sca-contrib/tutorials/store/store-mashup/gadget/map-gadget.html
new file mode 100644
index 0000000000..d76bcad91b
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-mashup/gadget/map-gadget.html
@@ -0,0 +1,50 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<html>
+<head>
+<title>Map</title>
+
+<script type="text/javascript" src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA"></script>
+
+<script language="JavaScript">
+
+ function coordsChangedCallback(eventname, publisherData, subscriberData) {
+ var coords = publisherData.split(',');
+ if (coords.length >= 2) {
+ subscriberData.setCenter(new GLatLng(coords[0], coords[1]));
+ }
+ }
+
+ function init() {
+ if (GBrowserIsCompatible()) {
+ var map = new GMap2(document.getElementById("map_canvas"));
+ map.setCenter(new GLatLng(37.4419, -122.1419), 13);
+
+ if (window.top.hub != null) {
+ window.top.hub.subscribe("geospatial.coords", coordsChangedCallback, null, map);
+ }
+ }
+ }
+</script>
+</head>
+
+<body onload="init()">
+ <div id="map_canvas" style="width: 100%; height: 100%"></div>
+</body>
+</html>
diff --git a/java/sca-contrib/tutorials/store/store-mashup/gadget/store-gadget.html b/java/sca-contrib/tutorials/store/store-mashup/gadget/store-gadget.html
new file mode 100644
index 0000000000..c09b9d28c8
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-mashup/gadget/store-gadget.html
@@ -0,0 +1,166 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<html>
+<head>
+<title>Store</title>
+
+<script type="text/javascript" src="/gadget/store/store-gadget.js"></script>
+
+<script language="JavaScript">
+
+ //@Reference
+ var catalog = new Reference("catalog");
+
+ //@Reference
+ var shoppingCart = new Reference("shoppingCart");
+
+ //@Reference
+ var shoppingTotal = new Reference("shoppingTotal");
+
+ var catalogItems;
+
+ function catalog_getResponse(items,exception) {
+ if(exception){
+ alert(exception.message);
+ return;
+ }
+ var catalog = "";
+ for (var i=0; i<items.length; i++) {
+ var item = items[i].name + ' - ' + items[i].price;
+ catalog += '<input name="items" type="checkbox" onClick="selectItem(' + i + ')" value="' +
+ item + '">' + item + ' <br>';
+ }
+ document.getElementById('catalog').innerHTML=catalog;
+ catalogItems = items;
+ }
+
+ function shoppingCart_getResponse(feed) {
+ if (feed != null) {
+ var entries = feed.getElementsByTagName("entry");
+ var list = "";
+ for (var i=0; i<entries.length; i++) {
+ var content = entries[i].getElementsByTagName("content")[0];
+ var name = content.getElementsByTagName("name")[0].firstChild.nodeValue;
+ var price = content.getElementsByTagName("price")[0].firstChild.nodeValue;
+ list += name + ' - ' + price + ' <br>';
+ }
+ document.getElementById("shoppingCart").innerHTML = list;
+
+ if (entries.length != 0) {
+ try {
+ shoppingTotal.getTotal(shoppingTotal_getTotalResponse);
+ }
+ carch(e) {
+ alert(e);
+ }
+ }
+ }
+ }
+
+ function shoppingTotal_getTotalResponse(total,exception) {
+ if(exception){
+ alert(exception.message);
+ return;
+ }
+ document.getElementById('total').innerHTML = total;
+ }
+
+ function shoppingCart_postResponse(entry) {
+ shoppingCart.get("", shoppingCart_getResponse);
+ }
+
+ function addToCart() {
+ var items = document.catalogForm.items;
+ var j = 0;
+ for (var i=0; i<items.length; i++)
+ if (items[i].checked) {
+ var entry = '<entry xmlns="http://www.w3.org/2005/Atom"><title>item</title><content type="text/xml">' +
+ '<Item xmlns="http://services/">' +
+ '<name xmlns="">' + catalogItems[i].name + '</name>' + '<price xmlns="">' + catalogItems[i].price + '</price>' +
+ '</Item>' + '</content></entry>';
+ shoppingCart.post(entry, shoppingCart_postResponse);
+ items[i].checked = false;
+ }
+ }
+ function checkoutCart() {
+ document.getElementById('store').innerHTML='<h2>' +
+ 'Thanks for Shopping With Us!</h2>'+
+ '<h2>Your Order</h2>'+
+ '<form name="orderForm" action="/gadget/store">'+
+ document.getElementById('shoppingCart').innerHTML+
+ '<br>'+
+ document.getElementById('total').innerHTML+
+ '<br>'+
+ '<br>'+
+ '<input type="submit" value="Continue Shopping">'+
+ '</form>';
+ shoppingCart.del("", null);
+ }
+ function deleteCart() {
+ shoppingCart.del("", null);
+ document.getElementById('shoppingCart').innerHTML = "";
+ document.getElementById('total').innerHTML = "";
+ }
+
+ function selectItem(i) {
+ var item = catalogItems[i];
+ if (window.top.hub != null) {
+ window.top.hub.publish("geospatial.coords", item.origin);
+ }
+ }
+
+ function init() {
+ try {
+ catalog.get(catalog_getResponse);
+ shoppingCart.get("", shoppingCart_getResponse);
+ }
+ catch(e) {
+ alert(e);
+ }
+ }
+
+</script>
+
+</head>
+
+<body onload="init()">
+<h1>Store</h1>
+ <div id="store">
+ <h2>Catalog</h2>
+ <form name="catalogForm">
+ <div id="catalog" ></div>
+ <br>
+ <input type="button" onClick="addToCart()" value="Add to Cart">
+ </form>
+
+ <br>
+
+ <h2>Your Shopping Cart</h2>
+ <form name="shoppingCartForm">
+ <div id="shoppingCart"></div>
+ <br>
+ <div id="total"></div>
+ <br>
+ <input type="button" onClick="checkoutCart()" value="Checkout">
+ <input type="button" onClick="deleteCart()" value="Empty">
+ <a href="/ShoppingCart/Cart/" target="_top">(feed)</a>
+ </form>
+ </div>
+</body>
+</html>
diff --git a/java/sca-contrib/tutorials/store/store-mashup/map-gadget.composite b/java/sca-contrib/tutorials/store/store-mashup/map-gadget.composite
new file mode 100644
index 0000000000..77db2edbf2
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-mashup/map-gadget.composite
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://store"
+ name="map-gadget">
+
+ <component name="MapGadget">
+ <t:implementation.widget location="gadget/map-gadget.html"/>
+ <service name="Widget">
+ <t:binding.http uri="/gadget/map"/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/store-mashup/mashup/store-mash.html b/java/sca-contrib/tutorials/store/store-mashup/mashup/store-mash.html
new file mode 100644
index 0000000000..aab14bc065
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-mashup/mashup/store-mash.html
@@ -0,0 +1,70 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<html>
+<head>
+<title>Store Mashup</title>
+
+<script type="text/javascript" src='/openajax/OpenAjax.js'></script>
+
+<script type="text/javascript" src="/mashup/store-mash.js"></script>
+
+<script language="JavaScript">
+
+ //@Reference
+ var storeGadget = new Reference("storeGadget");
+
+ //@Reference
+ var mapGadget = new Reference("mapGadget");
+
+ function storeGadget_getResponse(gadget) {
+ var gadget1 = document.getElementById('gadget1').contentDocument;
+ gadget1.open();
+ gadget1.write(gadget);
+ gadget1.close();
+ }
+
+ function mapGadget_getResponse(gadget) {
+ var gadget2 = document.getElementById('gadget2').contentDocument;
+ gadget2.open();
+ gadget2.write(gadget);
+ gadget2.close();
+ }
+
+ function init() {
+ window.top.hub = OpenAjax.hub;
+
+ storeGadget.get('', storeGadget_getResponse);
+ mapGadget.get('', mapGadget_getResponse);
+ }
+
+</script>
+</head>
+
+<body onload="init()">
+<h1>Store Mashup</h1>
+<br>
+<table border="0" cellpadding="0" cellspacing="2">
+ <tr>
+ <td><iframe id="gadget1" style='overflow:hidden;width:400px;height:500px;border:1px solid black;'></iframe></td>
+ <td><iframe id="gadget2" style='overflow:hidden;width:400px;height:500px;border:1px solid black;'></iframe></td>
+ </tr>
+</table>
+
+</body>
+</html>
diff --git a/java/sca-contrib/tutorials/store/store-mashup/pom.xml b/java/sca-contrib/tutorials/store/store-mashup/pom.xml
new file mode 100644
index 0000000000..1bfaff5087
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-mashup/pom.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-store-mashup</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial Online Store Mashup</name>
+
+ <repositories>
+ <repository>
+ <id>apache.incubator</id>
+ <url>http://people.apache.org/repo/m2-incubating-repository</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <sourceDirectory>${basedir}</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ <exclude>**/.*/**</exclude>
+ <exclude>pom.xml</exclude>
+ <exclude>build.xml</exclude>
+ <exclude>target/**</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <dependencies>
+ <dependency>
+ <groupId>ant</groupId>
+ <artifactId>ant-trax</artifactId>
+ <version>1.6.5</version>
+ </dependency>
+ </dependencies>
+
+ <executions>
+ <execution>
+ <id>install-openajax</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <tasks>
+ <ant antfile="./build-openajax.xml" target="install-openajax">
+ <property name="localRepository" value="${settings.localRepository}"/>
+ </ant>
+ </tasks>
+ </configuration>
+ </execution>
+ <execution>
+ <id>copy-openajax-files</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <tasks>
+ <ant antfile="./build-openajax.xml" target="unpack-openajax-files">
+ <property name="localRepository" value="${settings.localRepository}"/>
+ <property name="artifactId" value="${artifactId}"/>
+ </ant>
+ </tasks>
+ </configuration>
+ </execution>
+ <execution>
+ <id>clean-openajax-files</id>
+ <phase>clean</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <tasks>
+ <ant antfile="./build-openajax.xml" target="clean-openajax-files">
+ <property name="localRepository" value="${settings.localRepository}"/>
+ <property name="artifactId" value="${artifactId}"/>
+ </ant>
+ </tasks>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/store-mashup/store-gadget.composite b/java/sca-contrib/tutorials/store/store-mashup/store-gadget.composite
new file mode 100644
index 0000000000..7c10651e52
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-mashup/store-gadget.composite
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://store"
+ name="store-gadget">
+
+ <component name="StoreGadget">
+ <t:implementation.widget location="gadget/store-gadget.html"/>
+ <service name="Widget">
+ <t:binding.http uri="/gadget/store"/>
+ </service>
+ <reference name="catalog" target="StoreGadgetCatalog">
+ <t:binding.jsonrpc/>
+ </reference>
+ <reference name="shoppingCart" target="StoreGadgetShoppingCart/Cart">
+ <t:binding.atom/>
+ </reference>
+ <reference name="shoppingTotal" target="StoreGadgetShoppingCart/Total">
+ <t:binding.jsonrpc/>
+ </reference>
+ </component>
+
+ <component name="StoreGadgetCatalog">
+ <implementation.java class="services.map.FruitsCatalogImpl"/>
+ <property name="currencyCode">USD</property>
+ <service name="Catalog">
+ <t:binding.jsonrpc/>
+ </service>
+ <reference name="currencyConverter" target="StoreGadgetCurrencyConverter"/>
+ </component>
+
+ <component name="StoreGadgetShoppingCart">
+ <implementation.java class="services.ShoppingCartImpl"/>
+ <service name="Cart">
+ <t:binding.atom uri="/ShoppingCart/Cart"/>
+ </service>
+ <service name="Total">
+ <t:binding.jsonrpc/>
+ </service>
+ </component>
+
+ <component name="StoreGadgetCurrencyConverter">
+ <implementation.java class="services.CurrencyConverterImpl"/>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/store-mashup/store-mashup.composite b/java/sca-contrib/tutorials/store/store-mashup/store-mashup.composite
new file mode 100644
index 0000000000..84e4933e63
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-mashup/store-mashup.composite
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://store"
+ xmlns:s="http://store"
+ name="store-mashup">
+
+ <include name="s:store-gadget"/>
+ <include name="s:map-gadget"/>
+
+ <component name="StoreMashup">
+ <t:implementation.widget location="mashup/store-mash.html"/>
+ <service name="Widget">
+ <t:binding.http uri="/mashup"/>
+ </service>
+ <reference name="storeGadget" target="StoreGadget">
+ <t:binding.http/>
+ </reference>
+ <reference name="mapGadget" target="MapGadget">
+ <t:binding.http/>
+ </reference>
+ </component>
+
+ <component name="openajax">
+ <t:implementation.resource location="openajax"/>
+ <service name="Resource">
+ <t:binding.http uri="/openajax"/>
+ </service>
+ </component>
+</composite>
diff --git a/java/sca-contrib/tutorials/store/store-merger/META-INF/sca-contribution.xml b/java/sca-contrib/tutorials/store/store-merger/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..700a84736c
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-merger/META-INF/sca-contribution.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:s="http://store">
+ <import.java package="services" />
+ <import.java package="services.merger" />
+ <import.resource uri="uiservices/store.html"/>
+ <deployable composite="s:store-merger" />
+</contribution> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/store-merger/pom.xml b/java/sca-contrib/tutorials/store/store-merger/pom.xml
new file mode 100644
index 0000000000..224acad9a2
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-merger/pom.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-store-merger</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial Merger Online Store</name>
+
+ <repositories>
+ <repository>
+ <id>apache.incubator</id>
+ <url>http://people.apache.org/repo/m2-incubating-repository</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <sourceDirectory>${basedir}</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ <exclude>**/.*/**</exclude>
+ <exclude>pom.xml</exclude>
+ <exclude>build.xml</exclude>
+ <exclude>target/**</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/store-merger/store-merger.composite b/java/sca-contrib/tutorials/store/store-merger/store-merger.composite
new file mode 100644
index 0000000000..76d77dc693
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-merger/store-merger.composite
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://store"
+ name="store-merger">
+
+ <component name="StoreMerger">
+ <t:implementation.widget location="uiservices/store.html"/>
+ <service name="Widget">
+ <t:binding.http uri="/ui"/>
+ </service>
+ <reference name="catalog" target="StoreMergerCatalog">
+ <t:binding.jsonrpc/>
+ </reference>
+ <reference name="shoppingCart" target="StoreMergerShoppingCart/Cart">
+ <t:binding.atom/>
+ </reference>
+ <reference name="shoppingTotal" target="StoreMergerShoppingCart/Total">
+ <t:binding.jsonrpc/>
+ </reference>
+ </component>
+
+ <component name="StoreMergerCatalog">
+ <implementation.java class="services.merger.MergedCatalogImpl"/>
+ <property name="currencyCode">USD</property>
+ <service name="Catalog">
+ <t:binding.jsonrpc/>
+ </service>
+ <reference name="currencyConverter" target="StoreMergerCurrencyConverter"/>
+ <reference name="fruitsCatalog" target="StoreMergerFruitsCatalog"/>
+ <!-- <reference name="vegetablesCatalog" target="MediatedVegetablesCatalog"> -->
+ <reference name="vegetablesCatalog" target="VegetablesCatalogWebService">
+ <binding.ws/>
+ </reference>
+ </component>
+
+ <component name="StoreMergerFruitsCatalog">
+ <implementation.java class="services.FruitsCatalogImpl"/>
+ <property name="currencyCode">USD</property>
+ <reference name="currencyConverter" target="StoreMergerCurrencyConverter"/>
+ </component>
+
+ <component name="StoreMergerShoppingCart">
+ <implementation.java class="services.ShoppingCartImpl"/>
+ <service name="Cart">
+ <t:binding.atom uri="/ShoppingCart/Cart"/>
+ </service>
+ <service name="Total">
+ <t:binding.jsonrpc/>
+ </service>
+ </component>
+
+ <component name="StoreMergerCurrencyConverter">
+ <implementation.java class="services.CurrencyConverterImpl"/>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/store-supplier/META-INF/sca-contribution.xml b/java/sca-contrib/tutorials/store/store-supplier/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..a75087aca1
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-supplier/META-INF/sca-contribution.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:s="http://store">
+ <import.java package="services"/>
+ <import.java package="services.merger"/>
+ <import.java package="services.db"/>
+ <import.resource uri="uiservices/store.html"/>
+ <deployable composite="s:store-supplier"/>
+</contribution> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/store-supplier/pom.xml b/java/sca-contrib/tutorials/store/store-supplier/pom.xml
new file mode 100644
index 0000000000..0aed45f30d
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-supplier/pom.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-store-supplier</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial Supplier Online Store</name>
+
+ <repositories>
+ <repository>
+ <id>apache.incubator</id>
+ <url>http://people.apache.org/repo/m2-incubating-repository</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <sourceDirectory>${basedir}</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ <exclude>**/.*/**</exclude>
+ <exclude>pom.xml</exclude>
+ <exclude>build.xml</exclude>
+ <exclude>target/**</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>sql-maven-plugin</artifactId>
+ <version>1.3</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.3.1.4</version>
+ </dependency>
+ </dependencies>
+
+ <executions>
+ <execution>
+ <id>create-db</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
+ <url>jdbc:derby:${basedir}/target/cart-db;create=true</url>
+ <autocommit>true</autocommit>
+ <onError>continue</onError>
+ <onConnectionError>skip</onConnectionError>
+ <delimiter>;</delimiter>
+ <srcFiles>
+ <srcFile>${basedir}/../assets/services/db/cart.sql</srcFile>
+ </srcFiles>
+ </configuration>
+ </execution>
+
+ <!-- Shutdown DB in order to be able to run unit tests -->
+ <execution>
+ <id>shutdown-database-sothat-test-can-run</id>
+ <phase>process-test-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
+ <url>jdbc:derby:${basedir}/target/cart-db;shutdown=true</url>
+ <skipOnConnectionError>true</skipOnConnectionError>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/store-supplier/store-supplier.composite b/java/sca-contrib/tutorials/store/store-supplier/store-supplier.composite
new file mode 100644
index 0000000000..525bc889cb
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-supplier/store-supplier.composite
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://store"
+ name="store-supplier">
+
+ <component name="StoreSupplier">
+ <t:implementation.widget location="uiservices/store.html"/>
+ <service name="Widget">
+ <t:binding.http uri="/ui"/>
+ </service>
+ <reference name="catalog" target="StoreSupplierCatalog">
+ <t:binding.jsonrpc/>
+ </reference>
+ <reference name="shoppingCart" target="StoreSupplierShoppingCart/Cart">
+ <t:binding.atom/>
+ </reference>
+ <reference name="shoppingTotal" target="StoreSupplierShoppingCart/Total">
+ <t:binding.jsonrpc/>
+ </reference>
+ </component>
+
+ <component name="StoreSupplierCatalog">
+ <implementation.java class="services.merger.MergedCatalogImpl"/>
+ <property name="currencyCode">USD</property>
+ <service name="Catalog">
+ <t:binding.jsonrpc/>
+ <binding.ws uri="/CatalogWebService"/>
+ </service>
+ <reference name="fruitsCatalog" target="StoreSupplierFruitsCatalog"/>
+ <reference name="vegetablesCatalog" target="VegetablesCatalogWebService">
+ <binding.ws/>
+ </reference>
+ <reference name="currencyConverter" target="StoreSupplierCurrencyConverter"/>
+ </component>
+
+ <component name="StoreSupplierFruitsCatalog">
+ <implementation.java class="services.FruitsCatalogImpl"/>
+ <property name="currencyCode">USD</property>
+ <reference name="currencyConverter" target="StoreSupplierCurrencyConverter"/>
+ </component>
+
+ <component name="StoreSupplierShoppingCart">
+ <implementation.java class="services.db.ShoppingCartTableImpl"/>
+ <property name="database">../store-supplier/target/cart-db</property>
+ <service name="Cart">
+ <t:binding.atom uri="/ShoppingCart/Cart"/>
+ </service>
+ <service name="Total">
+ <t:binding.jsonrpc/>
+ <binding.ws uri="/ShoppinCartTotalWebService"/>
+ </service>
+ </component>
+
+ <component name="StoreSupplierCurrencyConverter">
+ <implementation.java class="services.CurrencyConverterImpl"/>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/store-test/META-INF/sca-contribution.xml b/java/sca-contrib/tutorials/store/store-test/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..a75087aca1
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-test/META-INF/sca-contribution.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:s="http://store">
+ <import.java package="services"/>
+ <import.java package="services.merger"/>
+ <import.java package="services.db"/>
+ <import.resource uri="uiservices/store.html"/>
+ <deployable composite="s:store-supplier"/>
+</contribution> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/store-test/client/Shopper.java b/java/sca-contrib/tutorials/store/store-test/client/Shopper.java
new file mode 100644
index 0000000000..4e2fa63493
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-test/client/Shopper.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package client;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Shopper {
+
+ String shop(String itemName, int quantity);
+
+}
diff --git a/java/sca-contrib/tutorials/store/store-test/pom.xml b/java/sca-contrib/tutorials/store/store-test/pom.xml
new file mode 100644
index 0000000000..29f9b04550
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-test/pom.xml
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-store-test</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial Integration Test</name>
+
+ <repositories>
+ <repository>
+ <id>apache.incubator</id>
+ <url>http://people.apache.org/repo/m2-incubating-repository</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-data-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-launcher</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-domain-manager</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-node-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-widget-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-resource-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-atom-abdera</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-http-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-sca-axis2</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ejb-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-ejb</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.3.1.4</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tutorial-store-supplier</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <testSourceDirectory>${basedir}</testSourceDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <excludes>
+ <exclude>**/.*/**</exclude>
+ <exclude>**/*.java</exclude>
+ <exclude>pom.xml</exclude>
+ <exclude>build.xml</exclude>
+ <exclude>target/**</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/store-test/test/StoreSupplierTestCase.java b/java/sca-contrib/tutorials/store/store-test/test/StoreSupplierTestCase.java
new file mode 100644
index 0000000000..5efec4ee2c
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store-test/test/StoreSupplierTestCase.java
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package test;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.launcher.DomainManagerLauncher;
+import org.apache.tuscany.sca.node.launcher.NodeLauncher;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import client.Shopper;
+
+
+/**
+ * Test the store-merger.
+ *
+ * @version $Rev$ $Date$
+ */
+public class StoreSupplierTestCase {
+
+ private SCANode domainManager;
+ private SCANode storeSupplierNode;
+ private SCANode storeCatalogsNode;
+ private SCANode storeClientNode;
+
+ @Before
+ public void setup() throws Exception {
+ String baseDir = System.getProperty("basedir");
+ String domainDir = baseDir != null? baseDir + "/" + "../domain" : "../domain";
+
+ DomainManagerLauncher managerLauncher = DomainManagerLauncher.newInstance();
+ domainManager = managerLauncher.createDomainManager(domainDir);
+ domainManager.start();
+
+ NodeLauncher nodeLauncher = NodeLauncher.newInstance();
+ storeSupplierNode = nodeLauncher.createNodeFromURL("http://localhost:9990/node-config/StoreSupplierNode");
+ storeSupplierNode.start();
+
+ storeCatalogsNode = nodeLauncher.createNodeFromURL("http://localhost:9990/node-config/CatalogsNode");
+ storeCatalogsNode.start();
+
+ storeClientNode = nodeLauncher.createNodeFromURL("http://localhost:9990/node-config/StoreClientNode");
+ storeClientNode.start();
+
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ storeSupplierNode.stop();
+ storeCatalogsNode.stop();
+ storeClientNode.stop();
+ domainManager.stop();
+ }
+
+ @Test
+ public void testShop() {
+ SCAClient client = (SCAClient)storeClientNode;
+ Shopper shopper = client.getService(Shopper.class, "StoreClient");
+
+ String total = shopper.shop("Orange", 5);
+ System.out.println("Total: " + total);
+
+ Assert.assertEquals("$17.75", total);
+
+ }
+
+}
diff --git a/java/sca-contrib/tutorials/store/store/META-INF/sca-contribution.xml b/java/sca-contrib/tutorials/store/store/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..3ed6e4a4ef
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:s="http://store">
+ <import.java package="services"/>
+ <import.resource uri="uiservices/store.html"/>
+ <deployable composite="s:store"/>
+</contribution> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/store/pom.xml b/java/sca-contrib/tutorials/store/store/pom.xml
new file mode 100644
index 0000000000..2dcf64bba0
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store/pom.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-store</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial Online Store</name>
+
+ <repositories>
+ <repository>
+ <id>apache.incubator</id>
+ <url>http://people.apache.org/repo/m2-incubating-repository</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <sourceDirectory>${basedir}</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ <exclude>**/.*/**</exclude>
+ <exclude>pom.xml</exclude>
+ <exclude>build.xml</exclude>
+ <exclude>target/**</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/store/store.composite b/java/sca-contrib/tutorials/store/store/store.composite
new file mode 100644
index 0000000000..b3f3140c8c
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/store/store.composite
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://store"
+ name="store">
+
+ <component name="Store">
+ <t:implementation.widget location="uiservices/store.html"/>
+ <service name="Widget">
+ <t:binding.http uri="/ui"/>
+ </service>
+ <reference name="catalog" target="StoreCatalog">
+ <t:binding.jsonrpc/>
+ </reference>
+ <reference name="shoppingCart" target="StoreShoppingCart/Cart">
+ <t:binding.atom/>
+ </reference>
+ <reference name="shoppingTotal" target="StoreShoppingCart/Total">
+ <t:binding.jsonrpc/>
+ </reference>
+ </component>
+
+ <component name="StoreCatalog">
+ <implementation.java class="services.FruitsCatalogImpl"/>
+ <property name="currencyCode">USD</property>
+ <service name="Catalog">
+ <t:binding.jsonrpc/>
+ </service>
+ <reference name="currencyConverter" target="StoreCurrencyConverter"/>
+ </component>
+
+ <component name="StoreShoppingCart">
+ <implementation.java class="services.ShoppingCartImpl"/>
+ <service name="Cart">
+ <t:binding.atom uri="/ShoppingCart/Cart"/>
+ </service>
+ <service name="Total">
+ <t:binding.jsonrpc/>
+ </service>
+ </component>
+
+ <component name="StoreCurrencyConverter">
+ <implementation.java class="services.CurrencyConverterImpl"/>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/web-services/META-INF/sca-contribution.xml b/java/sca-contrib/tutorials/store/web-services/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..10fbe6c448
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/web-services/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:c="http://services">
+ <import.java package="services"/>
+ <deployable composite="c:catalogs"/>
+ <deployable composite="c:currency"/>
+</contribution> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/web-services/catalogs.composite b/java/sca-contrib/tutorials/store/web-services/catalogs.composite
new file mode 100644
index 0000000000..154d475165
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/web-services/catalogs.composite
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://services"
+ name="catalogs">
+
+ <component name="FruitsCatalogWebService">
+ <implementation.java class="services.FruitsCatalogImpl"/>
+ <service name="Catalog">
+ <binding.ws/>
+ </service>
+ <property name="currencyCode">USD</property>
+ <reference name="currencyConverter" target="CurrencyConverterWebService">
+ <binding.ws/>
+ </reference>
+ </component>
+
+ <component name="VegetablesCatalogWebService">
+ <implementation.java class="services.VegetablesCatalogImpl"/>
+ <service name="Catalog">
+ <binding.ws/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/web-services/currency.composite b/java/sca-contrib/tutorials/store/web-services/currency.composite
new file mode 100644
index 0000000000..7a3f70e299
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/web-services/currency.composite
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://services"
+ name="currency">
+
+ <component name="CurrencyConverterWebService">
+ <implementation.java class="services.CurrencyConverterImpl"/>
+ <service name="CurrencyConverter">
+ <binding.ws/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/web-services/pom.xml b/java/sca-contrib/tutorials/store/web-services/pom.xml
new file mode 100644
index 0000000000..626fb920f9
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/web-services/pom.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-web-services</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial Web Services</name>
+
+ <repositories>
+ <repository>
+ <id>apache.incubator</id>
+ <url>http://people.apache.org/repo/m2-incubating-repository</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <sourceDirectory>${basedir}</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ <exclude>**/.*/**</exclude>
+ <exclude>pom.xml</exclude>
+ <exclude>build.xml</exclude>
+ <exclude>target/**</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/www-services/cart-amazon/amazon/cart/AmazonCart.java b/java/sca-contrib/tutorials/store/www-services/cart-amazon/amazon/cart/AmazonCart.java
new file mode 100644
index 0000000000..e105fa3e9a
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/cart-amazon/amazon/cart/AmazonCart.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package amazon.cart;
+
+import org.apache.tuscany.sca.databinding.annotation.DataBinding;
+import org.oasisopen.sca.annotation.Remotable;
+
+import com.cart.amazon.CartAdd;
+import com.cart.amazon.CartAddResponse;
+import com.cart.amazon.CartClear;
+import com.cart.amazon.CartClearResponse;
+import com.cart.amazon.CartCreate;
+import com.cart.amazon.CartCreateResponse;
+import com.cart.amazon.CartGet;
+import com.cart.amazon.CartGetResponse;
+
+@Remotable
+@DataBinding(value="commonj.sdo.DataObject", wrapped=true)
+public interface AmazonCart {
+
+ public CartCreateResponse CartCreate(CartCreate cartCreate);
+
+ public CartAddResponse CartAdd(CartAdd cartAdd);
+
+ public CartClearResponse CartClear(CartClear cartClear);
+
+ public CartGetResponse CartGet(CartGet cartGet);
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/cart-amazon/amazon/cart/AmazonCart.wsdl b/java/sca-contrib/tutorials/store/www-services/cart-amazon/amazon/cart/AmazonCart.wsdl
new file mode 100644
index 0000000000..051c8ad906
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/cart-amazon/amazon/cart/AmazonCart.wsdl
@@ -0,0 +1,451 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://amazon.cart.com/" targetNamespace="http://amazon.cart.com/">
+ <types>
+ <xs:schema targetNamespace="http://amazon.cart.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://amazon.cart.com/" elementFormDefault="qualified">
+ <xs:element name="CartGet">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CartGetRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CartGetRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CartGetRequest">
+ <xs:sequence>
+ <xs:element name="CartId" type="xs:string" minOccurs="0"/>
+ <xs:element name="HMAC" type="xs:string" minOccurs="0"/>
+ <xs:element name="MergeCart" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CartAdd">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CartAddRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CartAddRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CartAddRequest">
+ <xs:sequence>
+ <xs:element name="CartId" type="xs:string" minOccurs="0"/>
+ <xs:element name="HMAC" type="xs:string" minOccurs="0"/>
+ <xs:element name="MergeCart" type="xs:string" minOccurs="0"/>
+ <xs:element name="Items" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Item" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="OfferListingId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Quantity" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListItemId" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CartCreate">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CartCreateRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CartCreateRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CartCreateRequest">
+ <xs:sequence>
+ <xs:element name="MergeCart" type="xs:string" minOccurs="0"/>
+ <xs:element name="Items" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Item" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="OfferListingId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Quantity" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListItemId" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CartClear">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CartClearRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CartClearRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CartClearRequest">
+ <xs:sequence>
+ <xs:element name="CartId" type="xs:string" minOccurs="0"/>
+ <xs:element name="HMAC" type="xs:string" minOccurs="0"/>
+ <xs:element name="MergeCart" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CartGetResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Cart" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CartAddResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Cart" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CartCreateResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Cart" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CartClearResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Cart" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Cart">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element name="CartId" type="xs:string"/>
+ <xs:element name="HMAC" type="xs:string"/>
+ <xs:element name="URLEncodedHMAC" type="xs:string"/>
+ <xs:element name="PurchaseURL" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubTotal" type="tns:Price" minOccurs="0"/>
+ <xs:element ref="tns:CartItems" minOccurs="0"/>
+ <xs:element ref="tns:SavedForLaterItems" minOccurs="0"/>
+ <xs:element ref="tns:SimilarProducts" minOccurs="0"/>
+ <xs:element ref="tns:TopSellers" minOccurs="0"/>
+ <xs:element ref="tns:NewReleases" minOccurs="0"/>
+ <xs:element ref="tns:SimilarViewedProducts" minOccurs="0"/>
+ <xs:element ref="tns:OtherCategoriesSimilarProducts" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SavedForLaterItems">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SubTotal" type="tns:Price" minOccurs="0"/>
+ <xs:element name="SavedForLaterItem" type="tns:CartItem" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SimilarProducts">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SimilarProduct" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="TopSellers">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TopSeller" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="NewReleases">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="NewRelease" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SimilarViewedProducts">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SimilarViewedProduct" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="OtherCategoriesSimilarProducts">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="OtherCategoriesSimilarProduct" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CartItems">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SubTotal" type="tns:Price" minOccurs="0"/>
+ <xs:element name="CartItem" type="tns:CartItem" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="OperationRequest">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:HTTPHeaders" minOccurs="0"/>
+ <xs:element name="RequestId" type="xs:string" minOccurs="0"/>
+ <xs:element ref="tns:Arguments" minOccurs="0"/>
+ <xs:element ref="tns:Errors" minOccurs="0"/>
+ <xs:element name="RequestProcessingTime" type="xs:float" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Request">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="CartGetRequest" type="tns:CartGetRequest" minOccurs="0"/>
+ <xs:element name="CartAddRequest" type="tns:CartAddRequest" minOccurs="0"/>
+ <xs:element name="CartCreateRequest" type="tns:CartCreateRequest" minOccurs="0"/>
+ <xs:element name="CartClearRequest" type="tns:CartClearRequest" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Arguments">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Argument" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attribute name="Name" type="xs:string" use="required"/>
+ <xs:attribute name="Value" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Errors">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Error" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Code" type="xs:string"/>
+ <xs:element name="Message" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="HTTPHeaders">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Header" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attribute name="Name" type="xs:string" use="required"/>
+ <xs:attribute name="Value" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CartItem">
+ <xs:sequence>
+ <xs:element name="CartItemId" type="xs:string"/>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="ExchangeId" type="xs:string" minOccurs="0"/>
+ <xs:element name="MerchantId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SellerId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SellerNickname" type="xs:string" minOccurs="0"/>
+ <xs:element name="Quantity" type="xs:string"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ <xs:element name="ProductGroup" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListOwner" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Price" type="tns:Price" minOccurs="0"/>
+ <xs:element name="ItemTotal" type="tns:Price" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="Price">
+ <xs:sequence>
+ <xs:element name="Amount" type="xs:integer" minOccurs="0"/>
+ <xs:element name="CurrencyCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="FormattedPrice" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:schema>
+ </types>
+ <message name="CartGetRequestMsg">
+ <part name="body" element="tns:CartGet"/>
+ </message>
+ <message name="CartGetResponseMsg">
+ <part name="body" element="tns:CartGetResponse"/>
+ </message>
+ <message name="CartAddRequestMsg">
+ <part name="body" element="tns:CartAdd"/>
+ </message>
+ <message name="CartAddResponseMsg">
+ <part name="body" element="tns:CartAddResponse"/>
+ </message>
+ <message name="CartCreateRequestMsg">
+ <part name="body" element="tns:CartCreate"/>
+ </message>
+ <message name="CartCreateResponseMsg">
+ <part name="body" element="tns:CartCreateResponse"/>
+ </message>
+ <message name="CartClearRequestMsg">
+ <part name="body" element="tns:CartClear"/>
+ </message>
+ <message name="CartClearResponseMsg">
+ <part name="body" element="tns:CartClearResponse"/>
+ </message>
+ <portType name="AmazonCartServicePortType">
+ <operation name="CartGet">
+ <input message="tns:CartGetRequestMsg"/>
+ <output message="tns:CartGetResponseMsg"/>
+ </operation>
+ <operation name="CartAdd">
+ <input message="tns:CartAddRequestMsg"/>
+ <output message="tns:CartAddResponseMsg"/>
+ </operation>
+ <operation name="CartCreate">
+ <input message="tns:CartCreateRequestMsg"/>
+ <output message="tns:CartCreateResponseMsg"/>
+ </operation>
+ <operation name="CartClear">
+ <input message="tns:CartClearRequestMsg"/>
+ <output message="tns:CartClearResponseMsg"/>
+ </operation>
+ </portType>
+ <binding name="AmazonCartServiceBinding" type="tns:AmazonCartServicePortType">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <operation name="CartGet">
+ <soap:operation soapAction="http://soap.amazon.cart.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="CartCreate">
+ <soap:operation soapAction="http://soap.amazon.cart.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="CartAdd">
+ <soap:operation soapAction="http://soap.amazon.cart.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="CartClear">
+ <soap:operation soapAction="http://soap.amazon.cart.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ </binding>
+ <service name="AmazonCartService">
+ <port name="AmazonCartServicePort" binding="tns:AmazonCartServiceBinding">
+ <soap:address location="http://localhost:8080/AmazonCartServiceComponent"/>
+ </port>
+ </service>
+</definitions>
diff --git a/java/sca-contrib/tutorials/store/www-services/cart-amazon/amazon/cart/AmazonCartImpl.java b/java/sca-contrib/tutorials/store/www-services/cart-amazon/amazon/cart/AmazonCartImpl.java
new file mode 100644
index 0000000000..36c2ff83e4
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/cart-amazon/amazon/cart/AmazonCartImpl.java
@@ -0,0 +1,120 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package amazon.cart;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.oasisopen.sca.annotation.Service;
+
+import com.cart.amazon.AmazonFactory;
+import com.cart.amazon.Cart;
+import com.cart.amazon.CartAdd;
+import com.cart.amazon.CartAddRequest;
+import com.cart.amazon.CartAddResponse;
+import com.cart.amazon.CartClear;
+import com.cart.amazon.CartClearResponse;
+import com.cart.amazon.CartCreate;
+import com.cart.amazon.CartCreateResponse;
+import com.cart.amazon.CartGet;
+import com.cart.amazon.CartGetResponse;
+import com.cart.amazon.CartItem;
+import com.cart.amazon.CartItems;
+import com.cart.amazon.Item1;
+import com.cart.amazon.Items1;
+
+@Service(AmazonCart.class)
+public class AmazonCartImpl {
+
+ protected Map<String, Cart> cartsHash = new HashMap<String, Cart>();
+
+ public CartCreateResponse CartCreate(CartCreate cartCreate) {
+
+ System.out.println("CartServiceID: " + this.toString());
+ System.out.println("Entering cartCreate...");
+ String userId = cartCreate.getAWSAccessKeyId();
+
+ Cart cart = getCart(userId);
+ if (cart != null) {
+ System.out.println("User " + cartCreate.getAWSAccessKeyId()
+ + " has already created a cart with ID: "
+ + cart.getCartId());
+ return null;
+ }
+ cart = new Cart();
+ cart.setCartItems(new CartItems());
+ addCart(userId, cart);
+
+ CartCreateResponse response = AmazonFactory.INSTANCE.createCartCreateResponse();
+ System.out.println("Exiting cartCreate...");
+ return response;
+
+ }
+
+ public CartAddResponse CartAdd(CartAdd cartAdd) {
+
+ String userId = cartAdd.getAWSAccessKeyId();
+
+ Cart cart = getCart(userId);
+ if (cart == null) {
+ System.out.println("User has not associated Cart yet...");
+ return null;
+ }
+
+ List cartAddRequestList = cartAdd.getRequest();
+ CartAddRequest car = (CartAddRequest)cartAddRequestList.get(0);
+ Items1 carItems = car.getItems();
+ List itemList = carItems.getItem();
+ Item1 item = (Item1)itemList.get(0); //Take only the first one, no iteration for now
+ System.out.println("item.getASIN: " + item.getASIN());
+ System.out.println("item.getQuantity(): " + item.getQuantity());
+ CartItems cartItems = cart.getCartItems();
+ List<CartItem> cartItemList = cartItems.getCartItem();
+ cart.setCartItems(cartItems);
+ return null;
+ }
+
+ public CartClearResponse CartClear(CartClear cartClear) {
+ String userId = cartClear.getAWSAccessKeyId();
+
+ Cart cart = getCart(userId);
+ if (cart == null) {
+ System.out.println("User has not associated Cart yet...");
+ return null;
+ }
+
+ cart.setCartItems(new CartItems());
+ return null;
+ }
+
+ public CartGetResponse CartGet(CartGet cartGet) {
+ return null;
+ }
+
+ private Cart getCart(String userId) {
+ Cart cart = null;
+ cart = this.cartsHash.get(userId);
+ return cart;
+ }
+
+ private void addCart(String userId, Cart cart) {
+ this.cartsHash.put(userId, cart);
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/cart-amazon/amazoncart.composite b/java/sca-contrib/tutorials/store/www-services/cart-amazon/amazoncart.composite
new file mode 100644
index 0000000000..6f8cc7b878
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/cart-amazon/amazoncart.composite
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://amazonCart"
+ xmlns:tns="http://amazonCart"
+ name="amazonCart">
+
+ <component name="AmazonCartServiceComponent">
+ <implementation.java class="amazon.cart.AmazonCartImpl" />
+ <service name="AmazonCart">
+ <interface.wsdl interface="http://amazon.cart.com/#wsdl.interface(AmazonCartServicePortType)" />
+ <binding.ws />
+ </service>
+ </component>
+
+</composite> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/www-services/cart-amazon/launch/LaunchAmazonCart.java b/java/sca-contrib/tutorials/store/www-services/cart-amazon/launch/LaunchAmazonCart.java
new file mode 100644
index 0000000000..69dd06c2ef
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/cart-amazon/launch/LaunchAmazonCart.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package launch;
+
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.apache.tuscany.sca.node.util.SCAContributionUtil;
+
+public class LaunchAmazonCart {
+
+ public static void main(String[] args) throws Exception {
+
+ System.out.println("Starting ...");
+ SCANodeFactory nodeFactory = SCANodeFactory.newInstance();
+ SCANode node = nodeFactory.createSCANode(null, "http://localhost:9999");
+
+ URL contribution = SCAContributionUtil.findContributionFromClass(LaunchAmazonCart.class);
+ node.addContribution("http://amazonCart", contribution);
+
+ node.addToDomainLevelComposite(new QName("http://amazonCart", "amazonCart"));
+ node.start();
+
+ System.out.println("amazoncart.composite ready for big business !!!");
+ System.in.read();
+
+ System.out.println("Stopping ...");
+ node.stop();
+ node.destroy();
+ System.out.println();
+ }
+
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/cart-amazon/pom.xml b/java/sca-contrib/tutorials/store/www-services/cart-amazon/pom.xml
new file mode 100644
index 0000000000..7ba441c1f3
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/cart-amazon/pom.xml
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-cart-amazon</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial Amazon Cart</name>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sdo</groupId>
+ <artifactId>tuscany-sdo-lib</artifactId>
+ <version>1.1-incubating</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sdo</groupId>
+ <artifactId>tuscany-sdo-impl</artifactId>
+ <version>1.1-incubating</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-databinding</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-databinding-sdo</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.2</version>
+ <scope>compile</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <sourceDirectory>${basedir}</sourceDirectory>
+ <testSourceDirectory>${basedir}/test</testSourceDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ <exclude>pom.xml</exclude>
+ <exclude>build.xml</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>add-test-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/sdo-source</source>
+ <source>target/wsdl2java-source</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.tuscany.sdo</groupId>
+ <artifactId>tuscany-sdo-plugin</artifactId>
+ <version>1.1-incubating</version>
+ <executions>
+ <execution>
+ <configuration>
+ <schemaFile>${basedir}/amazon/cart/AmazonCart.wsdl</schemaFile>
+ <noNotification>true</noNotification>
+ <noContainer>true</noContainer>
+ <noInterfaces>true</noInterfaces>
+ <noUnsettable>true</noUnsettable>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-wsdl2java</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <configuration>
+ <wsdlFile>${basedir}/amazon/cart/AmazonCart.wsdl</wsdlFile>
+ <javaPackage>amazon.cart.api</javaPackage>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <configuration>
+ <mainClass>launch.LaunchAmazonCart</mainClass>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <dependencies>
+ <dependency>
+ <groupId>ant</groupId>
+ <artifactId>ant-trax</artifactId>
+ <version>1.6.5</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/www-services/cart-amazon/test/AmazonCartTestCase.java b/java/sca-contrib/tutorials/store/www-services/cart-amazon/test/AmazonCartTestCase.java
new file mode 100644
index 0000000000..ede97f7868
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/cart-amazon/test/AmazonCartTestCase.java
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package test;
+
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+
+import launch.LaunchAmazonCart;
+
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.apache.tuscany.sca.node.util.SCAContributionUtil;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import amazon.cart.AmazonCart;
+
+import com.cart.amazon.AmazonFactory;
+import com.cart.amazon.CartCreate;
+import commonj.sdo.DataObject;
+
+/**
+ * Test case for helloworld web service client
+ */
+public class AmazonCartTestCase {
+
+ private SCANode node;
+ private AmazonCart amazonCart;
+
+ @Before
+ public void startClient() throws Exception {
+ try {
+
+ System.out.println("Starting ...");
+ SCANodeFactory nodeFactory = SCANodeFactory.newInstance();
+ node = nodeFactory.createSCANode(null, null);
+
+ URL contribution = SCAContributionUtil.findContributionFromClass(LaunchAmazonCart.class);
+ node.addContribution("http://amazonCart", contribution);
+
+ node.addToDomainLevelComposite(new QName("http://amazonCart", "amazonCart"));
+ node.start();
+
+ System.out.println("amazoncart.composite ready for big business !!!");
+
+ amazonCart = node.getDomain().getService(AmazonCart.class, "AmazonCartServiceComponent");
+
+ } catch (Throwable e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ public void testCartCreate() throws Exception {
+ System.out.println("Entering test...");
+ CartCreate create = AmazonFactory.INSTANCE.createCartCreate();
+ DataObject root = amazonCart.CartCreate(create);
+ // Assert.assertEquals("Hello Smith", msg);
+ System.out.println("Exiting test...");
+ }
+
+ /*
+ * @Test public void testEmbeddedReferenceClient() throws Exception { String
+ * msg = helloTuscanyService.getGreetings("Tuscany");
+ * Assert.assertEquals("Hello Tuscany", msg); }
+ */
+
+ @After
+ public void stopClient() throws Exception {
+ System.out.println("Stopping ...");
+ node.stop();
+ node.destroy();
+ System.out.println();
+ }
+
+ /*
+ * public void testCartCreate() throws Exception { DataObject root =
+ * amazonCart.cartCreate(null); //assertNotNull(root);
+ * //assertEquals("Luciano Resende", root.getString("CUSTOMER[1]/NAME")); }
+ */
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/README b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/README
new file mode 100644
index 0000000000..b5322f82c2
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/README
@@ -0,0 +1,77 @@
+Shopping Store Web Service Sample
+=================================
+This sample creates an shopping store application using Amazon's WS API interface. This sample intents to provide
+the same services provided by Amazon but implementing them as SCA components. These services are provided through
+a web service interface.
+
+If you just want to run it to see what happens you need to run the server first. So, open a command prompt, navigate
+to the shoppingstore sample directory and do:
+
+1 - "ant" to compile it
+2 - "ant run" to get the server up and running
+3 - You should see the following output from the run target:
+ run:
+ [java] log4j:WARN No appenders could be found for logger (org.apache.axiom.om.util.StAXUtils).
+ [java] log4j:WARN Please initialize the log4j system properly.
+ [java] ToyApp server started (press enter to shutdown)
+
+Once the server is running, it will be expecting requests from a client through its Web Service interface.
+
+The WSDL describing the WS interface can be obtained opening a web broeser pointing to
+http://localhost:8080/ShoppingStoreServiceComponent?wsdl
+
+
+Sample Overview
+---------------
+Currently, the sample provides two components:
+ 1 - ShoppingStoreService: that is wired to a reference with a web service binding and plays the role of a proxy service which offers all the operations exposed through the WSDL API and forwards every invocation to the actual service that in fact implements the service invoked.
+ 2 - CartService: currently, this is the only component offering an actual service through the Shopping Store. It provides the following operations: CartCreate, CartAdd, CartClear, CartGet.
+
+shoppingstore/
+ lib/
+ AWS2007_05_14.jar - The jar file containing all the classes generated out of Amazon's WSDL using
+ the Axis2's wsdl2java utility (the databinding used was jaxb)
+ src/
+ main/
+ java/
+ shoppingstore/
+ server/
+ ShoppingStoreServer.java - starts the SCA Runtime and deploys
+ the shoppingstore.composite.
+ In doing this, the SCA WSDL binding
+ acts to expose the ShoppingStoreService
+ over WS
+ services/
+ cart/
+ CartService.java - Java interface description for
+ CartServiceComponent
+ CartServiceImpl.java - component implementation
+ proxy/
+ ShoppingStoreService.java - Java interface description for
+ ShoppingStoreServiceComponent
+ ShoppingStoreServiceImpl.java - component implementation
+ resources/
+ wsdl/
+ shoppingstore.wsdl - the service description that the
+ SCA reference uses to bind to. This
+ wsdl file is very similar to Amazon's
+ WSDL released on May 14th, 2007. Only
+ two modifications were done:
+ 1 - Non-implemented services had to be
+ commented out from the WSDL
+ 2 - Its location was modified in order
+ for it to point to this sample's address
+ shoppingstore.composite - the SCA assembly for this sample
+ test/ - no test provided so far
+ shoppingstore.png - a pictorial representation of the
+ current status of the sample, plus future enhancements
+ build.xml - the Ant build file
+
+
+Building And Running The Sample Using Ant
+-----------------------------------------
+Take a look at the beginning of this document.
+
+Building And Running The Sample Using Maven
+-------------------------------------------
+No maven support has been implemented yet. \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/build.xml b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/build.xml
new file mode 100644
index 0000000000..0a455f52b7
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/build.xml
@@ -0,0 +1,74 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project name="sample-shoppingstore" default="compile">
+ <property name="server.class" value="shoppingstore.server.ShoppingStoreServer" />
+ <property name="server.jar" value="sample-shoppingstore.jar" />
+
+ <target name="init">
+ <mkdir dir="target/classes"/>
+ </target>
+
+ <target name="compile" depends="init">
+ <javac srcdir="src/main/java"
+ destdir="target/classes"
+ debug="on"
+ source="1.5"
+ target="1.5">
+ <classpath>
+ <pathelement location="../../lib/tuscany-sca-manifest.jar"/>
+ <pathelement location="./lib/AWS2007_05_14.jar"/>
+ </classpath>
+ </javac>
+ <copy todir="target/classes">
+ <fileset dir="src/main/resources"/>
+ </copy>
+ <jar destfile="target/${server.jar}" basedir="target/classes">
+ <manifest>
+ <attribute name="Main-Class" value="${server.class}" />
+ </manifest>
+ </jar>
+ </target>
+
+ <target name="run-classes">
+ <java classname="${test.class}"
+ fork="true">
+ <classpath>
+ <pathelement path="target/classes"/>
+ <pathelement location="../../lib/tuscany-sca-manifest.jar"/>
+ </classpath>
+ </java>
+ </target>
+
+ <target name="run">
+ <java classname="${server.class}"
+ fork="true">
+ <classpath>
+ <pathelement path="target/${server.jar}"/>
+ <pathelement location="../../lib/tuscany-sca-manifest.jar"/>
+ <pathelement location="./lib/AWS2007_05_14.jar"/>
+ </classpath>
+ </java>
+ </target>
+
+ <target name="clean">
+ <delete quiet="true" includeemptydirs="true">
+ <fileset dir="target"/>
+ </delete>
+ </target>
+</project>
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/lib/AWS2007_05_14.jar b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/lib/AWS2007_05_14.jar
new file mode 100644
index 0000000000..4b5232fd3b
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/lib/AWS2007_05_14.jar
Binary files differ
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/shoppingstore.png b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/shoppingstore.png
new file mode 100644
index 0000000000..e88abcbd58
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/shoppingstore.png
Binary files differ
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/server/ShoppingStoreServer.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/server/ShoppingStoreServer.java
new file mode 100644
index 0000000000..486946b2fc
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/server/ShoppingStoreServer.java
@@ -0,0 +1,25 @@
+package shoppingstore.server;
+
+import java.io.IOException;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+public class ShoppingStoreServer {
+
+ public static void main(String[] args) {
+
+ SCADomain scaDomain = SCADomain.newInstance("shoppingstore.composite");
+
+ try {
+ System.out.println("ToyApp server started (press enter to shutdown)");
+ System.in.read();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ scaDomain.close();
+ System.out.println("ToyApp server stopped");
+ }
+
+
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/services/cart/CartService.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/services/cart/CartService.java
new file mode 100644
index 0000000000..649f5b16a3
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/services/cart/CartService.java
@@ -0,0 +1,35 @@
+package shoppingstore.services.cart;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartAdd;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartAddResponse;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartClear;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartClearResponse;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartCreate;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartCreateResponse;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartGet;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartGetResponse;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartModify;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartModifyResponse;
+
+@Remotable
+public interface CartService {
+
+ public CartCreateResponse CartCreate(CartCreate cartCreate);
+
+ public CartAddResponse CartAdd(CartAdd cartAdd);
+
+ public CartModifyResponse CartModify(CartModify cartModify);
+
+ public CartClearResponse CartClear(CartClear cartClear);
+
+ public CartGetResponse CartGet(CartGet cartGet);
+
+ //@Init
+ //public void start();
+
+ //@Destroy
+ //public void stop();
+
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/services/cart/CartServiceImpl.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/services/cart/CartServiceImpl.java
new file mode 100644
index 0000000000..12fed3cac6
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/services/cart/CartServiceImpl.java
@@ -0,0 +1,144 @@
+package shoppingstore.services.cart;
+
+import java.util.HashMap;
+
+import org.oasisopen.sca.annotation.Scope;
+
+import com.amazon.webservices.awsecommerceservice._2007_05_14.Cart;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartAdd;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartAddRequest;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartAddResponse;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartClear;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartClearResponse;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartCreate;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartCreateResponse;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartGet;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartGetResponse;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartItem;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartItems;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartModify;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartModifyResponse;
+
+@Scope("COMPOSITE")
+public class CartServiceImpl implements CartService {
+
+ private static long ID = 0;
+
+ private HashMap<String, Cart> cartsHash = new HashMap<String, Cart>();
+
+ public CartAddResponse CartAdd(CartAdd cartAdd) {
+ System.out.println("Entering cartAdd...");
+ System.out.println("CartServiceID: " + this.toString());
+ CartAddResponse cartAddResponse = new CartAddResponse();
+
+ CartAddRequest cartAddRequest = cartAdd.getRequest().get(0);
+
+ //Cart cart = getCart(cartAddRequest.getCartId());
+ Cart cart = getCart(cartAdd.getAWSAccessKeyId());
+ if(cart == null){
+ cartAddResponse.getCart().add(new Cart());
+ return cartAddResponse;
+ }
+
+ CartItem cartItem = new CartItem();
+ cartItem.setASIN(cartAddRequest.getItems().getItem().get(0).getASIN());
+ cartItem.setQuantity(cartAddRequest.getItems().getItem().get(0).getQuantity().toString());
+ cart.getCartItems().getCartItem().add(cartItem);
+ cartAddResponse.getCart().add(cart);
+ System.out.println("Exiting cartAdd...");
+ return cartAddResponse;
+ }
+
+ public CartClearResponse CartClear(CartClear cartClear) {
+ System.out.println("CartServiceID: " + this.toString());
+ System.out.println("Entering cartClear...");
+ CartClearResponse cartClearResponse = new CartClearResponse();
+
+ //CartClearRequest cartClearRequest = cartClear.getRequest().get(0);
+
+ //Cart cart = getCart(cartClearRequest.getCartId());
+ Cart cart = getCart(cartClear.getAWSAccessKeyId());
+ if(cart == null) {
+ cartClearResponse.getCart().add(new Cart());
+ return cartClearResponse;
+ }
+
+ cart.getCartItems().getCartItem().clear();
+
+ cartClearResponse.getCart().add(cart);
+ System.out.println("Exiting cartClear...");
+ return cartClearResponse;
+ }
+
+ public CartCreateResponse CartCreate(CartCreate cartCreate) {
+ System.out.println("CartServiceID: " + this.toString());
+ System.out.println("Entering cartCreate...");
+ CartCreateResponse cartCreateResponse = new CartCreateResponse();
+
+ Cart cart = getCart(cartCreate.getAWSAccessKeyId());
+ if(cart != null){
+ cartCreateResponse.getCart().add(cart);
+ System.out.println("User " + cartCreate.getAWSAccessKeyId() + " has already created a cart with ID: " + cart.getCartId());
+ return cartCreateResponse;
+ }
+
+ cart = new Cart();
+ cart.setCartId(this.generateID());
+ cart.setCartItems(new CartItems());
+ addCart(cartCreate.getAWSAccessKeyId(), cart);
+
+ cartCreateResponse.getCart().add(cart);
+ System.out.println("Exiting cartCreate...");
+ return cartCreateResponse;
+ }
+
+ public CartGetResponse CartGet(CartGet cartGet) {
+ System.out.println("CartServiceID: " + this.toString());
+ System.out.println("Entering cartGet...");
+ CartGetResponse cartGetResponse = new CartGetResponse();
+
+ //CartGetRequest cartGetRequest = cartGet.getRequest().get(0);
+
+ //Cart cart = getCart(cartGetRequest.getCartId());
+ Cart cart = getCart(cartGet.getAWSAccessKeyId());
+ if(cart == null){
+ cartGetResponse.getCart().add(new Cart());
+ return cartGetResponse;
+ }
+
+ cartGetResponse.getCart().add(cart);
+ System.out.println("Exiting cartGet...");
+ return cartGetResponse;
+ }
+
+ public CartModifyResponse CartModify(CartModify cartModify) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ private synchronized String generateID(){
+ ID++;
+ return String.valueOf(ID);
+ }
+
+
+ private Cart getCart(String cartId){
+ Cart cart = null;
+ System.out.println(this.cartsHash.toString());
+ cart = this.cartsHash.get(cartId);
+ return cart;
+ }
+
+ private void addCart(String cartId, Cart cart){
+ this.cartsHash.put(cartId, cart);
+ }
+/*
+ public void start() {
+ System.out.println("Start CartService...");
+ }
+
+ public void stop() {
+ System.out.println("Stop CartService...");
+ }
+*/
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/services/proxy/ShoppingStoreService.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/services/proxy/ShoppingStoreService.java
new file mode 100644
index 0000000000..947b6fda04
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/services/proxy/ShoppingStoreService.java
@@ -0,0 +1,30 @@
+package shoppingstore.services.proxy;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartAdd;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartAddResponse;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartClear;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartClearResponse;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartCreate;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartCreateResponse;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartGet;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartGetResponse;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartModify;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartModifyResponse;
+
+
+@Remotable
+public interface ShoppingStoreService{
+
+ public CartCreateResponse CartCreate(CartCreate cartCreate);
+
+ public CartAddResponse CartAdd(CartAdd cartAdd);
+
+ public CartModifyResponse CartModify(CartModify cartModify);
+
+ public CartClearResponse CartClear(CartClear cartClear);
+
+ public CartGetResponse CartGet(CartGet cartGet);
+
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/services/proxy/ShoppingStoreServiceImpl.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/services/proxy/ShoppingStoreServiceImpl.java
new file mode 100644
index 0000000000..ce121f9d0a
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/java/shoppingstore/services/proxy/ShoppingStoreServiceImpl.java
@@ -0,0 +1,49 @@
+package shoppingstore.services.proxy;
+
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Scope;
+
+import shoppingstore.services.cart.CartService;
+
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartAddResponse;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartClearResponse;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartCreateResponse;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartGetResponse;
+import com.amazon.webservices.awsecommerceservice._2007_05_14.CartModifyResponse;
+
+@Scope("COMPOSITE")
+public class ShoppingStoreServiceImpl implements ShoppingStoreService {
+
+ private CartService cartService;
+
+ @Reference
+ public void setCartService(CartService cartService) {
+ this.cartService = cartService;
+ }
+
+ public CartAddResponse CartAdd(
+ com.amazon.webservices.awsecommerceservice._2007_05_14.CartAdd cartAdd) {
+ return cartService.CartAdd(cartAdd);
+ }
+
+ public CartClearResponse CartClear(
+ com.amazon.webservices.awsecommerceservice._2007_05_14.CartClear cartClear) {
+ return cartService.CartClear(cartClear);
+ }
+
+ public CartCreateResponse CartCreate(
+ com.amazon.webservices.awsecommerceservice._2007_05_14.CartCreate cartCreate) {
+ return cartService.CartCreate(cartCreate);
+ }
+
+ public CartGetResponse CartGet(
+ com.amazon.webservices.awsecommerceservice._2007_05_14.CartGet cartGet) {
+ return cartService.CartGet(cartGet);
+ }
+
+ public CartModifyResponse CartModify(
+ com.amazon.webservices.awsecommerceservice._2007_05_14.CartModify cartModify) {
+ return cartService.CartModify(cartModify);
+ }
+
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/resources/shoppingstore.composite b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/resources/shoppingstore.composite
new file mode 100644
index 0000000000..f03ce10d3b
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/resources/shoppingstore.composite
@@ -0,0 +1,20 @@
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://webservices.amazon.com/AWSECommerceService/2007-05-14"
+ xmlns:tns="http://webservices.amazon.com/AWSECommerceService/2007-05-14"
+ xmlns:db="http://tuscany.apache.org/xmlns/databinding/1.0"
+ name="ShoppingStore">
+
+ <component name="ShoppingStoreServiceComponent">
+ <service name="ShoppingStoreService" >
+ <interface.wsdl interface="http://webservices.amazon.com/AWSECommerceService/2007-05-14#wsdl.interface(AWSECommerceServicePortType)" />
+ <binding.ws />
+ <db:databinding name="jaxb" />
+ </service>
+ <implementation.java class="shoppingstore.services.proxy.ShoppingStoreServiceImpl" />
+ <reference name="cartService" target="CartServiceComponent"></reference>
+ </component>
+
+ <component name="CartServiceComponent">
+ <implementation.java class="shoppingstore.services.cart.CartServiceImpl" />
+ </component>
+</composite> \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/resources/wsdl/shoppingstore.wsdl b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/resources/wsdl/shoppingstore.wsdl
new file mode 100644
index 0000000000..22eba787c6
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/cart-amazon/src/main/resources/wsdl/shoppingstore.wsdl
@@ -0,0 +1,3023 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://webservices.amazon.com/AWSECommerceService/2007-05-14" targetNamespace="http://webservices.amazon.com/AWSECommerceService/2007-05-14">
+ <types>
+ <xs:schema targetNamespace="http://webservices.amazon.com/AWSECommerceService/2007-05-14" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://webservices.amazon.com/AWSECommerceService/2007-05-14" elementFormDefault="qualified">
+ <!-- xs:element name="Bin">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="BinName" type="xs:string"/>
+ <xs:element name="BinItemCount" type="xs:positiveInteger"/>
+ <xs:element name="BinParameter" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string"/>
+ <xs:element name="Value" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SearchBinSet">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Bin" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="NarrowBy" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SearchBinSets">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:SearchBinSet" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Help">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:HelpRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:HelpRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="HelpRequest">
+ <xs:sequence>
+ <xs:element name="About" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="HelpType" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Operation"/>
+ <xs:enumeration value="ResponseGroup"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="ItemSearch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:ItemSearchRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:ItemSearchRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="ItemSearchRequest">
+ <xs:sequence>
+ <xs:element name="Actor" type="xs:string" minOccurs="0"/>
+ <xs:element name="Artist" type="xs:string" minOccurs="0"/>
+ <xs:element name="Availability" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Available"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element ref="tns:AudienceRating" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Author" type="xs:string" minOccurs="0"/>
+ <xs:element name="Brand" type="xs:string" minOccurs="0"/>
+ <xs:element name="BrowseNode" type="xs:string" minOccurs="0"/>
+ <xs:element name="City" type="xs:string" minOccurs="0"/>
+ <xs:element name="Composer" type="xs:string" minOccurs="0"/>
+ <xs:element ref="tns:Condition" minOccurs="0"/>
+ <xs:element name="Conductor" type="xs:string" minOccurs="0"/>
+ <xs:element name="Count" type="xs:positiveInteger" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ <aws-se:excludeFrom>partner</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Cuisine" type="xs:string" minOccurs="0"/>
+ <xs:element ref="tns:DeliveryMethod" minOccurs="0"/>
+ <xs:element name="Director" type="xs:string" minOccurs="0"/>
+ <xs:element name="FutureLaunchDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="ISPUPostalCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="ItemPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="Keywords" type="xs:string" minOccurs="0"/>
+ <xs:element name="Manufacturer" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaximumPrice" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="MerchantId" type="xs:string" minOccurs="0"/>
+ <xs:element name="MinimumPrice" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="MusicLabel" type="xs:string" minOccurs="0"/>
+ <xs:element name="Neighborhood" type="xs:string" minOccurs="0"/>
+ <xs:element name="Orchestra" type="xs:string" minOccurs="0"/>
+ <xs:element name="PostalCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="Power" type="xs:string" minOccurs="0"/>
+ <xs:element name="Publisher" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ReviewSort" type="xs:string" minOccurs="0"/>
+ <xs:element name="SearchIndex" type="xs:string" minOccurs="0"/>
+ <xs:element name="Sort" type="xs:string" minOccurs="0"/>
+ <xs:element name="State" type="xs:string" minOccurs="0"/>
+ <xs:element name="TextStream" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ <xs:element name="ReleaseDate" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="ItemLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:ItemLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:ItemLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="ItemLookupRequest">
+ <xs:sequence>
+ <xs:element ref="tns:Condition" minOccurs="0"/>
+ <xs:element ref="tns:DeliveryMethod" minOccurs="0"/>
+ <xs:element name="FutureLaunchDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="IdType" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ASIN"/>
+ <xs:enumeration value="UPC"/>
+ <xs:enumeration value="SKU"/>
+ <xs:enumeration value="EAN"/>
+ <xs:enumeration value="ISBN"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="ISPUPostalCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="MerchantId" type="xs:string" minOccurs="0"/>
+ <xs:element name="OfferPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="ItemId" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ReviewPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="ReviewSort" type="xs:string" minOccurs="0"/>
+ <xs:element name="SearchIndex" type="xs:string" minOccurs="0"/>
+ <xs:element name="SearchInsideKeywords" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ <aws-se:excludeFrom>partner</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="VariationPage" type="tns:positiveIntegerOrAll" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="ListSearch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:ListSearchRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:ListSearchRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="ListSearchRequest">
+ <xs:sequence>
+ <xs:element name="City" type="xs:string" minOccurs="0"/>
+ <xs:element name="Email" type="xs:string" minOccurs="0"/>
+ <xs:element name="FirstName" type="xs:string" minOccurs="0"/>
+ <xs:element name="LastName" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="ListType">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="WishList"/>
+ <xs:enumeration value="WeddingRegistry"/>
+ <xs:enumeration value="BabyRegistry"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="State" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="ListLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:ListLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:ListLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="ListLookupRequest">
+ <xs:sequence>
+ <xs:element ref="tns:Condition" minOccurs="0"/>
+ <xs:element ref="tns:DeliveryMethod" minOccurs="0"/>
+ <xs:element name="ISPUPostalCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListId" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListType" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="WishList"/>
+ <xs:enumeration value="Listmania"/>
+ <xs:enumeration value="WeddingRegistry"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="MerchantId" type="xs:string" minOccurs="0"/>
+ <xs:element name="ProductGroup" type="xs:string" minOccurs="0"/>
+ <xs:element name="ProductPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ReviewSort" type="xs:string" minOccurs="0"/>
+ <xs:element name="Sort" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CustomerContentSearch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CustomerContentSearchRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CustomerContentSearchRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CustomerContentSearchRequest">
+ <xs:sequence>
+ <xs:element name="CustomerPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="Email" type="xs:string" minOccurs="0"/>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CustomerContentLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CustomerContentLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CustomerContentLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CustomerContentLookupRequest">
+ <xs:sequence>
+ <xs:element name="CustomerId" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ReviewPage" type="xs:positiveInteger" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="SimilarityLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:SimilarityLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:SimilarityLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="SimilarityLookupRequest">
+ <xs:sequence>
+ <xs:element ref="tns:Condition" minOccurs="0"/>
+ <xs:element ref="tns:DeliveryMethod" minOccurs="0"/>
+ <xs:element name="ItemId" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ISPUPostalCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="MerchantId" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ReviewSort" type="xs:string" minOccurs="0"/>
+ <xs:element name="SimilarityType" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Intersection"/>
+ <xs:enumeration value="Random"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="SellerLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:SellerLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:SellerLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="SellerLookupRequest">
+ <xs:sequence>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="SellerId" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="FeedbackPage" type="xs:positiveInteger" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType -->
+ <xs:element name="CartGet">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CartGetRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CartGetRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CartGetRequest">
+ <xs:sequence>
+ <xs:element name="CartId" type="xs:string" minOccurs="0"/>
+ <xs:element name="HMAC" type="xs:string" minOccurs="0"/>
+ <xs:element name="MergeCart" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CartAdd">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CartAddRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CartAddRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CartAddRequest">
+ <xs:sequence>
+ <xs:element name="CartId" type="xs:string" minOccurs="0"/>
+ <xs:element name="HMAC" type="xs:string" minOccurs="0"/>
+ <xs:element name="MergeCart" type="xs:string" minOccurs="0"/>
+ <xs:element name="Items" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Item" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="OfferListingId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Quantity" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListItemId" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CartCreate">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CartCreateRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CartCreateRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CartCreateRequest">
+ <xs:sequence>
+ <xs:element name="MergeCart" type="xs:string" minOccurs="0"/>
+ <xs:element name="Items" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Item" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="OfferListingId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Quantity" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListItemId" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CartModify">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CartModifyRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CartModifyRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CartModifyRequest">
+ <xs:sequence>
+ <xs:element name="CartId" type="xs:string" minOccurs="0"/>
+ <xs:element name="HMAC" type="xs:string" minOccurs="0"/>
+ <xs:element name="MergeCart" type="xs:string" minOccurs="0"/>
+ <xs:element name="Items" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Item" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Action" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="MoveToCart"/>
+ <xs:enumeration value="SaveForLater"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="CartItemId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Quantity" type="xs:nonNegativeInteger" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CartClear">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CartClearRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CartClearRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CartClearRequest">
+ <xs:sequence>
+ <xs:element name="CartId" type="xs:string" minOccurs="0"/>
+ <xs:element name="HMAC" type="xs:string" minOccurs="0"/>
+ <xs:element name="MergeCart" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- xs:element name="TransactionLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:TransactionLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:TransactionLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="TransactionLookupRequest">
+ <xs:sequence>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="TransactionId" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="SellerListingSearch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:SellerListingSearchRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:SellerListingSearchRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="SellerListingSearchRequest">
+ <xs:sequence>
+ <xs:element name="Keywords" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListingPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="OfferStatus" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Open"/>
+ <xs:enumeration value="Closed"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="SellerId" type="xs:string" minOccurs="1"/>
+ <xs:element name="Sort" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="SellerListingLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:SellerListingLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:SellerListingLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="SellerListingLookupRequest">
+ <xs:sequence>
+ <xs:element name="Id" type="xs:string"/>
+ <xs:element name="SellerId" type="xs:string" minOccurs="0"/>
+ <xs:element name="IdType">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Exchange"/>
+ <xs:enumeration value="Listing"/>
+ <xs:enumeration value="ASIN"/>
+ <xs:enumeration value="SKU"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="BrowseNodeLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:BrowseNodeLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:BrowseNodeLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="BrowseNodeLookupRequest">
+ <xs:sequence>
+ <xs:element name="BrowseNodeId" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="Condition">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="All"/>
+ <xs:enumeration value="New"/>
+ <xs:enumeration value="Used"/>
+ <xs:enumeration value="Collectible"/>
+ <xs:enumeration value="Refurbished"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="DeliveryMethod">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Ship"/>
+ <xs:enumeration value="ISPU"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="AudienceRating">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="G"/>
+ <xs:enumeration value="PG"/>
+ <xs:enumeration value="PG-13"/>
+ <xs:enumeration value="R"/>
+ <xs:enumeration value="NC-17"/>
+ <xs:enumeration value="NR"/>
+ <xs:enumeration value="Unrated"/>
+ <xs:enumeration value="6"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="16"/>
+ <xs:enumeration value="18"/>
+ <xs:enumeration value="FamilyViewing"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="MultiOperation">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Help" minOccurs="0"/>
+ <xs:element ref="tns:ItemSearch" minOccurs="0"/>
+ <xs:element ref="tns:ItemLookup" minOccurs="0"/>
+ <xs:element ref="tns:ListSearch" minOccurs="0"/>
+ <xs:element ref="tns:ListLookup" minOccurs="0"/>
+ <xs:element ref="tns:CustomerContentSearch" minOccurs="0"/>
+ <xs:element ref="tns:CustomerContentLookup" minOccurs="0"/>
+ <xs:element ref="tns:SimilarityLookup" minOccurs="0"/>
+ <xs:element ref="tns:SellerLookup" minOccurs="0"/>
+ <xs:element ref="tns:CartGet" minOccurs="0"/>
+ <xs:element ref="tns:CartAdd" minOccurs="0"/>
+ <xs:element ref="tns:CartCreate" minOccurs="0"/>
+ <xs:element ref="tns:CartModify" minOccurs="0"/>
+ <xs:element ref="tns:CartClear" minOccurs="0"/>
+ <xs:element ref="tns:TransactionLookup" minOccurs="0"/>
+ <xs:element ref="tns:SellerListingSearch" minOccurs="0"/>
+ <xs:element ref="tns:SellerListingLookup" minOccurs="0"/>
+ <xs:element ref="tns:BrowseNodeLookup" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="HelpResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Information" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ItemSearchResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Items" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ItemLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Items" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ListSearchResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Lists" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ListLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Lists" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CustomerContentSearchResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Customers" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CustomerContentLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Customers" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SimilarityLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Items" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SellerLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Sellers" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element -->
+ <xs:element name="CartGetResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Cart" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CartAddResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Cart" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CartCreateResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Cart" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CartModifyResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Cart" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CartClearResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Cart" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- xs:element name="TransactionLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Transactions" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SellerListingSearchResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:SellerListings" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SellerListingLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:SellerListings" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="BrowseNodeLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:BrowseNodes" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="MultiOperationResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:HelpResponse" minOccurs="0"/>
+ <xs:element ref="tns:ItemSearchResponse" minOccurs="0"/>
+ <xs:element ref="tns:ItemLookupResponse" minOccurs="0"/>
+ <xs:element ref="tns:ListSearchResponse" minOccurs="0"/>
+ <xs:element ref="tns:ListLookupResponse" minOccurs="0"/>
+ <xs:element ref="tns:CustomerContentSearchResponse" minOccurs="0"/>
+ <xs:element ref="tns:CustomerContentLookupResponse" minOccurs="0"/>
+ <xs:element ref="tns:SimilarityLookupResponse" minOccurs="0"/>
+ <xs:element ref="tns:SellerLookupResponse" minOccurs="0"/>
+ <xs:element ref="tns:CartGetResponse" minOccurs="0"/>
+ <xs:element ref="tns:CartAddResponse" minOccurs="0"/>
+ <xs:element ref="tns:CartCreateResponse" minOccurs="0"/>
+ <xs:element ref="tns:CartModifyResponse" minOccurs="0"/>
+ <xs:element ref="tns:CartClearResponse" minOccurs="0"/>
+ <xs:element ref="tns:TransactionLookupResponse" minOccurs="0"/>
+ <xs:element ref="tns:SellerListingSearchResponse" minOccurs="0"/>
+ <xs:element ref="tns:SellerListingLookupResponse" minOccurs="0"/>
+ <xs:element ref="tns:BrowseNodeLookupResponse" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="OperationRequest">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:HTTPHeaders" minOccurs="0"/>
+ <xs:element name="RequestId" type="xs:string" minOccurs="0"/>
+ <xs:element ref="tns:Arguments" minOccurs="0"/>
+ <xs:element ref="tns:Errors" minOccurs="0"/>
+ <xs:element name="RequestProcessingTime" type="xs:float" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Request">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IsValid" type="xs:string" minOccurs="0"/>
+ <xs:element name="HelpRequest" type="tns:HelpRequest" minOccurs="0"/>
+ <xs:element name="BrowseNodeLookupRequest" type="tns:BrowseNodeLookupRequest" minOccurs="0"/>
+ <xs:element name="ItemSearchRequest" type="tns:ItemSearchRequest" minOccurs="0"/>
+ <xs:element name="ItemLookupRequest" type="tns:ItemLookupRequest" minOccurs="0"/>
+ <xs:element name="ListSearchRequest" type="tns:ListSearchRequest" minOccurs="0"/>
+ <xs:element name="ListLookupRequest" type="tns:ListLookupRequest" minOccurs="0"/>
+ <xs:element name="CustomerContentSearchRequest" type="tns:CustomerContentSearchRequest" minOccurs="0"/>
+ <xs:element name="CustomerContentLookupRequest" type="tns:CustomerContentLookupRequest" minOccurs="0"/>
+ <xs:element name="SimilarityLookupRequest" type="tns:SimilarityLookupRequest" minOccurs="0"/>
+ <xs:element name="CartGetRequest" type="tns:CartGetRequest" minOccurs="0"/>
+ <xs:element name="CartAddRequest" type="tns:CartAddRequest" minOccurs="0"/>
+ <xs:element name="CartCreateRequest" type="tns:CartCreateRequest" minOccurs="0"/>
+ <xs:element name="CartModifyRequest" type="tns:CartModifyRequest" minOccurs="0"/>
+ <xs:element name="CartClearRequest" type="tns:CartClearRequest" minOccurs="0"/>
+ <xs:element name="TransactionLookupRequest" type="tns:TransactionLookupRequest" minOccurs="0"/>
+ <xs:element name="SellerListingSearchRequest" type="tns:SellerListingSearchRequest" minOccurs="0"/>
+ <xs:element name="SellerListingLookupRequest" type="tns:SellerListingLookupRequest" minOccurs="0"/>
+ <xs:element name="SellerLookupRequest" type="tns:SellerLookupRequest" minOccurs="0"/>
+ <xs:element ref="tns:Errors" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Arguments">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Argument" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attribute name="Name" type="xs:string" use="required"/>
+ <xs:attribute name="Value" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="HTTPHeaders">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Header" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attribute name="Name" type="xs:string" use="required"/>
+ <xs:attribute name="Value" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Errors">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Error" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Code" type="xs:string"/>
+ <xs:element name="Message" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Information">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element ref="tns:OperationInformation" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="tns:ResponseGroupInformation" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Items">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element ref="tns:CorrectedQuery" minOccurs="0"/>
+ <xs:element name="Qid" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalResults" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:SearchResultsMap" minOccurs="0"/>
+ <xs:element ref="tns:Item" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="tns:SearchBinSets" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CorrectedQuery">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Keywords" type="xs:string" minOccurs="0"/>
+ <xs:element name="Message" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Lists">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element name="TotalResults" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:List" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Customers">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element name="TotalResults" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:Customer" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element -->
+ <xs:element name="Cart">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element name="CartId" type="xs:string"/>
+ <xs:element name="HMAC" type="xs:string"/>
+ <xs:element name="URLEncodedHMAC" type="xs:string"/>
+ <xs:element name="PurchaseURL" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubTotal" type="tns:Price" minOccurs="0"/>
+ <xs:element ref="tns:CartItems" minOccurs="0"/>
+ <xs:element ref="tns:SavedForLaterItems" minOccurs="0"/>
+ <xs:element ref="tns:SimilarProducts" minOccurs="0"/>
+ <xs:element ref="tns:TopSellers" minOccurs="0"/>
+ <xs:element ref="tns:NewReleases" minOccurs="0"/>
+ <xs:element ref="tns:SimilarViewedProducts" minOccurs="0"/>
+ <xs:element ref="tns:OtherCategoriesSimilarProducts" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- xs:element name="Transactions">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element name="TotalResults" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:Transaction" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Sellers">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element name="TotalResults" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:Seller" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SellerListings">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element name="TotalResults" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:SellerListing" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="OperationInformation">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="Description" type="xs:string" minOccurs="0"/>
+ <xs:element name="RequiredParameters" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Parameter" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="AvailableParameters" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Parameter" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="DefaultResponseGroups" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ResponseGroup" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="AvailableResponseGroups" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ResponseGroup" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ResponseGroupInformation">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="CreationDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="ValidOperations" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Operation" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Elements" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Element" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="List">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ListId" type="xs:string"/>
+ <xs:element name="ListURL" type="xs:string" minOccurs="0"/>
+ <xs:element name="RegistryNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListName" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListType" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="WishList"/>
+ <xs:enumeration value="WeddingRegistry"/>
+ <xs:enumeration value="BabyRegistry"/>
+ <xs:enumeration value="Listmania"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="TotalItems" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="DateCreated" type="xs:string" minOccurs="0"/>
+ <xs:element name="OccasionDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="CustomerName" type="xs:string" minOccurs="0"/>
+ <xs:element name="PartnerName" type="xs:string" minOccurs="0"/>
+ <xs:element name="AdditionalName" type="xs:string" minOccurs="0"/>
+ <xs:element name="Comment" type="xs:string" minOccurs="0"/>
+ <xs:element name="Image" type="tns:Image" minOccurs="0"/>
+ <xs:element name="AverageRating" type="xs:decimal" minOccurs="0"/>
+ <xs:element name="TotalVotes" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalTimesRead" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:ListItem" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ListItem">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ListItemId" type="xs:string" minOccurs="0"/>
+ <xs:element name="DateAdded" type="xs:string" minOccurs="0"/>
+ <xs:element name="Comment" type="xs:string" minOccurs="0"/>
+ <xs:element name="QuantityDesired" type="xs:string" minOccurs="0"/>
+ <xs:element name="QuantityReceived" type="xs:string" minOccurs="0"/>
+ <xs:element ref="tns:Item" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Customer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="CustomerId" type="xs:string"/>
+ <xs:element name="Nickname" type="xs:string" minOccurs="0"/>
+ <xs:element name="Birthday" type="xs:string" minOccurs="0"/>
+ <xs:element name="WishListId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Location" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="UserDefinedLocation" type="xs:string" minOccurs="0"/>
+ <xs:element name="City" type="xs:string" minOccurs="0"/>
+ <xs:element name="State" type="xs:string" minOccurs="0"/>
+ <xs:element name="Country" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="tns:CustomerReviews" maxOccurs="unbounded" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SearchResultsMap">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SearchIndex" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IndexName" type="xs:string"/>
+ <xs:element name="Results" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="Pages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:CorrectedQuery" minOccurs="0"/>
+ <xs:element name="RelevanceRank" type="xs:positiveInteger"/>
+ <xs:element name="ASIN" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Item">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string"/>
+ <xs:element name="ParentASIN" type="xs:string" minOccurs="0"/>
+ <xs:element ref="tns:Errors" minOccurs="0"/>
+ <xs:element name="DetailPageURL" type="xs:string" minOccurs="0"/>
+ <xs:element name="SalesRank" type="xs:string" minOccurs="0"/>
+ <xs:element name="SmallImage" type="tns:Image" minOccurs="0"/>
+ <xs:element name="MediumImage" type="tns:Image" minOccurs="0"/>
+ <xs:element name="LargeImage" type="tns:Image" minOccurs="0"/>
+ <xs:element name="ImageSets" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MerchantId" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element ref="tns:ImageSet" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="tns:ItemAttributes" minOccurs="0"/>
+ <xs:element ref="tns:MerchantItemAttributes" minOccurs="0"/>
+ <xs:element ref="tns:Collections" minOccurs="0"/>
+ <xs:element name="Subjects" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Subject" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="tns:OfferSummary" minOccurs="0"/>
+ <xs:element ref="tns:Offers" minOccurs="0"/>
+ <xs:element ref="tns:VariationSummary" minOccurs="0"/>
+ <xs:element ref="tns:Variations" minOccurs="0"/>
+ <xs:element ref="tns:CustomerReviews" minOccurs="0"/>
+ <xs:element ref="tns:EditorialReviews" minOccurs="0"/>
+ <xs:element ref="tns:SimilarProducts" minOccurs="0"/>
+ <xs:element ref="tns:Accessories" minOccurs="0"/>
+ <xs:element ref="tns:Tracks" minOccurs="0"/>
+ <xs:element ref="tns:BrowseNodes" minOccurs="0"/>
+ <xs:element ref="tns:ListmaniaLists" minOccurs="0"/>
+ <xs:element ref="tns:SearchInside" minOccurs="0"/>
+ <xs:element name="AlternateVersions" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="AlternateVersion" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ <xs:element name="Binding" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="OfferSummary">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="LowestNewPrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="LowestUsedPrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="LowestCollectiblePrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="LowestRefurbishedPrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="TotalNew" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalUsed" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalCollectible" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalRefurbished" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Offers">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TotalOffers" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalOfferPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:Offer" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Offer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Merchant" minOccurs="0"/>
+ <xs:element ref="tns:Seller" minOccurs="0"/>
+ <xs:element ref="tns:OfferAttributes" minOccurs="0"/>
+ <xs:element ref="tns:OfferListing" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="tns:LoyaltyPoints" minOccurs="0"/>
+ <xs:element ref="tns:Promotions" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="OfferAttributes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Condition" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubCondition" type="xs:string" minOccurs="0"/>
+ <xs:element name="ConditionNote" type="xs:string" minOccurs="0"/>
+ <xs:element name="WillShipExpedited" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="WillShipInternational" type="xs:boolean" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Merchant">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MerchantId" type="xs:string"/>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="GlancePage" type="xs:string" minOccurs="0"/>
+ <xs:element name="AverageFeedbackRating" type="xs:decimal" minOccurs="0"/>
+ <xs:element name="TotalFeedback" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalFeedbackPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="OfferListing">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="OfferListingId" type="xs:string" minOccurs="0"/>
+ <xs:element name="ExchangeId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Price" type="tns:Price" minOccurs="0"/>
+ <xs:element name="SalePrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="AmountSaved" type="tns:Price" minOccurs="0"/>
+ <xs:element name="PercentageSaved" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="Availability" type="xs:string" minOccurs="0"/>
+ <xs:element name="AvailabilityAttributes" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="AvailabilityType" type="xs:string" minOccurs="0"/>
+ <xs:element name="IsPreorder" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="MinimumHours" type="xs:integer" minOccurs="0"/>
+ <xs:element name="MaximumHours" type="xs:integer" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Quantity" type="xs:integer" minOccurs="0"/>
+ <xs:element name="ISPUStoreAddress" type="tns:Address" minOccurs="0"/>
+ <xs:element name="ISPUStoreHours" type="xs:string" minOccurs="0"/>
+ <xs:element name="IsEligibleForSuperSaverShipping" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="SalesRestriction" type="xs:string" minOccurs="0"/>
+ <xs:element name="ShippingCharge" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ <aws-se:excludeFrom>partner</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ShippingType" type="xs:string"/>
+ <xs:element name="ShippingPrice" type="tns:Price"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="LoyaltyPoints">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Points" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TypicalRedemptionValue" type="tns:Price" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="VariationSummary">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="LowestPrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="HighestPrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="LowestSalePrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="HighestSalePrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="SingleMerchantId" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Variations">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TotalVariations" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalVariationPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:VariationDimensions" minOccurs="0"/>
+ <xs:element ref="tns:Item" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="VariationDimensions">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="VariationDimension" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="EditorialReviews">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:EditorialReview" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Collections">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Collection" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="CollectionSummary" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="LowestListPrice" type="tns:Price" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="HighestListPrice" type="tns:Price" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="LowestSalePrice" type="tns:Price" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="HighestSalePrice" type="tns:Price" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CollectionParent" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CollectionItem" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="EditorialReview">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Source" type="xs:string" minOccurs="0"/>
+ <xs:element name="Content" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CustomerReviews">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="AverageRating" type="xs:decimal" minOccurs="0"/>
+ <xs:element name="TotalReviews" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalReviewPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:Review" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Review">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Rating" type="xs:decimal" minOccurs="0"/>
+ <xs:element name="HelpfulVotes" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="CustomerId" type="xs:string" minOccurs="0"/>
+ <xs:element ref="tns:Reviewer" minOccurs="0"/>
+ <xs:element name="TotalVotes" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="Date" type="xs:string" minOccurs="0"/>
+ <xs:element name="Summary" type="xs:string" minOccurs="0"/>
+ <xs:element name="Content" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Reviewer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="CustomerId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="Nickname" type="xs:string" minOccurs="0"/>
+ <xs:element name="Location" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Tracks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Disc" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Track" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Number" type="xs:positiveInteger" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="Number" type="xs:positiveInteger" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SimilarProducts">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SimilarProduct" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="TopSellers">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TopSeller" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="NewReleases">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="NewRelease" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SimilarViewedProducts">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SimilarViewedProduct" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="OtherCategoriesSimilarProducts">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="OtherCategoriesSimilarProduct" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Accessories">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Accessory" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Promotions">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Promotion" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Promotion">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Summary" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="PromotionId" type="xs:string"/>
+ <xs:element name="Category" type="xs:string" minOccurs="0"/>
+ <xs:element name="StartDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="EndDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="EligibilityRequirementDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="BenefitDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="TermsAndConditions" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Details" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MerchantId" type="xs:string"/>
+ <xs:element name="OwningMerchantId" type="xs:string"/>
+ <xs:element name="PromotionId" type="xs:string"/>
+ <xs:element name="PromotionCategory" type="xs:string"/>
+ <xs:element name="MerchantPromotionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="GroupClaimCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="CouponCombinationType" type="xs:string" minOccurs="0"/>
+ <xs:element name="StartDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="EndDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="TermsAndConditions" type="xs:string" minOccurs="0"/>
+ <xs:element name="EligibilityRequirements" type="tns:PromotionEligibilityRequirements" minOccurs="0"/>
+ <xs:element name="Benefits" type="tns:PromotionBenefits" minOccurs="0"/>
+ <xs:element name="ItemApplicability" type="tns:PromotionItemApplicability" minOccurs="0"/>
+ <xs:element name="MerchandisingMessage" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="PromotionEligibilityRequirements">
+ <xs:sequence>
+ <xs:element name="EligibilityRequirement" type="tns:PromotionEligibilityRequirement" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="PromotionBenefits">
+ <xs:sequence>
+ <xs:element name="Benefit" type="tns:PromotionBenefit" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="PromotionBenefit">
+ <xs:sequence>
+ <xs:element name="BenefitType" type="xs:string"/>
+ <xs:element name="ComponentType" type="xs:string"/>
+ <xs:element name="Quantity" type="xs:int" minOccurs="0"/>
+ <xs:element name="PercentOff" type="xs:double" minOccurs="0"/>
+ <xs:element name="FixedAmount" type="tns:Price" minOccurs="0"/>
+ <xs:element name="Ceiling" type="tns:Price" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="PromotionEligibilityRequirement">
+ <xs:sequence>
+ <xs:element name="EligibilityRequirementType" type="xs:string"/>
+ <xs:element name="Quantity" type="xs:int" minOccurs="0"/>
+ <xs:element name="CurrencyAmount" type="tns:Price" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="PromotionItemApplicability">
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string"/>
+ <xs:element name="IsInBenefitSet" type="xs:boolean"/>
+ <xs:element name="IsInEligibilityRequirementSet" type="xs:boolean"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="BrowseNodes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element ref="tns:BrowseNode" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="BrowseNode">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="BrowseNodeId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="IsCategoryRoot" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="Children" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:BrowseNode" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Ancestors" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:BrowseNode" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="tns:TopSellers" minOccurs="0"/>
+ <xs:element ref="tns:NewReleases" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ListmaniaLists">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ListmaniaList" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ListId" type="xs:string"/>
+ <xs:element name="ListName" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SearchInside">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ <aws-se:excludeFrom>partner</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TotalExcerpts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="Excerpt" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Checksum" type="xs:string" minOccurs="0"/>
+ <xs:element name="PageType" type="xs:string" minOccurs="0"/>
+ <xs:element name="PageNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="SequenceNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="Text" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element -->
+ <xs:element name="CartItems">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SubTotal" type="tns:Price" minOccurs="0"/>
+ <xs:element name="CartItem" type="tns:CartItem" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- xs:element name="SavedForLaterItems">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SubTotal" type="tns:Price" minOccurs="0"/>
+ <xs:element name="SavedForLaterItem" type="tns:CartItem" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element -->
+ <xs:complexType name="CartItem">
+ <xs:sequence>
+ <xs:element name="CartItemId" type="xs:string"/>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="ExchangeId" type="xs:string" minOccurs="0"/>
+ <xs:element name="MerchantId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SellerId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SellerNickname" type="xs:string" minOccurs="0"/>
+ <xs:element name="Quantity" type="xs:string"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ <xs:element name="ProductGroup" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListOwner" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Price" type="tns:Price" minOccurs="0"/>
+ <xs:element name="ItemTotal" type="tns:Price" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- xs:element name="Transaction">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TransactionId" type="xs:string"/>
+ <xs:element name="SellerId" type="xs:string"/>
+ <xs:element name="Condition" type="xs:string"/>
+ <xs:element name="TransactionDate" type="xs:string"/>
+ <xs:element name="TransactionDateEpoch" type="xs:string"/>
+ <xs:element name="SellerName" type="xs:string" minOccurs="0"/>
+ <xs:element name="PayingCustomerId" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ <aws-se:excludeFrom>partner</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="OrderingCustomerId" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ <aws-se:excludeFrom>partner</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Totals" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Total" type="tns:Price"/>
+ <xs:element name="Subtotal" type="tns:Price"/>
+ <xs:element name="Tax" type="tns:Price"/>
+ <xs:element name="ShippingCharge" type="tns:Price"/>
+ <xs:element name="Promotion" type="tns:Price"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="TransactionItems" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:TransactionItem" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Shipments" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Shipment" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Condition" type="xs:string"/>
+ <xs:element name="DeliveryMethod" type="xs:string"/>
+ <xs:element name="ShipmentItems" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TransactionItemId" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Packages" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Package" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TrackingNumber" type="xs:string"/>
+ <xs:element name="CarrierName" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="TransactionItem">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TransactionItemId" type="xs:string"/>
+ <xs:element name="Quantity" type="xs:string"/>
+ <xs:element name="UnitPrice" type="tns:Price"/>
+ <xs:element name="TotalPrice" type="tns:Price"/>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="ChildTransactionItems" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:TransactionItem" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Seller">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SellerId" type="xs:string"/>
+ <xs:element name="SellerName" type="xs:string" minOccurs="0"/>
+ <xs:element name="SellerLegalName" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Nickname" type="xs:string" minOccurs="0"/>
+ <xs:element name="GlancePage" type="xs:string" minOccurs="0"/>
+ <xs:element name="About" type="xs:string" minOccurs="0"/>
+ <xs:element name="MoreAbout" type="xs:string" minOccurs="0"/>
+ <xs:element name="Location" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="UserDefinedLocation" type="xs:string" minOccurs="0"/>
+ <xs:element name="City" type="xs:string" minOccurs="0"/>
+ <xs:element name="State" type="xs:string" minOccurs="0"/>
+ <xs:element name="Country" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="AverageFeedbackRating" type="xs:decimal" minOccurs="0"/>
+ <xs:element name="TotalFeedback" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalFeedbackPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="SellerFeedbackSummary" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="FeedbackDateRange" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SellerFeedbackRating" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Count" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="Percentage" type="xs:nonNegativeInteger" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Type" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="Period" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="tns:SellerFeedback" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SellerFeedback">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Feedback" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Rating" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="Comment" type="xs:string" minOccurs="0"/>
+ <xs:element name="Date" type="xs:string" minOccurs="0"/>
+ <xs:element name="RatedBy" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="Address">
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="Address1" type="xs:string" minOccurs="0"/>
+ <xs:element name="Address2" type="xs:string" minOccurs="0"/>
+ <xs:element name="Address3" type="xs:string" minOccurs="0"/>
+ <xs:element name="City" type="xs:string" minOccurs="0"/>
+ <xs:element name="State" type="xs:string" minOccurs="0"/>
+ <xs:element name="PostalCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="Country" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="SellerListing">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ExchangeId" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListingId" type="xs:string" minOccurs="0"/>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="SKU" type="xs:string" minOccurs="0"/>
+ <xs:element name="UPC" type="xs:string" minOccurs="0"/>
+ <xs:element name="EAN" type="xs:string" minOccurs="0"/>
+ <xs:element name="WillShipExpedited" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="WillShipInternational" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ <xs:element name="Price" type="tns:Price" minOccurs="0"/>
+ <xs:element name="StartDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="EndDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="Status" type="xs:string" minOccurs="0"/>
+ <xs:element name="Quantity" type="xs:string" minOccurs="0"/>
+ <xs:element name="Condition" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubCondition" type="xs:string" minOccurs="0"/>
+ <xs:element ref="tns:Seller" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="Price">
+ <xs:sequence>
+ <xs:element name="Amount" type="xs:integer" minOccurs="0"/>
+ <xs:element name="CurrencyCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="FormattedPrice" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="ImageSet">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SwatchImage" type="tns:Image" minOccurs="0"/>
+ <xs:element name="SmallImage" type="tns:Image" minOccurs="0"/>
+ <xs:element name="ThumbnailImage" type="tns:Image" minOccurs="0"/>
+ <xs:element name="TinyImage" type="tns:Image" minOccurs="0"/>
+ <xs:element name="MediumImage" type="tns:Image" minOccurs="0"/>
+ <xs:element name="LargeImage" type="tns:Image" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Category" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="Image">
+ <xs:sequence>
+ <xs:element name="URL" type="xs:string"/>
+ <xs:element name="Height" type="tns:DecimalWithUnits"/>
+ <xs:element name="Width" type="tns:DecimalWithUnits"/>
+ <xs:element name="IsVerified" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="ItemAttributes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Actor" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Address" type="tns:Address" minOccurs="0"/>
+ <xs:element name="AmazonMaximumAge" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="AmazonMinimumAge" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="AnalogVideoFormat" type="xs:string" minOccurs="0"/>
+ <xs:element name="ApertureModes" type="xs:string" minOccurs="0"/>
+ <xs:element name="Artist" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="AspectRatio" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssemblyInstructions" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssemblyRequired" type="xs:string" minOccurs="0"/>
+ <xs:element name="AudienceRating" type="xs:string" minOccurs="0"/>
+ <xs:element name="AudioFormat" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Author" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="BackFinding" type="xs:string" minOccurs="0"/>
+ <xs:element name="BandMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="BatteriesIncluded" type="xs:string" minOccurs="0"/>
+ <xs:element name="BatteriesRequired" type="xs:string" minOccurs="0"/>
+ <xs:element name="Batteries" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="BatteryDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="BatteryType" type="xs:string" minOccurs="0"/>
+ <xs:element name="BezelMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Binding" type="xs:string" minOccurs="0"/>
+ <xs:element name="Brand" type="xs:string" minOccurs="0"/>
+ <xs:element name="CalendarType" type="xs:string" minOccurs="0"/>
+ <xs:element name="CameraManualFeatures" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="CaseDiameter" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="CaseMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="CaseThickness" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="CaseType" type="xs:string" minOccurs="0"/>
+ <xs:element name="CatalogNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="CDRWDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="ChainType" type="xs:string" minOccurs="0"/>
+ <xs:element name="CEROAgeRating" type="xs:string" minOccurs="0"/>
+ <xs:element name="ClaspType" type="xs:string" minOccurs="0"/>
+ <xs:element name="ClothingSize" type="xs:string" minOccurs="0"/>
+ <xs:element name="ClubType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Color" type="xs:string" minOccurs="0"/>
+ <xs:element name="Compatibility" type="xs:string" minOccurs="0"/>
+ <xs:element name="CompatibleDevices" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ComputerHardwareType" type="xs:string" minOccurs="0"/>
+ <xs:element name="ComputerPlatform" type="xs:string" minOccurs="0"/>
+ <xs:element name="Connectivity" type="xs:string" minOccurs="0"/>
+ <xs:element name="ContinuousShootingSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Country" type="xs:string" minOccurs="0"/>
+ <xs:element name="CPUManufacturer" type="xs:string" minOccurs="0"/>
+ <xs:element name="CPUSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="CPUType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Creator" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Role" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Cuisine" type="xs:string" minOccurs="0"/>
+ <xs:element name="DataLinkProtocol" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="DeliveryOption" type="xs:string" minOccurs="0"/>
+ <xs:element name="DelayBetweenShots" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Department" type="xs:string" minOccurs="0"/>
+ <xs:element name="DeweyDecimalNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="DialColor" type="xs:string" minOccurs="0"/>
+ <xs:element name="DialWindowMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="DigitalZoom" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Director" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="DisplayColorSupport" type="xs:string" minOccurs="0"/>
+ <xs:element name="DisplaySize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="DrumSetPieceQuantity" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="DVDLayers" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="DVDRWDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="DVDSides" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="DPCI" type="xs:string" minOccurs="0"/>
+ <xs:element name="EAN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Edition" type="xs:string" minOccurs="0"/>
+ <xs:element name="ESRBAgeRating" type="xs:string" minOccurs="0"/>
+ <xs:element name="ExternalDisplaySupportDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="FabricType" type="xs:string" minOccurs="0"/>
+ <xs:element name="FaxNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="Feature" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="FilmColorType" type="xs:string" minOccurs="0"/>
+ <xs:element name="FirstIssueLeadTime" type="tns:StringWithUnits" minOccurs="0"/>
+ <xs:element name="FloppyDiskDriveDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="Format" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="FormFactor" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="GemType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Genre" type="xs:string" minOccurs="0"/>
+ <xs:element name="GLProductGroup" type="xs:string" minOccurs="0"/>
+ <xs:element name="GraphicsCardInterface" type="xs:string" minOccurs="0"/>
+ <xs:element name="GraphicsDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="GraphicsMemorySize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="GuitarAttribute" type="xs:string" minOccurs="0"/>
+ <xs:element name="GuitarBridgeSystem" type="xs:string" minOccurs="0"/>
+ <xs:element name="GuitarPickThickness" type="xs:string" minOccurs="0"/>
+ <xs:element name="GuitarPickupConfiguration" type="xs:string" minOccurs="0"/>
+ <xs:element name="HandOrientation" type="xs:string" minOccurs="0"/>
+ <xs:element name="HardDiskCount" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="HardDiskSize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="HardDiskInterface" type="xs:string" minOccurs="0"/>
+ <xs:element name="HardwarePlatform" type="xs:string" minOccurs="0"/>
+ <xs:element name="HasAutoFocus" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasBurstMode" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasInCameraEditing" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasRedEyeReduction" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasSelfTimer" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasTripodMount" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasVideoOut" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasViewfinder" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HazardousMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="HoursOfOperation" type="xs:string" minOccurs="0"/>
+ <xs:element name="IncludedSoftware" type="xs:string" minOccurs="0"/>
+ <xs:element name="IncludesMp3Player" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="Ingredients" type="xs:string" minOccurs="0"/>
+ <xs:element name="InstrumentKey" type="xs:string" minOccurs="0"/>
+ <xs:element name="IsAdultProduct" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="IsAutographed" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="ISBN" type="xs:string" minOccurs="0"/>
+ <xs:element name="IsFragile" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="IsLabCreated" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="IsMemorabilia" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="ISOEquivalent" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="IsPreannounce" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="IssuesPerYear" type="xs:string" minOccurs="0"/>
+ <xs:element name="ItemDimensions" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Height" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Length" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Weight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Width" type="tns:DecimalWithUnits" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="KeyboardDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="Label" type="xs:string" minOccurs="0"/>
+ <xs:element name="Languages" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Language" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string"/>
+ <xs:element name="Type" type="xs:string" minOccurs="0"/>
+ <xs:element name="AudioFormat" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="LegalDisclaimer" type="xs:string" minOccurs="0"/>
+ <xs:element name="LensType" type="xs:string" minOccurs="0"/>
+ <xs:element name="LineVoltage" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListPrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="MacroFocusRange" type="xs:string" minOccurs="0"/>
+ <xs:element name="MagazineType" type="xs:string" minOccurs="0"/>
+ <xs:element name="MalletHardness" type="xs:string" minOccurs="0"/>
+ <xs:element name="Manufacturer" type="xs:string" minOccurs="0"/>
+ <xs:element name="ManufacturerLaborWarrantyDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="ManufacturerMaximumAge" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="ManufacturerMinimumAge" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="ManufacturerPartsWarrantyDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaximumAperture" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumColorDepth" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaximumFocalLength" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumHighResolutionImages" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumHorizontalResolution" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumLowResolutionImages" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaximumResolution" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumShutterSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumVerticalResolution" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumWeightRecommendation" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MediaType" type="xs:string" minOccurs="0"/>
+ <xs:element name="MemorySlotsAvailable" type="xs:string" minOccurs="0"/>
+ <xs:element name="MetalStamp" type="xs:string" minOccurs="0"/>
+ <xs:element name="MetalType" type="xs:string" minOccurs="0"/>
+ <xs:element name="MiniMovieDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="MinimumFocalLength" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MinimumShutterSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Model" type="xs:string" minOccurs="0"/>
+ <xs:element name="ModelYear" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="ModemDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="MonitorSize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MonitorViewableDiagonalSize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MouseDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="MPN" type="xs:string" minOccurs="0"/>
+ <xs:element name="MusicalStyle" type="xs:string" minOccurs="0"/>
+ <xs:element name="NativeResolution" type="xs:string" minOccurs="0"/>
+ <xs:element name="Neighborhood" type="xs:string" minOccurs="0"/>
+ <xs:element name="NetworkInterfaceDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="NotebookDisplayTechnology" type="xs:string" minOccurs="0"/>
+ <xs:element name="NotebookPointingDeviceDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="NumberOfDiscs" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfIssues" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfItems" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfKeys" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfPearls" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfRapidFireShots" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfStones" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfStrings" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfTracks" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="OperatingSystem" type="xs:string" minOccurs="0"/>
+ <xs:element name="OpticalSensorResolution" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="OpticalZoom" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="OriginalReleaseDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="OutputWattage" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="PackageDimensions" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Height" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Length" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Weight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Width" type="tns:DecimalWithUnits" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PackageQuantity" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="PearlLustre" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlMinimumColor" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlShape" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlStringingMethod" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlSurfaceBlemishes" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlType" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlUniformity" type="xs:string" minOccurs="0"/>
+ <xs:element name="PhoneNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="PhotoFlashType" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="PictureFormat" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Platform" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="PriceRating" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="ProcessorCount" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="ProductGroup" type="xs:string" minOccurs="0"/>
+ <xs:element name="ProductSiteLaunchDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="ProductTypeName" type="xs:string" minOccurs="0"/>
+ <xs:element name="ProductTypeSubcategory" type="xs:string" minOccurs="0"/>
+ <xs:element name="PromotionalTag" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ <aws-se:excludeFrom>partner</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PublicationDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="Publisher" type="xs:string" minOccurs="0"/>
+ <xs:element name="POBoxShippingExcluded" type="xs:string" minOccurs="0"/>
+ <xs:element name="ReadingLevel" type="xs:string" minOccurs="0"/>
+ <xs:element name="ReturnMethod" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="RecorderTrackCount" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="RegionCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="RegionOfOrigin" type="xs:string" minOccurs="0"/>
+ <xs:element name="ReturnPolicy" type="xs:string" minOccurs="0"/>
+ <xs:element name="ReleaseDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="RemovableMemory" type="xs:string" minOccurs="0"/>
+ <xs:element name="RemovableStorage" type="xs:string" minOccurs="0"/>
+ <xs:element name="RequiredVoltageRange" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResolutionModes" type="xs:string" minOccurs="0"/>
+ <xs:element name="RingSize" type="xs:string" minOccurs="0"/>
+ <xs:element name="RunningTime" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="ScentName" type="xs:string" minOccurs="0"/>
+ <xs:element name="SecondaryCacheSize" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="SettingType" type="xs:string" minOccurs="0"/>
+ <xs:element name="ShaftMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Size" type="xs:string" minOccurs="0"/>
+ <xs:element name="SizePerPearl" type="xs:string" minOccurs="0"/>
+ <xs:element name="SkillLevel" type="xs:string" minOccurs="0"/>
+ <xs:element name="SKU" type="xs:string" minOccurs="0"/>
+ <xs:element name="SoldInStores" type="xs:string" minOccurs="0"/>
+ <xs:element name="SoundCardDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="SpeakerCount" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="SpeakerDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="SpecialFeatures" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="StoneClarity" type="xs:string" minOccurs="0"/>
+ <xs:element name="StoneColor" type="xs:string" minOccurs="0"/>
+ <xs:element name="StoneCut" type="xs:string" minOccurs="0"/>
+ <xs:element name="StoneShape" type="xs:string" minOccurs="0"/>
+ <xs:element name="StoneWeight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Studio" type="xs:string" minOccurs="0"/>
+ <xs:element name="Style" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionLength" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="SupportedImageType" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="SupportedMediaSize" type="xs:string" minOccurs="0"/>
+ <xs:element name="SystemBusSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="SystemMemorySizeMax" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="SystemMemorySize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="SystemMemoryType" type="xs:string" minOccurs="0"/>
+ <xs:element name="TellingPageIndicator" type="xs:string" minOccurs="0"/>
+ <xs:element name="TheatricalReleaseDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalDiamondWeight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="TotalExternalBaysFree" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalFirewirePorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalGemWeight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="TotalInternalBaysFree" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalMetalWeight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="TotalNTSCPALPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalParallelPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPCCardSlots" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPCISlotsFree" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalSerialPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalSVideoOutPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalUSB2Ports" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalUSBPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalVGAOutPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="UPC" type="xs:string" minOccurs="0"/>
+ <xs:element name="VariationDenomination" type="xs:string" minOccurs="0"/>
+ <xs:element name="VariationDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="Warranty" type="xs:string" minOccurs="0"/>
+ <xs:element name="WatchMovementType" type="xs:string" minOccurs="0"/>
+ <xs:element name="WaterResistanceDepth" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="WEEETaxValue" type="tns:Price" minOccurs="0"/>
+ <xs:element name="WirelessMicrophoneFrequency" type="xs:nonNegativeInteger" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="MerchantItemAttributes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Actor" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Address" type="tns:Address" minOccurs="0"/>
+ <xs:element name="AmazonMaximumAge" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="AmazonMinimumAge" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="ApertureModes" type="xs:string" minOccurs="0"/>
+ <xs:element name="Artist" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="AspectRatio" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssemblyInstructions" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssemblyRequired" type="xs:string" minOccurs="0"/>
+ <xs:element name="AudienceRating" type="xs:string" minOccurs="0"/>
+ <xs:element name="AudioFormat" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Author" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="BackFinding" type="xs:string" minOccurs="0"/>
+ <xs:element name="BandMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="BatteriesIncluded" type="xs:string" minOccurs="0"/>
+ <xs:element name="BatteriesRequired" type="xs:string" minOccurs="0"/>
+ <xs:element name="Batteries" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="BatteryDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="BatteryType" type="xs:string" minOccurs="0"/>
+ <xs:element name="BezelMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Binding" type="xs:string" minOccurs="0"/>
+ <xs:element name="Brand" type="xs:string" minOccurs="0"/>
+ <xs:element name="CalendarType" type="xs:string" minOccurs="0"/>
+ <xs:element name="CameraManualFeatures" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="CaseDiameter" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="CaseMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="CaseThickness" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="CaseType" type="xs:string" minOccurs="0"/>
+ <xs:element name="CatalogNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="CDRWDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="ChainType" type="xs:string" minOccurs="0"/>
+ <xs:element name="ClaspType" type="xs:string" minOccurs="0"/>
+ <xs:element name="ClothingSize" type="xs:string" minOccurs="0"/>
+ <xs:element name="Color" type="xs:string" minOccurs="0"/>
+ <xs:element name="Compatibility" type="xs:string" minOccurs="0"/>
+ <xs:element name="ComputerHardwareType" type="xs:string" minOccurs="0"/>
+ <xs:element name="ComputerPlatform" type="xs:string" minOccurs="0"/>
+ <xs:element name="Connectivity" type="xs:string" minOccurs="0"/>
+ <xs:element name="ContinuousShootingSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Country" type="xs:string" minOccurs="0"/>
+ <xs:element name="CountryOfOrigin" type="xs:string" minOccurs="0"/>
+ <xs:element name="CPUManufacturer" type="xs:string" minOccurs="0"/>
+ <xs:element name="CPUSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="CPUType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Creator" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Role" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Cuisine" type="xs:string" minOccurs="0"/>
+ <xs:element name="Customizable" type="xs:string" minOccurs="0"/>
+ <xs:element name="DelayBetweenShots" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="DeliveryOption" type="xs:string" minOccurs="0"/>
+ <xs:element name="Department" type="xs:string" minOccurs="0"/>
+ <xs:element name="Description" type="xs:string" minOccurs="0"/>
+ <xs:element name="DeweyDecimalNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="DialColor" type="xs:string" minOccurs="0"/>
+ <xs:element name="DialWindowMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="DigitalZoom" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Director" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="DisplaySize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="DrumSetPieceQuantity" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="DVDLayers" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="DVDRWDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="DVDSides" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="DPCI" type="xs:string" minOccurs="0"/>
+ <xs:element name="EAN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Edition" type="xs:string" minOccurs="0"/>
+ <xs:element name="ESRBAgeRating" type="xs:string" minOccurs="0"/>
+ <xs:element name="ExternalDisplaySupportDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="FabricType" type="xs:string" minOccurs="0"/>
+ <xs:element name="FaxNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="Feature" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="FirstIssueLeadTime" type="tns:StringWithUnits" minOccurs="0"/>
+ <xs:element name="FloppyDiskDriveDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="Format" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="FixedShippingCharge" type="tns:Price" minOccurs="0"/>
+ <xs:element name="GemType" type="xs:string" minOccurs="0"/>
+ <xs:element name="GraphicsCardInterface" type="xs:string" minOccurs="0"/>
+ <xs:element name="GraphicsDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="GraphicsMemorySize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="GuitarAttribute" type="xs:string" minOccurs="0"/>
+ <xs:element name="GuitarBridgeSystem" type="xs:string" minOccurs="0"/>
+ <xs:element name="GuitarPickThickness" type="xs:string" minOccurs="0"/>
+ <xs:element name="GuitarPickupConfiguration" type="xs:string" minOccurs="0"/>
+ <xs:element name="HardDiskCount" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="HardDiskSize" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="HasAutoFocus" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasBurstMode" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasInCameraEditing" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasRedEyeReduction" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasSelfTimer" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasTripodMount" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasVideoOut" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasViewfinder" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HazardousMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="HoursOfOperation" type="xs:string" minOccurs="0"/>
+ <xs:element name="IncludedSoftware" type="xs:string" minOccurs="0"/>
+ <xs:element name="IncludesMp3Player" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="Indications" type="xs:string" minOccurs="0"/>
+ <xs:element name="Ingredients" type="xs:string" minOccurs="0"/>
+ <xs:element name="InstrumentKey" type="xs:string" minOccurs="0"/>
+ <xs:element name="IsAutographed" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="ISBN" type="xs:string" minOccurs="0"/>
+ <xs:element name="IsFragile" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="IsLabCreated" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="IsMemorabilia" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="ISOEquivalent" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="IssuesPerYear" type="xs:string" minOccurs="0"/>
+ <xs:element name="ItemDimensions" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Height" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Length" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Weight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Width" type="tns:DecimalWithUnits" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="KeyboardDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="Label" type="xs:string" minOccurs="0"/>
+ <xs:element name="Languages" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Language" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string"/>
+ <xs:element name="Type" type="xs:string"/>
+ <xs:element name="AudioFormat" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="LegalDisclaimer" type="xs:string" minOccurs="0"/>
+ <xs:element name="LineVoltage" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListPrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="MacroFocusRange" type="xs:string" minOccurs="0"/>
+ <xs:element name="MagazineType" type="xs:string" minOccurs="0"/>
+ <xs:element name="MalletHardness" type="xs:string" minOccurs="0"/>
+ <xs:element name="Manufacturer" type="xs:string" minOccurs="0"/>
+ <xs:element name="ManufacturerLaborWarrantyDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="ManufacturerMaximumAge" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="ManufacturerMinimumAge" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="ManufacturerPartsWarrantyDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaximumAperture" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumColorDepth" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaximumFocalLength" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumHighResolutionImages" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumHorizontalResolution" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumLowResolutionImages" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaximumResolution" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumShutterSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumVerticalResolution" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumWeightRecommendation" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MemorySlotsAvailable" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="MetalStamp" type="xs:string" minOccurs="0"/>
+ <xs:element name="MetalType" type="xs:string" minOccurs="0"/>
+ <xs:element name="MiniMovieDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="MinimumFocalLength" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MinimumShutterSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Model" type="xs:string" minOccurs="0"/>
+ <xs:element name="ModelYear" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="ModemDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="MonitorSize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MonitorViewableDiagonalSize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MouseDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="MPN" type="xs:string" minOccurs="0"/>
+ <xs:element name="MusicalStyle" type="xs:string" minOccurs="0"/>
+ <xs:element name="NativeResolution" type="xs:string" minOccurs="0"/>
+ <xs:element name="Neighborhood" type="xs:string" minOccurs="0"/>
+ <xs:element name="NetworkInterfaceDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="NotebookDisplayTechnology" type="xs:string" minOccurs="0"/>
+ <xs:element name="NotebookPointingDeviceDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="NumberOfDiscs" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfIssues" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfItems" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfKeys" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfPearls" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfRapidFireShots" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfStones" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfStrings" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfTracks" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="OpticalZoom" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="OriginalReleaseDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="OutputWattage" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="PackageDimensions" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Height" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Length" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Weight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Width" type="tns:DecimalWithUnits" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PearlLustre" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlMinimumColor" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlShape" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlStringingMethod" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlSurfaceBlemishes" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlType" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlUniformity" type="xs:string" minOccurs="0"/>
+ <xs:element name="PhoneNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="PhotoFlashType" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="PictureFormat" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Platform" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="PriceRating" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="ProcessorCount" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="ProductGroup" type="xs:string" minOccurs="0"/>
+ <xs:element name="PromotionalTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="POBoxShippingExcluded" type="xs:string" minOccurs="0"/>
+ <xs:element name="PublicationDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="Publisher" type="xs:string" minOccurs="0"/>
+ <xs:element name="PurchasingChannel" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ReadingLevel" type="xs:string" minOccurs="0"/>
+ <xs:element name="RecorderTrackCount" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="RegionCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="RegionOfOrigin" type="xs:string" minOccurs="0"/>
+ <xs:element name="ReleaseDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="ReturnMethod" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="RemovableMemory" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResolutionModes" type="xs:string" minOccurs="0"/>
+ <xs:element name="ReturnPolicy" type="xs:string" minOccurs="0"/>
+ <xs:element name="RingSize" type="xs:string" minOccurs="0"/>
+ <xs:element name="SafetyWarning" type="xs:string" minOccurs="0"/>
+ <xs:element name="SalesRestriction" type="xs:string" minOccurs="0"/>
+ <xs:element name="SecondaryCacheSize" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="SettingType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Size" type="xs:string" minOccurs="0"/>
+ <xs:element name="SKU" type="xs:string" minOccurs="0"/>
+ <xs:element name="SoldInStores" type="xs:string" minOccurs="0"/>
+ <xs:element name="SizePerPearl" type="xs:string" minOccurs="0"/>
+ <xs:element name="SkillLevel" type="xs:string" minOccurs="0"/>
+ <xs:element name="SoundCardDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="SpeakerCount" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="SpeakerDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="SpecialFeatures" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="StoneClarity" type="xs:string" minOccurs="0"/>
+ <xs:element name="StoneColor" type="xs:string" minOccurs="0"/>
+ <xs:element name="StoneCut" type="xs:string" minOccurs="0"/>
+ <xs:element name="StoneShape" type="xs:string" minOccurs="0"/>
+ <xs:element name="StoneWeight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Studio" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionLength" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="SupportedImageType" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="SystemBusSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="SystemMemorySizeMax" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="SystemMemorySize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="SystemMemoryType" type="xs:string" minOccurs="0"/>
+ <xs:element name="TellingPageIndicator" type="xs:string" minOccurs="0"/>
+ <xs:element name="TheatricalReleaseDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalDiamondWeight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="TotalExternalBaysFree" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalFirewirePorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalGemWeight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="TotalInternalBaysFree" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalMetalWeight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="TotalNTSCPALPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalParallelPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPCCardSlots" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPCISlotsFree" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalSerialPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalSVideoOutPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalUSB2Ports" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalUSBPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalVGAOutPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="UPC" type="xs:string" minOccurs="0"/>
+ <xs:element name="VariationDenomination" type="xs:string" minOccurs="0"/>
+ <xs:element name="VariationDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="VendorRebate" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Type" type="xs:string" minOccurs="0"/>
+ <xs:element name="StartDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="EndDate" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Warranty" type="xs:string" minOccurs="0"/>
+ <xs:element name="WatchMovementType" type="xs:string" minOccurs="0"/>
+ <xs:element name="WebsiteBuyability" type="xs:string" minOccurs="0"/>
+ <xs:element name="WaterResistanceDepth" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="WirelessMicrophoneFrequency" type="xs:nonNegativeInteger" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="NonNegativeIntegerWithUnits">
+ <xs:simpleContent>
+ <xs:extension base="xs:nonNegativeInteger">
+ <xs:attribute name="Units" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:complexType name="DecimalWithUnits">
+ <xs:simpleContent>
+ <xs:extension base="xs:decimal">
+ <xs:attribute name="Units" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:complexType name="StringWithUnits">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Units" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:simpleType name="positiveIntegerOrAll">
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:positiveInteger"/>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="All"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType -->
+ </xs:schema>
+ </types>
+ <!-- message name="HelpRequestMsg">
+ <part name="body" element="tns:Help"/>
+ </message>
+ <message name="HelpResponseMsg">
+ <part name="body" element="tns:HelpResponse"/>
+ </message>
+ <message name="ItemSearchRequestMsg">
+ <part name="body" element="tns:ItemSearch"/>
+ </message>
+ <message name="ItemSearchResponseMsg">
+ <part name="body" element="tns:ItemSearchResponse"/>
+ </message>
+ <message name="ItemLookupRequestMsg">
+ <part name="body" element="tns:ItemLookup"/>
+ </message>
+ <message name="ItemLookupResponseMsg">
+ <part name="body" element="tns:ItemLookupResponse"/>
+ </message>
+ <message name="BrowseNodeLookupRequestMsg">
+ <part name="body" element="tns:BrowseNodeLookup"/>
+ </message>
+ <message name="BrowseNodeLookupResponseMsg">
+ <part name="body" element="tns:BrowseNodeLookupResponse"/>
+ </message>
+ <message name="ListSearchRequestMsg">
+ <part name="body" element="tns:ListSearch"/>
+ </message>
+ <message name="ListSearchResponseMsg">
+ <part name="body" element="tns:ListSearchResponse"/>
+ </message>
+ <message name="ListLookupRequestMsg">
+ <part name="body" element="tns:ListLookup"/>
+ </message>
+ <message name="ListLookupResponseMsg">
+ <part name="body" element="tns:ListLookupResponse"/>
+ </message>
+ <message name="CustomerContentSearchRequestMsg">
+ <part name="body" element="tns:CustomerContentSearch"/>
+ </message>
+ <message name="CustomerContentSearchResponseMsg">
+ <part name="body" element="tns:CustomerContentSearchResponse"/>
+ </message>
+ <message name="CustomerContentLookupRequestMsg">
+ <part name="body" element="tns:CustomerContentLookup"/>
+ </message>
+ <message name="CustomerContentLookupResponseMsg">
+ <part name="body" element="tns:CustomerContentLookupResponse"/>
+ </message>
+ <message name="SimilarityLookupRequestMsg">
+ <part name="body" element="tns:SimilarityLookup"/>
+ </message>
+ <message name="SimilarityLookupResponseMsg">
+ <part name="body" element="tns:SimilarityLookupResponse"/>
+ </message>
+ <message name="SellerLookupRequestMsg">
+ <part name="body" element="tns:SellerLookup"/>
+ </message>
+ <message name="SellerLookupResponseMsg">
+ <part name="body" element="tns:SellerLookupResponse"/>
+ </message -->
+ <message name="CartGetRequestMsg">
+ <part name="body" element="tns:CartGet"/>
+ </message>
+ <message name="CartGetResponseMsg">
+ <part name="body" element="tns:CartGetResponse"/>
+ </message>
+ <message name="CartAddRequestMsg">
+ <part name="body" element="tns:CartAdd"/>
+ </message>
+ <message name="CartAddResponseMsg">
+ <part name="body" element="tns:CartAddResponse"/>
+ </message>
+ <message name="CartCreateRequestMsg">
+ <part name="body" element="tns:CartCreate"/>
+ </message>
+ <message name="CartCreateResponseMsg">
+ <part name="body" element="tns:CartCreateResponse"/>
+ </message>
+ <message name="CartModifyRequestMsg">
+ <part name="body" element="tns:CartModify"/>
+ </message>
+ <message name="CartModifyResponseMsg">
+ <part name="body" element="tns:CartModifyResponse"/>
+ </message>
+ <message name="CartClearRequestMsg">
+ <part name="body" element="tns:CartClear"/>
+ </message>
+ <message name="CartClearResponseMsg">
+ <part name="body" element="tns:CartClearResponse"/>
+ </message>
+ <!-- message name="TransactionLookupRequestMsg">
+ <part name="body" element="tns:TransactionLookup"/>
+ </message>
+ <message name="TransactionLookupResponseMsg">
+ <part name="body" element="tns:TransactionLookupResponse"/>
+ </message>
+ <message name="SellerListingSearchRequestMsg">
+ <part name="body" element="tns:SellerListingSearch"/>
+ </message>
+ <message name="SellerListingSearchResponseMsg">
+ <part name="body" element="tns:SellerListingSearchResponse"/>
+ </message>
+ <message name="SellerListingLookupRequestMsg">
+ <part name="body" element="tns:SellerListingLookup"/>
+ </message>
+ <message name="SellerListingLookupResponseMsg">
+ <part name="body" element="tns:SellerListingLookupResponse"/>
+ </message>
+ <message name="MultiOperationRequestMsg">
+ <part name="body" element="tns:MultiOperation"/>
+ </message>
+ <message name="MultiOperationResponseMsg">
+ <part name="body" element="tns:MultiOperationResponse"/>
+ </message -->
+ <portType name="AWSECommerceServicePortType">
+ <!-- operation name="Help">
+ <input message="tns:HelpRequestMsg"/>
+ <output message="tns:HelpResponseMsg"/>
+ </operation>
+ <operation name="ItemSearch">
+ <input message="tns:ItemSearchRequestMsg"/>
+ <output message="tns:ItemSearchResponseMsg"/>
+ </operation>
+ <operation name="ItemLookup">
+ <input message="tns:ItemLookupRequestMsg"/>
+ <output message="tns:ItemLookupResponseMsg"/>
+ </operation>
+ <operation name="BrowseNodeLookup">
+ <input message="tns:BrowseNodeLookupRequestMsg"/>
+ <output message="tns:BrowseNodeLookupResponseMsg"/>
+ </operation>
+ <operation name="ListSearch">
+ <input message="tns:ListSearchRequestMsg"/>
+ <output message="tns:ListSearchResponseMsg"/>
+ </operation>
+ <operation name="ListLookup">
+ <input message="tns:ListLookupRequestMsg"/>
+ <output message="tns:ListLookupResponseMsg"/>
+ </operation>
+ <operation name="CustomerContentSearch">
+ <input message="tns:CustomerContentSearchRequestMsg"/>
+ <output message="tns:CustomerContentSearchResponseMsg"/>
+ </operation>
+ <operation name="CustomerContentLookup">
+ <input message="tns:CustomerContentLookupRequestMsg"/>
+ <output message="tns:CustomerContentLookupResponseMsg"/>
+ </operation>
+ <operation name="SimilarityLookup">
+ <input message="tns:SimilarityLookupRequestMsg"/>
+ <output message="tns:SimilarityLookupResponseMsg"/>
+ </operation>
+ <operation name="SellerLookup">
+ <input message="tns:SellerLookupRequestMsg"/>
+ <output message="tns:SellerLookupResponseMsg"/>
+ </operation -->
+ <operation name="CartGet">
+ <input message="tns:CartGetRequestMsg"/>
+ <output message="tns:CartGetResponseMsg"/>
+ </operation>
+ <operation name="CartAdd">
+ <input message="tns:CartAddRequestMsg"/>
+ <output message="tns:CartAddResponseMsg"/>
+ </operation>
+ <operation name="CartCreate">
+ <input message="tns:CartCreateRequestMsg"/>
+ <output message="tns:CartCreateResponseMsg"/>
+ </operation>
+ <operation name="CartModify">
+ <input message="tns:CartModifyRequestMsg"/>
+ <output message="tns:CartModifyResponseMsg"/>
+ </operation>
+ <operation name="CartClear">
+ <input message="tns:CartClearRequestMsg"/>
+ <output message="tns:CartClearResponseMsg"/>
+ </operation>
+ <!-- operation name="TransactionLookup">
+ <input message="tns:TransactionLookupRequestMsg"/>
+ <output message="tns:TransactionLookupResponseMsg"/>
+ </operation>
+ <operation name="SellerListingSearch">
+ <input message="tns:SellerListingSearchRequestMsg"/>
+ <output message="tns:SellerListingSearchResponseMsg"/>
+ </operation>
+ <operation name="SellerListingLookup">
+ <input message="tns:SellerListingLookupRequestMsg"/>
+ <output message="tns:SellerListingLookupResponseMsg"/>
+ </operation>
+ <operation name="MultiOperation">
+ <input message="tns:MultiOperationRequestMsg"/>
+ <output message="tns:MultiOperationResponseMsg"/>
+ </operation -->
+ </portType>
+ <binding name="AWSECommerceServiceBinding" type="tns:AWSECommerceServicePortType">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <!-- operation name="Help">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="ItemSearch">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="ItemLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="BrowseNodeLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="ListSearch">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="ListLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="CustomerContentSearch">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="CustomerContentLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="SimilarityLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="SellerLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation -->
+ <operation name="CartGet">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="CartCreate">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="CartAdd">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="CartModify">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="CartClear">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <!-- operation name="TransactionLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="SellerListingSearch">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="SellerListingLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="MultiOperation">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation -->
+ </binding>
+ <service name="ProxyService">
+ <port name="AWSECommerceServicePort" binding="tns:AWSECommerceServiceBinding">
+ <soap:address location="http://localhost:8080/ShoppingStoreServiceComponent"/>
+ </port>
+ </service>
+</definitions>
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/pom.xml b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/pom.xml
new file mode 100644
index 0000000000..20896bc089
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/pom.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-catalog-amazon</artifactId>
+ <packaging>jar</packaging>
+ <name>Apache Tuscany SCA Store Tutorial Amazon Catalog</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-embedded</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-atom-abdera</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-databinding-saxon</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-xquery</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.2</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/CatalogClient.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/CatalogClient.java
new file mode 100644
index 0000000000..de67e597ac
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/CatalogClient.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package catalog;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+/**
+ * This client program to invoke the Mortgage LoanApproval service
+ */
+public class CatalogClient {
+
+ public static void main(String[] args) throws Exception {
+ System.err.println("Please make sure you have the ids configured in catalog.composite");
+ SCADomain domain = SCADomain.newInstance("catalog.composite");
+ CatalogService ebay = domain.getService(CatalogService.class, "EBayCatalogService");
+ ebay.get();
+ CatalogService amazon = domain.getService(CatalogService.class, "AmazonCatalogService");
+ amazon.get();
+
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/CatalogService.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/CatalogService.java
new file mode 100644
index 0000000000..c5db53621c
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/CatalogService.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package catalog;
+
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface CatalogService {
+ String[] get();
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/amazon/AmazonCatalogService.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/amazon/AmazonCatalogService.java
new file mode 100644
index 0000000000..e557950b24
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/amazon/AmazonCatalogService.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package catalog.amazon;
+
+import org.apache.tuscany.sca.databinding.annotation.DataBinding;
+import org.oasisopen.sca.annotation.Remotable;
+import org.w3c.dom.Node;
+
+@Remotable
+@DataBinding(value="org.w3c.dom.Node", wrapped=true)
+public interface AmazonCatalogService {
+ Node ItemSearch(Node requestWrapper);
+
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/amazon/AmazonCatalogServiceImpl.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/amazon/AmazonCatalogServiceImpl.java
new file mode 100644
index 0000000000..8b411644ce
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/amazon/AmazonCatalogServiceImpl.java
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package catalog.amazon;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.sca.databinding.impl.DOMHelper;
+import org.oasisopen.sca.annotation.Property;
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Service;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import catalog.CatalogService;
+import catalog.util.XPathHelper;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Service(CatalogService.class)
+public class AmazonCatalogServiceImpl implements CatalogService {
+ private static final String AMAZON_TNS = "http://webservices.amazon.com/AWSECommerceService/2007-09-21";
+
+ @Reference(name = "amazonFindItems")
+ protected AmazonCatalogService itemSearch;
+
+ @Property(name="AWSAccessKeyId", required=true)
+ protected String accessKeyId;
+
+ private Node amazonItemSearch(String keywords) throws Exception {
+ Document doc = DOMHelper.newDocument();
+ Element wrapper = doc.createElementNS(AMAZON_TNS, "ItemSearch");
+ doc.appendChild(wrapper);
+ Element key = doc.createElementNS(AMAZON_TNS, "AWSAccessKeyId");
+ key.appendChild(doc.createTextNode(accessKeyId));
+ wrapper.appendChild(key);
+
+ Element request = doc.createElementNS(AMAZON_TNS, "Request");
+ wrapper.appendChild(request);
+
+ Element keywordsElement = doc.createElementNS(AMAZON_TNS, "Keywords");
+ keywordsElement.appendChild(doc.createTextNode(keywords));
+ request.appendChild(keywordsElement);
+
+ Element searchIndex = doc.createElementNS(AMAZON_TNS, "SearchIndex");
+ searchIndex.appendChild(doc.createTextNode("All"));
+ request.appendChild(searchIndex);
+
+ // System.out.println(new Node2String().transform(doc, null));
+ Node result = itemSearch.ItemSearch(doc);
+ return result;
+ }
+
+ public String[] get() {
+ try {
+ Node list = amazonItemSearch("Fruit");
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("a", AMAZON_TNS);
+ NodeList nodes =
+ XPathHelper.selectNodes("//a:Item/a:ItemAttributes[a:ProductGroup='Grocery']/a:Title", list, map);
+ String titles[] = new String[nodes.getLength()];
+ System.out.println("Amazon catalog:");
+ for (int i = 0; i < nodes.getLength(); i++) {
+ titles[i] = nodes.item(i).getTextContent();
+ System.out.println("[" + i + "]" + titles[i]);
+ }
+
+ return titles;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/ebay/EBayCatalogService.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/ebay/EBayCatalogService.java
new file mode 100644
index 0000000000..a6cd356d5a
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/ebay/EBayCatalogService.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package catalog.ebay;
+
+import org.oasisopen.sca.annotation.Remotable;
+import org.w3c.dom.Node;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Remotable
+public interface EBayCatalogService {
+ Node FindItems(Node request);
+ Node GetUserProfile(Node request);
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/ebay/EBayCatalogServiceImpl.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/ebay/EBayCatalogServiceImpl.java
new file mode 100644
index 0000000000..d7fc263740
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/ebay/EBayCatalogServiceImpl.java
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package catalog.ebay;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.sca.databinding.impl.DOMHelper;
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Service;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import catalog.CatalogService;
+import catalog.util.XPathHelper;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Service(CatalogService.class)
+public class EBayCatalogServiceImpl implements CatalogService {
+ private static final String EBAY_TNS = "urn:ebay:apis:eBLBaseComponents";
+
+ @Reference(name = "eBayFindItems")
+ protected EBayCatalogService findItems;
+
+ @Reference(name = "eBayGetUserProfile")
+ protected EBayCatalogService getUserProfile;
+
+ private Node eBayFindItems(String keywords, int maxEntries) throws Exception {
+ Document doc = DOMHelper.newDocument();
+ Element request = doc.createElementNS(EBAY_TNS, "FindItemsRequest");
+ doc.appendChild(request);
+ Element keywordsElement = doc.createElementNS(EBAY_TNS, "QueryKeywords");
+ keywordsElement.appendChild(doc.createTextNode(keywords));
+ Element maxEntriesElement = doc.createElementNS(EBAY_TNS, "MaxEntries");
+ maxEntriesElement.appendChild(doc.createTextNode(String.valueOf(maxEntries)));
+ Element messageIDElement = doc.createElementNS(EBAY_TNS, "MessageID");
+ messageIDElement.appendChild(doc.createTextNode("001"));
+ request.appendChild(maxEntriesElement);
+ request.appendChild(keywordsElement);
+ request.appendChild(messageIDElement);
+ // System.out.println(new Node2String().transform(doc, null));
+ Node result = findItems.FindItems(doc);
+ return result;
+ }
+
+ private Node eBayGetUserProfile(String userID) throws Exception {
+ Document doc = DOMHelper.newDocument();
+ Element req = doc.createElementNS(EBAY_TNS, "GetUserProfileRequest");
+ doc.appendChild(req);
+ Element user = doc.createElementNS(EBAY_TNS, "UserID");
+ user.appendChild(doc.createTextNode(userID));
+ Element msgID = doc.createElementNS(EBAY_TNS, "MessageID");
+ msgID.appendChild(doc.createTextNode("001"));
+ req.appendChild(user);
+ // System.out.println(new Node2String().transform(doc, null));
+ Node result = getUserProfile.GetUserProfile(doc);
+ return result;
+ }
+
+ public String[] get() {
+ try {
+ Node items = eBayFindItems("Fruit", 10);
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("e", EBAY_TNS);
+ NodeList nodes = XPathHelper.selectNodes("//e:Item/e:Title", items, map);
+ String[] titles = new String[nodes.getLength()];
+ System.out.println("eBay catalog:");
+ for (int i = 0; i < nodes.getLength(); i++) {
+ titles[i] = nodes.item(i).getTextContent();
+ System.out.println("[" + i + "]" + titles[i]);
+ }
+ return titles;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/util/NamespaceContextImpl.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/util/NamespaceContextImpl.java
new file mode 100644
index 0000000000..dcd14f5530
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/util/NamespaceContextImpl.java
@@ -0,0 +1,126 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package catalog.util;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.NamespaceContext;
+
+public class NamespaceContextImpl implements NamespaceContext {
+ private NamespaceContext parent;
+ private Map<String, String> map = new HashMap<String, String>();
+
+ /**
+ * @param parent
+ */
+ public NamespaceContextImpl(NamespaceContext parent, Map<String, String> map) {
+ super();
+ this.parent = parent;
+ if (parent == null) {
+ this.map.put("xml", "http://www.w3.org/XML/1998/namespace");
+ this.map.put("xmlns", "http://www.w3.org/2000/xmlns/");
+ }
+ if (map != null) {
+ this.map.putAll(map);
+ }
+ }
+
+ public String getNamespaceURI(String prefix) {
+ if (prefix == null) {
+ throw new IllegalArgumentException("Prefix is null");
+ }
+
+ String ns = (String)map.get(prefix);
+ if (ns != null) {
+ return ns;
+ }
+ if (parent != null) {
+ return parent.getNamespaceURI(prefix);
+ }
+ return null;
+ }
+
+ public String getPrefix(String nsURI) {
+ if (nsURI == null)
+ throw new IllegalArgumentException("Namespace is null");
+ for (Iterator<Map.Entry<String, String>> i = map.entrySet().iterator(); i.hasNext();) {
+ Map.Entry<String, String> entry = i.next();
+ if (entry.getValue().equals(nsURI)) {
+ return entry.getKey();
+ }
+ }
+ if (parent != null) {
+ return parent.getPrefix(nsURI);
+ }
+ return null;
+ }
+
+ public Iterator getPrefixes(String nsURI) {
+ List<String> prefixList = new ArrayList<String>();
+ for (Iterator<Map.Entry<String, String>> i = map.entrySet().iterator(); i.hasNext();) {
+ Map.Entry<String, String> entry = i.next();
+ if (entry.getValue().equals(nsURI)) {
+ prefixList.add(entry.getKey());
+ }
+ }
+ final Iterator currentIterator = prefixList.iterator();
+ final Iterator parentIterator = parent != null ? null : parent.getPrefixes(nsURI);
+ return new Iterator() {
+
+ public boolean hasNext() {
+ return currentIterator.hasNext() || (parentIterator != null && parentIterator.hasNext());
+ }
+
+ public Object next() {
+ if (!hasNext()) {
+ throw new IllegalStateException("End of iterator has reached");
+ }
+ return currentIterator.hasNext() ? currentIterator.next() : parentIterator.next();
+ }
+
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+
+ };
+
+ }
+
+ public void register(String prefix, String ns) {
+ map.put(prefix, ns);
+ }
+
+ public NamespaceContext getParent() {
+ return parent;
+ }
+
+ public String toString() {
+ StringBuffer sb = new StringBuffer(map.toString());
+ if (parent != null) {
+ sb.append("\nParent: ");
+ sb.append(parent);
+ }
+ return sb.toString();
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/util/XPathHelper.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/util/XPathHelper.java
new file mode 100644
index 0000000000..850ba7d8ae
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/java/catalog/util/XPathHelper.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package catalog.util;
+
+import java.util.Map;
+
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpression;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class XPathHelper {
+
+ public static Node selectNode(String xpath, Node root, Map<String, String> namespaces)
+ throws XPathExpressionException {
+ XPath path = XPathFactory.newInstance().newXPath();
+ NamespaceContextImpl context = new NamespaceContextImpl(null, namespaces);
+ path.setNamespaceContext(context);
+ XPathExpression exp = path.compile(xpath);
+ return (Node)exp.evaluate(root, XPathConstants.NODE);
+ }
+
+ public static NodeList selectNodes(String xpath, Node root, Map<String, String> namespaces)
+ throws XPathExpressionException {
+ XPath path = XPathFactory.newInstance().newXPath();
+ NamespaceContextImpl context = new NamespaceContextImpl(null, namespaces);
+ path.setNamespaceContext(context);
+ XPathExpression exp = path.compile(xpath);
+ return (NodeList)exp.evaluate(root, XPathConstants.NODESET);
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/resources/catalog.composite b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/resources/catalog.composite
new file mode 100644
index 0000000000..d8105b7465
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/resources/catalog.composite
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://catalog" name="Shopping">
+
+ <component name="EBayCatalogService">
+ <implementation.java class="catalog.ebay.EBayCatalogServiceImpl" />
+ </component>
+
+ <component name="AmazonCatalogService">
+ <implementation.java class="catalog.amazon.AmazonCatalogServiceImpl" />
+ <property name="AWSAccessKeyId">[Your Amazon Web Service Access Key Id]</property>
+ </component>
+
+ <reference name="eBayFindItems"
+ promote="EBayCatalogService/eBayFindItems">
+ <binding.ws
+ wsdlElement="urn:ebay:apis:eBLBaseComponents#wsdl.binding(ShoppingBinding)"
+ uri="http://open.api.ebay.com/shopping?version=535&amp;appid=[Your eBay application id]&amp;callname=FindItems&amp;requestencoding=SOAP" />
+ </reference>
+
+ <reference name="eBayGetUserProfile"
+ promote="EBayCatalogService/eBayGetUserProfile">
+ <binding.ws
+ wsdlElement="urn:ebay:apis:eBLBaseComponents#wsdl.binding(ShoppingBinding)"
+ uri="http://open.api.ebay.com/shopping?version=535&amp;appid=[Your eBay application id]&amp;callname=GetUserProfile&amp;requestencoding=SOAP" />
+ </reference>
+
+ <reference name="amazonFindItems"
+ promote="AmazonCatalogService/amazonFindItems">
+ <binding.ws
+ wsdlElement="http://webservices.amazon.com/AWSECommerceService/2007-09-21#wsdl.binding(AWSECommerceServiceBinding)"
+ uri="http://soap.amazon.com/onca/soap?Service=AWSECommerceService&amp;Operation=ItemSearch" />
+ </reference>
+
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/resources/wsdl/AWSECommerceService.wsdl b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/resources/wsdl/AWSECommerceService.wsdl
new file mode 100644
index 0000000000..55514fff7a
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/resources/wsdl/AWSECommerceService.wsdl
@@ -0,0 +1,3244 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://webservices.amazon.com/AWSECommerceService/2007-09-21" targetNamespace="http://webservices.amazon.com/AWSECommerceService/2007-09-21">
+ <types>
+ <xs:schema targetNamespace="http://webservices.amazon.com/AWSECommerceService/2007-09-21" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://webservices.amazon.com/AWSECommerceService/2007-09-21" elementFormDefault="qualified">
+
+ <xs:element name="Bin">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="BinName" type="xs:string" />
+ <xs:element name="BinItemCount" type="xs:positiveInteger" />
+ <xs:element name="BinParameter" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string" />
+ <xs:element name="Value" type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SearchBinSet">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Bin" minOccurs="0" maxOccurs="unbounded" />
+ </xs:sequence>
+ <xs:attribute name="NarrowBy" type="xs:string" use="required" />
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SearchBinSets">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:SearchBinSet" minOccurs="0" maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Help">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:HelpRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:HelpRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="HelpRequest">
+ <xs:sequence>
+ <xs:element name="About" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="HelpType" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Operation"/>
+ <xs:enumeration value="ResponseGroup"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="ItemSearch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:ItemSearchRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:ItemSearchRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="ItemSearchRequest">
+ <xs:sequence>
+ <xs:element name="Actor" type="xs:string" minOccurs="0"/>
+ <xs:element name="Artist" type="xs:string" minOccurs="0"/>
+ <xs:element name="Availability" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Available"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element ref="tns:AudienceRating" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Author" type="xs:string" minOccurs="0"/>
+ <xs:element name="Brand" type="xs:string" minOccurs="0"/>
+ <xs:element name="BrowseNode" type="xs:string" minOccurs="0"/>
+ <xs:element name="City" type="xs:string" minOccurs="0"/>
+ <xs:element name="Composer" type="xs:string" minOccurs="0"/>
+ <xs:element ref="tns:Condition" minOccurs="0"/>
+ <xs:element name="Conductor" type="xs:string" minOccurs="0"/>
+ <xs:element name="Count" type="xs:positiveInteger" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ <aws-se:excludeFrom>partner</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Cuisine" type="xs:string" minOccurs="0"/>
+ <xs:element ref="tns:DeliveryMethod" minOccurs="0"/>
+ <xs:element name="Director" type="xs:string" minOccurs="0"/>
+ <xs:element name="FutureLaunchDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="ISPUPostalCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="ItemPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="Keywords" type="xs:string" minOccurs="0"/>
+ <xs:element name="Manufacturer" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaximumPrice" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="MerchantId" type="xs:string" minOccurs="0"/>
+ <xs:element name="MinimumPrice" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="MusicLabel" type="xs:string" minOccurs="0"/>
+ <xs:element name="Neighborhood" type="xs:string" minOccurs="0"/>
+ <xs:element name="Orchestra" type="xs:string" minOccurs="0"/>
+ <xs:element name="PostalCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="Power" type="xs:string" minOccurs="0"/>
+ <xs:element name="Publisher" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ReviewSort" type="xs:string" minOccurs="0"/>
+ <xs:element name="SearchIndex" type="xs:string" minOccurs="0"/>
+ <xs:element name="Sort" type="xs:string" minOccurs="0"/>
+ <xs:element name="State" type="xs:string" minOccurs="0"/>
+ <xs:element name="TagPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="TagsPerPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="TagSort" type="xs:string" minOccurs="0"/>
+ <xs:element name="TextStream" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ <xs:element name="ReleaseDate" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="ItemLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:ItemLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:ItemLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="ItemLookupRequest">
+ <xs:sequence>
+ <xs:element ref="tns:Condition" minOccurs="0"/>
+ <xs:element ref="tns:DeliveryMethod" minOccurs="0"/>
+ <xs:element name="FutureLaunchDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="IdType" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ASIN"/>
+ <xs:enumeration value="UPC"/>
+ <xs:enumeration value="SKU"/>
+ <xs:enumeration value="EAN"/>
+ <xs:enumeration value="ISBN"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="ISPUPostalCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="MerchantId" type="xs:string" minOccurs="0"/>
+ <xs:element name="OfferPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="ItemId" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ReviewPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="ReviewSort" type="xs:string" minOccurs="0"/>
+ <xs:element name="SearchIndex" type="xs:string" minOccurs="0"/>
+ <xs:element name="SearchInsideKeywords" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ <aws-se:excludeFrom>partner</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TagPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="TagsPerPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="TagSort" type="xs:string" minOccurs="0"/>
+ <xs:element name="VariationPage" type="tns:positiveIntegerOrAll" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="ListSearch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:ListSearchRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:ListSearchRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="ListSearchRequest">
+ <xs:sequence>
+ <xs:element name="City" type="xs:string" minOccurs="0"/>
+ <xs:element name="Email" type="xs:string" minOccurs="0"/>
+ <xs:element name="FirstName" type="xs:string" minOccurs="0"/>
+ <xs:element name="LastName" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="ListType">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="WishList"/>
+ <xs:enumeration value="WeddingRegistry"/>
+ <xs:enumeration value="BabyRegistry"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="State" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="ListLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:ListLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:ListLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="ListLookupRequest">
+ <xs:sequence>
+ <xs:element ref="tns:Condition" minOccurs="0"/>
+ <xs:element ref="tns:DeliveryMethod" minOccurs="0"/>
+ <xs:element name="ISPUPostalCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListId" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListType" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="WishList"/>
+ <xs:enumeration value="Listmania"/>
+ <xs:enumeration value="WeddingRegistry"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="MerchantId" type="xs:string" minOccurs="0"/>
+ <xs:element name="ProductGroup" type="xs:string" minOccurs="0"/>
+ <xs:element name="ProductPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ReviewSort" type="xs:string" minOccurs="0"/>
+ <xs:element name="Sort" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CustomerContentSearch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CustomerContentSearchRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CustomerContentSearchRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CustomerContentSearchRequest">
+ <xs:sequence>
+ <xs:element name="CustomerPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="Email" type="xs:string" minOccurs="0"/>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CustomerContentLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CustomerContentLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CustomerContentLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CustomerContentLookupRequest">
+ <xs:sequence>
+ <xs:element name="CustomerId" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ReviewPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="TagPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="TagsPerPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="TagSort" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="SimilarityLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:SimilarityLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:SimilarityLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="SimilarityLookupRequest">
+ <xs:sequence>
+ <xs:element ref="tns:Condition" minOccurs="0"/>
+ <xs:element ref="tns:DeliveryMethod" minOccurs="0"/>
+ <xs:element name="ItemId" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ISPUPostalCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="MerchantId" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ReviewSort" type="xs:string" minOccurs="0"/>
+ <xs:element name="SimilarityType" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Intersection"/>
+ <xs:enumeration value="Random"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="SellerLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:SellerLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:SellerLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="SellerLookupRequest">
+ <xs:sequence>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="SellerId" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="FeedbackPage" type="xs:positiveInteger" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CartGet">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CartGetRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CartGetRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CartGetRequest">
+ <xs:sequence>
+ <xs:element name="CartId" type="xs:string" minOccurs="0"/>
+ <xs:element name="HMAC" type="xs:string" minOccurs="0"/>
+ <xs:element name="MergeCart" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CartAdd">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CartAddRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CartAddRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CartAddRequest">
+ <xs:sequence>
+ <xs:element name="CartId" type="xs:string" minOccurs="0"/>
+ <xs:element name="HMAC" type="xs:string" minOccurs="0"/>
+ <xs:element name="MergeCart" type="xs:string" minOccurs="0"/>
+ <xs:element name="Items" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Item" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="OfferListingId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Quantity" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListItemId" type="xs:string" minOccurs="0"/>
+ <xs:element name="MetaData" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Key" type="xs:string" minOccurs="0"/>
+ <xs:element name="Value" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CartCreate">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CartCreateRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CartCreateRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CartCreateRequest">
+ <xs:sequence>
+ <xs:element name="MergeCart" type="xs:string" minOccurs="0"/>
+ <xs:element name="Items" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Item" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="OfferListingId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Quantity" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListItemId" type="xs:string" minOccurs="0"/>
+ <xs:element name="MetaData" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Key" type="xs:string" minOccurs="0"/>
+ <xs:element name="Value" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CartModify">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CartModifyRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CartModifyRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CartModifyRequest">
+ <xs:sequence>
+ <xs:element name="CartId" type="xs:string" minOccurs="0"/>
+ <xs:element name="HMAC" type="xs:string" minOccurs="0"/>
+ <xs:element name="MergeCart" type="xs:string" minOccurs="0"/>
+ <xs:element name="Items" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Item" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Action" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="MoveToCart"/>
+ <xs:enumeration value="SaveForLater"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="CartItemId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Quantity" type="xs:nonNegativeInteger" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="CartClear">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:CartClearRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:CartClearRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CartClearRequest">
+ <xs:sequence>
+ <xs:element name="CartId" type="xs:string" minOccurs="0"/>
+ <xs:element name="HMAC" type="xs:string" minOccurs="0"/>
+ <xs:element name="MergeCart" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="TransactionLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:TransactionLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:TransactionLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="TransactionLookupRequest">
+ <xs:sequence>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="TransactionId" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="SellerListingSearch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:SellerListingSearchRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:SellerListingSearchRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="SellerListingSearchRequest">
+ <xs:sequence>
+ <xs:element name="Keywords" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListingPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="OfferStatus" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Open"/>
+ <xs:enumeration value="Closed"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="SellerId" type="xs:string" minOccurs="1"/>
+ <xs:element name="Sort" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="SellerListingLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:SellerListingLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:SellerListingLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="TagLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:TagLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:TagLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="SellerListingLookupRequest">
+ <xs:sequence>
+ <xs:element name="Id" type="xs:string"/>
+ <xs:element name="SellerId" type="xs:string" minOccurs="0"/>
+ <xs:element name="IdType">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Exchange"/>
+ <xs:enumeration value="Listing"/>
+ <xs:enumeration value="ASIN"/>
+ <xs:enumeration value="SKU"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TagLookupRequest">
+ <xs:sequence>
+ <xs:element name="TagName" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="CustomerId" type="xs:string" minOccurs="0"/>
+ <xs:element name="TagPage" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="Count" type="xs:positiveInteger" minOccurs="0"/>
+ <xs:element name="TagSort" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="BrowseNodeLookup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>
+ <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="Validate" type="xs:string" minOccurs="0"/>
+ <xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>
+ <xs:element name="Shared" type="tns:BrowseNodeLookupRequest" minOccurs="0"/>
+ <xs:element name="Request" type="tns:BrowseNodeLookupRequest" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="BrowseNodeLookupRequest">
+ <xs:sequence>
+ <xs:element name="BrowseNodeId" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="Condition">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="All"/>
+ <xs:enumeration value="New"/>
+ <xs:enumeration value="Used"/>
+ <xs:enumeration value="Collectible"/>
+ <xs:enumeration value="Refurbished"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="DeliveryMethod">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Ship"/>
+ <xs:enumeration value="ISPU"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="AudienceRating">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="G"/>
+ <xs:enumeration value="PG"/>
+ <xs:enumeration value="PG-13"/>
+ <xs:enumeration value="R"/>
+ <xs:enumeration value="NC-17"/>
+ <xs:enumeration value="NR"/>
+ <xs:enumeration value="Unrated"/>
+ <xs:enumeration value="6"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="16"/>
+ <xs:enumeration value="18"/>
+ <xs:enumeration value="FamilyViewing"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="MultiOperation">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Help" minOccurs="0"/>
+ <xs:element ref="tns:ItemSearch" minOccurs="0"/>
+ <xs:element ref="tns:ItemLookup" minOccurs="0"/>
+ <xs:element ref="tns:ListSearch" minOccurs="0"/>
+ <xs:element ref="tns:ListLookup" minOccurs="0"/>
+ <xs:element ref="tns:CustomerContentSearch" minOccurs="0"/>
+ <xs:element ref="tns:CustomerContentLookup" minOccurs="0"/>
+ <xs:element ref="tns:SimilarityLookup" minOccurs="0"/>
+ <xs:element ref="tns:SellerLookup" minOccurs="0"/>
+ <xs:element ref="tns:CartGet" minOccurs="0"/>
+ <xs:element ref="tns:CartAdd" minOccurs="0"/>
+ <xs:element ref="tns:CartCreate" minOccurs="0"/>
+ <xs:element ref="tns:CartModify" minOccurs="0"/>
+ <xs:element ref="tns:CartClear" minOccurs="0"/>
+ <xs:element ref="tns:TransactionLookup" minOccurs="0"/>
+ <xs:element ref="tns:SellerListingSearch" minOccurs="0"/>
+ <xs:element ref="tns:SellerListingLookup" minOccurs="0"/>
+ <xs:element ref="tns:TagLookup" minOccurs="0"/>
+ <xs:element ref="tns:BrowseNodeLookup" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="HelpResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Information" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ItemSearchResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Items" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ItemLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Items" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ListSearchResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Lists" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ListLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Lists" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CustomerContentSearchResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Customers" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CustomerContentLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Customers" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SimilarityLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Items" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SellerLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Sellers" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CartGetResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Cart" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CartAddResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Cart" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CartCreateResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Cart" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CartModifyResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Cart" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CartClearResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Cart" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="TransactionLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Transactions" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SellerListingSearchResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:SellerListings" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SellerListingLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:SellerListings" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="TagLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:Tags" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="BrowseNodeLookupResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:BrowseNodes" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="MultiOperationResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:OperationRequest" minOccurs="0"/>
+ <xs:element ref="tns:HelpResponse" minOccurs="0"/>
+ <xs:element ref="tns:ItemSearchResponse" minOccurs="0"/>
+ <xs:element ref="tns:ItemLookupResponse" minOccurs="0"/>
+ <xs:element ref="tns:ListSearchResponse" minOccurs="0"/>
+ <xs:element ref="tns:ListLookupResponse" minOccurs="0"/>
+ <xs:element ref="tns:CustomerContentSearchResponse" minOccurs="0"/>
+ <xs:element ref="tns:CustomerContentLookupResponse" minOccurs="0"/>
+ <xs:element ref="tns:SimilarityLookupResponse" minOccurs="0"/>
+ <xs:element ref="tns:SellerLookupResponse" minOccurs="0"/>
+ <xs:element ref="tns:CartGetResponse" minOccurs="0"/>
+ <xs:element ref="tns:CartAddResponse" minOccurs="0"/>
+ <xs:element ref="tns:CartCreateResponse" minOccurs="0"/>
+ <xs:element ref="tns:CartModifyResponse" minOccurs="0"/>
+ <xs:element ref="tns:CartClearResponse" minOccurs="0"/>
+ <xs:element ref="tns:TransactionLookupResponse" minOccurs="0"/>
+ <xs:element ref="tns:SellerListingSearchResponse" minOccurs="0"/>
+ <xs:element ref="tns:SellerListingLookupResponse" minOccurs="0"/>
+ <xs:element ref="tns:TagLookupResponse" minOccurs="0"/>
+ <xs:element ref="tns:BrowseNodeLookupResponse" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="OperationRequest">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:HTTPHeaders" minOccurs="0"/>
+ <xs:element name="RequestId" type="xs:string" minOccurs="0"/>
+ <xs:element ref="tns:Arguments" minOccurs="0"/>
+ <xs:element ref="tns:Errors" minOccurs="0"/>
+ <xs:element name="RequestProcessingTime" type="xs:float" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Request">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IsValid" type="xs:string" minOccurs="0"/>
+ <xs:element name="HelpRequest" type="tns:HelpRequest" minOccurs="0"/>
+ <xs:element name="BrowseNodeLookupRequest" type="tns:BrowseNodeLookupRequest" minOccurs="0"/>
+ <xs:element name="ItemSearchRequest" type="tns:ItemSearchRequest" minOccurs="0"/>
+ <xs:element name="ItemLookupRequest" type="tns:ItemLookupRequest" minOccurs="0"/>
+ <xs:element name="ListSearchRequest" type="tns:ListSearchRequest" minOccurs="0"/>
+ <xs:element name="ListLookupRequest" type="tns:ListLookupRequest" minOccurs="0"/>
+ <xs:element name="CustomerContentSearchRequest" type="tns:CustomerContentSearchRequest" minOccurs="0"/>
+ <xs:element name="CustomerContentLookupRequest" type="tns:CustomerContentLookupRequest" minOccurs="0"/>
+ <xs:element name="SimilarityLookupRequest" type="tns:SimilarityLookupRequest" minOccurs="0"/>
+ <xs:element name="CartGetRequest" type="tns:CartGetRequest" minOccurs="0"/>
+ <xs:element name="CartAddRequest" type="tns:CartAddRequest" minOccurs="0"/>
+ <xs:element name="CartCreateRequest" type="tns:CartCreateRequest" minOccurs="0"/>
+ <xs:element name="CartModifyRequest" type="tns:CartModifyRequest" minOccurs="0"/>
+ <xs:element name="CartClearRequest" type="tns:CartClearRequest" minOccurs="0"/>
+ <xs:element name="TransactionLookupRequest" type="tns:TransactionLookupRequest" minOccurs="0"/>
+ <xs:element name="SellerListingSearchRequest" type="tns:SellerListingSearchRequest" minOccurs="0"/>
+ <xs:element name="SellerListingLookupRequest" type="tns:SellerListingLookupRequest" minOccurs="0"/>
+ <xs:element name="SellerLookupRequest" type="tns:SellerLookupRequest" minOccurs="0"/>
+ <xs:element name="TagLookupRequest" type="tns:TagLookupRequest" minOccurs="0"/>
+ <xs:element ref="tns:Errors" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Arguments">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Argument" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attribute name="Name" type="xs:string" use="required"/>
+ <xs:attribute name="Value" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="HTTPHeaders">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Header" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attribute name="Name" type="xs:string" use="required"/>
+ <xs:attribute name="Value" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Errors">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Error" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Code" type="xs:string"/>
+ <xs:element name="Message" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Information">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element ref="tns:OperationInformation" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="tns:ResponseGroupInformation" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Items">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element ref="tns:CorrectedQuery" minOccurs="0"/>
+ <xs:element name="Qid" type="xs:string" minOccurs="0"/>
+ <xs:element name="EngineQuery" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalResults" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:SearchResultsMap" minOccurs="0"/>
+ <xs:element ref="tns:Item" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="tns:SearchBinSets" minOccurs="0" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CorrectedQuery">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Keywords" type="xs:string" minOccurs="0"/>
+ <xs:element name="Message" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Lists">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element name="TotalResults" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:List" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Customers">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element name="TotalResults" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:Customer" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Cart">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element name="CartId" type="xs:string"/>
+ <xs:element name="HMAC" type="xs:string"/>
+ <xs:element name="URLEncodedHMAC" type="xs:string"/>
+ <xs:element name="PurchaseURL" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubTotal" type="tns:Price" minOccurs="0"/>
+ <xs:element ref="tns:CartItems" minOccurs="0"/>
+ <xs:element ref="tns:SavedForLaterItems" minOccurs="0"/>
+ <xs:element ref="tns:SimilarProducts" minOccurs="0"/>
+ <xs:element ref="tns:TopSellers" minOccurs="0"/>
+ <xs:element ref="tns:NewReleases" minOccurs="0"/>
+ <xs:element ref="tns:SimilarViewedProducts" minOccurs="0"/>
+ <xs:element ref="tns:OtherCategoriesSimilarProducts" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Transactions">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element name="TotalResults" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:Transaction" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Sellers">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element name="TotalResults" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:Seller" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SellerListings">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element name="TotalResults" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:SellerListing" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="OperationInformation">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="Description" type="xs:string" minOccurs="0"/>
+ <xs:element name="RequiredParameters" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Parameter" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="AvailableParameters" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Parameter" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="DefaultResponseGroups" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ResponseGroup" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="AvailableResponseGroups" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ResponseGroup" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ResponseGroupInformation">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="CreationDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="ValidOperations" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Operation" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Elements" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Element" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="List">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ListId" type="xs:string"/>
+ <xs:element name="ListURL" type="xs:string" minOccurs="0"/>
+ <xs:element name="RegistryNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListName" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListType" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="WishList"/>
+ <xs:enumeration value="WeddingRegistry"/>
+ <xs:enumeration value="BabyRegistry"/>
+ <xs:enumeration value="Listmania"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="TotalItems" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="DateCreated" type="xs:string" minOccurs="0"/>
+ <xs:element name="OccasionDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="CustomerName" type="xs:string" minOccurs="0"/>
+ <xs:element name="PartnerName" type="xs:string" minOccurs="0"/>
+ <xs:element name="AdditionalName" type="xs:string" minOccurs="0"/>
+ <xs:element name="Comment" type="xs:string" minOccurs="0"/>
+ <xs:element name="Image" type="tns:Image" minOccurs="0"/>
+ <xs:element name="AverageRating" type="xs:decimal" minOccurs="0"/>
+ <xs:element name="TotalVotes" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalTimesRead" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:Tags" minOccurs="0"/>
+ <xs:element ref="tns:ListItem" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ListItem">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ListItemId" type="xs:string" minOccurs="0"/>
+ <xs:element name="DateAdded" type="xs:string" minOccurs="0"/>
+ <xs:element name="Comment" type="xs:string" minOccurs="0"/>
+ <xs:element name="QuantityDesired" type="xs:string" minOccurs="0"/>
+ <xs:element name="QuantityReceived" type="xs:string" minOccurs="0"/>
+ <xs:element ref="tns:Item" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Customer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="CustomerId" type="xs:string"/>
+ <xs:element name="Nickname" type="xs:string" minOccurs="0"/>
+ <xs:element name="Birthday" type="xs:string" minOccurs="0"/>
+ <xs:element name="WishListId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Location" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="UserDefinedLocation" type="xs:string" minOccurs="0"/>
+ <xs:element name="City" type="xs:string" minOccurs="0"/>
+ <xs:element name="State" type="xs:string" minOccurs="0"/>
+ <xs:element name="Country" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="tns:CustomerReviews" maxOccurs="unbounded" minOccurs="0"/>
+ <xs:element ref="tns:Tags" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SearchResultsMap">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SearchIndex" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IndexName" type="xs:string"/>
+ <xs:element name="Results" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="Pages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:CorrectedQuery" minOccurs="0"/>
+ <xs:element name="RelevanceRank" type="xs:positiveInteger"/>
+ <xs:element name="ASIN" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Item">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string"/>
+ <xs:element name="ParentASIN" type="xs:string" minOccurs="0"/>
+ <xs:element ref="tns:Errors" minOccurs="0"/>
+ <xs:element name="DetailPageURL" type="xs:string" minOccurs="0"/>
+ <xs:element name="SalesRank" type="xs:string" minOccurs="0"/>
+ <xs:element name="SmallImage" type="tns:Image" minOccurs="0"/>
+ <xs:element name="MediumImage" type="tns:Image" minOccurs="0"/>
+ <xs:element name="LargeImage" type="tns:Image" minOccurs="0"/>
+ <xs:element name="ImageSets" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MerchantId" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element ref="tns:ImageSet" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="tns:ItemAttributes" minOccurs="0"/>
+ <xs:element ref="tns:MerchantItemAttributes" minOccurs="0"/>
+ <xs:element ref="tns:Collections" minOccurs="0"/>
+ <xs:element name="Subjects" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Subject" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="tns:OfferSummary" minOccurs="0"/>
+ <xs:element ref="tns:Offers" minOccurs="0"/>
+ <xs:element ref="tns:VariationSummary" minOccurs="0"/>
+ <xs:element ref="tns:Variations" minOccurs="0"/>
+ <xs:element ref="tns:CustomerReviews" minOccurs="0"/>
+ <xs:element ref="tns:EditorialReviews" minOccurs="0"/>
+ <xs:element ref="tns:SimilarProducts" minOccurs="0"/>
+ <xs:element ref="tns:Accessories" minOccurs="0"/>
+ <xs:element ref="tns:Tracks" minOccurs="0"/>
+ <xs:element ref="tns:BrowseNodes" minOccurs="0"/>
+ <xs:element ref="tns:Tags" minOccurs="0"/>
+ <xs:element ref="tns:ListmaniaLists" minOccurs="0"/>
+ <xs:element ref="tns:SearchInside" minOccurs="0"/>
+ <xs:element name="AlternateVersions" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="AlternateVersion" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ <xs:element name="Binding" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Tags">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element name="DistinctTags" type="xs:string" minOccurs="0"/>
+ <xs:element name="DistinctItems" type="xs:string" minOccurs="0"/>
+ <xs:element name="DistinctUsers" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalUsages" type="xs:string" minOccurs="0"/>
+ <xs:element name="FirstTagging" type="tns:Tagging" minOccurs="0"/>
+ <xs:element name="LastTagging" type="tns:Tagging" minOccurs="0"/>
+ <xs:element ref="tns:Tag" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Tag">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="TagType" minOccurs="0">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Item"/>
+ <xs:enumeration value="ListmaniaList"/>
+ <xs:enumeration value="Guide"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="DistinctItems" type="xs:string" minOccurs="0"/>
+ <xs:element name="DistinctUsers" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalUsages" type="xs:string" minOccurs="0"/>
+ <xs:element name="FirstTagging" type="tns:Tagging" minOccurs="0"/>
+ <xs:element name="LastTagging" type="tns:Tagging" minOccurs="0"/>
+ <xs:element ref="tns:TaggedItems" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="tns:TaggedListmaniaLists" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="tns:TaggedGuides" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="TaggedItems">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Item" minOccurs="0"/>
+ <xs:element name="DistinctUsers" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalUsages" type="xs:string" minOccurs="0"/>
+ <xs:element name="FirstTagging" type="tns:Tagging" minOccurs="0"/>
+ <xs:element name="LastTagging" type="tns:Tagging" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="TaggedListmaniaLists">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:List" minOccurs="0"/>
+ <xs:element name="DistinctUsers" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalUsages" type="xs:string" minOccurs="0"/>
+ <xs:element name="FirstTagging" type="tns:Tagging" minOccurs="0"/>
+ <xs:element name="LastTagging" type="tns:Tagging" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="TaggedGuides">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Guide" minOccurs="0"/>
+ <xs:element name="DistinctUsers" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalUsages" type="xs:string" minOccurs="0"/>
+ <xs:element name="FirstTagging" type="tns:Tagging" minOccurs="0"/>
+ <xs:element name="LastTagging" type="tns:Tagging" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Guide">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="GuideId" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="Tagging">
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="EntityId" type="xs:string" minOccurs="0"/>
+ <xs:element name="UserId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Time" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="OfferSummary">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="LowestNewPrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="LowestUsedPrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="LowestCollectiblePrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="LowestRefurbishedPrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="TotalNew" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalUsed" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalCollectible" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalRefurbished" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Offers">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TotalOffers" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalOfferPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:Offer" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Offer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Merchant" minOccurs="0"/>
+ <xs:element ref="tns:Seller" minOccurs="0"/>
+ <xs:element ref="tns:OfferAttributes" minOccurs="0"/>
+ <xs:element ref="tns:OfferListing" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="tns:LoyaltyPoints" minOccurs="0"/>
+ <xs:element ref="tns:Promotions" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="OfferAttributes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Condition" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubCondition" type="xs:string" minOccurs="0"/>
+ <xs:element name="ConditionNote" type="xs:string" minOccurs="0"/>
+ <xs:element name="WillShipExpedited" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="WillShipInternational" type="xs:boolean" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Merchant">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MerchantId" type="xs:string"/>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="GlancePage" type="xs:string" minOccurs="0"/>
+ <xs:element name="AverageFeedbackRating" type="xs:decimal" minOccurs="0"/>
+ <xs:element name="TotalFeedback" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalFeedbackPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="OfferListing">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="OfferListingId" type="xs:string" minOccurs="0"/>
+ <xs:element name="ExchangeId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Price" type="tns:Price" minOccurs="0"/>
+ <xs:element name="SalePrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="AmountSaved" type="tns:Price" minOccurs="0"/>
+ <xs:element name="PercentageSaved" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="Availability" type="xs:string" minOccurs="0"/>
+ <xs:element name="AvailabilityAttributes" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="AvailabilityType" type="xs:string" minOccurs="0"/>
+ <xs:element name="IsPreorder" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="MinimumHours" type="xs:integer" minOccurs="0"/>
+ <xs:element name="MaximumHours" type="xs:integer" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Quantity" type="xs:integer" minOccurs="0"/>
+ <xs:element name="ISPUStoreAddress" type="tns:Address" minOccurs="0"/>
+ <xs:element name="ISPUStoreHours" type="xs:string" minOccurs="0"/>
+ <xs:element name="IsEligibleForSuperSaverShipping" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="SalesRestriction" type="xs:string" minOccurs="0"/>
+ <xs:element name="ShippingCharge" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ <aws-se:excludeFrom>partner</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ShippingType" type="xs:string"/>
+ <xs:element name="IsRateTaxInclusive" type="xs:boolean"/>
+ <xs:element name="ShippingPrice" type="tns:Price"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="LoyaltyPoints">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Points" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TypicalRedemptionValue" type="tns:Price" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="VariationSummary">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="LowestPrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="HighestPrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="LowestSalePrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="HighestSalePrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="SingleMerchantId" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Variations">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TotalVariations" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalVariationPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:VariationDimensions" minOccurs="0"/>
+ <xs:element ref="tns:Item" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="VariationDimensions">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="VariationDimension" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="EditorialReviews">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:EditorialReview" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Collections">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Collection" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="CollectionSummary" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="LowestListPrice" type="tns:Price" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="HighestListPrice" type="tns:Price" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="LowestSalePrice" type="tns:Price" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="HighestSalePrice" type="tns:Price" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CollectionParent" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CollectionItem" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="EditorialReview">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Source" type="xs:string" minOccurs="0"/>
+ <xs:element name="Content" type="xs:string" minOccurs="0"/>
+ <xs:element name="IsLinkSuppressed" type="xs:boolean" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CustomerReviews">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="AverageRating" type="xs:decimal" minOccurs="0"/>
+ <xs:element name="TotalReviews" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalReviewPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element ref="tns:Review" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Review">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Rating" type="xs:decimal" minOccurs="0"/>
+ <xs:element name="HelpfulVotes" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="CustomerId" type="xs:string" minOccurs="0"/>
+ <xs:element ref="tns:Reviewer" minOccurs="0"/>
+ <xs:element name="TotalVotes" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="Date" type="xs:string" minOccurs="0"/>
+ <xs:element name="Summary" type="xs:string" minOccurs="0"/>
+ <xs:element name="Content" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Reviewer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="CustomerId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="Nickname" type="xs:string" minOccurs="0"/>
+ <xs:element name="Location" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Tracks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Disc" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Track" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Number" type="xs:positiveInteger" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="Number" type="xs:positiveInteger" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SimilarProducts">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SimilarProduct" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="TopSellers">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TopSeller" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="NewReleases">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="NewRelease" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SimilarViewedProducts">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SimilarViewedProduct" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="OtherCategoriesSimilarProducts">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="OtherCategoriesSimilarProduct" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Accessories">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Accessory" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Promotions">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Promotion" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Promotion">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Summary" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="PromotionId" type="xs:string"/>
+ <xs:element name="Category" type="xs:string" minOccurs="0"/>
+ <xs:element name="StartDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="EndDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="EligibilityRequirementDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="BenefitDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="TermsAndConditions" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Details" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MerchantId" type="xs:string"/>
+ <xs:element name="OwningMerchantId" type="xs:string"/>
+ <xs:element name="PromotionId" type="xs:string"/>
+ <xs:element name="PromotionCategory" type="xs:string"/>
+ <xs:element name="MerchantPromotionId" type="xs:string" minOccurs="0"/>
+ <xs:element name="GroupClaimCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="CouponCombinationType" type="xs:string" minOccurs="0"/>
+ <xs:element name="StartDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="EndDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="TermsAndConditions" type="xs:string" minOccurs="0"/>
+ <xs:element name="EligibilityRequirements" type="tns:PromotionEligibilityRequirements" minOccurs="0"/>
+ <xs:element name="Benefits" type="tns:PromotionBenefits" minOccurs="0"/>
+ <xs:element name="ItemApplicability" type="tns:PromotionItemApplicability" minOccurs="0"/>
+ <xs:element name="MerchandisingMessage" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="PromotionEligibilityRequirements">
+ <xs:sequence>
+ <xs:element name="EligibilityRequirement" type="tns:PromotionEligibilityRequirement" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="PromotionBenefits">
+ <xs:sequence>
+ <xs:element name="Benefit" type="tns:PromotionBenefit" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="PromotionBenefit">
+ <xs:sequence>
+ <xs:element name="BenefitType" type="xs:string"/>
+ <xs:element name="ComponentType" type="xs:string"/>
+ <xs:element name="Quantity" type="xs:int" minOccurs="0"/>
+ <xs:element name="PercentOff" type="xs:double" minOccurs="0"/>
+ <xs:element name="FixedAmount" type="tns:Price" minOccurs="0"/>
+ <xs:element name="Ceiling" type="tns:Price" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="PromotionEligibilityRequirement">
+ <xs:sequence>
+ <xs:element name="EligibilityRequirementType" type="xs:string"/>
+ <xs:element name="Quantity" type="xs:int" minOccurs="0"/>
+ <xs:element name="CurrencyAmount" type="tns:Price" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="PromotionItemApplicability">
+ <xs:sequence>
+ <xs:element name="ASIN" type="xs:string"/>
+ <xs:element name="IsInBenefitSet" type="xs:boolean"/>
+ <xs:element name="IsInEligibilityRequirementSet" type="xs:boolean"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="BrowseNodes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Request" minOccurs="0"/>
+ <xs:element ref="tns:BrowseNode" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Property">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="Value" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="BrowseNode">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="BrowseNodeId" type="xs:string" minOccurs="0"/>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="IsCategoryRoot" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="Properties" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:Property" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Children" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:BrowseNode" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Ancestors" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:BrowseNode" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="tns:TopSellers" minOccurs="0"/>
+ <xs:element ref="tns:NewReleases" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ListmaniaLists">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ListmaniaList" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ListId" type="xs:string"/>
+ <xs:element name="ListName" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SearchInside">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ <aws-se:excludeFrom>partner</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TotalExcerpts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="Excerpt" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Checksum" type="xs:string" minOccurs="0"/>
+ <xs:element name="PageType" type="xs:string" minOccurs="0"/>
+ <xs:element name="PageNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="SequenceNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="Text" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CartItems">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SubTotal" type="tns:Price" minOccurs="0"/>
+ <xs:element name="CartItem" type="tns:CartItem" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SavedForLaterItems">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SubTotal" type="tns:Price" minOccurs="0"/>
+ <xs:element name="SavedForLaterItem" type="tns:CartItem" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="CartItem">
+ <xs:sequence>
+ <xs:element name="CartItemId" type="xs:string"/>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="ExchangeId" type="xs:string" minOccurs="0"/>
+ <xs:element name="MerchantId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SellerId" type="xs:string" minOccurs="0"/>
+ <xs:element name="SellerNickname" type="xs:string" minOccurs="0"/>
+ <xs:element name="Quantity" type="xs:string"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ <xs:element name="ProductGroup" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListOwner" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListType" type="xs:string" minOccurs="0"/>
+ <xs:element name="MetaData" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="KeyValuePair" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Key" type="xs:string"/>
+ <xs:element name="Value" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Price" type="tns:Price" minOccurs="0"/>
+ <xs:element name="ItemTotal" type="tns:Price" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="Transaction">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TransactionId" type="xs:string"/>
+ <xs:element name="SellerId" type="xs:string"/>
+ <xs:element name="Condition" type="xs:string"/>
+ <xs:element name="TransactionDate" type="xs:string"/>
+ <xs:element name="TransactionDateEpoch" type="xs:string"/>
+ <xs:element name="SellerName" type="xs:string" minOccurs="0"/>
+ <xs:element name="PayingCustomerId" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ <aws-se:excludeFrom>partner</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="OrderingCustomerId" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ <aws-se:excludeFrom>partner</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Totals" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Total" type="tns:Price"/>
+ <xs:element name="Subtotal" type="tns:Price"/>
+ <xs:element name="Tax" type="tns:Price"/>
+ <xs:element name="ShippingCharge" type="tns:Price"/>
+ <xs:element name="Promotion" type="tns:Price"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="TransactionItems" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:TransactionItem" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Shipments" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Shipment" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Condition" type="xs:string"/>
+ <xs:element name="DeliveryMethod" type="xs:string"/>
+ <xs:element name="ShipmentItems" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TransactionItemId" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Packages" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Package" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TrackingNumber" type="xs:string"/>
+ <xs:element name="CarrierName" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="TransactionItem">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="TransactionItemId" type="xs:string"/>
+ <xs:element name="Quantity" type="xs:string"/>
+ <xs:element name="UnitPrice" type="tns:Price"/>
+ <xs:element name="TotalPrice" type="tns:Price"/>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="ChildTransactionItems" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:TransactionItem" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Seller">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SellerId" type="xs:string"/>
+ <xs:element name="SellerName" type="xs:string" minOccurs="0"/>
+ <xs:element name="SellerLegalName" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Nickname" type="xs:string" minOccurs="0"/>
+ <xs:element name="GlancePage" type="xs:string" minOccurs="0"/>
+ <xs:element name="About" type="xs:string" minOccurs="0"/>
+ <xs:element name="MoreAbout" type="xs:string" minOccurs="0"/>
+ <xs:element name="Location" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="UserDefinedLocation" type="xs:string" minOccurs="0"/>
+ <xs:element name="City" type="xs:string" minOccurs="0"/>
+ <xs:element name="State" type="xs:string" minOccurs="0"/>
+ <xs:element name="Country" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="AverageFeedbackRating" type="xs:decimal" minOccurs="0"/>
+ <xs:element name="TotalFeedback" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalFeedbackPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="SellerFeedbackSummary" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="FeedbackDateRange" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SellerFeedbackRating" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Count" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="Percentage" type="xs:nonNegativeInteger" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Type" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="Period" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="tns:SellerFeedback" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SellerFeedback">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Feedback" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Rating" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="Comment" type="xs:string" minOccurs="0"/>
+ <xs:element name="Date" type="xs:string" minOccurs="0"/>
+ <xs:element name="RatedBy" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="Address">
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string" minOccurs="0"/>
+ <xs:element name="Address1" type="xs:string" minOccurs="0"/>
+ <xs:element name="Address2" type="xs:string" minOccurs="0"/>
+ <xs:element name="Address3" type="xs:string" minOccurs="0"/>
+ <xs:element name="City" type="xs:string" minOccurs="0"/>
+ <xs:element name="State" type="xs:string" minOccurs="0"/>
+ <xs:element name="PostalCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="Country" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="SellerListing">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ExchangeId" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListingId" type="xs:string" minOccurs="0"/>
+ <xs:element name="ASIN" type="xs:string" minOccurs="0"/>
+ <xs:element name="SKU" type="xs:string" minOccurs="0"/>
+ <xs:element name="UPC" type="xs:string" minOccurs="0"/>
+ <xs:element name="EAN" type="xs:string" minOccurs="0"/>
+ <xs:element name="WillShipExpedited" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="WillShipInternational" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ <xs:element name="Price" type="tns:Price" minOccurs="0"/>
+ <xs:element name="StartDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="EndDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="Status" type="xs:string" minOccurs="0"/>
+ <xs:element name="Quantity" type="xs:string" minOccurs="0"/>
+ <xs:element name="Condition" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubCondition" type="xs:string" minOccurs="0"/>
+ <xs:element ref="tns:Seller" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="Price">
+ <xs:sequence>
+ <xs:element name="Amount" type="xs:integer" minOccurs="0"/>
+ <xs:element name="CurrencyCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="FormattedPrice" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="ImageSet">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SwatchImage" type="tns:Image" minOccurs="0"/>
+ <xs:element name="SmallImage" type="tns:Image" minOccurs="0"/>
+ <xs:element name="ThumbnailImage" type="tns:Image" minOccurs="0"/>
+ <xs:element name="TinyImage" type="tns:Image" minOccurs="0"/>
+ <xs:element name="MediumImage" type="tns:Image" minOccurs="0"/>
+ <xs:element name="LargeImage" type="tns:Image" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Category" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="Image">
+ <xs:sequence>
+ <xs:element name="URL" type="xs:string"/>
+ <xs:element name="Height" type="tns:DecimalWithUnits"/>
+ <xs:element name="Width" type="tns:DecimalWithUnits"/>
+ <xs:element name="IsVerified" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="ItemAttributes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Actor" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Address" type="tns:Address" minOccurs="0"/>
+ <xs:element name="Age" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="AmazonMaximumAge" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="AmazonMinimumAge" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="AnalogVideoFormat" type="xs:string" minOccurs="0"/>
+ <xs:element name="ApertureModes" type="xs:string" minOccurs="0"/>
+ <xs:element name="Artist" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="AspectRatio" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssemblyInstructions" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssemblyRequired" type="xs:string" minOccurs="0"/>
+ <xs:element name="AudienceRating" type="xs:string" minOccurs="0"/>
+ <xs:element name="AudioFormat" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Author" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="BackFinding" type="xs:string" minOccurs="0"/>
+ <xs:element name="BandMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="BatteriesIncluded" type="xs:string" minOccurs="0"/>
+ <xs:element name="BatteriesRequired" type="xs:string" minOccurs="0"/>
+ <xs:element name="Batteries" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="BatteryDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="BatteryType" type="xs:string" minOccurs="0"/>
+ <xs:element name="BezelMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Binding" type="xs:string" minOccurs="0"/>
+ <xs:element name="Brand" type="xs:string" minOccurs="0"/>
+ <xs:element name="CalendarType" type="xs:string" minOccurs="0"/>
+ <xs:element name="CameraManualFeatures" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="CaseDiameter" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="CaseMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="CaseThickness" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="CaseType" type="xs:string" minOccurs="0"/>
+ <xs:element name="CatalogNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="Category" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="CategoryBin" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="CDRWDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="ChainType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Character" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="CEROAgeRating" type="xs:string" minOccurs="0"/>
+ <xs:element name="ClaspType" type="xs:string" minOccurs="0"/>
+ <xs:element name="ClothingSize" type="xs:string" minOccurs="0"/>
+ <xs:element name="ClubType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Color" type="xs:string" minOccurs="0"/>
+ <xs:element name="Compatibility" type="xs:string" minOccurs="0"/>
+ <xs:element name="CompatibleDevices" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ComputerHardwareType" type="xs:string" minOccurs="0"/>
+ <xs:element name="ComputerPlatform" type="xs:string" minOccurs="0"/>
+ <xs:element name="Connectivity" type="xs:string" minOccurs="0"/>
+ <xs:element name="ContinuousShootingSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Country" type="xs:string" minOccurs="0"/>
+ <xs:element name="CPUManufacturer" type="xs:string" minOccurs="0"/>
+ <xs:element name="CPUSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="CPUType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Creator" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Role" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Cuisine" type="xs:string" minOccurs="0"/>
+ <xs:element name="DataLinkProtocol" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="DeliveryOption" type="xs:string" minOccurs="0"/>
+ <xs:element name="DelayBetweenShots" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Department" type="xs:string" minOccurs="0"/>
+ <xs:element name="DeweyDecimalNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="DialColor" type="xs:string" minOccurs="0"/>
+ <xs:element name="DialWindowMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="DigitalZoom" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Director" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="DisplayColorSupport" type="xs:string" minOccurs="0"/>
+ <xs:element name="DisplaySize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="DrumSetPieceQuantity" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="DVDLayers" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="DVDRWDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="DVDSides" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="DPCI" type="xs:string" minOccurs="0"/>
+ <xs:element name="EAN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Edition" type="xs:string" minOccurs="0"/>
+ <xs:element name="EducationalFocus" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Ethnicity" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ESRBAgeRating" type="xs:string" minOccurs="0"/>
+ <xs:element name="ExternalDisplaySupportDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="FabricType" type="xs:string" minOccurs="0"/>
+ <xs:element name="FaxNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="Feature" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="FilmColorType" type="xs:string" minOccurs="0"/>
+ <xs:element name="FirstIssueLeadTime" type="tns:StringWithUnits" minOccurs="0"/>
+ <xs:element name="FlavorName" type="xs:string" minOccurs="0"/>
+ <xs:element name="FloppyDiskDriveDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="Format" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="FormFactor" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="GemType" type="xs:string" minOccurs="0"/>
+ <xs:element name="GemTypeSetElement" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Gender" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Genre" type="xs:string" minOccurs="0"/>
+ <xs:element name="GLProductGroup" type="xs:string" minOccurs="0"/>
+ <xs:element name="GolfClubFlex" type="xs:string" minOccurs="0"/>
+ <xs:element name="GolfClubLoft" type="xs:string" minOccurs="0"/>
+ <xs:element name="GraphicsCardInterface" type="xs:string" minOccurs="0"/>
+ <xs:element name="GraphicsDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="GraphicsMemorySize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="GuitarAttribute" type="xs:string" minOccurs="0"/>
+ <xs:element name="GuitarBridgeSystem" type="xs:string" minOccurs="0"/>
+ <xs:element name="GuitarPickThickness" type="xs:string" minOccurs="0"/>
+ <xs:element name="GuitarPickupConfiguration" type="xs:string" minOccurs="0"/>
+ <xs:element name="HandOrientation" type="xs:string" minOccurs="0"/>
+ <xs:element name="HardDiskCount" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="HardDiskSize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="HardDiskInterface" type="xs:string" minOccurs="0"/>
+ <xs:element name="HardwarePlatform" type="xs:string" minOccurs="0"/>
+ <xs:element name="HasAutoFocus" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasBurstMode" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasInCameraEditing" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasRedEyeReduction" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasSelfTimer" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasTripodMount" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasVideoOut" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasViewfinder" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HazardousMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="HoursOfOperation" type="xs:string" minOccurs="0"/>
+ <xs:element name="IncludedSoftware" type="xs:string" minOccurs="0"/>
+ <xs:element name="IncludesMp3Player" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="Ingredients" type="xs:string" minOccurs="0"/>
+ <xs:element name="IngredientsSetElement" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="InstrumentKey" type="xs:string" minOccurs="0"/>
+ <xs:element name="Interest" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="IsAdultProduct" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="IsAutographed" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="ISBN" type="xs:string" minOccurs="0"/>
+ <xs:element name="IsFragile" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="IsLabCreated" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="IsMemorabilia" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="ISOEquivalent" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="IsPreannounce" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="IssuesPerYear" type="xs:string" minOccurs="0"/>
+ <xs:element name="ItemDimensions" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Height" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Length" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Weight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Width" type="tns:DecimalWithUnits" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="KeyboardDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="Label" type="xs:string" minOccurs="0"/>
+ <xs:element name="LanguageName" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Languages" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Language" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string"/>
+ <xs:element name="Type" type="xs:string" minOccurs="0"/>
+ <xs:element name="AudioFormat" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="LegalDisclaimer" type="xs:string" minOccurs="0"/>
+ <xs:element name="LensType" type="xs:string" minOccurs="0"/>
+ <xs:element name="LineVoltage" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListPrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="MacroFocusRange" type="xs:string" minOccurs="0"/>
+ <xs:element name="MagazineType" type="xs:string" minOccurs="0"/>
+ <xs:element name="MalletHardness" type="xs:string" minOccurs="0"/>
+ <xs:element name="Manufacturer" type="xs:string" minOccurs="0"/>
+ <xs:element name="ManufacturerLaborWarrantyDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="ManufacturerMaximumAge" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="ManufacturerMinimumAge" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="ManufacturerPartsWarrantyDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaterialTypeSetElement" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="MaximumAperture" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumColorDepth" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaximumFocalLength" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumHighResolutionImages" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumHorizontalResolution" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumLowResolutionImages" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaximumResolution" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumShutterSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumVerticalResolution" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumWeightRecommendation" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MediaType" type="xs:string" minOccurs="0"/>
+ <xs:element name="MemorySlotsAvailable" type="xs:string" minOccurs="0"/>
+ <xs:element name="MetalStamp" type="xs:string" minOccurs="0"/>
+ <xs:element name="MetalType" type="xs:string" minOccurs="0"/>
+ <xs:element name="MiniMovieDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="MinimumFocalLength" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MinimumShutterSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Model" type="xs:string" minOccurs="0"/>
+ <xs:element name="ModelYear" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="ModemDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="MonitorSize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MonitorViewableDiagonalSize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MouseDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="MPN" type="xs:string" minOccurs="0"/>
+ <xs:element name="MusicalStyle" type="xs:string" minOccurs="0"/>
+ <xs:element name="NativeResolution" type="xs:string" minOccurs="0"/>
+ <xs:element name="Neighborhood" type="xs:string" minOccurs="0"/>
+ <xs:element name="NetworkInterfaceDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="NotebookDisplayTechnology" type="xs:string" minOccurs="0"/>
+ <xs:element name="NotebookPointingDeviceDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="NumberOfDiscs" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfIssues" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfItems" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfKeys" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfPearls" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfRapidFireShots" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfStones" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfStrings" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfTracks" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="OperatingSystem" type="xs:string" minOccurs="0"/>
+ <xs:element name="OpticalSensorResolution" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="OpticalZoom" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="OriginalReleaseDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="OutputWattage" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="PackageDimensions" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Height" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Length" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Weight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Width" type="tns:DecimalWithUnits" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PackageQuantity" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="PantLength" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="PantSize" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="PearlLustre" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlMinimumColor" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlShape" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlStringingMethod" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlSurfaceBlemishes" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlType" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlUniformity" type="xs:string" minOccurs="0"/>
+ <xs:element name="PhoneNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="PhotoFlashType" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="PictureFormat" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Platform" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="PriceRating" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="PrimaryColor" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ProcessorCount" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="ProductGroup" type="xs:string" minOccurs="0"/>
+ <xs:element name="ProductSiteLaunchDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="ProductTypeName" type="xs:string" minOccurs="0"/>
+ <xs:element name="ProductTypeSubcategory" type="xs:string" minOccurs="0"/>
+ <xs:element name="PromotionalTag" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <aws-se:restricted xmlns:aws-se="http://webservices.amazon.com/AWS-SchemaExtensions">
+ <aws-se:excludeFrom>public</aws-se:excludeFrom>
+ <aws-se:excludeFrom>partner</aws-se:excludeFrom>
+ </aws-se:restricted>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PublicationDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="Publisher" type="xs:string" minOccurs="0"/>
+ <xs:element name="POBoxShippingExcluded" type="xs:string" minOccurs="0"/>
+ <xs:element name="ReadingLevel" type="xs:string" minOccurs="0"/>
+ <xs:element name="ReturnMethod" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="RecorderTrackCount" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="RegionCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="RegionOfOrigin" type="xs:string" minOccurs="0"/>
+ <xs:element name="ReturnPolicy" type="xs:string" minOccurs="0"/>
+ <xs:element name="ReleaseDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="RemovableMemory" type="xs:string" minOccurs="0"/>
+ <xs:element name="RemovableStorage" type="xs:string" minOccurs="0"/>
+ <xs:element name="RequiredVoltageRange" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResolutionModes" type="xs:string" minOccurs="0"/>
+ <xs:element name="RingSize" type="xs:string" minOccurs="0"/>
+ <xs:element name="RunningTime" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="ScentName" type="xs:string" minOccurs="0"/>
+ <xs:element name="SecondaryCacheSize" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="SettingType" type="xs:string" minOccurs="0"/>
+ <xs:element name="ShaftMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="ShoeSize" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Size" type="xs:string" minOccurs="0"/>
+ <xs:element name="SizePerPearl" type="xs:string" minOccurs="0"/>
+ <xs:element name="SkillLevel" type="xs:string" minOccurs="0"/>
+ <xs:element name="SKU" type="xs:string" minOccurs="0"/>
+ <xs:element name="SoldInStores" type="xs:string" minOccurs="0"/>
+ <xs:element name="SoundCardDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="SpeakerCount" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="SpeakerDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="SpecialFeatures" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="StoneClarity" type="xs:string" minOccurs="0"/>
+ <xs:element name="StoneColor" type="xs:string" minOccurs="0"/>
+ <xs:element name="StoneCut" type="xs:string" minOccurs="0"/>
+ <xs:element name="StoneShape" type="xs:string" minOccurs="0"/>
+ <xs:element name="StoneWeight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Studio" type="xs:string" minOccurs="0"/>
+ <xs:element name="Style" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionLength" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="SupportedImageType" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="SupportedMediaSize" type="xs:string" minOccurs="0"/>
+ <xs:element name="SystemBusSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="SystemMemorySizeMax" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="SystemMemorySize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="SystemMemoryType" type="xs:string" minOccurs="0"/>
+ <xs:element name="TargetBrand" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="TellingPageIndicator" type="xs:string" minOccurs="0"/>
+ <xs:element name="TheatricalReleaseDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalDiamondWeight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="TotalExternalBaysFree" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalFirewirePorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalGemWeight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="TotalInternalBaysFree" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalMetalWeight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="TotalNTSCPALPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalParallelPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPCCardSlots" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPCISlotsFree" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalSerialPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalSVideoOutPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalUSB2Ports" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalUSBPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalVGAOutPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="UPC" type="xs:string" minOccurs="0"/>
+ <xs:element name="VariationDenomination" type="xs:string" minOccurs="0"/>
+ <xs:element name="VariationDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="Warranty" type="xs:string" minOccurs="0"/>
+ <xs:element name="WatchMovementType" type="xs:string" minOccurs="0"/>
+ <xs:element name="WaterResistanceDepth" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="WEEETaxValue" type="tns:Price" minOccurs="0"/>
+ <xs:element name="WirelessMicrophoneFrequency" type="xs:nonNegativeInteger" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="MerchantItemAttributes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Actor" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Address" type="tns:Address" minOccurs="0"/>
+ <xs:element name="AmazonMaximumAge" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="AmazonMinimumAge" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="ApertureModes" type="xs:string" minOccurs="0"/>
+ <xs:element name="Artist" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="AspectRatio" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssemblyInstructions" type="xs:string" minOccurs="0"/>
+ <xs:element name="AssemblyRequired" type="xs:string" minOccurs="0"/>
+ <xs:element name="AudienceRating" type="xs:string" minOccurs="0"/>
+ <xs:element name="AudioFormat" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Author" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="BackFinding" type="xs:string" minOccurs="0"/>
+ <xs:element name="BandMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="BatteriesIncluded" type="xs:string" minOccurs="0"/>
+ <xs:element name="BatteriesRequired" type="xs:string" minOccurs="0"/>
+ <xs:element name="Batteries" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="BatteryDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="BatteryType" type="xs:string" minOccurs="0"/>
+ <xs:element name="BezelMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Binding" type="xs:string" minOccurs="0"/>
+ <xs:element name="Brand" type="xs:string" minOccurs="0"/>
+ <xs:element name="CalendarType" type="xs:string" minOccurs="0"/>
+ <xs:element name="CameraManualFeatures" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="CaseDiameter" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="CaseMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="CaseThickness" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="CaseType" type="xs:string" minOccurs="0"/>
+ <xs:element name="CatalogNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="CDRWDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="ChainType" type="xs:string" minOccurs="0"/>
+ <xs:element name="ClaspType" type="xs:string" minOccurs="0"/>
+ <xs:element name="ClothingSize" type="xs:string" minOccurs="0"/>
+ <xs:element name="Color" type="xs:string" minOccurs="0"/>
+ <xs:element name="Compatibility" type="xs:string" minOccurs="0"/>
+ <xs:element name="ComputerHardwareType" type="xs:string" minOccurs="0"/>
+ <xs:element name="ComputerPlatform" type="xs:string" minOccurs="0"/>
+ <xs:element name="Connectivity" type="xs:string" minOccurs="0"/>
+ <xs:element name="ContinuousShootingSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Country" type="xs:string" minOccurs="0"/>
+ <xs:element name="CountryOfOrigin" type="xs:string" minOccurs="0"/>
+ <xs:element name="CPUManufacturer" type="xs:string" minOccurs="0"/>
+ <xs:element name="CPUSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="CPUType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Creator" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Role" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Cuisine" type="xs:string" minOccurs="0"/>
+ <xs:element name="Customizable" type="xs:string" minOccurs="0"/>
+ <xs:element name="DelayBetweenShots" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="DeliveryOption" type="xs:string" minOccurs="0"/>
+ <xs:element name="Department" type="xs:string" minOccurs="0"/>
+ <xs:element name="Description" type="xs:string" minOccurs="0"/>
+ <xs:element name="DeweyDecimalNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="DialColor" type="xs:string" minOccurs="0"/>
+ <xs:element name="DialWindowMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="DigitalZoom" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Director" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="DisplaySize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="DrumSetPieceQuantity" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="DVDLayers" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="DVDRWDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="DVDSides" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="DPCI" type="xs:string" minOccurs="0"/>
+ <xs:element name="EAN" type="xs:string" minOccurs="0"/>
+ <xs:element name="Edition" type="xs:string" minOccurs="0"/>
+ <xs:element name="ESRBAgeRating" type="xs:string" minOccurs="0"/>
+ <xs:element name="ExternalDisplaySupportDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="FabricType" type="xs:string" minOccurs="0"/>
+ <xs:element name="FaxNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="Feature" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="FirstIssueLeadTime" type="tns:StringWithUnits" minOccurs="0"/>
+ <xs:element name="FloppyDiskDriveDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="Format" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="FixedShippingCharge" type="tns:Price" minOccurs="0"/>
+ <xs:element name="GemType" type="xs:string" minOccurs="0"/>
+ <xs:element name="GraphicsCardInterface" type="xs:string" minOccurs="0"/>
+ <xs:element name="GraphicsDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="GraphicsMemorySize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="GuitarAttribute" type="xs:string" minOccurs="0"/>
+ <xs:element name="GuitarBridgeSystem" type="xs:string" minOccurs="0"/>
+ <xs:element name="GuitarPickThickness" type="xs:string" minOccurs="0"/>
+ <xs:element name="GuitarPickupConfiguration" type="xs:string" minOccurs="0"/>
+ <xs:element name="HardDiskCount" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="HardDiskSize" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="HasAutoFocus" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasBurstMode" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasInCameraEditing" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasRedEyeReduction" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasSelfTimer" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasTripodMount" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasVideoOut" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HasViewfinder" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="HazardousMaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="HoursOfOperation" type="xs:string" minOccurs="0"/>
+ <xs:element name="IncludedSoftware" type="xs:string" minOccurs="0"/>
+ <xs:element name="IncludesMp3Player" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="Indications" type="xs:string" minOccurs="0"/>
+ <xs:element name="Ingredients" type="xs:string" minOccurs="0"/>
+ <xs:element name="InstrumentKey" type="xs:string" minOccurs="0"/>
+ <xs:element name="IsAutographed" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="ISBN" type="xs:string" minOccurs="0"/>
+ <xs:element name="IsFragile" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="IsLabCreated" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="IsMemorabilia" type="xs:boolean" minOccurs="0"/>
+ <xs:element name="ISOEquivalent" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="IssuesPerYear" type="xs:string" minOccurs="0"/>
+ <xs:element name="ItemDimensions" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Height" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Length" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Weight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Width" type="tns:DecimalWithUnits" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="KeyboardDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="Label" type="xs:string" minOccurs="0"/>
+ <xs:element name="Languages" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Language" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string"/>
+ <xs:element name="Type" type="xs:string"/>
+ <xs:element name="AudioFormat" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="LegalDisclaimer" type="xs:string" minOccurs="0"/>
+ <xs:element name="LineVoltage" type="xs:string" minOccurs="0"/>
+ <xs:element name="ListPrice" type="tns:Price" minOccurs="0"/>
+ <xs:element name="MacroFocusRange" type="xs:string" minOccurs="0"/>
+ <xs:element name="MagazineType" type="xs:string" minOccurs="0"/>
+ <xs:element name="MalletHardness" type="xs:string" minOccurs="0"/>
+ <xs:element name="Manufacturer" type="xs:string" minOccurs="0"/>
+ <xs:element name="ManufacturerLaborWarrantyDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="ManufacturerMaximumAge" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="ManufacturerMinimumAge" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="ManufacturerPartsWarrantyDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaterialType" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaximumAperture" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumColorDepth" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaximumFocalLength" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumHighResolutionImages" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumHorizontalResolution" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumLowResolutionImages" type="xs:string" minOccurs="0"/>
+ <xs:element name="MaximumResolution" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumShutterSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumVerticalResolution" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="MaximumWeightRecommendation" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MemorySlotsAvailable" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="MetalStamp" type="xs:string" minOccurs="0"/>
+ <xs:element name="MetalType" type="xs:string" minOccurs="0"/>
+ <xs:element name="MiniMovieDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="MinimumFocalLength" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MinimumShutterSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Model" type="xs:string" minOccurs="0"/>
+ <xs:element name="ModelYear" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="ModemDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="MonitorSize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MonitorViewableDiagonalSize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="MouseDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="MPN" type="xs:string" minOccurs="0"/>
+ <xs:element name="MusicalStyle" type="xs:string" minOccurs="0"/>
+ <xs:element name="NativeResolution" type="xs:string" minOccurs="0"/>
+ <xs:element name="Neighborhood" type="xs:string" minOccurs="0"/>
+ <xs:element name="NetworkInterfaceDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="NotebookDisplayTechnology" type="xs:string" minOccurs="0"/>
+ <xs:element name="NotebookPointingDeviceDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="NumberOfDiscs" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfIssues" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfItems" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfKeys" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfPages" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfPearls" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfRapidFireShots" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfStones" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfStrings" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="NumberOfTracks" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="OpticalZoom" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="OriginalReleaseDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="OutputWattage" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="PackageDimensions" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Height" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Length" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Weight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Width" type="tns:DecimalWithUnits" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PearlLustre" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlMinimumColor" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlShape" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlStringingMethod" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlSurfaceBlemishes" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlType" type="xs:string" minOccurs="0"/>
+ <xs:element name="PearlUniformity" type="xs:string" minOccurs="0"/>
+ <xs:element name="PhoneNumber" type="xs:string" minOccurs="0"/>
+ <xs:element name="PhotoFlashType" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="PictureFormat" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Platform" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="PriceRating" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="ProcessorCount" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="ProductGroup" type="xs:string" minOccurs="0"/>
+ <xs:element name="PromotionalTag" type="xs:string" minOccurs="0"/>
+ <xs:element name="POBoxShippingExcluded" type="xs:string" minOccurs="0"/>
+ <xs:element name="PublicationDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="Publisher" type="xs:string" minOccurs="0"/>
+ <xs:element name="PurchasingChannel" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ReadingLevel" type="xs:string" minOccurs="0"/>
+ <xs:element name="RecorderTrackCount" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="RegionCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="RegionOfOrigin" type="xs:string" minOccurs="0"/>
+ <xs:element name="ReleaseDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="ReturnMethod" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="RemovableMemory" type="xs:string" minOccurs="0"/>
+ <xs:element name="ResolutionModes" type="xs:string" minOccurs="0"/>
+ <xs:element name="ReturnPolicy" type="xs:string" minOccurs="0"/>
+ <xs:element name="RingSize" type="xs:string" minOccurs="0"/>
+ <xs:element name="SafetyWarning" type="xs:string" minOccurs="0"/>
+ <xs:element name="SalesRestriction" type="xs:string" minOccurs="0"/>
+ <xs:element name="SecondaryCacheSize" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="SettingType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Size" type="xs:string" minOccurs="0"/>
+ <xs:element name="SKU" type="xs:string" minOccurs="0"/>
+ <xs:element name="SoldInStores" type="xs:string" minOccurs="0"/>
+ <xs:element name="SizePerPearl" type="xs:string" minOccurs="0"/>
+ <xs:element name="SkillLevel" type="xs:string" minOccurs="0"/>
+ <xs:element name="SoundCardDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="SpeakerCount" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="SpeakerDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="SpecialFeatures" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="StoneClarity" type="xs:string" minOccurs="0"/>
+ <xs:element name="StoneColor" type="xs:string" minOccurs="0"/>
+ <xs:element name="StoneCut" type="xs:string" minOccurs="0"/>
+ <xs:element name="StoneShape" type="xs:string" minOccurs="0"/>
+ <xs:element name="StoneWeight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="Studio" type="xs:string" minOccurs="0"/>
+ <xs:element name="SubscriptionLength" type="tns:NonNegativeIntegerWithUnits" minOccurs="0"/>
+ <xs:element name="SupportedImageType" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="SystemBusSpeed" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="SystemMemorySizeMax" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="SystemMemorySize" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="SystemMemoryType" type="xs:string" minOccurs="0"/>
+ <xs:element name="TellingPageIndicator" type="xs:string" minOccurs="0"/>
+ <xs:element name="TheatricalReleaseDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="Title" type="xs:string" minOccurs="0"/>
+ <xs:element name="TotalDiamondWeight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="TotalExternalBaysFree" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalFirewirePorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalGemWeight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="TotalInternalBaysFree" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalMetalWeight" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="TotalNTSCPALPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalParallelPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPCCardSlots" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalPCISlotsFree" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalSerialPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalSVideoOutPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalUSB2Ports" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalUSBPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="TotalVGAOutPorts" type="xs:nonNegativeInteger" minOccurs="0"/>
+ <xs:element name="UPC" type="xs:string" minOccurs="0"/>
+ <xs:element name="VariationDenomination" type="xs:string" minOccurs="0"/>
+ <xs:element name="VariationDescription" type="xs:string" minOccurs="0"/>
+ <xs:element name="VendorRebate" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Type" type="xs:string" minOccurs="0"/>
+ <xs:element name="StartDate" type="xs:string" minOccurs="0"/>
+ <xs:element name="EndDate" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Warranty" type="xs:string" minOccurs="0"/>
+ <xs:element name="WatchMovementType" type="xs:string" minOccurs="0"/>
+ <xs:element name="WebsiteBuyability" type="xs:string" minOccurs="0"/>
+ <xs:element name="WaterResistanceDepth" type="tns:DecimalWithUnits" minOccurs="0"/>
+ <xs:element name="WirelessMicrophoneFrequency" type="xs:nonNegativeInteger" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="NonNegativeIntegerWithUnits">
+ <xs:simpleContent>
+ <xs:extension base="xs:nonNegativeInteger">
+ <xs:attribute name="Units" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:complexType name="DecimalWithUnits">
+ <xs:simpleContent>
+ <xs:extension base="xs:decimal">
+ <xs:attribute name="Units" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:complexType name="StringWithUnits">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Units" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:simpleType name="positiveIntegerOrAll">
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:positiveInteger"/>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="All"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:schema>
+ </types>
+ <message name="HelpRequestMsg">
+ <part name="body" element="tns:Help"/>
+ </message>
+ <message name="HelpResponseMsg">
+ <part name="body" element="tns:HelpResponse"/>
+ </message>
+ <message name="ItemSearchRequestMsg">
+ <part name="body" element="tns:ItemSearch"/>
+ </message>
+ <message name="ItemSearchResponseMsg">
+ <part name="body" element="tns:ItemSearchResponse"/>
+ </message>
+ <message name="ItemLookupRequestMsg">
+ <part name="body" element="tns:ItemLookup"/>
+ </message>
+ <message name="ItemLookupResponseMsg">
+ <part name="body" element="tns:ItemLookupResponse"/>
+ </message>
+ <message name="BrowseNodeLookupRequestMsg">
+ <part name="body" element="tns:BrowseNodeLookup"/>
+ </message>
+ <message name="BrowseNodeLookupResponseMsg">
+ <part name="body" element="tns:BrowseNodeLookupResponse"/>
+ </message>
+ <message name="ListSearchRequestMsg">
+ <part name="body" element="tns:ListSearch"/>
+ </message>
+ <message name="ListSearchResponseMsg">
+ <part name="body" element="tns:ListSearchResponse"/>
+ </message>
+ <message name="ListLookupRequestMsg">
+ <part name="body" element="tns:ListLookup"/>
+ </message>
+ <message name="ListLookupResponseMsg">
+ <part name="body" element="tns:ListLookupResponse"/>
+ </message>
+ <message name="CustomerContentSearchRequestMsg">
+ <part name="body" element="tns:CustomerContentSearch"/>
+ </message>
+ <message name="CustomerContentSearchResponseMsg">
+ <part name="body" element="tns:CustomerContentSearchResponse"/>
+ </message>
+ <message name="CustomerContentLookupRequestMsg">
+ <part name="body" element="tns:CustomerContentLookup"/>
+ </message>
+ <message name="CustomerContentLookupResponseMsg">
+ <part name="body" element="tns:CustomerContentLookupResponse"/>
+ </message>
+ <message name="SimilarityLookupRequestMsg">
+ <part name="body" element="tns:SimilarityLookup"/>
+ </message>
+ <message name="SimilarityLookupResponseMsg">
+ <part name="body" element="tns:SimilarityLookupResponse"/>
+ </message>
+ <message name="SellerLookupRequestMsg">
+ <part name="body" element="tns:SellerLookup"/>
+ </message>
+ <message name="SellerLookupResponseMsg">
+ <part name="body" element="tns:SellerLookupResponse"/>
+ </message>
+ <message name="CartGetRequestMsg">
+ <part name="body" element="tns:CartGet"/>
+ </message>
+ <message name="CartGetResponseMsg">
+ <part name="body" element="tns:CartGetResponse"/>
+ </message>
+ <message name="CartAddRequestMsg">
+ <part name="body" element="tns:CartAdd"/>
+ </message>
+ <message name="CartAddResponseMsg">
+ <part name="body" element="tns:CartAddResponse"/>
+ </message>
+ <message name="CartCreateRequestMsg">
+ <part name="body" element="tns:CartCreate"/>
+ </message>
+ <message name="CartCreateResponseMsg">
+ <part name="body" element="tns:CartCreateResponse"/>
+ </message>
+ <message name="CartModifyRequestMsg">
+ <part name="body" element="tns:CartModify"/>
+ </message>
+ <message name="CartModifyResponseMsg">
+ <part name="body" element="tns:CartModifyResponse"/>
+ </message>
+ <message name="CartClearRequestMsg">
+ <part name="body" element="tns:CartClear"/>
+ </message>
+ <message name="CartClearResponseMsg">
+ <part name="body" element="tns:CartClearResponse"/>
+ </message>
+ <message name="TransactionLookupRequestMsg">
+ <part name="body" element="tns:TransactionLookup"/>
+ </message>
+ <message name="TransactionLookupResponseMsg">
+ <part name="body" element="tns:TransactionLookupResponse"/>
+ </message>
+ <message name="SellerListingSearchRequestMsg">
+ <part name="body" element="tns:SellerListingSearch"/>
+ </message>
+ <message name="SellerListingSearchResponseMsg">
+ <part name="body" element="tns:SellerListingSearchResponse"/>
+ </message>
+ <message name="SellerListingLookupRequestMsg">
+ <part name="body" element="tns:SellerListingLookup"/>
+ </message>
+ <message name="TagLookupRequestMsg">
+ <part name="body" element="tns:TagLookup"/>
+ </message>
+ <message name="TagLookupResponseMsg">
+ <part name="body" element="tns:TagLookupResponse"/>
+ </message>
+ <message name="SellerListingLookupResponseMsg">
+ <part name="body" element="tns:SellerListingLookupResponse"/>
+ </message>
+ <message name="MultiOperationRequestMsg">
+ <part name="body" element="tns:MultiOperation"/>
+ </message>
+ <message name="MultiOperationResponseMsg">
+ <part name="body" element="tns:MultiOperationResponse"/>
+ </message>
+ <portType name="AWSECommerceServicePortType">
+ <operation name="Help">
+ <input message="tns:HelpRequestMsg"/>
+ <output message="tns:HelpResponseMsg"/>
+ </operation>
+ <operation name="ItemSearch">
+ <input message="tns:ItemSearchRequestMsg"/>
+ <output message="tns:ItemSearchResponseMsg"/>
+ </operation>
+ <operation name="ItemLookup">
+ <input message="tns:ItemLookupRequestMsg"/>
+ <output message="tns:ItemLookupResponseMsg"/>
+ </operation>
+ <operation name="BrowseNodeLookup">
+ <input message="tns:BrowseNodeLookupRequestMsg"/>
+ <output message="tns:BrowseNodeLookupResponseMsg"/>
+ </operation>
+ <operation name="ListSearch">
+ <input message="tns:ListSearchRequestMsg"/>
+ <output message="tns:ListSearchResponseMsg"/>
+ </operation>
+ <operation name="ListLookup">
+ <input message="tns:ListLookupRequestMsg"/>
+ <output message="tns:ListLookupResponseMsg"/>
+ </operation>
+ <operation name="CustomerContentSearch">
+ <input message="tns:CustomerContentSearchRequestMsg"/>
+ <output message="tns:CustomerContentSearchResponseMsg"/>
+ </operation>
+ <operation name="CustomerContentLookup">
+ <input message="tns:CustomerContentLookupRequestMsg"/>
+ <output message="tns:CustomerContentLookupResponseMsg"/>
+ </operation>
+ <operation name="SimilarityLookup">
+ <input message="tns:SimilarityLookupRequestMsg"/>
+ <output message="tns:SimilarityLookupResponseMsg"/>
+ </operation>
+ <operation name="SellerLookup">
+ <input message="tns:SellerLookupRequestMsg"/>
+ <output message="tns:SellerLookupResponseMsg"/>
+ </operation>
+ <operation name="CartGet">
+ <input message="tns:CartGetRequestMsg"/>
+ <output message="tns:CartGetResponseMsg"/>
+ </operation>
+ <operation name="CartAdd">
+ <input message="tns:CartAddRequestMsg"/>
+ <output message="tns:CartAddResponseMsg"/>
+ </operation>
+ <operation name="CartCreate">
+ <input message="tns:CartCreateRequestMsg"/>
+ <output message="tns:CartCreateResponseMsg"/>
+ </operation>
+ <operation name="CartModify">
+ <input message="tns:CartModifyRequestMsg"/>
+ <output message="tns:CartModifyResponseMsg"/>
+ </operation>
+ <operation name="CartClear">
+ <input message="tns:CartClearRequestMsg"/>
+ <output message="tns:CartClearResponseMsg"/>
+ </operation>
+ <operation name="TransactionLookup">
+ <input message="tns:TransactionLookupRequestMsg"/>
+ <output message="tns:TransactionLookupResponseMsg"/>
+ </operation>
+ <operation name="SellerListingSearch">
+ <input message="tns:SellerListingSearchRequestMsg"/>
+ <output message="tns:SellerListingSearchResponseMsg"/>
+ </operation>
+ <operation name="SellerListingLookup">
+ <input message="tns:SellerListingLookupRequestMsg"/>
+ <output message="tns:SellerListingLookupResponseMsg"/>
+ </operation>
+ <operation name="TagLookup">
+ <input message="tns:TagLookupRequestMsg"/>
+ <output message="tns:TagLookupResponseMsg"/>
+ </operation>
+ <operation name="MultiOperation">
+ <input message="tns:MultiOperationRequestMsg"/>
+ <output message="tns:MultiOperationResponseMsg"/>
+ </operation>
+ </portType>
+ <binding name="AWSECommerceServiceBinding" type="tns:AWSECommerceServicePortType">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <operation name="Help">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="ItemSearch">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="ItemLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="BrowseNodeLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="ListSearch">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="ListLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="CustomerContentSearch">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="CustomerContentLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="SimilarityLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="SellerLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="CartGet">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="CartCreate">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="CartAdd">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="CartModify">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="CartClear">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="TransactionLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="SellerListingSearch">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="SellerListingLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="TagLookup">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="MultiOperation">
+ <soap:operation soapAction="http://soap.amazon.com"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ </binding>
+ <service name="AWSECommerceService">
+ <port name="AWSECommerceServicePort" binding="tns:AWSECommerceServiceBinding">
+ <soap:address location="http://soap.amazon.com/onca/soap?Service=AWSECommerceService"/>
+ </port>
+ </service>
+</definitions>
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/resources/wsdl/ShoppingService.wsdl b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/resources/wsdl/ShoppingService.wsdl
new file mode 100644
index 0000000000..0a4871ca88
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/src/main/resources/wsdl/ShoppingService.wsdl
@@ -0,0 +1,12607 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Version 535 -->
+<!-- Copyright (c) 2003-2007 eBay Inc. All Rights Reserved. -->
+<wsdl:definitions
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:xmime="http://www.w3.org/2005/05/xmlmime"
+ xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:ns="urn:ebay:apis:eBLBaseComponents"
+ xmlns="urn:ebay:apis:eBLBaseComponents"
+ targetNamespace="urn:ebay:apis:eBLBaseComponents">
+ <wsdl:types>
+ <xs:schema targetNamespace="urn:ebay:apis:eBLBaseComponents"
+ xmlns:ns="urn:ebay:apis:eBLBaseComponents"
+ xmlns="urn:ebay:apis:eBLBaseComponents"
+ xmlns:xmime="http://www.w3.org/2005/05/xmlmime"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+
+
+ <!-- ##### SHARED_TYPES ##### -->
+ <!--
+##### from file ./../Shared/xsd/AbstractRequestType.xsd #####
+
+-->
+ <xs:complexType name="AbstractRequestType" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ Base type definition of the request payload, which can carry any type
+ of payload content plus optional versioning information and detail level requirements.
+ All concrete request types are derived from the abstract request type.
+ The naming convention we use for the concrete type names is the name of the service
+ (the verb or call name) followed by "RequestType": VerbNameRequestType
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="MessageID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ If you pass a value in MessageID in a request,
+ we'll return the same value in CorrelationID in the response.
+ If you're making a lot of calls, you can use this for tracking that a
+ response is returned for every request and to match
+ particular responses to particular requests. (In this case, specify
+ a different value for each request.) You can specify any value
+ that is useful to you.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength/>
+ <CallInfo>
+ <AllCalls/>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+##### from file ./../Shared/xsd/AbstractResponseType.xsd #####
+
+-->
+ <xs:complexType name="AbstractResponseType" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ Base type definition of a response payload that can carry any
+ type of payload content with following optional elements:&lt;br&gt;
+ - timestamp of response message&lt;br&gt;
+ - application-level acknowledgement&lt;br&gt;
+ - application-level (business-level) errors and warnings
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Timestamp" type="xs:dateTime" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ This value represents the date and time when eBay processed the
+ request. The time zone of this value is &lt;a href="types/simpleTypes.html#dateTime"&gt;GMT&lt;/a&gt;
+ and the format is the
+ ISO 8601 date and time format (YYYY-MM-DDTHH:MM:SS.SSSZ).
+ See the "dateTime" type for information about this
+ time format and converting to and from the GMT time zone.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <AllCalls/>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Ack" type="ns:AckCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indiates whether the call was successfully processed by eBay.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <AllCalls/>
+ <Returned>Always</Returned>
+ <AllValuesExcept>PartialFailure</AllValuesExcept>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Errors" type="ns:ErrorType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ A list of application-level errors or warnings (if any) that were raised
+ when eBay processed the request. &lt;br&gt;
+ &lt;br&gt;
+ Application-level errors occur due to
+ problems with business-level data on the client side or on the eBay
+ server side. For example, an error would occur if the request contains
+ an invalid combination of fields, or it is missing a required field,
+ or the value of the field is not recognized. An error could also occur
+ if eBay encountered a problem in our internal business logic while
+ processing the request.&lt;br&gt;
+ &lt;br&gt;
+ Only returned if there were warnings or errors.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <AllCalls/>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Build" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ This refers to the particular software build that eBay used when
+ processing the request and generating the response. This includes the
+ version number plus additional information. eBay Developer Support may
+ request the build information when helping you resolve technical issues.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <AllCalls/>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Version" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The release version that eBay used to process the request.
+ &lt;br&gt;
+ &lt;br&gt;
+ &lt;span class="tablenote"&gt;&lt;b&gt;Note:&lt;/b&gt;
+ This is usually the latest release version, as specified in the
+ release notes. (eBay releases the API to international sites
+ about a week after we release it to the US site.) &lt;/span&gt;&lt;br&gt;
+ &lt;br&gt;
+ If a field in the response returns the token "CustomCode", it usually
+ means that the field is a code type (a token or enumeration),
+ and that in your request URL (or HTTP header) you specified a
+ version that is older than the version in which the token was added
+ to the call.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <AllCalls/>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <SeeLink>
+ <Title>eBay Versioning Strategy</Title>
+ <URL>http://developer.ebay.com/DevZone/XML/docs/HowTo/eBayWS/eBaySchemaVersioning.html</URL>
+ </SeeLink>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CorrelationID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ If you pass a value in MessageID in a request, we will return the same
+ value in CorrelationID in the response. You can use this for tracking
+ that a response is returned for every request and to match particular
+ responses to particular requests. Only returned if MessageID was used.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <AllCalls/>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+##### from file ./../Shared/xsd/AckCodeList.xsd #####
+
+-->
+ <xs:simpleType name="AckCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ AckCodeType - Type declaration to be used by other schema. This code identifies
+ the acknowledgement code types that eBay could use to communicate the status of
+ processing a (request) message to an application. This code would be used as part
+ of a response message that contains an application-level acknowledgement element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Success">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Request processing succeeded
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Failure">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Request processing failed
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Warning">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Request processing completed with warning information
+ being included in the response message
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PartialFailure">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Request processing completed with some failures.
+ See the Errors data to determine which portions of the request failed.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+##### from file ./../Shared/xsd/ErrorClassificationCodeList.xsd #####
+
+-->
+ <xs:simpleType name="ErrorClassificationCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="RequestError">
+ <xs:annotation>
+ <xs:documentation>
+ An error has occurred either as a result of a problem in the sending application or because
+ the application's end-user has attempted to submit invalid data (or missing data).
+ In these cases, do not retry the request. The problem must be corrected before the request
+ can be made again. If the problem is due to something in the application (such as a missing
+ required field), the application must be changed. If the problem is a result of end-user data,
+ the application must alert the end-user to the problem and provide the means for the end-user
+ to correct the data. Once the problem in the application or data is resolved, resend the request to eBay
+ with the corrected data.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SystemError">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates that an error has occurred on the eBay system side, such as a database or server down.
+ An application can retry the request as-is a reasonable number of times (eBay recommends twice).
+ If the error persists, contact Developer Technical Support. Once the problem has been resolved,
+ the request may be resent in its original form.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+##### from file ./../Shared/xsd/ErrorParameterType.xsd #####
+
+-->
+ <xs:complexType name="ErrorParameterType">
+ <xs:annotation>
+ <xs:documentation>
+ A variable that contains specific information about the context of this error.
+ For example, if you pass in an attribute set ID that does not match
+ the specified category, the attribute set ID might be returned as an error parameter.
+ Use error parameters to flag fields that users need to correct.
+ Also use error parameters to distinguish between errors when multiple
+ errors are returned.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Value" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The value of the variable.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <AllCalls/>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="ParamID" type="xs:string">
+ <xs:annotation>
+ <xs:documentation>
+ The index of the parameter in the error.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <AllCalls/>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+<!--
+##### from file ./../Shared/xsd/ErrorType.xsd #####
+
+-->
+ <xs:complexType name="ErrorType">
+ <xs:annotation>
+ <xs:documentation>
+ These are request errors (as opposed to system errors) that occur due to problems
+ with business-level data (e.g., an invalid combination of arguments) that
+ the application passed in.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="ShortMessage" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A brief description of the condition that raised the error.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <AllCalls/>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <SeeLink>
+ <Title>Errors by Number</Title>
+ <URL>Errors/ErrorMessages.html</URL>
+ </SeeLink>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LongMessage" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A more detailed description of the condition that raised the error.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <AllCalls/>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <SeeLink>
+ <Title>Errors by Number</Title>
+ <URL>Errors/ErrorMessages.html</URL>
+ </SeeLink>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ErrorCode" type="xs:token" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A unique code that identifies the particular error condition that occurred.
+ Your application can use error codes as identifiers
+ in your customized error-handling algorithms.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <AllCalls/>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <SeeLink>
+ <Title>Errors by Number</Title>
+ <URL>Errors/ErrorMessages.html</URL>
+ </SeeLink>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="UserDisplayHint" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ This field is not currently in use for eBay Shopping Web Services.
+ Indicates whether the error message text is intended to be displayed to
+ an end user or intended only to be parsed by the application.
+ If true or not present (the default), the message text is intended for the end user. If false, the message text is intended for
+ the application, and the application should translate the error into a more appropriate message.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <NoCalls/>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SeverityCode" type="ns:SeverityCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates whether the error caused the request to fail.&lt;br&gt;
+ &lt;br&gt;
+ If the request fails and the source of the problem is within the
+ application (such as a missing required element), please change the
+ application before you retry the request. If the problem is due to
+ end-user input data, please alert the end-user to the problem and
+ provide the means for them to correct the data. Once the problem in the
+ application or data is resolved, you can attempt to re-send the request
+ to eBay.&lt;br&gt;
+ &lt;br&gt;
+ If the source of the problem is on eBay's side, you can retry the
+ request as-is a reasonable number of times (eBay recommends twice).
+ If the error persists, contact Developer Technical Support. Once the
+ problem has been resolved, the request may be resent in its original
+ form.&lt;br&gt;
+ &lt;br&gt;
+ When a warning occurs, the error is returned in addition to the business
+ data. In this case, you do not need to retry the request (as the
+ original request was successful). However, depending on the cause or
+ nature of the warning, you might need to contact either the end user or
+ eBay to effect a long term solution to the problem to prevent it from
+ reoccurring in the future.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <AllCalls/>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <SeeLink>
+ <Title>Errors by Number</Title>
+ <URL>Errors/ErrorMessages.html</URL>
+ </SeeLink>
+ <SeeLink>
+ <Title>Requirements for Error Handling
+</Title>
+ <URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ErrorHandlingGuidelines</URL>
+ <For>more information (in the eBay Trading Web Services guide)</For>
+ </SeeLink>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ErrorParameters" type="ns:ErrorParameterType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Some warning and error messages return one or more variables that
+ contain contextual information about the error. This is often the
+ field or value that triggered the error.
+ You can usually predict where these will
+ occur by looking at the "replaceable_value" indicators in our
+ Errors by Number page.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <AllCalls/>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <SeeLink>
+ <Title>Errors by Number</Title>
+ <URL>Errors/ErrorMessages.html</URL>
+ </SeeLink>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ErrorClassification" type="ns:ErrorClassificationCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ API errors are divided between two classes: system errors and request errors.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <AllCalls/>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <SeeLink>
+ <Title>Errors by Number</Title>
+ <URL>Errors/ErrorMessages.html</URL>
+ </SeeLink>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+##### from file ./../Shared/xsd/SeverityCodeList.xsd #####
+
+-->
+ <xs:simpleType name="SeverityCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ SeverityCodeType - Type declaration to be used by other schema. This code
+ identifies the severity of an API error. A code indicates whether there is an API-
+ level error or warning that needs to be communicated to the client.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Warning">
+ <xs:annotation>
+ <xs:documentation>
+ (out) The request was processed successfully, but something occurred
+ that may affect your application or the user. For example, eBay may have
+ changed a value the user sent in. In this case, eBay returns a normal,
+ successful response and also returns the warning.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Error">
+ <xs:annotation>
+ <xs:documentation>
+ (out) The request that triggered the error was not processed
+ successfully. When a serious application-level error occurs, the error
+ is returned instead of the business data.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+
+
+ <!-- ##### XSD_TYPES ##### -->
+<!--
+
+##### from file ../Shopping/xsd/AmountType.xsd #####
+
+-->
+ <xs:complexType name="AmountType">
+ <xs:annotation>
+ <xs:documentation>
+ Basic type for specifying monetary amounts. A double value (e.g.,
+ 1.00 or 1.0) is meaningful as a monetary amount when accompanied by a
+ specification of the currency, in which case the value specifies
+ the amount in that currency. An AmountType expresses both the value
+ (a double) and the currency. Details such as prices, fees, costs,
+ and payments are specified as amount types.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:double">
+ <xs:attribute name="currencyID" type="ns:CurrencyCodeType" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ Currency in which the monetary amount is specified.
+ See CurrencyCodeType for applicable values.
+ </xs:documentation>
+ <xs:appinfo>
+ <AllValuesExcept>INR, CAD, HKD, AUD, CHF, MYR, EUR, PHP, PLN, USD, SGD, SEK, GBP</AllValuesExcept>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+</xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/AverageRatingDetailsType.xsd #####
+
+-->
+ <xs:complexType name="AverageRatingDetailsType">
+ <xs:annotation>
+ <xs:documentation>
+ Applicable to sites that support the Detailed Seller Ratings feature.
+ The AverageRatingDetailsType contains the average detailed seller ratings in an area. When buyers leave an overall Feedback rating (positive, neutral, or negative) for a seller, they also can leave ratings in four areas: item as described, communication, shipping time, and charges for shipping and handling. Users retrieve detailed ratings as averages of the ratings left by buyers.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="RatingDetail" type="ns:FeedbackRatingDetailCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The area of a specific average detailed seller rating.
+ Users retrieve detailed ratings as averages of the ratings left by buyers.
+ When buyers leave an overall Feedback rating (positive, neutral, or negative)
+ for a seller, they also can leave ratings in four areas:
+ item as described, communication, shipping time, and charges for shipping and handling.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Rating" type="xs:double" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ An average detailed seller rating applying to the area in the corresponding RatingDetail field.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RatingCount" type="xs:long" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The number of detailed seller ratings in the area
+ in the corresponding RatingDetail field.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/BuyerPaymentMethodCodeList.xsd #####
+
+-->
+ <xs:simpleType name="BuyerPaymentMethodCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ Identifies payment methods used by a buyer to pay a
+ seller. On item listings, identifies one of the payment methods
+ seller will accept for the item. Available payment methods can
+ differ by site and item. Payment methods are not applicable to eBay
+ Real Estate ad format listings.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="None">
+ <xs:annotation>
+ <xs:documentation>
+ No payment method specified.
+ For example, no payment methods would be specified for Ad format listings.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="MOCC">
+ <xs:annotation>
+ <xs:documentation>
+ Money order/cashiers check.
+ Not applicable to US/CA eBay Motors listings.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="AmEx">
+ <xs:annotation>
+ <xs:documentation>
+ American Express.
+ Not applicable to US/CA eBay Motors listings.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PaymentSeeDescription">
+ <xs:annotation>
+ <xs:documentation>
+ Payment instructions are contained in the item's description.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CCAccepted">
+ <xs:annotation>
+ <xs:documentation>
+ Credit card.
+ Not applicable to Real Estate or US/CA eBay Motors listings.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PersonalCheck">
+ <xs:annotation>
+ <xs:documentation>
+ Personal check.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="COD">
+ <xs:annotation>
+ <xs:documentation>
+ Cash on delivery.
+ Only applicable to the following eBay sites: AT (16), BEFR (24),
+ BENL (123), CH (193), DE (77), ES (186), FR (71), HK (201), IN (203),
+ IT (101), PL (212), and SG (216).
+ Not applicable to Real Estate listings.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="VisaMC">
+ <xs:annotation>
+ <xs:documentation>
+ Visa/Mastercard. These qualify as safe payment methods.
+ Not applicable to US/CA eBay Motors listings.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PaisaPayAccepted">
+ <xs:annotation>
+ <xs:documentation>
+ PaisaPay (for India site only). This qualifies as a safe payment method.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Other">
+ <xs:annotation>
+ <xs:documentation>
+ Other forms of payment.
+ Not applicable to US/CA eBay Motors listings
+ (see PaymentSeeDescription instead).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PayPal">
+ <xs:annotation>
+ <xs:documentation>
+ PayPal is accepted as a payment method. This qualifies as a safe payment method. &lt;br&gt;
+ &lt;br&gt;
+ If PayPal is specified for US/CA eBay Motors vehicles, it is for
+ the vehicle deposit (not for purchasing the vehicle).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Discover">
+ <xs:annotation>
+ <xs:documentation>
+ Discover card.
+ Not applicable to US/CA eBay Motors listings.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CashOnPickup">
+ <xs:annotation>
+ <xs:documentation>
+ Payment on delivery.
+ Not applicable to Real Estate or US/CA eBay Motors listings.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="MoneyXferAccepted">
+ <xs:annotation>
+ <xs:documentation>
+ Direct transfer of money.
+ Not applicable to US/CA eBay Motors listings.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="MoneyXferAcceptedInCheckout">
+ <xs:annotation>
+ <xs:documentation>
+ If the seller has bank account information on file, and
+ MoneyXferAcceptedInCheckout = true, then the bank account
+ information will be displayed in Checkout.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="OtherOnlinePayments">
+ <xs:annotation>
+ <xs:documentation>
+ All other online payments.
+ Not applicable to US/CA eBay Motors listings.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Escrow">
+ <xs:annotation>
+ <xs:documentation>
+ Deprecated.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PrePayDelivery">
+ <xs:annotation>
+ <xs:documentation>
+ Deprecated.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CODPrePayDelivery">
+ <xs:annotation>
+ <xs:documentation>
+ Deprecated.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PostalTransfer">
+ <xs:annotation>
+ <xs:documentation>
+ Deprecated.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ Placeholder value. See
+ &lt;a href="types/simpleTypes.html#token"&gt;token&lt;/a&gt;.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="LoanCheck">
+ <xs:annotation>
+ <xs:documentation>
+ Loan check option (applicable only to the US eBay Motors site,
+ except in the Parts and Accessories category, and the eBay Canada site for motors).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CashInPerson">
+ <xs:annotation>
+ <xs:documentation>
+ Cash-in-person option. Applicable only to US and Canada eBay Motors vehicles,
+ (not the Parts and Accessories category).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ELV">
+ <xs:annotation>
+ <xs:documentation>
+ Elektronisches Lastschriftverfahren (direct debit).
+ Only applicable to Express Germany.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/BuyingGuideDetailsType.xsd #####
+
+-->
+ <xs:complexType name="BuyingGuideDetailsType">
+ <xs:annotation>
+ <xs:documentation>
+ Information about zero or more buying guides and the site's buying guide hub.
+ Buying guides contain content about particular product areas, categories, or subjects
+ to help buyers decide which type of item to purchase based on their particular interests.
+ Multiple buying guides can be returned. See the eBay Web Services Guide for additional information.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="BuyingGuide" type="ns:BuyingGuideType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Information that identifies a buying guide. A buying guide contains content about particular
+ product areas, categories, or subjects to help buyers decide which type of item
+ to purchase based on their particular interests.
+ Buying guides are useful to buyers who do not have a specific product in mind.
+ For example, a digital camera buying guide could help a buyer determine what kind of
+ digital camera is right for them.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="BuyingGuideHub" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ URL of the buying guide home page for the site being searched.
+ Your application can present this URL as a link. Optionally,
+ you can use a value like "See all buying guides" as the link's
+ display name.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/BuyingGuideType.xsd #####
+
+-->
+ <xs:complexType name="BuyingGuideType">
+ <xs:annotation>
+ <xs:documentation>
+ Information that identifies a buying guide. A buying guide provides content about particular
+ product areas, categories, or subjects to help buyers decide which type of item
+ to purchase based on their particular interests.
+ Buying guides are useful to buyers who do not have a specific product in mind.
+ For example, a digital camera buying guide could help a buyer determine what kind of
+ digital camera is right for them.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Display name of the buying guide. &lt;br&gt;
+ &lt;br&gt;
+ FindReviewsAndGuides only returns 20 characters, followed by "..." if the name is
+ longer than 20 characters. For the full title, see BuyingGuide.Title
+ instead.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="URL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ URL for the buying guide. Your application can
+ present this as a link. Use the value of Name or Title as the link's display name.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Identifies the category (if any) that is associated
+ with the buying guide. For FindReviewsAndGuides, this can be a category that is higher or lower in the hierarchy
+ than the category specified in the request. For a matching categories search,
+ you can use this information to determine the order that the buying guides are
+ returned in when multiple guides are found.
+ Optionally, you can use this information to determine where to present
+ the buying guide link in your application.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>10</MaxLength>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Title" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The title of the buying guide.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <MaxLength>55</MaxLength>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Text" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The text of the guide. If the guide is longer than
+ 2000 characters, the text is cut off and it ends with "...".
+ See BuyingGuide.URL for a link to the full text of the review.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <MaxLength>2000</MaxLength>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CreationTime" type="xs:dateTime" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The time and date when the guide was posted.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="UserID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The author's eBay user ID.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/CatalogProductType.xsd #####
+
+-->
+ <xs:complexType name="CatalogProductType">
+ <xs:annotation>
+ <xs:documentation>
+ Information about an eBay catalog product.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="DomainName" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The name of the domain in which the product was found.
+ If the product is mapped to multiple domains, eBay returns
+ the most applicable domain (as determined by eBay).
+ Always returned when Product is returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Items, DomainHistogram, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DetailsURL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Fully qualified URL for optional information about the product,
+ such as a movie's description or film credits. This information
+ is hosted through the eBay Web site and it cannot be edited.
+ Portions of the content are protected by copyright.
+ Applications can include this URL as a link in product search results
+ so that end users can view additional descriptive details about
+ the product. This is usually always returned when Product is returned,
+ but it may be safest to check for the existence of this field.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Items, DomainHistogram, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DisplayStockPhotos" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ If true, your application can attempt to display stock photos that
+ are returned. If false, your application should not attempt to display
+ any stock photos that are returned. This recommendation is useful for
+ catalog data related to products like coins, where stock photos are not
+ necessarily applicable or available. An application with a graphical
+ user interface can use this flag to determine
+ when to hide customized stock photo widgets.
+ Always returned when Product is returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Items, DomainHistogram, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ProductID" type="ns:ProductIDType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ The eBay or external IDs associated with the product. Use the Reference
+ value as input to search for the same product in the future, or
+ use the ISBN, EAN, or UPC value (if returned).
+ The ISBN, EAN, and UPC values can also be useful as keys
+ if your application is comparing products across different sites.
+ Always returned when Product is returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Items, DomainHistogram, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemCount" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Total number of listings on the requested eBay site that use
+ stock information from this catalog product. This value can be greater
+ than the number of listings returned in ItemArray. To retrieve more
+ listings, use FindItemsAdvanced.
+ Only returned when you search by ProductID (and you pass
+ Items or Details in IncludeSelector).
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>0</Min>
+ <Max/>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemSpecifics" type="ns:NameValueListArrayType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A list of name/value pairs that are included in the product's
+ pre-filled Item Specifics. These indicate common aspects or
+ characteristics of the product, such as Publisher (for a book).
+ Also see ProductID for ISBN, UPC, or EAN values, if applicable.
+ This is usually returned. (We are not aware of any cases in which this
+ node is not be returned. However, it may be safest to check for the
+ existence of this node.)
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Items, DomainHistogram, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ReviewCount" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The total number of reviews that are available for this product
+ on the eBay Web site. This can be greater than the number of
+ reviews returned by FindProducts. In a future release, we will provide
+ the capability to retrieve details about reviews.
+ Always returned when Product is returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Items, DomainHistogram, Details</Details>
+ <Min>0</Min>
+ <Max/>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="StockPhotoURL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Fully qualified URL for a stock image (if any) that is associated
+ with the eBay catalog product. The URL is for the image eBay
+ usually displays in product search results (usually 70px tall).
+ It may be helpful to calculate the dimensions of the photo
+ programmatically before displaying it.
+ Only returned if a URL is available for the product.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Items, DomainHistogram, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Title" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The title of the product, as specified in the catalog.
+ Always returned when Product is returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Items, DomainHistogram, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/CategoryArrayType.xsd #####
+
+-->
+ <xs:complexType name="CategoryArrayType">
+ <xs:annotation>
+ <xs:documentation>
+ Container for a list of categories.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Category" type="ns:CategoryType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Contains details about a category.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Details>IncludeSelector: CategoryHistogram</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetCategoryInfo</CallName>
+ <Details>IncludeSelector: ChildCategories</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/CategoryType.xsd #####
+
+-->
+ <xs:complexType name="CategoryType">
+ <xs:annotation>
+ <xs:documentation>
+ Contains details about a category.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="CategoryID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The numeric ID of a category on eBay.
+ &lt;br&gt;
+ &lt;br&gt;
+ Use an ID of -1 to retrieve the root category and the top-level (level 1) meta categories. You can determine other CategoryIDs from the response from this call, or from a specific item (retrieved from another call like FindItemsAdvanced or GetSingleItem), or from the eBay website.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Details>IncludeSelector: CategoryHistogram</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetCategoryInfo</CallName>
+ <Details>IncludeSelector: None, ChildCategories</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryLevel" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The level where the category fits in the site's category hierarchy.
+ For example, if this field has a value of 2, then the category is 2
+ levels below the root category.
+ &lt;br&gt;
+ &lt;br&gt;
+ Note that the value of CategoryLevel will always be 1 level below the level
+ of the requested category. To retrieve a category's children, pass its CategoryID back into the request.
+ &lt;br&gt;
+ &lt;br&gt;
+ In the FindItemsAdvanced response, ItemCount indicates the total
+ quantity of matching items in the category.
+ &lt;br&gt;
+ &lt;br&gt;
+ In the FindItemsAdvanced response, sibling categories
+ (i.e., matching categories at the same level) are sorted by ItemCount,
+ descending order.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Details>IncludeSelector: CategoryHistogram</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetCategoryInfo</CallName>
+ <Details>IncludeSelector: None, ChildCategories</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryName" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Display name of the category as it would appear on
+ the eBay Web site.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Details>IncludeSelector: CategoryHistogram</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetCategoryInfo</CallName>
+ <Details>IncludeSelector: None, ChildCategories</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryParentID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Category ID identifying a category that is an ancestor of
+ the category indicated in CategoryID.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Details>IncludeSelector: CategoryHistogram</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetCategoryInfo</CallName>
+ <Details>IncludeSelector: None, ChildCategories</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryParentName" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Display name of the category indicated in CategoryParentID.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Details>IncludeSelector: CategoryHistogram</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetCategoryInfo</CallName>
+ <Details>IncludeSelector: None, ChildCategories</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemCount" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The total quantity of matching items in the category.
+ In the FindItemsAdvanced response, matching categories at the same level
+ (i.e., sibling categories) are sorted by ItemCount. That is, if the request
+ specifies that fewer categories or subcategories should be returned,
+ the ones with the most matching items are returned first.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Details>IncludeSelector: CategoryHistogram</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryNamePath" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The fully qualified category display name as it would appear on the
+ eBay site (e.g., Home &amp; Garden:Kitchen:Tools &amp; Gadgets).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetCategoryInfo</CallName>
+ <Details>IncludeSelector: None, ChildCategories</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryIDPath" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The fully qualified category ID (e.g., 11700:20625:20635 for Home &amp; Garden:Kitchen:Tools &amp; Gadgets).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetCategoryInfo</CallName>
+ <Details>IncludeSelector: None, ChildCategories</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LeafCategory" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ If true, indicates that the category indicated in CategoryID is a leaf category, in which items may be listed (if the category is not also
+ expired or virtual).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetCategoryInfo</CallName>
+ <Details>IncludeSelector: None, ChildCategories</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/CharityStatusCodeList.xsd #####
+
+-->
+ <xs:simpleType name="CharityStatusCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ CharityStatusCodeType - Type declaration to be used by other schema.
+ Indicates the nonprofit status of the nonprofit charity organization registered with the dedicated eBay Giving Works provider.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Valid">
+ <xs:annotation>
+ <xs:documentation>
+ (out) The specified nonprofit charity organization is a valid nonprofit charity organization according to the requirements of the dedicated eBay Giving Works provider.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="NoLongerValid">
+ <xs:annotation>
+ <xs:documentation>
+ (out) The specified nonprofit charity organization is no longer a valid nonprofit charity organization according to the requirements of the dedicated eBay Giving Works provider.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/CharityType.xsd #####
+
+-->
+ <xs:complexType name="CharityType">
+ <xs:annotation>
+ <xs:documentation>
+ Identifies a Giving Works listing and benefiting nonprofit charity organization.
+ Currently supported through the US and eBay Motors sites only. The Ad Format and
+ Mature Audiences categories are not supported.
+ Not applicable for US eBay Motors, international, Real Estate, and Tickets.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="CharityID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A unique identification number assigned by eBay to
+ registered nonprofit charity organizations.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CharityName" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The name of the benefiting nonprofit charity organization selected by the
+ charity seller.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CharityNumber" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A unique identification number assigned to a nonprofit
+ charity organization by the dedicated provider of
+ eBay Giving Works. Being superseded by CharityID. Max 10
+ digits.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DonationPercent" type="xs:float" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The percentage of the purchase price that the
+ seller chooses to donate to the selected nonprofit
+ organization. This percentage is displayed in the Giving
+ Works item listing. Possible values: 10.0 to 100.0.
+ Percentages must increment by 5.0. Minimum donation
+ percentages may be required for Giving Works listings, see
+ http://pages.ebay.com/help/sell/selling-nonprofit.html for
+ details. DonationPercent is required input when listing
+ Giving Works items.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Mission" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The stated mission of the nonprofit charity
+ organization. This mission is displayed in the Giving Works
+ item listing.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LogoURL" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The URL of the nonprofit charity organization. This
+ URL is displayed in the Giving Works item listing.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CharityListing" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ If true, indicates that the seller has chosen to use
+ eBay Giving Works to donate a percentage of the item's
+ purchase price to a selected nonprofit organization.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Status" type="ns:CharityStatusCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The status of the nonprofit charity organization.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/CommentTypeCodeList.xsd #####
+
+-->
+ <xs:simpleType name="CommentTypeCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ CommentTypeCodeType - Type declaration to be used by other schema.
+ These are the possible codes to specify the types of feedback/comment.
+ Additional information about feedback is available in the online Help of the eBay site.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Positive">
+ <xs:annotation>
+ <xs:documentation>
+ (in/out) Positive feedback. Increases total feedback score.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Neutral">
+ <xs:annotation>
+ <xs:documentation>
+ (in/out) Neutral feedback. No effect on total feedback score.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Negative">
+ <xs:annotation>
+ <xs:documentation>
+ (in/out) Negative feedback. Decreases total feedback score.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Withdrawn">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Withdrawn feedback. Removes the effect of the original
+ feedback on total feedback score. Comments from withdrawn feedback
+ are still visible.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="IndependentlyWithdrawn">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Applies to the eBay Motors site only. Feedback is withdrawn based on
+ the decision of a third party.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/CountryCodeList.xsd #####
+
+-->
+ <xs:simpleType name="CountryCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ Defines the standard 2-letter ISO 3166 country code set, plus
+ some additional country codes that eBay uses.
+ (The additional codes appear at the end of this code list and
+ are noted as non-ISO.)
+ For English names that correspond to each code (e.g., KY="Cayman Islands"),
+ see the ISO site:
+ http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="AF"/>
+ <xs:enumeration value="AL"/>
+ <xs:enumeration value="DZ"/>
+ <xs:enumeration value="AS"/>
+ <xs:enumeration value="AD"/>
+ <xs:enumeration value="AO"/>
+ <xs:enumeration value="AI"/>
+ <xs:enumeration value="AQ"/>
+ <xs:enumeration value="AG"/>
+ <xs:enumeration value="AR"/>
+ <xs:enumeration value="AM"/>
+ <xs:enumeration value="AW"/>
+ <xs:enumeration value="AU"/>
+ <xs:enumeration value="AT"/>
+ <xs:enumeration value="AZ"/>
+ <xs:enumeration value="BS"/>
+ <xs:enumeration value="BH"/>
+ <xs:enumeration value="BD"/>
+ <xs:enumeration value="BB"/>
+ <xs:enumeration value="BY"/>
+ <xs:enumeration value="BE"/>
+ <xs:enumeration value="BZ"/>
+ <xs:enumeration value="BJ"/>
+ <xs:enumeration value="BM"/>
+ <xs:enumeration value="BT"/>
+ <xs:enumeration value="BO"/>
+ <xs:enumeration value="BA"/>
+ <xs:enumeration value="BW"/>
+ <xs:enumeration value="BV"/>
+ <xs:enumeration value="BR"/>
+ <xs:enumeration value="IO"/>
+ <xs:enumeration value="BN"/>
+ <xs:enumeration value="BG"/>
+ <xs:enumeration value="BF"/>
+ <xs:enumeration value="BI"/>
+ <xs:enumeration value="KH"/>
+ <xs:enumeration value="CM"/>
+ <xs:enumeration value="CA"/>
+ <xs:enumeration value="CV"/>
+ <xs:enumeration value="KY"/>
+ <xs:enumeration value="CF"/>
+ <xs:enumeration value="TD"/>
+ <xs:enumeration value="CL"/>
+ <xs:enumeration value="CN"/>
+ <xs:enumeration value="CX"/>
+ <xs:enumeration value="CC"/>
+ <xs:enumeration value="CO"/>
+ <xs:enumeration value="KM"/>
+ <xs:enumeration value="CG"/>
+ <xs:enumeration value="CD"/>
+ <xs:enumeration value="CK"/>
+ <xs:enumeration value="CR"/>
+ <xs:enumeration value="CI"/>
+ <xs:enumeration value="HR"/>
+ <xs:enumeration value="CU"/>
+ <xs:enumeration value="CY"/>
+ <xs:enumeration value="CZ"/>
+ <xs:enumeration value="DK"/>
+ <xs:enumeration value="DJ"/>
+ <xs:enumeration value="DM"/>
+ <xs:enumeration value="DO"/>
+ <xs:enumeration value="TP"/>
+ <xs:enumeration value="EC"/>
+ <xs:enumeration value="EG"/>
+ <xs:enumeration value="SV"/>
+ <xs:enumeration value="GQ"/>
+ <xs:enumeration value="ER"/>
+ <xs:enumeration value="EE"/>
+ <xs:enumeration value="ET"/>
+ <xs:enumeration value="FK"/>
+ <xs:enumeration value="FO"/>
+ <xs:enumeration value="FJ"/>
+ <xs:enumeration value="FI"/>
+ <xs:enumeration value="FR"/>
+ <xs:enumeration value="GF"/>
+ <xs:enumeration value="PF">
+ <xs:annotation>
+ <xs:documentation>
+ French Polynesia. Includes Tahiti.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="TF"/>
+ <xs:enumeration value="GA"/>
+ <xs:enumeration value="GM"/>
+ <xs:enumeration value="GE"/>
+ <xs:enumeration value="DE"/>
+ <xs:enumeration value="GH"/>
+ <xs:enumeration value="GI"/>
+ <xs:enumeration value="GR"/>
+ <xs:enumeration value="GL"/>
+ <xs:enumeration value="GD"/>
+ <xs:enumeration value="GP"/>
+ <xs:enumeration value="GU"/>
+ <xs:enumeration value="GT"/>
+ <xs:enumeration value="GN"/>
+ <xs:enumeration value="GW"/>
+ <xs:enumeration value="GY"/>
+ <xs:enumeration value="HT"/>
+ <xs:enumeration value="HM"/>
+ <xs:enumeration value="VA"/>
+ <xs:enumeration value="HN"/>
+ <xs:enumeration value="HK"/>
+ <xs:enumeration value="HU"/>
+ <xs:enumeration value="IS"/>
+ <xs:enumeration value="IN"/>
+ <xs:enumeration value="ID"/>
+ <xs:enumeration value="IR"/>
+ <xs:enumeration value="IQ"/>
+ <xs:enumeration value="IE"/>
+ <xs:enumeration value="IL"/>
+ <xs:enumeration value="IT"/>
+ <xs:enumeration value="JM"/>
+ <xs:enumeration value="JP"/>
+ <xs:enumeration value="JO"/>
+ <xs:enumeration value="KZ"/>
+ <xs:enumeration value="KE"/>
+ <xs:enumeration value="KI"/>
+ <xs:enumeration value="KP"/>
+ <xs:enumeration value="KR"/>
+ <xs:enumeration value="KW"/>
+ <xs:enumeration value="KG"/>
+ <xs:enumeration value="LA"/>
+ <xs:enumeration value="LV"/>
+ <xs:enumeration value="LB"/>
+ <xs:enumeration value="LS"/>
+ <xs:enumeration value="LR"/>
+ <xs:enumeration value="LY"/>
+ <xs:enumeration value="LI"/>
+ <xs:enumeration value="LT"/>
+ <xs:enumeration value="LU"/>
+ <xs:enumeration value="MO"/>
+ <xs:enumeration value="MK"/>
+ <xs:enumeration value="MG"/>
+ <xs:enumeration value="MW"/>
+ <xs:enumeration value="MY"/>
+ <xs:enumeration value="MV"/>
+ <xs:enumeration value="ML"/>
+ <xs:enumeration value="MT"/>
+ <xs:enumeration value="MH"/>
+ <xs:enumeration value="MQ"/>
+ <xs:enumeration value="MR"/>
+ <xs:enumeration value="MU"/>
+ <xs:enumeration value="YT"/>
+ <xs:enumeration value="MX"/>
+ <xs:enumeration value="FM"/>
+ <xs:enumeration value="MD"/>
+ <xs:enumeration value="MC"/>
+ <xs:enumeration value="MN"/>
+ <xs:enumeration value="MS"/>
+ <xs:enumeration value="MA"/>
+ <xs:enumeration value="MZ"/>
+ <xs:enumeration value="MM"/>
+ <xs:enumeration value="NA"/>
+ <xs:enumeration value="NR"/>
+ <xs:enumeration value="NP"/>
+ <xs:enumeration value="NL"/>
+ <xs:enumeration value="AN"/>
+ <xs:enumeration value="NC"/>
+ <xs:enumeration value="NZ"/>
+ <xs:enumeration value="NI"/>
+ <xs:enumeration value="NE"/>
+ <xs:enumeration value="NG"/>
+ <xs:enumeration value="NU"/>
+ <xs:enumeration value="NF"/>
+ <xs:enumeration value="MP"/>
+ <xs:enumeration value="NO"/>
+ <xs:enumeration value="OM"/>
+ <xs:enumeration value="PK"/>
+ <xs:enumeration value="PW"/>
+ <xs:enumeration value="PS"/>
+ <xs:enumeration value="PA"/>
+ <xs:enumeration value="PG"/>
+ <xs:enumeration value="PY"/>
+ <xs:enumeration value="PE"/>
+ <xs:enumeration value="PH"/>
+ <xs:enumeration value="PN"/>
+ <xs:enumeration value="PL"/>
+ <xs:enumeration value="PT"/>
+ <xs:enumeration value="PR"/>
+ <xs:enumeration value="QA"/>
+ <xs:enumeration value="RE"/>
+ <xs:enumeration value="RO"/>
+ <xs:enumeration value="RU"/>
+ <xs:enumeration value="RW"/>
+ <xs:enumeration value="SH"/>
+ <xs:enumeration value="KN"/>
+ <xs:enumeration value="LC"/>
+ <xs:enumeration value="PM"/>
+ <xs:enumeration value="VC"/>
+ <xs:enumeration value="WS"/>
+ <xs:enumeration value="SM"/>
+ <xs:enumeration value="ST"/>
+ <xs:enumeration value="SA"/>
+ <xs:enumeration value="SN"/>
+ <xs:enumeration value="SC"/>
+ <xs:enumeration value="SL"/>
+ <xs:enumeration value="SG"/>
+ <xs:enumeration value="SK"/>
+ <xs:enumeration value="SI"/>
+ <xs:enumeration value="SB"/>
+ <xs:enumeration value="SO"/>
+ <xs:enumeration value="ZA"/>
+ <xs:enumeration value="GS"/>
+ <xs:enumeration value="ES"/>
+ <xs:enumeration value="LK"/>
+ <xs:enumeration value="SD"/>
+ <xs:enumeration value="SR"/>
+ <xs:enumeration value="SJ"/>
+ <xs:enumeration value="SZ"/>
+ <xs:enumeration value="SE"/>
+ <xs:enumeration value="CH"/>
+ <xs:enumeration value="SY"/>
+ <xs:enumeration value="TW"/>
+ <xs:enumeration value="TJ"/>
+ <xs:enumeration value="TZ"/>
+ <xs:enumeration value="TH"/>
+ <xs:enumeration value="TG"/>
+ <xs:enumeration value="TK"/>
+ <xs:enumeration value="TO"/>
+ <xs:enumeration value="TT"/>
+ <xs:enumeration value="TN"/>
+ <xs:enumeration value="TR"/>
+ <xs:enumeration value="TM"/>
+ <xs:enumeration value="TC"/>
+ <xs:enumeration value="TV"/>
+ <xs:enumeration value="UG"/>
+ <xs:enumeration value="UA"/>
+ <xs:enumeration value="AE"/>
+ <xs:enumeration value="GB"/>
+ <xs:enumeration value="US"/>
+ <xs:enumeration value="UM"/>
+ <xs:enumeration value="UY"/>
+ <xs:enumeration value="UZ"/>
+ <xs:enumeration value="VU"/>
+ <xs:enumeration value="VE"/>
+ <xs:enumeration value="VN"/>
+ <xs:enumeration value="VG"/>
+ <xs:enumeration value="VI"/>
+ <xs:enumeration value="WF"/>
+ <xs:enumeration value="EH"/>
+ <xs:enumeration value="YE"/>
+ <xs:enumeration value="YU"/>
+ <xs:enumeration value="ZM"/>
+ <xs:enumeration value="ZW"/>
+ <xs:enumeration value="AA">
+ <xs:annotation>
+ <xs:documentation>
+ NOTE: APO/FPO was defined in eBay list previously
+ but they are not defined in ISO 3166. This country
+ will remain on eBay country code list for backward
+ compatibility.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="QM">
+ <xs:annotation>
+ <xs:documentation>
+ NOTE: Guernsey was defined in eBay list previously
+ but they are not defined in ISO 3166. This country
+ will remain on eBay country list for backward
+ compatibility.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="QN">
+ <xs:annotation>
+ <xs:documentation>
+ NOTE: Jan Mayen was defined in eBay list previously
+ but they are not defined in ISO 3166. This country
+ will remain on eBay country list for backward
+ compatibility.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="QO">
+ <xs:annotation>
+ <xs:documentation>
+ NOTE: Jersey was defined in eBay list previously
+ but they are not defined in ISO 3166. This country
+ will remain on eBay country list for backward
+ compatibility.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="QP">
+ <xs:annotation>
+ <xs:documentation>
+ NOTE: Tahiti was defined in eBay list previously
+ but they are not defined in ISO 3166. This country
+ will remain on eBay country list for backward
+ compatibility. This Code is currently deprecated
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ Placeholder value. See
+ &lt;a href="types/simpleTypes.html#token"&gt;token&lt;/a&gt;.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/CurrencyCodeList.xsd #####
+
+-->
+ <xs:simpleType name="CurrencyCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ Defines the standard 3-letter ISO 4217 currency code set.
+ However, only certain currency codes are currently valid for use on eBay.
+ The valid codes are documented below with the notation "(in/out)".
+ Other codes in this list are for future use.
+ The documentation below specifies English names for each currency.
+ A reference: http://www.xe.com/iso4217.htm
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="AFA"/>
+ <xs:enumeration value="ALL"/>
+ <xs:enumeration value="DZD"/>
+ <xs:enumeration value="ADP"/>
+ <xs:enumeration value="AOA"/>
+ <xs:enumeration value="ARS"/>
+ <xs:enumeration value="AMD"/>
+ <xs:enumeration value="AWG"/>
+ <xs:enumeration value="AZM"/>
+ <xs:enumeration value="BSD"/>
+ <xs:enumeration value="BHD"/>
+ <xs:enumeration value="BDT"/>
+ <xs:enumeration value="BBD"/>
+ <xs:enumeration value="BYR"/>
+ <xs:enumeration value="BZD"/>
+ <xs:enumeration value="BMD"/>
+ <xs:enumeration value="BTN"/>
+ <xs:enumeration value="INR">
+ <xs:annotation>
+ <xs:documentation>
+ Indian Rupee.
+ Applicable to listings on the India site (site ID 203).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="BOV"/>
+ <xs:enumeration value="BOB"/>
+ <xs:enumeration value="BAM"/>
+ <xs:enumeration value="BWP"/>
+ <xs:enumeration value="BRL"/>
+ <xs:enumeration value="BND"/>
+ <xs:enumeration value="BGL"/>
+ <xs:enumeration value="BGN"/>
+ <xs:enumeration value="BIF"/>
+ <xs:enumeration value="KHR"/>
+ <xs:enumeration value="CAD">
+ <xs:annotation>
+ <xs:documentation>
+ Canadian Dollar.
+ Applicable to listings on the Canada site (site ID 2)
+ (Items listed on the Canada site can also specify USD.)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CVE"/>
+ <xs:enumeration value="KYD"/>
+ <xs:enumeration value="XAF"/>
+ <xs:enumeration value="CLF"/>
+ <xs:enumeration value="CLP"/>
+ <xs:enumeration value="CNY">
+ <xs:annotation>
+ <xs:documentation>
+ Chinese Yuan Renminbi.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="COP"/>
+ <xs:enumeration value="KMF"/>
+ <xs:enumeration value="CDF"/>
+ <xs:enumeration value="CRC"/>
+ <xs:enumeration value="HRK"/>
+ <xs:enumeration value="CUP"/>
+ <xs:enumeration value="CYP"/>
+ <xs:enumeration value="CZK"/>
+ <xs:enumeration value="DKK"/>
+ <xs:enumeration value="DJF"/>
+ <xs:enumeration value="DOP"/>
+ <xs:enumeration value="TPE"/>
+ <xs:enumeration value="ECV"/>
+ <xs:enumeration value="ECS"/>
+ <xs:enumeration value="EGP"/>
+ <xs:enumeration value="SVC"/>
+ <xs:enumeration value="ERN"/>
+ <xs:enumeration value="EEK"/>
+ <xs:enumeration value="ETB"/>
+ <xs:enumeration value="FKP"/>
+ <xs:enumeration value="FJD"/>
+ <xs:enumeration value="GMD"/>
+ <xs:enumeration value="GEL"/>
+ <xs:enumeration value="GHC"/>
+ <xs:enumeration value="GIP"/>
+ <xs:enumeration value="GTQ"/>
+ <xs:enumeration value="GNF"/>
+ <xs:enumeration value="GWP"/>
+ <xs:enumeration value="GYD"/>
+ <xs:enumeration value="HTG"/>
+ <xs:enumeration value="HNL"/>
+ <xs:enumeration value="HKD">
+ <xs:annotation>
+ <xs:documentation>
+ Hong Kong Dollar.
+ Applicable to listings on the Hong Kong site (site ID 201).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="HUF"/>
+ <xs:enumeration value="ISK"/>
+ <xs:enumeration value="IDR"/>
+ <xs:enumeration value="IRR"/>
+ <xs:enumeration value="IQD"/>
+ <xs:enumeration value="ILS"/>
+ <xs:enumeration value="JMD"/>
+ <xs:enumeration value="JPY"/>
+ <xs:enumeration value="JOD"/>
+ <xs:enumeration value="KZT"/>
+ <xs:enumeration value="KES"/>
+ <xs:enumeration value="AUD">
+ <xs:annotation>
+ <xs:documentation>
+ Australian Dollar.
+ Applicable to listings on the Australia site (site ID 15).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="KPW"/>
+ <xs:enumeration value="KRW"/>
+ <xs:enumeration value="KWD"/>
+ <xs:enumeration value="KGS"/>
+ <xs:enumeration value="LAK"/>
+ <xs:enumeration value="LVL"/>
+ <xs:enumeration value="LBP"/>
+ <xs:enumeration value="LSL"/>
+ <xs:enumeration value="LRD"/>
+ <xs:enumeration value="LYD"/>
+ <xs:enumeration value="CHF">
+ <xs:annotation>
+ <xs:documentation>
+ Swiss Franc.
+ Applicable to listings on the Switzerland site (site ID 193).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="LTL"/>
+ <xs:enumeration value="MOP"/>
+ <xs:enumeration value="MKD"/>
+ <xs:enumeration value="MGF"/>
+ <xs:enumeration value="MWK"/>
+ <xs:enumeration value="MYR">
+ <xs:annotation>
+ <xs:documentation>
+ Malaysian Ringgit.
+ Applicable to listings on the Malaysia site (site ID 207).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="MVR"/>
+ <xs:enumeration value="MTL"/>
+ <xs:enumeration value="EUR">
+ <xs:annotation>
+ <xs:documentation>
+ Euro.
+ Applicable to listings on these site:
+ Austria (site 16), Belgium_French (site 23),
+ France (site 71), Germany (site 77), Italy (site 101), Belgium_Dutch (site 123),
+ Netherlands (site 146), Spain (site 186), Ireland (site 205).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="MRO"/>
+ <xs:enumeration value="MUR"/>
+ <xs:enumeration value="MXN"/>
+ <xs:enumeration value="MXV"/>
+ <xs:enumeration value="MDL"/>
+ <xs:enumeration value="MNT"/>
+ <xs:enumeration value="XCD"/>
+ <xs:enumeration value="MZM"/>
+ <xs:enumeration value="MMK"/>
+ <xs:enumeration value="ZAR"/>
+ <xs:enumeration value="NAD"/>
+ <xs:enumeration value="NPR"/>
+ <xs:enumeration value="ANG"/>
+ <xs:enumeration value="XPF"/>
+ <xs:enumeration value="NZD"/>
+ <xs:enumeration value="NIO"/>
+ <xs:enumeration value="NGN"/>
+ <xs:enumeration value="NOK"/>
+ <xs:enumeration value="OMR"/>
+ <xs:enumeration value="PKR"/>
+ <xs:enumeration value="PAB"/>
+ <xs:enumeration value="PGK"/>
+ <xs:enumeration value="PYG"/>
+ <xs:enumeration value="PEN"/>
+ <xs:enumeration value="PHP">
+ <xs:annotation>
+ <xs:documentation>
+ Philippines Peso.
+ Applicable to listings on the Philippines site (site ID 211).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PLN">
+ <xs:annotation>
+ <xs:documentation>
+ Poland, Zloty.
+ Applicable to listings on the Poland site (site ID 212).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="USD">
+ <xs:annotation>
+ <xs:documentation>
+ US Dollar.
+ Applicable to listings on the US (site ID 0), eBayMotors (site 100), and Canada (site 2) sites.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="QAR"/>
+ <xs:enumeration value="ROL"/>
+ <xs:enumeration value="RUB"/>
+ <xs:enumeration value="RUR"/>
+ <xs:enumeration value="RWF"/>
+ <xs:enumeration value="SHP"/>
+ <xs:enumeration value="WST"/>
+ <xs:enumeration value="STD"/>
+ <xs:enumeration value="SAR"/>
+ <xs:enumeration value="SCR"/>
+ <xs:enumeration value="SLL"/>
+ <xs:enumeration value="SGD">
+ <xs:annotation>
+ <xs:documentation>
+ Singapore Dollar.
+ Applicable to listings on the Singapore site (site 216).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SKK"/>
+ <xs:enumeration value="SIT"/>
+ <xs:enumeration value="SBD"/>
+ <xs:enumeration value="SOS"/>
+ <xs:enumeration value="LKR"/>
+ <xs:enumeration value="SDD"/>
+ <xs:enumeration value="SRG"/>
+ <xs:enumeration value="SZL"/>
+ <xs:enumeration value="SEK">
+ <xs:annotation>
+ <xs:documentation>
+ Swedish Krona.
+ Applicable to listings on the Sweden site (site 218).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SYP"/>
+ <xs:enumeration value="TWD">
+ <xs:annotation>
+ <xs:documentation>
+ New Taiwan Dollar.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="TJS"/>
+ <xs:enumeration value="TZS"/>
+ <xs:enumeration value="THB"/>
+ <xs:enumeration value="XOF"/>
+ <xs:enumeration value="TOP"/>
+ <xs:enumeration value="TTD"/>
+ <xs:enumeration value="TND"/>
+ <xs:enumeration value="TRL"/>
+ <xs:enumeration value="TMM"/>
+ <xs:enumeration value="UGX"/>
+ <xs:enumeration value="UAH"/>
+ <xs:enumeration value="AED"/>
+ <xs:enumeration value="GBP">
+ <xs:annotation>
+ <xs:documentation>
+ Pound Sterling.
+ Applicable to listings on the UK site (site ID 3).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="USS"/>
+ <xs:enumeration value="USN"/>
+ <xs:enumeration value="UYU"/>
+ <xs:enumeration value="UZS"/>
+ <xs:enumeration value="VUV"/>
+ <xs:enumeration value="VEB"/>
+ <xs:enumeration value="VND"/>
+ <xs:enumeration value="MAD"/>
+ <xs:enumeration value="YER"/>
+ <xs:enumeration value="YUM"/>
+ <xs:enumeration value="ZMK"/>
+ <xs:enumeration value="ZWD"/>
+ <xs:enumeration value="ATS"/>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ Placeholder value. See
+ &lt;a href="types/simpleTypes.html#token"&gt;token&lt;/a&gt;.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/DigitalDeliveryMethodCodeList.xsd #####
+
+-->
+ <xs:simpleType name="DigitalDeliveryMethodCodeType">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="None">
+ <xs:annotation>
+ <xs:documentation>
+ The item cannot be downloaded.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DownloadURL">
+ <xs:annotation>
+ <xs:documentation>
+ The item can be downloaded by using a URL.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="AlternateDeliveryInstructions">
+ <xs:annotation>
+ <xs:documentation>
+ The item can be downloaded according to instructions specified by the seller.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode"/>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/DistanceType.xsd #####
+
+-->
+ <xs:complexType name="DistanceType">
+ <xs:annotation>
+ <xs:documentation>
+ Distance, used for a proximity search.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:double">
+ <xs:attribute name="unit" type="xs:string"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/DomainHistogramType.xsd #####
+
+-->
+ <xs:complexType name="DomainHistogramType">
+ <xs:annotation>
+ <xs:documentation>
+ A generic type used for histograms.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Domain" type="ns:HistogramEntryType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Each histogram entry shows how many matching products
+ were found in each matching domain. A domain is like a high-level
+ category, or a group of categories whose items share the same basic
+ product characteristics.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: DomainHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: DomainHistogram</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/ExternalProductCodeList.xsd #####
+
+-->
+ <xs:simpleType name="ExternalProductCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates the type of external product ID being used to identify a
+ stock product.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="ISBN">
+ <xs:annotation>
+ <xs:documentation>
+ (in/out) ExternalProductID.Value contains an ISBN value.
+ Required when you pass an ISBN as the external product ID.
+ (This value is also applicable to Half.com listings.)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UPC">
+ <xs:annotation>
+ <xs:documentation>
+ (in/out) ExternalProductID.Value contains a UPC value.
+ Required when you pass a UPC as the external product ID.
+ (This value is also applicable to Half.com listings.)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ProductID">
+ <xs:annotation>
+ <xs:documentation>
+ (in) ExternalProductID.Value contains an eBay catalog product ID.
+ Required when you pass an eBay product ID
+ as the external product ID.
+ Not applicable with FindItemsAdvanced, FindItemsAdvancedExpress, or
+ FindProducts.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="EAN">
+ <xs:annotation>
+ <xs:documentation>
+ ExternalProductID.Value contains an EAN value.
+ Required when you pass an EAN as the external product ID.
+ Not applicable with FindItemsAdvancedExpress.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Keywords">
+ <xs:annotation>
+ <xs:documentation>
+ (in) ExternalProductID.Value contains a set of keywords that uniquely identify the product.
+ Only applicable when listing event ticket.
+ See the eBay Web Services guide for information about valid
+ ticket keywords for an external product ID.
+ Required when you pass a set of keywords as the external product ID.
+ Not applicable with FindItemsAdvanced, FindItemsAdvancedExpress, or
+ FindProducts. With FindItemsAdvanced, use TicketFinder instead.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="MPN">
+ <xs:annotation>
+ <xs:documentation>
+ Reserved for future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/ExternalProductIDType.xsd #####
+
+-->
+ <xs:complexType name="ExternalProductIDType">
+ <xs:annotation>
+ <xs:documentation>
+ Contains an ISBN value, EAN value, UPC value, ticket keywords, or eBay
+ catalog product ID, plus other meta-data. For event tickets, this type
+ can contain a set of keywords that uniquely identify the product. Only
+ applicable to certain categories that support Pre-filled Item
+ Information.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Value" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ An industry-standard value that uniquely identifies the product. The
+ valid values are dictated by the Type property.
+ Required if Type is specified.
+ Max length 13 for ISBN (as of February 2007), 13 for EAN,
+ 12 for UPC, and 4000 for ProductID. No max length for ticket keywords
+ (but passing too much data can result in "no match found"
+ errors).&lt;br&gt;
+ &lt;br&gt;
+ &lt;b&gt;For AddItem and related calls:&lt;/b&gt;
+ If the primary and secondary categories are both catalog-enabled,
+ the value must apply to the primary category.
+ Event tickets listings support a set of keywords
+ that uniquely identify the listing. The ticket keywords specify the
+ event name (the title shown on the ticket), venue name, and event
+ date and time. See the eBay Web Services guide for more information
+ and validation rules. For convenience, you can pass an eBay product ID
+ as input (not limited to media categories).&lt;br&gt;
+ &lt;br&gt;
+ Required for Half.com listing use cases, and this can only be an
+ ISBN, UPC, or EAN value.&lt;br&gt;
+ &lt;br&gt;
+ &lt;b&gt;For FindItemsAdvanced and FindProducts input only:&lt;/b&gt;
+ Only ISBN, EAN, and UPC values are currently supported as
+ input.&lt;br&gt;
+ &lt;br&gt;
+ &lt;b&gt;For FindItemsAdvancedExpress input only:&lt;/b&gt;
+ To pass an external product ID in the request, use
+ ExternalProductIDValue and ExternalProductIDType instead.&lt;br&gt;
+ &lt;br&gt;
+ &lt;b&gt;For FindItemsAdvancedExpress, FindProducts, and GetSellerPayments
+ output only:&lt;/b&gt; Also see AlternateValue, which is
+ returned if the catalog defines multiple ISBN values (e.g., one for
+ ISBN-13 and one for ISBN-10). Please note that some catalogs return ISBN
+ values that are not 10 or 13 characters, and some values contain
+ non-alphanumeric symbols (e.g., $).
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>See description</MaxLength>
+ <CallInfo>
+ <CallName>AddItem</CallName>
+ <CallName>GetItemRecommendations</CallName>
+ <CallName>VerifyAddItem</CallName>
+ <Context>Item.ExternalProductID</Context>
+ <RequiredInput>Conditionally</RequiredInput>
+ <!-- N/A to ReviseItem and RelistItem -->
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <RequiredInput>Conditionally</RequiredInput>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>Conditionally</RequiredInput>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSellerPayments</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvancedExpress</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ReturnSearchResultOnDuplicates" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Applicable for listing use cases only (not buy-side searching).
+ Indicates what eBay should do if more than one product matches
+ the value passed in Value. Only takes effect when more than one
+ match is found. If true, the response should include an error
+ and all matching product IDs. If false, the response should include
+ an error but should not return the matching product IDs.
+ This field is also applicable when listing Half.com items.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>AddItem</CallName>
+ <CallName>GetItemRecommendations</CallName>
+ <CallName>VerifyAddItem</CallName>
+ <RequiredInput>No</RequiredInput>
+ <Context>Item.ExternalProductID</Context>
+ <!-- N/A to ReviseItem and RelistItem -->
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Type" type="ns:ExternalProductCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The kind of identifier being used. The choices are listed
+ For requests, required if Value is specified.
+ For Half.com listing use cases, only ISBN, UPC, and EAN are supported.&lt;br&gt;
+ &lt;br&gt;
+ FindItemsAdvancedExpress returns this value in ProductArray.Product.ExternalProductID.Type.
+ To pass an external product ID in the request, use ExternalProductIDType and ExternalProductIDValue instead. &lt;br&gt;
+ &lt;br&gt;
+ FindProducts supports ISBN, UPC, and EAN.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>AddItem</CallName>
+ <CallName>GetItemRecommendations</CallName>
+ <CallName>VerifyAddItem</CallName>
+ <Context>Item.ExternalProductID</Context>
+ <AllValuesExcept>MPN</AllValuesExcept>
+ <RequiredInput>Conditionally</RequiredInput>
+ <!-- N/A to ReviseItem and RelistItem -->
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <OnlyTheseValues>ISBN, UPC, EAN</OnlyTheseValues>
+ <RequiredInput>Conditionally</RequiredInput>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <OnlyTheseValues>ISBN, UPC, EAN</OnlyTheseValues>
+ <RequiredInput>Conditionally</RequiredInput>
+ <!-- N/A to ReviseItem and RelistItem -->
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSellerPayments</CallName>
+ <!-- Half.com only supports BMMG categories.
+ So, only ISBN, UPC, and EAN can
+ be supported in Half.com use cases. -->
+ <OnlyTheseValues>ISBN, UPC, EAN</OnlyTheseValues>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvancedExpress</CallName>
+ <OnlyTheseValues>ISBN, UPC</OnlyTheseValues>
+ <Returned>Conditionally</Returned>
+ <SeeLink>
+ <Title>(FindItemsAdvancedExpress) ExternalProductIDType</Title>
+ <URL>io_FindItemsAdvancedExpress.html#Request.ExternalProductIDType</URL>
+ </SeeLink>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="AlternateValue" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ An industry-standard value that provides an alternate identification for
+ the product, if any. Currently, this only returns an alternate ISBN
+ value. If the catalog defines both an ISBN-13 and ISBN-10,
+ then the ISBN-13 is returned in Value and the ISBN-10 is returned in
+ AlternateValue. (That is, the ISBN-13 is considered to be the preferred
+ identifier.) If the catalog only defines one ISBN, it is returned in
+ Value (and AlternateValue is not returned). Please note that some
+ catalogs return ISBN values that are not 10 or 13 characters,
+ and some values contain non-alphanumeric symbols (e.g., $).
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>4000</MaxLength>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <CallName>FindItemsAdvancedExpress</CallName>
+ <CallName>GetSellerPayments</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FeedbackDetailType.xsd #####
+
+-->
+ <xs:complexType name="FeedbackDetailType">
+ <xs:annotation>
+ <xs:documentation>
+ Detailed feedback information for a user. Conveys the score for the
+ feedback, the textual comment, and other information.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="CommentingUser" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ eBay user ID for the user who left the feedback.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CommentingUserScore" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Feedback score of the user in CommentingUser.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CommentText" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Text message left by the user in CommentingUser. Used to provide a more
+ in-depth description of the user's opinion of the transaction.
+ Returned as text in the language that the
+ comment was originally left in.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CommentTime" type="xs:dateTime" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Date and time (in GMT) that the feedback was submitted to eBay.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CommentType" type="ns:CommentTypeCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Type of feedback. Can be Positive, Neutral, Negative, or Withdrawn (see the
+ CommentTypeCodeType code list). Positive feedbacks add to the user's total
+ feedback score, negative feedbacks lower the score, and neutral feedbacks do
+ not affect the score (but do affect the overall picture of the user's online
+ reputation).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FeedbackResponse" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Textual comment that the user targeted by feedback may leave
+ in response or rebuttal to the feedback.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FollowUp" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Explanation a user can give to a response.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The ID that uniquely identifies the item listing.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Role" type="ns:TradingRoleCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates whether the user who was the feedback recipient was a Buyer or the
+ Seller for that transaction.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemTitle" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Name of the listing for which feedback was provided.
+ Returned as CDATA.
+ Not returned if a listing ended more than 90 days ago.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemPrice" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The final price for the item, associated with
+ the currency identified by the currencyId attribute of the AmountType.
+ Not returned if a listing ended more than 90 days ago.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FeedbackID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Unique identifier for the feedback entry.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TransactionID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Unique identifier for the transaction about which
+ this feedback entry was left.
+ This field is not returned in the case of TransactionIDs from Chinese auction listings,
+ because a value of zero is used for TransactionIDs in such cases.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CommentReplaced" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates whether eBay replaced the comment with a message
+ that the comment was removed.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ResponseReplaced" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates whether eBay replaced the response with a message
+ that the response was removed.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FollowUpReplaced" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates whether eBay replaced the follow-up with a message
+ that the follow-up was removed.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Countable" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies if a user's feedback score is or is not countable. This field is
+ returned only when a user's feedback score is not countable (value is false).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FeedbackHistoryType.xsd #####
+
+-->
+ <xs:complexType name="FeedbackHistoryType">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies all feedback summary information (except Score). Contains
+ objects that each convey feedback counts for
+ positive, negative, neutral, and total feedback counts - for various
+ time periods each. Also conveys counts of bid retractions for the
+ predefined time periods.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="BidRetractionFeedbackPeriods" type="ns:FeedbackPeriodType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Bid retractions count, for multiple predefined time periods preceding
+ the call.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NegativeFeedbackPeriods" type="ns:FeedbackPeriodType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Negative feedback entries count, for multiple predefined time periods preceding
+ the call.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NeutralFeedbackPeriods" type="ns:FeedbackPeriodType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Neutral feedback entries count, for multiple predefined time periods preceding
+ the call.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PositiveFeedbackPeriods" type="ns:FeedbackPeriodType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Positive feedback entries count, for multiple predefined time periods
+ preceding the call.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TotalFeedbackPeriods" type="ns:FeedbackPeriodType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Total feedback score, for multiple predefined time periods preceding the
+ call.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="UniqueNegativeFeedbackCount" type="xs:long" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Number of unique negative comments.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="UniquePositiveFeedbackCount" type="xs:long" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Number of unique positive comments.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="AverageRatingDetails" type="ns:AverageRatingDetailsType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Container for information about detailed seller ratings (DSRs)
+ that buyers have left for a seller.
+ Sellers have access to the number of ratings they've received, as well as
+ to the averages of DSRs they've received in each
+ DSR area (i.e., to the average of ratings in the item-description area, etc.).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NeutralCommentCountFromSuspendedUsers" type="xs:long" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Number of neutral comments received from suspended users.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FeedbackPeriodType.xsd #####
+
+-->
+ <xs:complexType name="FeedbackPeriodType">
+ <xs:annotation>
+ <xs:documentation>
+ Contains the data for one type of feedback for one predefined time
+ period. Parent FeedbackPeriodArrayType object indicates the type of
+ feedback counted: positive, neutral, negative, or total.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="PeriodInDays" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates the time period for the feedback count. Returns a value indicating
+ the number of days prior to the call for which feedbacks of the particular
+ type are counted.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Count" type="xs:long" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Count of the feedbacks received by the user for the time period prior to the
+ call indicated in PeriodInDays.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FeedbackRatingDetailCodeList.xsd #####
+
+-->
+ <xs:simpleType name="FeedbackRatingDetailCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ Applicable to sites that support the Detailed Seller Ratings feature.
+ The FeedbackRatingDetailCodeType is the list of areas for detailed seller ratings. When buyers leave an overall Feedback rating (positive, neutral, or negative) for a seller, they also can leave ratings in four areas: item as described, communication, shipping time, and charges for shipping and handling. Users retrieve detailed ratings as averages of the ratings left by buyers.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="ItemAsDescribed">
+ <xs:annotation>
+ <xs:documentation>
+ Detailed seller rating in the area of "item as described."
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Communication">
+ <xs:annotation>
+ <xs:documentation>
+ Detailed seller rating in the area of "communication."
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ShippingTime">
+ <xs:annotation>
+ <xs:documentation>
+ Detailed seller rating in the area of "shipping time." Inapplicable to
+ motor vehicle items.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ShippingAndHandlingCharges">
+ <xs:annotation>
+ <xs:documentation>
+ Detailed seller rating in the area of "charges for shipping and handling."
+ Inapplicable to motor vehicle items.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/FeedbackRatingStarCodeList.xsd #####
+
+-->
+ <xs:simpleType name="FeedbackRatingStarCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ FeedbackRatingStarCodeType - Type declaration to be used by other
+ schema. The color of a feedback score star visually denotes the
+ range in which the member's summary feedback score falls. The score
+ is the net positive feedback minus the net negative feedback left
+ for the member.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="None">
+ <xs:annotation>
+ <xs:documentation>
+ No graphic displayed, feedback score 0-9.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Yellow">
+ <xs:annotation>
+ <xs:documentation>
+ Yellow Star, feedback score 10-49.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Blue">
+ <xs:annotation>
+ <xs:documentation>
+ Blue Star, feedback score 50-99.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Turquoise">
+ <xs:annotation>
+ <xs:documentation>
+ Turquoise Star, feedback score 100-499.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Purple">
+ <xs:annotation>
+ <xs:documentation>
+ Purple Star, feedback score 500-999.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Red">
+ <xs:annotation>
+ <xs:documentation>
+ Red Star, feedback score 1,000-4,999
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Green">
+ <xs:annotation>
+ <xs:documentation>
+ Green Star, feedback score 5,000-9,999.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="YellowShooting">
+ <xs:annotation>
+ <xs:documentation>
+ Yellow Shooting Star, feedback score 10,000-24,999.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="TurquoiseShooting">
+ <xs:annotation>
+ <xs:documentation>
+ Turquoise Shooting Star, feedback score 25,000-49,999.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PurpleShooting">
+ <xs:annotation>
+ <xs:documentation>
+ Purple Shooting Star, feedback score 50,000-99,999.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="RedShooting">
+ <xs:annotation>
+ <xs:documentation>
+ Red Shooting Star, feedback score 100,000 and above.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ Placeholder value. See
+ &lt;a href="types/simpleTypes.html#token"&gt;token&lt;/a&gt;.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/FindHalfProductsRequest.xsd #####
+
+-->
+ <xs:element name="FindHalfProductsRequest" type="ns:FindHalfProductsRequestType"/>
+<xs:complexType name="FindHalfProductsRequestType">
+ <xs:annotation>
+ <xs:documentation>
+ Searches Half.com for stock product information (stock description
+ and Item Specifics), such as information about a particular
+ kind of DVD or book. Also, retrieves up to 30 Half.com listings associated
+ with a product.
+ </xs:documentation>
+ <xs:appinfo>
+ <Summary>
+ Searches Half.com for stock product information (stock description
+ and Item Specifics), such as information about a particular
+ kind of DVD or book. Also, retrieves up to 30 Half.com listings associated
+ with a product.
+ </Summary>
+ <TempInfo>IncludeSelector</TempInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractRequestType">
+ <xs:sequence>
+ <xs:element name="IncludeSelector" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Defines standard subsets of fields to return within the
+ response.&lt;br&gt;
+ &lt;br&gt;
+ If you don't specify this field, the call returns a default
+ set of fields, focusing on product details only
+ (see the "Detail Controls" link below). If you specify this
+ field, the additional fields you retrieve can affect the call's
+ response time (performance).&lt;br&gt;
+ &lt;br&gt;
+ &lt;b&gt;Applicable values&lt;/b&gt;:
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; Items&lt;/p&gt;
+ &lt;p class="edef"&gt;Include a brief set of item fields
+ in the response.
+ Only applicable when you are searching by ProductID.
+ Not applicable with QueryKeywords.&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; DomainHistogram&lt;/p&gt;
+ &lt;p class="edef"&gt;Include the DomainHistogram in
+ the response. The histogram lists the number of matching
+ products found and the domains in which they were found.
+ (A domain is like a high-level category.)
+ When many matching products are found, you may see
+ significantly slower response times when you include
+ the histogram.&lt;/p&gt;
+ &lt;br&gt;
+ &lt;br&gt;
+ Use a comma to specify multiple values. (In this case,
+ the results are cumulative.) See "FindHalfProducts Samples"
+ for an example of how to use this field.&lt;br&gt;
+ &lt;br&gt;
+ See "Detail Controls" for a complete list of
+ fields that can be returned for each selector.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength/>
+ <PresentDetails>Yes</PresentDetails>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="AvailableItemsOnly" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ If true, only retrieve data for products that have been used to
+ pre-fill active listings on the Half.com site.
+ If false, retrieve all products that match the query.
+ This is useful when you use QueryKeywords and you only want to
+ find products that have associated items (that is, where ItemArray
+ would not be empty).&lt;br&gt;
+ &lt;br&gt;
+ This does not retrieve ItemArray; this only controls which
+ products are returned (or counted). To retrieve ItemArray,
+ pass Items in IncludeSelector.
+ </xs:documentation>
+ <xs:appinfo>
+ <Default>false</Default>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DomainName" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ A domain to search in. This is like searching a section of
+ a catalog. If not specified, the product search is conducted
+ across all domains. To determine valid domain names,
+ first use this call with QueryKeywords. Domain names are returned
+ for each product (and summarized in the domain histogram, if you
+ specify DomainHistogram in IncludeSelector).&lt;br&gt;
+ &lt;br&gt;
+ A domain is a named grouping of categories whose items share
+ common product characteristics. For example, all bound books
+ have a binding or format (e.g., Hardcover), but audiobooks don't.
+ So audiobooks would have their own domain.
+ To limit your search to audiobooks, you would specify Audiobooks
+ as the domain.&lt;br&gt;
+ &lt;br&gt;
+ Only useful when QueryKeywords is specified. If you use this with
+ ProductID, AND logic is applied. In this case, if you specify an
+ ID that doesn't match the domain (as Half.com has defined it),
+ no matching product will be found. Therefore, we recommend that you only use DomainName with QueryKeywords.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ProductID" type="ns:ProductIDType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Use this to retrieve product details for one specific product.
+ Specify the ID as a string, and use the type attribute to
+ indicate the nature of the ID you are specifying.
+ &lt;br&gt;
+ &lt;br&gt;
+ You can request up to 10 IDs of the same type by separating them with commas, such as
+ 014633155310,014633145496.
+ &lt;br&gt;
+ &lt;br&gt;
+ The request requires either QueryKeywords or
+ ProductID, but these fields cannot be used together.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>4000</MaxLength>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <RequiredInput>Conditionally</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="QueryKeywords" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ One or more keywords to search for. When you use a keyword search,
+ Half.com searches the product catalogs for matching words in the
+ product title, description, and/or Item Specifics, and it returns
+ a list of matching products, with no items. To retrieve
+ items, use ProductID instead. (If you don't already have a
+ product ID, you can get product IDs from the
+ response after conducting a keyword search.)&lt;br&gt;
+ &lt;br&gt;
+ If specified, you must pass in at least 3 alphanumeric characters.&lt;br&gt;
+ &lt;br&gt;
+ The words "and" and "or" are treated like any other word.
+ Only use "and", "or", or "the" if you are searching for products
+ containing these words.
+ To use AND or OR logic, use Half.com's standard search string
+ modifiers. Wildcards (+, -, or *) are also supported.
+ Be careful when using spaces before or after modifiers and
+ wildcards.&lt;br&gt;
+ &lt;br&gt;
+ Some keyword queries can result in response times of 30 seconds or
+ longer. If more than 2000 matches are found, the call fails with
+ an error. If this kind of error occurs, refine the search by
+ passing in more keywords and/or by using DomainName to restrict
+ the search to certain domains (such as DVDs).
+ If you are searching for a particular book, DVD, CD, or video game
+ and you already know its ISBN or EAN (for a book) or UPC,
+ consider using ProductID instead to retrieve more
+ precise results. &lt;br&gt;
+ &lt;br&gt;
+ The request requires either QueryKeywords or
+ ProductID, but these fields cannot be used together.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>350</MaxLength>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <RequiredInput>Conditionally</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SellerID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The ID of a specific seller.
+ Specify this value in combination with ProductID
+ if you want search results to be filtered so that the items returned
+ are only items in a specific product, sold by a specific seller.
+ To specify SellerID, use SellerID and ProductID together.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ProductSort" type="ns:ProductSortCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Sorts the list of products returned. This is mostly only useful
+ with QueryKeywords. (When you use ExternalProductID or
+ ProductReferenceID, Half.com usually only returns one product.)
+ </xs:documentation>
+ <xs:appinfo>
+ <Default>Popularity</Default>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SortOrder" type="ns:SortOrderCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Sorts the list of products returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <Default>Descending</Default>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MaxEntries" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the maximum number of products to return per page
+ in a single call. This is mostly only useful
+ with QueryKeywords. (When you use ProductID, Half.com usually only
+ returns one product, and up to 30 items for that product.)
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>1</Min>
+ <Max>20</Max>
+ <Default>1</Default>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PageNumber" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies which page of data to return in the current call.
+ Specify a positive value equal to or lower than the number of
+ pages available (which you determine by examining the results of
+ your initial request).
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>1</Min>
+ <Max>2000</Max>
+ <Default>1</Default>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FindHalfProductsResponse.xsd #####
+
+-->
+ <xs:element name="FindHalfProductsResponse" type="ns:FindHalfProductsResponseType"/>
+<xs:complexType name="FindHalfProductsResponseType">
+ <xs:annotation>
+ <xs:documentation>
+ Returns stock product information in Half.com catalogs, such as
+ information about a particular DVD or book. Optionally,
+ also returns items that match the product.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractResponseType">
+ <xs:sequence>
+ <xs:element name="DomainHistogram" type="ns:DomainHistogramType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A histogram that lists the number of matching products found
+ and the domains in which they were found.
+ A &lt;i&gt;domain&lt;/i&gt; is essentially
+ a set of categories that share certain common features
+ (as determined by Half.com). Each domain has its own name and ID.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: DomainHistogram</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PageNumber" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The number of the page of data returned. If many products
+ are found and multiple pages of results are available, use
+ this in combination with ApproximatePages and HasMore to decide
+ which page to retrieve next. As FindHalfProducts only returns
+ up to 2000 products, the maximum possible value is theoretically
+ 2000 (if you were to set EntriesPerPage to 1 in the request).
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>1</Min>
+ <Max>2000</Max>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: none, DomainHistogram, Items</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ApproximatePages" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The total number of pages that can be returned, given the same
+ query and filters in the request. As FindHalfProducts only returns
+ up to 2000 products, the maximum possible value is theoretically
+ 2000 (if you were to set MaxEntries to 1 in the request).
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>1</Min>
+ <Max>2000</Max>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: none, DomainHistogram, Items</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MoreResults" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ If true, more pages of results are available.
+ That is, PageNumber is less than ApproximatePages.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: none, DomainHistogram, Items</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TotalProducts" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The total number of matching products found.
+ (If more than 2000 products are found, the call fails
+ with an error.)
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>0</Min>
+ <Max>2000</Max>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: none, DomainHistogram, Items</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Products" type="ns:HalfProductsType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ An set of Half.com catalog products. This contains stock information about a
+ particular DVD, book, or other product.
+ When you use QueryKeywords in the request, FindHalfProducts returns a
+ maximum of 20 products per page.
+ When you use ProductID in the request, FindHalfProducts usually only
+ returns 1 product.
+ (If more than one product matches the same ProductID,
+ FindHalfProducts will return all of those products. As of the time
+ of this writing, we expect this to be a rare case.)
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxOccurs>20</MaxOccurs>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: none, DomainHistogram, Items</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FindItemsAdvancedRequest.xsd #####
+
+-->
+ <xs:element name="FindItemsAdvancedRequest" type="ns:FindItemsAdvancedRequestType"/>
+<xs:complexType name="FindItemsAdvancedRequestType">
+ <xs:annotation>
+ <xs:documentation>
+ Searches for items based on a variety of input fields.
+ Enables you to specify what item data is returned.
+ Returns detailed information about items.
+ </xs:documentation>
+ <xs:appinfo>
+ <SeeLink>
+ <Title>Searching for Items by Using a Query
+</Title>
+ <URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=SearchingItemsWithQuery</URL>
+ <For>related information (applies primarily to the eBay Trading API)</For>
+ </SeeLink>
+ <SeeLink>
+ <Title>Searching for Matching Categories
+</Title>
+ <URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=SearchingForMatchingCategories</URL>
+ <For>information about finding listings in categories (applies primarily to the eBay Trading API)</For>
+ </SeeLink>
+ <Summary>
+ Searches for items based on many possible input fields. Detailed information is returned about items.
+ </Summary>
+ <RelatedCalls>FindItems, GetSingleItem</RelatedCalls>
+ <TempInfo>IncludeSelector</TempInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractRequestType">
+ <xs:sequence>
+ <xs:element name="IncludeSelector" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Defines standard subsets of fields to return within the
+ response.&lt;br&gt;
+ &lt;br&gt;
+ If you don't specify this field, a default
+ set of fields is returned. Click "Detail Controls" below
+ and see "none" for the default fields.
+ If you specify this field, then the set of fields returned
+ includes the default fields.
+ If you specify this field, the additional
+ fields returned can affect the call's response time
+ (performance), including in the case of feedback data.&lt;br&gt;
+ &lt;br&gt;
+ &lt;b&gt;Applicable values&lt;/b&gt;:
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; Details&lt;/p&gt;
+ &lt;p class="edef"&gt;Include most available fields in the
+ response (except fields that significantly affect the call's
+ performance).&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; SearchDetails&lt;/p&gt;
+ &lt;p class="edef"&gt;Include additional item information in the
+ response. (This can affect the call's performance.)&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; SellerInfo&lt;/p&gt;
+ &lt;p class="edef"&gt;Include information about the seller in the
+ response. &lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; ItemSpecifics&lt;/p&gt;
+ &lt;p class="edef"&gt;Include ItemSpecifics in the
+ response.&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; ExpansionItemCount&lt;/p&gt;
+ &lt;p class="edef"&gt;Include the counts of items that would be returned with expansions.&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; CategoryHistogram&lt;/p&gt;
+ &lt;p class="edef"&gt;Include a CategoryHistogram container with
+ information about categories that match your search (up to 2 levels).&lt;/p&gt;
+ &lt;br&gt;
+ Use a comma to specify multiple values. (In this case,
+ the results are cumulative.) See "FindItemAdvanced Samples"
+ for an example of how to use this field.&lt;br&gt;
+ &lt;br&gt;
+ See "Detail Controls" for a complete list of
+ fields that can be returned for each selector.
+ </xs:documentation>
+ <xs:appinfo>
+ <PresentDetails>Yes</PresentDetails>
+ <SeeLink>
+ <Title>Detail Controls</Title>
+ <URL>#detailControls</URL>
+ </SeeLink>
+ <SeeLink>
+ <Title>FindItemsAdvanced Samples</Title>
+ <URL>#samples</URL>
+ </SeeLink>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="BidCountMax" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Limits the results to items with a maximum number of bids.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="BidCountMin" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Limits the results to items with a minimum number of bids.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryHistogramMaxParents" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Maximum number of matching categories to return at the
+ highest level (root level) of the category hierarchy (level 1).
+ If you specify this field along with a category ID, then the response
+ will contain child categories of the category ID you specify
+ and subcategories for each child category.
+ </xs:documentation>
+ <xs:appinfo>
+ <Max>10</Max>
+ <Default>3</Default>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryHistogramMaxChildren" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Maximum number of matching subcategories to return at each
+ level of the category hierarchy below the root level.
+ If you specify this field along with a category ID, then the response
+ will contain child categories of the category ID you specify
+ and subcategories for each child category.
+ </xs:documentation>
+ <xs:appinfo>
+ <Max>10</Max>
+ <Default>3</Default>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="QueryKeywords" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A query that specifies a string for searching titles of items on eBay.
+ If you are using a URL, then to search for multiple words,
+ use "%20". For example, use Harry%20Potter to search for items
+ containing those words in any order.
+ You can incorporate wildcards into a multi-word search, as in the following: ap*%20ip*.
+ The words "and" and "or" are treated like any other word. Only use "and",
+ "or", or "the" if you are searching for listings containing these words.
+ FindItemsAdvanced requires that you specify
+ at least one of the following:
+ QueryKeywords, CategoryID, ProductID, or SellerID.
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>3</Min>
+ <MaxLength>350 (characters)</MaxLength>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>Conditionally</RequiredInput>
+ </CallInfo>
+ <SeeLink>
+ <Title>Searching by Keywords
+</Title>
+ <URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=SearchingByKeywords</URL>
+ <For>related information (applies primarily to the eBay Trading API)</For>
+ </SeeLink>
+ <SeeLink>
+ <Title>string</Title>
+ <URL>types/simpleTypes.html#string</URL>
+ </SeeLink>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specify CategoryID to restrict your query to a
+ specific category. CategoryID cannot be used with
+ the following input fields: EndTimeFrom, EndTimeTo,
+ PriceMin, or PriceMax.
+ &lt;br&gt;
+ &lt;br&gt;
+ If the specified category ID doesn't match an existing category
+ for the site, an invalid-category error message is returned.
+ To determine valid categories:&lt;br&gt;
+ Use the CategoryHistogram value in the IncludeSelector field
+ to retrieve matching categories. Then make another
+ FindItemsAdvanced call with the ID of a matching category.
+ &lt;br&gt;
+ &lt;br&gt;
+ FindItemsAdvanced requires that you specify
+ at least one of the following:
+ QueryKeywords, CategoryID, ProductID, or SellerID.
+ CategoryID can be used in combination with QueryKeywords.
+ If you pass CategoryID without QueryKeywords, CategoryID must be
+ a leaf category ID. That is, it cannot be a
+ root-level ID.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>10</MaxLength>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>Conditionally</RequiredInput>
+ </CallInfo>
+ <SeeLink>
+ <Title>Searching by Category ID
+</Title>
+ <URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=SearchingByCategoryID</URL>
+ <For>related information (applies primarily to the eBay Trading API)</For>
+ </SeeLink>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemSort" type="ns:SimpleItemSortCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Sorts search results based on the value you specify.
+ See the SortOrder field for values for specifying
+ that results are returned in ascending or
+ descending order. (By default, results are returned in descending order.)
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <Default>EndTime</Default>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SortOrder" type="ns:SortOrderCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Sorts search results in ascending or descending order, in conjunction with the value you specify in ItemSort. The default is descending order. For example, if you specify an ItemSort value of BestMatch,
+ the most relevant items will be returned first, because the default SortOrder value is Descending.
+ If you specify an ItemSort value of EndTime (to sort items by end time), and
+ a SortOrder value of Ascending, then items ending in less time (from the time of the call) are returned before items ending in more time.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <Default>Descending</Default>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="GroupMaxEntries" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ GroupMaxEntries is used when you specify that BestMatch search results are
+ grouped by category (by using BestMatchCategoryGroup in the ItemSort
+ field.) In GroupMaxEntries, you specify the maximum number of entries per
+ group that you want in the search results. There is not a direct
+ correlation between the number of items returned in a regular sort (or in
+ a BestMatch sort) and the number of items that are returned when you
+ specify BestMatchCategoryGroup in the ItemSort field. When you specify
+ BestMatchCategoryGroup in the ItemSort field, not more than 2 pages of
+ results are returned. When you specify GroupMaxEntries, specify GroupsMax.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="GroupsMax" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ GroupsMax is used when you specify that BestMatch search results are
+ grouped by category (by using BestMatchCategoryGroup in the ItemSort
+ field.) In GroupsMax, you specify the maximum number of groups that you
+ want in the search results. There is not a direct correlation between the
+ number of items returned in a regular sort (or in a BestMatch sort) and
+ the number of items that are returned when you specify
+ BestMatchCategoryGroup in the ItemSort field. When you specify
+ BestMatchCategoryGroup in the ItemSort field, not more than 2 pages of
+ results are returned. When you specify GroupsMax, specify GroupMaxEntries.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="EndTimeFrom" type="xs:dateTime" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Limits the results to items ending within a time range. EndTimeFrom
+ specifies the beginning of the time range. Specify a time in the future.
+ If you specify a time in the past, the current time is used. If specified,
+ EndTimeTo must also be specified (with a value equal to or later than
+ EndTimeFrom). Specify the time in GMT. Cannot be used with the ModTimeFrom
+ filter.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>Conditionally</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="EndTimeTo" type="xs:dateTime" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Limits the results to items ending within a time range. EndTimeTo specifies
+ the end of the time range. If specified, EndTimeFrom must also be specified
+ (with a value equal to or earlier than EndTimeTo). Specify the time in GMT.
+ Cannot be used with the ModTimeFrom filter.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>Conditionally</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ModTimeFrom" type="xs:dateTime" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Limits the results to active items whose status has changed
+ since the specified time. Specify a time in the past.
+ Time must be in GMT. Cannot be used with the EndTime filters.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SellerID" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ The ID of a specific seller.
+ Specify this value if you want search results to be filtered so that
+ the items returned are only items sold by a specific seller or by specific sellers.
+ SellerID is an unbounded field.
+ If you are using a URL, and you want to specify multiple values,
+ use a comma.
+ For example, to specify FavSellerBlue and FavSellerGreen,
+ specify SellerID=FavSellerBlue,FavSellerGreen.
+ FindItemsAdvanced requires that you specify
+ at least one of the following: QueryKeywords, CategoryID, ProductID, or SellerID.
+ If you want Store Inventory format (StoresFixedPrice) items to be returned, you must also specify the AllItemTypes value in the ItemType field.
+ The value you specify in SellerID is ignored if it is invalid.
+ You can specify a maximum of 100 sellers.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SellerIDExclude" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Specify this value if you want search results to be filtered so that
+ the items returned do not include items sold by a specific seller or by specific sellers.
+ The SellerIDExclude input field need not be used if you specified the SellerID input field.
+ SellerIDExclude is an unbounded field.
+ If you are using a URL, and you want to specify multiple values,
+ use a comma.
+ For example, if you want to specify FavSellerBlue and FavSellerGreen,
+ specify SellerIDExclude=FavSellerBlue,FavSellerGreen.
+ You can specify a maximum of 100 sellers.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemType" type="ns:ItemTypeCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Filters items based on criteria related to the listing type of items.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MaxDistance" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The maximum distance from the item-location value you specify in PostalCode.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PostalCode" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The postal code where an item is located.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ProductID" type="ns:ProductIDType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ You can use this input field to search by ISBN, UPC,
+ EAN, or eBay Product Reference ID, as in the following examples.
+ To search using an ISBN, specify
+ ProductID.Type=ISBN and set
+ ProductID.Value to an ISBN value.
+ To search using an eBay Product Reference ID, specify
+ ProductID.Type=Reference and set
+ ProductID.Value to an eBay Product Reference ID value.
+ If you do not know the eBay Product Reference ID
+ of a product, use FindProducts
+ to retrieve the desired eBay Product Reference ID.
+ FindItemsAdvanced requires that you specify
+ at least one of the following:
+ QueryKeywords, CategoryID, ProductID, or SellerID.
+ If you use the ProductID field, do not use
+ QueryKeywords, CategoryID, or SellerID.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MaxEntries" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the maximum number of entries to return in a single call. If
+ the number of available items is less than the value you specify, the
+ lower number is returned. If you want the response to contain only the
+ total number of items matching the query, specify a MaxEntries value of
+ 0.
+ </xs:documentation>
+ <xs:appinfo>
+ <Default>20</Default>
+ <Max>100</Max>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PageNumber" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the number of the page of data to return in the current call.
+ Specify a positive value equal to or lower than the number of pages available
+ (which you determine by examining the results of your initial request).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <Default>1</Default>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PriceMax" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the maximum current price an item can have to be included in
+ the response.
+ Specified as in the following URL snippet: PriceMax.Value=500.
+ Optionally, you can also specify a currency ID, e.g., as part of a URL, PriceMax.currencyID=EUR.
+ Use PriceMax to specify a maximum price or use
+ PriceMax with PriceMin to specify a price range.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PriceMin" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the minimum current price an item listing can have to be included in
+ the searches result set. Use alone to specify a minimum price or with MaxPrice
+ to define a range the items' prices must be.
+ Specified as in the following URL snippet: PriceMin.Value=400.
+ Optionally, you can also specify a currency ID, e.g., as part of a URL, PriceMin.currencyID=EUR.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Condition" type="ns:ItemConditionCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Limits the results to new or used items, plus items that have no
+ condition specified.&lt;br&gt;
+ &lt;br&gt;
+ Matches the new or used condition that the seller specified
+ in the Item Specifics section of the listing.
+ (That is, this won't specifically match on items where the seller
+ only put the word "New" in the listing's title.)&lt;br&gt;
+ &lt;br&gt;
+ Only applicable to the following sites:
+ United Kingdom (UK, site ID 3), Australia (AU, site ID 15),
+ Germany (DE, site ID 77), and India (IN, site ID 203).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CharityID" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Limits results to items that support the specified
+ nonprofit charity organization.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SearchFlag" type="ns:SearchFlagCodeType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Search for charity listings, items with free shipping, and other features.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PaymentMethod" type="ns:PaymentMethodSearchCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Limits results to items that accept a specific payment method or methods.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="StoreName" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The name of the eBay Store in which the item is listed (case sensitive).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="StoreSearch" type="ns:StoreSearchCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the type of store search used for filtering results.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SellerBusinessType" type="ns:SellerBusinessCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Limits the results to those of a particular seller business type such as
+ commercial or private.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Quantity" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Limits the results to listings that offer a certain number of items
+ matching the query. The Quantity field is used with QuantityOperator to
+ specify that you are seeking listings with quantities greater than, equal
+ to, or less than the value you specify in Quantity.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="QuantityOperator" type="ns:QuantityOperatorCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Limits the results to listings with quantities greater than, equal to, or
+ less than the value you specify in Quantity.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Currency" type="ns:CurrencyCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Limits the result set to just those items with a specified currency.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemsAvailableTo" type="ns:CountryCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Limits the result set to just those items available to the specified country.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemsLocatedIn" type="ns:CountryCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Limits the result set to just those items located in the specified country.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PreferredLocation" type="ns:PreferredLocationCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the criteria for filtering search results by site, where site is
+ determined by the site ID in the request.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FindItemsAdvancedResponse.xsd #####
+
+-->
+ <xs:element name="FindItemsAdvancedResponse" type="ns:FindItemsAdvancedResponseType"/>
+<xs:complexType name="FindItemsAdvancedResponseType">
+ <xs:annotation>
+ <xs:documentation>
+ Contains the item listings matching your search criteria.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractResponseType">
+ <xs:sequence>
+ <xs:element name="SearchResult" type="ns:SearchResultType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Contains the returned item listings, if any. The data for each listing is
+ returned in an Item container.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Details>IncludeSelector: none, Details, SearchDetails, ItemSpecifics, SellerInfo, ExpansionItemCount, CategoryHistogram</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PageNumber" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates the page of data returned by the current call. For instance,
+ for the first set of items can be returned, this field has a value of
+ 1.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Details>IncludeSelector: none, Details, SearchDetails, ItemSpecifics, SellerInfo, ExpansionItemCount, CategoryHistogram</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TotalPages" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates the total number of pages of data
+ that could be returned by repeated requests. Returned with a
+ value of 0 if no pages are available.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Details>IncludeSelector: none, Details, SearchDetails, ItemSpecifics, SellerInfo, ExpansionItemCount, CategoryHistogram</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TotalItems" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates the total number of items that
+ could be returned by repeated requests. Returned with a
+ value of 0 if no items match your search request.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Details>IncludeSelector: none, Details, SearchDetails, ItemSpecifics, SellerInfo, ExpansionItemCount, CategoryHistogram</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryHistogram" type="ns:CategoryArrayType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Statistical (histogram) information about categories that contain items that match
+ the query, if any. For categories
+ associated with specific items, see items returned in each search
+ result. Shows the distribution of items across each category.
+ Not returned if there is no match.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Details>IncludeSelector: CategoryHistogram</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TotalStoresExpansionItems" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Total item count for a store expansion of the search.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Details>IncludeSelector: ExpansionItemCount</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TotalInternationalExpansionItems" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Total item count for an international expansion of the search.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Details>IncludeSelector: ExpansionItemCount</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemSearchURL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A URL for search results that corresponds to your search request.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Details>IncludeSelector: none, Details, SearchDetails, ItemSpecifics, SellerInfo, ExpansionItemCount, CategoryHistogram</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FindItemsRequest.xsd #####
+
+-->
+ <xs:element name="FindItemsRequest" type="ns:FindItemsRequestType"/>
+<xs:complexType name="FindItemsRequestType">
+ <xs:annotation>
+ <xs:documentation>
+ Searches for items based a query or seller ID.
+ If you use keywords, this call returns items that contain the keywords in the title.
+ A maximum of 50 items is returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <Summary>
+ Searches for items based a query or seller ID.
+ If you use keywords, this call returns items that contain the keywords in the title.
+ A maximum of 50 items is returned.
+ </Summary>
+ <RelatedCalls>FindItemsAdvanced, GetSingleItem, GetItemStatus, GetShippingCosts</RelatedCalls>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractRequestType">
+ <xs:sequence>
+ <xs:element name="QueryKeywords" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A query that specifies a string for searching titles of items on eBay.
+ If you are using a URL, then to search for multiple words,
+ use "%20". For example, use Harry%20Potter to search for items
+ containing those words in any order.
+ You can incorporate wildcards into a multi-word search, as in the following: ap*%20ip*.
+ The words "and" and "or" are treated like any other word. Only use "and",
+ "or", or "the" if you are searching for listings containing these words.
+ FindItems requires that you specify either QueryKeywords, SellerID, or both.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>350 (characters)</MaxLength>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <RequiredInput>Conditionally</RequiredInput>
+ </CallInfo>
+ <SeeLink>
+ <Title>string</Title>
+ <URL>types/simpleTypes.html#string</URL>
+ </SeeLink>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemSort" type="ns:SimpleItemSortCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Sorts search results based on the value you specify.
+ See the SortOrder field for values for specifying
+ that results are returned in ascending or
+ descending order. (By default, results are returned in descending order.)
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <Default>EndTime</Default>
+ <CallName>FindItems</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SortOrder" type="ns:SortOrderCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Sorts search results in ascending or descending order, in conjunction with the value you specify in ItemSort. The default is descending order. For example, if you specify an ItemSort value of BestMatch,
+ the most relevant items will be returned first, because the default SortOrder value is Descending.
+ If you specify an ItemSort value of EndTime (to sort items by end time), and
+ a SortOrder value of Ascending, then items ending in less time (from the time of the call) are returned before items ending in more time.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <Default>Descending</Default>
+ <CallName>FindItems</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MaxEntries" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the maximum number of entries to return in a single call. If the number of entries that can be returned is less than the value you specify, the lower number is returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <Max>50</Max>
+ <CallInfo>
+ <Default>3</Default>
+ <CallName>FindItems</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PostalCode" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the postal code where the buyer is located.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SellerID" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ The ID of a specific seller.
+ Specify this value if you want search results to be filtered so that
+ the items returned are only items sold by a specific seller or by specific sellers.
+ SellerID is an unbounded field.
+ If you are using a URL, and you want to specify multiple values,
+ use a comma.
+ For example, to specify FavSellerBlue and FavSellerGreen,
+ specify SellerID=FavSellerBlue,FavSellerGreen.
+ The value you specify in SellerID is ignored if it is invalid.
+ You can specify a maximum of 100 sellers.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <RequiredInput>Conditionally</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SellerIDExclude" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Specify this value if you want search results to be filtered so that
+ the items returned do not include items sold by a specific seller or by specific sellers.
+ The SellerIDExclude input field need not be used if you specified the SellerID input field.
+ SellerIDExclude is an unbounded field.
+ If you are using a URL, and you want to specify multiple values,
+ use a comma.
+ For example, if you want to specify FavSellerBlue and FavSellerGreen,
+ specify SellerIDExclude=FavSellerBlue,FavSellerGreen.
+ You can specify a maximum of 100 sellers.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FindItemsResponse.xsd #####
+
+-->
+ <xs:element name="FindItemsResponse" type="ns:FindItemsResponseType"/>
+<xs:complexType name="FindItemsResponseType">
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractResponseType">
+ <xs:sequence>
+ <xs:element name="Item" type="ns:SimpleItemType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Contains summary data for an item listing.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TotalItems" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates the total number of items on eBay that match the query.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemSearchURL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A URL equivalent to your FindItems search query.
+ FindItems returns a maximum of 50 items, so you can use the value in ItemSearchURL
+ to provide users with a link for viewing more items.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FindPopularItemsRequest.xsd #####
+
+-->
+ <xs:element name="FindPopularItemsRequest" type="ns:FindPopularItemsRequestType"/>
+<xs:complexType name="FindPopularItemsRequestType">
+ <xs:annotation>
+ <xs:documentation>
+ Find popular items
+ </xs:documentation>
+ <xs:appinfo>
+ <Summary>
+ Searches for popular items based on a category or keyword.
+ Returns WatchCount in addition to item information.
+ </Summary>
+ <RelatedCalls>
+ FindPopularSearches
+ </RelatedCalls>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractRequestType">
+ <xs:sequence>
+ <xs:element name="CategoryID" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Specify CategoryID to restrict your query to a specific category.
+ Up to 10 categories may be specified.
+ If you are using a URL, and you want to specify
+ more than one CategoryID, separate the values with a comma.
+ For example, to specify Fiction Books and
+ Children's Books, specify CategoryID=377,279.
+ &lt;br&gt;
+ &lt;br&gt;
+ If the specified category ID doesn't match an existing category
+ for the site, an invalid-category error message is returned.
+ To determine valid categories:&lt;br&gt;
+ Use the FindItemsAdvanced CategoryHistogram value in the IncludeSelector field
+ to retrieve matching categories. Then make another
+ FindItemsAdvanced call with the ID of a matching category.
+ &lt;br&gt;
+ &lt;br&gt;
+ CategoryID can be used in combination with QueryKeywords and CategoryIDExclude.
+ To retrieve the most popular items across all categorys, do not submit a CategoryID.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>10</MaxLength>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="QueryKeywords" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A query that specifies a string for searching titles of items on eBay.
+ If you are using a URL, then to search for multiple words,
+ use "%20". For example, use Harry%20Potter to search for items
+ containing those words in any order.
+ You can incorporate wildcards into a multi-word search, as in the following: ap*%20ip*.
+ The words "and" and "or" are treated like any other word. Only use "and",
+ "or", or "the" if you are searching for listings containing these words.
+ QueryKeywords can be used in combination with CategoryID and CategoryIDExclude.
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>3</Min>
+ <MaxLength>350 (characters)</MaxLength>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ <SeeLink>
+ <Title>Searching by Keywords
+</Title>
+ <URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=SearchingByKeywords</URL>
+ </SeeLink>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryIDExclude" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Specify this value if you want search results to be filtered so that the popular
+ items returned do not include items that belong to a specific category.
+ &lt;br&gt;
+ &lt;br&gt;
+ CategoryIDExclude is an unbounded field.
+ If you are using a URL, you can separate multiple values with a comma.
+ For example, if you want to specify
+ Records and SuperAudio CDs, specify
+ CategoryIDExclude=306,46354.
+ &lt;br&gt;
+ &lt;br&gt;
+ CategoryIDExclude can be used in combination with QueryKeywords and CategoryID.
+ The CategoryIDExclude input field need not be used if you specified the
+ CategoryID input field.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FindPopularItemsResponse.xsd #####
+
+-->
+ <xs:element name="FindPopularItemsResponse" type="ns:FindPopularItemsResponseType"/>
+<xs:complexType name="FindPopularItemsResponseType">
+ <xs:annotation>
+ <xs:documentation>
+ Popular items, detail level is default for simple item type. addition with WatchCount.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractResponseType">
+ <xs:sequence>
+ <xs:element name="ItemArray" type="ns:SimpleItemArrayType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A list of active items that were listed with the requested product.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FindPopularSearchesRequest.xsd #####
+
+-->
+ <xs:element name="FindPopularSearchesRequest" type="ns:FindPopularSearchesRequestType"/>
+<xs:complexType name="FindPopularSearchesRequestType">
+ <xs:annotation>
+ <xs:documentation>
+ Retrieves the words more frequently used by eBay users when searching for listings.
+ These keywords are generated weekly by eBay. Thus, calls retrieve static data.
+ FindPopularSearches is not available for the following sites: FR, HK, MY, PH, PL, SG, SE.
+ </xs:documentation>
+ <xs:appinfo>
+ <Summary>
+ Finds the words more frequently used by eBay users when searching for listings.
+ If you use keywords, this call returns available alternative keywords in addition to
+ popular related keywords.
+ </Summary>
+ <RelatedCalls>
+ FindPopularItems
+ </RelatedCalls>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractRequestType">
+ <xs:sequence>
+ <xs:element name="CategoryID" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Specify CategoryID to restrict your query to a specific category.
+ Up to 10 categories may be specified
+ If you are using a URL, and you want to specify
+ multiple values, use a comma.
+ For example, if you want to specify Fiction Books and
+ Children's Books, specify CategoryID=377,279.
+ &lt;br&gt;
+ &lt;br&gt;
+ If the specified category ID doesn't match an existing category
+ for the site, an invalid-category error message is returned.
+ To determine valid categories:&lt;br&gt;
+ Use the FindItemsAdvanced CategoryHistogram value in the IncludeSelector field
+ to retrieve matching categories. Then make another
+ FindItemsAdvanced call with the ID of a matching category.
+ &lt;br&gt;
+ &lt;br&gt;
+ CategoryID can be used in combination with QueryKeywords and IncludeChildCategories.
+ When IncludeChildCategories is true and used in conjunction with CategoryID,
+ one and only one CategoryID is allowed. Otherwise, up
+ to 10 CategoryIDs are allowed.
+ To retrieve the most popular keywords for a root category, set one of
+ the CategoryIDs to -1 or do not include CategoryID in the Request.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>10</MaxLength>
+ <CallInfo>
+ <CallName>FindPopularSearches</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="QueryKeywords" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ A query that specifies a string for searching titles of items on eBay.
+ If you are using a URL, then to search for multiple words,
+ use "%20". For example, use Harry%20Potter to search for items
+ containing those words in any order.
+ You can incorporate wildcards into a multi-word search, as in the following: ap*%20ip*.
+ The words "and" and "or" are treated like any other word. Only use "and",
+ "or", or "the" if you are searching for listings containing these words.
+ &lt;br&gt;
+ &lt;br&gt;
+ QueryKeywords can be used in combination with CategoryID and IncludeChildCategories.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindPopularSearches</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MaxKeywords" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The maximum number of keywords to be retrieved per category
+ for this call.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindPopularSearches</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ <Min>1</Min>
+ <Max>1000</Max>
+ <Default>20</Default>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MaxResultsPerPage" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the maximum number of PopularSearchResults per page in
+ the returned list. If not specified, the default returns 20 results per page.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindPopularSearches</CallName>
+ <Default>20</Default>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PageNumber" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the number of the page of data to return in the current call.
+ Specify a positive value equal to or lower than the number of pages
+ available (which you determine by examining the results of your initial request).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindPopularSearches</CallName>
+ <Default>1</Default>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="IncludeChildCategories" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ If true, only one CategoryID can be specified, and keywords
+ are returned for that category and its subcategories.
+ When IncludeChildCategories is true and used in conjunction with
+ CategoryID, one and only one CategoryID is allowed.
+ &lt;br&gt;
+ &lt;br&gt;
+ If false, keywords are returned only for the categories
+ identified by CategoryID. The default is false.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindPopularSearches</CallName>
+ <Default>false</Default>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FindPopularSearchesResponse.xsd #####
+
+-->
+ <xs:element name="FindPopularSearchesResponse" type="ns:FindPopularSearchesResponseType"/>
+<xs:complexType name="FindPopularSearchesResponseType">
+ <xs:annotation>
+ <xs:documentation>
+ Contains the keyword data for the requested categories. A category's data are contained in a CategoryArrayType object if there is no error (one or more CategoryType objects). Each CategoryType contains its ID, parent ID and keyword list.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractResponseType">
+ <xs:sequence>
+ <xs:element name="PopularSearchResult" type="ns:PopularSearchesType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Organization of keywords by category. For each
+ category, its ID and its parent's ID and keywords
+ are listed.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindPopularSearches</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PageNumber" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates the page of data returned by the current call. For instance,
+ for the first set of items can be returned, this field has a value of
+ one.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindPopularSearches</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TotalPages" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates the total number of pages of data
+ that could be returned by repeated requests. Returned with a
+ value of 0 if no pages are available.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindPopularSearches</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FindProductsRequest.xsd #####
+
+-->
+ <xs:element name="FindProductsRequest" type="ns:FindProductsRequestType"/>
+<xs:complexType name="FindProductsRequestType">
+ <xs:annotation>
+ <xs:documentation>
+
+ </xs:documentation>
+ <xs:appinfo>
+ <Summary>
+ Searches for stock product information (stock description
+ and Item Specifics), such as information about a particular
+ kind of DVD or camera. Also, retrieves up to 200 eBay listings associated
+ with a product.
+ </Summary>
+ <RelatedCalls>
+ FindItemsAdvanced
+ </RelatedCalls>
+ <TempInfo>IncludeSelector</TempInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractRequestType">
+ <xs:sequence>
+ <xs:element name="IncludeSelector" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Defines standard subsets of fields to return within the
+ response.&lt;br&gt;
+ &lt;br&gt;
+ If you don't specify this field, the call returns a default
+ set of fields, focusing on product details only
+ (see the "Detail Controls" link below). If you specify this
+ field, the additional fields you retrieve can affect the call's
+ response time (performance).&lt;br&gt;
+ &lt;br&gt;
+ &lt;b&gt;Applicable values&lt;/b&gt;:
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; Details&lt;/p&gt;
+ &lt;p class="edef"&gt;Include all available item fields
+ in the response. Only applicable when you are searching by
+ ProductID. Not applicable with QueryKeywords.&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; DomainHistogram&lt;/p&gt;
+ &lt;p class="edef"&gt;Include the DomainHistogram in
+ the response. The histogram lists the number of matching
+ products found and the domains in which they were found.
+ (A domain is like a high-level category.)
+ When many matching products are found, you may see
+ significantly slower response times when you include
+ the histogram.&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; Items&lt;/p&gt;
+ &lt;p class="edef"&gt;Include a brief set of item fields
+ in the response.
+ Only applicable when you are searching by ProductID.
+ Not applicable with QueryKeywords.&lt;/p&gt;
+ &lt;br&gt;
+ &lt;br&gt;
+ Use a comma to specify multiple values. (In this case,
+ the results are cumulative.) See "FindProducts Samples"
+ for an example of how to use this field.&lt;br&gt;
+ &lt;br&gt;
+ See "Detail Controls" for a complete list of
+ fields that can be returned for each selector.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength/>
+ <PresentDetails>Yes</PresentDetails>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="AvailableItemsOnly" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ If true, only retrieve data for products that have been used to
+ pre-fill active listings on the specified eBay site.
+ If false, retrieve all products that match the query.
+ This is useful when you use QueryKeywords and you only want to
+ find products that have associated items (that is, where ItemArray
+ would not beempty).&lt;br&gt;
+ &lt;br&gt;
+ This does not retrieve ItemArray; this only controls which
+ products are returned (or counted). To retrieve ItemArray,
+ pass Items in IncludeSelector.
+ </xs:documentation>
+ <xs:appinfo>
+ <Default>false</Default>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DomainName" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ A domain to search in. This is like searching a section of
+ a catalog. If not specified, the product search is conducted
+ across all domains. To determine valid domain names,
+ first use this call with QueryKeywords. Domain names are returned
+ for each product (and summarized in the domain histogram, if you
+ specify DomainHistogram in IncludeSelector).&lt;br&gt;
+ &lt;br&gt;
+ A domain is a named grouping of categories whose items share
+ common product characteristics. For example, all bound books
+ have a binding or format (e.g., Hardcover), but audiobooks don't.
+ So audiobooks would have their own domain.
+ To limit your search to audiobooks, you would specify Audiobooks
+ as the domain.&lt;br&gt;
+ &lt;br&gt;
+ Only useful when QueryKeywords is specified. If you use this with
+ ProductID, AND logic is applied. In this case, if you specify an
+ ID that doesn't match the domain (as eBay has defined it),
+ no matching product will be found. Therefore, we recommend that you only use DomainName with QueryKeywords.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ProductID" type="ns:ProductIDType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Use this to retrieve product details for one specific product.
+ Specify the ID as a string, and use the type attribute to
+ indicate the nature of the ID you are specifying.
+ &lt;br&gt;
+ &lt;br&gt;
+ The request requires either QueryKeywords or
+ ProductID, but these fields cannot be used together.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>4000</MaxLength>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <RequiredInput>Conditionally</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="QueryKeywords" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ One or more keywords to search for. When you use a keyword search,
+ eBay searches the product catalogs for matching words in the
+ product title, description, and/or Item Specifics, and it returns
+ a list of matching products, with no items. To retrieve
+ items, use ProductID instead. (If you don't already have a
+ product ID, you can get product IDs from the
+ response after conducting a keyword search.)&lt;br&gt;
+ &lt;br&gt;
+ If specified, you must pass in at least 3 alphanumeric characters.&lt;br&gt;
+ &lt;br&gt;
+ The words "and" and "or" are treated like any other word.
+ Only use "and", "or", or "the" if you are searching for products
+ containing these words.
+ To use AND or OR logic, use eBay's standard search string
+ modifiers. Wildcards (+, -, or *) are also supported.
+ Be careful when using spaces before or after modifiers and
+ wildcards.&lt;br&gt;
+ &lt;br&gt;
+ Some keyword queries can result in response times of 30 seconds or
+ longer. If more than 2000 matches are found, the call fails with
+ an error. If this kind of error occurs, refine the search by
+ passing in more keywords and/or by using DomainName to restrict
+ the search to certain domains (such as DVDs).
+ If you are searching for a particular book, DVD, CD, or video game
+ and you already know its ISBN or EAN (for a book) or UPC,
+ consider using ProductID instead to retrieve more
+ precise results. &lt;br&gt;
+ &lt;br&gt;
+ The request requires either QueryKeywords or
+ ProductID, but these fields cannot be used together.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>350</MaxLength>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <RequiredInput>Conditionally</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ProductSort" type="ns:ProductSortCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Sorts the list of products returned. This is mostly only useful
+ with QueryKeywords. (When you use ProductID, eBay usually only
+ returns one product.)
+ Also see SortOrder. If PorductSort and SortOrder are not
+ specified, products are sorted by popularity in descending order.
+ </xs:documentation>
+ <xs:appinfo>
+ <Default>Popularity</Default>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SortOrder" type="ns:SortOrderCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Sorts search results in ascending or descending order.
+ Only applicable with ProductSort. If you specify ProductSort
+ without SortOrder, the order defaults to Descending for
+ all criteria except Title (which defaults to Ascending).
+ </xs:documentation>
+ <xs:appinfo>
+ <Default>Descending</Default>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MaxEntries" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the maximum number of products to return per page
+ in a single call. This is mostly only useful
+ with QueryKeywords. (When you use ProductID, eBay usually only
+ returns one product, and up to 200 items for that product.)
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>1</Min>
+ <Max>20</Max>
+ <Default>1</Default>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PageNumber" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies which page of data to return in the current call.
+ Specify a positive value equal to or lower than the number of
+ pages available (which you determine by examining the results of
+ your initial request).
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>1</Min>
+ <Max>2000</Max>
+ <Default>1</Default>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FindProductsResponse.xsd #####
+
+-->
+ <xs:element name="FindProductsResponse" type="ns:FindProductsResponseType"/>
+<xs:complexType name="FindProductsResponseType">
+ <xs:annotation>
+ <xs:documentation>
+ Returns stock product information in eBay catalogs, such as
+ information about a particular DVD or camera. Optionally,
+ also returns items that match the product.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractResponseType">
+ <xs:sequence>
+ <xs:element name="ApproximatePages" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The total number of pages that can be returned, given the same
+ query and filters in the request. As FindProducts only returns
+ up to 2000 products, the maximum possible value is theoretically
+ 2000 (if you were to set MaxEntries to 1 in the request).
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>1</Min>
+ <Max>2000</Max>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: none, DomainHistogram, Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MoreResults" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ If true, more pages of results are available.
+ That is, PageNumber is less than ApproximatePages.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: none, DomainHistogram, Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DomainHistogram" type="ns:DomainHistogramType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A histogram that lists the number of matching products found
+ and the domains in which they were found.
+ A &lt;i&gt;domain&lt;/i&gt; describes a set of categories that
+ share certain common characteristics (as determined by eBay).
+ Each domain has its own name and ID.
+ Only returned when you specify DomainHistogram in IncludeSelector.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: DomainHistogram</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemArray" type="ns:SimpleItemArrayType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A list of active items that were listed with the requested
+ product. Only returned when you specify Items in IncludeSelector,
+ and the product has matching items that are currently active on
+ eBay.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PageNumber" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The number of the page of data returned. If many products
+ are found and multiple pages of results are available, use
+ this in combination with ApproximatePages and MoreResults
+ to decide which page to retrieve next. As FindProducts only
+ returns up to 2000 products, the maximum possible value is
+ theoretically 2000 (if you were to set MaxEntries to 1 in the
+ request).
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>1</Min>
+ <Max>2000</Max>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: none, DomainHistogram, Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Product" type="ns:CatalogProductType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ An eBay catalog product. This contains stock information about a
+ particular DVD, camera, set of golf clubs, or other product.
+ When you use QueryKeywords in the request, FindProducts returns a
+ maximum of 20 products per page.
+ When you use ProductID in the request, FindProducts usually only
+ returns 1 product.
+ (If more than one product matches the same ProductID,
+ FindProducts will return all of those products. As of the time
+ of this writing, we expect this to be a rare case.)
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxOccurs>20</MaxOccurs>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: none, DomainHistogram, Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TotalProducts" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The total number of matching products found.
+ (If more than 2000 products are found, the call fails
+ with an error.)
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>0</Min>
+ <Max>2000</Max>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: none, DomainHistogram, Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FindReviewsAndGuidesRequest.xsd #####
+
+-->
+ <xs:element name="FindReviewsAndGuidesRequest" type="ns:FindReviewsAndGuidesRequestType"/>
+<xs:complexType name="FindReviewsAndGuidesRequestType">
+ <xs:annotation>
+ <xs:documentation>
+ Splitting include reviews and guides from GetProducts.
+ </xs:documentation>
+ <xs:appinfo>
+ <Summary>
+ Searches reviews and guides based on product, category, or user. The response provides information about
+ each user or product's reviews and guides.
+ </Summary>
+ <RelatedCalls>
+ FindItemsAdvanced, FindProducts, GetCategoryInfo
+ </RelatedCalls>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractRequestType">
+ <xs:sequence>
+ <xs:element name="ProductID" type="ns:ProductIDType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Use this to retrieve reviews (not guides) for one specific product.
+ Specify the ID as a string, and use the type attribute
+ to indicate the nature of the ID you are specifying.
+ Same as FindProducts, supports Reference, ISBN, UPC, EAN.
+ &lt;br&gt;
+ &lt;br&gt;
+ ProductID can be used in combination with UserID to return Reviews and Guides.
+ ProductID and CategoryID cannot be used together.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="UserID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Retrieves reviews and guides written by the specified user.
+ &lt;br&gt;
+ &lt;br&gt;
+ UserID can be combined with either ProductID or CategoryID but not both (as
+ ProductID and CategoryID cannot be used together).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specify a single CategoryID to restrict your query to a specific Guide category.
+ &lt;br&gt;
+ &lt;br&gt;
+ If the specified category ID doesn't match an existing category
+ for the site, an invalid-category error message is returned.
+ To determine valid categories:&lt;br&gt;
+ Use the FindItemsAdvanced CategoryHistogram value in the IncludeSelector field
+ to retrieve matching categories. Then make another
+ FindReviewsAndGuides call with the ID of a matching category.
+ &lt;br&gt;
+ &lt;br&gt;
+ CategoryID can be used in combination with UserID to return Reviews and Guides.
+ ProductID and CategoryID cannot be used together.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MaxResultsPerPage" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the maximum number of reviews per page (not guides) in the returned list. If not
+ specified, the default returns 5 results per page.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Default>5</Default>
+ <Max>20</Max>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PageNumber" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the number of the page of data to return in the current call.
+ Specify a positive value equal to or lower than the number of pages
+ available (which you determine by examining the results of your initial request).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/FindReviewsAndGuidesResponse.xsd #####
+
+-->
+ <xs:element name="FindReviewsAndGuidesResponse" type="ns:FindReviewsAndGuidesResponseType"/>
+<xs:complexType name="FindReviewsAndGuidesResponseType">
+ <xs:annotation>
+ <xs:documentation>
+ Find reviews and guides response type.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractResponseType">
+ <xs:sequence>
+ <xs:element name="ReviewCount" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Number of returned reviews.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="BuyingGuideCount" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Number of returned buying guides.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ReviewerRank" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Rank of reviewer if using user search.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TotalHelpfulnessVotes" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Number of helpfulness votes if using user search.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ProductID" type="ns:ProductIDType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The eBay or external IDs associated with the product.
+ Use the Reference value as input to search for the same product
+ in the future, or use the ISBN, EAN, or UPC value (if returned).
+ The ISBN, EAN, and UPC values can also be useful as keys if your
+ application is comparing products across different sites. Always
+ returned when Product is returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ReviewsAndGuidesURL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ URL to the reviews and guides page.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PageNumber" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The number of the page of data returned. If many products
+ are found and multiple pages of results are available, use
+ this in combination with TotalPages to decide
+ which page to retrieve next. As FindProducts only returns
+ up to 2000 products, the maximum possible value is theoretically
+ 2000 (if you were to set MaxResultsPerPage to 1 in the request).
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>1</Min>
+ <Max>2000</Max>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TotalPages" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates the total number of pages of data
+ that could be returned by repeated requests. Returned with a
+ value of 0 if no pages are available.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="BuyingGuideDetails" type="ns:BuyingGuideDetailsType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Contains information for up to 5 buying guides that match the
+ query. Buying guides provide useful information about shopping
+ in a particular domain, like Digital Cameras.
+ For example, a digital camera buying guide
+ could help a buyer determine what kind of digital camera
+ is right for them.
+ If no buying guides are associated with the product, this only
+ returns a link to the buying guide hub (the main Guides page).
+ Count limited by MaxResultsPerPage in request.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ReviewDetails" type="ns:ReviewDetailsType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Contains information about review details. Count limited by MaxResultsPerPage in request.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PositiveHelpfulnessVotes" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Number of helpfulness votes if using user search.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/GetCategoryInfoRequest.xsd #####
+
+-->
+ <xs:element name="GetCategoryInfoRequest" type="ns:GetCategoryInfoRequestType"/>
+<xs:complexType name="GetCategoryInfoRequestType">
+ <xs:annotation>
+ <xs:documentation>
+ This call will give you the ability to retrieve high level
+ Category information, relevant for a buy-side application.
+ </xs:documentation>
+ <xs:appinfo>
+ <Summary>
+ This call will give you the ability to retrieve high level
+ Category information, relevant for a buy-side application.
+ </Summary>
+ <RelatedCalls>FindItemsAdvanced</RelatedCalls>
+ <TempInfo>IncludeSelector</TempInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractRequestType">
+ <xs:sequence>
+ <xs:element name="CategoryID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Use an ID of -1 to retrieve the root category and the top-level (level 1) meta categories. You can determine other CategoryIDs from the response from this call, or from a specific item (retrieved from another call like FindItemsAdvanced or GetSingleItem), or from the eBay website.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>19 (Note: The eBay database specifies 38. Currently, Category ID's are usually 9 to 12 digits)</MaxLength>
+ <CallInfo>
+ <CallName>GetCategoryInfo</CallName>
+ <RequiredInput>Yes</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="IncludeSelector" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Defines standard subsets of fields to return within the
+ response. If you don't specify this field, the call returns
+ a default set of fields. If you specify this field, the
+ additional fields (child categories) you retrieve can affect
+ the call's response time (decrease performance).
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength/>
+ <PresentDetails>Yes</PresentDetails>
+ <SeeLink>
+ <Title>Detail Controls</Title>
+ <URL>#detailControls</URL>
+ </SeeLink>
+ <SeeLink>
+ <Title>GetCategoryInfo Samples</Title>
+ <URL>#samples</URL>
+ </SeeLink>
+ <CallInfo>
+ <CallName>GetCategoryInfo</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/GetCategoryInfoResponse.xsd #####
+
+-->
+ <xs:element name="GetCategoryInfoResponse" type="ns:GetCategoryInfoResponseType"/>
+<xs:complexType name="GetCategoryInfoResponseType">
+ <xs:annotation>
+ <xs:documentation>
+ Contains the category data for the eBay site specified as input. The category
+ data is returned as a CategoryArrayType object, that contains zero, one, or
+ multiple CategoryType objects. Each CategoryType object contains the detail data
+ for one category. Other fields indicate how many categories are returned in a call, when the category hierarchy was last updated, and the version of the category hierarchy (all three of which can differ from one eBay site to the next).
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractResponseType">
+ <xs:sequence>
+ <xs:element name="CategoryArray" type="ns:CategoryArrayType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ List of the returned categories. The category array contains one CategoryType
+ object for each returned category. Returns empty if no detail level is specified.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetCategoryInfo</CallName>
+ <Details>IncludeSelector: None, ChildCategories</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryCount" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates the number of categories returned (i.e., the number of CategoryType
+ objects in CategoryArray).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetCategoryInfo</CallName>
+ <Details>IncludeSelector: None, ChildCategories</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="UpdateTime" type="xs:dateTime" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates the last date and time that eBay modified the category hierarchy for the
+ specified eBay site.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetCategoryInfo</CallName>
+ <Details>IncludeSelector: None, ChildCategories</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryVersion" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates the version of the category hierarchy on the
+ specified eBay site.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetCategoryInfo</CallName>
+ <Details>IncludeSelector: None, ChildCategories</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/GetItemStatusRequest.xsd #####
+
+-->
+ <xs:element name="GetItemStatusRequest" type="ns:GetItemStatusRequestType"/>
+<xs:complexType name="GetItemStatusRequestType">
+ <xs:annotation>
+ <xs:documentation>
+ Contains a single ItemID or an array of ItemIDs.
+ </xs:documentation>
+ <xs:appinfo>
+ <Summary>
+ Allows you to get the status for a group of items. Returns status information such
+ as ListingStatus and End Time for all items that are listed in the request.
+ </Summary>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractRequestType">
+ <xs:sequence>
+ <xs:element name="ItemID" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Contains the item ID and description of a listing.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>19 (Note: The eBay database specifies 38. However, Item IDs are usually 9 to 12 digits)</MaxLength>
+ <CallInfo>
+ <CallName>GetItemStatus</CallName>
+ <RequiredInput>Yes</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/GetItemStatusResponse.xsd #####
+
+-->
+ <xs:element name="GetItemStatusResponse" type="ns:GetItemStatusResponseType"/>
+<xs:complexType name="GetItemStatusResponseType">
+ <xs:annotation>
+ <xs:documentation>
+ Returns status information for all items in a list. Some of the Item information
+ is returned in an SimpleItemArrayType object, that can include zero, one, or multiple ItemType objects.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractResponseType">
+ <xs:sequence>
+ <xs:element name="Item" type="ns:SimpleItemType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Collection of Item status objects in an SimpleItemArrayType object, that can include zero, one, or multiple ItemType objects.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetItemStatus</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/GetMultipleItemsRequest.xsd #####
+
+-->
+ <xs:element name="GetMultipleItemsRequest" type="ns:GetMultipleItemsRequestType"/>
+<xs:complexType name="GetMultipleItemsRequestType">
+ <xs:annotation>
+ <xs:documentation>
+ Retrieves publicly available data for one or more listings. Use this call to retrieve
+ much of the information that is visible on a listing's View Item page on the eBay Web
+ site, such as title, prices, and basic shipping costs. Provide ItemID for every item for
+ which you want information. This call returns the same minimal information that is
+ returned by GetSingleItem for each item with no IncludeSelector specified. (Use
+ GetShippingCosts to retrieve more detailed shipping cost information for a given item.)
+ </xs:documentation>
+ <xs:appinfo>
+ <Summary>
+ Retrieves publicly available data for one or more listings.
+ </Summary>
+ <RelatedCalls>GetSingleItem</RelatedCalls>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractRequestType">
+ <xs:sequence>
+ <xs:element name="ItemID" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ The item ID that uniquely identifies the item listing
+ for which to retrieve the data.
+ You can provide a maximum of 10 ItemIDs.
+ &lt;br&gt;
+ &lt;br&gt;
+ You can determine an item's ID by calling FindItems or from the eBay Web
+ site. Provide ItemID for every item for which you want information.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>
+ <SeeLink>
+ <Title>(FindItems) Item.ItemID</Title>
+ <URL>FindItems.html#Response.Item.ItemID</URL>
+ </SeeLink>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <RequiredInput>Yes</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/GetMultipleItemsResponse.xsd #####
+
+-->
+ <xs:element name="GetMultipleItemsResponse" type="ns:GetMultipleItemsResponseType"/>
+<xs:complexType name="GetMultipleItemsResponseType">
+ <xs:annotation>
+ <xs:documentation>
+ Response to request of GetMultipleItems.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractResponseType">
+ <xs:sequence>
+ <xs:element name="Item" type="ns:SimpleItemType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Contains details for a listing whose ID was specified in the request.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/GetShippingCostsRequest.xsd #####
+
+-->
+ <xs:element name="GetShippingCostsRequest" type="ns:GetShippingCostsRequestType"/>
+<xs:complexType name="GetShippingCostsRequestType">
+ <xs:annotation>
+ <xs:documentation>
+ Gets shipping costs for an item. This is one of the ways a buyer or seller
+ can obtain shipping cost information for an existing item (for which the caller is
+ either the buyer or seller) at any point in the life of of the listing, before or
+ after a buyer has committed to purchasing the item(s). This call works for
+ both flat rate shipping and calculated shipping. Flat rate shipping costs are
+ established by the seller before bidding occurs. Calculated shipping costs
+ are calculated by eBay with its shipping partners based on postal code, but note
+ that insurance cost can only be determined once the final item price is known
+ when the listing ends. To determine whether a listing has ended, use GetSingleItem.
+ It is best to call GetShippingCosts only after determining via GetSingleItem
+ or FindItems that the item actually has shipping cost information.
+ </xs:documentation>
+ <xs:appinfo>
+ <Summary>
+ Gets shipping costs for an item.
+ </Summary>
+ <RelatedCalls>GetSingleItem</RelatedCalls>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractRequestType">
+ <xs:sequence>
+ <xs:element name="ItemID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The item ID that uniquely identifies the item listing for which to retrieve the data.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <RequiredInput>Yes</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="QuantitySold" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Number of items sold to a single buyer and to be shipped together.
+ </xs:documentation>
+ <xs:appinfo>
+ <Default>1</Default>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DestinationPostalCode" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Destination country postal code (or zipcode, for US). Ignored if no
+ country code is provided. Optional tag for some countries. More likely to
+ be required for large countries. Ignored for flat rate shipping.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <RequiredInput>Conditionally</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DestinationCountryCode" type="ns:CountryCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Destination country code. If DestinationCountryCode is US,
+ postal code is required and represents US zip code.
+ </xs:documentation>
+ <xs:appinfo>
+ <Default>US</Default>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <RequiredInput>Conditionally</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="IncludeDetails" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates whether to return the ShippingDetails container in the response.
+ </xs:documentation>
+ <xs:appinfo>
+ <Default>false</Default>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <RequiredInput>Conditionally</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/GetShippingCostsResponse.xsd #####
+
+-->
+ <xs:element name="GetShippingCostsResponse" type="ns:GetShippingCostsResponseType"/>
+<xs:complexType name="GetShippingCostsResponseType">
+ <xs:annotation>
+ <xs:documentation>
+ Response to call of GetShippingCosts.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractResponseType">
+ <xs:sequence>
+ <xs:element name="ShippingDetails" type="ns:ShippingDetailsType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Shipping-related details for the specified item. This container is only
+ returned if IncludeDetails is true on input. Any error about shipping services
+ (returned by a vendor of eBay's who calculates shipping costs) is returned in
+ ShippingRateErrorMessage. Errors from a shipping service are likely to be related to
+ issues with shipping specifications, such as package size and the selected shipping
+ method not supported by a particular shipping service.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingCostSummary" type="ns:ShippingCostSummaryType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Shipping-related details for the specified item. Any error about shipping services
+ (returned by a vendor of eBay's who calculates shipping costs) is returned in
+ ShippingRateErrorMessage. Errors from a shipping service are likely to be related to
+ issues with shipping specifications, such as package size and the selected shipping
+ method not supported by a particular shipping service.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/GetSingleItemRequest.xsd #####
+
+-->
+ <xs:element name="GetSingleItemRequest" type="ns:GetSingleItemRequestType"/>
+<xs:complexType name="GetSingleItemRequestType">
+ <xs:annotation>
+ <xs:documentation>
+ Retrieves publicly available data for a single listing.
+ Use this call to retrieve most of the information that is visible
+ on a listing's View Item page on the eBay Web site,
+ such as title, description, prices, basic seller and bidder information,
+ and other details about the listing.Also returns basic
+ shipping costs. For more shipping details, use GetShippingCosts.
+ </xs:documentation>
+ <xs:appinfo>
+ <Summary>
+ Gets publicly visible details about one listing. This gives you most of the
+ data that eBay shows on the View Item page (title, description,
+ price, and other details).
+ </Summary>
+ <RelatedCalls>FindItems, GetItemStatus, GetShippingCosts, GetSingleItem</RelatedCalls>
+ <TempInfo>IncludeSelector</TempInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractRequestType">
+ <xs:sequence>
+ <xs:element name="ItemID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The item ID that uniquely identifies the item listing
+ for which to retrieve the data.&lt;br&gt;
+ &lt;br&gt;
+ You can determine an item's ID by calling FindItems or
+ from the eBay Web site.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>
+ <SeeLink>
+ <Title>(FindItems) Item.ItemID</Title>
+ <URL>FindItems.html#Response.Item.ItemID</URL>
+ </SeeLink>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <RequiredInput>Yes</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="IncludeSelector" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Defines standard subsets of fields to return within the
+ response.&lt;br&gt;
+ &lt;br&gt;
+ If you don't specify this field, the call returns a default
+ set of fields (see the "Detail Controls" link below). If you specify this field, the additional
+ fields you retrieve can affect the call's response time
+ (performance).&lt;br&gt;
+ &lt;br&gt;
+ &lt;b&gt;Applicable values&lt;/b&gt;:
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; Details&lt;/p&gt;
+ &lt;p class="edef"&gt;Include most available fields in the
+ response (except fields that significantly affect the call's
+ performance).&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; Description&lt;/p&gt;
+ &lt;p class="edef"&gt;Include the Description field in the response. (This can affect the call's performance.)&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; ShippingCosts&lt;/p&gt;
+ &lt;p class="edef"&gt;Include basic shipping costs in the
+ response. (Use GetShippingCosts to retrieve more
+ details.)&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; ItemSpecifics&lt;/p&gt;
+ &lt;p class="edef"&gt;Include ItemSpecifics in the response.&lt;/p&gt;
+ &lt;br&gt;
+ &lt;br&gt;
+ Use a comma to specify multiple values. (In this case,
+ the results are cumulative.) See "GetSingleItem Samples"
+ for an example of how to use this field.&lt;br&gt;
+ &lt;br&gt;
+ See "Detail Controls" for a complete list of
+ fields that can be returned for each selector.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength/>
+ <PresentDetails>Yes</PresentDetails>
+ <SeeLink>
+ <Title>Detail Controls</Title>
+ <URL>#detailControls</URL>
+ </SeeLink>
+ <SeeLink>
+ <Title>GetSingleItem Samples</Title>
+ <URL>#samples</URL>
+ </SeeLink>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/GetSingleItemResponse.xsd #####
+
+-->
+ <xs:element name="GetSingleItemResponse" type="ns:GetSingleItemResponseType"/>
+<xs:complexType name="GetSingleItemResponseType">
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractResponseType">
+ <xs:sequence>
+ <xs:element name="Item" type="ns:SimpleItemType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Contains details about the listing whose ID was specified in
+ the request.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/GetUserProfileRequest.xsd #####
+
+-->
+ <xs:element name="GetUserProfileRequest" type="ns:GetUserProfileRequestType"/>
+<xs:complexType name="GetUserProfileRequestType">
+ <xs:annotation>
+ <xs:documentation>
+ Retrieves user information based on the user ID you specify. The response contains detailed information about a user. You can specify the types of user information you want in the response.
+ </xs:documentation>
+ <xs:appinfo>
+ <Summary>
+ Retrieves user information based on the user ID you specify. The response contains detailed information about a user. You can specify the types of user information you want in the response.
+ </Summary>
+ <RelatedCalls>FindItems</RelatedCalls>
+ <TempInfo>IncludeSelector</TempInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractRequestType">
+ <xs:sequence>
+ <xs:element name="UserID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the user whose data will returned by the call.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <RequiredInput>Yes</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="IncludeSelector" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Defines standard subsets of fields to return within the
+ response.&lt;br&gt;
+ &lt;br&gt;
+ If you don't specify this field, a default
+ set of fields is returned. Click "Detail Controls" below
+ and see "none" for the default fields.
+ If you specify this field, then the set of fields returned
+ includes the default fields.
+ If you specify this field, the additional
+ fields returned can affect the call's response time
+ (performance), including in the case of feedback data.&lt;br&gt;
+ &lt;br&gt;
+ &lt;b&gt;Applicable values&lt;/b&gt;:
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; Details&lt;/p&gt;
+ &lt;p class="edef"&gt;Include most available fields (such as StoreURL) in the
+ response (except fields that can affect the call's response time).&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; FeedbackDetails&lt;/p&gt;
+ &lt;p class="edef"&gt;Include a container for information about one feedback entry.
+ &lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; FeedbackHistory&lt;/p&gt;
+ &lt;p class="edef"&gt;Include a container for summary feedback data for a user.
+ &lt;/p&gt;
+ &lt;br&gt;
+ Use a comma to specify multiple values. (In this case,
+ the results are cumulative.) See "GetUserProfile Samples"
+ for an example of how to use this field.&lt;br&gt;
+ &lt;br&gt;
+ See "Detail Controls" for a complete list of
+ fields that can be returned for each selector.
+ </xs:documentation>
+ <xs:appinfo>
+ <PresentDetails>Yes</PresentDetails>
+ <SeeLink>
+ <Title>Detail Controls</Title>
+ <URL>#detailControls</URL>
+ </SeeLink>
+ <SeeLink>
+ <Title>GetUserProfile Samples</Title>
+ <URL>#samples</URL>
+ </SeeLink>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <RequiredInput>No</RequiredInput>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/GetUserProfileResponse.xsd #####
+
+-->
+ <xs:element name="GetUserProfileResponse" type="ns:GetUserProfileResponseType"/>
+<xs:complexType name="GetUserProfileResponseType">
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractResponseType">
+ <xs:sequence>
+ <xs:element name="User" type="ns:SimpleUserType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Contains the returned user data for the specified eBay user.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: none, Details, FeedbackDetails, FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FeedbackHistory" type="ns:FeedbackHistoryType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Summary feedback data for a user. Contains counts of positive, neutral,
+ and negative feedback for predefined time periods.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FeedbackDetails" type="ns:FeedbackDetailType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ The FeedbackDetails container has fields (ItemID, etc.) with information about one feedback entry.
+ When you call GetUserProfile, the 5 (maximum) most recent feedback records are returned in
+ FeedbackDetails containers.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: FeedbackDetails</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/GeteBayTimeRequest.xsd #####
+
+-->
+ <xs:element name="GeteBayTimeRequest" type="ns:GeteBayTimeRequestType"/>
+<xs:complexType name="GeteBayTimeRequestType">
+ <xs:annotation>
+ <xs:documentation>
+ Gets the official eBay system time in GMT.
+ </xs:documentation>
+ <xs:appinfo>
+ <Summary>
+ Gets the official eBay system time in GMT.
+ </Summary>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractRequestType">
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/GeteBayTimeResponse.xsd #####
+
+-->
+ <xs:element name="GeteBayTimeResponse" type="ns:GeteBayTimeResponseType"/>
+<xs:complexType name="GeteBayTimeResponseType">
+ <xs:annotation>
+ <xs:documentation>
+ The Timestamp field indicates the official eBay system time in GMT.
+ The value returned represents the date and time when eBay processed the request.
+ The value is in the ISO 8601 date-time format (YYYY-MM-DDTHH:MM:SS.SSSZ).
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ns:AbstractResponseType">
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/HalfCatalogProductType.xsd #####
+
+-->
+ <xs:complexType name="HalfCatalogProductType">
+ <xs:annotation>
+ <xs:documentation>
+ Information about an Half.com catalog product.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Title" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The title of the product, as specified in the catalog.
+ Always returned when Product is returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: none, DomainHistogram, Items</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DetailsURL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Fully qualified URL for optional information about the product,
+ such as a movie's description or film credits. This information
+ is hosted through the Half.com Web site and it cannot be edited.
+ Portions of the content are protected by copyright.
+ Applications can include this URL as a link in product search results
+ so that end users can view additional descriptive details about
+ the product. This is usually always returned when Product is returned,
+ but it may be safest to check for the existence of this field.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: none, DomainHistogram, Items</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="StockPhotoURL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Fully qualified URL for a stock image (if any) that is associated
+ with the Half.com catalog product. The URL is for the image Half.com
+ usually displays in product search results (usually 70px tall).
+ It may be helpful to calculate the dimensions of the photo
+ programmatically before displaying it.
+ Only returned if a URL is available for the product.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: none, DomainHistogram, Items</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingCostSummary" type="ns:ShippingCostSummaryType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Contains basic shipping-related costs for the item. If Item.Quantity is greater
+ than 1, this is the shipping cost for one item. If the seller offers a choice of
+ more than one shipping service (such as USPS Ground or Expediated), this is the
+ cost of the "first" shipping option (usually the lowest cost option).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: Items</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DisplayStockPhotos" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ If true, your application can attempt to display stock photos that
+ are returned. If false, your application should not attempt to display
+ any stock photos that are returned. This recommendation is useful for
+ catalog data related to products like coins, where stock photos are not
+ necessarily applicable or available. An application with a graphical
+ user interface can use this flag to determine
+ when to hide customized stock photo widgets.
+ Always returned when Product is returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: none, DomainHistogram, Items</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemCount" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Total number of listings on the Half.com site that use
+ stock information from this catalog product. This value can be greater
+ than the number of listings returned in ItemArray.
+ Only returned when you search by ProductID (and you pass
+ Items or Details in IncludeSelector).
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>0</Min>
+ <Max/>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: Items</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ProductID" type="ns:ProductIDType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ The Half.com or external IDs associated with the product. Use the Reference
+ value as input to search for the same product in the future, or
+ use the ISBN, EAN, or UPC value (if returned).
+ The ISBN, EAN, and UPC values can also be useful as keys
+ if your application is comparing products across different sites.
+ Always returned when Product is returned.
+ <!--
+ Example of Product with 10 and 13 digit isbn, and catalogid
+ <ProductID type="ISBN"> 1234567890</ProductID>
+ <ProductID type="ISBN"> 1234567890123 </ProductID>
+ <ProductID type="Catalog"> 5467823</ProductID>
+ -->
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: none, DomainHistogram, Items</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DomainName" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The name of the domain in which the product was found.
+ If the product is mapped to multiple domains, Half.com returns
+ the most applicable domain (as determined by Half.com).
+ Always returned when Product is returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: none, DomainHistogram, Items</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemSpecifics" type="ns:NameValueListArrayType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A list of name/value pairs that are included in the product's
+ pre-filled Item Specifics. These indicate common aspects or
+ characteristics of the product, such as Publisher (for a book).
+ Also see ProductID for ISBN, UPC, or EAN values, if applicable.
+ This is usually returned. (We are not aware of any cases in which this
+ node is not be returned. However, it may be safest to check for the
+ existence of this node.)
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: none, DomainHistogram, Items</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemArray" type="ns:SimpleItemArrayType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A list of active items that were listed with the requested product.
+ Results are sorted by current price (lowest first),
+ then by recent positive feedback (highest first).
+ &lt;br&gt;
+ &lt;br&gt;
+ Only returned when you specify Items in IncludeSelector, and the
+ product has matching items that are currently active on Half.com.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: Items</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ReviewCount" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The total number of reviews that are available for this product
+ on the Half.com Web site. This can be greater than the number of
+ reviews returned by FindProducts. In a future release, we will provide
+ the capability to retrieve details about reviews.
+ Always returned when Product is returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Min>0</Min>
+ <Max/>
+ <Details>IncludeSelector: none, DomainHistogram, Items</Details>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/HalfItemConditionCodeType.xsd #####
+
+-->
+ <xs:simpleType name="HalfItemConditionCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ Controls values for item condition, especially for Books catalog.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="BrandNew">
+ <xs:annotation>
+ <xs:documentation>
+ New, unread, unused and in perfect condition.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="LikeNew">
+ <xs:annotation>
+ <xs:documentation>
+ Item still in original packaging, no wear and tear, all
+ facets of the product are intact. (Could easily be mistaken
+ for brand new.)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="VeryGood">
+ <xs:annotation>
+ <xs:documentation>
+ Doesn't look brand new but has no easily noticeable damage
+ and very minimal wear and tear. (You would give it to a
+ good friend as a gift)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Good">
+ <xs:annotation>
+ <xs:documentation>
+ Very minimal damage to the item and still includes all accessories
+ such as dust jackets, liner notes, and cases.
+ (You would use it yourself, but wouldn't necessarily give it as a gift)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Acceptable">
+ <xs:annotation>
+ <xs:documentation>
+ Some damage to the item but integrity still intact. May be missing an
+ accessory. (Item beaten up a bit but it works)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Used">
+ <xs:annotation>
+ <xs:documentation>
+ Some damage to the item and visibly used.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/HalfProductsType.xsd #####
+
+-->
+ <xs:complexType name="HalfProductsType">
+ <xs:annotation>
+ <xs:documentation>
+ Information about an eBay catalog product.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Product" type="ns:HalfCatalogProductType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ An set of Half.com catalog products. This contains stock information about a
+ particular DVD, book, or other product.
+ When you use QueryKeywords in the request, FindHalfProducts returns a
+ maximum of 20 products per page.
+ When you use ProductID in the request, FindHalfProducts usually only
+ returns 1 product.
+ (If more than one product matches the same ProductID,
+ FindProducts will return all of those products. As of the time
+ of this writing, we expect this to be a rare case.)
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Details>IncludeSelector: none, DomainHistogram, Items</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/HistogramEntryType.xsd #####
+
+-->
+ <xs:complexType name="HistogramEntryType">
+ <xs:annotation>
+ <xs:documentation>
+ A generic histogram entry type.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ This is the domain name.&lt;br&gt;
+ &lt;br&gt;
+ A product can be mapped to more than one domain.
+ This means that even if a name appears in this histogram and the
+ Count is greater than 1, you won't necessarily see the
+ same name returned for each returned product (in the Product node
+ of the response). That is, Product.DomainName only
+ returns the most applicable domain name (as determined by eBay).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: DomainHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: DomainHistogram</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Count" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ This is the number of products found in the domain.
+ If a product is mapped to more than one domain, it is counted separately
+ for each domain. (For example, if the same product name appears in both
+ Children's Books and Fiction Books, the count for both of these
+ domains will include that product.) This means you cannot sum the
+ product counts to determine the total number of matching products
+ across all domains. The histogram is only intended to show the number
+ of matching products in each individual domain.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: DomainHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: DomainHistogram</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/InsuranceOptionCodeList.xsd #####
+
+-->
+ <xs:simpleType name="InsuranceOptionCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ The seller's requirements regarding whether the buyer pays
+ for shipping insurance.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Optional">
+ <xs:annotation>
+ <xs:documentation>
+ (in/out) The seller offers the buyer the choice of paying
+ for shipping insurance or not.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Required">
+ <xs:annotation>
+ <xs:documentation>
+ (in/out) The seller requires that the buyer pay for
+ shipping insurance.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="NotOffered">
+ <xs:annotation>
+ <xs:documentation>
+ (in/out) The seller does not offer shipping insurance to the buyer.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="IncludedInShippingHandling">
+ <xs:annotation>
+ <xs:documentation>
+ (in/out) The seller is not charging separately for shipping
+ insurance costs; any insurance is already included in the
+ base shipping cost.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="NotOfferedOnSite">
+ <xs:annotation>
+ <xs:documentation>
+ (in/out) Shipping insurance is not offered as a separate option on the site
+ where the item is listed. (Some shipping services, such as
+ DE_InsuredExpressOrCourier, include insurance as part of the service.) If
+ another insurance option is specified in the listing request and the site does
+ not support shipping insurance as a separate option, eBay will reset the
+ insurance option to this value. At the time of this writing, this option is
+ only meaningful for the eBay Germany, Austria, and Switzerland sites.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ Placeholder value. See
+ &lt;a href="types/simpleTypes.html#token"&gt;token&lt;/a&gt;.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/InternationalShippingServiceOptionType.xsd #####
+
+-->
+ <xs:complexType name="InternationalShippingServiceOptionType">
+ <xs:annotation>
+ <xs:documentation>
+ Shipping costs and options related to an international shipping service. When used
+ as input, if one is provided, at least one domestic ShippingService must be
+ provided. This type does not exist before compatibility level 383.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="ShippingInsuranceCost" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The insurance cost associated with shipping a single item with this shipping
+ service. If the buyer bought more than one of this item, this proportional to
+ QuantitySold. If the item has not yet been sold, insurance information cannot
+ be calculated and the value is 0.00. For calculated shipping only.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingServiceName" type="xs:token" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ An international shipping service offered for shipping the item (for
+ example, UPS Ground). For flat and calculated shipping.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingServiceAdditionalCost" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Cost of shipping each additional item beyond the first item. Zero for single-
+ item listings. For flat shipping only.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingServiceCost" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The basic shipping cost of the item. If multiple items were purchased, this
+ includes the ShippingServiceAdditionalCost.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingServicePriority" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Seller-preferred presentation order relative to other service options. Valid
+ values are: 1, 2 and 3 (first, second and third choices). For flat and
+ calculated shipping.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShipsTo" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ An international location or region to which the item may be shipped via this
+ particular shipping service. Associated with the shipping service by the
+ seller. This is basically the same as SimpleItemType.ShipToLocations except
+ that this is spelled out and the other is abbreviated.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/ItemConditionCodeList.xsd #####
+
+-->
+ <xs:simpleType name="ItemConditionCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies a predefined subset of item conditions. The predefined set of fields
+ can vary for different calls.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="New">
+ <xs:annotation>
+ <xs:documentation>
+ The seller specified the Item Condition as New, or
+ did not specify a condition.
+ (Excludes items that the seller listed as Used.)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Used">
+ <xs:annotation>
+ <xs:documentation>
+ The seller specified the Item Condition as Used, or
+ did not specify a condition.
+ (Excludes items that the seller listed as New.)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/ItemTypeCodeList.xsd #####
+
+-->
+ <xs:simpleType name="ItemTypeCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ Identifies listing-type-related filters.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="AuctionItemsOnly">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Only retrieve listings eligible for competitive bidding at auction.
+ That is, only retrieve listings for which ListingType is Chinese, Dutch, or Live
+ (regardless of the BuyItNowEnabled value).
+ If a listing has a listing type of any of the following,
+ it is not retrieved: StoresFixedPrice, FixedPriceItem, and AdType.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="FixedPricedItem">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Only retrieves listings that can be purchased at a fixed price.
+ That is, only retrieves listings for which listing type is StoresFixedPrice or FixedPriceItem.
+ Whether StoresFixedPrice items are retrieved depends on the site default.
+ If StoresFixedPrice items are retrieved, they are returned after the other retrieved items.
+ Also retrieves Chinese and Dutch auction listings for which BuyItNowEnabled is true.
+ Does not retrieve listings for which listing type is AdType or Live,
+ and does not retrieve auction listings for which BuyItNowEnabled is false.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="AllItems">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Returns all listing types (the default for FindItemsAdvanced).
+ It is recommended that you use AllItemTypes instead of AllItems.
+ Whether StoresFixedPrice items are retrieved depends on the site default.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="StoreInventoryOnly">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Only retrieves listings for which the listing type is StoresFixedPrice.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="FixedPriceExcludeStoreInventory">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Excludes listings that have listing type set to StoresFixedPrice.
+ Excludes listings that have listing type set to AdType or Live.
+ Excludes auction listings in which BuyItNowEnabled is false.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ExcludeStoreInventory">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Excludes listings that have listing type set to StoresFixedPrice.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="AllItemTypes">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Retrieves listings whether or not listing type is set to StoresFixedPrice; include auction items.
+ In searches for items, you must specify the AllItemTypes value if you want Store Inventory format (StoresFixedPrice) items to be returned.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="AllFixedPriceItemTypes">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Retrieves fixed-price items.
+ Whether StoresFixedPrice items are retrieved does not depend on the site default.
+ The StoresFixedPrice items are retrieved after the basic fixed price items.
+ Items are retrieved whether or not listing type is set to StoresFixedPrice.
+ Does not retrieve items for which listing type is AdType or Live.
+ Does not retrieve auction items for which BuyItNowEnabled is false.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ClassifiedItemsOnly">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Only retrieves Classified Ad format listings.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="AdFormat">
+ <xs:annotation>
+ <xs:documentation>
+ Restricts listings to return only items that have the Ad Format feature.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/ListingStatusCodeList.xsd #####
+
+-->
+ <xs:simpleType name="ListingStatusCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies an active or ended listing's status in eBay's processing
+ workflow. If a listing ends with a sale (or sales), eBay needs to
+ update the sale details (e.g., total price and buyer/high bidder)
+ and the final value fee. This processing can take several minutes.
+ If you retrieve a sold item and no details about the buyer/high
+ bidder are returned, use this
+ listing status information to determine whether eBay has finished
+ processing the listing.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Active">
+ <xs:annotation>
+ <xs:documentation>
+ (out) The listing is still live, or it has recently ended
+ but eBay has not completed processing
+ the listing (e.g., we're still determining the high bidder).
+ A multi-item listing is considered active until all items
+ have winning bids or purchases or the listing's end time
+ has passed. (That is, if the listing has a Quantity of 10,
+ the sale of 1 of those items doesn't end the listing.)
+ If the listing has ended but this Active
+ status is returned, please allow several minutes for eBay to
+ finish processing the listing.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Ended">
+ <xs:annotation>
+ <xs:documentation>
+ (out) The listing has ended and eBay has completed processing
+ of the sale (if any), such as determining the high bidder.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Completed">
+ <xs:annotation>
+ <xs:documentation>
+ (out) The listing has ended and eBay has completed processing
+ of the sale (if any), such as determining the high bidder.
+ You can think of Completed and Ended as essentially equivalent.
+ (The difference is only meaningful to the seller of the item,
+ as Completed indicates whether eBay has finished calculating
+ certain selling fees.)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Placeholder value. See
+ &lt;a href="types/simpleTypes.html#token"&gt;token&lt;/a&gt;.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/ListingTypeCodeList.xsd #####
+
+-->
+ <xs:simpleType name="ListingTypeCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the selling format used for a listing.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Unknown">
+ <xs:annotation>
+ <xs:documentation>
+ Unknown auction type. (This is not normally used.)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Chinese">
+ <xs:annotation>
+ <xs:documentation>
+ Single-quantity online auction format.
+ A Chinese auction has a Quantity of 1. Buyers engage in competitive bidding,
+ although Buy It Now may be offered as long as no bids have been placed.
+ Online auctions are listed on eBay.com, and they are also listed in
+ the seller's eBay Store if the seller is a Store owner.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Dutch">
+ <xs:annotation>
+ <xs:documentation>
+ Multiple-quantity online auction format.
+ A Dutch auction has a Quantity greater than 1. Buyers engage in
+ competitive bidding. Some sites also offer Buy It Now for Dutch auctions.
+ Online auctions are listed on eBay.com, and they are also listed in
+ the seller's eBay Store if the seller is a Store owner.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Live">
+ <xs:annotation>
+ <xs:documentation>
+ Live auction, on-site auction that can include non-eBay bidders.
+ Live auctions are listed on the eBay Live Auctions site, in live auction categories.
+ They can also appear on eBay if the seller lists the lot in a secondary category
+ that is an eBay category.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Auction">
+ <xs:annotation>
+ <xs:documentation>
+ Reserved for future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="AdType">
+ <xs:annotation>
+ <xs:documentation>
+ Advertisement to solicit inquiries on listings such as real estate.
+ Permits no bidding on that item, service, or property. To express interest,
+ a buyer fills out a contact form that eBay forwards to the the seller as a lead.
+ This format does not enable buyers and sellers to transact online through eBay,
+ and eBay Feedback is not available for ad format listings.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="StoresFixedPrice">
+ <xs:annotation>
+ <xs:documentation>
+ A fixed-price format for eBay Store sellers.
+ Store Inventory listings appear after other listings in regular browse and search
+ item lists on eBay. They have a lower Insertion Fee and longer listing durations.
+ Only specified by sellers who have an eBay Store.
+ Store Inventory listings are listed on eBay.com, and they are also listed in
+ the seller's eBay Store.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PersonalOffer">
+ <xs:annotation>
+ <xs:documentation>
+ Second chance offer made to a non-winning bidder on an ended listing.
+ A seller can make an offer to a non-winning bidder when either the winning bidder
+ has failed to pay for an item or the seller has a duplicate of the item.
+ Second-chance offer items are on eBay, but they do not appear when browsing or searching listings. You need to already know the item ID
+ in order to retrieve a second-chance offer.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="FixedPriceItem">
+ <xs:annotation>
+ <xs:documentation>
+ A basic fixed-price listing with a Quantity of 1 or more. Allows no auction-style bidding.
+ Also known as Buy It Now Only on some sites (not to be confused with the BuyItNow option that
+ is available for Chinese auctions).
+ Fixed-price listings appear on eBay.com, and they are also listed in
+ the seller's eBay Store if the seller is a Store owner.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Half">
+ <xs:annotation>
+ <xs:documentation>
+ Half.com listing (item is listed on Half.com, not on eBay).
+ Reserved for future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="LeadGeneration">
+ <xs:annotation>
+ <xs:documentation>
+ Lead Generation format (advertisement-style listing to solicit
+ inquiries or offers, no bidding or fixed price, listed on eBay).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Express">
+ <xs:annotation>
+ <xs:documentation>
+ For Germany only:
+ eBay Express-only format (item is listed only on eBay Express
+ Germany, not on eBay).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ Placeholder value. See
+ &lt;a href="types/simpleTypes.html#token"&gt;token&lt;/a&gt;.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/NameValueListArrayType.xsd #####
+
+-->
+ <xs:complexType name="NameValueListArrayType">
+ <xs:annotation>
+ <xs:documentation>
+ A list of one or more valid names and corresponding values.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="NameValueList" type="ns:NameValueListType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ One Item Specific that the seller has specified in the Item Specifics
+ section of the listing, if any.&lt;br&gt;
+ &lt;br&gt;
+ For FindProducts, this can also be an Item Specific that is defined for
+ a product. That is, Item Specifics can be returned both for
+ items and products in FindProducts.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: ItemSpecifics</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: ItemSpecifics</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Items, DomainHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Items, DomainHistogram, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/NameValueListType.xsd #####
+
+-->
+ <xs:complexType name="NameValueListType">
+ <xs:annotation>
+ <xs:documentation>
+ A name and corresponding value (a name/value pair).
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The name of the item specific. This field is always returned for each
+ item specific that is returned (if any). However if the seller didn't select a value for the item specific, we suggest you don't
+ show the name (to avoid confusing users).&lt;br&gt;
+ &lt;br&gt;
+ For the item condition, this usually includes the
+ word "Condition" for eBay US, UK, Australia, and India listings;
+ and "Artikelzustand" for eBay Germany, Austria, and Switzerland
+ listings.&lt;br&gt;
+ &lt;br&gt;
+ The Name fields in return policy item specifics (if any) usually include
+ the word "return", "refund", and/or "warranty" for eBay US, Canada,
+ UK, Australia, and India listings;
+ and "Rucknahme", "return", and/or "refund" for eBay Germany, Austria,
+ and Switzerland listings.&lt;br&gt;
+ &lt;br&gt;
+ &lt;span class="tablenote"&gt;&lt;b&gt;Note:&lt;/b&gt;
+ Ignore item specifics with SIFFTAS in the name. These are for internal use by eBay and aren't meaningful to users.&lt;/span&gt;
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: ItemSpecifics</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: ItemSpecifics</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Items, DomainHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Items, DomainHistogram, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Value" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ A value for the item specific. In GetSingleItem, this field is always
+ returned for each item specific that is returned (if any). However,
+ if the seller didn't select a value for the item specific,
+ this field may return empty, or it may return a value like "-",
+ "Not Selected", or "Unspecified" (or the equivalent in the language
+ of the site).&lt;br&gt;
+ &lt;br&gt;
+ For the item condition, this usually includes the
+ word "New" or "Used" for eBay US, UK, Australia, and India listings;
+ and "Neu" or "Gebraucht" for eBay Germany, Austria, and Switzerland
+ listings.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: ItemSpecifics</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: ItemSpecifics</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Items, DomainHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Items, DomainHistogram, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/PaymentMethodSearchCodeType.xsd #####
+
+-->
+ <xs:simpleType name="PaymentMethodSearchCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ Used for specifying items for which a specific payment method or methods are accepted.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="PayPal">
+ <xs:annotation>
+ <xs:documentation>
+ PayPal payment method.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PaisaPay">
+ <xs:annotation>
+ <xs:documentation>
+ PaisaPay payment method. The PaisaPay payment method is only for the India site (site ID 203).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PayPalOrPaisaPay">
+ <xs:annotation>
+ <xs:documentation>
+ Either the PayPal or the PaisaPay payment method. The PaisaPay payment method is only for the India site (site ID 203).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/PopularSearchesType.xsd #####
+
+-->
+ <xs:complexType name="PopularSearchesType">
+ <xs:annotation>
+ <xs:documentation>
+ Contains CategoryID/QueryKeywords, AlternateKeywords, RelatedKeywords.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="CategoryID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Numeric ID of a category on eBay.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindPopularSearches</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryParentID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Category ID identifying a category that is an ancestor
+ of the category indicated in CategoryID.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindPopularSearches</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="QueryKeywords" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies which query keywords corresponds to this PopularSearchResult.
+ Query Keywords are returned in the output to clarify which result set corresponds to which
+ Query Keyword inputs (as there can be more than one set of keywords in the input).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindPopularSearches</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="AlternativeSearches" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Alternative search keywords for the query keywords, separated by semicolons.
+ You can use this to find other search terms buyers and sellers may be interested in.
+ For example, if a seller lists an item with "wedding" in the title, they may also be
+ interested in adding "bridal" to the title because bridal is an alternative search
+ keyword which buyers have used.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindPopularSearches</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RelatedSearches" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Keywords related to the query keywords, separated by semicolons.
+ You can use this to find more detailed related keywords. For example,
+ the query keyword "wedding" is related to searches for
+ "wedding decorations;wedding favors;wedding supplies;wedding dresses..." which helps
+ the seller and buyer specify their query with more detail and precision.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindPopularSearches</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/PreferredLocationCodeList.xsd #####
+
+-->
+ <xs:simpleType name="PreferredLocationCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the criteria for filtering search results by site, where site is determined by the site ID in the request.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="ListedInCurrencyImplied">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Items listed in the currency implied by the site specified in the
+ request.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="LocatedInCountryImplied">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Items located in the country implied by the site specified in the
+ request.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="AvailableInCountryImplied">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Items available to the country implied by the site specified in the
+ request. For the US site, this implies listings from ALL English-language
+ countries that are available to the US.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SiteImplied">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Items listed on the site specified in the request, regardless of listing
+ currency.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="BelgiumListing">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Items located in Belgium or listed on one of the two Belgian sites.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/ProductIDCodeList.xsd #####
+
+-->
+ <xs:simpleType name="ProductIDCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ ProductID type for product searches.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="ISBN">
+ <xs:annotation>
+ <xs:documentation>
+ ISBN-10 or ISBN-13 value for books. (The string length of ProductID
+ indicates whether the ID is 10 or 13 characters.)
+ If you know a book's ISBN, you can use this instead of the
+ eBay CatalogItem or Reference ID to search for that book.
+ Max length of corresponding value: 13
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="EAN">
+ <xs:annotation>
+ <xs:documentation>
+ EAN value for books. (This is used more commonly in
+ European countries.)
+ If you know a book's EAN, you can use this instead of the
+ eBay CatalogItem or Reference ID to search for that book.
+ Max length of corresponding value: 13
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UPC">
+ <xs:annotation>
+ <xs:documentation>
+ UPC value for products in Music (e.g., CDs), DVDs &amp; Movies,
+ and Video Games categories (or domains).
+ If you know a product's UPC, you can use this instead of the
+ eBay CatalogItem or Reference ID to search for that product.
+ Max length of corresponding value: 12
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="MPN">
+ <xs:annotation>
+ <xs:documentation>
+ Reserved for future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Keywords">
+ <xs:annotation>
+ <xs:documentation>
+ Reserved for future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CatalogItem">
+ <xs:annotation>
+ <xs:documentation>
+ An eBay catalog product ID. This is an ID that was used to list
+ a particular item. The CatalogItem ID represents a particular version
+ of a catalog product. (A given version could have an older or newer
+ description, set of Item Specifics, or other details.)
+ So the same product could have different CatalogItem IDs at different
+ times. Use this for searching when you you have obtained the product ID
+ from a listed item (using the eBay Web site UI or another source),
+ and you don't know the reference ID yet.
+ Max length of corresponding value: 4000
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Reference">
+ <xs:annotation>
+ <xs:documentation>
+ The global reference ID for an eBay catalog product.
+ A reference ID is a fixed reference to a product
+ (regardless of version). Use this instead of CatalogItem when you
+ know a product's reference ID (because older CatalogItem IDs are
+ more likely to become obsolete over time.)
+ One reference ID can be associated with multiple CatalogItem IDs.
+ To determine valid reference IDs for products, first call
+ FindProducts with QueryKeywords (or ProductID).
+ Each product in the response includes a reference ID.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/ProductIDType.xsd #####
+
+-->
+ <xs:complexType name="ProductIDType">
+ <xs:annotation>
+ <xs:documentation>
+ Product ID has an attribute of ProductIDCodeType and a string value.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="type" type="ns:ProductIDCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ The nature of identifier being used. For FindHalfProducts, FindProducts,
+ FindItemsAdvanced, and FindReviewsAndGuides, only Reference, ISBN, UPC,
+ and EAN are supported.
+ Required when ProductID is specified.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <CallName>FindHalfProducts</CallName>
+ <CallName>FindProducts</CallName>
+ <CallName>FindItemsAdvanced</CallName>
+ <AllValuesExcept>CatalogItem,MPN, Keywords</AllValuesExcept>
+ <RequiredInput>Conditionally</RequiredInput>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/ProductSortCodeList.xsd #####
+
+-->
+ <xs:simpleType name="ProductSortCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ Controls the order of product (not item) searches.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Popularity">
+ <xs:annotation>
+ <xs:documentation>
+ Sort by product popularity (as determined by eBay).
+ (This is the default sort order.)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Rating">
+ <xs:annotation>
+ <xs:documentation>
+ Sort by average rating.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ReviewCount">
+ <xs:annotation>
+ <xs:documentation>
+ Sort by the number of reviews on eBay.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ItemCount">
+ <xs:annotation>
+ <xs:documentation>
+ Sort by the number of active items listed with this product.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Title">
+ <xs:annotation>
+ <xs:documentation>
+ Sort by the product title.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ Reserved for values that are not available in the version of the schema
+ you are using. If eBay adds a new value to this code type as of a
+ newer version, we return CustomCode instead when you specify a
+ lower request version.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/QuantityOperatorCodeList.xsd #####
+
+-->
+ <xs:simpleType name="QuantityOperatorCodeType">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="LessThan">
+ <xs:annotation>
+ <xs:documentation>
+ Used by QuantityOperator to specify that you are seeking quantities less than Quantity.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="LessThanOrEqual">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies quantities less than or equal to Quantity.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Equal">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies quantities equal to Quantity.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="GreaterThan">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies quantities greater than Quantity.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="GreaterThanOrEqual">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies quantities greater than or equal to Quantity.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ Reserved for internal or future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/ReturnPolicyType.xsd #####
+
+-->
+ <xs:complexType name="ReturnPolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Type for the return policy details of an item.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Refund" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies how a refund will be made, e.g. as an exchange.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ReturnsWithin" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies the length of time in which the item must be returned
+ under the return policy.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ReturnsAccepted" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Information about returns accepted.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Description" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A description of the return policy for the item.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="WarrantyOffered" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Information about the warranty offered.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="WarrantyType" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The type of warranty offered.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="WarrantyDuration" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The length of the warranty offered.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="EAN" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Contains the EAN.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingCostPaidBy" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The party who pays the cost of shipping for a returned item.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/ReviewDetailsType.xsd #####
+
+-->
+ <xs:complexType name="ReviewDetailsType">
+ <xs:annotation>
+ <xs:documentation>
+ Contains product reviews written by eBay members.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="AverageRating" type="xs:float" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The product's average rating (out of 5) based on all reviews.
+ For example, a value like 4.5 would mean the average rating
+ is 4.5 out of 5. (See ReviewCount for the total number of reviews.)
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>0</Min>
+ <Max>5</Max>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Review" type="ns:ReviewType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ An eBay member's review of the product.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxOccurs>20</MaxOccurs>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/ReviewType.xsd #####
+
+-->
+ <xs:complexType name="ReviewType">
+ <xs:annotation>
+ <xs:documentation>
+ A product review written by an eBay member.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="URL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A link to the full review on the eBay Web site.
+ This URL optimized for natural search: "_W0QQ" is like "?"
+ (question mark), "QQ" is like "&amp;" (ampersand),
+ and "Z" is like "=" (equals sign).&lt;br&gt;
+ &lt;br&gt;
+ &lt;span class="tablenote"&gt;&lt;b&gt;Note:&lt;/b&gt;
+ For a link to all reviews for the product, remove the upvr parameter
+ from this URL. See the eBay Web Services guide for an example.
+ &lt;/span&gt;
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Title" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The title of the review.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>55</MaxLength>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Rating" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The eBay member's rating of the product.
+ </xs:documentation>
+ <xs:appinfo>
+ <Min>0</Min>
+ <Max>5</Max>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Text" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The text of the review. If the review is longer than
+ 2000 characters, the text is cut off and it ends with "...".
+ See Review.URL for a link to the full text of the review.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>2000</MaxLength>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="UserID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The reviewer's eBay user ID.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CreationTime" type="xs:dateTime" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The time and date when the reviewer posted the review.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindReviewsAndGuides</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/SalesTaxType.xsd #####
+
+-->
+ <xs:complexType name="SalesTaxType">
+ <xs:annotation>
+ <xs:documentation>
+ Type for expressing sales tax data.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="SalesTaxPercent" type="xs:float" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Percent of an item's price to be charged as the sales
+ tax for the transaction. The value passed in is stored with a
+ precision of 3 digits after the decimal point (##.###).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SalesTaxState" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ State or jurisdiction for which the sales tax is being collected.
+ Only returned if the seller specified a value.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingIncludedInTax" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ (US only) Whether shipping costs were part of the base amount
+ that was taxed. Flat or calculated shipping.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SalesTaxAmount" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ (US only) The amount of sales tax, calculated for a
+ transaction based on the SalesTaxPercent and pricing information.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/SearchFlagCodeList.xsd #####
+
+-->
+ <xs:simpleType name="SearchFlagCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ SearchFlagCodeType - Search flags for FindItemsAdvanced.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Charity">
+ <xs:annotation>
+ <xs:documentation>
+ Return only charity item listings.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Gift">
+ <xs:annotation>
+ <xs:documentation>
+ Return only gift items.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="NowAndNew">
+ <xs:annotation>
+ <xs:documentation>
+ Return only items that have been listed with Now and New. Applicable for
+ certain sites only.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="LocalSearch">
+ <xs:annotation>
+ <xs:documentation>
+ Perform a local search.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="FreeShipping">
+ <xs:annotation>
+ <xs:documentation>
+ If specified, only items with free shipping for the user's location are
+ returned. The user's location is determined from the site ID specified
+ in the request. If false, no filtering is done via this attribute. A
+ listing is not considered a free shipping listing if it requires
+ insurance or requires pick up or requires a shipping surcharge.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Gallery">
+ <xs:annotation>
+ <xs:documentation>
+ Return Gallery items only.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Picture">
+ <xs:annotation>
+ <xs:documentation>
+ Picture.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="GetItFast">
+ <xs:annotation>
+ <xs:documentation>
+ Limits the results to Get It Fast listings.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Lot">
+ <xs:annotation>
+ <xs:documentation>
+ Limits the results to only those listings for which lot size is 2 or greater.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="GermanMotorsSearchable">
+ <xs:annotation>
+ <xs:documentation>
+ Limits the results based on each item's eligibility to appear on the
+ mobile.de site. If
+ specified, queries for eligible items only. If not specified, the search
+ results are not affected. Only applicable for items listed on the eBay
+ Germany site (site ID 77) in subcategories of mobile.de search-enabled
+ categories.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DigitalDelivery">
+ <xs:annotation>
+ <xs:documentation>
+ If specified, limits the results to digitally delivered good only.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/SearchResultType.xsd #####
+
+-->
+ <xs:complexType name="SearchResultType">
+ <xs:annotation>
+ <xs:documentation>
+ Container for items. Can contain zero, one, or multiple
+ SimpleItemType objects, each of which has data for an item listing.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="CategoryGroupNamePath" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Category name breadcrumb.
+ Used in building a category-browsing path, i.e. a path of "breadcrumbs" (e.g., Computers &amp; Networking > Technology Books > Certification).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryGroupIDPath" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Category ID breadcrumb.
+ Used in building a category-browsing path, i.e. a path of "breadcrumbs" (e.g., Computers &amp; Networking > Technology Books > Certification).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CategoryGroupItemCount" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Item count of the category.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemArray" type="ns:SimpleItemArrayType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Array of simple items.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/SellerBusinessCodeTypeList.xsd #####
+
+-->
+ <xs:simpleType name="SellerBusinessCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ Type of seller account. This value can be returned if the German site (site ID
+ 77) or eBay Motors site (site ID 100) is specified.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Undefined">
+ <xs:annotation>
+ <xs:documentation>
+ Type of seller account not defined.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Private">
+ <xs:annotation>
+ <xs:documentation>
+ Private seller account.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Commercial">
+ <xs:annotation>
+ <xs:documentation>
+ Commercial seller account.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/ShippingCostSummaryType.xsd #####
+
+-->
+ <xs:complexType name="ShippingCostSummaryType">
+ <xs:annotation>
+ <xs:documentation>
+ Type for the shipping-related details for an item or transaction.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="ShippingServiceName" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The name of a shipping service.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingServiceCost" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The basic shipping cost of the item. If multiple items were purchased, this
+ includes the ShippingServiceAdditionalCost.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: ShippingCosts</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InsuranceCost" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The cost of insurance. For flat rate shipping, this is the value set by the
+ seller, if any. For calculated shipping, this is the value calculated by eBay
+ with the shipping carrier for the particular item and can only be determined
+ once the final item price is known when the listing ends. To determine whether
+ a listing has ended, see EndTime or ListingStatus in GetSingleItem.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: ShippingCosts</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingType" type="ns:ShippingTypeCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ How the seller stated that cost of shipping is to be determined, such as flat rate
+ or calculated or free.&lt;br&gt;
+ &lt;br&gt;
+ In GetSingleItem, this is always returned when ShippingCostSummary is
+ returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <AllValuesExcept>Freight, Free</AllValuesExcept>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <AllValuesExcept>Freight, Free</AllValuesExcept>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: ShippingCosts</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InsuranceOption" type="ns:InsuranceOptionCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the seller offers shipping insurance and, if
+ so, whether the insurance is optional or required. Flat and
+ calculated shipping.
+ This field is ignored when Item.ListingType equals Express.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/ShippingDetailsType.xsd #####
+
+-->
+ <xs:complexType name="ShippingDetailsType">
+ <xs:annotation>
+ <xs:documentation>
+ Type for the shipping-related details for an item or transaction.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="GetItFast" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates whether the seller has opted the listing into the Get
+ It Fast feature. If GetItFast is true and if at least one of
+ the domestic shipping services offered by the seller is an
+ expedited shipping service, every shipping service offered by
+ the seller is considered a Get It Fast service, and the seller
+ commits to delivering the item to the buyer-selected shipping
+ service within one day.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <SeeLink>
+ <Title>Enabling Get It Fast
+</Title>
+ <URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=GetItFast</URL>
+ </SeeLink>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InsuranceCost" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The cost of insurance. For flat rate shipping, this is the value set by the
+ seller, if any. For calculated shipping, this is the value calculated by eBay
+ with the shipping carrier for the particular item and can only be determined
+ once the final item price is known when the listing ends. To determine whether
+ a listing has ended, use GetSingleItem. Not applicable to eBay Motors vehicle listings.
+ </xs:documentation>
+ <xs:appinfo>
+ <Default>0.00</Default>
+ <Min/>
+ <Max/>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InsuranceOption" type="ns:InsuranceOptionCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the seller offers shipping insurance and, if
+ so, whether the insurance is optional or required. Flat and
+ calculated shipping.
+ This field is ignored when Item.ListingType equals Express.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InternationalShippingServiceOption" type="ns:InternationalShippingServiceOptionType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Shipping costs and options related to an international shipping service.
+ &lt;br&gt;
+ Not applicable to Half.com or eBay Motors vehicle listings.
+ This field is ignored when Item.ListingType=Express.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>DetailLevel: none, ItemReturnDescription,
+ ItemReturnAttributes, ReturnAll</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SalesTax" type="ns:SalesTaxType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Sales tax details. US site only. Flat and calculated shipping.
+ If your application normally calculates sales tax without using eBay's tax
+ tables, you should understand how purchases via eBay Express will affect
+ the way you process payments.
+ For general information about listings on eBay Express,
+ see the eBay Web Services Guide links below.
+ Not applicable to eBay Motors vehicle listings.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <SeeLink>
+ <Title>Specify Sales Tax for Express and eBay
+</Title>
+ <URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ExpressTax</URL>
+ </SeeLink>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingRateErrorMessage" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ For most applicable calls, returns the words No Error or returns an error
+ message related to an attempt to calculate shipping rates. For calculated
+ shipping only.
+ Not applicable to Half.com or eBay Motors vehicle listings.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingServiceOption" type="ns:ShippingServiceOptionType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Shipping costs and options related to domestic shipping services offered by
+ the seller. Flat and calculated shipping.&lt;br&gt;
+ Not applicable to Half.com or eBay Motors vehicle listings.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TaxTable" type="ns:TaxTableType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Tax details for a jurisdiction such as a state or province.
+ Returned empty in if no tax table was used.
+ Not applicable to Half.com.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InternationalInsuranceCost" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The cost of insurance for items shipped internationally. For flat rate
+ shipping, this is the value set by the seller, if any. For calculated
+ shipping, this is the value calculated by eBay with the shipping carrier for
+ the particular item and can only be determined once the final item price is
+ known when the listing ends. To determine whether a listing has ended, use
+ GetSingleItem. Not applicable to eBay Motors vehicle listings.
+ </xs:documentation>
+ <xs:appinfo>
+ <Default>0.00</Default>
+ <Min/>
+ <Max/>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InternationalInsuranceOption" type="ns:InsuranceOptionCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the seller offers shipping insurance for items shipped internationally
+ and, if so, whether the insurance is optional or required. Flat and calculated
+ shipping. This field is ignored when Item.ListingType equals Express.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/ShippingServiceOptionType.xsd #####
+
+-->
+ <xs:complexType name="ShippingServiceOptionType">
+ <xs:annotation>
+ <xs:documentation>
+ Shipping costs and options related to a domestic shipping service.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="ShippingInsuranceCost" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The insurance cost associated with shipping a single item with this shipping
+ service. If the buyer bought more than one of this item, this proportional to
+ QuantitySold. If the item has not yet been sold, insurance information cannot
+ be calculated and the value is 0.00. For calculated shipping only.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingServiceName" type="xs:token" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A domestic shipping service offered for shipping the item (for example, UPS
+ Ground). For flat and calculated shipping.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingServiceCost" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The meaning of this element depends on the call and on whether flat or
+ calculated shipping has been selected. (For example, it could be the
+ cost to ship a single item, the cost to ship all items, or the cost to ship
+ just the first of many items, with ShippingServiceAdditionalCost accounting
+ for the rest.) For flat and calculated shipping.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingServiceAdditionalCost" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The cost of shipping each additional item beyond the first item. For input,
+ this is required if the listing is for multiple items and should be zero for
+ single-item listings. Default value is 0.00. For flat shipping only.
+ Not applicable to Half.com.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingServicePriority" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Seller-preferred presentation order relative to other
+ service options. Valid values: 1 (1st choice), 2 (2nd choice),
+ 3 (3rd choice). For flat and calculated shipping.
+ Not applicable to Half.com.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ExpeditedService" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates whether the service is an expedited shipping service. See Enabling Get It Fast.
+ Not applicable to Half.com.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingTimeMin" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The minimum guaranteed number of days in which the shipping carrier
+ can ship an item (not including the time it takes the seller to
+ deliver the item to the shipping carrier). See Enabling Get It Fast.
+ Not applicable to Half.com.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingTimeMax" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The maximum guaranteed number of days the shipping carrier will
+ take to ship an item (not including the time it takes the seller to
+ deliver the item to the shipping carrier). See Enabling Get It Fast.
+ Not applicable to Half.com.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingSurcharge" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ An additional fee to charge US buyers who ship via UPS to Alaska, Hawaii
+ or Puerto Rico. Can only be assigned a value for Parts and Accessories
+ items on the eBay US and Motors sites. Only returned if set.
+ If some transactions in an order have a surcharge, surcharge is added
+ only for those transactions.
+ Flat rate shipping only.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShipsTo" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ An international location or region to which the item may be shipped via this
+ particular shipping service. Associated with the shipping service by the
+ seller. Use GeteBayDetails to determine which locations are valid per site.
+ These values are string equivalents of values found in ShippingRegionCodeType
+ and CountryCodeType.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <SeeLink>
+ <Title>ShipToLocation
+</Title>
+ <URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ShipToLocation</URL>
+ </SeeLink>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/ShippingTypeCodeList.xsd #####
+
+-->
+ <xs:simpleType name="ShippingTypeCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ The shipping cost model offered by the seller.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Flat">
+ <xs:annotation>
+ <xs:documentation>
+ The flat rate shipping model: the seller establishes the cost of shipping and cost of
+ shipping insurance, regardless of what any buyer-selected shipping service
+ might charge the seller.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Calculated">
+ <xs:annotation>
+ <xs:documentation>
+ The calculated shipping model: the posted cost of shipping is based on the
+ seller-offered and buyer-selected shipping service, where the shipping costs
+ are calculated by eBay and the shipping carrier based on the buyer's address,
+ and any packaging/handling costs established by the seller are automatically
+ rolled into the total.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Freight">
+ <xs:annotation>
+ <xs:documentation>
+ The freight shipping model: the cost of shipping is determined by a third
+ party, FreightQuote.com, based on the item location (zip code). Currently,
+ Freight can only be specified on input via eBay Web site, not via API.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Free">
+ <xs:annotation>
+ <xs:documentation>
+ Free is used when the seller is declaring that shipping is free for the buyer.
+ Since Free cannot be selected via API, the seller has two options for
+ signifying that shipping is free when listing an item:
+ &lt;br&gt;
+ - omit shipping details, mention in the item description that shipping is
+ free, and set ShippingTermsInDescription to true
+ &lt;br&gt;
+ - select an arbitrary shipping service and set its shipping cost to 0, mention
+ in the item description that shipping is free, and set
+ ShippingTermsInDescription to true
+ &lt;br&gt;
+ The latter is a better way to communicate "free shipping" because eBay picks
+ up the "0" cost and can more accurately identify shipping costs in search
+ results.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="NotSpecified">
+ <xs:annotation>
+ <xs:documentation>
+ The seller did not specify the shipping type.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="FlatDomesticCalculatedInternational">
+ <xs:annotation>
+ <xs:documentation>
+ The seller specified one or more flat domestic shipping services
+ and one or more calculated international shipping services.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CalculatedDomesticFlatInternational">
+ <xs:annotation>
+ <xs:documentation>
+ The seller specified one or more calculated domestic shipping services
+ and one or more flat international shipping services.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ Placeholder value. See
+ &lt;a href="types/simpleTypes.html#token"&gt;token&lt;/a&gt;.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/SimpleItemArrayType.xsd #####
+
+-->
+ <xs:complexType name="SimpleItemArrayType">
+ <xs:annotation>
+ <xs:documentation>
+ Container for a list of items. Can contain zero, one, or multiple
+ SimpleItemType objects, each of which conveys the data for one item listing.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Item" type="ns:SimpleItemType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Contains data for an item listing.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/SimpleItemSortCodeList.xsd #####
+
+-->
+ <xs:simpleType name="SimpleItemSortCodeType">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="BestMatch">
+ <xs:annotation>
+ <xs:documentation>
+ Sorts items by Best Match, and no sort order applies. If specified,
+ then Best Match sort also applies to CategoryHistogram.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ Placeholder value. See
+ &lt;a href="types/simpleTypes.html#token"&gt;token&lt;/a&gt;.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="EndTime">
+ <xs:annotation>
+ <xs:documentation>
+ Sorts items by end time in ascending or descending order.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="BidCount">
+ <xs:annotation>
+ <xs:documentation>
+ Sort by number of bids on the item in ascending or descending order.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Country">
+ <xs:annotation>
+ <xs:documentation>
+ Sort by country; no sort order can be specified.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CurrentBid">
+ <xs:annotation>
+ <xs:documentation>
+ Sort by current bid in ascending or descending order.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Distance">
+ <xs:annotation>
+ <xs:documentation>
+ Sort by distance, ascending order only.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="StartDate">
+ <xs:annotation>
+ <xs:documentation>
+ Sort by start date, recently-listed first.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="BestMatchCategoryGroup">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Sort by BestMatchCategoryGroup so results are grouped by Best Match within a category.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PricePlusShipping">
+ <xs:annotation>
+ <xs:documentation>
+ (in) This value is part of the Price Plus Shipping Sort feature, to be enabled
+ by the end of Sept. 2007 for the following sites:
+ US (site ID 0), Germany (77), Canada (2), and Australia (15).
+ The Price Plus Shipping Sort feature causes item sorting to consider shipping costs.
+ Specify PricePlusShippingAsc to sort items by lowest cost first, as follows:
+ Lowest-total-cost (for items where shipping was properly specified),
+ then freight-shipping items, then items for which shipping was not specified (sorted by price).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/SimpleItemType.xsd #####
+
+-->
+ <xs:complexType name="SimpleItemType">
+ <xs:sequence>
+ <xs:element name="BestOfferEnabled" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the seller will accept a best offer for this item.
+ This feature enables a buyer to make a lower-priced binding offer on a
+ fixed price item. Buyers can't see how many offers have been made
+ (only the seller can see this information). To make a best offer on a
+ listing, use the eBay Web site.
+ </xs:documentation>
+ <xs:appinfo>
+ <SeeLink>
+ <Title>(eBay Help) Making a Best Offer (for Buyers)</Title>
+ <URL>http://pages.ebay.com/help/buy/best-offer.html</URL>
+ </SeeLink>
+ <SeeLink>
+ <Title>(eBay DE Hilfe) Preis vorschlagen</Title>
+ <URL>http://pages.ebay.de/help/buy/best-offer.html</URL>
+ </SeeLink>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="BuyItNowPrice" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The Buy It Now Price of the item (if any), in the currency
+ of the site on which the item was listed.&lt;br&gt;
+ &lt;br&gt;
+ For Chinese auctions (Quantity=1, competitive bidding online auctions),
+ Buy It Now lets a user purchase the item at a fixed price and
+ end the auction immediately. On most sites, after a Chinese auction has
+ bids, the listing is no longer eligible for Buy It Now.
+ However, calls can still return the Buy It Now Price that
+ the seller set for the listing. Use the Item.BidCount field to
+ determine whether an auction with Buy It Now has bids or not.&lt;br&gt;
+ &lt;br&gt;
+ Some eBay sites also support Buy It Now for Dutch auctions
+ (multi-quantity, competitive bidding), where you can buy multiple
+ items from the same listing at a fixed price, instead of bidding.
+ On some sites, the Buy It Now option remains available for Dutch
+ auctions even after there are bids. See Item.BuyItNowAvailable.&lt;br&gt;
+ &lt;br&gt;
+ For fixed-price (FixedPriceItem) and Store Inventory listings
+ (StoresFixedPrice), see CurrentPrice or ConvertedCurrentPrice
+ instead.&lt;br&gt;
+ &lt;br&gt;
+ Only returned if an item was listed with Buy It Now.
+ </xs:documentation>
+ <xs:appinfo>
+ <SeeLink>
+ <Title>(GetSingleItem) Item.ListingType</Title>
+ <URL>GetSingleItem.html#Response.Item.ListingType</URL>
+ </SeeLink>
+ <SeeLink>
+ <Title>Item.BuyItNowAvailable</Title>
+ <URL>#Response.Item.BuyItNowAvailable</URL>
+ <!-- Intentionally starts with # -->
+ </SeeLink>
+ <SeeLink>
+ <Title>Item.ConvertedBuyItNowPrice</Title>
+ <URL>#Response.Item.ConvertedBuyItNowPrice</URL>
+ <!-- Intentionally starts with # -->
+ </SeeLink>
+ <SeeLink>
+ <Title>Item.ConvertedCurrentPrice</Title>
+ <URL>#Response.Item.ConvertedCurrentPrice</URL>
+ <!-- Intentionally starts with # -->
+ </SeeLink>
+ <SeeLink>
+ <Title>(eBay Help) Buying with Buy It Now</Title>
+ <URL>http://pages.ebay.com/help/buy/how-buy-bin.html</URL>
+ </SeeLink>
+ <SeeLink>
+ <Title>(eBay DE Hilfe) Kaufen mit Sofort-Kaufen</Title>
+ <URL>http://pages.ebay.de/help/buy/how-buy-bin.html</URL>
+ </SeeLink>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Description" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The seller's description of the item, if any. This can include
+ HTML markup and JavaScript. See
+ &lt;a href="types/simpleTypes.html#string"&gt;string&lt;/a&gt;
+ in Simple Schema Types. &lt;br&gt;
+ &lt;br&gt;
+ Some sellers don't specify their own listing description.
+ Instead, they use a stock description from a catalog available
+ through eBay. (GetSingleItem doesn't return this stock information.)
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>500000 (some sites may allow more, but the exact number may vary)</MaxLength>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Description</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The ID that uniquely identifies the item listing. eBay generates this ID
+ when an item is listed. This ID is unique across all eBay sites.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetItemStatus</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="BuyItNowAvailable" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ For Dutch auctions (not Chinese auctions) this indicates whether there
+ is a Buy It Now option. (On some sites, the Buy It Now option remains
+ available for Dutch auctions even after there are bids.)
+ Applicable to the Germany site (site ID 77) only.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetItemStatus</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ConvertedBuyItNowPrice" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The listing's Buy It Now Price (if any), converted into the currency
+ of the site to which you sent this request. &lt;br&gt;
+ &lt;br&gt;
+ Price fields are returned as doubles, not necessarily in the traditional
+ monetary format of the site's country.
+ For example, a US Dollar value might be returned as
+ 3.880001 instead of 3.88.&lt;br&gt;
+ &lt;br&gt;
+ For Chinese auctions (Quantity=1, competitive bidding online auctions),
+ Buy It Now lets a user purchase the item at a fixed price and
+ end the auction immediately. On most sites, after a Chinese
+ auction has bids, the listing is no longer eligible for Buy It Now.
+ However, calls like FindItems still return the Buy It Now Price that
+ the seller set for the listing. Use the Item.BidCount field to
+ determine whether an auction with Buy It Now has bids or not
+ (and therefore whether it is still eligible to be purchased with
+ Buy It Now).&lt;br&gt;
+ &lt;br&gt;
+ Some eBay sites also support Buy It Now for Dutch auctions
+ (multi-quantity, competitive bidding), where you can buy multiple
+ items from the same listing at a fixed price, instead of bidding.
+ On some sites, the Buy It Now option remains available for Dutch
+ auctions even after there are bids. See Item.BuyItNowAvailable.&lt;br&gt;
+ &lt;br&gt;
+ For fixed-price (FixedPriceItem) and Store Inventory listings
+ (StoresFixedPrice), see CurrentPrice or ConvertedCurrentPrice
+ instead.&lt;br&gt;
+ &lt;br&gt;
+ Only returned if an item was listed with Buy It Now.&lt;br&gt;
+ &lt;br&gt;
+ For active items, refresh this value every 24 hours to
+ pick up the current conversion rates (if this value has been converted).
+ </xs:documentation>
+ <xs:appinfo>
+ <SeeLink>
+ <Title>(GetSingleItem) Item.ListingType</Title>
+ <URL>GetSingleItem.html#Response.Item.ListingType</URL>
+ </SeeLink>
+ <SeeLink>
+ <Title>Item.BuyItNowAvailable</Title>
+ <URL>#Response.Item.BuyItNowAvailable</URL>
+ <!-- Intentionally starts with # -->
+ </SeeLink>
+ <SeeLink>
+ <Title>Item.BuyItNowPrice</Title>
+ <URL>#Response.Item.BuyItNowPrice</URL>
+ <!-- Intentionally starts with # -->
+ </SeeLink>
+ <SeeLink>
+ <Title>Item.ConvertedCurrentPrice</Title>
+ <URL>#Response.Item.ConvertedCurrentPrice</URL>
+ <!-- Intentionally starts with # -->
+ </SeeLink>
+ <SeeLink>
+ <Title>(eBay Help) Buying with Buy It Now</Title>
+ <URL>http://pages.ebay.com/help/buy/how-buy-bin.html</URL>
+ </SeeLink>
+ <SeeLink>
+ <Title>(eBay DE Hilfe) Kaufen mit Sofort-Kaufen</Title>
+ <URL>http://pages.ebay.de/help/buy/how-buy-bin.html</URL>
+ </SeeLink>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="EndTime" type="xs:dateTime" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Time stamp (in &lt;a href="types/simpleTypes.html#dateTime"&gt;GMT&lt;/a&gt;) when the listing is scheduled to end
+ or the actual end time if the item has ended.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetItemStatus</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="StartTime" type="xs:dateTime" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Time stamp (in &lt;a href="types/simpleTypes.html#dateTime"&gt;GMT&lt;/a&gt;) that
+ eBay recorded as the moment that the listing was made available.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ViewItemURLForNaturalSearch" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The URL to view this listing on eBay.
+ This URL is optimized to support natural search.
+ That is, this URL is designed to make items on eBay easier to find via
+ popular Internet search engines.
+ For example, this URL specifies the item title, and it is
+ optimized for natural search: "_W0QQ" is like "?" (question mark),
+ "QQ" is like "&amp;" (ampersand),
+ and "Z" is like "=" (equals sign).
+ You shouldn't modify the query syntax in your application. For example,
+ eBay won't recognize the URL if you change QQ to ?.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ListingType" type="ns:ListingTypeCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The format of the listing, such as online auction, fixed price,
+ or advertisement format.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ <AllValuesExcept>Auction, Half</AllValuesExcept>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ <AllValuesExcept>Auction, Half</AllValuesExcept>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Always</Returned>
+ <AllValuesExcept>Auction, Half</AllValuesExcept>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ <AllValuesExcept>Auction, Half</AllValuesExcept>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Location" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Physical location of the item, as specified by the seller.
+ (This gives a general indication of where the item will be
+ shipped or delivered from.)
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PaymentMethods" type="ns:BuyerPaymentMethodCodeType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Identifies the payment method (such as PayPal) the seller
+ will accept when the buyer pays for the item. &lt;br&gt;
+ &lt;br&gt;
+ &lt;span class="tablenote"&gt;&lt;b&gt;Note:&lt;/b&gt;
+ If the seller only accepts PayPal, the buyer can still pay
+ with a credit card. PayPal supports major credit cards.&lt;/span&gt; &lt;br&gt;
+ &lt;br&gt;
+ Payment methods are not applicable to eBay Real Estate advertisement
+ listings, or other Classified Ad format listings.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <AllValuesExcept>Escrow, PrePayDelivery, CODPrePayDelivery, PostalTransfer</AllValuesExcept>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <AllValuesExcept>Escrow, PrePayDelivery, CODPrePayDelivery, PostalTransfer</AllValuesExcept>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="GalleryURL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ URL for a picture used as the Gallery thumbnail, if any.
+ The image uses one of the following graphics formats:
+ JPEG, BMP, TIF, or GIF.
+ Only returned if the seller chose to show a gallery image.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PictureURL" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Contains the URL for an image associated with the item, if any.
+ Only returned if the seller chose to include at least one picture
+ in the listing. (This doesn't return URLs of pictures that the
+ seller specified via HTML IMG tags in Description.)&lt;br&gt;
+ &lt;br&gt;
+ Items listed the main eBay site can have a maximum of 12 picture URLs
+ hosted by eBay Picture Services or a maximum of 6 picture URLs hosted by
+ a third party (such as the seller or a photo site).
+ On the US eBay Motors site (for all vehicle listings), and on the
+ eBay Canada Motors site, a listing can have up to 24 picture URLs.&lt;br&gt;
+ &lt;br&gt;
+ eBay uses the seller's first picture at the top of the listing's
+ View Item page.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>150</MaxLength>
+ <MaxOccurs>24</MaxOccurs>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PostalCode" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Postal code indicating the physical location of the item,
+ as specified by the seller. (This gives a general indication of where
+ the item will be shipped or delivered from.)
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PrimaryCategoryID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Numeric ID of the first (or only) category in which the item is listed.
+ (Listings can appear in more than one category.)&lt;br&gt;
+ &lt;br&gt;
+ &lt;span class="tablenote"&gt;&lt;b&gt;Note:&lt;/b&gt;
+ Currently, GetSingleItem does not return a listing's
+ secondary category, if any.&lt;/span&gt;
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PrimaryCategoryName" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Display name of the first (or only) category in which the item is
+ listed. This is a fully qualified category breadcrumb
+ (e.g., Computers &amp; Networking:Laptops, Notebooks).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Quantity" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The number of items the seller is offering in the listing.
+ (Subtract Item.QuantitySold from this value to calculate the number of
+ items currently available for sale.)&lt;br&gt;
+ &lt;br&gt;
+ If an online auction (with competitive bidding) has a Quantity of 1,
+ it's a &lt;i&gt;Chinese auction&lt;/i&gt;.
+ If Quantity is greater than 1,it's a &lt;i&gt;Dutch auction&lt;/i&gt;.&lt;br&gt;
+ &lt;br&gt;
+ Basic fixed-price and Store Inventory listings can have a
+ Quantity of 1 or more.&lt;br&gt;
+ &lt;br&gt;
+ The listing's current or Buy It Now price is the price of
+ 1 item in the listing.&lt;br&gt;
+ &lt;br&gt;
+ &lt;span class="tablenote"&gt;&lt;b&gt;Note:&lt;/b&gt;
+ A seller can also offer multiple items for sale with a single
+ price for all the items. For example, instead of listing 10 lightbulbs
+ for US 2.00 each, they might list 10 lightbulbs for USD 20.00 (where
+ you have to buy all 10). This is called a "lot".
+ If the listing includes a lot (or multiple lots), Quantity does not
+ specify the lot size; it only reflects how many lots are being sold.
+ For example, if the listing includes 5 lots of 10 lightbulbs each,
+ Quantity would be 5. (GetSingleItem does not return information about
+ lot sizes.)&lt;/span&gt;
+ </xs:documentation>
+ <xs:appinfo>
+ <SeeLink>
+ <Title>Item.ListingType</Title>
+ <URL>#Response.Item.ListingType</URL>
+ </SeeLink>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Seller" type="ns:SimpleUserType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Container for information about this listing's seller.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: SellerInfo</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="BidCount" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The number of bids that have been placed on the item.&lt;br&gt;
+ &lt;br&gt;
+ On most sites, once a Chinese auction has bids, the listing is no longer
+ eligible for Buy It Now. (This is not necessarily true
+ for Dutch auctions. See Item.BuyItNowAvailable for Dutch auctions.)
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetItemStatus</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ConvertedCurrentPrice" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The listing's current price, converted to the currency
+ of the site specified in the request.
+ If the item is a multi-quantity listing, this is the price of one
+ item.&lt;br&gt;
+ &lt;br&gt;
+ Price fields are returned
+ as doubles, not necessarily in the usual monetary amount format of the
+ site. For example, a US Dollar value might be returned as
+ 3.879938 instead of 3.88.&lt;br&gt;
+ &lt;br&gt;
+ For competitive-bidding listings (Chinese and Dutch auctions),
+ this is the current minimum bid price (if the listing has no bids) or
+ the current high bid (if the listing has bids).
+ (Compare to BuyItNowPrice).&lt;br&gt;
+ &lt;br&gt;
+ For Basic Fixed-Price (FixedPriceItem), Store Inventory
+ (StoresFixedPrice), and Ad format (AdType) listings, this is the
+ current fixed price.&lt;br&gt;
+ &lt;br&gt;
+ For active items, refresh this value every 24 hours to
+ pick up the current conversion rates (if this value has been converted).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <CallName>GetItemStatus</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <Returned>Conditionally</Returned>
+ <SeeLink>
+ <Title>(GetSingleItem) Item.CurrentPrice</Title>
+ <URL>GetSingleItem.html#Response.Item.CurrentPrice</URL>
+ </SeeLink>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ <SeeLink>
+ <Title>(GetSingleItem) Item.CurrentPrice</Title>
+ <URL>GetSingleItem.html#Response.Item.CurrentPrice</URL>
+ </SeeLink>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetItemStatus</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CurrentPrice" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The current price of the item, in the currency of the site on which
+ the item was listed. That is, CurrentPrice is in the original listing
+ currency. If the item is a multi-quantity listing,
+ this is the price of one item.&lt;br&gt;
+ &lt;br&gt;
+ For competitive-bidding listings (Chinese and Dutch auctions),
+ this is the current minimum bid price (if the listing has no bids) or
+ the current high bid (if the listing has bids).
+ (Compare to BuyItNowPrice).&lt;br&gt;
+ &lt;br&gt;
+ For Basic Fixed-Price (FixedPriceItem), Store Inventory
+ (StoresFixedPrice), and Ad format (AdType) listings, this is the
+ current fixed price.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ <SeeLink>
+ <Title>(GetSingleItem) Item.ConvertedCurrentPrice</Title>
+ <URL>GetSingleItem.html#Response.Item.ConvertedCurrentPrice</URL>
+ </SeeLink>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="HighBidder" type="ns:SimpleUserType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ For single-item (Quantity = 1) auction listings (Chinese type) that have
+ ended and have a winning bidder, indicates the user who is the current
+ high bidder.&lt;br&gt;
+ &lt;br&gt;
+ For single-item basic fixed price (FixedPriceItem) or Store Inventory
+ (StoresFixedPrice) listings that have ended, indicates the user who
+ purchased the item. &lt;br&gt;
+ &lt;br&gt;
+ Not returned for auctions that have received no bids; fixed price and
+ Store Inventory listings that are still active; or any multi-item
+ (Quantity &gt; 1) listings (Dutch, FixedPriceItem, StoresFixedPrice).
+ </xs:documentation>
+ <xs:appinfo>
+ <SeeLink>
+ <Title>Item.Quantity</Title>
+ <URL>#Response.Item.Quantity</URL>
+ </SeeLink>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetItemStatus</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ListingStatus" type="ns:ListingStatusCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies a listing's status in eBay's processing workflow.
+ If an item's EndTime is in the past, but no details about the
+ buyer or high bidder are shown (and the user is not anonymous),
+ use this listing status information to determine whether eBay has
+ finished processing the listing.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetItemStatus</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="QuantitySold" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Number of items purchased so far from this listing.
+ (Subtract this value from Item.Quantity to calculate the number of
+ items currently available for sale.)
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ReserveMet" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates whether any bids on this item are greater than the seller's
+ reserve price for the listing (if any).&lt;br&gt;
+ &lt;br&gt;
+ A reserve is the lowest price at which the seller is willing to sell
+ the item. The reserve price is higher than the listing's opening bid
+ (minimum bid) and lower than the Buy It Now price, if any.
+ (The reserve price is only known to the seller.)
+ Some sellers don't set a reserve at all. If a listing does have
+ a reserve price, the highest bidder will only win
+ the item if their bid is also above that price.&lt;br&gt;
+ &lt;br&gt;
+ Only returned for online auctions that have
+ a reserve price. (Fixed price, Store Inventory, and classified ad
+ listings don't have reserve prices.)
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetItemStatus</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShipToLocations" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ An international location or region to which the seller is willing
+ to ship this item. &lt;br&gt;
+ &lt;br&gt;
+ &lt;b&gt;Applicable values&lt;/b&gt;:
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; Americas&lt;/p&gt;
+ &lt;p class="edef"&gt;(North, South, or Latin America)&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; Asia&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; Caribbean&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; Europe&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; EuropeanUnion&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; LatinAmerica&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; MiddleEast&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; NorthAmerica&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; Oceania&lt;/p&gt;
+ &lt;p class="edef"&gt;(Pacific region other than Asia)&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; SouthAmerica&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; WillNotShip&lt;/p&gt;
+ &lt;p class="edef"&gt;(No shipping, buyer must pick up the item)&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; Worldwide&lt;/p&gt;
+ &lt;p class="edef"&gt;(Seller will ship worldwide)&lt;/p&gt;
+ &lt;p class="ename"&gt;&amp;bull;&amp;nbsp;&amp;nbsp; 2-letter country identifier&lt;/p&gt;
+ &lt;p class="edef"&gt;(See CountryCodeType for values)&lt;/p&gt;
+ </xs:documentation>
+ <xs:appinfo>
+ <SeeLink>
+ <Title>CountryCodeType</Title>
+ <URL>types/CountryCodeType.html</URL>
+ </SeeLink>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Site" type="ns:SiteCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The name of the eBay site on which the item was originally listed.
+ For example, if the item is listed on the eBay US site,
+ the value would be US. If it's listed on the eBay Germany site,
+ the value would be Germany. &lt;br&gt;
+ &lt;br&gt;
+ The listing's original site can affect the values of converted
+ (localized) prices (when your request specifies a site
+ that is different from the listing's site).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TimeLeft" type="xs:duration" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Time left before the listing ends.
+ The duration is represented in the ISO 8601 duration format (PnYnMnDTnHnMnS).
+ For ended listings, the time left is PT0S (zero seconds).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetItemStatus</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Title" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Name of the item as it appears in the listing or in search and
+ browse results.&lt;br&gt;
+ &lt;br&gt;
+ For US eBay Motors cars, trucks, and motorcycles, this value shows the
+ vehicle Make and Model instead of the seller's own title.
+ (For the seller's title, look for Subtitle in
+ Item.ItemSpecifics.NameValueList.Name in
+ GetSingleItem, and then use the corresponding value in
+ Item.ItemSpecifics.NameValueList.Value.)
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetMultipleItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: none, Description, ItemSpecifics, ShippingCosts, Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingCostSummary" type="ns:ShippingCostSummaryType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Contains basic shipping-related costs for the item. If Item.Quantity
+ is greater than 1, this is the shipping cost for one item.
+ If the seller offers a choice of more than one shipping service
+ (such as UPS Ground and USPS Media mail), this is the cost of the
+ "first" shipping option (usually the lowest cost option).&lt;br&gt;
+ &lt;br&gt;
+ If a listing has shipping costs, use GetShippingCosts if you want to get
+ more details about the services and costs that the seller is offering.
+ </xs:documentation>
+ <xs:appinfo>
+ <SeeLink>
+ <Title>GetShippingCosts</Title>
+ <URL>GetShippingCosts.html</URL>
+ </SeeLink>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: ShippingCosts</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItems</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: none, Details, SearchDetails, SellerInfo, ItemSpecifics, ExpansionItemCount, CategoryHistogram</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items, Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ItemSpecifics" type="ns:NameValueListArrayType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Category-specific fields that the seller added to describe
+ the listing. The names of these fields are different for items
+ in different categories, so they're returned in a generic
+ name/value structure. The field names are usually very well known
+ within the category.&lt;br&gt;
+ &lt;br&gt;
+ For example, a book's item specifics might include a field like
+ Publication Year=2007 (where Publication Year is returned in Name,
+ and 2007 is returned in Value), and a field like Format=Hardcover.
+ But a car's item specifics would be different from a book's, with
+ fields like Make=Toyota and Model=Prius.
+ And a ticket's item specifics would be different from those of
+ books and cars, with fields like EventType=Concerts and
+ Venue=The Fillmore. &lt;br&gt;
+ &lt;br&gt;
+ Some of the most common uses for item specifics are the item condition
+ and return policy. The return policy can include multiple
+ name/value fields (to explain how soon the item must be returned, how soon the refund will be given, and so forth).&lt;br&gt;
+ &lt;br&gt;
+ Only contains data if the listing includes Item Specifics.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: ItemSpecifics</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: ItemSpecifics</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="HitCount" type="xs:long" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The number of times the listing's View Item page has been viewed (as
+ determined by eBay). Only returned if the seller has chosen
+ to include a hit counter in the listing, and if the seller has
+ also chosen to make the listing's hit count publicly visible.
+ This field is retrieved asynchronously. If you believe the item has a
+ publicly visible hit count, but this field is not returned,
+ retry the call.&lt;br&gt;
+ &lt;br&gt;
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Subtitle" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Subtitle of the item. Only returned if the seller included a
+ subtitle for the listing.&lt;br&gt;
+ &lt;br&gt;
+ For US eBay Motors passenger vehicle, motorcycle, and "other vehicle"
+ categories or listings in CA eBay Motors passenger vehicle and
+ motorcycle categories, see the ItemSpecifics node for the subtitle
+ instead.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PrimaryCategoryIDPath" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The fully qualified ID breadcrumb (path) of the first category.
+ For example, if the primary category ID is 45678, and its parent
+ category's ID is 123, the breadcrumb (path) would be 123:45678.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SecondaryCategoryID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ ID of the second category in which the item is listed.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SecondaryCategoryName" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Name of the second category in which the item is listed.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SecondaryCategoryIDPath" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The fully qualified ID breadcrumb (path) of the second category.
+ For example, if the secondary category ID is 45678, and its parent
+ category's ID is 123, the breadcrumb (path) would be 123:45678.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Charity" type="ns:CharityType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Identifier for a Giving Works listing and the benefiting nonprofit charity organization.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: SearchDetails</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DigitalDeliveryRequirements" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ For a digitally delivered item, the requirements for using the item.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: SearchDetails</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DigitalDeliveryMethod" type="ns:DigitalDeliveryMethodCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ For a digitally delivered item, the digital-download method.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: SearchDetails</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="GermanMotorsSearchable" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The item is featured in eBay search results on the mobile.de partner site. Applicable to eBay Germany.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: SearchDetails</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="GetItFast" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A Get It Fast listing.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: SearchDetails</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Gift" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ If true, a generic gift icon displays next the listing's title in search and browse pages.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: SearchDetails</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PictureExists" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the item has a picture.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: SearchDetails</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RecentListing" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the item is no more than one day old.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: SearchDetails</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Storefront" type="ns:StorefrontType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the item is a storefront listing.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: SellerInfo</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DistanceFromBuyer" type="ns:DistanceType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The distance of the item from the buyer.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: SearchDetails</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Country" type="ns:CountryCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Two-letter ISO 3166 country code. Used with the Location field to indicate
+ the city and country where the item is located.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="WatchCount" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Watch count for the item.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindPopularItems</CallName>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="HalfItemCondition" type="ns:HalfItemConditionCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Half condition codes like brand new etc
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SellerComments" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Seller notes while listing items.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ReturnPolicy" type="ns:ReturnPolicyType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ If a seller specified return policy details, then this container has fields
+ with those details.
+ The fields that can be returned in this container vary by site.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MinimumToBid" type="ns:AmountType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Smallest amount the next bid on the item can be. Returns same value as
+ Item.StartPrice (if no bids have yet been placed) or CurrentPrice plus
+ BidIncrement (if at least one bid has been placed). Only applicable to
+ Chinese and Dutch auction listings. Returns null for basic Fixed Price
+ (FixedPriceItem),Store Inventory (StoresFixedPrice), and Ad type listings.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>4000</MaxLength>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ProductID" type="ns:ProductIDType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A prototype description of a well-known type of item, such as a popular book.
+ &lt;br&gt;
+ &lt;br&gt;
+ When returned for GetSingleItem, is always of type Reference, and serves as a global reference ID for an eBay catalog product.
+ &lt;br&gt;
+ &lt;br&gt;
+ When used as input, retrieves product details for one specific product.
+ Specify the ID as a string, and use the type attribute to
+ indicate the nature of the ID you are specifying.
+ &lt;br&gt;
+ &lt;br&gt;
+ The request requires either QueryKeywords or
+ ProductID, but these fields cannot be used together.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>4000</MaxLength>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/SimpleUserType.xsd #####
+
+-->
+ <xs:complexType name="SimpleUserType">
+ <xs:annotation>
+ <xs:documentation>
+ Type to contain the data for one eBay user. Depending on the context, the user
+ might be the seller or the buyer in a transaction, or the bidder or winning bidder
+ in a listing. An object of this type is returned by a number of calls, including
+ the GetUser call.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="UserID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The user's eBay user ID. A unique value.
+ If a bidder's user information is made
+ anonymous, the real ID value will be
+ replaced with the value "Bidder X" where X is a number
+ indicating the order of that user's first bid. For example,
+ if the user was the third bidder, UserID = Bidder 3.
+ &lt;br&gt;&lt;br&gt;
+ Note that the anonymous bidder ID stays the same for a given
+ auction, but is different for different auctions.
+ For example, a bidder who is the third and then the seventh
+ bidder in an auction will be listed for both bids as "Bidder
+ 3". However, if that same bidder is the first bidder on a
+ different auction, the bidder will be listed for that
+ auction as "Bidder 1", not "Bidder 3".
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: none, Details, FeedbackDetails, FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: SellerInfo</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FeedbackPrivate" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates whether the user has chosen to make their feedback score and
+ feedback details private (hidden from other users). Note that the percentage
+ of positive feedback can still be returned, even if other feedback details are
+ private. If a bidder's user information is made
+ anonymous, the value -99 is returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: none, Details, FeedbackDetails, FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FeedbackRatingStar" type="ns:FeedbackRatingStarCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Visual indicator of user's feedback score.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Always</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: none, Details, FeedbackDetails, FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: SellerInfo</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FeedbackScore" type="xs:int" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The aggregate feedback score of a user. A user's feedback score is the net
+ positive feedback minus the net negative feedback left for the user. Feedback
+ scores are a quantitative expression of the desirability of dealing with a
+ user as a buyer or a seller in transactions. Each transaction can result in
+ one feedback entry for a given user. (The buyer can leave feedback for the
+ seller, and the seller can leave feedback for the buyer.) That one feedback
+ can be positive, negative, or neutral.
+ The aggregate feedback score of a user represents that user's overall
+ feedback score (referred to as a
+ "feedback rating" on the eBay site). If the user has chosen to make their
+ feedback private, then FeedbackScore is not returned and FeedbackPrivate is
+ returned with a value of true.&lt;br&gt;
+ &lt;br&gt;
+ If a bidder's user information is made
+ anonymous, the value -99 is returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: none, Details, FeedbackDetails, FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="UserAnonymized" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates whether eBay has made this user's information anonymous.
+ This occurs when the listing prices (reserve, current, or Buy It Now)
+ reach or exceed a certain amount (such as $200 USD at the time of this
+ writing).
+ &lt;br&gt;
+ &lt;br&gt;
+ If true, certain other fields about this user are not returned, or their
+ values include no identifying characteristics. (The rules are explained
+ in the description of each field.)
+ If false, all user-specific fields contain the user's actual data.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Returned>Conditionally</Returned>
+ <Context>HighBidder</Context>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>GetItemStatus</CallName>
+ <Returned>Conditionally</Returned>
+ <Context>HighBidder</Context>
+ <Details>IncludeSelector: Details</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NewUser" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ If true, identifies a new user who has been a registered eBay user for 30 days
+ or less. Always false after the user has been registered for more than 30
+ days. Does not indicate an ID change.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: none, Details, FeedbackDetails, FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RegistrationDate" type="xs:dateTime" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The date the specified user originally registered with eBay.
+ If a bidder's user information is made
+ anonymous, the value -99 is returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: none, Details, FeedbackDetails, FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RegistrationSite" type="ns:SiteCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The eBay site with which the user is registered.
+ If a bidder's user information is made
+ anonymous, the value -99 is returned.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: none, Details, FeedbackDetails, FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Status" type="ns:UserStatusCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The registration-related status of the user.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: none, Details, FeedbackDetails, FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SellerBusinessType" type="ns:SellerBusinessCodeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Type of seller account.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: none, Details, FeedbackDetails, FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="StoreURL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The URL of the seller's eBay Store page.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: Details</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="StoreName" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The name of the seller's eBay Store.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: Details</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SellerItemsURL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ URL for seller's other items.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: none, Details, FeedbackDetails, FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="AboutMeURL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A link to the user's AboutMe page.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: none, Details, FeedbackDetails, FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MyWorldURL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ A link to the URL of the user's MyWorld page.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: Details</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MyWorldSmallImage" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Location of a user's image on the MyWorld page (small version).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: Details</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MyWorldLargeImage" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Location of a user's image on the MyWorld page (large version).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: Details</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ReviewsAndGuidesURL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The URL of reviews and guides.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: Details</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FeedbackDetailsURL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The URL of feedback details.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetUserProfile</CallName>
+ <Details>IncludeSelector: none, Details, FeedbackDetails, FeedbackHistory</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PositiveFeedbackPercent" type="xs:float" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The percentage value of a user's positive feedback.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetSingleItem</CallName>
+ <Context>Seller</Context>
+ <Details>IncludeSelector: Details</Details>
+ <Returned>Always</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/SiteCodeList.xsd #####
+
+-->
+ <xs:simpleType name="SiteCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ eBay sites (by the country in which each resides) on
+which a user is registered and on which items can be listed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="US">
+ <xs:annotation>
+ <xs:documentation>
+ USA, site ID 0, abbreviation US, currency USD.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Canada">
+ <xs:annotation>
+ <xs:documentation>
+ Canada, site ID 2, abbreviation CA, currencies CAD and USD.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UK">
+ <xs:annotation>
+ <xs:documentation>
+ United Kingdom, site ID 3, abbreviation UK, currency GBP.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Australia">
+ <xs:annotation>
+ <xs:documentation>
+ Australia, site ID 15, abbreviation AU, currency AUD.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Austria">
+ <xs:annotation>
+ <xs:documentation>
+ Austria, site ID 16, abbreviation AT, currency EUR.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Belgium_French">
+ <xs:annotation>
+ <xs:documentation>
+ Belgium (French), site ID 23, abbreviation BEFR, currency EUR.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="France">
+ <xs:annotation>
+ <xs:documentation>
+ France, site ID 71, abbreviation FR, currency EUR.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Germany">
+ <xs:annotation>
+ <xs:documentation>
+ Germany, site ID 77, abbreviation DE, currency EUR.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Italy">
+ <xs:annotation>
+ <xs:documentation>
+ Italy, site ID 101, abbreviation IT, currency EUR.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Belgium_Dutch">
+ <xs:annotation>
+ <xs:documentation>
+ Belgium (Dutch), site ID 123, abbreviation BENL, currency EUR.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Netherlands">
+ <xs:annotation>
+ <xs:documentation>
+ Netherlands, site ID 146, abbreviation NL, currency EUR.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Spain">
+ <xs:annotation>
+ <xs:documentation>
+ Spain, site ID 186, abbreviation ES, currency EUR.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Switzerland">
+ <xs:annotation>
+ <xs:documentation>
+ Switzerland, site ID 193, abbreviation CH, currency CHF.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Taiwan">
+ <xs:annotation>
+ <xs:documentation>
+ Taiwan, site ID 196, abbreviation TW, currency TWD.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="eBayMotors">
+ <xs:annotation>
+ <xs:documentation>
+ eBay Motors, site ID 100, currency USD.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="HongKong">
+ <xs:annotation>
+ <xs:documentation>
+ Hong Kong, site ID 201, abbreviation HK, currency HKD.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Singapore">
+ <xs:annotation>
+ <xs:documentation>
+ Singapore, site ID 216, abbreviation SG, currency SGD.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="India">
+ <xs:annotation>
+ <xs:documentation>
+ India, site ID 203, abbreviation IN, currency INR.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="China">
+ <xs:annotation>
+ <xs:documentation>
+ China, site ID 223, abbreviation CN, currency CNY.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Ireland">
+ <xs:annotation>
+ <xs:documentation>
+ Ireland, site ID 205, abbreviation IE, currency EUR.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Malaysia">
+ <xs:annotation>
+ <xs:documentation>
+ Malaysia, site ID 207, abbreviation MY, currency MYR.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Philippines">
+ <xs:annotation>
+ <xs:documentation>
+ Philippines, site ID 211, abbreviation PH, currency PHP.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Poland">
+ <xs:annotation>
+ <xs:documentation>
+ Poland, site ID 212, abbreviation PL, currency PLN.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Sweden">
+ <xs:annotation>
+ <xs:documentation>
+ Sweden, site ID 218, abbreviation SE, currency SEK.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ Placeholder value. See
+ &lt;a href="types/simpleTypes.html#token"&gt;token&lt;/a&gt;.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CanadaFrench">
+ <xs:annotation>
+ <xs:documentation>
+ CanadaFrench, site ID 210, abbreviation CAFR, currencies CAD and USD.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/SortOrderCodeList.xsd #####
+
+-->
+ <xs:simpleType name="SortOrderCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates the order of sorting.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Ascending">
+ <xs:annotation>
+ <xs:documentation>
+ Sorts results in ascending (low to high) order.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Descending">
+ <xs:annotation>
+ <xs:documentation>
+ Sorts results in descending (high to low) order.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ Placeholder value. See
+ &lt;a href="types/simpleTypes.html#token"&gt;token&lt;/a&gt;.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/StoreSearchCodeList.xsd #####
+
+-->
+ <xs:simpleType name="StoreSearchCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ Identifies the StoreSearch codes (e.g., for FindItemsAdvanced requests).
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="AllItemsInTheStore">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Within a single store for all items (specify a store in
+ the appropriate input field).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="AuctionItemsInTheStore">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Within a single store for auction items (specify a store in
+ the appropriate input field).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="BuyItNowItemsInTheStore">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Within a single store for basic fixed price items, Store Inventory format items,
+ and auction items with Buy It Now (specify a store in the appropriate input field).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="BuyItNowItemsInAllStores">
+ <xs:annotation>
+ <xs:documentation>
+ (in) Across all stores for basic fixed price items, Store Inventory format items,
+ and auction items with Buy It Now.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/StorefrontType.xsd #####
+
+-->
+ <xs:complexType name="StorefrontType">
+ <xs:annotation>
+ <xs:documentation>
+ Contains information related to the item in the context of
+ a seller's eBay Store. Applicable for auction format, Basic Fixed Price,
+ and Store Inventory format items listed by eBay Stores sellers.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="StoreURL" type="xs:anyURI" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The URL of the seller's eBay Store page. FindProducts only returned
+ a default URL at the time of this writing. FindHalfProducts returns the URL
+ of the seller's Half.com Shop page.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: SellerInfo</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="StoreName" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The name of the seller's eBay Store. FindProducts returns an empty
+ value for all items at the time of this writing. FindHalfProducts returns the
+ name of seller's Half.com Shop, which is the SellerID.
+ </xs:documentation>
+ <xs:appinfo>
+ <MaxLength>200</MaxLength>
+ <CallInfo>
+ <CallName>FindItemsAdvanced</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: SellerInfo</Details>
+ </CallInfo>
+ <CallInfo>
+ <CallName>FindHalfProducts</CallName>
+ <Returned>Conditionally</Returned>
+ <Details>IncludeSelector: Items</Details>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/TaxJurisdictionType.xsd #####
+
+-->
+ <xs:complexType name="TaxJurisdictionType">
+ <xs:annotation>
+ <xs:documentation>
+ Tax-related details for a region or jurisdiction.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="JurisdictionID" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Representative identifier for the jurisdiction. Typically an
+ abbreviation (e.g. CA for California).
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SalesTaxPercent" type="xs:float" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ The tax percent to apply for a listing shipped to this
+ jurisdiction. The value passed in is stored with a precision of
+ 3 digits after the decimal point (##.###).
+ GetTaxTable: this tag has no value if the user's tax table has not been set.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ShippingIncludedInTax" type="xs:boolean" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Whether shipping costs are to be part of the base amount that is taxed.
+ GetTaxTable: This tag is empty if the user did not previously provide information.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/TaxTableType.xsd #####
+
+-->
+ <xs:complexType name="TaxTableType">
+ <xs:annotation>
+ <xs:documentation>
+ Sales tax details for zero or more jurisdictions (states,
+ provinces, etc).
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="TaxJurisdiction" type="ns:TaxJurisdictionType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Sales tax details for zero or more jurisdictions (states, provinces, etc).
+ Information is only returned for the jurisdictions for which the user provided
+ tax information. ShippingIncludedInTax and SalesTaxPercent are returned but
+ are empty.
+ </xs:documentation>
+ <xs:appinfo>
+ <CallInfo>
+ <CallName>GetShippingCosts</CallName>
+ <Returned>Conditionally</Returned>
+ </CallInfo>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+<!--
+
+##### from file ../Shopping/xsd/TradingRoleCodeList.xsd #####
+
+-->
+ <xs:simpleType name="TradingRoleCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ A means for identifying a person's role in doing business on eBay.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Buyer">
+ <xs:annotation>
+ <xs:documentation>
+ (in/out) Acting as buyer.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Seller">
+ <xs:annotation>
+ <xs:documentation>
+ (in/out) Acting as seller.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for future use
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/UserIDType.xsd #####
+
+-->
+ <xs:simpleType name="UserIDType">
+ <xs:annotation>
+ <xs:documentation>
+ An eBay ID that uniquely identifies a user. For GetAllBidders,
+ if the user chose to be anonymized, a generic ID is returned.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+<!--
+
+##### from file ../Shopping/xsd/UserStatusCodeList.xsd #####
+
+-->
+ <xs:simpleType name="UserStatusCodeType">
+ <xs:annotation>
+ <xs:documentation>
+ These codes indicate the current state or status of a an eBay
+ user account.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Unknown">
+ <xs:annotation>
+ <xs:documentation>
+ (out) User properties have never been set; this value should
+ seldom, if ever, be returned and typically represents a
+ problem
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Suspended">
+ <xs:annotation>
+ <xs:documentation>
+ (out) User has been suspended from selling and buying, such as
+ for violations of eBay terms or agreement
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Confirmed">
+ <xs:annotation>
+ <xs:documentation>
+ (out) User has completed online registration and has properly
+ responded to confirmation email; most users should fall
+ in this category
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Unconfirmed">
+ <xs:annotation>
+ <xs:documentation>
+ (out) User has completed online registration, but has either
+ not responded to confirmation email or has not yet been
+ sent the confirmation email
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Ghost">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Registered users of AuctionWeb (pre-eBay) who never
+ re-registered on eBay
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="InMaintenance">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Temporary user record state indicating the record is in
+ the process of being changed by eBay; query user
+ information again to get new status
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Deleted">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Records for the specified user have been deleted
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CreditCardVerify">
+ <xs:annotation>
+ <xs:documentation>
+ (out) User has completed registration and confirmation, but is
+ pending a verification of credit card information
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="AccountOnHold">
+ <xs:annotation>
+ <xs:documentation>
+ (out) User's account is on hold, such as for non-payment of
+ amounts due eBay; user cannot sell or buy items
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Merged">
+ <xs:annotation>
+ <xs:documentation>
+ (out) User record has been merged with another account record
+ for the same user
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="RegistrationCodeMailOut">
+ <xs:annotation>
+ <xs:documentation>
+ (out) User has completed online registration and has been sent
+ the confirmation email, but has not yet responded to the
+ confirmation email
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="TermPending">
+ <xs:annotation>
+ <xs:documentation>
+ (out) User has been scheduled for account closure (typically
+ when a user has requested to have their account closed)
+ A user in this state should not be considered an active
+ user
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UnconfirmedHalfOptIn">
+ <xs:annotation>
+ <xs:documentation>
+ (out) User has completed the registration for Half.com and opted
+ to automatically also be registered with eBay, but the
+ registration confirmation is still pending
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CreditCardVerifyHalfOptIn">
+ <xs:annotation>
+ <xs:documentation>
+ (out) User has completed the registration for Half.com and opted
+ to automatically also be registered with eBay, but the
+ verification of credit card information is still pending
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UnconfirmedExpress">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Half.com User; user has completed the registration for Half.com
+ and opted to automatically also be registered with eBay, but the
+ registration confirmation is still pending
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CustomCode">
+ <xs:annotation>
+ <xs:documentation>
+ (out) Reserved for internal or future use
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+
+
+ </xs:schema>
+ </wsdl:types>
+
+ <wsdl:message name="FindHalfProductsResponse">
+ <wsdl:part name="FindHalfProductsResponse" element="ns:FindHalfProductsResponse"/>
+ </wsdl:message>
+ <wsdl:message name="FindHalfProductsRequest">
+ <wsdl:part name="FindHalfProductsRequest" element="ns:FindHalfProductsRequest"/>
+ </wsdl:message>
+ <wsdl:message name="FindItemsResponse">
+ <wsdl:part name="FindItemsResponse" element="ns:FindItemsResponse"/>
+ </wsdl:message>
+ <wsdl:message name="FindItemsRequest">
+ <wsdl:part name="FindItemsRequest" element="ns:FindItemsRequest"/>
+ </wsdl:message>
+ <wsdl:message name="FindItemsAdvancedResponse">
+ <wsdl:part name="FindItemsAdvancedResponse" element="ns:FindItemsAdvancedResponse"/>
+ </wsdl:message>
+ <wsdl:message name="FindItemsAdvancedRequest">
+ <wsdl:part name="FindItemsAdvancedRequest" element="ns:FindItemsAdvancedRequest"/>
+ </wsdl:message>
+ <wsdl:message name="FindPopularItemsResponse">
+ <wsdl:part name="FindPopularItemsResponse" element="ns:FindPopularItemsResponse"/>
+ </wsdl:message>
+ <wsdl:message name="FindPopularItemsRequest">
+ <wsdl:part name="FindPopularItemsRequest" element="ns:FindPopularItemsRequest"/>
+ </wsdl:message>
+ <wsdl:message name="FindPopularSearchesResponse">
+ <wsdl:part name="FindPopularSearchesResponse" element="ns:FindPopularSearchesResponse"/>
+ </wsdl:message>
+ <wsdl:message name="FindPopularSearchesRequest">
+ <wsdl:part name="FindPopularSearchesRequest" element="ns:FindPopularSearchesRequest"/>
+ </wsdl:message>
+ <wsdl:message name="FindProductsResponse">
+ <wsdl:part name="FindProductsResponse" element="ns:FindProductsResponse"/>
+ </wsdl:message>
+ <wsdl:message name="FindProductsRequest">
+ <wsdl:part name="FindProductsRequest" element="ns:FindProductsRequest"/>
+ </wsdl:message>
+ <wsdl:message name="FindReviewsAndGuidesResponse">
+ <wsdl:part name="FindReviewsAndGuidesResponse" element="ns:FindReviewsAndGuidesResponse"/>
+ </wsdl:message>
+ <wsdl:message name="FindReviewsAndGuidesRequest">
+ <wsdl:part name="FindReviewsAndGuidesRequest" element="ns:FindReviewsAndGuidesRequest"/>
+ </wsdl:message>
+ <wsdl:message name="GetCategoryInfoResponse">
+ <wsdl:part name="GetCategoryInfoResponse" element="ns:GetCategoryInfoResponse"/>
+ </wsdl:message>
+ <wsdl:message name="GetCategoryInfoRequest">
+ <wsdl:part name="GetCategoryInfoRequest" element="ns:GetCategoryInfoRequest"/>
+ </wsdl:message>
+ <wsdl:message name="GetItemStatusResponse">
+ <wsdl:part name="GetItemStatusResponse" element="ns:GetItemStatusResponse"/>
+ </wsdl:message>
+ <wsdl:message name="GetItemStatusRequest">
+ <wsdl:part name="GetItemStatusRequest" element="ns:GetItemStatusRequest"/>
+ </wsdl:message>
+ <wsdl:message name="GetMultipleItemsResponse">
+ <wsdl:part name="GetMultipleItemsResponse" element="ns:GetMultipleItemsResponse"/>
+ </wsdl:message>
+ <wsdl:message name="GetMultipleItemsRequest">
+ <wsdl:part name="GetMultipleItemsRequest" element="ns:GetMultipleItemsRequest"/>
+ </wsdl:message>
+ <wsdl:message name="GetShippingCostsResponse">
+ <wsdl:part name="GetShippingCostsResponse" element="ns:GetShippingCostsResponse"/>
+ </wsdl:message>
+ <wsdl:message name="GetShippingCostsRequest">
+ <wsdl:part name="GetShippingCostsRequest" element="ns:GetShippingCostsRequest"/>
+ </wsdl:message>
+ <wsdl:message name="GetSingleItemResponse">
+ <wsdl:part name="GetSingleItemResponse" element="ns:GetSingleItemResponse"/>
+ </wsdl:message>
+ <wsdl:message name="GetSingleItemRequest">
+ <wsdl:part name="GetSingleItemRequest" element="ns:GetSingleItemRequest"/>
+ </wsdl:message>
+ <wsdl:message name="GetUserProfileResponse">
+ <wsdl:part name="GetUserProfileResponse" element="ns:GetUserProfileResponse"/>
+ </wsdl:message>
+ <wsdl:message name="GetUserProfileRequest">
+ <wsdl:part name="GetUserProfileRequest" element="ns:GetUserProfileRequest"/>
+ </wsdl:message>
+ <wsdl:message name="GeteBayTimeResponse">
+ <wsdl:part name="GeteBayTimeResponse" element="ns:GeteBayTimeResponse"/>
+ </wsdl:message>
+ <wsdl:message name="GeteBayTimeRequest">
+ <wsdl:part name="GeteBayTimeRequest" element="ns:GeteBayTimeRequest"/>
+ </wsdl:message>
+ <wsdl:portType name="ShoppingInterface">
+
+ <wsdl:operation name="FindHalfProducts">
+ <wsdl:input message="ns:FindHalfProductsRequest"/>
+ <wsdl:output message="ns:FindHalfProductsResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="FindItems">
+ <wsdl:input message="ns:FindItemsRequest"/>
+ <wsdl:output message="ns:FindItemsResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="FindItemsAdvanced">
+ <wsdl:input message="ns:FindItemsAdvancedRequest"/>
+ <wsdl:output message="ns:FindItemsAdvancedResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="FindPopularItems">
+ <wsdl:input message="ns:FindPopularItemsRequest"/>
+ <wsdl:output message="ns:FindPopularItemsResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="FindPopularSearches">
+ <wsdl:input message="ns:FindPopularSearchesRequest"/>
+ <wsdl:output message="ns:FindPopularSearchesResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="FindProducts">
+ <wsdl:input message="ns:FindProductsRequest"/>
+ <wsdl:output message="ns:FindProductsResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="FindReviewsAndGuides">
+ <wsdl:input message="ns:FindReviewsAndGuidesRequest"/>
+ <wsdl:output message="ns:FindReviewsAndGuidesResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="GetCategoryInfo">
+ <wsdl:input message="ns:GetCategoryInfoRequest"/>
+ <wsdl:output message="ns:GetCategoryInfoResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="GetItemStatus">
+ <wsdl:input message="ns:GetItemStatusRequest"/>
+ <wsdl:output message="ns:GetItemStatusResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="GetMultipleItems">
+ <wsdl:input message="ns:GetMultipleItemsRequest"/>
+ <wsdl:output message="ns:GetMultipleItemsResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="GetShippingCosts">
+ <wsdl:input message="ns:GetShippingCostsRequest"/>
+ <wsdl:output message="ns:GetShippingCostsResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="GetSingleItem">
+ <wsdl:input message="ns:GetSingleItemRequest"/>
+ <wsdl:output message="ns:GetSingleItemResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="GetUserProfile">
+ <wsdl:input message="ns:GetUserProfileRequest"/>
+ <wsdl:output message="ns:GetUserProfileResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="GeteBayTime">
+ <wsdl:input message="ns:GeteBayTimeRequest"/>
+ <wsdl:output message="ns:GeteBayTimeResponse"/>
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="ShoppingBinding" type="ns:ShoppingInterface">
+ <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+ <wsdl:operation name="FindHalfProducts">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="FindItems">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="FindItemsAdvanced">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="FindPopularItems">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="FindPopularSearches">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="FindProducts">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="FindReviewsAndGuides">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="GetCategoryInfo">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="GetItemStatus">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="GetMultipleItems">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="GetShippingCosts">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="GetSingleItem">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="GetUserProfile">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="GeteBayTime">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+
+ <wsdl:service name="Shopping">
+ <wsdl:documentation>
+ <Version>535</Version>
+ </wsdl:documentation>
+ <wsdl:port binding="ns:ShoppingBinding" name="Shopping">
+ <wsdlsoap:address location="http://open.api.ebay.com/shopping"/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
+ \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/pom.xml b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/pom.xml
new file mode 100644
index 0000000000..5e30575949
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/pom.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-store-db</artifactId>
+ <name>Apache Tuscany SCA Store Tutorial Catalog Database</name>
+
+ <repositories>
+ <repository>
+ <id>apache.incubator</id>
+ <url>http://people.apache.org/repo/m2-incubating-repository</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tutorial-assets</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-sca-axis2</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.3.1.4</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.2</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <configuration>
+ <mainClass>launch.LaunchCatalog</mainClass>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>sql-maven-plugin</artifactId>
+ <version>1.3</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.3.1.4</version>
+ </dependency>
+ </dependencies>
+
+ <executions>
+ <execution>
+ <id>create-db</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
+ <url>jdbc:derby:target/store_db;create=true</url>
+ <autocommit>true</autocommit>
+ <onError>continue</onError>
+ <delimiter>;</delimiter>
+ <srcFiles>
+ <srcFile>${pom.basedir}/store.sql</srcFile>
+ </srcFiles>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+ </build>
+
+</project>
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/launch/LaunchCatalog.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/launch/LaunchCatalog.java
new file mode 100644
index 0000000000..c46845722c
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/launch/LaunchCatalog.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package launch;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+public class LaunchCatalog {
+ public static void main(String[] args) throws Exception {
+ System.out.println("Starting ...");
+ SCADomain scaDomain = SCADomain.newInstance("store-catalog-database.composite");
+ System.out.println("store-catalog-database.composite ready for big business !!!");
+ System.in.read();
+ System.out.println("Stopping ...");
+ scaDomain.close();
+ System.out.println();
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/services/Catalog.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/services/Catalog.java
new file mode 100644
index 0000000000..b45e5efccb
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/services/Catalog.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Catalog {
+ String[] get();
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/services/CatalogImpl.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/services/CatalogImpl.java
new file mode 100644
index 0000000000..f8149bbe8d
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/services/CatalogImpl.java
@@ -0,0 +1,120 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.oasisopen.sca.annotation.Property;
+import org.oasisopen.sca.annotation.Reference;
+
+public class CatalogImpl implements Catalog {
+ @Property
+ public String currencyCode = "USD";
+
+ @Reference
+ public CurrencyConverter currencyConverter;
+
+ private String currencySymbol;
+
+ public String[] get() {
+
+ String[] catalogArray = null;
+
+ String itemName;
+ float itemPrice;
+ String itemCurrencyCode;
+
+ Connection conn = null;
+ PreparedStatement pstmt = null;
+ ResultSet rs = null;
+
+ currencySymbol = currencyConverter.getCurrencySymbol(currencyCode);
+
+ try {
+ //initialize driver and register it with DriverManager
+ Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
+
+ conn = DriverManager.getConnection(
+ "jdbc:derby:target/store_db",
+ "",
+ "");
+
+ pstmt = conn.prepareStatement("select * from \"Catalog\"",
+ ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_READ_ONLY);
+
+ rs = pstmt.executeQuery();
+ rs.last();
+
+ catalogArray = new String[rs.getRow()];
+
+ do {
+ itemName = rs.getString(2);
+ itemPrice = rs.getFloat(4);
+ itemCurrencyCode = rs.getString(3);
+
+ catalogArray[rs.getRow()-1] = new String(itemName+" - "+
+ currencySymbol+" "+
+ currencyConverter.getConversion(itemCurrencyCode, currencyCode, itemPrice));
+
+ } while(rs.previous());
+
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }catch (ClassNotFoundException ex) {
+ ex.printStackTrace();
+ } finally {
+ cleanup(conn,pstmt,rs);
+ }
+
+ return catalogArray;
+ }
+
+ private void cleanup(Connection conn, PreparedStatement pstmt, ResultSet rs) {
+
+ if (rs!=null) {
+ try {
+ rs.close();
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ if (pstmt!=null) {
+ try {
+ pstmt.close();
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ if (conn!=null) {
+ try {
+ conn.close();
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/services/CurrencyConverter.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/services/CurrencyConverter.java
new file mode 100644
index 0000000000..c4b1800a3d
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/services/CurrencyConverter.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package services;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface CurrencyConverter {
+ public float getConversion(String fromCurrenycCode, String toCurrencyCode, float amount);
+
+ public String getCurrencySymbol(String currencyCode);
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/util/CreateDB.java b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/util/CreateDB.java
new file mode 100644
index 0000000000..a4dc2e67e6
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/java/util/CreateDB.java
@@ -0,0 +1,79 @@
+package util;
+
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+public class CreateDB {
+
+ public static void main(String[] args) {
+ System.out.println("Creating database ...");
+
+ Connection connection = null;
+ PreparedStatement preparedStatement = null;
+
+ try {
+ //initialize driver and register it with DriverManager
+ Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
+
+ //connect and create the db if not present
+ connection = DriverManager.getConnection(
+ "jdbc:derby:target/store_db;create=true",
+ "",
+ "");
+
+
+ try {
+ preparedStatement = connection.prepareStatement("DROP TABLE CATALOG");
+ preparedStatement.execute();
+ }catch(Exception e) {
+ //ignore to avoid erros when db is being created from scratch
+ }
+
+
+ preparedStatement = connection.prepareStatement("CREATE TABLE CATALOG("
+ + "id NUMERIC(5 , 0) NOT NULL,"
+ + "product_name VARCHAR(30),"
+ + "currency_code CHAR(3),"
+ + "price REAL,"
+ + "primary key (id)"
+ + ")");
+ preparedStatement.execute();
+
+ preparedStatement = connection.prepareStatement("INSERT INTO CATALOG VALUES(0,'Apple', 'USD', 2.99)");
+ preparedStatement.execute();
+
+ preparedStatement = connection.prepareStatement("INSERT INTO CATALOG VALUES(1,'Orange', 'USD', 3.55)");
+ preparedStatement.execute();
+
+ preparedStatement = connection.prepareStatement("INSERT INTO CATALOG VALUES(2,'Pear', 'USD', 1.55)");
+ preparedStatement.execute();
+
+ System.out.println("Done !");
+
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }catch (ClassNotFoundException ex) {
+ ex.printStackTrace();
+ } finally {
+ if (preparedStatement!=null) {
+ try {
+ preparedStatement.close();
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ if (connection!=null) {
+ try {
+ connection.close();
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ }
+ }
+ }
+
+}
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/resources/store-catalog-database.composite b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/resources/store-catalog-database.composite
new file mode 100644
index 0000000000..aea8a6972c
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/src/main/resources/store-catalog-database.composite
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:s="http://store"
+ name="store-catalog-database">
+
+ <component name="Catalog">
+ <implementation.java class="services.CatalogImpl"/>
+ <property name="currencyCode">USD</property>
+ <reference name="currencyConverter" target="CurrencyConverter"/>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/store.sql b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/store.sql
new file mode 100644
index 0000000000..904fab3ce3
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/catalog-amazon/store-db/store.sql
@@ -0,0 +1,37 @@
+--
+-- Licensed to the Apache Software Foundation (ASF) under one
+-- or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information
+-- regarding copyright ownership. The ASF licenses this file
+-- to you under the Apache License, Version 2.0 (the
+-- "License"); you may not use this file except in compliance
+-- with the License. You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing,
+-- software distributed under the License is distributed on an
+-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+-- KIND, either express or implied. See the License for the
+-- specific language governing permissions and limitations
+-- under the License.
+--
+
+DROP TABLE CATALOG;
+
+CREATE TABLE CATALOG(
+ id NUMERIC(5 , 0) NOT NULL,
+ product_name VARCHAR(30),
+ currency_code CHAR(3),
+ price REAL,
+ primary key (id)
+);
+
+
+
+INSERT INTO CATALOG
+ VALUES(0,'Apple', 'USD', 2.99);
+INSERT INTO CATALOG
+ VALUES(1,'Orange', 'USD', 3.55);
+INSERT INTO CATALOG
+ VALUES(2,'Pear', 'USD', 1.55); \ No newline at end of file
diff --git a/java/sca-contrib/tutorials/store/www-services/pom.xml b/java/sca-contrib/tutorials/store/www-services/pom.xml
new file mode 100644
index 0000000000..fd02e3b29b
--- /dev/null
+++ b/java/sca-contrib/tutorials/store/www-services/pom.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial-store</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-www-services</artifactId>
+ <packaging>pom</packaging>
+ <name>Apache Tuscany SCA Store Tutorial External Web Services</name>
+
+ <profiles>
+ <profile>
+ <id>default</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <modules>
+ <module>cart-amazon</module>
+ <module>catalog-amazon</module>
+ </modules>
+ </profile>
+
+ </profiles>
+
+</project>