Zoom APIの利用制限まとめ〜無料/有料プランの今後〜

# 急増するZoomユーザーとZoom APIでの開発
リモートワークが増える中で、Zoomのユーザ数は3ヶ月で1000万人から2億人以上に到達したとのこと。
https://www.bbc.com/japanese/52147924
これだけ流行っているのだから、Zoom APIを使って何か出来ないかと思い調べてみた。

# Zoom APIの利用の始め方（無料）
Zoomのアカウントを発行した上で、下記サイトにアクセス> develop > Build Appを押して、画面の指示に従っていくと、APIを叩くのに必要なtokenが簡単に取得できる。
https://marketplace.zoom.us/
<img width="1278" alt="Zoom marketplace画面.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78136/4073fe07-4613-76ca-add0-f088e42e8b88.png">

参考:
https://trumpet-ojisan.com/zoom_api_prepare/

# APIドキュメントと出来ること
Zoom APIのドキュメントは下記。APIリファレンス、SDK、サンプルも揃っている。
https://marketplace.zoom.us/docs/guides
SDKはiOS,Android,MacOS,Windows,js,Electronなど豊富に揃っている。
各種情報の取得、チャット送信、部屋作成、参加など、Zoomでできる一通りの操作ができる。

# freeプランゆえの制限(2020/4/7現在)
Zoomのフォーラムにて、「freeプランで何が出来ないのか」の質問があった。
その回答が下記。
>For free accounts, the APIs will work unless otherwise stated on the endpoints page, just the rate limiting, the amount of times and how often you request the API will be limited.

https://devforum.zoom.us/t/zoom-free-license-and-rest-api/6456
(Zoomユーザーが急増する前の2019年末の投稿)

とのことで、エンドポイントごとに特に明記されていない限り、**APIの呼び出し回数制限にかからなければ普通に使える**とのこと
[プラン別料金表](https://zoom.us/pricing)にはREST APIの利用は有料であるProに入っているが、freeプランでも使うことが出来る。
後述の[2020年2Q中の変更](https://marketplace.zoom.us/docs/guides/announcements#rate-limit-changes)を見越しての記載の可能性があり、これから変更になる可能性が大いにある。

## APIごとの呼び出し制限(2020/4/7現在)
APIドキュメントの[Rate Limits](https://marketplace.zoom.us/docs/api-reference/rate-limits)に記載がある。
大半のAPIは**1秒あたり1-10リクエスト**叩くことが出来る。
呼び出し制限はアカウントごとにかかり、複数アプリをアカウント内に作成/インストールした場合は合算値が制限の対象になる。
なお、**現時点ではアカウントのプランごとの制限の差は明示されておらず、プランによらず下記呼び出し制限の元でAPIを叩けそう**（詳しい情報知っている人いたら教えてください）

(下記は2020/4/7の一覧を引用)
### Common APIs

| Endpoint | Rate Limit | Additional Limits |
|:--|:--|:--|
| /v2/*/ | 10 requests/second | None |

### Dashboard APIs
| Endpoint | Rate Limit | Additional Limits |
|:--|:--|:--|
| /v2/*/billing/* | 1 request/second | None |
| /v2/*/plans/* | 1 request/second | None |
| /v2/*/metrics/* (excluding /meetings and /webinars) | 1 request/second | None |
| /v2/report/* | 1 request/second | 2000 max requests per day |
| /v2/metrics/* | 1 request/second | 2000 max requests per day |
| /v2/metrics/meetings | 1 request/minute | 2000 max requests per day |
| /v2/metrics/webinars | 1 request/minute | 2000 max requests per day |

### Phone APIs
| API Endpoint | Method | Rate Limit |
|:--|:--|:--|
| /v2/phone/users/{userId}/online_calls | GET | 10 requests/second |
| /v2/phone/users/{userId}/calling_plans | POST | 10 requests/second |
| /v2/phone/users/{userId}/calling_plans/{planType} | DELETE | 10 requests/second |
| /v2/phone/users/{userId}/call_logs | GET | 1 request/second, 5000 requests/day |
| /v2/phone/call_logs | GET | 1 request/second, 5000 requests/day |
| /v2/phone/users/{userId}/phone_numbers | POST | 10 requests/second |
| /v2/phone/users/{userId}/phone_numbers/{phoneNumberId} | DELETE | 10 requests/second |
| /v2/phone/users/{userId}/recordings | GET | 1 request/second |
| /v2/phone/users/{userId} | GET | 10 requests/second |
| /v2/phone/users/{userId} | PATCH | 10 requests/second |
| /v2/phone/users/{userId}/settings | GET | 10 requests/second |
| /v2/phone/users/{userId}/voice_mails | GET | 1 request/second |

## 2020年2Q中の変更
Pro以上のプランには呼び出し制限が2倍、それ以上のプランは4倍になるとのこと。
https://marketplace.zoom.us/docs/guides/announcements#rate-limit-changes
無料プランに対する言及はないが、据置きか廃止かのどちらかのはず。

| | Pro Accounts | Business, Education, Enterprise & Partner Accounts |
|:--|:--|:--|
| Light | 20 requests/second  | 60 requests/second  |
| Medium | 10 requests/second  | 40 requests/second  |
| Heavy  | 5 requests/second 30,000 requests/day  | 20 requests/second 60,000 requests/day |
| Resource-intensive  | 6 requests/minute  | 12 requests/minute  |


# APIの利用可能状況は大きく変わっていきそう
Zoomのフォーラムの最上部に以下の記述がある。
コロナの影響でZoomの需要が急増しており、サービスを持続するために至急変えていくとのこと。

> Developer impacting changes during COVID-19
What does this mean?
During these tough times, we are seeing a massive increase in demand for our services. To continue serving our incredible services to our customers and developers, we may be making changes rapidly. Most of these changes will be temporary but we will make sure to note that below.
https://devforum.zoom.us/t/zoom-free-license-and-rest-api/6456

APIの仕様に関しても、サービスの仕様変更に伴い順次変更があるとのこと。
> To ensure reliability of our service, we have made some backward incompatible changes in our APIs in accordance to the changes in our product. The these changes will take effect starting April 03, 2020, unless otherwise noted. For more details you can visit our Developer Announcement page 64 and Changelog page 20

世の中の状況的もZoomのサービス状況的にもしばらく大きく変わっていきそうなので、一時情報を拾っていく方が良いだろう。