ドキュメント

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/json

RSSの再取得を要求する

次の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トークンを第三者へ共有したり、ブラウザ上の公開コードへ埋め込んだりしないでください。