DevOps API
DevOps API は、外部DevOpsツールとのやり取りを可能にするエンドポイントを提供します。
この REST API を使用すると、インテグレーターは次のことができます。
- インスタンスに関連付けられている利用可能な DevOps ツールを取得します。
- コードリソース、計画、またはオーケストレーションリソースのスキーマオブジェクトを取得します。
- オーケストレーションタスクが変更管理下にあるかどうかを確認し、その変更管理ステータスを確認します。
- 変更管理下でタスク実行に関連付けるコールバックを作成します。
- さまざまなイベントペイロードを送信します。これらは、正規化されたオブジェクトに変換され、コード、オーケストレーション、および計画オブジェクトとして保存されます。
- エンコードされたクエリと特定の検索/ソート基準を使用して、コミット、分岐、またはリポジトリを検索します。
- 関連するパイプライン実行およびコミットとともに、アーティファクトのバージョンとパッケージを登録します。
- オンボーディングアプリケーションとツールイベントを作成および管理します。
詳細については、「DevOps Config」を参照してください。
。DevOpsToken <tool_sys_id>:<tool_token>。インスタンスで devops.system ユーザーが利用できない場合は、[ トークンベースの認証が成功した後にこのユーザーに切り替え る] プロパティを使用します。このプロパティを使用すると、トークン認証を完了するために必要な sn_devops.integration ロールを持つ任意のユーザーを設定できます。詳細については、「DevOps Change Velocity properties」を参照してください。
DevOps - GET /devops/code/schema
指定されたコードリソース (コミット、リポジトリ、または分岐) のスキーマオブジェクトを返します。
必要なスキーマオブジェクトを取得したら、それを使用して、対応する POST 呼び出しの要求本文を作成します (POST /code/commit、POST /code/repository、または POST /code/branch)。
URL 形式
バージョニングされた URL: /api/sn_devops/{api_version}/devops/code/schema
デフォルト URL: /api/sn_devops/devops/code/schema
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| resource | 必須です。返されるリソーススキーマのタイプ。 有効な値 (値の大文字と小文字を区別しない):
データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| なし |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| Accept | 応答本文のデータフォーマット。application/json のみをサポートします。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 200 | 要求が正常に完了しました。 |
| 401 | 認証が無効か見つかりません。 |
| 500 | 内部サーバーエラー。要求の処理中に予期しないエラーが発生しました。応答に、エラーに関する追加情報が含まれます。 |
応答本文のパラメーター
| 名前 | 説明 |
|---|---|
| branch | コードのコミットが行われたブランチの説明。 データタイプ:オブジェクト |
| branch.name | コードのコミットが行われたブランチの名前。 データタイプ:文字列 |
| branch.path | ブランチの相対パス。 データタイプ:文字列 |
| コミット | コミットの説明。 データタイプ:アレイ |
| commits.committedDate | ソース DevOps ツールでコードがコミットされた日時。 データタイプ:文字列 形式:ISO 8601 (タイムゾーンオフセットあり) 例:1970-01-01T08:15:30-05:00 |
| commits.committer | コミットを要求したユーザー/エンティティの説明。 データタイプ:オブジェクト |
| commits.committer.email | コミットを要求したユーザーのメールアドレス。 データタイプ:文字列 |
| commits.details | コミットの詳細。 注: コミットに詳細を含めることは必須ではありません。このエンドポイントは、詳細がコミットに含まれていない場合、空のアレイを返します。 データタイプ:アレイ |
| commits.details.action | ファイルに対して実行されたアクション。 データタイプ:文字列 |
| commits.details.additions | ファイル内の追加の合計数。 データタイプ:数値 |
| commits.details.changes | 行われた変更の合計数。 データタイプ:数値 |
| commits.details.deletions | ファイル内の削除の合計数。 データタイプ:数値 |
| commits.details.file | ブランチに対して相対的に変更されたファイルのパス。 データタイプ:文字列 |
| commits.details.totalChanges | 追加と削除の合計数。 データタイプ:数値 |
| commits.id | ソースプラットフォーム識別子またはコミット SHA。 データタイプ:文字列 |
| commits.url | コミットの URL (「https://github.com/mycompany/mobileplatform/commit/3fa85f6457174562b3fc2c963f66afa6」など)。 データタイプ:文字列 |
| name | 分岐またはリポジトリの名前 (「Master」や「Platform-Mobile」など)。 データタイプ:文字列 |
| path | ブランチの相対パス。 データタイプ:文字列 |
| repository | コミットが行われたリポジトリの説明。 データタイプ:オブジェクト |
| repository.name | リポジトリの名前。 データタイプ:文字列 |
| repository.url | ソース DevOps ツールのリポジトリの URL。 データタイプ:文字列 |
| url | リポジトリの URL (「https://github.com/mycompany/mobileplatform」など)。 データタイプ:文字列 |
resource=branch のサンプル cURL 要求
curl "https://instance.servicenow.com/api/sn_devops/v1/devops/code/schema?resource=branch" \
--request GET \
--header "Accept:application/json" \
--user "username":"password"
{
"result": {
"name": "Master",
"path": "refs/heads/master",
"repository": {
"name": "Platform-Mobile",
"url": "https://github.com/mycompany/mobileplatform"
}
}
}
resource=commit のサンプル cURL 要求
curl "https://instance.servicenow.com/api/sn_devops/v1/devops/code/schema?resource=commit" \
--request GET \
--header "Accept:application/json" \
--user "username":"password"
{
"result": {
"repository": {
"name": "Platform-Mobile",
"url": "https://github.com/mycompany/mobileplatform"
},
"branch": {
"name": "refs/heads/master"
},
"commits": [
{
"committer": {
"email": "name@email.com"
},
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"url": "https://github.com/mycompany/mobileplatform/commit/3fa85f6457174562b3fc2c963f66afa6",
"committedDate": "2022-01-01T08:15:30-05:00",
"details": [
{
"action": "edit",
"changes": "",
"file": "/azure-pipelines.yml",
"additions": 1,
"deletions": 0,
"totalChanges": 1
}
]
}
]
}
}
resource=repository のサンプル cURL 要求
curl "https://instance.servicenow.com/api/sn_devops/v1/devops/code/schema?resource=repository" \
--request GET \
--header "Accept:application/json" \
--user "username":"password"
{
"result": {
"name": "Platform-Mobile",
"url": "https://github.com/mycompany/mobileplatform"
}
}
DevOps - GET /devops/onboarding/status
DevOps サービスによって処理されている、または非同期に処理されている、指定されたオンボーディングイベントの現在のステータスを返します。
URL 形式
バージョニングされた URL: /api/sn_devops/{api_version}/devops/onboarding/status
デフォルト URL:/api/sn_devops/devops/onboarding/status
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| id | ステータスを返すオンボーディングイベントの一意の識別子。この値は、イベント要求を呼び出したエンドポイントの結果として返されます (/devops/onboarding/app や /devops/onboarding/tool など)。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| なし |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| 承認 | 応答本文のデータフォーマット。application/json のみをサポートします。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 200 | 成功。要求が正常に処理されました。 |
| 202 | 処理待ち:オンボーディング要求が作成され、DevOps サービスが要求を処理しています。 |
| 207 | 部分的に成功:オンボーディング要求が作成され、DevOps サービスで要求が処理されます。 |
| 400 | 失敗:オンボーディングイベントが失敗しました。 |
| 404 | 失敗:エンドポイントは、指定されたイベント ID に一致する要求を見つけることができませんでした。 |
応答本文のパラメーター
| 名前 | 説明 |
|---|---|
| result | オンボーディング要求の結果。 データタイプ:オブジェクト |
| result.code | HTTP ステータスコード。 データタイプ:文字列 |
| result.importRequestsSysIds | オンボーディング要求の一部として作成されたインポート要求のリスト。 データタイプ:文字列のアレイ |
| result.messageDetails | オンボーディングイベントの進捗状況の詳細。 データタイプ:オブジェクト |
| result.messageDetails.apps | 関連する ServiceNow インスタンス内に作成するアプリを定義するオブジェクトのアレイ。 データタイプ:アレイ |
| result.messageDetails.apps.appId | アプリケーションのオンボーディング時に生成されたアプリケーションの sys_id。アプリ [sn_devops_app] テーブルにあります。 データタイプ:文字列 |
| result.messageDetails.apps.message | アプリケーションのオンボーディングのステータスを説明するメッセージ。 データタイプ:文字列 |
| result.messageDetails.apps.name | オンボーディングされるアプリケーションの名前。 データタイプ:文字列 |
| result.messageDetails.apps.status | アプリケーションオンボーディングの現在のステータス。 可能な値:
データタイプ:文字列 |
| result.messageDetails.pipelines | オンボーディングイベントに関連付けられたパイプラインのリストとそれに対応する詳細。 データタイプ:アレイ |
| result.messageDetails.pipelines.changeStepAssociation | オンボーディングに関連付けられている変更ステップを記述するオブジェクトのアレイ。 データタイプ:アレイ |
| result.messageDetails.pipelines.changeStepAssociation.changeStepName | 変更ステップの名前。 データタイプ:文字列 |
| result.messageDetails.pipelines.changeStepAssociation.status | パイプラインへの変更ステップの関連付けのステータス。 可能な値:
データタイプ:文字列 |
| result.messageDetails.pipelines.changeStepAssociation.summary | 変更ステップの関連付けのステータスの概要。 データタイプ:文字列 |
| result.messageDetails.pipelines.errors | パイプラインの関連付け時に検出されたエラーのリスト。 データタイプ:アレイ |
| result.messageDetails.pipelines.message | パイプラインの関連付けのステータスを説明するメッセージ。 データタイプ:文字列 |
| result.messageDetails.pipelines.name | パイプラインの名前。 データタイプ:文字列 |
| result.messageDetails.pipelines.status | パイプラインの関連付けのステータス。 データタイプ:文字列 |
| result.messageDetails.plans | オンボーディングイベントに関連付けられた計画のリストとそれに対応する詳細。 データタイプ:アレイ |
| result.messageDetails.plans.errors | 計画の関連付け時に検出されたエラーのリスト。 データタイプ:アレイ |
| result.messageDetails.plans.message | パイプラインの関連付けのステータスを説明するメッセージ。 データタイプ:文字列 |
| result.messageDetails.plans.name | 計画の名前 データタイプ:文字列 |
| result.messageDetails.plans.status | 計画の関連付けのステータス。 データタイプ:文字列 |
| result.messageDetails.repositories | オンボーディングイベントに関連付けられたリポジトリのリストとそれに対応する詳細。 データタイプ:アレイ |
| result.messageDetails.repositories.configureStatus | リポジトリの Webhook 構成ステータスの詳細。 データタイプ:オブジェクト |
| result.messageDetails.repositories.configureStatus.message | 現在の Webhook 構成ステータスを説明するメッセージ。 データタイプ:文字列 |
| result.messageDetails.repositories.configureStatus.status | Webhook 構成のステータス。 データタイプ:文字列 |
| result.messageDetails.repositories.message | 現在のリポジトリの関連付けのステータスを説明するメッセージ。 データタイプ:文字列 |
| result.messageDetails.repositories.name | リポジトリの名前。 データタイプ:文字列 |
| result.messageDetails.repositories.status | リポジトリの関連付けのステータス。 データタイプ:文字列 |
| result.messageDetails.status | オンボーディング要求のステータス。 可能な値:
データタイプ:文字列 |
| result.messageDetails.toolResponse | 関連する ServiceNow インスタンス内にオンボーディングするツールを定義するオブジェクトのアレイ。 データタイプ:アレイ |
| result.messageDetails.toolResponse.configureStatus | ツールの構成ステータスを説明します。成功した場合は、status および message を返します。エラーの場合は、status および error を返します。 データタイプ:オブジェクト |
| result.messageDetails.toolResponse.configureStatus.error | ツールの構成中に検出されたエラー。 データタイプ:文字列 |
| result.messageDetails.toolResponse.configureStatus.message | ツール構成の成功ステータスを説明するメッセージ。 データタイプ:文字列 |
| result.messageDetails.toolResponse.configureStatus.status | ツール構成のステータス。 データタイプ:文字列 |
| result.messageDetails.toolResponse.connectStatus | ツールの接続ステータスを説明します。成功した場合は、status および message を返します。エラーの場合は、status および error を返します。 データタイプ:オブジェクト |
| result.messageDetails.toolResponse.connectStatus.error | ツールの接続中に検出されたエラー。 データタイプ:文字列 |
| result.messageDetails.toolResponse.connectStatus.message | ツール接続の成功ステータスを説明するメッセージ。 データタイプ:文字列 |
| result.messageDetails.toolResponse.connectStatus.status | ツール接続のステータス。 データタイプ:文字列 |
| result.messageDetails.toolResponse.createStatus | ツールの作成ステータスを説明します。成功した場合は、status および message を返します。エラーの場合は、status および error を返します。 データタイプ:オブジェクト |
| result.messageDetails.toolResponse.createStatus.error | ツールの作成中に検出されたエラー。 データタイプ:文字列 |
| result.messageDetails.toolResponse.createStatus.message | ツール作成の成功ステータスを説明するメッセージ。 データタイプ:文字列 |
| result.messageDetails.toolResponse.createStatus.status | ツール作成のステータス。 データタイプ:文字列 |
| result.messageDetails.toolResponse.discoveryStatus | ツールの検出ステータスを説明します。成功した場合は、status および message を返します。エラーの場合は、status および error を返します。 データタイプ:オブジェクト |
| result.messageDetails.toolResponse.discoveryStatus.error | ツールの検出中に検出されたエラー。 データタイプ:文字列 |
| result.messageDetails.toolResponse.discoveryStatus.imports | 検出された各エンティティを記述するオブジェクトのアレイ。 データタイプ:アレイ |
| result.messageDetails.toolResponse.discoveryStatus.imports.details | 実行されたインポートを説明する詳細。 データタイプ:文字列 |
| result.messageDetails.toolResponse.discoveryStatus.imports.id | インポート要求の sys_id。sn_devops_m2m_inbound_event_import_request テーブルにあります。 データタイプ:文字列 |
| result.messageDetails.toolResponse.discoveryStatus.imports.status | インポートのステータス。 データタイプ:文字列 |
| result.messageDetails.toolResponse.discoveryStatus.message | ツール検出のステータスを説明するメッセージ。 データタイプ:文字列 |
| result.messageDetails.toolResponse.discoveryStatus.status | ツール検出のステータス。 データタイプ:文字列 |
| result.messageDetails.toolResponse.name | オンボーディングされるツールの名前。 データタイプ:文字列 |
| result.messageDetails.toolResponse.status | ツールオンボーディングのステータス。 データタイプ:文字列 |
| result.messageDetails.toolResponse.type | ツールのタイプ (Jira や Jenkins など)。 データタイプ:文字列 |
| result.onboardingRequestID | オンボーディング要求の一意の識別子。/devops/onboarding/status エンドポイントを呼び出して、関連するツールのオンボーディングプロセスのステータスを取得するときに、この値を使用します。 データタイプ:文字列 |
| result.status | オンボーディング要求のステータス。 可能な値:
データタイプ:文字列 |
cURL 要求
次の例は、ツールオンボーディングのステータス要求を示しています。
curl -X GET "https://servicenow-instance/api/sn_devops/v1/devops/onboarding/status?id=IBE0001603" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-u "username":"password" \
{
"result": {
"code": "207",
"onboardingRequestID": "IBE0001603",
"status": "partial-success",
"messageDetails": {
"status": "Partial Success",
"toolResponse": [
{
"name": "Primary Azure",
"type": "Azure DevOps",
"status": "Partial Success",
"createStatus": {
"status": "Success",
"message": "Created successfully"
},
"connectStatus": {
"status": "Failed",
"error": "Method failed: (/testFirst/_apis/work/boards) with code: 401 - Invalid username/password combo"
}
},
{
"name": "Primary Jenkins",
"type": "Jenkins",
"status": "Success",
"createStatus": {
"status": "Success",
"message": "Created successfully"
},
"connectStatus": {
"status": "Success",
"message": "Connected successfully"
},
"discoveryStatus": {
"status": "Success",
"message": "Discovered successfully",
"imports": [
{
"status": "completed",
"id": "2a4d216bdb2d2450fe4fd6a75e9619c3",
"details": "Discovered 1 new job(s) and 3 new pipeline(s)\n"
}
]
}
},
{
"name": "Primary GitHub",
"type": "GitHub",
"status": "Success",
"createStatus": {
"status": "Success",
"message": "Created successfully"
},
"connectStatus": {
"status": "Success",
"message": "Connected successfully"
},
"discoveryStatus": {
"status": "Success",
"message": "Discovered successfully",
"imports": [
{
"status": "completed",
"id": "7f4d616bdb2d2450fe4fd6a75e9619c2",
"details": "Discovered 5 new repositories. "
}
]
}
},
{
"name": "Primary Bitbucket",
"type": "BitBucket",
"status": "Success",
"createStatus": {
"status": "Success",
"message": "Created successfully"
},
"connectStatus": {
"status": "Success",
"message": "Connected successfully"
},
"discoveryStatus": {
"status": "Success",
"message": "Discovered successfully",
"imports": [
{
"status": "completed",
"id": "815da16bdb2d2450fe4fd6a75e9619d0",
"details": "Discovered 11 new repositories. "
}
]
}
},
{
"name": "Primary Gitlab",
"type": "GitLab",
"status": "Partial Success",
"createStatus": {
"status": "Success",
"message": "Created successfully"
},
"connectStatus": {
"status": "Failed",
"error": "The current operation ended in state: ERROR"
}
}
],
"importRequestsSysIds": [
"2a4d216bdb2d2450fe4fd6a75e9619c3",
"7f4d616bdb2d2450fe4fd6a75e9619c2",
"815da16bdb2d2450fe4fd6a75e9619d0"
]
}
}
}
cURL 要求
次の例は、アプリケーションオンボーディングのステータス要求を示しています。
curl -X POST "https://servicenow-instance/api/sn_devops/v1/devops/onboarding/status?onboardingRequestID=IBE0001604" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-u "username":"password" \
{
"result": {
"code": "207",
"onboardingRequestID": "IBE0001604",
"status": "partial-success",
"messageDetails": {
"status": "Partial Success",
"apps": [
{
"name": "Bike Rentals Service",
"status": "Success",
"appId": "c7fd696bdb2d2450fe4fd6a75e961993",
"message": "App by name 'Bike Rentals Service' has been successfully created"
}
],
"pipelines": [
{
"name": "Bike Rentals",
"status": "Success",
"message": "Successfully associated with app 'Bike Rentals Service'",
"changeStepAssociation": [
{
"status": "Success",
"changeStepName": "Prod",
"summary": "Change step with name 'Prod' has been created"
}
]
}
],
"repositories": [
{
"name": "nowdevops01/BikeRentals",
"status": "Partial Success",
"message": "Successfully associated with app 'Bike Rentals Service'",
"configureStatus": {
"status": "Failed",
"message": "Webhook configuration failed due to empty credentials for repository by name nowdevops01/BikeRentals in tool Primary GitHub"
}
}
],
"plans": [
{
"status": "Failed",
"name": "testFirst",
"errors": [
"Plan by name 'testFirst' does not exist in tool Primary Azure"
]
}
]
}
}
}
DevOps - GET /devops/orchestration/changeControl
オーケストレーションタスクが変更管理下にあるかどうかを確認します。
URL 形式
バージョニングされた URL:/api/sn_devops/{api_version}/devops/orchestration/changeControl
デフォルトの URL:/api/sn_devops/devops/orchestration/changeControl
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| orchestrationTaskName | 確認するオーケストレーションタスクの名前。 データタイプ:文字列 |
| testConnection | インスタンスと DevOps ツール間のエンドツーエンド接続をテストするかどうかを示すフラグ。 有効な値:
データタイプ:ブーリアン デフォルト値:false |
| toolId | 必須です。オーケストレーションツールの sys_id。オーケストレーションツール [sn_devops_orchestration_tool] テーブルにあります。 データタイプ:文字列 |
| toolType | ツールのタイプ。 有効な値: jenkins データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| なし |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| Accept | 応答本文のデータフォーマット。application/json のみをサポートします。 |
| 認証 | v2 以降、この API はトークンベースの認証をサポートしています。トークンは、ツール [sn_devops_tool] テーブルにあるツール レコードの [ トークンをコピー ] ボタンをクリックすることで取得できます。その後、トークンを Authorization: sn_devops の形式で認証ヘッダーで使用できます 。DevOpsToken <tool_sys_id>:<tool_token>。注: トークン付きの認証ヘッダーに加えて基本認証の詳細 (ユーザー名とパスワード) が指定されている場合は、基本認証が優先されます。 インスタンスで devops.system ユーザーが利用できない場合は、[ トークンベースの認証が成功した後にこのユーザーに切り替え る] プロパティを使用します。このプロパティを使用すると、トークン認証を完了するために必要な sn_devops.integration ロールを持つ任意のユーザーを設定できます。詳細については、「DevOps Change Velocity properties」を参照してください。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 200 | 成功。要求が正常に処理されました。 |
| 401 | 認証が無効か見つかりません。 |
| 500 | 内部サーバーエラー。要求の処理中に予期しないエラーが発生しました。応答に、エラーに関する追加情報が含まれます。 |
応答本文のパラメーター (JSON または XML)
| 名前 | 説明 |
|---|---|
| changeControl | オーケストレーションタスクが変更管理下にあるかどうかを示すフラグ。 可能な値:
データタイプ:ブーリアン |
変更管理下にあり、API v2 を使用
curl -X GET "https://instance.servicenow.com/api/sn_devops/v2/devops/orchestration/changeControl?toolId=1c219f7e8708f1508ca933383cbb3543&orchestrationTaskName=Platform-Analytics-UAT-Deployment&orchestrationTaskURL=https%253A%252F%252Fjenkins.mycompany.com%253A8080%252Fjob%252FMobile-Platform-deploy%252F&toolType=jenkins"
-H "accept: application/json"\
-H "Authorization: sn_devops.DevOpsToken 1c219f7e8708f1508ca933383cbb3543:FtN13dfDuahYEtdfDvhHorh0QPp9na3u"
応答本文。
{
"result": {
"changeControl": true,
"status": "Success"
}
}
変更管理されておらず、API v1 を使用
curl -X GET "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/changeControl?toolId=f0ca45679323008b52f3b457415ae6&orchestrationTaskName=Platform-Analytics-UAT-Deployment&orchestrationTaskURL=https%253A%252F%252Fjenkins.mycompany.com%253A8080%252Fjob%252FMobile-Platform-deploy%252F&toolType=jenkins"
-H "accept: application/json"\
-u "username":"password"
応答本文。
{
"result": {
"changeControl": false
}
}
DevOps - GET /devops/orchestration/changeInfo
指定されたオーケストレーションパイプライン実行の変更要求の詳細を取得します。
URL 形式
バージョニングされた URL:/api/sn_devops/{api_version}/devops/orchestration/changeInfo
デフォルトの URL:/api/sn_devops/devops/orchestration/changeInfo
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| branchName | オーケストレーションタスクに関連付けられた分岐の名前。 注:
複数分岐パイプラインを参照する場合は、このパラメーターを指定する必要があります。指定しないと、応答に誤った変更の詳細が含まれる可能性があります。 データタイプ:文字列 |
| buildNumber | 必須です。オーケストレーションツール内のパイプラインビルド番号。 データタイプ:文字列 |
| pipelineName | Jenkins Freestyle または Maven プロジェクトの場合はオプションですが、それ以外の場合は必須です。オーケストレーションパイプライン名。 データタイプ:文字列 |
| projectName | Jenkins Freestyle または Maven プロジェクトの場合は必須ですが、それ以外の場合はオプションです。オーケストレーションツールのプロジェクト名。 データタイプ:文字列 |
| stageName | Jenkins Freestyle または Maven プロジェクトの場合はオプションですが、それ以外の場合は必須です。オーケストレーションステージ名。 データタイプ:文字列 最大長:160 |
| toolId | 必須です。オーケストレーションツールの sys_id。オーケストレーションツール [sn_devops_orchestration_tool] テーブルにあります。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| なし |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| 承認 | 応答本文のデータフォーマット。application/json のみをサポートします。 |
| 認証 | v2 以降、この API はトークンベースの認証をサポートしています。トークンは、ツール [sn_devops_tool] テーブルにあるツール レコードの [ トークンをコピー ] ボタンをクリックすることで取得できます。その後、トークンを Authorization: sn_devops の形式で認証ヘッダーで使用できます 。DevOpsToken <tool_sys_id>:<tool_token>。注: トークン付きの認証ヘッダーに加えて基本認証の詳細 (ユーザー名とパスワード) が指定されている場合は、基本認証が優先されます。 インスタンスで devops.system ユーザーが利用できない場合は、[ トークンベースの認証が成功した後にこのユーザーに切り替え る] プロパティを使用します。このプロパティを使用すると、トークン認証を完了するために必要な sn_devops.integration ロールを持つ任意のユーザーを設定できます。詳細については、「DevOps Change Velocity properties」を参照してください。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 200 | 成功。要求が正常に処理されました。 |
| 400 | 要求が正しくありません。不適切な要求タイプまたは誤った要求が検出されました。 |
| 404 | 見つかりません。要求アイテムが見つかりませんでした。 |
応答本文のパラメーター (JSON または XML)
| 名前 | 説明 |
|---|---|
| changeFound | 変更要求が見つかったかどうかを示すフラグ。 可能な値:
データタイプ:ブーリアン |
| number | 変更要求番号。 データタイプ:文字列 |
| phase | 現在のフェーズ。 データタイプ:文字列 |
| phase_state | 現在のフェーズのステータス。 データタイプ:文字列 |
| priority | 変更要求の優先度。優先度は、要求の影響度と緊急度に基づいています。Service Desk が要求をどの程度迅速に対処すべきかを示します。 可能な値:
データタイプ:文字列 |
| risk | 変更のリスクのレベル。 可能な値:
データタイプ:文字列 |
| state | 変更要求のステータス。 可能な値:
データタイプ:文字列 デフォルト:New |
| sys_id | 変更要求の sys_id。 データタイプ:文字列 |
| type | 変更要求のタイプ。 可能な値:
データタイプ:文字列 |
| url | 関連する ServiceNow インスタンス内の変更要求の URL。 データタイプ:文字列 |
| 変更アサイン先グループ | 変更要求のアサイン先グループ。 データタイプ:文字列 |
| changeApprovers | 変更の承認待ちとなっている承認者のリスト。 データタイプ:文字列 |
| plannedStartDate | 変更の開始予定日時。 データタイプ:文字列 |
| plannedEndDate | 変更の終了予定日時。 データタイプ:文字列 |
cURL 要求
curl -X GET "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/changeInfo?toolId=1487f457db642810765555535e9619d3&pipelineName=Automation/apps HR/family release&stageName=deployfamilyrelease&buildNumber=1639"
-H "accept: application/json"\
-u "username":"password"
{
"result": {
"changeFound": true,
"sys_id": "ee89341bdb642810765555535e96196e",
"number": "CHG0030001",
"type": "normal",
"state": "0",
"phase": "requested",
"phase_state": "open",
"priority": "4",
"risk": "4",
"url": "https://instance.servicenow.com/change_request.do?sys_id=ee89341bdb642810765555535e96196e",
"changeAssignmentGroup": "Change Management",
"changeApprovers": "Ron Kettering, Christen Mitchell, Howard Johnson, Luke Wilson",
"plannedStartDate": "2023-02-05 08:00:00",
"plannedEndDate": "2024-02-05 08:00:00"
}
}
DevOps - GET /devops/orchestration/schema
指定されたオーケストレーションリソースのスキーマオブジェクトを返します。
必要なスキーマオブジェクトを取得したら、それを使用して、対応する POST 呼び出しの要求本文を作成します (/orchestration/orchestrationTask または /orchestration/taskExecution)。
URL 形式
バージョニングされた URL:/api/sn_devops/{api_version}/devops/orchestration/schema
デフォルトの URL:/api/sn_devops/devops/orchestration/schema
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| resource | 返されるリソーススキーマのタイプ。 有効な値 (値の大文字と小文字を区別しない):
データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| なし |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| Accept | 応答本文のデータフォーマット。application/json のみをサポートします。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 200 | 要求が正常に完了しました。 |
| 401 | 認証が無効か見つかりません。 |
| 500 | 内部サーバーエラー。要求の処理中に予期しないエラーが発生しました。応答に、エラーに関する追加情報が含まれます。 |
応答本文のパラメーター
| 名前 | 説明 |
|---|---|
| callbackURL | コールバックの URL。 データタイプ:文字列 |
| endDateTime | タスク実行が終了した日時。 データタイプ:文字列 |
| name | オーケストレーションタスクの名前。 データタイプ:文字列 |
| number | タスクの実行数。インシデント番号と同じです。 データタイプ:文字列 |
| orchestrationTaskDetails | オーケストレーションタスクの説明。 データタイプ:オブジェクト |
| orchestrationTaskDetails.message | 自由形式のテキストメッセージ。 データタイプ:文字列 |
| orchestrationTaskDetails.name | オーケストレーションタスクの名前。 データタイプ:文字列 |
| orchestrationTaskDetails.triggerType | オーケストレーションタスクが開始された方法。 データタイプ:文字列 |
| orchestrationTaskDetails.url | 関連するオーケストレーションツールのオーケストレーションタスクの URL。 データタイプ:文字列 |
| orchestrationTaskURL | オーケストレーションタスクの URL。 データタイプ:文字列 |
| result | タスク実行の実行結果。 有効な値:
データタイプ:文字列 |
| startDateTime | タスク実行が開始された日時。 データタイプ:文字列 |
| taskExecutionURL | 実行するタスクの URL。 データタイプ:文字列 |
| triggerType | オーケストレーションタスクが開始された方法。 有効な値:
データタイプ:文字列 |
| url | 関連するオーケストレーションツールのオーケストレーションタスクの URL。 データタイプ:文字列 |
resource=task_execution によるサンプル cURL 要求
curl -X GET \
'https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/schema?resource=task_execution' \
-H 'Accept: application/json'\
-u 'username':'password'
{
"result": {
"number": 40,
"url": "https://jenkins.mycompany.com:8080/job/Mobile-Platform-CI/40/",
"startDateTime": "1970-01-01T08:15:30-05:00",
"endDateTime": "1970-01-01T08:25:30-05:00",
"triggerType": "upstream",
"result": "Success",
"orchestrationTaskDetails": {
"name": "Mobile-Platform-CI",
"url": "https://jenkins.mycompany.com:8080/job/Mobile-Platform-CI/"
}
}
}
resource=orchestration_task によるサンプル cURL 要求
curl -X GET \
'https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/schema?resource=orchestration_task' \
-H 'Accept: application/json'\
-u 'username':'password'
{
"result": {
"name": "Mobile-Platform-CI",
"url": "https://jenkins.mycompnay.com:8080/job/Mobile-Platform-CI/"
}
}
resource=callback によるサンプル cURL 要求
curl -X GET \
'https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/schema?resource=task_execution' \
-H 'Accept: application/json' \
-u 'username':'password'
{
"result": {
"callbackURL": "http://127.0.0.1:8090/jenkins/sn-devops/9b0feb79-f0b9-4661-83ef-2861b8924784",
"orchestrationTaskURL": "http://127.0.0.1:8090/jenkins/job/felipe-downstream/",
"orchestrationTaskDetails": {
"message": "Started by upstream project \"felipe-upstream\" build number 27",
"triggerType": "upstream"
}
}
}
DevOps - GET /devops/orchestration/stepMapping
渡される情報がオーケストレーションタスクの作成に有効であり、以前に作成されたステップへの関連付けに有効であることを確認します。
URL 形式
バージョニングされた URL:/api/sn_devops/{api_version}/devops/orchestration/stepMapping
デフォルトの URL:/api/sn_devops/devops/orchestration/stepMapping
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| branchName | オーケストレーションタスクに関連付けられたブランチの名前。 データタイプ:文字列 |
| isMultiBranch | オーケストレーションツールが Jenkins の場合、プロジェクトがマルチブランチかどうかを示すフラグ。 有効な値:
データタイプ:ブール デフォルト値:false |
| parentStageName | オーケストレーションタスクが親オーケストレーションタスク内にネストされた子である場合、親オーケストレーションタスクの名前。 データタイプ:文字列 |
| parentStageURL | オーケストレーションタスクが親オーケストレーションタスク内にネストされた子である場合、親オーケストレーションタスクの URL。 データタイプ:文字列 |
| orchestrationTaskName | 必須です。オーケストレーションタスクの名前。 データタイプ:文字列 |
| orchestrationTaskURL | 必須です。オーケストレーションタスクの URL。 注: データタイプ:文字列パーセント (%) エンコードする必要があります (例: https%3A%2F%2Fjenkins.mycompany.com%3A8080%2Fjob%2FMobile-Platform-deploy%2F)。 |
| testConnection | インスタンスと DevOps ツール間のエンドツーエンド接続をテストするかどうかを示すフラグ。 有効な値:
データタイプ:ブーリアン デフォルト値:false |
| toolId | 必須です。オーケストレーションツールの sys_id。オーケストレーションツール [sn_devops_orchestration_tool] テーブルにあります。 データタイプ:文字列 |
| toolType | 必須です。ツールのタイプ。 有効な値:jenkins データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| なし |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| Accept | 応答本文のデータフォーマット。application/json のみをサポートします。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 200 | 成功。要求が正常に処理されました。 |
| 401 | 権限がありません。ユーザー資格情報が間違っているか、渡されていません。 |
| 500 | 内部サーバーエラー。要求の処理中に予期しないエラーが発生しました。応答に、エラーに関する追加情報が含まれます。 |
応答本文のパラメーター
| 要素 | 説明 |
|---|---|
| status | 検証が成功したかどうかを示すフラグです。 有効な値:
データタイプ:ブーリアン |
| stepValid | 送信された情報が有効かどうかを示すフラグ。 有効な値:
データタイプ:ブーリアン |
サンプル cURL 要求
curl -X GET "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/stepMapping?toolId=f0ca45679323008b52f3b457415ae6&orchestrationTaskName=Platform-Analytics-UAT-Deployment&orchestrationTaskURL=https%253A%252F%252Fjenkins.mycompany.com%253A8080%252Fjob%252FMobile-Platform-deploy%252F&toolType=jenkins "
-H "Accept: application/json" \
-u "username":"password"
情報が有効な場合の結果。
{
"result": {
"stepValid": true,
"status": "Success"
}
}
サンプル cURL 要求
curl -X GET "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/stepMapping?toolId=f0ca45679323008b52f3b457415ae6&orchestrationTaskName=Platform-Analytics-UAT-Deployment&orchestrationTaskURL=https%253A%252F%252Fjenkins.mycompany.com%253A8080%252Fjob%252FMobile-Platform-deploy%252F&toolType=jenkins "
-H "Accept: application/json" \
-u "username":"password"
情報が無効な場合の結果。
{
"result": {
"stepValid": false,
"status": "Success"
}
DevOps - GET /devops/plan/schema
特定の計画 (アプリ、バージョン、または作業アイテム) のスキーマオブジェクトを返します。
必要なスキーマオブジェクトを取得したら、それを使用して、対応する POST 呼び出しの要求本文を作成します (POST /plan/app、POST /plan/version、または POST /plan/workitem)。
URL 形式
バージョニングされた URL:/api/sn_devops/{api_version}/devops/plan/schema
デフォルトの URL:/api/sn_devops/devops/plan/schema
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| resource | 返されるリソーススキーマのタイプ。 有効な値 (値の大文字と小文字を区別しない):
データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| なし |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| 承認 | 応答本文のデータフォーマット。application/json のみをサポートします。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 200 | 成功。要求が正常に処理されました。 |
| 401 | 認証が無効か見つかりません。 |
| 404 | 見つかりません。指定されたレコードが見つかりませんでした。 |
| 500 | 内部サーバーエラー。要求の処理中に予期しないエラーが発生しました。応答に、エラーに関する追加情報が含まれます。 |
応答本文のパラメーター
| 名前 | 説明 |
|---|---|
| app | バージョンに関連付けられたアプリケーションの説明。 データタイプ:オブジェクト |
| app.createdDateTime | ソース DevOps ツールでアプリケーションが作成された日時。 データタイプ:文字列 |
| app.id | アプリケーションの一意の識別子。ソース計画立案ツールによって生成されます。 データタイプ:文字列 |
| app.shortDescription | 関連付けられたアプリケーションの簡単な説明。 データタイプ:文字列 |
| app.team | アプリケーションに関連付けられたチームの説明。 データタイプ:オブジェクト |
| app.team.id | アプリケーションに関連付けられたチームの一意の識別子。ソース計画立案ツールによって生成されます。 データタイプ:文字列 |
| app.team.name | アプリケーションに関連付けられたチームの名前。 データタイプ:文字列 |
| app.url | ソース計画立案ツールサイトのアプリケーションの URL。 データタイプ:文字列 |
| assignedTo | 作業アイテムがアサインされているユーザーの説明。 データタイプ:オブジェクト |
| assignedTo.email | 作業アイテムにアサインされたユーザーのメールアドレス。 データタイプ:文字列 |
| assignedTo.id | 作業アイテムにアサインされたユーザーの一意の識別子。 データタイプ:文字列 |
| assignedTo.name | 作業アイテムにアサインされたユーザーの名前。 データタイプ:文字列 |
| assignedTo.userName | 作業アイテムにアサインされたユーザーのユーザー名。 データタイプ:文字列 |
| createDateTime | アプリケーション、バージョン、または作業アイテムのレコードが作成された日時。 データタイプ:文字列 |
| id | アプリケーション、バージョン、または作業アイテムの一意の識別子。ソース計画立案ツールによって生成されます。 データタイプ:文字列 |
| name | アプリケーションの名前。 データタイプ:文字列 |
| path | アプリケーションへの相対パス。 データタイプ:文字列 |
| shortDescription | アプリケーション、バージョン、または作業アイテムの簡単な説明。 データタイプ:文字列 |
| state | 作業アイテムのステータス。ソース計画立案ツールによって生成されます。 データタイプ:文字列 |
| team | アプリケーションに関連付けられたチームの説明。 データタイプ:オブジェクト |
| team.id | アプリケーションに関連付けられたチームの一意の識別子。ソース計画立案ツールによって生成されます。 データタイプ:文字列 |
| team.name | アプリケーションに関連付けられたチームの名前。 データタイプ:文字列 |
| type | 作業アイテムのタイプ。計画立案ツールによって生成されます。 データタイプ:文字列 |
| url | アプリケーション、バージョン、または作業アイテムにアクセスするために使用する URL。 データタイプ:文字列 |
| version | バージョンを記述するアレイ。 データタイプ:オブジェクト |
| version.app | バージョンに関連付けられたアプリケーションの説明。 データタイプ:オブジェクト |
| version.app.createdDateTime | ソース DevOps ツールでバージョンが作成された日付/時刻。 データタイプ:文字列 |
| version.app.id | アプリケーションの一意の識別子。ソース計画立案ツールによって生成されます。 データタイプ:文字列 |
| version.app.shortDescription | 関連付けられたアプリケーションの簡単な説明。 データタイプ:文字列 |
| version.app.team | アプリケーションに関連付けられたチームの説明。 データタイプ:オブジェクト |
| version.app.team | アプリケーションに関連付けられたチームの一意の識別子。ソース計画立案ツールによって生成されます。 データタイプ:文字列 |
| version.app.team.id | アプリケーションに関連付けられたチームの名前。 データタイプ:文字列 |
| version.app.url | ソース計画立案ツールサイトのアプリケーションの URL。 データタイプ:文字列 |
| version.createdDateTime | ソース DevOps ツールでバージョンが作成された日付/時刻。 データタイプ:文字列 |
| version.id | バージョンの一意の識別子。ソース計画立案ツールによって生成されます。 データタイプ:文字列 |
| version.shortDescription | 関連付けられたバージョンの簡単な説明。 データタイプ:文字列 |
| version.url | ソース計画立案ツールサイトのバージョンの URL。 データタイプ:文字列 |
resource=app のサンプル cURL 要求
curl "https://instance.servicenow.com/api/sn_devops/v1/devops/plan/schema?resource=app" \
--request GET \
--header "Accept:application/json" \
--user "username":"password"
{
"result": {
"id": "PRODUCT1234",
"shortDescription": "Mobile UI",
"createdDateTime": "1970-01-01T08:15:30-05:00",
"team": {
"name": "Mobile UI",
"id": "f0ca45679323008b52f3b457415ae6"
},
"url": "https://jira.com/mycompany/browse/PRODUCT-125"
}
}
resource=version のサンプル cURL 要求
curl "https://instance.servicenow.com/api/sn_devops/v1/devops/plan/schema?resource=version" \
--request GET \
--header "Accept:application/json" \
--user "username":"password"
{
"result": {
"id": "REL1234",
"shortDescription": "APIs Release",
"createdDateTime": "1970-01-01T08:15:30-05:00",
"app": {
"id": "PRODUCT1234",
"shortDescription": "Mobile UI",
"createdDateTime": "1970-01-01T08:15:30-05:00",
"team": {
"name": "Mobile UI",
"id": "f0ca45679323008b52f3b457415ae6"
},
"url": "https://jira.com/mycompany/browse/PRODUCT-125"
},
"url": "https://jira.com/mycompany/browse/REL-125"
}
}
resource=work_item のサンプル cURL 要求
curl "https://instance.servicenow.com/api/sn_devops/v1/devops/plan/schema?resource=work_item" \
--request GET \
--header "Accept:application/json" \
--user "username":"password"
{
"result": {
"id": "STR1234",
"type": "Story",
"shortDescription": "Planning API Spec",
"state": "In-progress",
"createdDateTime": "1970-01-01T08:15:30-05:00",
"assignedTo": {
"name": "Leo Neo",
"userName": "lenn",
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"email": "lenn@smithworksinc.com"
},
"version": {
"id": "REL1234",
"shortDescription": "APIs Release",
"createdDateTime": "1970-01-01T08:15:30-05:00",
"app": {
"id": "PRODUCT1234",
"shortDescription": "Mobile UI",
"createdDateTime": "1970-01-01T08:15:30-05:00",
"team": {
"name": "Mobile UI",
"id": "f0ca45679323008b52f3b457415ae6"
},
"url": "https://jira.com/mycompany/browse/PRODUCT-125"
},
"url": "https://jira.com/mycompany/browse/REL-125"
},
"app": {
"id": "PRODUCT1234",
"shortDescription": "Mobile UI",
"createdDateTime": "1970-01-01T08:15:30-05:00",
"team": {
"name": "Mobile UI",
"id": "f0ca45679323008b52f3b457415ae6"
},
"url": "https://jira.com/mycompany/browse/PRODUCT-125"
},
"url": "https://jira.com/mycompany/browse/HALOKEY-25"
}
}
DevOps - POST/devops/artifact/registration
アーティファクトを ServiceNow インスタンスに登録するオーケストレーションツールを有効にします。
- 要求で toolId が渡されると、エンドポイントはツールがインスタンス内に存在することを検証します。また、artifacts.repositoryName で指定されたアーティファクトリポジトリが存在するかどうかを確認し、存在しない場合は、関連するアーティファクトツールの下に作成します。
- 要求で toolId が渡されない場合、リポジトリは作成されますが、アーティファクトツールにリンクされません。
- その後、artifacts.name で指定されたアーティファクトが既に存在しているかどうかを確認し、存在しない場合は、関連するリポジトリの下に作成します。
- artifact.version が要求で渡された場合:
- 存在しない場合は、関連するアーティファクトバージョン [sn_devops_artifact_version] テーブルに新しいアーティファクトバージョンレコードが作成されます。
- エンドポイントは、指定されたビルドの詳細 (pipelineName または projectName、taskExecutionNumber、branchName、および stageName) と orchestrationToolId パラメーターに基づいて、関連するタスク実行を検索します。
- タスク実行が検出され、その後処理が完了すると、アーティファクトバージョンがタスク実行にリンクされ、TaskExecution のアーティファクト [sn_devops_m2m_artifact_execution] テーブルに格納されます。これらのタスク実行にリンクされたコミットは、アーティファクトバージョンにも関連付けられ、コミットするアーティファクトバージョン [sn_devops_m2m_artifact_version_commit] テーブルに格納されます。アーティファクトを作成しなかった以前のタスク実行にリンクされているコミットも、そのアーティファクトバージョンに関連付けられます。
- タスク実行が検出され、その後処理が完了していない場合、要求はアーティファクトステージング済み要求 [sn_devops_artifact_staging] テーブルに保持されます。ステージング済み要求には、タスク実行への参照が含まれています。
- タスク実行が見つからない場合、要求はステージングテーブルに保持されます。ステージング済み要求には、ビルドの詳細が含まれています。
- artifact.version が渡されない場合、ツール構成に応じて、アーティファクトツールが Webhook をサポートしている場合は /devops/tool/artifact エンドポイントを呼び出すことで、またはアーティファクトツールからアーティファクトバージョンを取得するカスタムサブフローを使用して、アーティファクトバージョンが取得されます。
アーティファクトの詳細については、「 リリースでの DevOps 変更の促進の使用」を参照してください。
URL 形式
バージョニングされた URL:/api/sn_devops/{api_version}/devops/artifact/registration
デフォルトの URL:/api/sn_devops/devops/artifact/registration
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| orchestrationToolId | 必須です。アーティファクトに関連付けられたオーケストレーションツールの sys_id。オーケストレーションツール [sn_devops_orchestration_tool] テーブルにあります。エンドポイントはこの情報を使用して、タスク実行情報を特定します。 データタイプ:文字列 |
| toolId | アーティファクトに関連付けられたアーティファクトツールの sys_id。アーティファクトツール [sn_devops_artifact_tool] テーブルにあります。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| artifacts | エントリが少なくとも 1 つ必要です。登録するアーティファクトバージョンを各オブジェクトが一意に識別するオブジェクトのアレイ。 データタイプ:アレイ |
| artifacts.name | 必須です。アーティファクトファイル名。 データタイプ:文字列 最大長:160 文字 |
| artifacts.repositoryName | 必須です。アーティファクトリポジトリ名。 指定されたリポジトリレコードが存在しない場合は作成されます。 データタイプ:文字列 最大長:160 文字 |
| artifacts.semanticVersion | アーティファクトのセマンティックバージョン。 データタイプ:文字列 形式:MAJOR.MINOR.PATCH 可能な値の例:
最大長:160 文字 デフォルト:Null |
| artifacts.version | toolId が渡されない場合は必須です。アーティファクトバージョン データタイプ:文字列 形式:MAJOR.MINOR 最大長:160 文字 デフォルト:Null |
| branchName | 複数分岐プロジェクトの場合は必須です。アーティファクトが保存されているリポジトリ内の分岐の名前。 データタイプ:文字列 最大長:160 デフォルト:Null |
| pipelineName | projectName が渡されない場合は必須です。パイプライン名。 データタイプ:文字列 最大長:160 デフォルト:Null |
| projectName | pipelineName が渡されない場合は必須です。自由形式のプロジェクト名。 データタイプ:文字列 最大長:160 デフォルト:Null |
| stageName | pipelineName が渡されない場合は必須です。ステージ名。 データタイプ:文字列 最大長:160 デフォルト:Null |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| 承認 | 応答本文のデータフォーマット。application/json のみをサポートします。 |
| 認証 | v2 以降、この API はトークンベースの認証をサポートしています。トークンは、ツール [sn_devops_tool] テーブルにあるツール レコードの [ トークンをコピー ] ボタンをクリックすることで取得できます。その後、トークンを Authorization: sn_devops の形式で認証ヘッダーで使用できます 。DevOpsToken <tool_sys_id>:<tool_token>。注: トークン付きの認証ヘッダーに加えて基本認証の詳細 (ユーザー名とパスワード) が指定されている場合は、基本認証が優先されます。 インスタンスで devops.system ユーザーが利用できない場合は、[ トークンベースの認証が成功した後にこのユーザーに切り替え る] プロパティを使用します。このプロパティを使用すると、トークン認証を完了するために必要な sn_devops.integration ロールを持つ任意のユーザーを設定できます。詳細については、「DevOps Change Velocity properties」を参照してください。 |
| Content-Type | 要求本文のデータ形式。application/json のみをサポートします。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 200 | 成功です。応答本文ありで成功しました。 |
| 201 | 作成されました。応答本文ありで成功しました。 |
| 400 | 要求が正しくありません。要求 URI がシステム内の API と一致しないか、不明な理由で操作が失敗しました。無効なヘッダーによっても、このエラーが発生する場合があります。 |
| 500 | 内部サーバーエラー。要求の処理中に予期しないエラーが発生しました。応答に、エラーに関する追加情報が含まれます。 |
応答本文のパラメーター
| 名前 | 説明 |
|---|---|
| response | アーティファクト登録要求の結果。 データタイプ:オブジェクト |
| response.artifact | 処理された各アーティファクトの結果。 データタイプ:オブジェクト |
| response.artifact.create | 要求でアーティファクトレコードが作成された場合は、アーティファクト [sn_devops_artifact] テーブル内の作成されたレコードの sys_id のリスト。 データタイプ:アレイ |
| response.artifact.create.id | 要求によって作成されたアーティファクトレコードの sys_id。 データタイプ:文字列 |
| response.artifact.found | アーティファクトが既にアーティファクトテーブルに存在する場合、既存のアーティファクトレコードの sys_id のリスト。 注:
既存のパッケージは変更されません。 データタイプ:アレイ |
| response.artifact.found.id | 既存のアーティファクトレコードの sys_id。 データタイプ:文字列 |
| response.artifact.update | 現在、使用されていません。 |
| response.artifact.update.id | 現在、使用されていません。 |
| response.artifact_register_requests | 処理が完了せず、アーティファクトステージング済み要求テーブルに格納されているアーティファクト登録要求の結果。 データタイプ:オブジェクト |
| response.artifact_register_requests.create | 要求でアーティファクトステージングレコードが作成された場合は、作成されたレコードの sys_id のリスト。 データタイプ:アレイ |
| response.artifact_register_requests.create.id | 要求によって作成されたアーティファクトステージングレコードの sys_id。 データタイプ:文字列 |
| response.artifact_register_requests.found | 関連するアーティファクトステージングレコードがアーティファクトにある場合は、既存のアーティファクトステージングレコードの sys_id のリスト。 注:
既存のパッケージは変更されません。 データタイプ:アレイ |
| response.artifact_register_requests.found.id | 既存のアーティファクトステージングレコードの sys_id。 データタイプ:文字列 |
| response.artifact_register_requests.update | 現在、使用されていません。 |
| response.artifact_register_requests.update.id | 現在、使用されていません。 |
| response.artifact_repository | 要求の処理中に操作されたアーティファクトリポジトリレコードの結果。 データタイプ:オブジェクト |
| response.artifact_repository.create | 要求によってアーティファクトリポジトリが作成された場合は、作成されたレコードの sys_id のリスト。 データタイプ:アレイ |
| response.artifact_repository.create.id | 要求によって作成されたアーティファクトリポジトリレコードの sys_id。 データタイプ:文字列 |
| response.artifact_repository.found | 登録要求で使用されるアーティファクトリポジトリレコードが既に存在する場合、既存のレコードの sys_id のリスト。 注:
既存のパッケージは変更されません。 データタイプ:アレイ |
| response.artifact_repository.found.id | 要求によって使用された既存のアーティファクトリポジトリレコードの sys_id。 データタイプ:文字列 |
| response.artifact_repository.update | エンドポイントがリポジトリの追跡フラグを (false から) true に更新した場合、変更されたリポジトリレコードの sys_id のリスト。 データタイプ:アレイ |
| response.artifact_repository.update.id | 追跡フラグが変更されたリポジトリレコードの sys_id。 データタイプ:文字列 |
| response.artifact_version | 要求の処理中に操作されたアーティファクトバージョンレコードの結果。 データタイプ:オブジェクト |
| response.artifact_version.create | 要求の処理中に作成されたアーティファクトバージョンレコードの結果。 データタイプ:アレイ |
| response.artifact_version.create.id | 要求によって作成されたアーティファクトバージョンレコードの sys_id。 データタイプ:文字列 |
| response.artifact_version.found | 登録要求で使用されるアーティファクトバージョンレコードが既に存在する場合、既存のレコードの sys_id のリスト。 データタイプ:アレイ |
| response.artifact_version. found.id | 要求によって使用された既存のアーティファクトバージョンレコードの sys_id。 データタイプ:文字列 |
| response.artifact_version.update | 現在、使用されていません。 |
| response.artifact_version.update.id | 現在、使用されていません。 |
| status | 登録要求のステータス。 可能な値:
データタイプ:文字列 |
サンプル cURL 要求
curl -X POST \
'https://instance.servicenow.com/api/sn_devops/devops/artifact/registration?toolId=391b4ff6dba24010bc8cdd384b96198f&orchestrationToolId=99d70b36dba24010bc8cdd384b961985' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-u 'username':'password' \
-d ' {"artifacts": [\
{\
"name": "sa-web.jar",\
"version": "3.1",\
"semanticVersion": "3.1.0",\
"repositoryName": "services-1031"\
},\
{\
"name": "sa-frontend.jar",\
"version": "3.2",\
"semanticVersion": "3.2.0",\
"repositoryName": "services-1031"\
}\
],\
"pipelineName": "spring-boot-app",\
"taskExecutionNumber": "160",\
"stageName": "Build",\
"branchName": "primary"\
}]'
{
"result": {
"status": "Success",
"response": {
"artifact_repository": {
"create": [
{
"id": "2e50ba8bdbaa4010bc8cdd384b961988"
}
],
"update": [],
"found": [
{
"id": "2e50ba8bdbaa4010bc8cdd384b961988"
}
]
},
"artifact": {
"create": [
{
"id": "6a50f603dbea4010bc8cdd384b96193d"
},
{
"id": "2e50f603dbea4010bc8cdd384b96193f"
}
],
"update": [],
"found": []
},
"artifact_version": {
"create": [
{
"id": "a650f603dbea4010bc8cdd384b96193e"
},
{
"id": "6250f603dbea4010bc8cdd384b961940"
}
],
"update": [],
"found": []
},
"artifact_register_requests": {
"create": [
{
"id": "6250f603dbea4010bc8cdd384b96193f"
},
{
"id": "6650f603dbea4010bc8cdd384b961940"
}
],
"update": [],
"found": []
}
}
}
}
DevOps - POST /devops/onboarding/app
DevOps サービスによって非同期に処理されるオンボーディングアプリイベントを作成します。
- アプリケーションを作成します。
- 計画、リポジトリ、パイプラインなどの DevOps オブジェクトをアプリケーションに関連付けます。
- 変更ステップレコードを作成し、変更承認プロセスをパイプラインに関連付けます。
これらのアクションはすべてツールと機能に固有です。次の表は、サポートされている各ツールで利用可能なアクションの概要です。
URL 形式
バージョニングされた URL:/api/sn_devops/{api_version}/devops/onboarding/app
デフォルトの URL:/api/sn_devops/devops/onboarding/app
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| なし |
| 名前 | 説明 |
|---|---|
| apps | 関連する ServiceNow インスタンス内に作成するアプリを定義するオブジェクトのアレイ。 データタイプ:アレイ |
| apps.bussinessApp | アプリケーションのマップ先の cmdb_ci_business_app の名前。これにより、DevOps アプリケーションが指定された CMDB アプリケーションに関連付けられます。 データタイプ:文字列 |
| apps.name | 必須です。作成するアプリケーションの分かりやすい名前。アプリは、計画、リポジトリ、およびパイプラインを結び付ける DevOps 製品コンテナーオブジェクトです。 データタイプ:文字列 |
| credentials | 必須です。Webhook の作成に使用する資格情報。作成された Webhook は、通知を送信するためにツールで使用されます。 データタイプ:オブジェクト |
| credentials.name | 必須です。エンドポイント要求を行うユーザーの ServiceNow ユーザー ID。ユーザー [sys_user] テーブルにあります。このユーザーには devops.integration.user ロールが必要です。バージョン 1.34.1 以降、このユーザーには sn_devops.admin ロールが必要です。 データタイプ:文字列 |
| credentials.password | 必須です。credenitals.name パラメーターで指定されたユーザーのパスワード。 データタイプ:文字列 |
| pipelines | アプリケーションに関連付けるパイプラインを定義するオブジェクトのアレイ。 データタイプ:アレイ |
| pipelines.app | pipelines オブジェクトが指定されている場合は必須です。pipelines.name パラメーターで指定された計画に関連付けるアプリケーションの名前。アプリケーションは既に作成されているか、この要求の apps オブジェクトで指定されている必要があります。 データタイプ:文字列 |
| pipelines.changeSteps | pipelines.name フィールドで指定されたパイプラインに対して作成する変更ステップを定義するオブジェクトのアレイ。 データタイプ:アレイ
データタイプ:文字列 |
| pipelines.changeSteps.changeApprovalGroup | changeSteps オブジェクトが指定されている場合は必須です。パイプラインに関連付ける変更承認グループの名前。グループ [sys_user_group] テーブルにあります。このグループは ServiceNow インスタンスに既に存在している必要があります。 データタイプ:文字列 |
| pipelines.changeSteps.changeControlledBranches | 変更管理下にあるコード分岐のカンマ区切りリスト。これは複数分岐のサポートにのみ適用されます。 データタイプ:文字列 デフォルト:* (すべての分岐) |
| pipelines.changeSteps.changeType | changeSteps オブジェクトが指定されている場合は必須です。作成する変更要求のタイプ。使用可能なタイプは、変更要求 [change_request] テーブルの Type フィールドで定義されます。 データタイプ:文字列 |
| pipelines.changeSteps.name | changeSteps オブジェクトが指定されている場合は必須です。作成するステップの名前。ステップ名は、オーケストレーションツールのパイプライン内の対応するステップの名前と一致する必要があります。 データタイプ:文字列 |
| pipelines.changeSteps.type | changeSteps オブジェクトが指定されている場合は必須です。作成するステップのタイプ。利用可能なステップタイプは、ステップ [sn_devops_step] テーブルの Type フィールドで定義されます。 データタイプ:文字列 |
| pipelines.name | pipelines オブジェクトが指定されている場合は必須です。pipelines.app パラメーターで指定されたアプリケーションに関連付けるパイプラインの名前。このパイプラインは ServiceNow インスタンスで既に検出されている必要があります。 データタイプ:文字列 |
| pipelines.project | pipelines オブジェクトが指定され、pipelines.tool がプロジェクト エンティティ (ADO ツールなど) をサポートしている場合は必須です。一意のパイプライン/ツール識別子を作成するためにパイプラインに関連付けるプロジェクト。パラメーター値は、プロジェクト [sn_devops_project] テーブルのプロジェクトから派生する必要があります。データタイプ:文字列 |
| pipelines.tool | pipelines オブジェクトが指定されている場合は必須です。パイプラインに関連付けて、一意のパイプライン/ツール識別子を作成するツール。 データタイプ:文字列 |
| plans | アプリケーションに関連付ける計画を定義するオブジェクトのアレイ。 データタイプ:アレイ |
| plans.apps | plans オブジェクトが指定されている場合は必須です。plans.name パラメーターで指定された計画に関連付けるアプリケーションの名前。これらのアプリケーションは既に作成されているか、この要求の apps オブジェクトで指定される必要があります。 データタイプ:文字列のアレイ |
| plans.name | plans オブジェクトが指定されている場合は必須です。plans.app パラメーターで指定されたアプリケーションに関連付ける計画の名前。この計画は ServiceNow インスタンスで既に検出されている必要があります。 データタイプ:文字列 |
| plans.project | plans オブジェクトが指定されていて、plans.tool がプロジェクトエンティティ (ADO ツールなど) をサポートしている場合は必須です。一意の計画/ツール識別子を作成するためにパイプラインに関連付けるツール。パラメーター値は、プロジェクト [sn_devops_project] テーブルのプロジェクトから派生する必要があります。データタイプ:文字列 |
| plans.tool | plans オブジェクトが指定されている場合は必須です。計画に関連付けて、一意の計画/ツール識別子を作成するツール。 データタイプ:文字列 |
| repositories | アプリケーションに関連付けるリポジトリを定義するオブジェクトのアレイ。リポジトリオブジェクトにアプリパラメーターが含まれている場合は、リポジトリをアプリケーションにマッピングします。 データタイプ:アレイ |
| repositories.app | repositories オブジェクトが指定されている場合は必須です。このリポジトリに関連付けるアプリケーションの名前。アプリケーションは既に作成されているか、この要求の apps オブジェクトで指定されている必要があります。 データタイプ:文字列 |
| repositories.name | repositories オブジェクトが指定されている場合は必須です。repositories.app パラメーターで指定されたアプリケーションに関連付けるリポジトリの名前。このリポジトリは ServiceNow インスタンスで既に検出されている必要があります。 データタイプ:文字列 |
| repositories.project | リポジトリオブジェクトが指定され、repositories.toolがプロジェクトエンティティ (ADO ツールなど) をサポートしている場合は必須です。リポジトリに関連付けて一意のリポジトリ/ツール識別子を作成するツール。パラメーター値は、プロジェクト [sn_devops_project] テーブルのプロジェクトから派生する必要があります。データタイプ:文字列 |
| repositories.tool | repositories オブジェクトが指定されている場合は必須です。一意のリポジトリ/ツール識別子を作成するためにリポジトリに関連付ける分かりやすいツール名。ツールは ServiceNow インスタンスで既に作成されている必要があります。 データタイプ:文字列 |
| artifactRepositories.app | artifactRepositories オブジェクトが指定されている場合は必須です。このアーティファクトリポジトリに関連付けるアプリケーションの名前。アプリケーションは、既に作成されているか、この要求の apps オブジェクトで指定されている必要があります。データタイプ:文字列 |
| artifactRepositories.name | artifactRepositories オブジェクトが指定されている場合は必須です。artifactRepositories.appパラメーターで指定されたアプリケーションに関連付けるartifactRepositoriesの名前。このアーティファクトリポジトリは、ServiceNow インスタンスで既に検出されている必要があります。データタイプ:文字列 |
| artifactRepositories.tool | artifactRepositories オブジェクトが指定されている場合は必須です。一意の artifactRepositories /ツール識別子を作成するために artifactRepositories に関連付ける分かりやすいツール名。ツールは、ServiceNow インスタンスで既に作成されている必要があります。データタイプ:文字列 |
| artifactRepositories.project | artifactRepositories オブジェクトが指定されていて、repositories.tool がプロジェクトエンティティ (ADO ツールなど) をサポートしている場合は必須です。一意のパイプライン/ツール識別子を作成するために artifactRepositories に関連付けるツール。 データタイプ:文字列 |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| 承認 | 応答本文のデータフォーマット。application/json のみをサポートします。 |
| Content-Type | 要求本文のデータ形式。application/json のみをサポートします。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 202 | オンボーディング要求が正常に作成されました。 |
応答本文のパラメーター
| 名前 | 説明 |
|---|---|
| result | オンボーディング要求の結果。 データタイプ:オブジェクト |
| result.code | HTTP ステータスコード。 データタイプ:文字列 |
| result.details | オンボーディング要求に関する詳細。 データタイプ:文字列 |
| result.errors | 発生したエラーの説明。 データタイプ:オブジェクト |
| result.error.message | エラーメッセージ。 データタイプ:文字列 |
| result.onboardingRequestID | オンボーディング要求の一意の識別子。/devops/onboarding/status エンドポイントを呼び出して、関連するオンボーディングプロセスのステータスを取得するときに、この値を使用します。 データタイプ:文字列 |
| result.status | オンボーディング要求のステータス (成功または失敗)。 データタイプ:文字列 |
cURL 要求
この例では、Bike Rental Service アプリケーションを作成し、Jenkins パイプラインの Bike Rentals、GitHub リポジトリ nowDevops01/CorpSite、および Azure プラン testPlan_Bike_Rental に関連付けています。
curl -X POST "https://servicenow-instance/api/sn_devops/v1/devops/onboarding/app" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-u "username":"password" \
-d "{
"apps": [
{
"name": "Bike Rental Service"
}
]
"pipelines": [
{
"tool": "Primary Jenkins",
"name": "Bike Rentals",
"app": "Bike Rental Service",
"changeSteps": [
{
"name": "Prod",
"type": "deploy",
"changeApprovalGroup": "Change Management",
"changeType": "normal"
}
]
}
],
"repositories": [
{
"tool": "Primary GitHub",
"name": "nowDevops01/CorpSite",
"app": "Bike Rental Service"
}
]
"plans": [
{
"tool": "Primary Azure",
"name": "testPlan_Bike_Rental",
"project": "DemoProjecttt",
"apps": [
"Bike Rental Service"
]
}
]
"artifactRepositories": [
{
"tool": "AdoTool",
"name": "empb5-sonar",
"apps": [
"appXXXXtz"
]
}
]
"credentials" : {
"name": "devops_user",
"password": "devops_password"
}
}
出力:
{
"result":{
"status": "Success",
"details": "Onboarding request has been created. Please use the /status api and the onboarding request number to get the status of the request",
"onboardingRequestID": "IBE0001045",
"code": "202"
}
}
DevOps - POST /devops/onboarding/tool
DevOps サービスによって非同期に処理されるオンボーディングツールイベントを作成します。
- 関連する ServiceNow インスタンス内にツールを作成する
- ツールに接続する
- ツールの設定を試行する (接続に成功した場合のみ)
- ツールを検出する (接続に成功した場合のみ)
このエンドポイントで返される結果は、要求がポストされたかどうかのみを示し、関連するツールが作成されたかどうかは示しません。実際のツールの作成は非同期に処理されます。ツールの作成と他のすべてのアクションのステータスを取得するには、/devops/onboarding/status エンドポイントを呼び出し、このエンドポイントによって返される onboardingRequestID パラメーターを渡す必要があります。
このエンドポイントにアクセスするには、管理者が、インスタンスでツールを設定するために DevOps 接続と資格情報エイリアス (CreateDevOpsTool) を設定する必要があります。詳細については、「 DevOps チェンジベロシティのインストール」を参照してください。さらに、呼び出し元エンティティには devops.integration.user ロールが必要です。
URL 形式
バージョニングされた URL:/api/sn_devops/{api_version}/devops/onboarding/tool
デフォルトの URL:/api/sn_devops/devops/onboarding/tool
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| なし |
| 名前 | 説明 |
|---|---|
| credentials | 必須です。Webhook の作成に使用する資格情報。作成された Webhook は、通知を送信するためにツールで使用されます。 データタイプ:オブジェクト |
| credentials.name | 必須です。エンドポイント要求を行うユーザーの ServiceNow ID。ユーザー [sys_user] テーブルにあります。このユーザーには devops.integration.user ロールが必要です。バージョン 1.34.1 以降、このユーザーには sn_devops.admin ロールが必要です。 データタイプ:文字列 |
| credentials.password | 必須です。credenitals.name パラメーターで指定されたユーザーのパスワード。 データタイプ:文字列 |
| tools | 必須です。関連する ServiceNow インスタンス内に作成するツールを定義するオブジェクトのアレイ。1 つの要求で 1 つ以上のツールを作成できます。 データタイプ:アレイ |
| tools.name | 必須です。作成するツールの分かりやすい名前またはラベル。この名前は、DevOps サービスでツールを識別するために使用されます。 データタイプ:文字列 |
| tools.password | アジャイルツール以外で必須です。ツールへのアクセスに使用するパスワード。サポートされている認証は基本認証とトークン認証です。OAuth はサポートされていません。 データタイプ:文字列 |
| tools.type | 必須です。作成するツールのタイプ (GitHub や BitBucket など)。指定された値は、ツール統合 [sn_devops_tool_integration] テーブルのツールラベルの 1 つである必要があります。 データタイプ:文字列 |
| tools.useMidServer | ツールが MID サーバー を介して接続するかどうかを示すフラグ。 有効な値:
データタイプ:ブーリアン |
| tools.username | アジャイルツール以外で必須です。このエンドポイントを介してツールにアクセスするために使用するユーザー名。 データタイプ:文字列 |
| tools.url | アジャイルツール以外で必須です。作成するツールの URL。DevOps サービスでは、この URL を使用してツールと統合します。「Azure DevOps」ツールを使用する場合、 tools.url には ADO 組織 URL または ADO プロジェクト URL のいずれかを含めることができます。 ADO 組織の URL を指定すると、API は指定された組織の下にあるすべてのプロジェクトを検出し、プロジェクトは構成しません。ADO プロジェクト URL を指定すると、API はプロジェクトに関連するエンティティ (パイプライン、リポジトリ、プラン) を検出し、 credentials オブジェクトが存在する場合はプロジェクトも構成します。プロジェクト構成をスキップするように API に明示的に指示するには、フラグ configureTool (タイプ: ブーリアン) を データタイプ:文字列 |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| 承認 | 応答本文のデータフォーマット。application/json のみをサポートします。 |
| Content-Type | 要求本文のデータ形式。application/json のみをサポートします。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 202 | オンボーディング要求が正常に作成されました。 |
応答本文のパラメーター
| 名前 | 説明 |
|---|---|
| result | オンボーディング要求の結果。 データタイプ:オブジェクト |
| result.code | HTTP ステータスコード。 データタイプ:文字列 |
| result.details | オンボーディング要求に関する詳細メッセージ。 データタイプ:文字列 |
| result.errors | 発生したエラーの説明。 データタイプ:オブジェクト |
| result.error.message | エラーメッセージ。 データタイプ:文字列 |
| result.onboardingRequestID | オンボーディング要求の一意の識別子。/devops/onboarding/status エンドポイントを呼び出して、関連するツールのオンボーディングプロセスのステータスを取得するときに、この値を使用します。 データタイプ:文字列 |
| result.status | オンボーディング要求のステータス (成功または失敗)。 データタイプ:文字列 |
cURL 要求
次の例は、GitHub をオンボーディングする方法を示しています。
curl -X POST "https://servicenow-instance/api/sn_devops/v1/devops/onboarding/tool" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-u "username":"password" \
-d {
"tool":[{
"name": "Primary GitHub",
"type": "GitHub",
"url": "https"//api.github.com",
"username": "username",
"password": "password",
"useMidServer": false
}]
"credentials" : {
"name": "devops_user",
"password": "devops_password"
}
}
{
"result":{
"status": "Success",
"details": "Onboarding request has been created. Please use the /status api and the onboarding request number to get the status of the request",
"onboardingRequestID": "IBE0001041",
"code": "202"
}
}
DevOps - POST /devops/orchestration/changeControl
変更管理下にあるオーケストレーションタスクの ServiceNow インスタンスでコールバックを登録します。変更要求で決定が行われたら、これを呼び出すことができます。
このエンドポイントを呼び出す前に、ServiceNow インスタンスにオーケストレーションタスクを作成しておく必要があります。このタスクは、Discovery を使用するか、DevOps - POST /devops/orchestration/stepMapping エンドポイントを呼び出すことで作成できます。また、オーケストレーションタスクが以前に定義されたパイプラインステップに関連付けられていること、および変更コントロールが有効になっていることも確認する必要があります ([App Stage] フォームで [ Change control (変更コントロール )] オプションを選択します)。詳細については、「 DevOps 変更の促進」を参照してください。
URL 形式
バージョニングされた URL:/api/sn_devops/{api_version}/devops/orchestration/changeControl
デフォルトの URL:/api/sn_devops/devops/orchestration/changeControl
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| toolId | 必須です。指定されたタスクを変更管理下に置く DevOps ツールの sys_id。オーケストレーションツール sn_devops_orchestration_tool テーブルにあります。 データタイプ:文字列 |
| toolType | ツールのタイプ。 有効な値:ツールを識別する任意の値 (「jenkins」など)。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| callbackURL | 必須です。関連する変更要求承認プロセスが完了したときに ServiceNow インスタンスがコールバックできる URL。このコールバックは、承認結果に基づいてパイプラインの実行を続行するか、または続行しません。 データタイプ:文字列 |
| changeRequestDetails | 変更要求をクローズするときに設定するフィールドの名前と値のペア。このオブジェクトには、以下を除く変更要求レコードの任意のフィールドを含めることができます。
これらのフィールドが要求に含まれている場合、エンドポイントは 400 エラーを返し、変更要求は更新されません。また、他の必須フィールドの設定を必要とするフィールドを含めたが、それらのフィールドが送信されない場合は、パイプラインの後の処理で要求が失敗します。この失敗は、変更要求の作業メモに、その変更要求のエラーメッセージとともに記載されています。例:変更の要求の更新が理由 <プラットフォームからのエラーメッセージ> で失敗しました。変更要求および関連するステップの実行をキャンセルしています。 このオブジェクトでブーリアンパラメーター setCloseCode を渡して、関連する変更要求レコードのクローズ情報を設定するかどうかを指定することもできます。
データタイプ:オブジェクト |
| isMultiBranch | オーケストレーションツールが Jenkins の場合、プロジェクトがマルチブランチかどうかを示すフラグ。 有効な値:
データタイプ:ブール デフォルト値:false |
| orchestrationTaskDetails | 必須です。 オーケストレーションタスクの説明。 データタイプ:オブジェクト |
| orchestrationTaskDetails.message | 自由形式のテキストメッセージ。 データタイプ:文字列 |
| orchestrationTaskDetails.triggerType | 必須です。オーケストレーションタスクが開始された方法。 有効な値:
データタイプ:文字列 |
| orchestrationTaskDetails.upstreamTaskExecutionURL | triggerType が upstream に設定されている場合は必須です。アップストリームタスク実行 URL。 例:https://jenkins.mycompany.com:8080/job/Mobile-Platform-test/40/ データタイプ:文字列 |
| orchestrationTaskURL | 必須です。コールバックを作成するオーケストレーションタスクの URL。 例:https://jenkins.mycompany.com:8080/orchestration_task/Mobile-Platform-deploy/ データタイプ:文字列 |
| parentNode | オーケストレーションタスクが親オーケストレーションタスク内にネストされた子である場合、この値には親ノードの詳細が含まれます。 データタイプ:オブジェクト |
| parentNode.id | 親ノードの一意の ID。 Jenkins では、この値はパイプラインステージ ID に対応します。 データタイプ:文字列 |
| parentNode.name | 親ノードの名前。 Jenkins では、この値はパイプラインステージ名に対応します。 データタイプ:文字列 |
| parentNode.upstreamStageName | 親ノードのアップストリームオーケストレーションタスクの名前。 Jenkins では、この値はパイプラインステージ名に対応します。 データタイプ:文字列 |
| parentNode.upstreamTaskExecutionURL | 親ノードのアップストリームタスク実行の URL。 Jenkins では、この値はパイプラインステージ実行に対応します。 データタイプ:文字列 |
| parentStageName | オーケストレーションタスクが親オーケストレーションタスク内にネストされた子である場合、親オーケストレーションタスクの名前。 データタイプ:文字列 |
| parentStageURL | オーケストレーションタスクが親オーケストレーションタスク内にネストされた子である場合、親オーケストレーションタスクの URL。 データタイプ:文字列 |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| 承認 | 応答本文のデータフォーマット。サポートされるタイプ:application/json または application/xml。 デフォルト: application/json |
| 認証 | v2 以降、この API はトークンベースの認証をサポートしています。トークンは、ツール [sn_devops_tool] テーブルにあるツール レコードの [ トークンをコピー ] ボタンをクリックすることで取得できます。その後、トークンを Authorization: sn_devops の形式で認証ヘッダーで使用できます 。DevOpsToken <tool_sys_id>:<tool_token>。注: トークン付きの認証ヘッダーに加えて基本認証の詳細 (ユーザー名とパスワード) が指定されている場合は、基本認証が優先されます。 インスタンスで devops.system ユーザーが利用できない場合は、[ トークンベースの認証が成功した後にこのユーザーに切り替え る] プロパティを使用します。このプロパティを使用すると、トークン認証を完了するために必要な sn_devops.integration ロールを持つ任意のユーザーを設定できます。詳細については、「DevOps Change Velocity properties」を参照してください。 |
| Content-Type | 要求本文のデータ形式。application/json のみをサポートします。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 201 | 要求が正常に完了しました。 |
| 400 | 要求が正しくありません。不適切な要求タイプまたは誤った要求が検出されました。 |
| 401 | 認証が無効か見つかりません。 |
| 500 | 内部サーバーエラー。要求の処理中に予期しないエラーが発生しました。応答に、エラーに関する追加情報が含まれます。 |
応答本文のパラメーター
| 名前 | 説明 |
|---|---|
| changeControl | オーケストレーションタスクが変更管理下にあるかどうかを示すフラグ。 可能な値:
データタイプ:ブーリアン |
cURL 要求
curl -X POST "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/changeControl?toolId=f0ca45679323008b52f3b457415ae6&toolType=jenkins"
-H "accept: application/json"\
-H "Content-Type: application/json"\
-u "username":"password"\
-d "{
\"orchestrationTaskURL\":\"https://jenkins.mycompany.com:8080/orchestration task/Mobile-Platform-deploy/\",
\"callbackURL\":\"https://jenkins.mycompany.com:8080/sn-devops/964aca59-0cae-4d9b-a36d-5929f426cf31\",
\"orchestrationTaskDetails\":{
\"message\":\"Started by upstream project \\\"Mobile-Platform-test\\\" build number 40\",
\"triggerType\":\"upstream\",
\"upstreamTaskExecutionURL\":\"https://jenkins.mycompany.com:8080/job/Mobile-Platform-test/40/\"}
}"
応答本文。
{
"result": {
"changeControl": true,
"status": "Success"
}
}
cURL 要求
この例では、変更要求をクローズするときに changeRequestDetails オブジェクトのフィールドを渡す方法を示します。
curl -X POST "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/changeControl?toolId=f0ca45679323008b52f3b457415ae6&toolType=jenkins"
-H "accept: application/json"\
-H "Content-Type: application/json"\
-u "username":"password"\
-d "{
"callbackURL":"http://192.168.0.4:3000/jenkins/sn-devops/pipeline_839b7605-b98d-4831-bc87-96829de7da37",
"orchestrationTaskURL":"http://192.168.0.4:3000/jenkins/job/java_sample_tests#deploy/",
"isMultiBranch":"false",
"orchestrationTaskName":"java_sample_tests#deploy",
"orchestrationTaskDetails":{
"triggerType":"upstream",
"upstreamTaskExecutionURL":"http://192.168.0.4:3000/jenkins/job/java_sample_tests/129/execution/node/35/wfapi/describe",
"taskExecutionURL":"http://192.168.0.4:3000/jenkins/job/java_sample_tests/129/execution/node/50/wfapi/describe"
},
"changeRequestDetails":{
"setCloseCode":false,
"attributes":{
"sys_created_by":"1832fbe1d701120035ae23c7ce610369",
"sys_updated_by":"56826bf03710200044e0bfc8bcbe5dca",
"requested_by":{
"name":"test user1"
},
"watch_list":[
{
"name":"test user1"
},
{
"name":"test user2"
},
{
"name":"Alejandra Prenatt"
},
"56826bf03710200044e0bfc8bcbe5dca"
],
"work_notes_list":[
"56826bf03710200044e0bfc8bcbe5dca",
"46c6f9efa9fe198101ddf5eed9adf6e7",
"d8f57f140b20220050192f15d6673a98"
],
"assigned_to":"1832fbe1d701120035ae23c7ce610369",
"category":"Service",
"sys_created_on":"2021-02-09 18:58:41",
"priority":"2",
}
}
}"
応答本文。
{
"result": {
"changeControl": true,
"status": "Success"
}
}
DevOps - POST /devops/orchestration/stepMapping
渡される情報がオーケストレーションタスクの作成に有効であり、以前に作成されたステップへの関連付けに有効であることを確認します。両方が有効な場合、オーケストレーションタスクが作成され、関連付けが行われます。
URL 形式
バージョニングされた URL:/api/sn_devops/{api_version}/devops/orchestration/stepMapping
デフォルトの URL:/api/sn_devops/devops/orchestration/stepMapping
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| toolId | 必須です。オーケストレーションツールの sys_id。オーケストレーションツール [sn_devops_orchestration_tool] テーブルにあります。 データタイプ:文字列 |
| toolType | 必須です。ツールのタイプ。 有効な値:jenkins データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| branchName | オーケストレーションタスクに関連付けられたブランチの名前。 データタイプ:文字列 |
| isMultiBranch | オーケストレーションツールが Jenkins の場合、プロジェクトがマルチブランチかどうかを示すフラグ。 有効な値:
データタイプ:ブール デフォルト値:false |
| parentNode | オーケストレーションタスクが親オーケストレーションタスク内にネストされた子である場合、この値には親ノードの詳細が含まれます。 データタイプ:オブジェクト |
| parentNode.id | 親ノードの一意の ID。 Jenkins では、この値はパイプラインステージ ID に対応します。 データタイプ:文字列 |
| parentNode.name | 親ノードの名前。 Jenkins では、この値はパイプラインステージ名に対応します。 データタイプ:文字列 |
| parentNode.upstreamStageName | 親ノードのアップストリームオーケストレーションタスクの名前。 Jenkins では、この値はパイプラインステージ名に対応します。 データタイプ:文字列 |
| parentNode.upstreamTaskExecutionURL | 親ノードのアップストリームタスク実行の URL。 Jenkins では、この値はパイプラインステージ実行に対応します。 データタイプ:文字列 |
| parentStageName | オーケストレーションタスクが親オーケストレーションタスク内にネストされた子である場合、親オーケストレーションタスクの名前。 データタイプ:文字列 |
| parentStageURL | オーケストレーションタスクが親オーケストレーションタスク内にネストされた子である場合、親オーケストレーションタスクの URL。 データタイプ:文字列 |
| orchestrationTaskName | 必須です。 オーケストレーションタスクの名前。これは、 orchestrationTaskURL で参照されているものと同じタスクです。 データタイプ:文字列 |
| orchestrationTaskURL | 必須です。オーケストレーションタスクの URL。 例:https://jenkins.mycompany.com:8080/orchestration_task/Mobile-Platform-deploy/ データタイプ:文字列 |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| 承認 | 応答本文のデータフォーマット。application/json のみをサポートします。 |
| 認証 | v2 以降、この API はトークンベースの認証をサポートしています。トークンは、ツール [sn_devops_tool] テーブルにあるツール レコードの [ トークンをコピー ] ボタンをクリックすることで取得できます。その後、トークンを Authorization: sn_devops の形式で認証ヘッダーで使用できます 。DevOpsToken <tool_sys_id>:<tool_token>。注: トークン付きの認証ヘッダーに加えて基本認証の詳細 (ユーザー名とパスワード) が指定されている場合は、基本認証が優先されます。 インスタンスで devops.system ユーザーが利用できない場合は、[ トークンベースの認証が成功した後にこのユーザーに切り替え る] プロパティを使用します。このプロパティを使用すると、トークン認証を完了するために必要な sn_devops.integration ロールを持つ任意のユーザーを設定できます。詳細については、「DevOps Change Velocity properties」を参照してください。 |
| Content-Type | 要求本文のデータ形式。application/json のみをサポートします。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 201 | 成功。要求が正常に処理されました。 |
| 400 | 要求が正しくありません。不適切な要求タイプまたは誤った要求が検出されました。 |
| 401 | 権限がありません。ユーザー資格情報が間違っているか、渡されていません。 |
| 500 | 内部サーバーエラー。要求の処理中に予期しないエラーが発生しました。応答に、エラーに関する追加情報が含まれます。 |
応答本文のパラメーター
| 要素 | 説明 |
|---|---|
| status | 検証が成功したかどうかを示すフラグです。 有効な値:
データタイプ:ブーリアン |
| stepValid | 送信された情報が有効かどうかを示すフラグ。 有効な値:
データタイプ:ブーリアン |
サンプル cURL 要求
curl -X POST "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/stepMapping?toolId=f0ca45679323008b52f3b457415ae6&toolType=jenkins"
-H "Accept: application/json"\
-H "Content-Type: application/json"\
-u "username":"password"\
-d "{
\"orchestrationTaskURL\":\" http://127.0.0.1:8090/jenkins/job/CorpSite/job/primary#deploy PROD/\",
\"orchestrationTaskName\":\" primary#deploy PROD\"
}"
情報が有効な場合の結果。
{
"result": {
"stepValid": true,
"status": "Success"
}
}
情報が無効な場合の結果。
{
"result": {
"stepValid": false,
"status": "Success"
}
}
DevOps - POST /devops/package/registration
指定されたアーティファクトバージョンを含む新しいアーティファクトパッケージを作成するオーケストレーションツールを有効にします。
アーティファクトパッケージは、変更要求を表示するときに変更承認者にコミットを表示するために使用されます。変更要求にコミットを表示するには、変更承認を含むステージの前のステージでパッケージを作成する必要があります。
パッケージ登録要求に含まれるすべてのアーティファクトバージョンは、既に DevOps に登録されている必要があります。アーティファクトバージョンの登録の詳細については、「DevOps - POST/devops/artifact/registration」を参照してください。
- artifacts.pipelineName または artifacts.projectName
- artifacts.taskExecutionNumber
- artifacts.stageName
- artifacts.branchName
アーティファクトパッケージの詳細については、「 リリースでの DevOps 変更の促進の使用」を参照してください。
URL 形式
バージョニングされた URL:/api/sn_devops/{api_version}/devops/package/registration
デフォルトの URL:/api/sn_devops/devops/package/registration
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| orchestrationToolId | 必須です。アーティファクトパッケージに関連付けられたオーケストレーションツールの sys_id。オーケストレーションツール [sn_devops_orchestration_tool] テーブルにあります。エンドポイントはこの情報を使用して、タスク実行情報を特定します。 データタイプ:文字列 |
| toolId | アーティファクトパッケージに関連付けられたアーティファクトツールの sys_id。アーティファクトツール [sn_devops_artifact_tool] テーブルにあります。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| artifacts | エントリが少なくとも 1 つ必要です。パッケージに含めるアーティファクトバージョンを各オブジェクトが一意に識別するオブジェクトのアレイ。 データタイプ:アレイ |
| artifacts.branchName | artifact.version が渡されず、複数分岐セットアップの場合は必須です。アーティファクトのバージョンが保存される分岐の名前。 データタイプ:文字列 最大長:160 デフォルト:Null |
| artifacts.name | 必須です。アーティファクトファイル名。 データタイプ:文字列 最大長:160 文字 |
| artifacts.pipelineName | artifact.version および artifacts.projectName が渡されない場合は必須です。パイプライン名。 データタイプ:文字列 最大長:160 デフォルト:Null |
| artifacts.projectName | artifact.version および artifact.pipelineName が渡されない場合は必須です。自由形式のプロジェクト名。 データタイプ:文字列 最大長:160 デフォルト:Null |
| artifacts.repositoryName | 必須です。アーティファクトリポジトリ名。 データタイプ:文字列 最大長:160 文字 |
| artifacts.stageName | artifact.version が渡されない場合は必須です。ステージ名。 データタイプ:文字列 最大長:160 デフォルト:Null |
| artifacts.taskExecutionNumber | artifact.version が渡されない場合は必須です。パイプライン実行番号。 データタイプ:文字列 デフォルト:Null |
| artifacts.version | ビルドの詳細が指定されていない場合は必須です。アーティファクトのバージョン。 データタイプ:文字列 形式:<Major>.<Minor> デフォルト:Null |
| branchName | 複数分岐プロジェクトの場合は必須です。アーティファクトが保存されているリポジトリ内の分岐の名前。 データタイプ:文字列 最大長:200 文字 デフォルト:Null |
| name | 必須です。パッケージの名前。 データタイプ:文字列 最大長:160 文字 |
| pipelineName | projectName が渡されない場合は必須です。パイプライン名。 データタイプ:文字列 最大長:160 文字 デフォルト:Null |
| projectName | pipelineName が渡されない場合は必須です。自由形式のプロジェクト名。 データタイプ:文字列 最大長:160 デフォルト:Null |
| stageName | pipelineName が渡されない場合は必須です。ステージ名。 データタイプ:文字列 最大長:160 文字 デフォルト:Null |
| taskExecutionNumber | 必須です。パイプライン実行番号。 データタイプ:文字列 最大長:128 文字 デフォルト:Null |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| 承認 | 応答本文のデータフォーマット。application/json のみをサポートします。 |
| 認証 | v2 以降、この API はトークンベースの認証をサポートしています。トークンは、ツール [sn_devops_tool] テーブルにあるツール レコードの [ トークンをコピー ] ボタンをクリックすることで取得できます。その後、トークンを Authorization: sn_devops の形式で認証ヘッダーで使用できます 。DevOpsToken <tool_sys_id>:<tool_token>。注: トークン付きの認証ヘッダーに加えて基本認証の詳細 (ユーザー名とパスワード) が指定されている場合は、基本認証が優先されます。 インスタンスで devops.system ユーザーが利用できない場合は、[ トークンベースの認証が成功した後にこのユーザーに切り替え る] プロパティを使用します。このプロパティを使用すると、トークン認証を完了するために必要な sn_devops.integration ロールを持つ任意のユーザーを設定できます。詳細については、「DevOps Change Velocity properties」を参照してください。 |
| Content-Type | 要求本文のデータ形式。application/json のみをサポートします。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 200 | 成功です。応答本文ありで成功しました。 |
| 201 | 作成されました。応答本文ありで成功しました。 |
| 400 | 要求が正しくありません。要求 URI がシステム内の API と一致しないか、不明な理由で操作が失敗しました。無効なヘッダーによっても、このエラーが発生する場合があります。 |
| 500 | 内部サーバーエラー。要求の処理中に予期しないエラーが発生しました。応答に、エラーに関する追加情報が含まれます。 |
応答本文のパラメーター
| 名前 | 説明 |
|---|---|
| response | パッケージ登録要求の結果。 データタイプ:オブジェクト |
| response.artifact_register_requests | 処理が完了せず、アーティファクトステージング済み要求 [sn_devops_artifact_staging] テーブルに格納されている登録要求の結果。 データタイプ:オブジェクト |
| response.artifact_register_requests.create | 要求でパッケージステージングレコードが作成された場合は、作成されたステージングレコードの sys_id のリスト。 データタイプ:アレイ |
| response.artifact_register_requests.create.id | 要求によって作成されたパッケージステージングレコードの sys_id。 データタイプ:文字列 |
| response.artifact_register_requests.found | 関連するパッケージステージングレコードが既に存在する場合、既存のレコードの sys_id のリスト。 注:
既存のパッケージは変更されません。 データタイプ:アレイ |
| response.artifact_register_requests.found.id | 既存のパッケージステージングレコードの sys_id。 データタイプ:文字列 |
| response.artifact_register_requests.update | 現在、使用されていません。 |
| response.artifact_register_requests.update.id | 現在、使用されていません。 |
| response.sn_devops_m2m_artifact_version_package | パッケージに関連付けられた各アーティファクトバージョンの結果。 データタイプ:オブジェクト |
| response.sn_devops_m2m_artifact_version_package.create | 要求でアーティファクトバージョンをパッケージにリンクするレコードが作成された場合は、パッケージ化するアーティファクトバージョン [sn_devops_m2m_artifact_version_package] テーブル内の作成されたレコードの sys_id のリスト。 データタイプ:アレイ |
| response.sn_devops_m2m_artifact_version_package.create.id | 要求によって作成されたパッケージ化するアーティファクトバージョンレコードの sys_id。 データタイプ:文字列 |
| response.sn_devops_m2m_artifact_version_package.found | パッケージ化するアーティファクトバージョンテーブルにリンクレコードが既に存在する場合は、既存のリンクレコードの sys_id リスト。 注:
既存のレコードは変更されません。 データタイプ:アレイ |
| response.sn_devops_m2m_artifact_version_package.found.id | パッケージ化する既存のアーティファクトバージョンレコードの sys_id。 データタイプ:文字列 |
| response.sn_devops_m2m_artifact_version_package.update | 現在、使用されていません。 |
| response.sn_devops_m2m_artifact_version_package.update.id | 現在、使用されていません。 |
| response.sn_devops_package | 要求の処理中に操作されたパッケージ [sn_devops_package] テーブル内のパッケージレコードの結果。 データタイプ:オブジェクト |
| response.sn_devops_package.create | 要求によってパッケージレコードが作成された場合は、作成されたレコードの sys_id のリスト。 データタイプ:アレイ |
| response.sn_devops_package.create.id | 要求によって作成されたパッケージレコードの sys_id。 データタイプ:文字列 |
| response.sn_devops_package.found | 登録要求で使用されるパッケージレコードが既に存在する場合、既存のレコードの sys_id のリスト。 注:
既存のレコードは変更されません。 データタイプ:アレイ |
| response.sn_devops_package.found.id | 要求によって参照される既存のパッケージレコードの sys_id。 データタイプ:文字列 |
| response.sn_devops_package.update | 現在、使用されていません。 |
| response.sn_devops_package.update.id | 現在、使用されていません。 |
| status | 登録要求のステータス。 可能な値:
データタイプ:文字列 |
サンプル cURL 要求
# Example passing the artifact version
curl -X POST "https://instance.servicenow.com/api/sn_devops/devops/package/registration?toolId=f0ca45679323008b52f3b457415ae6"\
-H "accept: application/json"\
-H "Content-Type: application/json"\
-u "username":"password"\
-d "{\
"name": "sentimentpackage",\
"artifacts": [\
{\
"name": "sa-web.jar",\
"repositoryName": "services-1031",\
"version": "3.1"\
},\
{\
"name": "sa-frontend.jar",\
"repositoryName": "services-1031",\
"version": "9.2"\
}\
],\
"pipelineName": "spring-boot-app",\
"taskExecutionNumber": "160",\
"stageName": "Build",\
"branchName": "primary"\
}"
応答:パッケージが作成されました:
"result": {
"status": "Success",
"response": {
"sn_devops_package": {
"create": [
{
"id": "0d57367a532e00107109ddeeff7b122a"
}
],
"update": [],
"found": []
},
"sn_devops_m2m_artifact_version_package": {
"create": [
{
"id": "c957367a532e00107109ddeeff7b122b"
},
{
"id": "8157367a532e00107109ddeeff7b122c"
}
],
"update": [],
"found": []
}
},
"responseCode": 201
}
}
サンプル cURL 要求
# Example passing the build details
curl -X POST "https://instance.servicenow.com/api/sn_devops/devops/package/registration?toolId=f0ca45679323008b52f3b457415ae6"
-H "accept: application/json"\
-H "Content-Type: application/json"\
-u "username":"password"\
-d "{\
"name": "sentimentpackage",\
"artifacts": [\
{\
"name": "sa-web.jar",\
"repositoryName": "services-1031",\
"pipelineName": "spring-boot-app",\
"taskExecutionNumber": "160",\
"stageName": "Build",\
"branchName": "primary"\
},\
{\
"name": "sa-frontend.jar",\
"repositoryName": "services-1031",\
"pipelineName": "spring-boot-fe",\
"taskExecutionNumber": "991",\
"stageName": "Build",\
"branchName": "primary"\
}\
],\
"pipelineName": "spring-boot-app",\
"taskExecutionNumber": "160",\
"stageName": "Build",\
"branchName": "primary"\
}"
応答:要求がステージング済みパッケージを作成しました:
{
"result": {
"status": "Success",
"response": {
"artifact_register_requests": {
"create": [
{
"id": "4628f276532e00107109ddeeff7b1245"
},
{
"id": "4e28f276532e00107109ddeeff7b1245"
},
{
"id": "ce28f276532e00107109ddeeff7b1245"
}
],
"update": [],
"found": []
}
},
"responseCode": 201
}
}
DevOps - POST /devops/tool/{capability}
カスタム DevOps サブフローで処理するために、渡されたペイロードを受信イベント [sn_devops_inbound] テーブルにポストします。
渡された capability パラメーターで指定された、ツールの関連 Webhook からこのエンドポイントを呼び出します。渡されたペイロードを処理するカスタムサブフローは、ServiceNow インスタンスで既に定義されている必要があります。事前定義されたスケジュールに基づいて、DevOps マスターフローは受信イベントテーブルから Webhook イベント情報を取得し、それをカスタムサブフローに渡し、それによりペイロードが処理されます。カスタムサブフローの作成の詳細については、「 DevOps サブフローの作成」を参照してください。
テストツール統合の詳細については、「 DevOps テストツール統合」を参照してください。
カスタム DevOps ツールのこのエンドポイントを呼び出す前に、sn_devops.DevOpsOrchestrationToolIntegrationHandler から handleTool() および getNativeIdForOrchestrationTask() メソッドを実装する必要があります。詳細については、「DevOpsOrchestrationToolIntegrationHandler - スコープ付きDevOpsOrchestrationToolIntegrationHandler - スコープ付き」を参照してください。
URL 形式
バージョニングされた URL:/api/sn_devops/{api_version}/devops/tool/{capability}
デフォルトの URL:/api/sn_devops/devops/tool/{capability}
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| capability | 受信イベントテーブルに格納するペイロードを渡すツールのタイプ。 有効な値 (値の大文字と小文字を区別しない):
データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| orchestrationToolId | オプション。関連するパイプラインが属するオーケストレーションツールのsys_id。capability要求パラメーターがテストまたはソフトウェア品質に設定されている場合は、orchestrationToolIdが必要です。toolId orchestrationToolId が存在しない場合は、デフォルトのオーケストレーションツールになります。 |
| testType | capability が test に設定されている場合は必須です。実行されているテストのタイプ。 このパラメーターの有効な値は、テストタイプ [sn_devops_test_type] テーブルの Test type 列の値です。 |
| toolId | 必須です。エンドポイントが呼び出されているツールの sys_id。 |
| 名前 | 説明 |
|---|---|
| ツール依存 | ツールによってペイロードのコンテンツが決定されます。 |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| 承認 | 応答本文のデータフォーマット。application/json のみをサポートします。 |
| 認証 | v2 以降、この API はトークンベースの認証をサポートしています。トークンは、ツール [sn_devops_tool] テーブルにあるツール レコードの [ トークンをコピー ] ボタンをクリックすることで取得できます。その後、トークンを Authorization: sn_devops の形式で認証ヘッダーで使用できます 。DevOpsToken <tool_sys_id>:<tool_token>。注: トークン付きの認証ヘッダーに加えて基本認証の詳細 (ユーザー名とパスワード) が指定されている場合は、基本認証が優先されます。 インスタンスで devops.system ユーザーが利用できない場合は、[ トークンベースの認証が成功した後にこのユーザーに切り替え る] プロパティを使用します。このプロパティを使用すると、トークン認証を完了するために必要な sn_devops.integration ロールを持つ任意のユーザーを設定できます。詳細については、「DevOps Change Velocity properties」を参照してください。 |
| Content-Type | 要求本文のデータ形式。application/json のみをサポートします。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 201 | 要求が正常に完了しました。 |
| 400 | 要求が正しくありません。不適切な要求タイプまたは誤った要求が検出されました。 |
| 401 | 認証が無効か見つかりません。 |
| 500 | 内部サーバーエラー。サーバー側のコードで論理エラーが発生しました。 |
応答本文のパラメーター
| 名前 | 説明 |
|---|---|
| details | すべてのエラー条件のエントリ。 データタイプ:オブジェクト |
| details.errors | 単一のエラーの説明。 データタイプ:アレイ |
| details.errors.message | 詳細なエラーメッセージ。
データタイプ:文字列 |
| status | 「成功」や「データエラー」などの応答ステータス。 データタイプ:文字列 |
| sys_id | 受信イベントテーブルに作成されたレコードの sys_id。 データタイプ:文字列 |
アーティファクトのサンプル cURL 要求
curl -X POST "https://instance.service-now.com/api/sn_devops/v1/tool/artifact?toolId=3b59043ee4ea556e6850d61bc1a77e8a"
-H "accept: application/json"\
-H "Content-Type: application/json"\
-u "username":"password"\
-d "{
"artifacts": [
{
"name": "sp-boot-app",
"version": "1.320",
"semanticVersion": "1.320.0",
"repositoryName": "sp-boot-app-repo"
}
],
"pipelineName": "spring-boot-app-gitea",
"taskExecutionNumber": "320",
"stageName": "Build"
}"
成功応答:
{
"result": {
"status": "Success",
"sysId": "33c57245dbf68410bc8cdd384b961966"
}
}
アーティファクトのサンプル cURL 要求
curl -X POST "https://instance.service-now.com/api/sn_devops/v1/tool/artifact?toolId=3b59043ee4ea556e6850d61bc1a77e8a"
-H "accept: application/json"\
-H "Content-Type: application/json"\
-u "username":"password"\
-d "{\
"timestamp": "2020-01-11T00:52:01.541+0000",\
"nodeId": "137BEECF-E1BF7BC1-90212D1C-0749A6D4-BC670F6B",\
"initiator": "admin/172.17.0.1",\
"repositoryName": "maven-releases29",\
"action": "CREATED",\
"component": {\
"id": "2a59043ed2ea556e6850d61bc1a77c7b",\
"componentId": "c3AtYm9vdC1hcHAtcmVwbzoyYTU5MDQzZWQyZWE1NTZlNjg1MGQ2MWJjMWE3N2M3Yg",\
"format": "maven2",\
"name": "sentiment-analysis-web",\
"group": "com.spboot",\
"version": "1.1"\
}\
}"
エラー応答:
{
"result": {
"status": "Data Error",
"details": {
"errors": [
{
"message": "Unsupported capability type"
}
]
}
}
}
コードのサンプル cURL 要求
curl "https://instance.service-now.com/api/sn_devops/devops/tool/code?toolId=8d4f56598702c510f894419d0ebb35aa&testType=junit" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data "{
"commits": [
{
"totalFiles": 1,
"nativeIdList": [
"49",
"50"
],
"id": "f14732d0cc854ce3ec374b97ecd4ec3c383386cd",
"url": "https://dev.azure.com/xyzabcd/adoTests/_git/DeployableRepo/commit/f14732d0cc854ce3ec374b97ecd4ec3c383386cd",
"apiURL": "https://dev.azure.com/xyzabcd/9fe32a65-60a5-46fe-bc8d-11a92bf059f9/_apis/git/repositories/8d7ba019-1739-431c-beb4-6025dd41f1ac/commits/f14732d0cc854ce3ec374b97ecd4ec3c383386cd",
"message": "Fixes #49 and #50",
"committedDate": "2022-03-23T11:59:46Z",
"committer": {
"email": "xyz.abcd@email.com"
},
"details": [
{
"action": "edit",
"changes": "",
"file": "/LICENSE",
"additions": 0,
"deletions": 0,
"totalChanges": 0
}
]
}
],
"repository": {
"id": "8d7ba019-1739-431c-beb4-6025dd41f1ac",
"name": "DeployableRepo",
"url": "https://dev.azure.com/xyzabcd/adoTests/_git/DeployableRepo"
},
"branch": {
"name": "refs/heads/master",
"url": "https://dev.azure.com/xyzabcd/adoTests/_git/DeployableRepo?version=GBmaster"
}
}" \
--user 'username':'passsword'
成功応答:
{
"result": {
"status": "Success",
"sysId: "1f8e586b879e85100f71cbfc0ebb3526"
}
}
オーケストレーションのサンプル cURL 要求
curl "https://instance.service-now.com/api/sn_devops/devops/tool/orchestration?toolId=8d4f56598702c510f894419d0ebb35aa&testType=junit" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data "{
"toolId": "d450f5c887e609100f71cbfc0ebb35e5",
"buildNumber": 5676,
"nativeId": "adoTests/DeployableRepo#deploy#5676",
"pipelineId": "2",
"name": "adoTests/DeployableRepo#deploy",
"id": "adoTests/DeployableRepo#deploy#5676",
"url": "https://dev.azure.com/xyzabcd/_build/results?buildId=5676#deploy/",
"previousAttemptUrl": "",
"attemptNumber": 1,
"pipelineExecutionUrl": "https://dev.azure.com/xyzabcd/_build/results?buildId=5676",
"orchestrationTaskUrl": "https://dev.azure.com/xyzabcd/adoTests/_build?name=DeployableRepo#deploy",
"orchestrationTaskName": "adoTests/DeployableRepo #deploy",
"orchestrationTask": {
"orchestrationTaskName": "adoTests/DeployableRepo#deploy",
"toolId": "d450f5c887e609100f71cbfc0ebb35e5",
"orchestrationTaskURL": "https://dev.azure.com/xyzabcd/adoTests/_build?name=DeployableRepo#deploy",
"stageName": "deploy"
},
"upstreamTaskUrl": [],
"result": "building",
"startDateTime": "2022-03-23 12:01:31",
"log": "https://dev.azure.com/xyzabcd/adoTests/_build/results?buildId=5676&view=logs&j=5264e576-3c6f-51f6-f055-fab409685f20",
"logUrl": "https://dev.azure.com/xyzabcd/adoTests/_build/results?buildId=5676&view=logs&j=5264e576-3c6f-51f6-f055-fab409685f20"
}" \
--user 'username':'password'
成功応答:
{
"result": {
"status": "Success",
"sysId: "37dfd8a7879e85100f71cbfc0ebb35c0"
}
}
計画のサンプル cURL 要求
curl "https://instance.service-now.com/api/sn_devops/devops/tool/plan?toolId=8d4f56598702c510f894419d0ebb35aa&testType=junit" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data "{
"id": "1053",
"type": "bug",
"state": "planned",
"shortDescription": "Title - Work Item test in 1.33.3",
"createdDateTime": "2022-03-23T10:45:53.02Z",
"parentId": "",
"url": "https://dev.azure.com/xyzabcd/9fe32a65-60a5-46fe-bc8d-11a92bf059f9/_workitems/edit/1053",
"version": {
"id": "adoTests",
"shortDescription": "adoTests",
"createdDateTime": "2022-03-23T10:46:12.355Z",
"url": "https://dev.azure.com/xyzabcd/adoTests",
"app": {
"id": "adoTests",
"shortDescription": "adoTests",
"createdDateTime": "2022-03-23T10:46:12.355Z",
"url": "https://dev.azure.com/xyzabcd/9fe32a65-60a5-46fe-bc8d-11a92bf059f9/_workitems/edit/1053"
}
},
"app": {
"id": "adoTests",
"shortDescription": "adoTests",
"createdDateTime": "2022-03-23T10:46:12.355Z",
"url": "https://dev.azure.com/xyzabcd/adoTests"
},
"native_type": "Issue",
"native_state": "To Do",
"assignedTo": {
"name": "Xyz Abcd",
"userName": "xyz.abcd@email.com",
"id": "84c92fcd-e08b-6a5f-a8a6-ccda27055560",
"email": "xyz.abcd@email.com"
},
"createdBy": {
"name": "Xyz Abcd",
"userName": "xyz.abcd@email.com",
"id": "84c92fcd-e08b-6a5f-a8a6-ccda27055560",
"email": "xyz.abcd@email.com"
}
}" \
--user 'username':'password'
成功応答:
{
"result": {
"status": "Success",
"sysId: "533020eb879e85100f71cbfc0ebb3591"
}
}
テストのサンプル cURL 要求
curl "https://instance.service-now.com/api/sn_devops/devops/tool/test?toolId=8d4f56598702c510f894419d0ebb35aa&testType=junit" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data "{
"attemptNumber": 1,
"blockedTests": 0,
"buildNumber": 675,
"duration": 0.079,
"failedTests": 0,
"finishTime": "2022-03-23T12:02:25.957Z",
"name": "adoTests/DeployableRepo/Test #675-2982",
"passedTests": 20,
"pipelineName": "adoTests/DeployableRepo",
"skippedTests": 0,
"stageName": "Test",
"startTime": "2022-03-23T12:02:24.36Z",
"taskExecutionUrl": "https://dev.azure.com/xyzabcd/adoTests/_build/results?buildId=675#Test/{Job name}",
"totalTests": 20,
"url": "https://dev.azure.com/xyzabcd/adoTests/_TestManagement/Runs?runId=2982&_a=runCharts"
}" \
--user 'username':'password'
成功応答:
{
"result": {
"status": "Success",
"sysId: "fd3fdc6b879e85100f71cbfc0ebb356a"
}
}
DevOps - POST /devops/tool/event/{sn_tool_id}
構築済みサブフローで処理するために、GitHub、Jira、または Bitbucket から渡されたペイロードをイベント [sn_devops_event] テーブルにポストします。
GitHub、Jira、Bitbucket 以外のツールからのイベントを処理するには、代わりに DevOps - POST /devops/tool/{capability} エンドポイントを使用します。
URL 形式
バージョニングされた URL:/api/sn_devops/{api_version}/devops/tool/event/{sn_tool_id}
デフォルトの URL:/api/sn_devops/devops/tool/event/{sn_tool_id}
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| sn_tool_id | 要求に使用するツールの sys_id。DevOps ツール [sn_devops_tool] テーブルにあります。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| なし |
| 名前 | 説明 |
|---|---|
| ツール依存 | ツールによってペイロードのコンテンツが決定されます。ペイロードは、ツールの Webhook 情報の下にあります。 |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| 承認 | 応答本文のデータフォーマット。application/json のみをサポートします。 |
| 認証 | v2 以降、この API はトークンベースの認証をサポートしています。トークンは、ツール [sn_devops_tool] テーブルにあるツール レコードの [ トークンをコピー ] ボタンをクリックすることで取得できます。その後、トークンを Authorization: sn_devops の形式で認証ヘッダーで使用できます 。DevOpsToken <tool_sys_id>:<tool_token>。注: トークン付きの認証ヘッダーに加えて基本認証の詳細 (ユーザー名とパスワード) が指定されている場合は、基本認証が優先されます。 インスタンスで devops.system ユーザーが利用できない場合は、[ トークンベースの認証が成功した後にこのユーザーに切り替え る] プロパティを使用します。このプロパティを使用すると、トークン認証を完了するために必要な sn_devops.integration ロールを持つ任意のユーザーを設定できます。詳細については、「DevOps Change Velocity properties」を参照してください。 |
| Content-Type | 要求本文のデータ形式。application/json のみをサポートします。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 200 | 成功。要求が正常に処理されました。 |
| 201 | 要求が正常に完了しました。 |
| 400 | 要求が正しくありません。不適切な要求タイプまたは誤った要求が検出されました。 |
| 401 | 認証が無効か見つかりません。 |
| 500 | 内部サーバーエラー。サーバー側のコードで論理エラーが発生しました。 |
応答本文のパラメーター
| 名前 | 説明 |
|---|---|
| result | 応答ステータス。 可能な値:
データタイプ:文字列 |
cURL 要求
GitHub
curl "https://instance.service-now.com/api/sn_devops/devops/tool/event/46a07b2f471e011028c23a34846d43b2" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data "{
"ref": "refs/heads/master",
"before": "59078a17cad1f4129754971c808d6c399b6141a5",
"after": "b7957bab20835449c4d597fee24075a9a5a2c099",
"repository": {
"id": 252146476,
"node_id": "MDEwOlJlcG9zaXRvcnkyNTIxNDY0NzY=",
"name": "test",
"full_name": "Xyz002/test",
"private": false,
"owner": {
"name": "Xyz002",
"email": "62993516+Xyz002@users.noreply.github.com",
"login": "Xyz002",
"id": 62993516,
"node_id": "MDQ6VXNlcjYyOTkzNTE2",
"avatar_url": "https://avatars.githubusercontent.com/u/62993516?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Xyz002",
"html_url": "https://github.com/Xyz002",
"followers_url": "https://api.github.com/users/Xyz002/followers",
"following_url": "https://api.github.com/users/Xyz002/following{/other_user}",
"gists_url": "https://api.github.com/users/Xyz002/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Xyz002/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Xyz002/subscriptions",
"organizations_url": "https://api.github.com/users/Xyz002/orgs",
"repos_url": "https://api.github.com/users/Xyz002/repos",
"events_url": "https://api.github.com/users/Xyz002/events{/privacy}",
"received_events_url": "https://api.github.com/users/Xyz002/received_events",
"type": "User",
"site_admin": false
},
"html_url": "https://github.com/Xyz002/test",
"description": null,
"fork": false,
"url": "https://github.com/Xyz002/test",
"forks_url": "https://api.github.com/repos/Xyz002/test/forks",
"keys_url": "https://api.github.com/repos/Xyz002/test/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/Xyz002/test/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/Xyz002/test/teams",
"hooks_url": "https://api.github.com/repos/Xyz002/test/hooks",
"issue_events_url": "https://api.github.com/repos/Xyz002/test/issues/events{/number}",
"events_url": "https://api.github.com/repos/Xyz002/test/events",
"assignees_url": "https://api.github.com/repos/Xyz002/test/assignees{/user}",
"branches_url": "https://api.github.com/repos/Xyz002/test/branches{/branch}",
"tags_url": "https://api.github.com/repos/Xyz002/test/tags",
"blobs_url": "https://api.github.com/repos/Xyz002/test/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/Xyz002/test/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/Xyz002/test/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/Xyz002/test/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/Xyz002/test/statuses/{sha}",
"languages_url": "https://api.github.com/repos/Xyz002/test/languages",
"stargazers_url": "https://api.github.com/repos/Xyz002/test/stargazers",
"contributors_url": "https://api.github.com/repos/Xyz002/test/contributors",
"subscribers_url": "https://api.github.com/repos/Xyz002/test/subscribers",
"subscription_url": "https://api.github.com/repos/Xyz002/test/subscription",
"commits_url": "https://api.github.com/repos/Xyz002/test/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/Xyz002/test/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/Xyz002/test/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/Xyz002/test/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/Xyz002/test/contents/{+path}",
"compare_url": "https://api.github.com/repos/Xyz002/test/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/Xyz002/test/merges",
"archive_url": "https://api.github.com/repos/Xyz002/test/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/Xyz002/test/downloads",
"issues_url": "https://api.github.com/repos/Xyz002/test/issues{/number}",
"pulls_url": "https://api.github.com/repos/Xyz002/test/pulls{/number}",
"milestones_url": "https://api.github.com/repos/Xyz002/test/milestones{/number}",
"notifications_url": "https://api.github.com/repos/Xyz002/test/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/Xyz002/test/labels{/name}",
"releases_url": "https://api.github.com/repos/Xyz002/test/releases{/id}",
"deployments_url": "https://api.github.com/repos/Xyz002/test/deployments",
"created_at": 1585737871,
"updated_at": "2022-01-04T14:37:36Z",
"pushed_at": 1648103939,
"git_url": "git://github.com/Xyz002/test.git",
"ssh_url": "git@github.com:Xyz002/test.git",
"clone_url": "https://github.com/Xyz002/test.git",
"svn_url": "https://github.com/Xyz002/test",
"homepage": null,
"size": 1378,
"stargazers_count": 0,
"watchers_count": 0,
"language": "Java",
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": true,
"has_pages": false,
"forks_count": 0,
"mirror_url": null,
"archived": false,
"disabled": false,
"open_issues_count": 2,
"license": null,
"allow_forking": true,
"is_template": false,
"topics": [],
"visibility": "public",
"forks": 0,
"open_issues": 2,
"watchers": 0,
"default_branch": "master",
"stargazers": 0,
"master_branch": "master"
},
"pusher": {
"name": "Xyz002",
"email": "62993516+Xyz002@users.noreply.github.com"
},
"sender": {
"login": "Xyz002",
"id": 62993516,
"node_id": "MDQ6VXNlcjYyOTkzNTE2",
"avatar_url": "https://avatars.githubusercontent.com/u/62993516?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Xyz002",
"html_url": "https://github.com/Xyz002",
"followers_url": "https://api.github.com/users/Xyz002/followers",
"following_url": "https://api.github.com/users/Xyz002/following{/other_user}",
"gists_url": "https://api.github.com/users/Xyz002/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Xyz002/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Xyz002/subscriptions",
"organizations_url": "https://api.github.com/users/Xyz002/orgs",
"repos_url": "https://api.github.com/users/Xyz002/repos",
"events_url": "https://api.github.com/users/Xyz002/events{/privacy}",
"received_events_url": "https://api.github.com/users/Xyz002/received_events",
"type": "User",
"site_admin": false
},
"created": false,
"deleted": false,
"forced": false,
"base_ref": null,
"compare": "https://github.com/Xyz002/test/compare/59078a17cad1...b7957bab2083",
"commits": [
{
"id": "b7957bab20835449c4d597fee24075a9a5a2c099",
"tree_id": "fa8d699762ec0a25868fa1ab4d299da392f0a974",
"distinct": true,
"message": "updated this file",
"timestamp": "2022-03-24T12:08:59+05:30",
"url": "https://github.com/Xyz002/test/commit/b7957bab20835449c4d597fee24075a9a5a2c099",
"author": {
"name": "Xyz002",
"email": "62993516+Xyz002@users.noreply.github.com",
"username": "Xyz002"
},
"committer": {
"name": "GitHub",
"email": "noreply@github.com",
"username": "web-flow"
},
"added": [],
"removed": [],
"modified": [
"README.me"
]
}
],
"head_commit": {
"id": "b7957bab20835449c4d597fee24075a9a5a2c099",
"tree_id": "fa8d699762ec0a25868fa1ab4d299da392f0a974",
"distinct": true,
"message": "updated this file",
"timestamp": "2022-03-24T12:08:59+05:30",
"url": "https://github.com/Xyz002/test/commit/b7957bab20835449c4d597fee24075a9a5a2c099",
"author": {
"name": "Xyz002",
"email": "62993516+Xyz002@users.noreply.github.com",
"username": "Xyz002"
},
"committer": {
"name": "GitHub",
"email": "noreply@github.com",
"username": "web-flow"
},
"added": [],
"removed": [],
"modified": [
"README.me"
]
},
"sn_tool_id": "46a07b2f471e011028c23a34846d43b2"
}" \
--user 'username':'password'
成功応答:
{
"result": "success"
}
cURL 要求
Jira
curl "https://instance.service-now.com/api/sn_devops/devops/tool/event/9ed237af471e011028c23a34846d4327" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data "{
"timestamp": 1648104684180,
"webhookEvent": "jira:issue_created",
"issue_event_type_name": "issue_created",
"user": {
"self": "http://jira1.sndevops.xyz/rest/api/2/user?username=admin",
"name": "admin",
"key": "admin",
"emailAddress": "username@email.com",
"avatarUrls": {
"48x48": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=48",
"24x24": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=24",
"16x16": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=16",
"32x32": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=32"
},
"displayName": "Administrator",
"active": true,
"timeZone": "America/Los_Angeles"
},
"issue": {
"id": "84800",
"self": "http://jira1.sndevops.xyz/rest/api/2/issue/84800",
"key": "BAL-2",
"fields": {
"issuetype": {
"self": "http://jira1.sndevops.xyz/rest/api/2/issuetype/10002",
"id": "10002",
"description": "A task that needs to be done.",
"iconUrl": "http://jira1.sndevops.xyz/secure/viewavatar?size=xsmall&avatarId=10318&avatarType=issuetype",
"name": "Task",
"subtask": false,
"avatarId": 10318
},
"timespent": null,
"project": {
"self": "http://jira1.sndevops.xyz/rest/api/2/project/10507",
"id": "10507",
"key": "BAL",
"name": "balu_devops",
"projectTypeKey": "software",
"avatarUrls": {
"48x48": "http://jira1.sndevops.xyz/secure/projectavatar?avatarId=10324",
"24x24": "http://jira1.sndevops.xyz/secure/projectavatar?size=small&avatarId=10324",
"16x16": "http://jira1.sndevops.xyz/secure/projectavatar?size=xsmall&avatarId=10324",
"32x32": "http://jira1.sndevops.xyz/secure/projectavatar?size=medium&avatarId=10324"
}
},
"fixVersions": [],
"aggregatetimespent": null,
"resolution": null,
"customfield_10302": null,
"customfield_10105": null,
"resolutiondate": null,
"workratio": 0,
"lastViewed": null,
"watches": {
"self": "http://jira1.sndevops.xyz/rest/api/2/issue/BAL-2/watchers",
"watchCount": 0,
"isWatching": false
},
"created": "2022-03-24T06:51:22.896+0000",
"priority": {
"self": "http://jira1.sndevops.xyz/rest/api/2/priority/3",
"iconUrl": "http://jira1.sndevops.xyz/images/icons/priorities/medium.svg",
"name": "Medium",
"id": "3"
},
"customfield_10100": "0|i0cprw:",
"customfield_10101": "SCRUMBOARD-14",
"customfield_10300": null,
"labels": [],
"timeestimate": 240,
"aggregatetimeoriginalestimate": 300,
"versions": [],
"issuelinks": [
{
"id": "10701",
"self": "http://jira1.sndevops.xyz/rest/api/2/issueLink/10701",
"type": {
"id": "10000",
"name": "Blocks",
"inward": "is blocked by",
"outward": "blocks",
"self": "http://jira1.sndevops.xyz/rest/api/2/issueLinkType/10000"
},
"outwardIssue": {
"id": "84741",
"key": "BAL-1",
"self": "http://jira1.sndevops.xyz/rest/api/2/issue/84741",
"fields": {
"summary": "log4jtesting",
"status": {
"self": "http://jira1.sndevops.xyz/rest/api/2/status/3",
"description": "This issue is being actively worked on at the moment by the assignee.",
"iconUrl": "http://jira1.sndevops.xyz/images/icons/statuses/inprogress.png",
"name": "In Progress",
"id": "3",
"statusCategory": {
"self": "http://jira1.sndevops.xyz/rest/api/2/statuscategory/4",
"id": 4,
"key": "indeterminate",
"colorName": "yellow",
"name": "In Progress"
}
},
"priority": {
"self": "http://jira1.sndevops.xyz/rest/api/2/priority/3",
"iconUrl": "http://jira1.sndevops.xyz/images/icons/priorities/medium.svg",
"name": "Medium",
"id": "3"
},
"issuetype": {
"self": "http://jira1.sndevops.xyz/rest/api/2/issuetype/10004",
"id": "10004",
"description": "A problem which impairs or prevents the functions of the product.",
"iconUrl": "http://jira1.sndevops.xyz/secure/viewavatar?size=xsmall&avatarId=10303&avatarType=issuetype",
"name": "Bug",
"subtask": false,
"avatarId": 10303
}
}
}
}
],
"assignee": {
"self": "http://jira1.sndevops.xyz/rest/api/2/user?username=admin",
"name": "admin",
"key": "admin",
"emailAddress": "username@email.com",
"avatarUrls": {
"48x48": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=48",
"24x24": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=24",
"16x16": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=16",
"32x32": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=32"
},
"displayName": "Administrator",
"active": true,
"timeZone": "America/Los_Angeles"
},
"updated": "2022-03-24T06:51:22.896+0000",
"status": {
"self": "http://jira1.sndevops.xyz/rest/api/2/status/10000",
"description": "",
"iconUrl": "http://jira1.sndevops.xyz/",
"name": "To Do",
"id": "10000",
"statusCategory": {
"self": "http://jira1.sndevops.xyz/rest/api/2/statuscategory/2",
"id": 2,
"key": "new",
"colorName": "blue-gray",
"name": "To Do"
}
},
"components": [],
"timeoriginalestimate": 300,
"description": "Task description",
"timetracking": {
"originalEstimate": "5m",
"remainingEstimate": "4m",
"originalEstimateSeconds": 300,
"remainingEstimateSeconds": 240
},
"customfield_10203": null,
"customfield_10204": null,
"customfield_10205": null,
"attachment": [],
"aggregatetimeestimate": 240,
"summary": "Task Summary",
"creator": {
"self": "http://jira1.sndevops.xyz/rest/api/2/user?username=admin",
"name": "admin",
"key": "admin",
"emailAddress": "username@email.com",
"avatarUrls": {
"48x48": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=48",
"24x24": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=24",
"16x16": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=16",
"32x32": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=32"
},
"displayName": "Administrator",
"active": true,
"timeZone": "America/Los_Angeles"
},
"subtasks": [],
"reporter": {
"self": "http://jira1.sndevops.xyz/rest/api/2/user?username=admin",
"name": "admin",
"key": "admin",
"emailAddress": "username@email.com",
"avatarUrls": {
"48x48": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=48",
"24x24": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=24",
"16x16": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=16",
"32x32": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=32"
},
"displayName": "Administrator",
"active": true,
"timeZone": "America/Los_Angeles"
},
"customfield_10000": "{summaryBean=com.atlassian.jira.plugin.devstatus.rest.SummaryBean@2ccf8c6[summary={pullrequest=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@fbc42d4[overall=PullRequestOverallBean{stateCount=0, state='OPEN', details=PullRequestOverallDetails{openCount=0, mergedCount=0, declinedCount=0}},byInstanceType={}], build=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@71e33347[overall=com.atlassian.jira.plugin.devstatus.summary.beans.BuildOverallBean@1c24654d[failedBuildCount=0,successfulBuildCount=0,unknownBuildCount=0,count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], review=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@1ea8fb17[overall=com.atlassian.jira.plugin.devstatus.summary.beans.ReviewsOverallBean@6dc95939[stateCount=0,state=<null>,dueDate=<null>,overDue=false,count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], deployment-environment=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@55826cc[overall=com.atlassian.jira.plugin.devstatus.summary.beans.DeploymentOverallBean@3ae93527[topEnvironments=[],showProjects=false,successfulCount=0,count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], repository=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@6340012e[overall=com.atlassian.jira.plugin.devstatus.summary.beans.CommitOverallBean@44678cee[count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], branch=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@4dbce8[overall=com.atlassian.jira.plugin.devstatus.summary.beans.BranchOverallBean@737ee1cb[count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}]},errors=[],configErrors=[]], devSummaryJson={\"cachedValue\":{\"errors\":[],\"configErrors\":[],\"summary\":{\"pullrequest\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"stateCount\":0,\"state\":\"OPEN\",\"details\":{\"openCount\":0,\"mergedCount\":0,\"declinedCount\":0,\"total\":0},\"open\":true},\"byInstanceType\":{}},\"build\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"failedBuildCount\":0,\"successfulBuildCount\":0,\"unknownBuildCount\":0},\"byInstanceType\":{}},\"review\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"stateCount\":0,\"state\":null,\"dueDate\":null,\"overDue\":false,\"completed\":false},\"byInstanceType\":{}},\"deployment-environment\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"topEnvironments\":[],\"showProjects\":false,\"successfulCount\":0},\"byInstanceType\":{}},\"repository\":{\"overall\":{\"count\":0,\"lastUpdated\":null},\"byInstanceType\":{}},\"branch\":{\"overall\":{\"count\":0,\"lastUpdated\":null},\"byInstanceType\":{}}}},\"isStale\":false}}",
"aggregateprogress": {
"progress": 0,
"total": 240,
"percent": 0
},
"customfield_10200": null,
"customfield_10201": null,
"customfield_10202": null,
"environment": null,
"duedate": "2022-03-24",
"progress": {
"progress": 0,
"total": 240,
"percent": 0
},
"comment": {
"comments": [],
"maxResults": 0,
"total": 0,
"startAt": 0
},
"votes": {
"self": "http://jira1.sndevops.xyz/rest/api/2/issue/BAL-2/votes",
"votes": 0,
"hasVoted": false
},
"worklog": {
"startAt": 0,
"maxResults": 20,
"total": 0,
"worklogs": []
}
}
},
"changelog": {
"id": "14401",
"items": [
{
"field": "Link",
"fieldtype": "jira",
"from": null,
"fromString": null,
"to": "BAL-1",
"toString": "This issue blocks BAL-1"
}
]
},
"sn_tool_id": "9ed237af471e011028c23a34846d4327"
}" \
--user 'username':'password'
成功応答:
{
"result": "success"
}
cURL 要求
Bitbucket
curl "https://instance.service-now.com/api/sn_devops/devops/tool/event/6975ecaf879e85100f71cbfc0ebb3575" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data "{
"eventKey": "repo:refs_changed",
"date": "2022-03-23T15:57:05+0000",
"actor": {
"name": "admin",
"emailAddress": "username@email.com",
"id": 1,
"displayName": "Admin",
"active": true,
"slug": "admin",
"type": "NORMAL",
"links": {
"self": [
{
"href": "http://bitbucket2.sndevops.xyz/users/admin"
}
]
}
},
"repository": {
"slug": "testautomationrepo1",
"id": 12,
"name": "TestAutomationRepo1",
"scmId": "git",
"state": "AVAILABLE",
"statusMessage": "Available",
"forkable": true,
"origin": {
"slug": "testautomationrepo1",
"id": 1,
"name": "TestAutomationRepo1",
"scmId": "git",
"state": "AVAILABLE",
"statusMessage": "Available",
"forkable": true,
"project": {
"key": "TES",
"id": 1,
"name": "TestAutomation",
"public": false,
"type": "NORMAL",
"links": {
"self": [
{
"href": "http://bitbucket2.sndevops.xyz/projects/TES"
}
]
}
},
"public": false,
"links": {
"clone": [
{
"href": "ssh://git@bitbucket2.sndevops.xyz:7999/tes/testautomationrepo1.git",
"name": "ssh"
},
{
"href": "http://bitbucket2.sndevops.xyz/scm/tes/testautomationrepo1.git",
"name": "http"
}
],
"self": [
{
"href": "http://bitbucket2.sndevops.xyz/projects/TES/repos/testautomationrepo1/browse"
}
]
}
},
"project": {
"key": "~ADMIN",
"id": 3,
"name": "Admin",
"type": "PERSONAL",
"owner": {
"name": "admin",
"emailAddress": "username@email.com",
"id": 1,
"displayName": "Admin",
"active": true,
"slug": "admin",
"type": "NORMAL",
"links": {
"self": [
{
"href": "http://bitbucket2.sndevops.xyz/users/admin"
}
]
}
},
"links": {
"self": [
{
"href": "http://bitbucket2.sndevops.xyz/users/admin"
}
]
}
},
"public": false,
"links": {
"clone": [
{
"href": "http://bitbucket2.sndevops.xyz/scm/~admin/testautomationrepo1.git",
"name": "http"
},
{
"href": "ssh://git@bitbucket2.sndevops.xyz:7999/~admin/testautomationrepo1.git",
"name": "ssh"
}
],
"self": [
{
"href": "http://bitbucket2.sndevops.xyz/users/admin/repos/testautomationrepo1/browse"
}
]
}
},
"changes": [
{
"ref": {
"id": "refs/heads/master",
"displayId": "master",
"type": "BRANCH"
},
"refId": "refs/heads/master",
"fromHash": "b482b2e232f5fbdee73feed8ca1cfb774de6976e",
"toHash": "d783254fe6f77bc7cc079358158aeef52a457587",
"type": "UPDATE"
}
],
"sn_tool_id": "6975ecaf879e85100f71cbfc0ebb3575"
}" \
--user 'username':'password'
成功応答:
{
"result": "success"
}
DevOps - PUT /devops/orchestration/changeControl/{changeControlId}
指定されたオーケストレーションタスクの変更管理情報を更新します。
URL 形式
バージョニングされた URL:/api/sn_devops/{api_version}/devops/orchestration/changeControl/{changeControlId}
デフォルトの URL:/api/sn_devops/devops/orchestration/changeControl/{changeControlId}
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| changeControlId | 変更管理タスクの sys_id。コールバック [sn_devops_callback] テーブルにあります。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| toolId | 必須です。変更管理タスクに関連付けられた DevOps ツールの sys_id。オーケストレーションツール [sn_devops_orchestration_tool] テーブルにあります。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| callbackURL | 必須です。関連する変更要求承認プロセスが完了したときに ServiceNow インスタンスがコールバックできる URL。このコールバックは、承認結果に基づいてパイプラインの実行を続行するか、または続行しません。 データタイプ:文字列 |
| orchestrationTaskDetails | 必須です。 オーケストレーションタスクの説明。 データタイプ:オブジェクト |
| orchestrationTaskDetails.message | 自由形式のテキストメッセージ。 データタイプ:文字列 |
| orchestrationTaskDetails.triggerType | 必須です。オーケストレーションタスクが開始された方法。 有効な値:
データタイプ:文字列 |
| orchestrationTaskDetails.upstreamTaskExecutionURL | triggerType が upstream に設定されている場合は必須です。アップストリームタスク実行 URL。 例:https://jenkins.mycompany.com:8080/job/Mobile-Platform-test/40/ データタイプ:文字列 |
| orchestrationTaskURL | 必須です。オーケストレーションタスクの URL。 例:https://jenkins.mycompany.com:8080/orchestration_task/Mobile-Platform-deploy/ データタイプ:文字列 |
| toolType | DevOps ツールのタイプ。 有効な値:jenkins データタイプ:文字列 |
| taskExecutionURL | 必須。実行するタスクの URL。 データタイプ:文字列 |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| Accept | 応答本文のデータフォーマット。application/json のみをサポートします。 |
| 認証 | v2 以降、この API はトークンベースの認証をサポートしています。トークンは、ツール [sn_devops_tool] テーブルにあるツール レコードの [ トークンをコピー ] ボタンをクリックすることで取得できます。その後、トークンを Authorization: sn_devops の形式で認証ヘッダーで使用できます 。DevOpsToken <tool_sys_id>:<tool_token>。注: トークン付きの認証ヘッダーに加えて基本認証の詳細 (ユーザー名とパスワード) が指定されている場合は、基本認証が優先されます。 インスタンスで devops.system ユーザーが利用できない場合は、[ トークンベースの認証が成功した後にこのユーザーに切り替え る] プロパティを使用します。このプロパティを使用すると、トークン認証を完了するために必要な sn_devops.integration ロールを持つ任意のユーザーを設定できます。詳細については、「DevOps Change Velocity properties」を参照してください。 |
| Content-Type | 要求本文のデータ形式。application/json のみをサポートします。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 200 | 要求が正常に完了しました。 |
| 400 | 要求が正しくありません。不適切な要求タイプまたは誤った要求が検出されました。 |
| 401 | 認証が無効か見つかりません。 |
| 404 | 見つかりません。指定されたレコードが見つかりませんでした。 |
| 500 | 内部サーバーエラー。要求の処理中に予期しないエラーが発生しました。応答に、エラーに関する追加情報が含まれます。 |
応答本文のパラメーター
| 名前 | 説明 |
|---|---|
| change_control | オーケストレーションタスクが変更管理下にあるかどうかを示すフラグ。 可能な値:
データタイプ:ブーリアン |
| details | すべてのエラー条件のエントリ。 データタイプ:オブジェクト |
| details.errors | 単一のエラーの説明。 データタイプ:アレイ |
| details.errors.message | 詳細なエラーメッセージ。 データタイプ:文字列 |
サンプル cURL 要求
curl -X PUT "https://instance.service-now.com/api/sn_devops/v1/devops/orchestration/changeControl/f0ca45679323008b52f3b457415ae6?toolId=f0ca45679323008b52f3b457415ae6"
-H "accept: application/json"\
-H "Content-Type: application/json"\
-u "username":"password"\
-d "{
\"orchestrationTaskURL\":\"https://jenkins.mycompany.com:8080/job/Mobile-Platform-deploy/\",
\"toolType\":\"jenkins\",
\"callbackURL\":\"https://jenkins.mycompany.com:8080/sn-devops/964aca59-0cae-4d9b-a36d-5929f426cf31\",
\"taskExecutionURL\":\"https://jenkins.mycompany.com:8080/job/Mobile-Platform-test/40/\",
"\orchestrationTaskName\":\"StageName\",
\"orchestrationTaskDetails\":{
\"message\":\"Started by upstream project \\\"Mobile-Platform-test\\\" build number 40\",
\"triggerType\":\"upstream\",
\"upstreamTaskExecutionURL\":\"https://jenkins.mycompany.com:8080/job/Mobile-Platform-test/40/\"}
}"
応答:
{
"result": {
"change_control": true
}
}
DevOps - PUT /devops/orchestration/changeInfo/{changeInfo}
指定された変更要求のフィールドを更新します。
URL 形式
バージョニングされた URL: /api/sn_devops/{api_version}/devops/orchestration/changeInfo/{changeInfo}
デフォルト URL: /api/sn_devops/devops/orchestration/changeInfo/{changeInfo}
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| 名前 | Description (説明) |
|---|---|
| changeRequestNumber | 必須。更新するオーケストレーションタスクに関連付けられた変更要求番号。変更要求 [change_request] テーブルにあります。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| データ | 必須。関連する変更要求で更新するフィールドの名前と値のペア。 たとえば、簡単な説明ファイルを更新するには、次のような名前と値のペアを入力します。 state パラメーターでは、次の遷移のみがサポートされています。
データタイプ:文字列 |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| 承認 | 応答本文のデータフォーマット。application/json のみをサポートします。 |
| 認証 | v2 以降、この API はトークンベースの認証をサポートしています。トークンは、ツール [sn_devops_tool] テーブルにあるツール レコードの [ トークンをコピー ] ボタンをクリックすることで取得できます。その後、トークンを Authorization: sn_devops の形式で認証ヘッダーで使用できます 。DevOpsToken <tool_sys_id>:<tool_token>。注: トークン付きの認証ヘッダーに加えて基本認証の詳細 (ユーザー名とパスワード) が指定されている場合は、基本認証が優先されます。 インスタンスで devops.system ユーザーが利用できない場合は、[ トークンベースの認証が成功した後にこのユーザーに切り替え る] プロパティを使用します。このプロパティを使用すると、トークン認証を完了するために必要な sn_devops.integration ロールを持つ任意のユーザーを設定できます。詳細については、「DevOps Change Velocity properties」を参照してください。 |
| Content-Type | 要求本文のデータ形式。application/json のみをサポートします。 |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 200 | 成功。要求が正常に処理されました。 |
| 400 | 要求が正しくありません。不適切な要求タイプまたは誤った要求が検出されました。 |
| 404 | 見つかりません。要求アイテムが見つかりませんでした。 |
応答本文のパラメーター
| 名前 | 説明 |
|---|---|
| メッセージ | 更新の結果の説明。 データタイプ:文字列 |
| status | 要求のステータス 可能な値:
データタイプ:文字列 |
| updateStatus | 更新のステータス。 可能な値:
データタイプ:文字列 |
cURL 要求
次のコード例は、CHG0030023変更要求のさまざまなフィールドを更新する方法を示しています。
curl -X PUT"
https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/changeInfo?changeRequestNumber=CHG0030023
-H "accept: application/json"\
-u "username":"password"
- D
{
"short_description": "Test description",
"priority": "1",
"start_date": "2021-02-05 08:00:00",
"end_date": "2022-04-05 08:00:00",
"justification": "test justification",
"description": "test description",
"cab_required": true,
"comments": "This update for work notes is from jenkins file",
"work_notes": "test work notes",
"assignment_group": "a715cd759f2002002920bde8132e7018"
}
応答:
{
"result": {
"updateStatus": "Done",
"status": "Success",
"message": "change request update successful"
}
}