ご注意 X API v2 向けの新しいコンプライアンスツールとして batch compliance をリリースしました。この新しいツールを使用すると、大量の投稿 ID またはユーザー ID を含むデータセットをアップロードしてコンプライアンス状況を取得でき、どのデータに対して対応が必要かを判断し、保有するデータセットをコンプライアンス要件に準拠させることができます。
さらに、batch compliance と compliance firehose の両方が投稿の編集をサポートするように更新されました。compliance firehose では、新たに ‘tweet_edit’ イベントが追加されています。詳細については、Compliance Data Objects のドキュメントを参照してください。Edit Posts fundamentals ページでは、投稿の編集メタデータの仕組みについて詳しく学ぶことができます。
概要
Enterprise
X の中核的な価値観の 1 つは、ユーザーの声を守り、尊重することです。これには、ユーザーが X 上で共有することを選択したコンテンツを削除、変更、または編集する際の、その期待や意図を尊重することも含まれます。これは、世界最大級の公開型リアルタイム情報プラットフォームの長期的な健全性にとって、極めて重要であると私たちは考えています。X はコントロールをユーザーの手に委ね、各ユーザーが自分自身の X 体験を管理できるようにしています。X データを受け取るビジネス利用者には、エンドユーザーの期待や意図を尊重する責任があると私たちは考えています。
X プラットフォーム上で発生し得るコンプライアンスイベントの種類について詳しくは、Honoring User Intent on X を参照してください。
API を通じて X データを利用するあらゆる開発者や企業には、ユーザーコンテンツへの変更を尊重するために、あらゆる合理的な努力を行う義務があります。この義務は、削除、変更、共有オプションの変更 (例: コンテンツが保護された、または配信保留の状態になるなど) といったユーザーイベントにも及びます。これは、ユーザーが自分のポストを編集した場合も含まれます。この義務が X データの利用にどのような影響を与えるかについては、Developer Policy および/またはお客様の X Data Agreement に記載されている具体的な文言を参照してください。
X では、これらのユーザーコンプライアンスイベントに関する情報や、特定のポストまたはユーザーが一般公開されているかどうかを提供する、次のようなソリューションを提供しています。各ソリューションとその一般的な統合パターンの概要を以下に示します。
GET statuses/lookup および GET users/lookup
- フォーマット: REST API。参照: GET statuses/lookup および GET users/lookup。
- これらのエンドポイントは、常に編集済みポストの最新バージョンを返します。編集機能が導入された後に作成された投稿を表すすべての Post オブジェクトには、ポスト編集メタデータが含まれます。これは、実際には編集されていない投稿についても同様です。
- すべての投稿について、作成から 30 分を経過した後に行われたリクエストでは、その投稿の最終状態が返されます。
- API リクエスト内で呼び出し元が指定した特定の投稿またはユーザーの可用性に関する情報を返します。
- 特定の投稿/ユーザーの現在の可用性状態を、その都度スポットチェックする目的で使用できます。
- 特定のポストまたはユーザーの、ある時点における現在の状態を確認する方法を必要とするお客様に最適です。
-
これらの API は、コンテンツの可用性を確認する必要があるお客様が利用できる有用なメカニズムを提供します。たとえば次のような場合です:
- 投稿を表示する場合
- ポストまたはユーザーと 1:1 でやり取りする場合
- 許可されたファイルダウンロードを通じて X コンテンツを第三者に配信する場合
- 投稿を長期間保存する場合
Compliance Firehose (エンタープライズ限定)
- 形式: ストリーミング API。詳細は Compliance Firehose を参照してください。
- X 上の コンプライアンスアクティビティ のリアルタイムストリームを配信します。これらのアクティビティには、ポストが編集されたタイミングなどが含まれます。
- プラットフォーム上で新しいコンプライアンスイベントが発生した際に、保存しているデータセット全体のコンプライアンス状態を維持するために利用できます。
- 大量の X データを長期間取得・保存するお客様に最適です。
ガイド
コンプライアンスに関するベストプラクティス
推奨事項とベストプラクティス
- 数値の Post ID と User ID を保存するデータ格納スキーマを構築する: ユーザーのメッセージに対しては、そのユーザーからのすべてのポストに対してアクションを実行する必要があります。したがって、すべてのコンプライアンスメッセージは数値 ID のみで配信されるため、数値 ID に基づいてポストとユーザーの関係を維持できるようにストレージスキーマを設計することが重要です。データ利用者は、ポスト ID とユーザー ID の両方でコンプライアンスイベントを監視し、ローカルデータストアを適切に更新できる必要があります。
-
すべてのコンプライアンスステータスに対応するスキーマを構築する: さまざまなアプリケーションでコンプライアンスアクティビティをどのように処理するかによっては、データストアに別のメタデータを追加する必要が生じる場合があります。たとえば、データ利用者は、
status_withheldメッセージの影響を受ける国においてコンテンツの表示を制限しやすくするために、既存のデータベースにメタデータを追加することを選択する場合があります。 - Retweet 削除の扱い: Retweet は、元のメッセージが Retweet 内のオブジェクトとしてネストされている、特別な種類のポストです。この場合、Retweet には 2 つのポスト ID が参照されます。1 つは Retweet 自体の ID、もう 1 つは (ネストされたオブジェクトに含まれる) 元のメッセージの ID です。元のメッセージが削除されると、元の ID に対してポスト削除メッセージが発行されます。ポスト削除イベントは通常、すべての Retweet に対する削除イベントをトリガーします。ただし、一部のケースではすべてが送信されるとは限らないため、クライアントシステムは不完全な Retweet 削除に対しても問題なく動作するようにしておく必要があります。元の ID の削除のみで、その後のすべての Retweet を削除するには十分であるはずです。Retweet を保存する際には元のポスト ID を参照し、ポスト削除イベントを受信したときに、参照されているすべての Retweet を削除することがベストプラクティスです。
コンプライアンス・データオブジェクト
Compliance Firehose API
- ユーザーのステータスの詳細はこちらを、削除された投稿に関する開発者ポリシーはこちらを参照してください。
- Compliance Firehose は、
tweet_editイベントに対応するよう更新されました。 - いくつかのユーザー削除・保護・凍結イベントは必ずしも永続的ではなく、状態を何度でも切り替えることができます。これには、user_delete、user_undelete、user_protect、user_unprotect、user_suspend、user_unsuspend が含まれます。
- user_delete が行われた場合、ユーザーがアカウントの user_undelete を選択しなかった場合に限り、その 30 日後に status_delete が続きます。user_delete がユーザー自身によって取り消され、その後 30 日後に当該ユーザーのすべての投稿が削除されない可能性があります。
- user_suspend は、ユーザーが user_unsuspend イベントの対象とならない限り有効なままであるアクションです。これらには 30 日間の猶予期間による変更は適用されません。
ペイロードの例
ポストの削除
差し止められたポスト
削除
削除の取り消し
位置情報の削除
ユーザー削除
ユーザー削除の取り消し
保留されたユーザー
ユーザーの保護
ユーザーの非公開解除
ユーザー凍結
ユーザーの凍結解除
Compliance Firehose の統合
Compliance Firehose との統合
- Compliance Firehose のストリーミング API の各パーティションへのストリーミング接続を確立する
- 大量データに対応し、非同期プロセスを使用してストリームの取り込みを後続処理から分離する
- 何らかの理由で切断された場合に、各ストリームパーティションに自動的に再接続する
- 上記のガイダンスに従って、保持しているポストおよびユーザーデータに関連するコンプライアンスイベントを処理する
Twitter におけるユーザーの意図の尊重
ユーザー
ステータス
ユーザーとステータスの変更の追跡
APIリファレンス
GET compliance/firehose
メソッド
認証
Authorization ヘッダーに含めて送信する必要があります。
GET /compliance/:stream
Example Curl Request
以下のサンプルリクエストは、コマンドラインで cURL を使用して実行したものです。
partition=1 の Compliance firehose にのみ接続しています。このストリーム全体を取り込むには、8 つすべてのパーティションに接続する必要があります。
レスポンスコード
その他の推奨事項とベストプラクティス
- 数値のツイート ID およびユーザー ID を保存するデータ格納スキーマを構築する: ユーザーメッセージでは、そのユーザーのすべてのツイートに対して処理を行う必要があります。したがって、すべてのコンプライアンスメッセージは数値 ID のみで配信されるため、数値 ID に基づいてツイートとユーザーの関係を維持するようにデータ格納スキーマを設計することが重要です。データ利用者は、ツイート ID とユーザー ID の両方でコンプライアンスイベントを監視し、ローカルデータストアを適切に更新できる必要があります。
-
すべてのコンプライアンスステータスに対応するスキーマを構築する: さまざまなアプリケーションでコンプライアンス関連の処理をどのように行うかによっては、他のメタデータをデータストアに追加する必要がある場合があります。たとえば、データ利用者は、
status_withheldメッセージの影響を受ける国でコンテンツの表示を制限しやすくするために、既存のデータベースにメタデータを追加することを検討するかもしれません。 - リツイート削除の扱い: リツイートは特殊な種類のツイートで、元のメッセージがリツイート内のオブジェクトとして入れ子になっています。この場合、リツイート内には 2 つのツイート ID が参照されます — リツイート自体の ID と、 (入れ子のオブジェクト内に含まれる) 元のメッセージの ID です。元のメッセージが削除されると、元の ID に対するツイート削除メッセージが発行されます。その後、すべてのリツイートに対して追加の削除メッセージは発行されません。元の ID の削除だけで、後続のすべてのリツイートを削除するのに十分です。