<?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="https://ofbiz.apache.org/dtds/services.xsd">
    <description>Party Contact Services</description>
    <vendor>OFBiz</vendor>
    <version>1.0</version>

    <!-- contact mech services -->
    <service name="createContactMech" default-entity-name="ContactMech" engine="entity-auto" invoke="create" auth="true">
        <description>Create a new ContactMech Record</description>
        <auto-attributes mode="INOUT" include="pk" optional="true"/>
        <auto-attributes mode="IN" include="nonpk" optional="false"/>
        <override name="infoString" optional="true"/>
    </service>
    <service name="updateContactMech" default-entity-name="ContactMech" engine="groovy"
             location="component://party/src/main/groovy/org/apache/ofbiz/party/contact/ContactMechServicesScript.groovy" invoke="updateContactMech" auth="true">
        <description>Update a ContactMech</description>
        <auto-attributes mode="INOUT" include="pk" optional="false"/>
        <auto-attributes mode="IN" include="nonpk" optional="true"/>
    </service>

    <service name="createPostalAddress" engine="groovy"
             location="component://party/src/main/groovy/org/apache/ofbiz/party/contact/ContactMechServicesScript.groovy" invoke="createPostalAddress" auth="true">
        <description>Create a Postal Address</description>
        <auto-attributes entity-name="PostalAddress" include="all" mode="IN" optional="true"/>
        <attribute name="contactMechId" type="String" mode="OUT" optional="false"/>
        <override name="address1" optional="false"/>
        <override name="city" optional="false"/>
        <override name="postalCode" optional="false"/>
    </service>
    <service name="updatePostalAddress" engine="groovy"
            location="component://party/src/main/groovy/org/apache/ofbiz/party/contact/ContactMechServicesScript.groovy" invoke="updatePostalAddress" auth="true">
        <description>Update a Postal Address</description>
        <auto-attributes entity-name="PostalAddress" include="nonpk" mode="IN" optional="true"/>
        <attribute name="contactMechId" type="String" mode="INOUT" optional="false"/> <!-- the out parameter is the id of the new address -->
        <attribute name="directions" type="String" mode="IN" optional="true"/> <!-- ?? -->
        <attribute name="oldContactMechId" type="String" mode="OUT" optional="false"/> <!-- this is the id of the old address -->
        <attribute name="partyId" type="String" mode="IN" optional="true"/><!-- ?? -->
        <attribute name="latitude" type="String" mode="IN" optional="true"/><!-- ?? -->
        <attribute name="longitude" type="String" mode="IN" optional="true"/><!-- ?? -->
        <override name="address1" optional="false"/>
        <override name="city" optional="false"/>
        <override name="postalCode" optional="false"/>
    </service>

    <service name="createTelecomNumber" engine="groovy"
             location="component://party/src/main/groovy/org/apache/ofbiz/party/contact/ContactMechServicesScript.groovy" invoke="createTelecomNumber" auth="true">
        <description>Create a Telecommunications Number</description>
        <auto-attributes entity-name="TelecomNumber" include="all" mode="IN" optional="true"/>
        <attribute name="contactMechId" type="String" mode="OUT" optional="false"/>
    </service>
    <service name="updateTelecomNumber" engine="groovy"
             location="component://party/src/main/groovy/org/apache/ofbiz/party/contact/ContactMechServicesScript.groovy" invoke="updateTelecomNumber" auth="true">
        <description>Update a Telecommunications Number</description>
        <auto-attributes entity-name="TelecomNumber" include="nonpk" mode="IN" optional="true"/>
        <attribute name="contactMechId" type="String" mode="INOUT" optional="false"/>
        <attribute name="oldContactMechId" type="String" mode="OUT" optional="false"/>
    </service>

    <service name="createEmailAddress" engine="groovy"
             location="component://party/src/main/groovy/org/apache/ofbiz/party/contact/ContactMechServicesScript.groovy" invoke="createEmailAddress" auth="true">
        <description>Create an Email Address</description>
        <auto-attributes entity-name="ContactMech" include="nonpk" mode="IN" optional="true"/>
        <auto-attributes entity-name="ContactMech" include="pk" mode="OUT" optional="false"/>
        <attribute name="emailAddress" type="String" mode="IN" optional="false"/>
        <override name="infoString" optional="true"/>
    </service>
    <service name="updateEmailAddress" engine="groovy"
             location="component://party/src/main/groovy/org/apache/ofbiz/party/contact/ContactMechServicesScript.groovy" invoke="updateEmailAddress" auth="true">
        <description>Update an Email Address</description>
        <attribute name="contactMechId" type="String" mode="INOUT" optional="false"/>
        <attribute name="emailAddress" type="String" mode="IN" optional="false"/>
    </service>
    <service name="createFtpAddress" default-entity-name="FtpAddress" engine="groovy" invoke="createFtpAddress"
             location="component://party/src/main/groovy/org/apache/ofbiz/party/contact/ContactMechServicesScript.groovy">
        <description>create FtpAddress</description>
        <permission-service service-name="partyBasePermissionCheck" main-action="CREATE"/>
        <auto-attributes mode="OUT" include="pk"/>
        <auto-attributes mode="IN" include="nonpk" optional="true"/>
    </service>
    <service name="updateFtpAddressWithHistory" default-entity-name="FtpAddress" engine="groovy" invoke="updateFtpAddressWithHistory"
             location="component://party/src/main/groovy/org/apache/ofbiz/party/contact/ContactMechServicesScript.groovy">
        <description>update FtpAddress</description>
        <permission-service service-name="partyBasePermissionCheck" main-action="UPDATE"/>
        <auto-attributes mode="IN" include="pk"/>
        <auto-attributes mode="IN" include="nonpk" optional="true"/>
        <attribute name="contactMechId" type="String" mode="INOUT"/> <!-- the out paramater is the id of the new address -->
        <attribute name="oldContactMechId" type="String" mode="OUT"/> <!-- this is the id of the old address -->
    </service>

    <service name="createContactMechType" default-entity-name="ContactMechType" engine="entity-auto" invoke="create" auth="true">
        <description>Create a new ContactMech Type Record</description>
        <auto-attributes mode="INOUT" include="pk" optional="true"/>
        <auto-attributes mode="IN" include="nonpk" optional="true"/>
    </service>
    <service name="updateContactMechType" default-entity-name="ContactMechType" engine="entity-auto" invoke="update" auth="true">
        <description>Update a ContactMech Type Record</description>
        <auto-attributes mode="IN" include="pk"/>
        <auto-attributes mode="IN" include="nonpk" optional="true"/>
    </service>
    <service name="deleteContactMechType" default-entity-name="ContactMechType" engine="entity-auto" invoke="delete" auth="true">
        <description>Delete a ContactMech Type Record</description>
        <auto-attributes mode="IN" include="pk"/>
        <auto-attributes mode="IN" include="nonpk" optional="true"/>
    </service>

    <service name="createContactMechPurposeType" default-entity-name="ContactMechPurposeType" engine="entity-auto" invoke="create" auth="true">
        <description>Create a new ContactMech Purpose Type Record</description>
        <auto-attributes mode="INOUT" include="pk" optional="true"/>
        <auto-attributes mode="IN" include="nonpk" optional="true"/>
    </service>
    <service name="updateContactMechPurposeType" default-entity-name="ContactMechPurposeType" engine="entity-auto" invoke="update" auth="true">
        <description>Update a ContactMech Purpose Type Record</description>
        <auto-attributes mode="IN" include="pk"/>
        <auto-attributes mode="IN" include="nonpk" optional="true"/>
    </service>
    <service name="deleteContactMechPurposeType" default-entity-name="ContactMechPurposeType" engine="entity-auto" invoke="delete" auth="true">
        <description>Delete a ContactMech Purpose Type Record</description>
        <auto-attributes mode="IN" include="pk"/>
        <auto-attributes mode="IN" include="nonpk" optional="true"/>
    </service>
    <service name="createContactMechTypeAttr" default-entity-name="ContactMechTypeAttr" engine="entity-auto" invoke="create" auth="true">
        <description>Create a new ContactMech Type Attr Record</description>
        <auto-attributes mode="IN" include="pk"/>
        <auto-attributes mode="IN" include="nonpk" optional="true"/>
    </service>
    <service name="updateContactMechTypeAttr" default-entity-name="ContactMechTypeAttr" engine="entity-auto" invoke="update" auth="true">
        <description>Update a ContactMech Type Attr Record</description>
        <auto-attributes mode="IN" include="pk"/>
        <auto-attributes mode="IN" include="nonpk" optional="true"/>
    </service>
    <service name="deleteContactMechTypeAttr" default-entity-name="ContactMechTypeAttr" engine="entity-auto" invoke="delete" auth="true">
        <description>Delete an existing ContactMech Type Attr Record</description>
        <auto-attributes mode="IN" include="pk"/>
    </service>

    <service name="createContactMechTypePurpose" default-entity-name="ContactMechTypePurpose" engine="entity-auto" invoke="create" auth="true">
        <description>Create a new ContactMech Type Purpose Record</description>
        <auto-attributes mode="IN" include="pk"/>
        <auto-attributes mode="IN" include="nonpk" optional="true"/>
    </service>
    <service name="updateContactMechTypePurpose" default-entity-name="ContactMechTypePurpose" engine="entity-auto" invoke="update" auth="true">
        <description>Update a ContactMech Type Purpose Record</description>
        <auto-attributes mode="IN" include="pk"/>
        <auto-attributes mode="IN" include="nonpk" optional="true"/>
    </service>
    <service name="deleteContactMechTypePurpose" default-entity-name="ContactMechTypePurpose" engine="entity-auto" invoke="delete" auth="true">
        <description>Delete an existing ContactMech Type Purpose Record</description>
        <auto-attributes mode="IN" include="pk"/>
    </service>
</services>
