ドメインの取得・管理が出来るAPIを調査した件

どーも、hondam です。

ファーストサーバ Advent Calendar 2017 の3日目を担当させていただきます。

当社では数ヶ月前に 「[DTMS-API（ディーティーエムエス エーピーアイ）](https://www.firstserver.co.jp/news/topics/2017/2017080101.html)」 なるAPIを公開しました。
ファーストサーバはICANN認定レジストラ、JPRS指定事業者として長年に渡り、gTLDや汎用・属性JPドメインの取得・管理が出来るサービスを提供しています。
その中で法人様向けサービスと致しまして、「[DTMS（ドメイン・トータル・マネジメント・サービス）](http://do-reg.jp/business/dtms_intro.html)」と呼ばれるリセールにも活用可能なドメイン取得・管理サービスがありますが、当該APIを利用することで、お客様のソリューションと連携してドメインの取得や廃止が容易に実施することが可能になります。
これにより、例えばネットショップ作成サイトを運営している場合などで、申し込みのついでに独自ドメインを取得することが可能になったりします。

さて本題ですが、では当社のDTMS-APIと同じようなAPIは巷にどのくらい存在しているのでしょうか？
ということで、世界各国の主要なレジストラがそういったAPIを提供しているのかを調査してみました。

# 調査対象レジストラ
レジストラや指定事業者はそれぞれICANNやJPRSの公式サイトに載っています。

* [ICANN認定レジストラ一覧](https://www.icann.org/registrar-reports/accredited-list.html)
* [JPRS指定事業者一覧](https://jprs.jp/registration/list/)

全てを調査対象にしたいところですが、調査時間も限られてるので、ドメイン保有数シェア世界トップ10と、日本国内のレジストラに限定して調査してみようと思います。

## ドメイン保有数シェア世界トップ10
ドメイン保有数に関しては 「[webhosting.info](https://webhosting.info/domain-registrar-statistics)」というサイトのデータを参考にしました。

1. [GoDaddy.com, LLC](https://www.godaddy.com/) (アメリカ)
2. [eNom, LLC](https://www.enom.com/) (アメリカ)
3. [Tucows Domains Inc.](https://www.tucowsdomains.com/) (カナダ)
4. [Network Solutions, LLC](https://www.networksolutions.com) (アメリカ)
5. [HiChina Zhicheng Technology Limited](https://www.net.cn/) (中国)
6. [PDR Ltd. d/b/a PublicDomainRegistry.com](https://publicdomainregistry.com/) (インド)
7. [TurnCommerce, Inc. DBA NameBright.com](https://www.namebright.com/) (アメリカ)
8. [1&1 Internet SE](https://registrar.1and1.info) (ドイツ)
9. [GMO Internet, Inc. d/b/a Onamae.com](https://www.onamae.com/) (日本)
10. [Wild West Domains, LLC](http://www.wildwestdomains.com/) (アメリカ)

## 日本国内のレジストラ
サイトは全て、ICANN公式サイトに記載のレジストラ名及びリンク先となります(※当社は除く)

* [BR domain Inc. dba namegear.co](https://namegear.co/)
* [Dai Nippon Joho System Co., Ltd.](https://www.dainippon.co.jp/)
* [GMO Brights Consulting Inc.](https://brightsconsulting.com/)
* [GMO Internet, Inc. d/b/a Onamae.com](https://www.onamae.com/)
* [GMO-Z.com Pte. Ltd.](https://z.com/sg/)
* [Interlink Co., Ltd.](https://www.gonbei.jp/)
* [Japan Registry Services Co., Ltd.](https://jprs.jp/registrar/)
* [JPRS Registrar Co., Ltd.](https://jprs-registrar.co.jp/)
* [Kagoya Japan Inc.](https://www.kagoya.jp/)
* [Mfro Inc.](https://www.mfro.net/)
* [Nakazawa Trading Co.,Ltd.](https://nakazawa-trading.co.jp/)
* [Netowl, Inc.](https://www.netowl.jp/)
* [NHN Techorus Corp.](https://nhn-techorus.com/)
* [PierX, Inc](https://pierx.co/)
* [PSI-Japan, Inc.](https://www.psi.jp/)
* [Purenic Japan Inc.](https://www.purenic.com/)
* [Sky Clear Co., Ltd.](https://www.skyclear.co.jp/)
* [Taka Enterprise Ltd](https://www.takaenterprise.com/)
* [WingNames Co., Ltd.](https://www.wingnames.co.jp/)
* [WIXI Incorporated](https://www.wixi.jp/)

# 調査方法
調査対象のリンクから辿れる範囲のページで、APIの紹介やAPIドキュメントがないかを調査する

# 調査期間
この記事を書くための2、3日間くらい

# 調査結果
## ドメイン保有数シェア世界トップ10

| レジストラ名 | API |
|---|---|
| GoDaddy.com, LLC (アメリカ) | [○](https://developer.godaddy.com/) |
| eNom, LLC (アメリカ) | [○](https://www.enom.com/api/) |
| Tucows Domains Inc. (カナダ) | [○](https://opensrs.com/integration/api/) |
| Network Solutions, LLC (アメリカ) | [○](https://www.srsplus.com/resellertools/api.aspx) |
| HiChina Zhicheng Technology Limited (中国) | [○](https://cn.aliyun.com/product/apigateway) |
| PDR Ltd. d/b/a PublicDomainRegistry.com (インド) | ドメイン関連のAPIは見当たらないがAPIの記載あり |
| TurnCommerce, Inc. DBA NameBright.com (アメリカ) | [○](https://www.namebright.com/Api) |
| 1&1 Internet SE (ドイツ) | ドメイン関連のAPIは見当たらないがAPIの記載あり |
| GMO Internet, Inc. d/b/a Onamae.com (日本) | [○](https://help.onamae.com/app/answers/detail/a_id/014101) |
| Wild West Domains, LLC (アメリカ) | Godaddyと同様 |

サイトに記載の見つからないレジストラもありますが、ドメインの保有数やリセラープログラムから考えて、ドメイン保有数の上位レジストラは、記載がなくともおそらくAPIの類はもっているものと思われます。

## 日本国内のレジストラ
| レジストラ名 | API |
|---|---|
| BR domain Inc. dba namegear.co | 見当たらず |
| Dai Nippon Joho System Co., Ltd. | 見当たらず |
| GMO Brights Consulting Inc. | 見当たらず |
| GMO-Z.com Pte. Ltd. | 見当たらず |
| Interlink Co., Ltd. | 見当たらず |
| Japan Registry Services Co., Ltd. | 見当たらず |
| JPRS Registrar Co., Ltd. | 見当たらず |
| Kagoya Japan Inc. | 見当たらず |
| Mfro Inc. | 見当たらず |
| Nakazawa Trading Co.,Ltd. | 見当たらず |
| Netowl, Inc. | 見当たらず |
| NHN Techorus Corp. | 見当たらず |
| PierX, Inc | 見当たらず |
| PSI-Japan, Inc. | [○](http://psi.jp/software/psi-japan-%E3%81%AE%E6%8F%90%E4%BE%9B%E3%81%99%E3%82%8Bapi) |
| Purenic Japan Inc. | 見当たらず |
| Sky Clear Co., Ltd. | 見当たらず |
| Taka Enterprise Ltd | 見当たらず |
| WingNames Co., Ltd. | 見当たらず |
| WIXI Incorporated | APIの記載ありだが、ドキュメント見当たらず |

## みんな大好き？AWSとGoogle
クラウド巨頭も例に漏れずドメイン登録サービスがあります。
AmazonやGoogleはレジストリであり、レジストラであり、リセラーでもあるので、色んな種類のドメインを扱っていますね。
ということでついでに調査してみました。

* [Amazon Route 53](http://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/registrar.html)
* [Google Domains](https://developers.google.com/domains/widget/)
    * WidgetタイプのAPIしか見当たらなかったけど、他にもあるかも..

# API仕様
ドメインの取得・管理が出来るAPIの仕様に関して書いておこうと思います。
いくつかAPIをピックアップしますが、ドメインの操作に関してはやることが限られているので、ほぼ似通ったAPI仕様になっています。

| アクション概要 / レジストラ名 | GoDaddy | AWS Route53 | ファーストサーバ | 
|---|---|---|---|
| ドメインが取得可能かチェックする | ○ | ○ | ○ |
| ドメインを登録する | ○ | ○ | ○ |
| ドメインのコンタクト情報を変更する | ○ | ○ | ○ |
| ドメインのネームサーバ情報を変更する | ○ | ○ | ○ |
| ドメインのコンタクト情報のプライバシー設定 | ○ | ○ | ○ |
| ドメインの情報を取得する | ○ | ○ | ○ |
| 登録したドメインの一覧を取得する | ○ | ○ |  |
| ドメインを更新する | ○ | ○ | ○ |
| ドメインの自動更新を停止する | ○ | ○ | ○ |
| ドメインを廃止する | ○ |  | ○ |
| ドメインのロックを有効にする | ○ | ○ | ○ |
| ドメインのロックを無効にする | ○ | ○ | ○ |
| ドメインのAuthCodeを取得する | ○ | ○ | ○ |
| ドメインが当該サービスに移管できるかチェックする |  | ○ | ○ |
| ドメインのレジストラ変更を申請する | ○ | ○ | ○ |
| ドメインのメタデータを取得する |  | ○ |  |
| ドメインにkey-value形式のメタデータを設定する |  | ○ |  |
| ドメインから推奨ドメイン名を取得する | ○ | ○ |  |
| ドメインの登録者情報のメールアドレスが有効か確認する | ○ | ○ |  |
| ドメインの登録者情報のメールアドレスが有効か検証する | ○ | ○ | ○ |

他にもDNSのレコードを操作するAPIが備わっている場合が多いですね。ここに記載しているアクションは一部なので、きになる方は実際のドキュメントを参照してみてください。

いずれもプロトコルはHTTPですが、GoDaddyはREST形式、Route53はヘッダーにアクションを、ファーストサーバはリクエスト内容にアクション名を含めてAPI呼び出しを行います。

# 調査結果
世界の主要なレジストラはほぼドメイン取得・管理用のAPIを提供しているようです。日本国内のレジストラに関しては、認定レジストラ数は20社近いが、3社しか実装していませんでした。クラウド大手のAmazonやGoogleもドメインが取得・操作可能はAPIは当然のように実装しており、ドキュメントも充実している結果となっていました。
もし自社サービスでユーザに独自ドメインを提供しようと考えている場合は参考にしてみてください。