OTRSのAPIをつかってみた

##■はじめに
OTRS6のAPIに関する備忘録です。


##■環境
・OTRS-6.0.6

##■Webサービスの作成
管理者でログインを行い「設定」「Webサービス」を開く
![image.png](https://qiita-image-store.s3.amazonaws.com/0/245351/c527d056-5cb0-eafa-00f1-64c65af3f5f9.png)

「Webサービスを追加」をクリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/245351/ab949a0d-8303-e5fd-0fa2-ad231911727f.png)

名前と設定のネットワーク・トランスポートを入力して「保存」をクリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/245351/f61dbc9d-ba82-bf06-3cc1-41dbb4865f47.png)

追加のOparationから「TicketGet」を選択
![image.png](https://qiita-image-store.s3.amazonaws.com/0/245351/03f67197-35e3-b823-c6f3-6dd7ad2c7f61.png)

名前を入力して「保存して終了」
![image.png](https://qiita-image-store.s3.amazonaws.com/0/245351/8bfe9c89-d6bc-d9ff-4c4b-af5d109fb0d8.png)

追加のOparationから「TicketCreate」を選択
![image.png](https://qiita-image-store.s3.amazonaws.com/0/245351/8d3cb9da-3a9c-6453-b945-0e8d86efb5bc.png)

名前を入力して「保存して終了」
![image.png](https://qiita-image-store.s3.amazonaws.com/0/245351/7c521248-02a9-8699-ed8b-73c81df5d8f9.png)

追加のOparationから「TicketSearch」を選択
![image.png](https://qiita-image-store.s3.amazonaws.com/0/245351/8d3cb9da-3a9c-6453-b945-0e8d86efb5bc.png)

名前を入力して「保存して終了」
![image.png](https://qiita-image-store.s3.amazonaws.com/0/245351/18dddd5c-bf53-f462-0bf0-0cc1ca193b86.png)

追加のOparationから「SessionCreate」を選択
![image.png](https://qiita-image-store.s3.amazonaws.com/0/245351/195f50e8-4c15-b207-8409-6a84b5d3a95d.png)

名前を入力して「保存して終了」
![image.png](https://qiita-image-store.s3.amazonaws.com/0/245351/6a6ce674-92ec-2437-8827-7ed061431449.png)

ネットワーク・トランスポートの「設定」を開く
![image.png](https://qiita-image-store.s3.amazonaws.com/0/245351/9fd009dd-e77e-6031-0665-2f8299601d4e.png)
次のように入力して「保存して終了」
![image.png](https://qiita-image-store.s3.amazonaws.com/0/245351/fbfa1d1f-8bfd-7979-36eb-362dd332e9dc.png)

最後に「保存して終了」
![image.png](https://qiita-image-store.s3.amazonaws.com/0/245351/6daf03f7-2274-1065-8701-49cab91d4cf9.png)

##■APIの実行
###ログインしてSessionIDを取得します。

~~~
■コマンド
curl -s -X POST 'http://localhost/otrs/nph-genericinterface.pl/Webservice/Ticket/login' \
     -d '{ "UserLogin": "ユーザー", "Password": "パスワード"}' | jq '.SessionID'

■実行結果
"vOGk9BGdAR9BIAdJgYartGreHX5nA3kO"
~~~

###チケットの一覧を取得します。

~~~
■コマンド
curl -sG -d 'SessionID=vOGk9BGdAR9BIAdJgYartGreHX5nA3kO' 'http://localhost/otrs/nph-genericinterface.pl/Webservice/Ticket/'  -d 'StateType=Open' -d 'Queues=Misc' | jq '.'

■実行結果
{
  "TicketID": [
    "1"
  ]
}
~~~

###条件を指定してチケットの一覧を取得します。
https://doc.otrs.com/doc/api/otrs/stable/Perl/Kernel/GenericInterface/Operation/Ticket/TicketSearch.pm.html

~~~
■コマンド
curl -sG -d 'SessionID=vOGk9BGdAR9BIAdJgYartGreHX5nA3kO' 'http://localhost/otrs/nph-genericinterface.pl/Webservice/Ticket/' | jq '.'

■実行結果
{
  "TicketID": [
    "1"
  ]
}
~~~


###チケットの詳細を取得します。

~~~
■コマンド
curl -sG -d 'SessionID=vOGk9BGdAR9BIAdJgYartGreHX5nA3kO' 'http://localhost/otrs/nph-genericinterface.pl/Webservice/Ticket/TicketGet/1' | jq '.'

■実行結果
{
  "Ticket": [
    {
      "Age": 4681647,
      "PriorityID": "3",
      "ServiceID": "",
      "Type": "Unclassified",
      "Responsible": "root@localhost",
      "StateID": "1",
      "ResponsibleID": "1",
      "ChangeBy": "1",
      "EscalationTime": "0",
      "OwnerID": "1",
      "Changed": "2018-03-09 22:29:21",
      "TimeUnit": 0,
      "RealTillTimeNotUsed": "0",
      "GroupID": "1",
      "Owner": "root@localhost",
      "CustomerID": null,
      "TypeID": 1,
      "Created": "2018-03-09 22:29:21",
      "Priority": "3 normal",
      "UntilTime": 0,
      "EscalationUpdateTime": "0",
      "Queue": "Raw",
      "QueueID": "2",
      "State": "new",
      "Title": "Welcome to OTRS!",
      "CreateBy": "1",
      "TicketID": "1",
      "StateType": "new",
      "UnlockTimeout": "0",
      "EscalationResponseTime": "0",
      "EscalationSolutionTime": "0",
      "LockID": "1",
      "TicketNumber": "2015071510123456",
      "ArchiveFlag": "n",
      "Lock": "unlock",
      "SLAID": "",
      "CustomerUserID": null
    }
  ]
}
~~~

###チケットの作成をします。

~~~
■コマンド
curl -s -X POST -H "Content-Type:application/json" \
-d "{ \"SessionID\":\"vOGk9BGdAR9BIAdJgYartGreHX5nA3kO\",
      \"Ticket\":
          {\"Title\":\"test-title\", 
           \"Type\": \"Unclassified\",
           \"Queue\":\"Raw\",
           \"State\":\"open\",
           \"Priority\":\"3 normal\",
           \"CustomerUser\":\"test@gmail.com\"},
     \"Article\":{
           \"Subject\":\"test subject\",
           \"Body\":\"test body\",
           \"ContentType\":\"text/plain; charset=utf8\"}
}" 'http://localhost/otrs/nph-genericinterface.pl/Webservice/Ticket/TicketCreate' | jq '.'

■実行結果
{
  "ArticleID": "10",
  "TicketNumber": "2018050397000093",
  "TicketID": "10"
}
~~~

以上です。