postmanを使用してGaroonAPIから返ってきた結果を表示したい。

postmanを使用してPOSTで返ってくる結果を表示したいのですが、正しくできていないようです。
表示したいものは Garoonのユーザーが参加者や通知先に設定されている報告書になります。

どなたかご存じでしたらご教示いただけますでしょうか。
なお、当方はSOAP初心者ですので予めご了承ください。

環境:Garoonクラウド
設定内容
HTTPメソッド : POST

request URL : https://サブドメイン.cybozu.com/g/index.csp?WSDL

Params : 指定なし

Headers : 追加指定なし

Body :「raw」を選択し、以下の XML を指定

   <?xml version="1.0" encoding="UTF-8"?>

   <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">

       <soap:Header>

           <Action>ReportGetReportById</Action>

           <Security>

               <UsernameToken>

                   <Username>ログイン名</Username>

                   <Password>パスワード</Password>

               </UsernameToken>

           </Security>

           <Timestamp>

               <Created>2010-04-18T01:11:02Z</Created>

               <Expires>2037-08-12T14:45:00Z</Expires>

           </Timestamp>

           <Locale>jp</Locale>

       </soap:Header>

       <soap:Body>

           <ReportGetReportById>

               <parameters>

                   <report_id xmlns="">3</report_id>

               </parameters>

           </ReportGetReportById>

       </soap:Body>

   </soap:Envelope>

得たい結果(サンプルの内容です)

<returns> 
  <report id="3" subject="テストフォーム( テスト標題 )" is_draft="false"> 
    <items xmlns="http://schemas.cybozu.co.jp/report/2008"> 
      <item name="標題" value="テスト標題" /> 
      <files_item name="files" inline="false"> 
        <file file_id="2" name="サンプル資料.txt" size="5526" mime_type="text/plain" /> 
      </files_item> 
    </items> 
    <members xmlns="http://schemas.cybozu.co.jp/report/2008"> 
      <user id="1" name="Administrator" /> 
      <user id="2" name="user1" /> 
      <user id="3" name="user2" /> 
    </members> 
    <notifyusers xmlns="http://schemas.cybozu.co.jp/report/2008"> 
    </notifyusers> 
    <creator  user_id="1"  name="Administrator"  date="2010-10-04T08:52:29Z" /> 
    <modifier user_id="1" name="Administrator" date="2010-10-04T08:52:29Z" /> 
  </report> 
</returns>

実際に返ってくるボディの中身

<?xml version="1.0" ?>
<definitions name="GaroonServices"
             targetNamespace="http://wsdl.cybozu.co.jp/api/2008"
             xmlns="http://schemas.xmlsoap.org/wsdl/"
             xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
             xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
             xmlns:tns="http://wsdl.cybozu.co.jp/api/2008"
             xmlns:base_services="http://wsdl.cybozu.co.jp/base/2008"
             xmlns:schedule_services="http://wsdl.cybozu.co.jp/schedule/2008"
             xmlns:address_services="http://wsdl.cybozu.co.jp/address/2008"
             xmlns:workflow_services="http://wsdl.cybozu.co.jp/workflow/2008"
             xmlns:mail_services="http://wsdl.cybozu.co.jp/mail/2008"
             xmlns:message_services="http://wsdl.cybozu.co.jp/message/2008"
             xmlns:notification_services="http://wsdl.cybozu.co.jp/notification/2008"
             xmlns:report_services="http://wsdl.cybozu.co.jp/report/2008"
             xmlns:cabinet_services="http://wsdl.cybozu.co.jp/cabinet/2008"
             xmlns:admin_services="http://wsdl.cybozu.co.jp/admin/2008"
             xmlns:util_api_services="http://wsdl.cybozu.co.jp/util_api/2008"
             xmlns:star_services="http://wsdl.cybozu.co.jp/star/2008"
             xmlns:bulletin_services="http://wsdl.cybozu.co.jp/bulletin/2008"
             >
    <wsdl:import namespace="http://wsdl.cybozu.co.jp/base/2008" location="https://static.cybozu.com/g/F24.4_8997093984_c86755286ba6/api/2008/base.wsdl" />
    <wsdl:import namespace="http://wsdl.cybozu.co.jp/schedule/2008" location="https://static.cybozu.com/g/F24.4_8997093984_c86755286ba6/api/2008/schedule.wsdl" />
    <wsdl:import namespace="http://wsdl.cybozu.co.jp/address/2008" location="https://static.cybozu.com/g/F24.4_8997093984_c86755286ba6/api/2008/address.wsdl" />
    <wsdl:import namespace="http://wsdl.cybozu.co.jp/workflow/2008" location="https://static.cybozu.com/g/F24.4_8997093984_c86755286ba6/api/2008/workflow.wsdl" />
    <wsdl:import namespace="http://wsdl.cybozu.co.jp/mail/2008" location="https://static.cybozu.com/g/F24.4_8997093984_c86755286ba6/api/2008/mail.wsdl" />
    <wsdl:import namespace="http://wsdl.cybozu.co.jp/message/2008" location="https://static.cybozu.com/g/F24.4_8997093984_c86755286ba6/api/2008/message.wsdl" />
    <wsdl:import namespace="http://wsdl.cybozu.co.jp/notification/2008" location="https://static.cybozu.com/g/F24.4_8997093984_c86755286ba6/api/2008/notification.wsdl" />
    <wsdl:import namespace="http://wsdl.cybozu.co.jp/report/2008" location="https://static.cybozu.com/g/F24.4_8997093984_c86755286ba6/api/2008/report.wsdl" />
    <wsdl:import namespace="http://wsdl.cybozu.co.jp/cabinet/2008" location="https://static.cybozu.com/g/F24.4_8997093984_c86755286ba6/api/2008/cabinet.wsdl" />
    <wsdl:import namespace="http://wsdl.cybozu.co.jp/admin/2008" location="https://static.cybozu.com/g/F24.4_8997093984_c86755286ba6/api/2008/admin.wsdl" />
    <wsdl:import namespace="http://wsdl.cybozu.co.jp/util_api/2008" location="https://static.cybozu.com/g/F24.4_8997093984_c86755286ba6/api/2008/util_api.wsdl" />
    <wsdl:import namespace="http://wsdl.cybozu.co.jp/star/2008" location="https://static.cybozu.com/g/F24.4_8997093984_c86755286ba6/api/2008/star.wsdl" />
    <wsdl:import namespace="http://wsdl.cybozu.co.jp/bulletin/2008" location="https://static.cybozu.com/g/F24.4_8997093984_c86755286ba6/api/2008/bulletin.wsdl" />
