履歴バージョンのクローン¶
POST /api/v1/pipeline_history/{pipeline_history_uuid}/clone
概要¶
履歴設定から新しい Pipeline v1 を作成します。source が省略された場合は履歴の値が引き継がれ、明示的に空配列を指定すると空に置き換わり、追加の新規検証が引き続き実行されます。
ルートパラメータ¶
| パラメータ名 | 型 | 必須 | 説明 |
|---|---|---|---|
| pipeline_history_uuid | string | Y | 履歴リストの historyRecord[].uuid が返す履歴 UUID。Pipeline UUID や数値 ID ではありません。 |
Body リクエストパラメータ¶
| パラメータ名 | 型 | 必須 | 説明 |
|---|---|---|---|
| name | string | Y | 新しい Pipeline 名 空の値: 許可されません 空文字列: 許可されません 最大長: 256 $notSearchRegExp: [^a-zA-Z0-9_\u4e00-\u9fa5-]+ |
| type | string | Y | 新しい Pipeline の実行タイプ 空の値: 許可されません 選択可能な値: ['local', 'central'] |
| source | array | 新しい source リスト(任意)。省略時は履歴バージョンの source を使用 空の値: 許可されません |
|
| isForce | boolean | デフォルト Pipeline 競合の確認 空の値: 許可されません |
パラメータ補足説明¶
指定した履歴設定から独立した Pipeline を作成します。旧バージョンの保持、新ルールの作成、実行タイプの切り替えに適しており、元の Pipeline は変更されません。
パラメータと動作¶
name と type は必須です。type=local はローカル Pipeline、type=central はセントラル Pipeline を意味します。新しい名前は最大 256 文字で、許可される文字の制約は通常の新規作成 API と同じです。name と source は既存の新規作成検証を通過する必要があります。
source が省略された場合は履歴の値が継承されます。明示的に [] を指定すると空のリストで置き換えられます。明示的に空でない配列を渡すと新しいリストが使用されます。特殊カテゴリは既存のビジネスルールに従って source が組み立てられるため、空配列でもカテゴリ検証やソース競合を回避できるとは限りません。履歴の source を引き継ぐと元の Pipeline と競合することが多いため、対象の実行タイプとカテゴリに応じて新しい source を選択することをお勧めします。
新規リソースは configVersion=1 から始まり、ソースは history/history_clone としてマークされ、ソースの履歴 UUID、Pipeline UUID、バージョン番号が保持されます。クローンは元のリソースの履歴チェーン全体を継承せず、自動的にデフォルト Pipeline(asDefault=0)になることもありません。その他の設定は履歴スナップショットから取得され、このリクエストで content、category、extend を任意に送信することはできません。さらに編集する場合は、クローン後に通常の変更 API を呼び出してください。
isForce は Front との整合性を保つために保持されているデフォルト Pipeline 競合確認用パラメータで、デフォルトは false です。履歴クローンは現時点では常に asDefault=0 に固定されているため、通常は設定不要です。このパラメータで name/source の検証をスキップすることはできません。
使用前提¶
所属するワークスペースの DF-API-KEY を使用して OpenAPI サービスを呼び出します。照会には読み取り権限が必要です。復元とクローンには Pipeline の管理権限および書き込み権限が必要です。本 API はリクエストボディによる他のワークスペースや操作者の指定をサポートしていません。例内の Endpoint、リソース UUID、API-Key はすべてプレースホルダーです。実際の値に置き換えて呼び出し、ログに API Key を出力しないでください。
レスポンス例は架空のリソースを使用し、代表的な業務フィールドを示しています。実際のレスポンスには通常の Pipeline API の他のフィールドが含まれる場合があります。呼び出し側は新規フィールドの追加に対応できるようにしてください。
バージョンフィールド¶
| フィールド | 意味 |
|---|---|
| configVersion | 設定バージョン番号。新規リソースは 1 から始まります。有効化・無効化ではこのバージョンは進みません |
| configVersionAt | この設定バージョンの生成時刻。Unix 秒単位のタイムスタンプで、ミリ秒ではありません |
| configVersionOperator / configVersionOperatorInfo | 操作者の識別子と表示情報。表示情報を解析できない場合は空オブジェクトになることがあります |
| configVersionSource / configVersionAction | バージョンの由来と操作。例: openapi/modify、history/history_restore |
| configVersionSourceInfo | 由来の補足情報。履歴操作には pipelineHistoryUUID、pipelineUUID、configVersion が含まれます |
| createAt | 履歴スナップショットのアーカイブ時刻。configVersionAt より遅くなる場合があります。履歴リストの保持期間はこのフィールドに基づいて計算されます |
履歴の config.content と config.testData は Base64 エンコードされた文字列です。呼び出し側はまず Base64 デコードし、その後に UTF-8 で読み取ります。testData はテストサンプルであり、読み取りや復元 API によって自動的に実行されることはありません。configVersionSourceInfo 内のソースバージョン番号を現在のバージョン番号とみなさないでください。
レスポンスとリトライ¶
成功時の content は通常の新規作成 API と同じ Pipeline オブジェクトで、uuid は新しいリソースの UUID です。ソース UUID は configVersionSourceInfo に含まれます。新規作成操作には冪等キーがないため、タイムアウト後はまず対象リソースが作成済みかどうかを確認し、無条件のリトライによる重複作成や名前の競合を避けてください。権限がない場合、ソースが存在しない場合、または所属 Pipeline が削除されている場合は、リソースは作成されません。
リクエスト例¶
curl -X POST 'https://openapi.guance.com/api/v1/pipeline_history/<pipeline_history_uuid>/clone' -H 'DF-API-KEY: <API-Key>' -H 'Content-Type: application/json' -d '{"name":"copy","type":"local","source":[]}'
レスポンス¶
{
"code": 200,
"content": {
"name": "copy",
"type": "local",
"category": "logging",
"source": [],
"content": "YWRkX2tleShjaXR5LCAic2hhbmdoYWkiKQ==",
"testData": "W10=",
"dataType": "line_protocol",
"asDefault": 0,
"enableByLogBackup": 0,
"extend": {},
"id": 11,
"uuid": "pl_copy",
"workspaceUUID": "wksp_example",
"status": 0,
"creator": "acnt_example",
"updator": "acnt_example",
"createAt": 1788799900,
"updateAt": 1788800200,
"deleteAt": -1,
"configVersion": 1,
"configVersionAt": 1788800200,
"configVersionOperator": "acnt_example",
"configVersionSource": "history",
"configVersionAction": "history_clone",
"configVersionSourceInfo": {
"pipelineHistoryUUID": "plh_example",
"pipelineUUID": "pl_example",
"configVersion": 2
}
},
"errorCode": "",
"message": "",
"success": true,
"traceId": "TRACE_EXAMPLE"
}