【UiPath】設定とコピペで体験！外部アプリケーション機能（OAuth）を使った外部トリガーの簡単なチュートリアル

# はじめに

この投稿はUiPath Advent Calendar (produced with UiPath Friends) Advent Calendar 2022 の22日目の投稿です。

Orchestrator APIコールを使って外部からUiPathのリソースをアクセスする方法として、現在、外部アプリケーション機能（OAuth）が推奨されています。本ブログは、クイックに体験できるチュートリアル的な感じで書こうと思います。

# 何を体験するのか。
このチュートリアルは外部アプリケーション機能を使って、外部アプリからOrchestratorに格納されているプロセスをトリガーすると言ったことをします。コーディングや、UiPath以外のソフトのインストールはせずに、設定とコピペだけで、クイックに動かして見ると言ったことだけにフォーカスしています。ですので進行中の補足、枝葉や余談などの説明は差し込んでません。動かした体験で、今後応用して使いこなしたり、深掘するステップになればと思います。

# 前提
1. 本ブログは2022/12月時点のAutomation Cloudの画面操作で説明しています。おそらく、また変わっていくでしょうね(笑)
1. Unattendedロボットが動作できる状態の設定になっていることが前提です。

# 手順

# 1.トリガーするプロセスを用意する

トリガーを体験するだけなので、既にあるプロセスでも、新しく適当に作って頂いてもよろしいかと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/4a5b818f-7a9b-cf20-8072-a5f11044245a.png)

# 2.まずはSwaggerで試して見る

Orchestrator APIを使う時は、まずSwaggerで動作させて見てから、その情報を活用すると言ったアプローチも有効です。
Swaggerへのアクセスは下記からコピペして{organization_ID}と{tenant_name}を入れるでも、OrchestratorのURLも元に"/swagger/index.html"入れるでもOKです。
```
https://cloud.uipath.com/{organization_ID}/{tenant_name}/orchestrator_/swagger/index.html
```
:::note warn
{organization_ID}の{}は置き換えの際は不要な記号です。以降に{文字列}で記載している{}も同様に不要になります。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/79586be4-512f-9c05-43e2-4ef44658c0d5.png)


## 2.1 プロセスのReleaseKeyを取得する
ジョブを開始するAPIで、対象プロセスのReleaseKeyが必要みたいなので、まずは、下記のAPIを利用して調べます。
尚、利用するAPIは下記をコピペして{organization_ID}と{tenant_name}を入れてジャンプするでも、Swaggerのページで探すでもOKです。

```
https://cloud.uipath.com/{organization_ID}/{tenant_name}/orchestrator_/swagger/index.html#/Releases/Releases_Get
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/fa173c79-198b-713f-ee07-093eccc8dbfe.png)

:::note info
Folder IDを調べる方法
Orchestratorで対象フォルダ選択中のURLからでもわかります。fid=と記載されている部分です。
:::

## 2.2 ジョブを開始して見る

Swaggerへのアクセスは下記からコピペして{organization_ID}と{tenant_name}を入れるでも、OrchestratorのURLをベースに"/swagger/index.html"入れるでもOKです。
```
https://cloud.uipath.com/{organization_ID}/{tenant_name}/orchestrator_/swagger/index.html#/Jobs/Jobs_StartJobs
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/8a7eef4f-a5df-0e3a-5b3d-42475cf0bdbd.png)

Bodyには下記からコピーして編集するでもOKです。お試しなので、最低限のものだけ入れてます。
```
{
  "startInfo": {
    "ReleaseKey": "{Keyを入れてください}",
    "Strategy": "ModernJobsCount",
    "JobsCount": 1
  }
}
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/3cf2b3d3-7b6e-1fdd-6f5d-4965c67db673.png)


対象プロセスのトリガーが掛かっていればSwaggerからの実行は成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/aa7b0dd7-4b65-5236-c568-d83cbba75ce2.png)

Curlをコピーして控えておきましょう。後で、外部アプリ（コマンドプロンプト）から、このCurlを叩きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/abe71521-d748-16d8-52d9-374c734ac830.png)



# 3.外部アプリケーションを設定する
下記の手順で操作するだけでOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/4c5d76f3-d10b-43d5-6942-34a6c3111df6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/1e350313-4ac4-e23d-72fe-cd9eba3b26c8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/8bd08f8e-74d7-00cb-1628-7c37b2e8cb88.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/3e4d34c2-2742-ccc9-ca84-f33eca5aafe2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/3cc5e25e-4c20-8241-a721-f3f8c0b291fc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/fe832919-4afd-8558-dd22-ac711c113ca3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/f6849317-1e4b-c421-78c1-3e2334c655ca.png)


# 4.コマンドプロンプトからトリガーして見る

## 4.1 トークンを取得する
下記のコマンドをコピーして、先ほど取得してきたアプリID、アプリシークレットを設定し、コマンドプロンプトで叩きます。
```
curl -d "grant_type=client_credentials&client_id={アプリIDを入れてください}&client_secret={アプリシークレットを入れてください}&scope=OR.Jobs" https://cloud.uipath.com/identity_/connect/token
```
正常に動作すると下記の様にアクセストークンが返されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/ed1c40b2-cd10-f7fd-a76e-bd26f2ce98d2.png)

## 4.2 ジョブを開始する

Swaggerでコピーしたジョブ開始のCurlに、先ほど取得してきたアクセストークンを入れ替えてコマンドプロンプトで叩きます。Curlは控えたものを使うので、下記をコピーして使用する必要はありません。参考として載せてます。
```
curl -X POST "https://cloud.uipath.com/{organization_ID}/{tenant_name}/orchestrator_/odata/Jobs/UiPath.Server.Configuration.OData.StartJobs" -H  "accept: application/json" -H  "X-UIPATH-OrganizationUnitId: {フォルダID}" -H  "authorization: Bearer {返されてきたアクセストークン}" -H  "Content-Type: application/json;odata.metadata=minimal;odata.streaming=true" -d "{  \"startInfo\": {    \"ReleaseKey\": \"{キー}\",    \"Strategy\": \"ModernJobsCount\",    \"JobsCount\": 1  }}"
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/6ba9c58a-7581-fe61-0d1b-9c4164a507c5.png)



対象プロセスのトリガーが掛かっていれば、外部アプリケーション機能を使用したアクセストークン取得で、外部アプリからの実行も成功！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/0a8b1db2-80f0-73ca-4013-90790afb9c5e.png)


# おわりに
本ブログではコマンドプロンプトで動かしましたが、PowerShell、Jenkinsシェルスクリプト、Pythonなど使いたいスクリプトで実装頂ければと思います。
この体験を得ることで、例えば他のAPIをコールしたい場合も、Swaggerでやってみる、Swaggerの情報を活用する、外部アプリケーション機能(OAuth)で、新しくアプリケーションを追加、もしくは既存のアプリケーションを利用し、必要なスコープを追加すると言ったやり方は容易に想像がつくと思います。

外部アプリケーション機能(OAuth)について、もう少し広く・深く知りたい方は、下記をご参考に。

https://www.uipath.com/ja/resources/knowledge-base/implementing-orchestrator-api-with-oauth