<service name="ReportService">
        <port name="ReportPort" binding="report_services:ReportBinding">
            <soap12:address location="https://サブドメイン.cybozu.com/g/cbpapi/report/api.csp?" />
        </port>
    </service>
</definitions>

こんにちは。

Garoon SOAP API の request URL については、記載いただいている URL の
アクセス先で確認する必要があります。

記載いただいている URL にアクセスして、service name=“ReportService” と
記載された項目があるかと思います。
※ レスポンスボディの内容からでも確認可能です。

該当項目の soap12:address location= に記載されている URL を指定することで、
ReportGetReportById を実行可能です。

https://サブドメイン.cybozu.com/g/cbpapi/report/api.csp?

なお、他の API を実行したい場合には、service name= の値に、API で操作したい
サービスが記載されている項目を探してください。

ご回答ありがとうございます。

ご指摘の通りにURLを変更したところ、期待通りのレスポンスが返ってきました。

追加で質問になってしまい申し訳ないのですが、

report idを複数指定する場合は
xml形式だと

<parameters>
        <report_id xmlns="">4</report_id>
        <report_id xmlns="">5</report_id>
        <report_id xmlns="">6</report_id>
      </parameters>

くらいしかないのでしょうか?
ループ文などを使い、headerのusernameに設定されているユーザーが参加者や通知先に設定されている全レポートを取得する方法などあれば教えて頂ければ幸いです。

report id を複数指定する場合には、記載いただいている形式以外できないかと思います。

なお、ReportSearchReports でレポートを検索して、レスポンス内容からレポートID を抽出し、
ReportGetReportById の <parameters> に追加していく処理を実装すれば、
header の username に設定されている全レポートを取得可能かと思います。

ご回答ありがとうございます。

ReportSearchReports でレポートを検索して、

の方法を試したいのですが、postメソッドの対象URLは
https://******.cybozu.com/g/cbpapi/report/api.csp?
で合っておりますでしょうか?

また、request用のxmlファイルの記述は

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
  <soap:Header>
    <Action>ReportSearchReports</Action>  <Security>
      <UsernameToken>
        <Username>*****</Username>
        <Password>*****</Password>
      </UsernameToken>
    </Security>
    <Timestamp>
      <Created>2010-04-18T01:11:02Z</Created>
      <Expires>2037-08-12T14:45:00Z</Expires>
    </Timestamp>
    <Locale>jp</Locale>
  </soap:Header>
  <soap:Body>
    <ReportSearchReports xmlns="http://wsdl.cybozu.co.jp/report/2008">
     <parameters target="received" keyword="report"> 
     </parameters>
    </ReportSearchReports>
  </soap:Body>
</soap:Envelope>

で送ったところ、
responseの中身は

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:report="http://wsdl.cybozu.co.jp/report/2008">
    <soap:Header>
        <vendor>Cybozu</vendor>
        <product>Garoon</product>
        <product_type>2</product_type>
        <version>6.6.0</version>
        <apiversion>6.6.0</apiversion>
    </soap:Header>
    <soap:Body>
        <report:ReportSearchReportsResponse>
            <returns>
  </returns>
        </report:ReportSearchReportsResponse>
    </soap:Body>
</soap:Envelope>

でした。

parameters の中身の記述が違うのでしょうか?

ReportSearchReports の URL は、記載いただいた URL で合ってます。

なお、ReportSearchReports は、@target@keyword パラメータで指定した条件に
一致したレポートのみレスポンスで返るので、お知らせのレスポンスは条件に一致する
レポートが存在しなかっただけかと思います。

@target@keyword パラメータの値を ”” にすることで、全てのレポートを
取得することが可能かと思うので試してみてください。

1 Like

ご回答ありがとうございます。

ご教示の通りにパラメーターの条件を変更したところ、求めていた全レポート情報を取得できました。

1 Like