<?xml version="1.0" ?>
<definitions name="CybozuUtilServices"
             xmlns="http://schemas.xmlsoap.org/wsdl/"
             targetNamespace="http://wsdl.cybozu.co.jp/util_api/2008"
             xmlns:typens="http://wsdl.cybozu.co.jp/util_api/2008/types"
             xmlns:tns="http://wsdl.cybozu.co.jp/util_api/2008"
             xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
             xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
             xmlns:base_services="http://wsdl.cybozu.co.jp/base/2008">

  <wsdl:import namespace="http://wsdl.cybozu.co.jp/base/2008" location="base.wsdl"/>
  
  <types>
    <xsd:schema targetNamespace="http://wsdl.cybozu.co.jp/util_api/2008/types"
                xmlns="http://www.w3.org/2001/XMLSchema"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns:base="http://schemas.cybozu.co.jp/base/2008"
                xmlns:util_api="http://schemas.cybozu.co.jp/util_api/2008"
                xmlns:base_types="http://wsdl.cybozu.co.jp/base/2008/types">
                
      <xsd:import namespace="http://schemas.cybozu.co.jp/base/2008"
                  schemaLocation="base.xsd" />
      <xsd:import namespace="http://schemas.cybozu.co.jp/util_api/2008"
                  schemaLocation="util_api.xsd" />
      <xsd:import namespace="http://wsdl.cybozu.co.jp/base/2008/types" />

      <xsd:complexType name="UtilLoginRequestType">
        <xsd:sequence>
          <xsd:element name="login_name" type="xsd:string"
                       minOccurs="1" maxOccurs="1" />
          <xsd:element name="password" type="xsd:string"
                       minOccurs="1" maxOccurs="1" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="UtilLoginResponseType">
        <xsd:sequence>
          <xsd:element name="login_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
          <xsd:element name="status" type="xsd:string" minOccurs="1" maxOccurs="1" />
          <xsd:element name="cookie" type="xsd:string" minOccurs="0" maxOccurs="1" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="UtilLogoutRequestType">
      </xsd:complexType>
      
      <xsd:complexType name="UtilLogoutResponseType">
        <xsd:sequence>
          <xsd:element name="login_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
          <xsd:element name="status" type="xsd:string" minOccurs="1" maxOccurs="1" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="UtilGetRequestTokenRequestType">
      </xsd:complexType>
      
      <xsd:complexType name="UtilGetRequestTokenResponseType">
        <xsd:sequence>
          <xsd:element name="request_token" type="xsd:string" minOccurs="1" maxOccurs="1" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="UtilGetLoginUserIdRequestType">
      </xsd:complexType>
      
      <xsd:complexType name="UtilGetLoginUserIdResponseType">
        <xsd:sequence>
          <xsd:element name="user_id" type="base:IDType" minOccurs="1" maxOccurs="1" />
        </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>
  </types>

  <message name="UtilLoginRequest">
    <part name="parameters" type="typens:UtilLoginRequestType" />
  </message>
  <message name="UtilLoginResponse">
    <part name="returns" type="typens:UtilLoginResponseType" />
  </message>

  <message name="UtilLogoutRequest">
    <part name="parameters" type="typens:UtilLogoutRequestType" />
  </message>
  <message name="UtilLogoutResponse">
    <part name="returns" type="typens:UtilLogoutResponseType" />
  </message>

  <message name="UtilGetRequestTokenRequest">
    <part name="parameters" type="typens:UtilGetRequestTokenRequestType" />
  </message>
  <message name="UtilGetRequestTokenResponse">
    <part name="returns" type="typens:UtilGetRequestTokenResponseType" />
  </message>

  <message name="UtilGetLoginUserIdRequest">
    <part name="parameters" type="typens:UtilGetLoginUserIdRequestType" />
  </message>
  <message name="UtilGetLoginUserIdResponse">
    <part name="returns" type="typens:UtilGetLoginUserIdResponseType" />
  </message>

  <portType name="UtilPort">
    <operation name="UtilLogin">
      <documentation>
        This API logins a user into Garoon using his userId and password.
        If success, it returns a session cookie in the response header.
        Further actions can use this cookie for authentication.
      </documentation>
      <input message="tns:UtilLoginRequest" />
      <output message="tns:UtilLoginResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>
    
    <operation name="UtilLogout">
      <documentation>
        This API deletes user information in a session and logouts users from Garoon.
      </documentation>
      <input message="tns:UtilLogoutRequest" />
      <output message="tns:UtilLogoutResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>
    
    <operation name="UtilGetRequestToken">
      <documentation>
        This API gets request token in a session for CSRF.
      </documentation>
      <input message="tns:UtilGetRequestTokenRequest" />
      <output message="tns:UtilGetRequestTokenResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>
    
    <operation name="UtilGetLoginUserId">
      <documentation>
        This API gets user id of login user.
      </documentation>
      <input message="tns:UtilGetLoginUserIdRequest" />
      <output message="tns:UtilGetLoginUserIdResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>
  </portType>

  <binding name="UtilBinding" type="tns:UtilPort">
    <soap12:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />

    <operation name="UtilLogin">
      <soap12:operation soapAction="UtilLogin" soapActionRequired="true" />
      <input>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/util_api/2008" />
      </input>
      <output>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/util_api/2008" />
      </output>
      <fault name="CybozuError">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/util_api/2008" />
      </fault>
    </operation>
    
    <operation name="UtilLogout">
      <soap12:operation soapAction="UtilLogout" soapActionRequired="true" />
      <input>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/util_api/2008" />
      </input>
      <output>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/util_api/2008" />
      </output>
      <fault name="CybozuError">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/util_api/2008" />
      </fault>
    </operation>
    
    <operation name="UtilGetRequestToken">
      <soap12:operation soapAction="UtilGetRequestToken" soapActionRequired="true" />
      <input>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/util_api/2008" />
      </input>
      <output>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/util_api/2008" />
      </output>
      <fault name="CybozuError">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/util_api/2008" />
      </fault>
    </operation>
    
    <operation name="UtilGetLoginUserId">
      <soap12:operation soapAction="UtilGetLoginUserId" soapActionRequired="true" />
      <input>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/util_api/2008" />
      </input>
      <output>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/util_api/2008" />
      </output>
      <fault name="CybozuError">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/util_api/2008" />
      </fault>
    </operation>
  </binding>
</definitions>
