<?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.
-->

<services xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/services.xsd">
   <!-- Start Old Implementation to send data in XML format -->
    <service name="ConvertOfbizCartToGoogle" engine="simple" invoke="ConvertOfbizCartToGoogle" auth="false"
        location="component://googlecheckout/script/org/ofbiz/googleCheckout/ShoppingCartServices.xml">
        <attribute name="shoppingCart" type="org.ofbiz.order.shoppingcart.WebShoppingCart" mode="IN" optional="false"/>
        <attribute name="googleCart" mode="OUT" type="Map" optional="false"/>
        <attribute name="flowSupport" mode="OUT" type="Map" optional="false"/>
        <attribute name="sendInitialAuthDetails" mode="OUT" type="Boolean" optional="false"/>
    </service>
    <service name="createXMLOutput" engine="simple" invoke="createXMLOutput" auth="false"
        location="component://googlecheckout/script/org/ofbiz/googleCheckout/PrepareXMLTemplate.xml">
        <attribute name="shoppingCart" type="org.ofbiz.order.shoppingcart.WebShoppingCart" mode="IN" optional="false"/>
    </service>
    <service name="transmitRequest" engine="simple" invoke="transmitRequest" auth="false"
        location="component://googlecheckout/script/org/ofbiz/googleCheckout/PrepareXMLTemplate.xml">
        <attribute name="shoppingCart" type="org.ofbiz.order.shoppingcart.ShoppingCart" mode="IN" optional="false"/>
        <attribute name="redirect" mode="OUT" type="String" optional="false"/>
    </service>
    <service name="connectToGoogleCheckoutServer" engine="simple" invoke="connectToGoogleCheckoutServer" auth="false"
        location="component://googlecheckout/script/org/ofbiz/googleCheckout/PrepareXMLTemplate.xml">
        <attribute name="conn" mode="OUT" type="java.net.HttpURLConnection" optional="false"/>
    </service>
    <!-- End Old Implementation to send data in XML format -->
    
    <!-- Start configuration services -->
    <service name="createGoogleCheckoutConfiguration" default-entity-name="GoogleCoConfiguration" engine="entity-auto" invoke="create" auth="true">
        <description>Create a GoogleCoConfiguration</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
        <auto-attributes include="nonpk" mode="IN" optional="true"/>
    </service>
    <service name="updateGoogleCheckoutConfiguration" default-entity-name="GoogleCoConfiguration" engine="entity-auto" invoke="update" auth="true">
        <description>Update a GoogleCoConfiguration</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
        <auto-attributes include="nonpk" mode="IN" optional="true"/>
    </service>
    <service name="deleteGoogleCheckoutConfiguration" default-entity-name="GoogleCoConfiguration" engine="entity-auto" invoke="delete" auth="true">
        <description>Delete a GoogleCoConfiguration</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
    </service>

    <service name="createGoogleCheckoutShippingMethod" default-entity-name="GoogleCoShippingMethod" engine="entity-auto" invoke="create" auth="true">
        <description>Create a GoogleCoShippingMethod</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
        <auto-attributes include="nonpk" mode="IN" optional="true"/>
    </service>
    <service name="updateGoogleCheckoutShippingMethod" default-entity-name="GoogleCoShippingMethod" engine="entity-auto" invoke="update" auth="true">
        <description>Update a GoogleCoShippingMethod</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
        <auto-attributes include="nonpk" mode="IN" optional="true"/>
    </service>
    <service name="deleteGoogleCheckoutShippingMethod" default-entity-name="GoogleCoShippingMethod" engine="entity-auto" invoke="delete" auth="true">
        <description>Delete a GoogleCoShippingMethod</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
    </service>
    <!-- End configuration services -->
</services>
