diff --git a/api/swagger-spec/api.json b/api/swagger-spec/api.json index 2da21dda5fc..b21e436b15e 100644 --- a/api/swagger-spec/api.json +++ b/api/swagger-spec/api.json @@ -15,10 +15,12 @@ "nickname": "getAPIVersions", "parameters": [], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ - "application/json" + "application/json", + "application/yaml" ] } ] diff --git a/api/swagger-spec/apis.json b/api/swagger-spec/apis.json index 0602e220758..07d061d49b3 100644 --- a/api/swagger-spec/apis.json +++ b/api/swagger-spec/apis.json @@ -15,10 +15,12 @@ "nickname": "getAPIVersions", "parameters": [], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ - "application/json" + "application/json", + "application/yaml" ] } ] diff --git a/api/swagger-spec/extensions.json b/api/swagger-spec/extensions.json index 3b4acb17fbf..7bdf667192d 100644 --- a/api/swagger-spec/extensions.json +++ b/api/swagger-spec/extensions.json @@ -15,10 +15,12 @@ "nickname": "getAPIGroup", "parameters": [], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ - "application/json" + "application/json", + "application/yaml" ] } ] diff --git a/api/swagger-spec/v1.json b/api/swagger-spec/v1.json index cbc65ba3b86..bedb828a854 100644 --- a/api/swagger-spec/v1.json +++ b/api/swagger-spec/v1.json @@ -47,7 +47,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -122,7 +123,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -165,7 +167,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -248,7 +251,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -293,7 +297,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -370,7 +375,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -520,7 +526,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -573,7 +580,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -626,7 +634,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -681,7 +690,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -847,7 +857,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1005,7 +1016,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1050,7 +1062,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1127,7 +1140,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1277,7 +1291,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1330,7 +1345,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1383,7 +1399,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -1438,7 +1455,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1604,7 +1622,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1762,7 +1781,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1807,7 +1827,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1884,7 +1905,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2034,7 +2056,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2087,7 +2110,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2140,7 +2164,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -2195,7 +2220,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2361,7 +2387,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2511,7 +2538,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2548,7 +2576,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2617,7 +2646,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2751,7 +2781,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2796,7 +2827,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2841,7 +2873,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -2888,7 +2921,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -3022,7 +3056,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -3073,7 +3108,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -3148,7 +3184,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -3185,7 +3222,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -3254,7 +3292,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -3388,7 +3427,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -3433,7 +3473,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -3478,7 +3519,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -3525,7 +3567,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -3983,7 +4026,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -4066,7 +4110,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -4111,7 +4156,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -4188,7 +4234,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -4338,7 +4385,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -4391,7 +4439,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -4444,7 +4493,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -4499,7 +4549,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -4665,7 +4716,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -4799,7 +4851,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -4874,7 +4927,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -4911,7 +4965,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -4980,7 +5035,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -5114,7 +5170,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -5159,7 +5216,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -5204,7 +5262,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -5251,7 +5310,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -5385,7 +5445,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -5468,7 +5529,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -5513,7 +5575,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -5590,7 +5653,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -5740,7 +5804,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -5793,7 +5858,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -5846,7 +5912,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -5901,7 +5968,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -6487,7 +6555,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -6767,7 +6836,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -7044,7 +7114,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -7685,7 +7756,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -7768,7 +7840,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -7813,7 +7886,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -7890,7 +7964,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -8040,7 +8115,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -8093,7 +8169,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -8146,7 +8223,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -8201,7 +8279,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -8367,7 +8446,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -8525,7 +8605,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -8570,7 +8651,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -8647,7 +8729,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -8797,7 +8880,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -8850,7 +8934,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -8903,7 +8988,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -8958,7 +9044,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -9124,7 +9211,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -9258,7 +9346,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -9341,7 +9430,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -9386,7 +9476,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -9463,7 +9554,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -9613,7 +9705,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -9666,7 +9759,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -9719,7 +9813,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -9774,7 +9869,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -9940,7 +10036,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -10074,7 +10171,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -10157,7 +10255,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -10202,7 +10301,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -10279,7 +10379,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -10429,7 +10530,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -10482,7 +10584,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -10535,7 +10638,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -10590,7 +10694,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -10756,7 +10861,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -10914,7 +11020,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -10959,7 +11066,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -11036,7 +11144,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -11186,7 +11295,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -11239,7 +11349,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -11292,7 +11403,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -11347,7 +11459,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -11513,7 +11626,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -11671,7 +11785,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -11716,7 +11831,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -11850,7 +11966,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -11903,7 +12020,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -11956,7 +12074,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -12003,7 +12122,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -12589,7 +12709,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -12683,10 +12804,12 @@ "nickname": "getAPIResources", "parameters": [], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ - "application/json" + "application/json", + "application/yaml" ] } ] diff --git a/api/swagger-spec/v1beta1.json b/api/swagger-spec/v1beta1.json index c6869483de2..ce8b4a53964 100644 --- a/api/swagger-spec/v1beta1.json +++ b/api/swagger-spec/v1beta1.json @@ -79,7 +79,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -124,7 +125,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -201,7 +203,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -351,7 +354,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -404,7 +408,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -457,7 +462,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -512,7 +518,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -678,7 +685,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -836,7 +844,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -881,7 +890,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -958,7 +968,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1108,7 +1119,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1161,7 +1173,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1214,7 +1227,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -1269,7 +1283,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1435,7 +1450,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1569,7 +1585,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1652,7 +1669,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1697,7 +1715,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1774,7 +1793,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1924,7 +1944,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -1977,7 +1998,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2030,7 +2052,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -2085,7 +2108,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2251,7 +2275,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2385,7 +2410,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2468,7 +2494,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2513,7 +2540,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2590,7 +2618,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2740,7 +2769,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2793,7 +2823,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -2846,7 +2877,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -2901,7 +2933,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -3067,7 +3100,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -3201,7 +3235,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -3252,7 +3287,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -3305,7 +3341,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "*/*" @@ -3358,7 +3395,8 @@ } ], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ "application/json-patch+json", @@ -3379,10 +3417,12 @@ "nickname": "getAPIResources", "parameters": [], "produces": [ - "application/json" + "application/json", + "application/yaml" ], "consumes": [ - "application/json" + "application/json", + "application/yaml" ] } ] diff --git a/cmd/gendeepcopy/deep_copy.go b/cmd/gendeepcopy/deep_copy.go index a10bfe3a011..70672df3a36 100644 --- a/cmd/gendeepcopy/deep_copy.go +++ b/cmd/gendeepcopy/deep_copy.go @@ -61,7 +61,7 @@ func pkgPath(group, version string) string { group = "api" } gv := group - if version != "" { + if version != "__internal" { gv = path.Join(group, version) } switch { @@ -104,7 +104,7 @@ func main() { } else { pkgname = gv.Group } - if len(gv.Version) != 0 { + if len(gv.Version) != 0 && gv.Version != kruntime.APIVersionInternal { pkgname = gv.Version } diff --git a/cmd/integration/integration.go b/cmd/integration/integration.go index d9f29a6ae59..ff07fd38e99 100644 --- a/cmd/integration/integration.go +++ b/cmd/integration/integration.go @@ -26,7 +26,7 @@ import ( "net/http/httptest" "os" "reflect" - "runtime" + gruntime "runtime" "strconv" "strings" "sync" @@ -52,6 +52,7 @@ import ( kubetypes "k8s.io/kubernetes/pkg/kubelet/types" "k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/master" + "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/util" utilnet "k8s.io/kubernetes/pkg/util/net" "k8s.io/kubernetes/pkg/util/sets" @@ -444,7 +445,7 @@ func runReplicationControllerTest(c *client.Client) { glog.Infof("Done reading config file, took %v", time.Since(t)) t = time.Now() var controller api.ReplicationController - if err := api.Scheme.DecodeInto(data, &controller); err != nil { + if err := runtime.DecodeInto(testapi.Default.Codec(), data, &controller); err != nil { glog.Fatalf("Unexpected error: %v", err) } @@ -958,7 +959,7 @@ func addFlags(fs *pflag.FlagSet) { } func main() { - runtime.GOMAXPROCS(runtime.NumCPU()) + gruntime.GOMAXPROCS(gruntime.NumCPU()) addFlags(pflag.CommandLine) util.InitFlags() diff --git a/cmd/kube-apiserver/app/server.go b/cmd/kube-apiserver/app/server.go index eb847e5ff75..71cdf66cca4 100644 --- a/cmd/kube-apiserver/app/server.go +++ b/cmd/kube-apiserver/app/server.go @@ -34,7 +34,6 @@ import ( "k8s.io/kubernetes/cmd/kube-apiserver/app/options" "k8s.io/kubernetes/pkg/admission" "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/api/meta" "k8s.io/kubernetes/pkg/api/unversioned" apiutil "k8s.io/kubernetes/pkg/api/util" "k8s.io/kubernetes/pkg/apimachinery/registered" @@ -48,6 +47,7 @@ import ( "k8s.io/kubernetes/pkg/genericapiserver" kubeletclient "k8s.io/kubernetes/pkg/kubelet/client" "k8s.io/kubernetes/pkg/master" + "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/serviceaccount" "k8s.io/kubernetes/pkg/storage" etcdstorage "k8s.io/kubernetes/pkg/storage/etcd" @@ -82,9 +82,9 @@ func verifyClusterIPFlags(s *options.APIServer) { } } -type newEtcdFunc func([]string, meta.VersionInterfacesFunc, string, string) (storage.Interface, error) +type newEtcdFunc func([]string, runtime.NegotiatedSerializer, string, string) (storage.Interface, error) -func newEtcd(etcdServerList []string, interfacesFunc meta.VersionInterfacesFunc, storageGroupVersionString, pathPrefix string) (etcdStorage storage.Interface, err error) { +func newEtcd(etcdServerList []string, ns runtime.NegotiatedSerializer, storageGroupVersionString, pathPrefix string) (etcdStorage storage.Interface, err error) { if storageGroupVersionString == "" { return etcdStorage, fmt.Errorf("storageVersion is required to create a etcd storage") } @@ -96,11 +96,11 @@ func newEtcd(etcdServerList []string, interfacesFunc meta.VersionInterfacesFunc, var storageConfig etcdstorage.EtcdConfig storageConfig.ServerList = etcdServerList storageConfig.Prefix = pathPrefix - versionedInterface, err := interfacesFunc(storageVersion) - if err != nil { - return nil, err + s, ok := ns.SerializerForMediaType("application/json", nil) + if !ok { + return nil, fmt.Errorf("unable to find serializer for JSON") } - storageConfig.Codec = versionedInterface.Codec + storageConfig.Codec = runtime.NewCodec(ns.EncoderForVersion(s, storageVersion), ns.DecoderToVersion(s, unversioned.GroupVersion{Group: storageVersion.Group, Version: runtime.APIVersionInternal})) return storageConfig.NewStorage() } @@ -149,7 +149,7 @@ func updateEtcdOverrides(overrides []string, storageVersions map[string]string, } servers := strings.Split(tokens[1], ";") - etcdOverrideStorage, err := newEtcdFn(servers, apigroup.InterfacesFor, storageVersions[apigroup.GroupVersion.Group], prefix) + etcdOverrideStorage, err := newEtcdFn(servers, api.Codecs, storageVersions[apigroup.GroupVersion.Group], prefix) if err != nil { glog.Fatalf("Invalid storage version or misconfigured etcd for %s: %v", tokens[0], err) } @@ -260,7 +260,7 @@ func Run(s *options.APIServer) error { if _, found := storageVersions[legacyV1Group.GroupVersion.Group]; !found { glog.Fatalf("Couldn't find the storage version for group: %q in storageVersions: %v", legacyV1Group.GroupVersion.Group, storageVersions) } - etcdStorage, err := newEtcd(s.EtcdServerList, legacyV1Group.InterfacesFor, storageVersions[legacyV1Group.GroupVersion.Group], s.EtcdPathPrefix) + etcdStorage, err := newEtcd(s.EtcdServerList, api.Codecs, storageVersions[legacyV1Group.GroupVersion.Group], s.EtcdPathPrefix) if err != nil { glog.Fatalf("Invalid storage version or misconfigured etcd: %v", err) } @@ -274,7 +274,7 @@ func Run(s *options.APIServer) error { if _, found := storageVersions[expGroup.GroupVersion.Group]; !found { glog.Fatalf("Couldn't find the storage version for group: %q in storageVersions: %v", expGroup.GroupVersion.Group, storageVersions) } - expEtcdStorage, err := newEtcd(s.EtcdServerList, expGroup.InterfacesFor, storageVersions[expGroup.GroupVersion.Group], s.EtcdPathPrefix) + expEtcdStorage, err := newEtcd(s.EtcdServerList, api.Codecs, storageVersions[expGroup.GroupVersion.Group], s.EtcdPathPrefix) if err != nil { glog.Fatalf("Invalid extensions storage version or misconfigured etcd: %v", err) } @@ -381,6 +381,7 @@ func Run(s *options.APIServer) error { ProxyTLSClientConfig: proxyTLSClientConfig, ServiceNodePortRange: s.ServiceNodePortRange, KubernetesServiceNodePort: s.KubernetesServiceNodePort, + Serializer: api.Codecs, }, EnableCoreControllers: true, EventTTL: s.EventTTL, diff --git a/cmd/kube-apiserver/app/server_test.go b/cmd/kube-apiserver/app/server_test.go index 165256dfb3a..ed98edbf5e8 100644 --- a/cmd/kube-apiserver/app/server_test.go +++ b/cmd/kube-apiserver/app/server_test.go @@ -24,9 +24,9 @@ import ( "k8s.io/kubernetes/cmd/kube-apiserver/app/options" "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/api/meta" "k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/genericapiserver" + "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/storage" ) @@ -133,7 +133,7 @@ func TestUpdateEtcdOverrides(t *testing.T) { } for _, test := range testCases { - newEtcd := func(serverList []string, _ meta.VersionInterfacesFunc, _, _ string) (storage.Interface, error) { + newEtcd := func(serverList []string, _ runtime.NegotiatedSerializer, _, _ string) (storage.Interface, error) { if !reflect.DeepEqual(test.servers, serverList) { t.Errorf("unexpected server list, expected: %#v, got: %#v", test.servers, serverList) } diff --git a/cmd/libs/go2idl/client-gen/generators/generator-for-group.go b/cmd/libs/go2idl/client-gen/generators/generator-for-group.go index 22a4ed18c2f..75b3edc51ea 100644 --- a/cmd/libs/go2idl/client-gen/generators/generator-for-group.go +++ b/cmd/libs/go2idl/client-gen/generators/generator-for-group.go @@ -48,13 +48,14 @@ func (g *genGroup) Namers(c *generator.Context) namer.NameSystems { } func (g *genGroup) Imports(c *generator.Context) (imports []string) { - return append(g.imports.ImportLines(), "fmt") + return g.imports.ImportLines() } func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { sw := generator.NewSnippetWriter(w, c, "$", "$") const pkgUnversioned = "k8s.io/kubernetes/pkg/client/unversioned" const pkgRegistered = "k8s.io/kubernetes/pkg/apimachinery/registered" + const pkgAPI = "k8s.io/kubernetes/pkg/api" apiPath := func(group string) string { if group == "legacy" { return `"/api"` @@ -81,6 +82,7 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer "latestGroup": c.Universe.Variable(types.Name{Package: pkgRegistered, Name: "Group"}), "GroupOrDie": c.Universe.Variable(types.Name{Package: pkgRegistered, Name: "GroupOrDie"}), "apiPath": apiPath(g.group), + "latestCodecs": c.Universe.Variable(types.Name{Package: pkgAPI, Name: "Codecs"}), } sw.Do(groupInterfaceTemplate, m) sw.Do(groupClientTemplate, m) @@ -181,12 +183,7 @@ func setConfigDefaults(config *$.Config|raw$) error { config.GroupVersion = ©GroupVersion //} - versionInterfaces, err := g.InterfacesFor(*config.GroupVersion) - if err != nil { - return fmt.Errorf("$.Group$ API version '%s' is not recognized (valid values: %s)", - config.GroupVersion, g.GroupVersions) - } - config.Codec = versionInterfaces.Codec + config.Codec = $.latestCodecs|raw$.LegacyCodec(*config.GroupVersion) if config.QPS == 0 { config.QPS = 5 } diff --git a/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/install/install.go b/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/install/install.go index 9917557830c..90f76a025e5 100644 --- a/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/install/install.go +++ b/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/install/install.go @@ -68,7 +68,6 @@ func enableVersions(externalVersions []unversioned.GroupVersion) error { groupMeta := apimachinery.GroupMeta{ GroupVersion: preferredExternalVersion, GroupVersions: externalVersions, - Codec: runtime.CodecFor(api.Scheme, preferredExternalVersion), RESTMapper: newRESTMapper(externalVersions), SelfLinker: runtime.SelfLinker(accessor), InterfacesFor: interfacesFor, @@ -97,7 +96,6 @@ func interfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, e switch version { case v1.SchemeGroupVersion: return &meta.VersionInterfaces{ - Codec: v1.Codec, ObjectConvertor: api.Scheme, MetadataAccessor: accessor, }, nil diff --git a/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/register.go b/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/register.go index ec99f0cfe45..f5f7b3192b1 100644 --- a/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/register.go +++ b/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/register.go @@ -22,7 +22,7 @@ import ( "k8s.io/kubernetes/pkg/runtime" ) -var SchemeGroupVersion = unversioned.GroupVersion{Group: "testgroup", Version: ""} +var SchemeGroupVersion = unversioned.GroupVersion{Group: "testgroup", Version: runtime.APIVersionInternal} func AddToScheme(scheme *runtime.Scheme) { // Add the API to Scheme. diff --git a/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/v1/register.go b/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/v1/register.go index 90dbbbfeb4f..9f98cf4c234 100644 --- a/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/v1/register.go +++ b/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/v1/register.go @@ -17,7 +17,6 @@ limitations under the License. package v1 import ( - "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/runtime" @@ -25,8 +24,6 @@ import ( var SchemeGroupVersion = unversioned.GroupVersion{Group: "testgroup", Version: "v1"} -var Codec = runtime.CodecFor(api.Scheme, SchemeGroupVersion) - func AddToScheme(scheme *runtime.Scheme) { // Add the API to Scheme. addKnownTypes(scheme) diff --git a/cmd/libs/go2idl/client-gen/testoutput/testgroup/unversioned/testgroup_client.go b/cmd/libs/go2idl/client-gen/testoutput/testgroup/unversioned/testgroup_client.go index b011ed8a668..a80e27299f3 100644 --- a/cmd/libs/go2idl/client-gen/testoutput/testgroup/unversioned/testgroup_client.go +++ b/cmd/libs/go2idl/client-gen/testoutput/testgroup/unversioned/testgroup_client.go @@ -17,7 +17,7 @@ limitations under the License. package unversioned import ( - "fmt" + api "k8s.io/kubernetes/pkg/api" registered "k8s.io/kubernetes/pkg/apimachinery/registered" unversioned "k8s.io/kubernetes/pkg/client/unversioned" ) @@ -79,12 +79,7 @@ func setConfigDefaults(config *unversioned.Config) error { config.GroupVersion = ©GroupVersion //} - versionInterfaces, err := g.InterfacesFor(*config.GroupVersion) - if err != nil { - return fmt.Errorf("Testgroup API version '%s' is not recognized (valid values: %s)", - config.GroupVersion, g.GroupVersions) - } - config.Codec = versionInterfaces.Codec + config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion) if config.QPS == 0 { config.QPS = 5 } diff --git a/cmd/libs/go2idl/client-gen/testoutput/testgroup/unversioned/testgroup_test.go b/cmd/libs/go2idl/client-gen/testoutput/testgroup/unversioned/testgroup_test.go index fbb577e89f3..af504efad1d 100644 --- a/cmd/libs/go2idl/client-gen/testoutput/testgroup/unversioned/testgroup_test.go +++ b/cmd/libs/go2idl/client-gen/testoutput/testgroup/unversioned/testgroup_test.go @@ -40,7 +40,7 @@ func init() { return } testapi.Groups[testgroup.SchemeGroupVersion.Group] = testapi.NewTestGroup( - unversioned.GroupVersion{Group: testgroup.SchemeGroupVersion.Group, Version: registered.GroupOrDie(testgroup.SchemeGroupVersion.Group).GroupVersion.Version}, + registered.GroupOrDie(testgroup.SchemeGroupVersion.Group).GroupVersion, testgroup.SchemeGroupVersion) testHelper = testapi.Groups[testgroup.SchemeGroupVersion.Group] } diff --git a/contrib/mesos/pkg/executor/executor.go b/contrib/mesos/pkg/executor/executor.go index 5270a4ee29a..3edb92697e0 100644 --- a/contrib/mesos/pkg/executor/executor.go +++ b/contrib/mesos/pkg/executor/executor.go @@ -42,6 +42,7 @@ import ( client "k8s.io/kubernetes/pkg/client/unversioned" "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/dockertools" + kruntime "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/util" ) @@ -343,7 +344,7 @@ func (k *Executor) LaunchTask(driver bindings.ExecutorDriver, taskInfo *mesos.Ta return } - obj, err := api.Codec.Decode(taskInfo.GetData()) + obj, err := kruntime.Decode(api.Codecs.UniversalDecoder(), taskInfo.GetData()) if err != nil { log.Errorf("failed to extract yaml data from the taskInfo.data %v", err) k.sendStatus(driver, newStatus(taskInfo.GetTaskId(), mesos.TaskState_TASK_FAILED, diff --git a/contrib/mesos/pkg/executor/executor_test.go b/contrib/mesos/pkg/executor/executor_test.go index 139042a7a49..9e07281531c 100644 --- a/contrib/mesos/pkg/executor/executor_test.go +++ b/contrib/mesos/pkg/executor/executor_test.go @@ -211,7 +211,7 @@ func TestExecutorLaunchAndKillTask(t *testing.T) { taskInfo, err := podTask.BuildTaskInfo() assert.Equal(t, nil, err, "must be able to build task info") - data, err := testapi.Default.Codec().Encode(pod) + data, err := runtime.Encode(testapi.Default.Codec(), pod) assert.Equal(t, nil, err, "must be able to encode a pod's spec data") taskInfo.Data = data @@ -410,7 +410,7 @@ func TestExecutorFrameworkMessage(t *testing.T) { taskInfo, err := podTask.BuildTaskInfo() assert.Equal(t, nil, err, "must be able to build task info") - data, _ := testapi.Default.Codec().Encode(pod) + data, _ := runtime.Encode(testapi.Default.Codec(), pod) taskInfo.Data = data mockDriver.On( diff --git a/contrib/mesos/pkg/podutil/gzip.go b/contrib/mesos/pkg/podutil/gzip.go index 8778326d092..ba0f1cd1b72 100644 --- a/contrib/mesos/pkg/podutil/gzip.go +++ b/contrib/mesos/pkg/podutil/gzip.go @@ -25,6 +25,7 @@ import ( "k8s.io/kubernetes/pkg/api" _ "k8s.io/kubernetes/pkg/api/install" "k8s.io/kubernetes/pkg/api/v1" + "k8s.io/kubernetes/pkg/runtime" ) func Gzip(pods <-chan *api.Pod) ([]byte, error) { @@ -32,7 +33,7 @@ func Gzip(pods <-chan *api.Pod) ([]byte, error) { } func gzipList(list *api.PodList) ([]byte, error) { - raw, err := v1.Codec.Encode(list) + raw, err := runtime.Encode(api.Codecs.LegacyCodec(v1.SchemeGroupVersion), list) if err != nil { return nil, err } @@ -68,7 +69,7 @@ func gunzipList(gzipped []byte) (*api.PodList, error) { return nil, err } - obj, err := api.Scheme.Decode(raw) + obj, err := runtime.Decode(api.Codecs.UniversalDecoder(), raw) if err != nil { return nil, err } diff --git a/contrib/mesos/pkg/podutil/io.go b/contrib/mesos/pkg/podutil/io.go index e21c22f7ab7..4eb563a2f9c 100644 --- a/contrib/mesos/pkg/podutil/io.go +++ b/contrib/mesos/pkg/podutil/io.go @@ -27,6 +27,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/api/validation" + "k8s.io/kubernetes/pkg/runtime" utilyaml "k8s.io/kubernetes/pkg/util/yaml" ) @@ -41,7 +42,7 @@ func WriteToDir(pods <-chan *api.Pod, destDir string) error { log.Warningf("skipping static pod %s/%s that had no filename", p.Namespace, p.Name) continue } - raw, err := v1.Codec.Encode(p) + raw, err := runtime.Encode(api.Codecs.LegacyCodec(v1.SchemeGroupVersion), p) if err != nil { log.Errorf("failed to encode static pod as v1 object: %v", err) continue @@ -105,7 +106,7 @@ func tryDecodeSinglePod(data []byte) (parsed bool, pod *api.Pod, err error) { if err != nil { return false, nil, err } - obj, err := api.Scheme.Decode(json) + obj, err := runtime.Decode(api.Codecs.UniversalDecoder(), json) if err != nil { return false, pod, err } diff --git a/contrib/mesos/pkg/scheduler/components/binder/binder.go b/contrib/mesos/pkg/scheduler/components/binder/binder.go index 55425316376..4cb39fa529c 100644 --- a/contrib/mesos/pkg/scheduler/components/binder/binder.go +++ b/contrib/mesos/pkg/scheduler/components/binder/binder.go @@ -26,6 +26,8 @@ import ( annotation "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/meta" "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask" "k8s.io/kubernetes/pkg/api" + "k8s.io/kubernetes/pkg/api/v1" + "k8s.io/kubernetes/pkg/runtime" ) type Binder interface { @@ -150,7 +152,7 @@ func (b *binder) prepareTaskForLaunch(ctx api.Context, machine string, task *pod // the kubelet-executor uses this to instantiate the pod log.V(3).Infof("prepared pod spec: %+v", pod) - data, err := api.Codec.Encode(&pod) + data, err := runtime.Encode(api.Codecs.LegacyCodec(v1.SchemeGroupVersion), &pod) if err != nil { log.V(2).Infof("Failed to marshal the pod spec: %v", err) return err diff --git a/docs/api-reference/extensions/v1beta1/operations.html b/docs/api-reference/extensions/v1beta1/operations.html index f50ffd3cb8e..f2edc2e3936 100755 --- a/docs/api-reference/extensions/v1beta1/operations.html +++ b/docs/api-reference/extensions/v1beta1/operations.html @@ -406,6 +406,9 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }
application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+application/json
application/yaml
+