A2019でAPI＜基本の4選＞

AutomationAnywhere社のA2019でAPIを使用する基本的な例4選です。
Chromeをお使いであれば、Chromeウェブストアから拡張ツール「Advanced REST client」などを使われると、お手軽に試していただけます。

###1. トークンの取得
A2019ではセキュリティ上の観点から、定期的にアクセストークンが更新されます（デフォルトは20分）。そのため、何はともあれ、まずは新しいトークンの取得（トークンの更新）になります。

**リクエストメソッド：**
POST

**リクエストURL：**
***`a2019Url`***/v1/authentication
例：https://a2019.hogehoge.com/v1/authentication

**ヘッダー：**
content-type:application/json

**ボディ：**
***userName －*** Control RoomeへのログインID
***apyKey －*** Control Roomへログインし右上のユーザーメニューから取得
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639355/0dc97e9d-eeaa-e35b-5ec8-b0d9155a9883.png width=30%>
※APIキーの代わりにパスワードによる認証も可能です。その場合、 ***`apiKey`***句の代わりに***`password`***句を使い、Cntrol Roomへログインする際のパスワードを指定します。

```JSON
{
    "username": "(userName)",
    "apiKey": "(apiKey)"
}
```

**レスポンス例：**

```JSON
{
    "token": "lqXhbGciOpJSUcUxMiJ3.eyJzdTIiLiIbNSIsI・・・", <-- token
    "user": {
    "id": 15,
    "email": "stig@hogehoge.com",
    "username": "stig",
（以下省略）
```
#####（注）token取得後に当該userIDでControl Roomへログインすると、取得したtokenが無効となりますので注意してください。その場合、新たにtokenを取得し直す必要があります。また、設定されている有効期限経過後（デフォルト20分）の場合も同様に再取得が必要になります。

###2. ユーザー情報の取得

**リクエストメソッド：**
POST

**リクエストURL：**
***`a2019Url`***/v1/usermanagement/users/list
例：https://a2019.hogehoge.com/v1/usermanagement/users/list

**ヘッダー：**
***token －*** 「1.トークンの取得」にて得たtoken値

content-type:application/json
x-authorization:***`token`***

**ボディ：**
***userName －*** Control RoomeへのログインID

```JSON
{
    "filter": {
    "operator": "eq",
    "value": "(userName)",
    "field": "username"
   }
}
```

**レスポンス例：**

```JSON
{
  "page": {
    "offset": 0,
    "total": 221,
    "totalFilter": 1
  },
  "list": [{
    "id": 361, <-- userId
    "username": "RunUser",
（以下省略）
```
##### （TIPS）ユーザーリストを取得したい場合は、ボディ部へ以下を指定すると取得できます。

```JSON
{
  "fields": [
    "username,id"
  ],
    "page": {
    "offset": 0,
    "length": 0
  }
}
```

###3. ボット情報の取得

**リクエストメソッド：**
POST

**リクエストURL：**
***`a2019Url`***/v2/repository/file/list
例：https://a2019.hogehoge.com/v2/repository/file/list

**ヘッダー：**
***token －*** 「1.トークンの取得」にて得たtoken値

content-type:application/json
x-authorization:***`token`***

**ボディ：**
***botName －*** ボットの名前

```JSON
{
  "filter": {
    "operator": "eq",
    "value": "(botName)",
    "field": "name"
  }
}
```

**レスポンス例：**

```JSON
{
  "page": {
    "offset": 0,
    "total": 9577,
    "totalFilter": 1
  },
  "list": [{
    "id": "15352", <-- botId
    "parentId": "9",
    "name": "API_TEST",
    "permission": {
（以下省略）
```

###4. ボットの実行
#####（本例での注意）
- ボットの実行で指定するユーザー（UserId）にはUnattendedユーザーである必要があります。
- 実行されるボット（botId）はあらかじめチェックアウト（公開）されている必要があります。
- ヘッダーで指定するtokenを取得したユーザーとボットを実行するユーザーは権限を有してさえいれば異なっても構いません。

**リクエストメソッド：**
POST

**リクエストURL：**
***`a2019Url`***/v3/automations/deploy
例：https://a2019.hogehoge.com/v3/automations/deploy

**ヘッダー：**
***token －*** 「1.トークンの取得」にて得たtoken値

content-type:application/json
x-authorization:***`token`***

**ボディ：**
***botId －*** 「3.ボット情報の取得」にて得たbotID値
***userId －*** 「2.ユーザー情報の取得」にて得たuserId値


````JSON
{
  "fileId": "(botId)",
  "botInput": {
    "sInputString1": {
      "type": "STRING",
      "string": "rgdfg"
    ;},
    "bBooleanInput": {
      "type": "BOOLEAN",
      "boolean": true
    },
    "dInputDict1": {
      "type": "DICTIONARY",
      "dictionary": [
        {
          "key": "Key 1",
          "value": {
            "type": "STRING",
            "string": "cvbdfgdfg"
          }
        }
      ]
    }
  },
  "status": "ACTIVE",
  "rdpEnabled": false,
  "setAsDefaultDevice": false,
  "poolIds": [],
  "workspaceName": "public",
  "runAsUserIds": [
    "(userId)"
  ],
  "scheduleType": "INSTANT"
}
```

**レスポンス例：**

```JSON
{
&nbsp;&nbsp;"deploymentId": "bo21087f-506a-4521-w21a-9a4l1d477c0f"
}
```

###この4つさえおさえておけば、様々なサービスやシステムとの連携の幅が広がり、AIチャットボットなどと連携したアプリケーションの実現も容易になるかと思います。