AIイノベーションズ
Railway/Guides

パブリックAPIの使用

RailwayのGraphQLパブリックAPIを発見します。

著者: AIイノベーションズ 阿部隼也X / Twitter

Railwayはこちら

パブリックAPIの使用

RailwayのパブリックAPIはGraphQLで構築されており、Railwayダッシュボードを強化するものと同じAPIです。

パブリックAPIを使用して、RailwayをCI/CDパイプラインやその他のワークフローに統合します。

GraphQLの理解

GraphQLを使用したことがない場合は、開始するためのいくつかのリソースを次に示します。

  1. GraphQLの公式紹介
  2. HasuraによるGraphQL基礎コース
  3. GraphQLはより良いRESTです REST APIとどう違うかを理解する

パブリックAPIへの接続

パブリックAPIに接続してクエリを実行するには、エンドポイントURLと認証用のトークンが必要です。

エンドポイント

パブリックAPIは、次のエンドポイントでアクセスできます。

https://backboard.railway.app/graphql/v2

トークンの作成

APIを使用するには、APIトークンが必要です。作成できるトークンには3つのタイプがあります。

チームトークンとアカウントトークン

アカウント設定のトークンページからAPIトークンを作成できます。

  • チームトークン - Team ドロップダウンでチームを選択して、チームに関連付けられたトークンを作成します。チームトークンは、チームのすべてのリソースにアクセスでき、Railway上の個人リソースへのアクセスには使用できません。このトークンはチームメイトと自由に共有してください。
  • アカウントトークン - チームを選択しない場合、トークンはRailwayアカウントに関連付けられ、所属するチームを含むすべてのリソースにアクセスできます。このトークンは他の誰とも共有しないでください。

チームはプロ機能です。

プロジェクトトークン

プロジェクト設定のトークンページからプロジェクトトークンを作成できます。

プロジェクトトークンは、プロジェクト内の特定の環境にスコープされており、その環境へのリクエストを認証するためにのみ使用できます。

テストクエリの実行

トークンを取得したら、リクエストのAuthorizationヘッダー内で渡すことができます。

アカウントトークンの使用

お好みのターミナルで以下のクエリを試すことができます。Railwayでの名前とメールアドレスが返されるはずです。

curl --request POST \
  --url https://backboard.railway.app/graphql/v2 \
  --header 'Authorization: Bearer <API_TOKEN_GOES_HERE>' \
  --header 'Content-Type: application/json' \
  --data '{"query":"query { me { name email } }"}'

注: このクエリは、返されるデータが個人アカウントにスコープされているため、チームまたはプロジェクトトークンでは使用できません

チームトークンの使用

チームトークンがある場合は、それを使用して特定のチームへのリクエストを認証できます。以下のクエリは、チーム名とIDを返すはずです。

curl --request POST \
  --url https://backboard.railway.app/graphql/v2 \
  --header 'Team-Access-Token: <TEAM_TOKEN_GOES_HERE>' \
  --header 'Content-Type: application/json' \
  --data '{"query":"query { team(id: \"<TEAM_ID_GOES_HERE>\") { name id } }"}'

注: このクエリは、チームのメンバーである限り、アカウントトークンでも使用できます

プロジェクトトークンの使用

プロジェクトトークンがある場合は、それを使用してプロジェクト内の特定の環境へのリクエストを認証できます。以下のクエリは、プロジェクトと環境のIDを返すはずです。

curl --request POST \
  --url https://backboard.railway.app/graphql/v2 \
  --header 'Project-Access-Token: <PROJECT_TOKEN_GOES_HERE>' \
  --header 'Content-Type: application/json' \
  --data '{"query":"query { projectToken { projectId environmentId } }"}'

スキーマの表示

PostmanやInsomniaなどの一般的なツールを使用して、APIに接続し、スキーマをクエリします。エンドポイントとAuthorizationトークンで接続を設定し、スキーマをフェッチするだけです。

APIコレクションファイル

また、お好みのAPIクライアントにインポートできるコレクションファイルも提供しています。

インポートしたら、APIトークンを追加するだけで接続され、コレクション内のクエリの実行を開始できます。

GraphiQL Playground

あるいは、GraphiQLプレイグラウンドを使用して、スキーマを表示し、クエリをテストすることもできます。

認証トークンを含むAuthorizationヘッダーを設定してください。GraphiQLページの下部にある「ヘッダー」タブをクリックし、独自のトークンを使用してこのjsonを入力します。

{"Authorization": "Bearer <API_TOKEN_GOES_HERE>"}

ヒントとコツ

リソースID

クエリを作成中に、リソースIDをすばやくコピーする必要がある場合は、プロジェクト内で Cmd/Ctrl + K を押して、プロジェクト/サービス/環境IDをコピーできます。

ネットワークタブ

達成しようとしていることに対してどのクエリ/ミューテーションを使用すればよいかわからない場合は、いつでもダッシュボードでアクションを実行し、ネットワークタブでリクエストを探すことができます。社内で同じAPIを使用しているため、名前を取得してから、内省されたスキーマで特定のクエリを探すだけです。

外部リンク

  1. awesome-graphqlリポジトリは、さまざまな言語で利用可能な実装を含む、GraphQLに関するすべての優れたリソースです。
  2. GraphQL Discordは、graphql.orgの公式Discordチャンネルであり、多くのアクティブなメンバーと特定のヘルプチャンネルがあります。

開始に役立つように、このセクションのガイド内にいくつかのクエリ例を提供しました -

サポート

APIの使用中に問題が発生した場合や提案がある場合は、APIに取り組んでいるエンジニアと直接対話できるDiscordサーバーに参加してください。

レート制限

パブリックAPIにはレート制限が適用されます。制限の詳細については、パブリックAPIリファレンスページをご覧ください。

Railwayはこちら

PR