2021年12月15日 2:03 PM

最近の更新を取得するAPIから通知したユーザー一覧の項目を削除します

Backlogを安定して運用し全てのお客様に安心してご利用いただくために、2022年2月9日から最近の更新を取得するAPIから通知したユーザー一覧の項目を削除します。後述するアクティビティの詳細を取得するAPIを利用すると、通知したユーザー一覧が取得できます。

 

対象となるAPIとその項目、項目の削除の背景、適用スケジュール、削除に伴いお客様でご対応が必要なケースについてご説明します。

 

対象となるAPI

項目の削除の対象となるAPIは、最近の更新の取得、プロジェクトの最近の活動の取得、ユーザーの最近の活動の取得の3つです。

最近の更新の取得

スペース内で発生した最近の更新を取得します。

https://developer.nulab.com/ja/docs/backlog/api/2/get-recent-updates/#

プロジェクトの最近の活動の取得

指定したプロジェクトで発生した最近の更新を取得します。

https://developer.nulab.com/ja/docs/backlog/api/2/get-project-recent-updates/#

ユーザーの最近の活動の取得

指定したユーザーの最近の更新を取得します。

https://developer.nulab.com/ja/docs/backlog/api/2/get-user-recent-updates/#

 

削除の対象となる項目

上記の3つのAPIのレスポンスからnotificationsの配列の中身が削除されます。例えば、課題の作成であれば@でメンションをしたユーザーや課題の追加をお知らせしたいユーザーに追加したユーザーのことを指します。

削除方法としてはnotificationsの項目自体を削除するのではなく、配列の中身を削除し固定で空の配列を返すように修正します。notificationsの項目自体を削除してしまうと、アプリケーションからAPIを呼び出していた際にレスポンスをパースする処理でエラーが発生する可能性があり、それを回避するためです。

 

notifications削除前のAPIレスポンス

[ 
    { 
        "id": 3153,
        "project": {...}, 
        "type": 2, 
        "content": {...}, 
       "notifications": [ 
            { 
                "id": 25, 
                "alreadyRead": false, 
                "reason": 2, 
                "user": { 
                    "id": 5686, 
                    "userId": "takada", 
                    "name": "takada", 
                    "roleType": 2, 
                    "lang": "ja", 
                    "mailAddress": "takada@nulab.example" 
                },
                "resourceAlreadyRead":false 
            }, 
            ...
        ],
        "createdUser": {...}, 
        "created": "2013-12-27T07:50:44Z"
    },
    ... 
] 

 

notifications削除後のAPIレスポンス

[ 
    { 
        "id": 3153,
        "project": {...}, 
        "type": 2, 
        "content": {...}, 
       "notifications": [],
        "createdUser": {...}, 
        "created": "2013-12-27T07:50:44Z"
    },
    ... 
] 

 

削除の背景

今回、最近の更新を取得するAPIから更新を通知したユーザー一覧の項目を削除するに至った背景についてご説明します。

APIのレート制限下でも安定的な稼働に影響がある可能性がある

Backlogでは、安定稼働の観点から1分間あたりのAPI利用回数に制限を設けております。しかしながら通常利用の範囲であっても、一部のお客様の環境で上記のAPIを利用すると、システムに大きな負荷がかかるケースがあることが判明いたしました。ヌーラボでは日々サーバーのパフォーマンスチューニングを行っておりますが、現在の仕様を維持したまま安定的な稼働ができるまで改善することは非常に難しいと判断いたしました。

 

削除にともないお客様でご対応が必要なケース

対象となるAPIを利用中でかつAPI内の更新を通知したユーザー一覧(notifications)を使用している場合はお客様でご対応が必要となります。

対象となるAPIを利用中であっても更新を通知したユーザー一覧(notifications)を使用していない場合は、アプリケーションからAPIを呼び出していた際にレスポンスをパースする処理でエラーが発生することはないため対応は不要です。

更新を通知したユーザー一覧取得する

更新を通知したユーザー一覧(notifications)は、アクティビティ詳細のAPIを利用して取得することが可能です。アクティビティ詳細APIの詳しい情報は下記のページでご確認いただけます。

https://developer.nulab.com/ja/docs/backlog/api/2/get-activity/#

  1. 上記の対象のAPIから最近の更新を取得します。
  2. notificationsを取得したいアクティビティのidを確認します。下記の例だと 3153 です。

 

[ 
    { 
        "id": 3153,
        "project": {...}, 
        "type": 2, 
        "content": {...}, 
        "notifications": [], 
        "createdUser": {...}, 
        "created": "2013-12-27T07:50:44Z"
    },
    ... 
] 

 

  1. アクティビティ詳細APIに2で取得したIDを使ってリクエストを送ります。
  2. アクティビティ詳細APIのレスポンスからnotificationsを取得できます。

 

{
   "id": 3153,
    "project": {...}, 
    "type": 2, 
    "content": {...}, 
    "notifications": [
        {
            "id": 25,
            "alreadyRead": false,
            "reason": 2,
            "user": {
                "id": 25,
                "userId": "admin",
                "name": "admin",
                "roleType": 1,
                "lang": "ja",
                "mailAddress": "eguchi@nulab.example"
            }
        }
    ],
    "createdUser": {...}, 
    "created": "2013-12-27T07:50:44Z"
}

 

ただし、対象となるAPIで取得した全ての更新に対して並行でアクティビティ詳細にリクエストを出すとAPIのレート制限(https://developer.nulab.com/ja/docs/backlog/rate-limit/#)に達してしまう可能性があります。

お客様で更新を通知したユーザー一覧(notifications)が必要なアクティビティのみ、アクティビティ詳細のAPIを利用するようにお願いします。

 

本対応についてのご協力をお願いいたします

本対応は2022年1月上旬に適用開始を予定しております。今回の対応によりお手数をおかけすることになり申し訳ございません。Backlogを安定して運用し、全てのお客様に安心して日々の業務でご利用いただくためにも、ぜひご理解とご協力いただければ幸いです。

 

削除対象のAPIやアクテビティ詳細のAPIなど、本件に関するご質問やフィードバックは問い合わせより受け付けております。ぜひお気軽にご連絡くださいませ。

一覧に戻る