API は OAuth2 による認証と、LINEへの通知用のものとで構成されます。全体として以下のような流れになります。
以上の流れのうち連携サービスで必要と思われる実装箇所は以下の通りです
通知設定確認や通知解除の機能はこちら側のウェブページからも提供しますので、APIでの実装は必須ではありません。
概要:OAuth2 (https://tools.ietf.org/html/rfc6749) に準拠したプロバイダになります。認証方法は authorization_code です。ここで得られるアクセストークンは、通知サービスのみで利用可能です。
認証系 API のエンドポイントのホスト名は notify-bot.line.me になります。
OAuth2 における authorization endpoint URI です。
リクエストメソッド/ヘッダ | 値 |
---|---|
Method | GET |
受けつけるパラメータは以下の通りです。
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
response_type | 必須 | 固定値 | "code" を指定します |
client_id | 必須 | string | 発行した OAuth のクライアントIDを指定します |
redirect_uri | 必須 | uri |
登録したリダイレクトURIを指定します。 code パラメータ漏洩を防ぐため、リダイレクトURIは https とすることをお勧めします。 |
scope | 必須 | 固定値 | "notify" を指定します |
state | 必須 | string |
CSRF 攻撃に対応するための任意のトークンを指定します LINE Notify ではウェブアプリケーション連携を想定しているため state パラメータを必須とさせて頂いています。 |
response_mode | 任意 | string |
"form_post" を指定すると、リダイレクトに代わり form post によって redirect_uri への POST リクエストとなります これはレスポンスの code パラメータが特定環境で漏洩することを防ぐためであるため、指定することをお勧めします |
成功時には以下のパラメータをつけて、指定された redirect_uri にリダイレクトまたはフォームによってPOSTされます。
パラメータ名 | 型 | 説明 |
---|---|---|
code | string | access token 取得用のコードです |
state | string | 指定された state パラメータがそのまま渡されます |
失敗時には以下のパラメータをつけて、指定された redirect_uri にリダイレクトされます。
パラメータ名 | 型 | 説明 |
---|---|---|
error | string | OAuth2 https://tools.ietf.org/html/rfc6749#section-4.1.2 で定義されるエラーコードが指定されます |
error_description | string | OAuth2 https://tools.ietf.org/html/rfc6749#section-4.1.2 で定義される通り、クライアント開発者向けにエラー内容についての追加の説明を返します。未定義または空文字列である可能性があります。 |
state | string | 指定された state パラメータがそのまま渡されます |
OAuth2 の token endpoint になります。
リクエストメソッド/ヘッダ | 値 |
---|---|
Method | POST |
Content-Type | application/x-www-form-urlencoded |
受けつけるパラメータは以下の通りです。
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
grant_type | 必須 | 固定値 | "authorization_code" を指定します |
code | 必須 | string | リダイレクト時に付与された code パラメータの値を指定します |
redirect_uri | 必須 | uri | authorization endpoint API に指定した redirect_uri を指定します |
client_id | 必須 | string | 発行した OAuth のクライアントIDを指定します |
client_secret | 必須 | string | 発行した OAuth のクライアントシークレットを指定します |
レスポンスヘッダ | 値 |
---|---|
Status |
200: 成功時 400: リクエストが不正 上記以外: 時間をおいて再試行するか処理を中断 |
Content-Type | application/json |
レスポンス本文はJSONのobject型になります。
name | type | value description |
---|---|---|
access_token | string |
認証用アクセストークンです。後述の通知系APIを呼ぶ際に使用します このアクセストークンに有効期限はありません。 |
概要:LINE への通知のためのAPIです。全て前もって OAuth 認証が必須となります。連携状況確認・実際の通知・連携の解除ができます。
通知系 API のエンドポイントのホスト名は notify-api.line.me になります。
リクエストヘッダに Authorization: Bearer <access_token> を付与してアクセスします。使用したアクセストークンが無効な場合、RFC6750 に基きステータスコード 401 と共に WWW-Authenticate ヘッダを返します。
アクセストークンに関連付けられたユーザ・またはグループに対して通知を送信します。
もしこのAPIの呼び出しでステータスコード 401 がレスポンスされた場合、該当するアクセストークンは LINE Notify 側で無効化 (主にユーザによる無効化) されたことを示します。この場合、連携サービス側でも連携情報を削除してしまってかまいません。
リクエストは application/x-www-form-urlencoded (HTMLのデフォルトのフォームの送信形式と同一です) で、POST メソッドを使用します。
連携サービス側で LINE に通知したいイベントが発生したとき
リクエストメソッド/ヘッダ | 値 |
---|---|
Method | POST |
Content-Type | application/x-www-form-urlencoded OR multipart/form-data |
Authorization | Bearer <access_token> |
受けつけるパラメータは以下の通りです。
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
message | 必須 | String | 最大 1000文字 |
imageThumbnail | 省略可能 | HTTPS URL | 最大 240×240px / JPEG のみ許可されます |
imageFullsize | 省略可能 | HTTPS URL | 最大 2048×2048px / JPEG のみ許可されます |
imageFile | 省略可能 | File |
LINE上の画像サーバーにアップロードします。 imageThumbnail/imageFullsizeと同時に指定された場合は、imageFileが優先されます。 1時間にuploadできる量に制限があります。 |
stickerPackageId | 省略可能 | Number |
パッケージ識別子。 Stickerの識別子は以下を参照ください。 Sticker一覧 |
stickerId | 省略可能 | Number | Sticker識別子 |
notificationDisabled | 省略可能 | Boolean |
true: メッセージ送信時に、ユーザに通知されない。 false: メッセージ送信時に、ユーザに通知される。ただし、LINEで通知をオフにしている場合は通知されません。 デフォルト値は false です。 |
レスポンスヘッダ | 値 |
---|---|
status |
200: 成功 400: リクエストが不正 401: アクセストークンが無効 500: サーバ内エラーにより失敗 上記以外: 時間をおいて再試行するか処理を中断 |
Content-Type | application/json |
レスポンス本文はJSONのobject型になります。
name | type | value description |
---|---|---|
status | number |
HTTP ステータスコードに準拠した値 200: 成功時 400: リクエストが不正 401: アクセストークンが無効 |
message | string | 人間可読なメッセージです |
連携状態を確認するAPIです。この API を使うと、使用したアクセストークンが有効かどうかを確認することができます。取得できる場合には関連付けられたユーザ・またはグループ名を取得することができます。
連携サービス側の画面で、どのグループへの通知が設定されているかユーザに表示させたい場合に使用します。/api/notify や /api/revoke を呼ぶ前にこのAPIで状態を確認する必要はありません。
もしこのAPIの呼び出しでステータスコード 401 がレスポンスされた場合、該当するアクセストークンは LINE Notify 側で無効化 (主にユーザによる無効化) されたことを示します。この場合、連携サービス側でも連携情報を削除してしまってかまいません。
連携サービス側でユーザに連携状態を確認させたいとき
LINE Notify 側でも同様の機能を提供しますので、このAPIへの対応は必須ではありません。
リクエストメソッド/ヘッダ | 値 |
---|---|
Method | GET |
Authorization | Bearer <access_token> |
メッセージ本文にJSONとして詳細な情報が記載されます。
レスポンスヘッダ | 値 |
---|---|
Status |
200: 成功時・アクセストークンは有効 401: アクセストークンは無効 上記以外: 時間をおいて再試行するか処理を中断 |
Content-Type | application/json |
レスポンス本文はJSONのobject型になります。
name | type | value description |
---|---|---|
status | number |
HTTP ステータスコードに準拠した値 200: 成功時・アクセストークンは有効 401: アクセストークンは無効 |
message | string | 人間可読なメッセージです |
targetType | string |
通知先がユーザの場合は "USER" 通知先がグループの場合は "GROUP" |
target | string |
通知先がユーザの場合はユーザ名、ただし内部処理中に取得に失敗した場合は null 通知先がグループの場合はグループ名、ただし該当ユーザがグループを既に抜けている場合は null |
連携サービス側から通知設定を解除するためのAPIです。このAPIを使うと、使用したアクセストークンが直ちに無効化され、以降のAPIアクセスに使用できなくなります。
連携サービス側での連携削除のステップは以下のようになります
連携サービス側でユーザに連携状態を解除させたいとき
LINE Notify 側でも同様の機能を提供しますので、このAPIへの対応は必須ではありません。
リクエストメソッド/ヘッダ | 値 |
---|---|
Method | POST |
Content-Type | application/x-www-form-urlencoded |
Authorization | Bearer <access_token> |
パラメータはありません。
メッセージ本文にJSONとして詳細な情報が記載されます。
レスポンスヘッダ | 値 |
---|---|
Status |
200: 成功時 401: アクセストークンは無効 上記以外: 時間をおいて再試行するか処理を中断 |
Content-Type | application/json |
レスポンス本文はJSONのobject型になります。
name | type | value description |
---|---|---|
status | number |
HTTP ステータスコードに準拠した値 200: 成功時 401: アクセストークンが無効 |
message | string | 人間可読なメッセージです |
各サービスごとに1時間にAPIをcallできる回数の上限が設定されています。
デフォルトは1000回に設定されています。
上限はaccess tokenごとに設定されています。
API Rate Limitのstatusは、APIの以下のresponse headerで確認することができます。
Header name | Description |
---|---|
X-RateLimit-Limit | 1時間に可能なAPI callの上限回数 |
X-RateLimit-Remaining | API callが可能な残りの回数 |
X-RateLimit-ImageLimit | 1時間に可能なImage uploadの上限回数 |
X-RateLimit-ImageRemaining | Image uploadが可能な残りの回数 |
X-RateLimit-Reset |
リセットされる時刻 (UTC epoch seconds) ex:1472195604 |
1ユーザーあたり100個まで発行することが可能です。