ドキュメント
RSS再取得API
最新のAPI仕様は、リポジトリで管理しているAPIドキュメントで公開しています。認証、ファイルアップロード、RSS再取得、ビデオストックの仕様とサンプルを確認できます。
APIドキュメント: https://listen.style/api-docs
RSS再取得API: https://listen.style/api-docs/rss-refresh
ビデオストックAPI: https://listen.style/api-docs/video-stock
外部サービスからRSSで登録しているポッドキャストについて、LISTENへRSSの再取得を要求するGraphQL APIです。配信元でエピソードを公開した直後など、通常の定期取得を待たずに更新を要求したい場合に利用できます。
利用条件
- 対象番組のオーナーとして認証されているユーザーのみ利用できます。
- 外部サービスからRSSで登録している番組が対象です。LISTENで配信している番組には利用できません。
- 任意のRSS URLを指定することはできません。podcastIdで指定した番組に登録済みのRSSだけを取得します。
エンドポイントと認証
GraphQLエンドポイントは次のURLです。
https://listen.style/graphqlログイン後、APIトークンの管理からトークンを作成し、AuthorizationヘッダーへBearerトークンとして指定してください。トークンは作成時に一度だけ表示されるため、安全な場所に保管してください。
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/jsonRSSの再取得を要求する
次のmutationへ、対象番組のLISTEN内部IDをpodcastIdとして渡します。番組IDの確認方法が分からない場合は、LISTENへお問い合わせください。
mutation RequestPodcastRssRefresh($podcastId: ID!) {
requestPodcastRssRefresh(podcastId: $podcastId) {
accepted
status
requestedAt
retryAfterSeconds
}
}variablesの例:
{
"podcastId": "123"
}curlでのリクエスト例:
curl https://listen.style/graphql \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"query":"mutation RequestPodcastRssRefresh($podcastId: ID!) { requestPodcastRssRefresh(podcastId: $podcastId) { accepted status requestedAt retryAfterSeconds } }","variables":{"podcastId":"123"}}'レスポンス
- QUEUED:再取得要求を受け付け、優先キューへ登録しました。acceptedはtrueです。
- RATE_LIMITED:回数制限に達しています。acceptedはfalseです。retryAfterSeconds経過後に再試行してください。
- UNSUPPORTED:LISTEN配信番組など、このAPIの対象外です。acceptedはfalseです。
requestedAtは要求を受け付けた日時です。QUEUEDは処理の完了ではなく、再取得要求を受け付けたことを示します。
回数制限
- 同じ番組:5分間に1回まで
- 同じユーザー:1時間に30回まで
どちらかの制限に達した場合はRATE_LIMITEDを返します。retryAfterSecondsには、次に要求できるまでのおおよその秒数が入ります。
更新完了の確認
RSSの取得とエピソード反映は非同期で行われます。QUEUEDを受け取った後は、対象エピソードがLISTENに追加されたかを確認してください。自動処理では、RSSのGUIDなどを使って一定間隔で確認し、反映を待ってから次の処理へ進むことをおすすめします。
エラーについて
未認証の場合は認証エラー、対象番組のオーナーでない場合は権限エラーになります。APIトークンを第三者へ共有したり、ブラウザ上の公開コードへ埋め込んだりしないでください。