diff --git a/oas_docs/bundle.json b/oas_docs/bundle.json index a8b3aeb22069a..04f5ea93faa99 100644 --- a/oas_docs/bundle.json +++ b/oas_docs/bundle.json @@ -9995,6 +9995,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -10222,6 +10225,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -10299,6 +10305,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -10440,6 +10449,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -10675,6 +10687,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -11758,6 +11773,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -13048,6 +13066,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -14078,6 +14099,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -14173,6 +14197,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -14348,6 +14375,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -15344,6 +15374,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -16649,6 +16682,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -17677,6 +17713,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -17759,6 +17798,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -17786,6 +17828,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -18388,6 +18433,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -18536,6 +18584,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -18679,6 +18730,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -18801,6 +18855,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -19381,6 +19438,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -19472,6 +19532,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -19698,6 +19761,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -19829,6 +19895,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -19890,6 +19959,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -19998,6 +20070,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20107,6 +20182,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20221,6 +20299,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20337,6 +20418,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20461,6 +20545,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20542,6 +20629,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20608,6 +20698,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20700,6 +20793,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20788,6 +20884,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20867,6 +20966,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20947,6 +21049,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -21402,6 +21507,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -21880,6 +21988,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -22086,6 +22197,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -22174,6 +22288,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -22273,6 +22390,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -22420,6 +22540,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -22530,6 +22653,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -22604,6 +22730,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -22751,6 +22880,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -22931,6 +23063,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -23065,6 +23200,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -23145,6 +23283,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -23246,6 +23387,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -23387,6 +23531,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -23488,6 +23635,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -23694,6 +23844,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -23810,6 +23963,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -24409,6 +24565,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -24593,6 +24752,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -24868,6 +25030,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -25099,6 +25264,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -25160,6 +25328,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -25236,6 +25407,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -25405,6 +25579,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -26113,6 +26290,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -26332,6 +26512,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -27024,6 +27207,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -27157,6 +27343,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -27229,6 +27418,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -27388,6 +27580,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -27447,6 +27642,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -27645,6 +27843,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -27970,6 +28171,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28047,6 +28251,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28237,6 +28444,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28561,6 +28771,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28654,6 +28867,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28681,6 +28897,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28764,6 +28983,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28838,6 +29060,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28865,6 +29090,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28934,6 +29162,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -29012,6 +29243,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -29039,6 +29273,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -30213,6 +30450,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -32491,6 +32731,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -32568,6 +32811,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -32595,6 +32841,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -33761,6 +34010,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -36023,6 +36275,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -36101,6 +36356,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -36821,6 +37079,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -38099,6 +38360,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -38126,6 +38390,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -38809,6 +39076,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -39021,6 +39291,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -39136,6 +39409,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -40339,6 +40615,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -40424,6 +40703,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -41076,6 +41358,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -42373,6 +42658,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -42400,6 +42688,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -42523,6 +42814,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -42698,6 +42992,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -42775,6 +43072,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -42890,6 +43190,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -43068,6 +43371,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -43158,6 +43464,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -43277,6 +43586,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -43470,6 +43782,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -43578,6 +43893,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -43736,6 +44054,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -43834,6 +44155,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, diff --git a/oas_docs/bundle.serverless.json b/oas_docs/bundle.serverless.json index 3fcffdb2fcaf9..cfa6dc611f48d 100644 --- a/oas_docs/bundle.serverless.json +++ b/oas_docs/bundle.serverless.json @@ -9995,6 +9995,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -10222,6 +10225,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -10299,6 +10305,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -10440,6 +10449,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -10675,6 +10687,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -11758,6 +11773,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -13048,6 +13066,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -14078,6 +14099,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -14173,6 +14197,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -14348,6 +14375,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -15344,6 +15374,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -16649,6 +16682,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -17677,6 +17713,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -17759,6 +17798,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -17786,6 +17828,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -18388,6 +18433,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -18536,6 +18584,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -18679,6 +18730,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -18801,6 +18855,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -19381,6 +19438,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -19472,6 +19532,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -19698,6 +19761,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -19829,6 +19895,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -19890,6 +19959,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -19998,6 +20070,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20107,6 +20182,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20221,6 +20299,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20337,6 +20418,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20461,6 +20545,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20542,6 +20629,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20608,6 +20698,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20700,6 +20793,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20788,6 +20884,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20867,6 +20966,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -20947,6 +21049,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -21402,6 +21507,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -21880,6 +21988,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -22086,6 +22197,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -22174,6 +22288,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -22273,6 +22390,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -22420,6 +22540,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -22530,6 +22653,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -22604,6 +22730,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -22751,6 +22880,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -22931,6 +23063,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -23065,6 +23200,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -23145,6 +23283,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -23246,6 +23387,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -23387,6 +23531,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -23488,6 +23635,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -23694,6 +23844,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -23810,6 +23963,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -24409,6 +24565,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -24593,6 +24752,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -24868,6 +25030,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -25099,6 +25264,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -25160,6 +25328,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -25236,6 +25407,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -25405,6 +25579,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -26113,6 +26290,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -26332,6 +26512,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -27024,6 +27207,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -27157,6 +27343,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -27229,6 +27418,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -27388,6 +27580,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -27447,6 +27642,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -27645,6 +27843,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -27970,6 +28171,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28047,6 +28251,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28237,6 +28444,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28561,6 +28771,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28654,6 +28867,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28681,6 +28897,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28764,6 +28983,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28838,6 +29060,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28865,6 +29090,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -28934,6 +29162,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -29012,6 +29243,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -29039,6 +29273,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -30213,6 +30450,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -32491,6 +32731,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -32568,6 +32811,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -32595,6 +32841,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -33761,6 +34010,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -36023,6 +36275,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -36101,6 +36356,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -36821,6 +37079,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -38099,6 +38360,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -38126,6 +38390,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -38809,6 +39076,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -39021,6 +39291,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -39136,6 +39409,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -40339,6 +40615,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -40424,6 +40703,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -41076,6 +41358,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -42373,6 +42658,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -42400,6 +42688,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -42523,6 +42814,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -42698,6 +42992,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -42775,6 +43072,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -42890,6 +43190,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -43068,6 +43371,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -43158,6 +43464,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -43277,6 +43586,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -43470,6 +43782,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -43578,6 +43893,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -43736,6 +44054,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, @@ -43834,6 +44155,9 @@ "error": { "type": "string" }, + "errorType": { + "type": "string" + }, "message": { "type": "string" }, diff --git a/oas_docs/output/kibana.serverless.yaml b/oas_docs/output/kibana.serverless.yaml index 2768df03ddecd..f4bd835bdab66 100644 --- a/oas_docs/output/kibana.serverless.yaml +++ b/oas_docs/output/kibana.serverless.yaml @@ -13976,6 +13976,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -14125,6 +14127,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -14176,6 +14180,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -14269,6 +14275,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -14423,6 +14431,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -15149,6 +15159,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -16021,6 +16033,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -16712,6 +16726,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -17380,6 +17396,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -18262,6 +18280,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -18951,6 +18971,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -19004,6 +19026,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -19022,6 +19046,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -19423,6 +19449,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -19522,6 +19550,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -19585,6 +19615,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -19702,6 +19734,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -19796,6 +19830,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -19874,6 +19910,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -20284,6 +20322,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -20344,6 +20384,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -20397,6 +20439,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -20725,6 +20769,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21068,6 +21114,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21207,6 +21255,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21265,6 +21315,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21330,6 +21382,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21428,6 +21482,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21504,6 +21560,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21665,6 +21723,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21754,6 +21814,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21795,6 +21857,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21864,6 +21928,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21933,6 +21999,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22007,6 +22075,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22081,6 +22151,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22161,6 +22233,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22215,6 +22289,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22258,6 +22334,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22322,6 +22400,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22382,6 +22462,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22434,6 +22516,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22483,6 +22567,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22583,6 +22669,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22710,6 +22798,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22802,6 +22892,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22855,6 +22947,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22925,6 +23019,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23019,6 +23115,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23086,6 +23184,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23226,6 +23326,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23304,6 +23406,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23712,6 +23816,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23836,6 +23942,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24016,6 +24124,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24129,6 +24239,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24610,6 +24722,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24757,6 +24871,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -25228,6 +25344,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -25275,6 +25393,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -25362,6 +25482,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -25412,6 +25534,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -25561,6 +25685,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -25602,6 +25728,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -25705,6 +25833,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -25745,6 +25875,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -25876,6 +26008,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -26087,6 +26221,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -26138,6 +26274,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -26262,6 +26400,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -26471,6 +26611,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -26532,6 +26674,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -26550,6 +26694,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -26604,6 +26750,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -26652,6 +26800,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -26670,6 +26820,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -26716,6 +26868,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -26768,6 +26922,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -26786,6 +26942,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -27565,6 +27723,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -29073,6 +29233,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -29124,6 +29286,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -29142,6 +29306,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -29914,6 +30080,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -31406,6 +31574,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -31459,6 +31629,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -31933,6 +32105,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -32779,6 +32953,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -32797,6 +32973,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -33247,6 +33425,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -33314,6 +33494,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -33744,6 +33926,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -34600,6 +34784,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -34618,6 +34804,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -34750,6 +34938,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -34826,6 +35016,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -35633,6 +35825,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -35715,6 +35909,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -35828,6 +36024,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -35879,6 +36077,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -35954,6 +36154,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -36069,6 +36271,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -36129,6 +36333,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -36210,6 +36416,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -36339,6 +36547,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -36411,6 +36621,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -36518,6 +36730,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -36584,6 +36798,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: diff --git a/oas_docs/output/kibana.yaml b/oas_docs/output/kibana.yaml index cdbbd279ca801..0e1df27104261 100644 --- a/oas_docs/output/kibana.yaml +++ b/oas_docs/output/kibana.yaml @@ -16034,6 +16034,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -16182,6 +16184,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -16232,6 +16236,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -16324,6 +16330,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -16477,6 +16485,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -17202,6 +17212,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -18073,6 +18085,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -18763,6 +18777,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -19430,6 +19446,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -20311,6 +20329,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -20999,6 +21019,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21051,6 +21073,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21069,6 +21093,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21469,6 +21495,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21567,6 +21595,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21629,6 +21659,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21745,6 +21777,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21838,6 +21872,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -21915,6 +21951,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22324,6 +22362,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22383,6 +22423,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22435,6 +22477,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -22762,6 +22806,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23104,6 +23150,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23242,6 +23290,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23299,6 +23349,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23363,6 +23415,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23459,6 +23513,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23534,6 +23590,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23694,6 +23752,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23782,6 +23842,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23822,6 +23884,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23890,6 +23954,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -23958,6 +24024,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24031,6 +24099,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24104,6 +24174,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24183,6 +24255,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24236,6 +24310,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24278,6 +24354,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24341,6 +24419,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24400,6 +24480,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24451,6 +24533,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24499,6 +24583,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24598,6 +24684,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24724,6 +24812,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24815,6 +24905,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24867,6 +24959,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -24936,6 +25030,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -25029,6 +25125,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -25095,6 +25193,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -25234,6 +25334,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -25311,6 +25413,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -25718,6 +25822,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -25841,6 +25947,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -26020,6 +26128,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -26132,6 +26242,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -26612,6 +26724,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -26758,6 +26872,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -27228,6 +27344,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -27274,6 +27392,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -27360,6 +27480,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -27409,6 +27531,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -27557,6 +27681,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -27597,6 +27723,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -27699,6 +27827,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -27738,6 +27868,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -27868,6 +28000,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -28078,6 +28212,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -28128,6 +28264,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -28251,6 +28389,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -28459,6 +28599,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -28519,6 +28661,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -28537,6 +28681,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -28590,6 +28736,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -28637,6 +28785,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -28655,6 +28805,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -28700,6 +28852,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -28751,6 +28905,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -28769,6 +28925,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -29547,6 +29705,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -31054,6 +31214,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -31104,6 +31266,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -31122,6 +31286,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -31893,6 +32059,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -33384,6 +33552,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -33436,6 +33606,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -33909,6 +34081,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -34754,6 +34928,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -34772,6 +34948,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -35221,6 +35399,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -35287,6 +35467,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -35716,6 +35898,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -36571,6 +36755,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -36589,6 +36775,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -36720,6 +36908,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -36795,6 +36985,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -37601,6 +37793,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -37682,6 +37876,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -37794,6 +37990,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -37844,6 +38042,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -37918,6 +38118,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -38032,6 +38234,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -38091,6 +38295,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -38171,6 +38377,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -38299,6 +38507,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -38370,6 +38580,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -38476,6 +38688,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: @@ -38541,6 +38755,8 @@ paths: attributes: {} error: type: string + errorType: + type: string message: type: string statusCode: diff --git a/x-pack/platform/plugins/shared/fleet/common/errors.ts b/x-pack/platform/plugins/shared/fleet/common/errors.ts index 9750fdbaf0d3b..903f76063933e 100644 --- a/x-pack/platform/plugins/shared/fleet/common/errors.ts +++ b/x-pack/platform/plugins/shared/fleet/common/errors.ts @@ -26,3 +26,4 @@ export class FleetActionsClientError extends FleetError {} export class UninstallTokenError extends FleetError {} export class AgentRequestInvalidError extends FleetError {} +export class OutputInvalidError extends FleetError {} diff --git a/x-pack/platform/plugins/shared/fleet/common/services/agent_policies_helpers.ts b/x-pack/platform/plugins/shared/fleet/common/services/agent_policies_helpers.ts index 5729947feea31..62c87fc2a85f6 100644 --- a/x-pack/platform/plugins/shared/fleet/common/services/agent_policies_helpers.ts +++ b/x-pack/platform/plugins/shared/fleet/common/services/agent_policies_helpers.ts @@ -24,9 +24,6 @@ export function getDefaultFleetServerpolicyId(spaceId?: string) { export function policyHasFleetServer( agentPolicy: Pick ) { - if (!agentPolicy.package_policies) { - return false; - } return ( agentPolicy.package_policies?.some((p) => p.package?.name === FLEET_SERVER_PACKAGE) || !!agentPolicy.has_fleet_server diff --git a/x-pack/platform/plugins/shared/fleet/common/services/output_helpers.test.ts b/x-pack/platform/plugins/shared/fleet/common/services/output_helpers.test.ts index 7394742d209a4..1086de1a7625d 100644 --- a/x-pack/platform/plugins/shared/fleet/common/services/output_helpers.test.ts +++ b/x-pack/platform/plugins/shared/fleet/common/services/output_helpers.test.ts @@ -53,6 +53,14 @@ describe('getAllowedOutputTypesForAgentPolicy', () => { expect(res).toEqual(['elasticsearch']); }); + it('should return only elasticsearch for an agent policy with Fleet Server not yet installed', () => { + const res = getAllowedOutputTypesForAgentPolicy({ + has_fleet_server: true, + } as any); + + expect(res).toEqual(['elasticsearch']); + }); + it('should return only elasticsearch for an agentless agent policy', () => { const res = getAllowedOutputTypesForAgentPolicy({ supports_agentless: true } as any); diff --git a/x-pack/platform/plugins/shared/fleet/common/services/output_helpers.ts b/x-pack/platform/plugins/shared/fleet/common/services/output_helpers.ts index e664495d327f3..43f67ac348332 100644 --- a/x-pack/platform/plugins/shared/fleet/common/services/output_helpers.ts +++ b/x-pack/platform/plugins/shared/fleet/common/services/output_helpers.ts @@ -32,10 +32,11 @@ const sameClusterRestrictedPackages = [ */ export function getAllowedOutputTypesForAgentPolicy(agentPolicy: Partial): string[] { const isRestrictedToSameClusterES = - agentPolicy.package_policies && - agentPolicy.package_policies.some( - (p) => p.package?.name && sameClusterRestrictedPackages.includes(p.package?.name) - ); + agentPolicy.has_fleet_server || + (agentPolicy.package_policies && + agentPolicy.package_policies.some( + (p) => p.package?.name && sameClusterRestrictedPackages.includes(p.package?.name) + )); if (isRestrictedToSameClusterES) { return [outputType.Elasticsearch]; diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/fleet_server_instructions/hooks/use_quick_start_form.ts b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/fleet_server_instructions/hooks/use_quick_start_form.ts index 559fcad522351..c4c1cdcf29493 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/fleet_server_instructions/hooks/use_quick_start_form.ts +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/fleet_server_instructions/hooks/use_quick_start_form.ts @@ -8,10 +8,11 @@ import { useState, useCallback, useEffect, useMemo } from 'react'; import { i18n } from '@kbn/i18n'; +import { OutputInvalidError } from '../../../../../../common/errors'; import { getDefaultFleetServerpolicyId } from '../../../../../../common/services/agent_policies_helpers'; import type { useComboInput, useInput, useSwitchInput } from '../../../hooks'; import { - sendCreateAgentPolicy, + sendCreateAgentPolicyForRq, sendGetOneAgentPolicy, useFleetStatus, useStartServices, @@ -115,23 +116,40 @@ export const useQuickStartCreateForm = (): QuickStartCreateForm => { if (existingPolicy.data?.item) { setFleetServerPolicyId(existingPolicy.data?.item.id); } else { - const createPolicyResponse = await sendCreateAgentPolicy( + const createPolicyResponse = await sendCreateAgentPolicyForRq( quickStartFleetServerPolicyFields, { withSysMonitoring: true, } ); - setFleetServerPolicyId(createPolicyResponse.data?.item.id); + setFleetServerPolicyId(createPolicyResponse.item.id); } - setStatus('success'); } } catch (err) { - notifications.toasts.addError(err, { - title: i18n.translate('xpack.fleet.fleetServerSetup.errorAddingFleetServerHostTitle', { - defaultMessage: 'Error adding Fleet Server host', - }), - }); + if (err?.attributes?.type === OutputInvalidError.name) { + notifications.toasts.addError(err, { + title: i18n.translate( + 'xpack.fleet.fleetServerSetup.errorCreatingFleetServerPolicyTitle', + { + defaultMessage: 'Error creating a Fleet Server policy', + } + ), + toastMessage: i18n.translate( + 'xpack.fleet.fleetServerSetup.errorCreatingFleetServerPolicyMessage', + { + defaultMessage: + 'Fleet Server policy creation failed as your default output is not an elasticsearch output. Use the advanced section to use an elasticsearch output to create that policy.', + } + ), + }); + } else { + notifications.toasts.addError(err, { + title: i18n.translate('xpack.fleet.fleetServerSetup.errorAddingFleetServerHostTitle', { + defaultMessage: 'Error adding Fleet Server host', + }), + }); + } setStatus('error'); setError(err.message); diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/hooks.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/hooks.tsx index 5e851be571565..9b3adbe6c825b 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/hooks.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/hooks.tsx @@ -69,6 +69,7 @@ export function useOutputOptions(agentPolicy: Partial getAllowedOutputTypesForAgentPolicy(agentPolicy as AgentPolicy), [agentPolicy] @@ -146,13 +147,21 @@ export function useOutputOptions(agentPolicy: Partial ({ dataOutputOptions, monitoringOutputOptions, + dataOutputValueOfSelected, isLoading: outputsRequest.isLoading, }), - [dataOutputOptions, monitoringOutputOptions, outputsRequest.isLoading] + [ + dataOutputOptions, + dataOutputValueOfSelected, + monitoringOutputOptions, + outputsRequest.isLoading, + ] ); } diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/index.tsx index d586c93e40a47..7d213b2d11ba6 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/index.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/index.tsx @@ -97,6 +97,7 @@ export const AgentPolicyAdvancedOptionsContent: React.FunctionComponent = const { dataOutputOptions, + dataOutputValueOfSelected, monitoringOutputOptions, isLoading: isLoadingOptions, } = useOutputOptions(agentPolicy); @@ -657,7 +658,7 @@ export const AgentPolicyAdvancedOptionsContent: React.FunctionComponent = > { diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_create_inline.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_create_inline.tsx index 96e1056f736cd..6680503ea81fc 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_create_inline.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_create_inline.tsx @@ -24,7 +24,7 @@ import { i18n } from '@kbn/i18n'; import { useSpaceSettingsContext } from '../../../../../hooks/use_space_settings_context'; import type { AgentPolicy, NewAgentPolicy } from '../../../types'; -import { sendCreateAgentPolicy, useStartServices, useAuthz } from '../../../hooks'; +import { useStartServices, useAuthz, sendCreateAgentPolicyForRq } from '../../../hooks'; import { generateNewAgentPolicyWithDefaults } from '../../../../../../common/services/generate_new_agent_policy'; import { agentPolicyFormValidation } from '.'; @@ -48,7 +48,7 @@ export const AgentPolicyCreateInlineForm: React.FunctionComponent = ({ isFleetServerPolicy, agentPolicyName, }) => { - const { docLinks } = useStartServices(); + const { docLinks, notifications } = useStartServices(); const authz = useAuthz(); const [touchedFields, setTouchedFields] = useState<{ [key: string]: boolean }>({}); @@ -83,17 +83,20 @@ export const AgentPolicyCreateInlineForm: React.FunctionComponent = ({ const createAgentPolicy = useCallback(async () => { try { setIsLoading(true); - const resp = await sendCreateAgentPolicy(newAgentPolicy, { withSysMonitoring }); - if (resp.error) throw resp.error; - if (resp.data) { - updateAgentPolicy(resp.data.item); - } + const data = await sendCreateAgentPolicyForRq(newAgentPolicy, { withSysMonitoring }); + + updateAgentPolicy(data.item); } catch (e) { + notifications.toasts.addError(e, { + title: i18n.translate('xpack.fleet.agentPolicyCreateInline.errorTitle', { + defaultMessage: 'Error creating agent policy', + }), + }); updateAgentPolicy(null, mapError(e)); } finally { setIsLoading(false); } - }, [newAgentPolicy, withSysMonitoring, updateAgentPolicy]); + }, [newAgentPolicy, withSysMonitoring, updateAgentPolicy, notifications.toasts]); function mapError(e: { statusCode: number }): JSX.Element | undefined { switch (e.statusCode) { diff --git a/x-pack/platform/plugins/shared/fleet/public/hooks/use_request/agent_policy.ts b/x-pack/platform/plugins/shared/fleet/public/hooks/use_request/agent_policy.ts index 26b02f4daa872..5ac33f19703e2 100644 --- a/x-pack/platform/plugins/shared/fleet/public/hooks/use_request/agent_policy.ts +++ b/x-pack/platform/plugins/shared/fleet/public/hooks/use_request/agent_policy.ts @@ -155,6 +155,22 @@ export function useGetAutoUpgradeAgentsStatusQuery(agentPolicyId: string) { ); } +export const sendCreateAgentPolicyForRq = ( + body: CreateAgentPolicyRequest['body'], + { withSysMonitoring }: { withSysMonitoring: boolean } = { withSysMonitoring: false } +) => { + return sendRequestForRq({ + path: agentPolicyRouteService.getCreatePath(), + method: 'post', + body: JSON.stringify(body), + query: withSysMonitoring ? { sys_monitoring: true } : {}, + version: API_VERSIONS.public.v1, + }); +}; + +/** + * @deprecated use sendCreateAgentPolicyForRq instead + */ export const sendCreateAgentPolicy = ( body: CreateAgentPolicyRequest['body'], { withSysMonitoring }: { withSysMonitoring: boolean } = { withSysMonitoring: false } diff --git a/x-pack/platform/plugins/shared/fleet/server/errors/handlers.ts b/x-pack/platform/plugins/shared/fleet/server/errors/handlers.ts index 2bdd118e7fb40..7ebc33187c560 100644 --- a/x-pack/platform/plugins/shared/fleet/server/errors/handlers.ts +++ b/x-pack/platform/plugins/shared/fleet/server/errors/handlers.ts @@ -47,6 +47,7 @@ import { AgentlessPolicyExistsRequestError, PackageInvalidDeploymentMode, PackagePolicyContentPackageError, + OutputInvalidError, } from '.'; type IngestErrorHandler = ( @@ -154,6 +155,13 @@ const getHTTPResponseCode = (error: FleetError): number => { return 400; // Bad Request }; +function shouldRespondWithErrorType(error: FleetError) { + if (error instanceof OutputInvalidError) { + return true; + } + return false; +} + export function fleetErrorToResponseOptions(error: IngestErrorHandlerParams['error']) { const logger = appContextService.getLogger(); // our "expected" errors @@ -164,6 +172,7 @@ export function fleetErrorToResponseOptions(error: IngestErrorHandlerParams['err statusCode: getHTTPResponseCode(error), body: { message: error.message, + ...(shouldRespondWithErrorType(error) ? { attributes: { type: error.name } } : {}), ...(error.attributes && { attributes: error.attributes }), }, }; diff --git a/x-pack/platform/plugins/shared/fleet/server/errors/index.ts b/x-pack/platform/plugins/shared/fleet/server/errors/index.ts index 93f33a2f95662..2db40f6d4d0f9 100644 --- a/x-pack/platform/plugins/shared/fleet/server/errors/index.ts +++ b/x-pack/platform/plugins/shared/fleet/server/errors/index.ts @@ -17,7 +17,10 @@ export { } from './handlers'; export { isESClientError } from './utils'; -export { FleetError as FleetError } from '../../common/errors'; +export { + FleetError as FleetError, + OutputInvalidError as OutputInvalidError, +} from '../../common/errors'; export class RegistryError extends FleetError {} export class RegistryConnectionError extends RegistryError {} @@ -115,7 +118,6 @@ export class FleetNotFoundError extends FleetError {} export class FleetTooManyRequestsError extends FleetError {} export class OutputUnauthorizedError extends FleetError {} -export class OutputInvalidError extends FleetError {} export class OutputLicenceError extends FleetError {} export class DownloadSourceError extends FleetError {} export class DeleteUnenrolledAgentsPreconfiguredError extends FleetError {} diff --git a/x-pack/platform/plugins/shared/fleet/server/routes/schema/errors.ts b/x-pack/platform/plugins/shared/fleet/server/routes/schema/errors.ts index 83aae1b763d7c..d2cf47072d92a 100644 --- a/x-pack/platform/plugins/shared/fleet/server/routes/schema/errors.ts +++ b/x-pack/platform/plugins/shared/fleet/server/routes/schema/errors.ts @@ -12,6 +12,7 @@ export const genericErrorResponse = () => { statusCode: schema.maybe(schema.number()), error: schema.maybe(schema.string()), + errorType: schema.maybe(schema.string()), message: schema.string(), attributes: schema.maybe(schema.any()), }, diff --git a/x-pack/platform/plugins/shared/fleet/server/services/agent_policies/outputs_helpers.ts b/x-pack/platform/plugins/shared/fleet/server/services/agent_policies/outputs_helpers.ts index f2176604edf5e..37e8e567fdb03 100644 --- a/x-pack/platform/plugins/shared/fleet/server/services/agent_policies/outputs_helpers.ts +++ b/x-pack/platform/plugins/shared/fleet/server/services/agent_policies/outputs_helpers.ts @@ -54,6 +54,7 @@ export async function validateOutputForPolicy( allowedOutputTypeForPolicy: string[] = Object.values(outputType) ) { if ( + Object.keys(existingData).length !== 0 && newData.data_output_id === existingData.data_output_id && newData.monitoring_output_id === existingData.monitoring_output_id ) { @@ -66,7 +67,15 @@ export async function validateOutputForPolicy( allowedOutputTypeForPolicy.length !== Object.values(outputType).length; if (isOutputTypeRestricted) { - const dataOutput = await getDataOutputForAgentPolicy(soClient, data); + const dataOutput = await getDataOutputForAgentPolicy(soClient, data).catch((err) => { + if (err instanceof OutputNotFoundError) { + return; + } + throw err; + }); + if (!dataOutput) { + return; + } if (!allowedOutputTypeForPolicy.includes(dataOutput.type)) { throw new OutputInvalidError( `Output of type "${dataOutput.type}" is not usable with policy "${data.name}".` @@ -116,7 +125,15 @@ export async function validateAgentPolicyOutputForIntegration( allowedOutputTypeForPolicy.length !== Object.values(outputType).length; if (isOutputTypeRestricted) { - const dataOutput = await getDataOutputForAgentPolicy(soClient, agentPolicy); + const dataOutput = await getDataOutputForAgentPolicy(soClient, agentPolicy).catch((err) => { + if (err instanceof OutputNotFoundError) { + return; + } + throw err; + }); + if (!dataOutput) { + return; + } if (!allowedOutputTypeForPolicy.includes(dataOutput.type)) { if (isNewPackagePolicy) { throw new OutputInvalidError( diff --git a/x-pack/platform/plugins/shared/fleet/server/services/agent_policy.ts b/x-pack/platform/plugins/shared/fleet/server/services/agent_policy.ts index c5410ad0ff7ac..47581cf35c067 100644 --- a/x-pack/platform/plugins/shared/fleet/server/services/agent_policy.ts +++ b/x-pack/platform/plugins/shared/fleet/server/services/agent_policy.ts @@ -380,6 +380,7 @@ class AgentPolicyService { user?: AuthenticatedUser; authorizationHeader?: HTTPAuthorizationHeader | null; skipDeploy?: boolean; + hasFleetServer?: boolean; } = {} ): Promise { const savedObjectType = await getAgentPolicySavedObjectType(); @@ -412,12 +413,17 @@ class AgentPolicyService { spaceId: soClient.getCurrentNamespace(), namespace: agentPolicy.namespace, }); + const policyForOutputValidation = { + ...agentPolicy, + has_fleet_server: options?.hasFleetServer, + }; await validateOutputForPolicy( soClient, - agentPolicy, + policyForOutputValidation, {}, - getAllowedOutputTypesForAgentPolicy(agentPolicy) + getAllowedOutputTypesForAgentPolicy(policyForOutputValidation) ); + validateRequiredVersions(agentPolicy.name, agentPolicy.required_versions); const newSo = await soClient.create( diff --git a/x-pack/platform/plugins/shared/fleet/server/services/agent_policy_create.ts b/x-pack/platform/plugins/shared/fleet/server/services/agent_policy_create.ts index 3902548581595..c9fa5b591010f 100644 --- a/x-pack/platform/plugins/shared/fleet/server/services/agent_policy_create.ts +++ b/x-pack/platform/plugins/shared/fleet/server/services/agent_policy_create.ts @@ -149,6 +149,7 @@ export async function createAgentPolicyWithPackages({ user, id: agentPolicyId, authorizationHeader, + hasFleetServer, skipDeploy: true, // skip deploying the policy until package policies are added }); diff --git a/x-pack/test/fleet_api_integration/apis/agent_policy/agent_policy.ts b/x-pack/test/fleet_api_integration/apis/agent_policy/agent_policy.ts index 3e9c1da9b1324..3b2b39eae0379 100644 --- a/x-pack/test/fleet_api_integration/apis/agent_policy/agent_policy.ts +++ b/x-pack/test/fleet_api_integration/apis/agent_policy/agent_policy.ts @@ -2038,6 +2038,100 @@ export default function (providerContext: FtrProviderContext) { }); }); + describe('fleet server policies validate output', () => { + let esOutputId: string; + let logstashOutputId: string; + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + await fleetAndAgents.setup(); + + const { body: esApiResponse } = await supertest + .post(`/api/fleet/outputs`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'Elastic output', + type: 'elasticsearch', + hosts: ['http://localhost'], + }) + .expect(200); + esOutputId = esApiResponse.item.id; + + const { body: logstashApiResponse } = await supertest + .post(`/api/fleet/outputs`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'Default logstash', + type: 'logstash', + hosts: ['logstash'], + ssl: { certificate: 'CERTIFICATE', key: 'KEY', certificate_authorities: [] }, + is_default: true, + is_default_monitoring: true, + }) + .expect(200); + + logstashOutputId = logstashApiResponse.item.id; + }); + + after(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + }); + + async function assertPolicyDoNotExists(id: string) { + await supertest.get(`/api/fleet/agent_policies/${id}`).expect(404); + } + + it('should not allow to create a fleet server policies if default output is not an ES output', async () => { + const policyId = `fleet-server-${Date.now()}`; + const { statusCode } = await supertest + .post(`/api/fleet/agent_policies`) + .set('kbn-xsrf', 'kibana') + .send({ + id: policyId, + name: 'Fleet Server policy ' + Date.now(), + namespace: 'default', + has_fleet_server: true, + }); + + expect(statusCode).to.eql(400); + + await assertPolicyDoNotExists(policyId); + }); + + it('should not allow to create a fleet server policies if provided output is not an ES output', async () => { + const policyId = `fleet-server-${Date.now()}`; + const { statusCode, body } = await supertest + .post(`/api/fleet/agent_policies`) + .set('kbn-xsrf', 'kibana') + .send({ + id: policyId, + name: 'Fleet Server policy ' + Date.now(), + namespace: 'default', + has_fleet_server: true, + data_output_id: logstashOutputId, + }); + + expect(statusCode).to.eql(400); + expect(body.message).to.match(/Output of type "logstash" is not usable with policy/); + + await assertPolicyDoNotExists(policyId); + }); + + it('should allow to create a fleet server policies if provided output is an ES output', async () => { + const policyId = `fleet-server-${Date.now()}`; + await supertest + .post(`/api/fleet/agent_policies`) + .set('kbn-xsrf', 'kibana') + .send({ + id: policyId, + name: 'Fleet Server policy ' + Date.now(), + namespace: 'default', + has_fleet_server: true, + data_output_id: esOutputId, + }) + .expect(200); + }); + }); + // FLAKY: https://github.com/elastic/kibana/issues/213370 describe.skip('POST /internal/fleet/agent_and_package_policies', () => { before(async () => { diff --git a/x-pack/test/fleet_api_integration/apis/agents/upgrade.ts b/x-pack/test/fleet_api_integration/apis/agents/upgrade.ts index 2019d4fa1e466..77e4e73393f6a 100644 --- a/x-pack/test/fleet_api_integration/apis/agents/upgrade.ts +++ b/x-pack/test/fleet_api_integration/apis/agents/upgrade.ts @@ -67,6 +67,7 @@ export default function (providerContext: FtrProviderContext) { id: 'fleet-server-policy', namespace: 'default', has_fleet_server: true, + force: true, }); await kibanaServer.savedObjects.create({ @@ -645,6 +646,7 @@ export default function (providerContext: FtrProviderContext) { id: 'fleet-server-policy', namespace: 'default', has_fleet_server: true, + force: true, }); await kibanaServer.savedObjects.create({