TeamCity RESTAPI について
TeamCity は、外部アプリケーションを統合し、TeamCity サーバーとのスクリプトの相互作用を作成するための RESTAPI を提供します。URL パスを介してリソース(エンティティ)にアクセスできます。REST API を使用するために、外部アプリケーションは TeamCity サーバーに HTTP リクエストを行い、応答を解析します。
このドキュメントは、TeamCity REST API の一般的な説明と、現在の REST API バージョンの状態を反映する自動生成されたセクション Models、Locators、および Methods で構成されています。この記事では、RESTAPI の原則の概要を説明します。
REST API は、TeamCity 5.0 以降にバンドルされているオープンソースプラグイン(英語)です。
一般的な使用箇所
ブラウザーで /app/rest/server URL を開くと、REST API の操作を開始できます。このページには、API を探索するためのいくつかのポインタがあります。
サポートされている要求の完全なリストとパラメーターの名前は、/app/rest/swagger.json エンドポイントを介して Swagger(英語) 形式で公開されます。
エラーレスポンスに含まれるサポートされているロケーターディメンションのリストについては、$help ロケーターを使用してください。
返されたエラーメッセージを実験して参照してください。ほとんどの場合、それらは正しい要求にあなたを導くはずです。
エージェントの詳細を調べ、(/app/rest/server 応答で) /app/rest/agents URL があることを確認したいとします。
/app/rest/agents/要求を試してください。許可されたエージェントのリストを参照し、エージェントの要素のhref属性からエージェントにリンクするdefaultの方法を取得します。/app/rest/agents/id:10URL(前の要求の要素の 1 つについてはhrefから取得)を介して個々のエージェントの詳細を取得します。/app/rest/agents/$helpまたは/app/rest/agents/aaa:bbb(サポートされていないロケーターディメンションを提供)にリクエストを送信すると、エージェントのロケーターを介してエージェントを見つけるためにサポートされているディメンションのリストが表示されます。返されるエージェントデータ(
name、connected、authorized)の属性のほとんどは、app/rest/agents/<agentLocator>/<field_name>要求で<field_name>として使用できます。さらに、app/rest/agents/id:10/testURL にリクエストを発行すると、サポートされているフィールドのリストがエラーメッセージに表示されます。
REST 認証
REST API では、次の方法で認証できます。
REST API にアクセスする推奨する方法は、トークンベースの HTTP 認証を使用することです。HTTP ヘッダー
Authorization: Bearer <token-value>の設定とツール | アクセストークンで生成された個人用 TeamCity アクセストークンを提供します。例:curl --header "Authorization: Bearer <token-value>" /app/rest/builds基本 HTTP 認証を使用します(特定の認証では遅くなる可能性があります。以下を参照してください)。リクエストに有効な TeamCity ユーザー名とパスワードを入力してください。
/app/rest部分の前にhttpAuthを含めることで、基本認証を強制できます。http://<TeamCity Server host>:<port>/httpAuth/app/rest/buildsゲストユーザーとしてサーバーへのアクセスを使用する場合(有効な場合)、
/app/rest部分の前にguestAuthを含めます(例:http://<TeamCity Server host>:<port>/guestAuth/app/rest/builds)。ブラウザー内から REST
GETリクエストをチェックしていて、ブラウザーで TeamCity にログインしている場合は、/app/restURL を使用できます。/app/rest/builds
組み込みモジュールを使用しない基本 HTTP 認証を使用すると、認証が遅くなる可能性があります。トークンベースの認証ではなく基本 HTTP 認証を使用する場合は、セッション再利用アプローチ(英語)を適用して、順次要求間で認証を再利用することを検討してください。
TeamCity ビルド内からリクエストを実行する場合、(アーティファクトのダウンロードなどの)ビルド関連操作の限られたセットに対して、 teamcity.auth.userId/teamcity.auth.password システムプロパティの値を基本認証情報として使用できます(TeamCity 設定内では、%system.teamcity.auth.userId% および %system.teamcity.auth.password% として参照できます)。
ビルド内では、現在のビルド詳細の要求は次のようになります。
スーパーユーザーアクセス
スーパーユーザーアカウントは RESTAPI で使用できます。ユーザー名を入力せず、生成されたパスワードをサーバーログに記録するだけです。
REST API のバージョン
REST API がある TeamCity バージョンから別のバージョンに進化するにつれて、プロトコルに互換性のない変更が生じる可能性があります。
/app/rest/ または /app/rest/latest URL で、最新バージョンが利用可能です。
以前のバージョンは、/app/rest/<version> URL で利用できる場合があります。当社の一般的なポリシーでは、TeamCity には少なくとも 1 つの以前のバージョンが提供されます。REST API プロトコルバージョンは、このプロトコルが最初に導入された TeamCity バージョンです。
プロトコルの最新のレガシーバージョンは 2018.1 です。アクセスするには、<version> ではなく 2018.1 を使用してください。
API の重大な変更点は、関連するアップグレードノートセクションに記載されています。返されるオブジェクトへの追加(新しい XML 属性や要素など)は大きな変更とは見なされず、プロトコルバージョンが増加することもありません。また、application.wadl で Experimental コメントでマークされたエンドポイントは、将来のバージョンで特別な通知なしに変更される可能性があります。
URL の構造
TeamCity API の URL の一般的な構造は /app/rest/<apiVersion>/<restApiPath>?<parameters> です
where
TeamCity URLとportは、TeamCity が使用するサーバー名とポートを定義します。<authType>(オプション)は、使用する認証タイプです。これは、一般的な TeamCity 機能です。app/restは TeamCity REST API のルートパスです<apiVersion>(オプション)は、REST API の特定のバージョンへの参照です。<restApiPath>?<parameters>は URL の REST API 部分です。
複数のアイテムを取得する一般的な方法は、.../app/rest/<items>の形式で<restApiPath>を使用することです (例:.../app/rest/builds)。これらの URL は、返されるアイテムをフィルターできる locator パラメーターを通常受け入れます。個々のアイテムは、通常、.../app/rest/<items>/<item_locator>の形式の URL でアドレス指定できます。この URL は常に 1 つのアイテムを返します。<item_locator>ロケータが複数のアイテムに一致する場合、最初のアイテムが返されます。複数アイテムのリクエストと単一アイテムのリクエストの両方で、通常、fields パラメーターがサポートされます。
ロケーター
多くの場所で、リクエストでフィルタリング / 影響を与えるエンティティを定義するフィルター文字列を指定できます。この文字列表現は、TeamCity RESTAPI のスコープではロケーターと呼ばれます。
ロケーターの形式は次のとおりです。
単一値:
,:-( )のようなシンボルのない英数字テキスト複数の基準を使用してエンティティをフィルタリングできるディメンション:
<dimension1>:<value1>,<dimension2>:<value2>,<dimension3>:(<dimension3.1>:<value3.1>,<dimension3.2>:<value3.2>)
ネストされたロケータは括弧で囲む必要があることに注意してください。最も一般的なロケータの説明については、一般的な使用例セクションを参照してください。特定のロケータがサポートするものが不明な場合は、ロケータ値として$helpを使用してリクエストを送信します。応答では、ロケータがサポートするもののテキストによる説明が返されます。無効なロケータを含むリクエストが送信された場合、エラーメッセージにエラーのヒントが示され、サポートされているロケータの寸法もリストされることがよくあります。
例:
/app/rest/projectsを使用して、プロジェクトのリストを取得します。/app/rest/projects/<projectsLocator>、たとえば/app/rest/projects/id:RESTAPIPlugin(例 ID が使用されます)を使用して、RESTAPI プラグインプロジェクトの完全なデータを取得します。ビルドを取得するには、
/app/rest/buildTypes/id:bt284/builds?locator=<buildLocator>を使用します(例:/app/rest/buildTypes/id:bt284/builds?locator=status:SUCCESS,tag:EAP(例 ID が使用されます))。/app/rest/builds/?locator=<buildLocator>を使用して、ビルドロケーターごとにビルドを取得します。
サポートされている HTTP メソッド
GET: 要求されたデータを取得します。例:.../app/rest/entitiesは通常エンティティのリストを取得し、.../app/rest/entities/<entity locator>は単一のエンティティを取得しますPOST: 送信されたペイロードからエンティティを作成します。新しいエンティティを作成するには、定期的に単一のエンティティデータ(つまり、GET を介して取得されたもの)を.../app/rest/entitiesURL に投稿する必要があります。XML を投稿するときは、必ずContent-Type: application/xmlHTTP ヘッダーを指定してください。PUT: 送信されたペイロードからデータを更新します。同じ URL への GET リクエストで取得したものと同じデータ形式を受け入れます。.../app/rest/entities/<entity locator>などの URL の一部のエンティティでサポートDELETE:.../app/rest/entities/<entity locator>などの URL のデータを削除します
ロギング
エラーと REST 要求処理の詳細は、logs\teamcity-rest.log サーバーログで取得できます。
要求に応えてエラーを受け取り、その理由を調査したい場合は、休息関連サーバーログを調べましょう。
処理された各リクエストの詳細を取得するには、デバッグログをオンにします(たとえば、管理 / 診断ページで Logging Preset を debug-rest に設定するか、Log4J jetbrains.buildServer.server.rest カテゴリを変更します)。
CORS のサポート
TeamCity REST API は、rest.cors.origins 内部プロパティを使用してクロスオリジン要求(英語)を許可するように構成できます。
特定のドメインからロードされたページからの要求を許可するには、ページアドレス(プロトコルとポートを含み、ワイルドカードはサポートされていません)をコンマ区切りの内部プロパティ rest.cors.origins に追加します。例: rest.cors.origins=http://myinternalwebpage.org.com:8080,https://myinternalwebpage.org.com
プリフライト OPTIONS リクエスト(英語)のサポートを有効にするには:
rest.cors.optionsRequest.allowUnauthorized=true内部プロパティを追加します。TeamCity サーバーを再起動します。
リクエストには
/app/rest/latestURL を使用します。/app/restを使用しないでください。httpAuth接頭辞を使用しないでください。それでも問題が解決しない場合は、デバッグログを有効にし、関連するメッセージを探します。ない場合は、ブラウザーのトラフィックとメッセージをキャプチャーして、ケースを調査します。
API クライアントの推奨事項
REST API を使用してクライアントを開発するときは、以下の推奨事項を考慮してください。
ルート REST API URL を構成可能にします(たとえば、URL の
app/rest/<version>部分の代替を指定できるようにします)。これにより、必要に応じてクライアントを別のバージョンの API に誘導できます。クライアントに知られていないアイテムの属性とサブアイテムを無視します(エラーにしないでください)。新しいサブアイテムはバージョンを変更せずに API に追加されることがあります。これにより、クライアントは変更による影響を受けません。
大きなリクエストタイムアウトを設定します(そして設定可能にします)。特に大規模なサーバーでは、API 呼び出しによっては数分かかることがあります。
HTTP セッションを使用して連続したリクエストを作成します(常に生の資格情報を提供するのではなく、最初の認証済み応答から返される
TCSESSIONIDCookie を使用します)。これにより、外部認証プロバイダーにとって重要な認証の時間を節約できます。アイテムのリストを要求するとき、部分的な答えに注意してください: いくつかの要求はデフォルトでページングされます。応答内の
count属性の値は、現在のページ上の項目の数を示しており、さらに多くのページを使用することができます。さらに多くの(またはすべての)アイテムを処理する必要がある場合は、アイテムコレクションのレスポンスエンティティのnextHref属性を読んで処理します。属性が存在する場合は、提供された URL によって照会されたときにさらに項目がある可能性があることを意味します。関連ロケーターの寸法はcount(ページ制限)とlookupLimit(検索の深さ)です。返されたcountが 0 であっても、"nextHref" 属性が存在すればそれ以上項目がないという意味ではありません。考え直さずにロケーターの
lookupLimit値を大きくしないでください。これを実行すると、サーバーへの負荷が増えるという直接的な影響があり、CPU とメモリの使用量が増加する可能性があります。デフォルトの制限を増やす人は、サーバーのパフォーマンスへの悪影響を理解していると考えられます。TeamCity API の自動リクエストを実行する機能を悪用しないでください。API を頻繁にクエリしないで、リクエストされたデータを必要なものだけに制限してください(期限ロケーターを使用し、必要なフィールドを指定します)。あなたの要求から負荷でサーバーの動作を確認してください。要求の処理に時間がかかる場合は、要求を頻繁に繰り返さないようにしてください。
応答フォーマット
TeamCity REST API は、HTTP の「Accept」ヘッダーに従って、以下の形式で HTTP レスポンスを返します。
フォーマット | レスポンスタイプ | HTTP の "Accept" ヘッダー値 |
|---|---|---|
プレーンテキスト | 単一値応答 | テキスト / プレーン |
XML | 複素数値応答 | application/xml |
JSON | 複素数値応答 | アプリケーション /JSON |
完全および部分的な回答
デフォルトでは、エンティティのリストが要求されると、基本フィールドのみが応答に含まれます。単一のエントリが要求されると、すべてのフィールドが返されます。複雑なフィールド値は、特定のエンティティに応じて、完全形式または基本形式で返すことができます。
ほとんどのリクエストでは、XML および JSON レスポンスで返されるフィールドのセットを変更することができます。これは、レスポンスで返されるトップレベルエンティティとサブエンティティのフィールドを記述する fields リクエストパラメーターを指定することによって行われます。パラメーターの構文の例は、field,field2(field2_subfield1,field2_subfield1) です。これは基本的に、「トップレベルエンティティの field と field2 を含め、field2 の場合は field2_subfield1 と field2_subfield1 フィールドを含める」ことを意味します。フィールド指定の順序は関係ありません。
例:
現時点では、応答には特に要求されていないフィールド / 要素が含まれることがあります。これは将来のバージョンでは変更される可能性があるため、クライアントが使用するすべてのフィールド / 要素を指定することをお勧めします。
ロードマップとフィードバック
このドキュメントは進行中の作業です。その開発に関するアイデアやリクエストがあれば、便利なフィードバックチャネル(英語)を介して共有できます。
次の計画:
説明を改善し、詳細を追加する
ロケーター寸法の使用例を追加
ユースケースの例をさらに説明する
メソッドの使用例を追加する
関連ページ:
認証設定を構成する
TeamCity は、内部データベースを介してユーザーを認証することも、システムに統合して、Windows ドメイン、LDAP、Git ホスティングプロバイダーなどの外部認証ソースを使用することもできます。認証モジュール:認証は管理 | 認証ページで構成されます。現在使用されている認証モジュールも表示されます。TeamCity は、最も一般的な使用例をカバーするために、いくつかの事前構成された認証オプション(プリセット)を提供します。プリセットは、TeamCity でサポートされている認証モジ...
アーティファクトの依存関係
このページでは、あるビルドから別のビルドにファイルを渡すことができる TeamCity アーティファクトの依存関係の構成について詳しく説明します。例: 一般的なデプロイビルド構成は、他の (本番) 構成によって生成されたファイルを公開します。アーティファクトは以下から渡すことができます: 同じビルドチェーン内のターゲット構成の前に実行される構成。ターゲット構成と同じビルドチェーンの一部ではない個別の構成。同じ構成の以前のビルド。Web UI を使用したアーティファクトの依存関係の設定:ビルド構成...
アップグレードノート
2025.11.4 から 2026.1 への変更:TeamCity サーバーおよびビルドエージェントは、Java 21 より古い Java バージョンをサポートしなくなりました。サーバーはこのバージョンのみをサポートしますが、ビルドエージェントはより新しいバージョンで起動できます。AWS 接続でキーを回転させるを押すと、5 分後に以前使用したキーが削除されます。以前は、古いキーは 24 時間保持されていました。S3 アーティファクトストレージでは、仮想ホストのアドレス指定がデフォルトで有効にな...