diff --git a/cmd/neofs-rest-gw/integration_test.go b/cmd/neofs-rest-gw/integration_test.go index 51ac96f..7a1a42d 100644 --- a/cmd/neofs-rest-gw/integration_test.go +++ b/cmd/neofs-rest-gw/integration_test.go @@ -144,6 +144,7 @@ func runTests(ctx context.Context, t *testing.T, key *keys.PrivateKey, node stri t.Run("rest delete object", func(t *testing.T) { restObjectDelete(ctx, t, clientPool, &owner, cnrID, signer) }) t.Run("rest search objects", func(t *testing.T) { restObjectsSearch(ctx, t, clientPool, &owner, cnrID, signer) }) t.Run("rest search objects v2", func(t *testing.T) { restObjectsSearchV2(ctx, t, clientPool, &owner, cnrID, signer) }) + t.Run("rest search objects v2 cursor and limit", func(t *testing.T) { restObjectsSearchV2CursorAndLimit(ctx, t, clientPool, &owner, signer) }) t.Run("rest search objects v2 filters", func(t *testing.T) { restObjectsSearchV2Filters(ctx, t, clientPool, &owner, signer) }) t.Run("rest upload object", func(t *testing.T) { restObjectUpload(ctx, t, clientPool, cnrID, signer) }) t.Run("rest upload object with bearer in cookie", func(t *testing.T) { restObjectUploadCookie(ctx, t, clientPool, cnrID, signer) }) @@ -1450,6 +1451,123 @@ func restObjectsSearchV2(ctx context.Context, t *testing.T, p *pool.Pool, owner }) } +func restObjectsSearchV2CursorAndLimit(ctx context.Context, t *testing.T, p *pool.Pool, owner *user.ID, signer user.Signer) { + var ( + cnrID = createContainer(ctx, t, p, *owner, strconv.FormatInt(time.Now().UnixNano(), 16), signer) + fileNames = []string{"888.jpg", "IMG_1123.jpeg", "cat.jpg", "errfwre.jpg"} + ) + + restrictByEACL(ctx, t, p, cnrID, signer) + + for _, name := range fileNames { + headers := map[string]string{ + object.AttributeFileName: name, + object.AttributeFilePath: "path/to/object/" + name, + } + + createObject(ctx, t, p, owner, cnrID, headers, []byte("some content"), signer) + } + + bearer := apiserver.Bearer{ + Object: []apiserver.Record{ + { + Operation: apiserver.OperationSEARCH, + Action: apiserver.ALLOW, + Filters: []apiserver.Filter{}, + Targets: []apiserver.Target{{Role: apiserver.OTHERS, Keys: []string{}}}, + }, + { + Operation: apiserver.OperationHEAD, + Action: apiserver.ALLOW, + Filters: []apiserver.Filter{}, + Targets: []apiserver.Target{{Role: apiserver.OTHERS, Keys: []string{}}}, + }, + { + Operation: apiserver.OperationGET, + Action: apiserver.ALLOW, + Filters: []apiserver.Filter{}, + Targets: []apiserver.Target{{Role: apiserver.OTHERS, Keys: []string{}}}, + }, + }, + } + bearer.Object = append(bearer.Object, getRestrictBearerRecords()...) + + httpClient := defaultHTTPClient() + bearerTokens := makeAuthTokenRequest(ctx, t, []apiserver.Bearer{bearer}, httpClient, false) + bearerToken := bearerTokens[0] + + search := &apiserver.SearchRequest{ + Filters: []apiserver.SearchFilter{ + { + Key: object.AttributeFileName, + Match: apiserver.MatchCommonPrefix, + Value: "", + }, + }, + Attributes: []string{object.AttributeFileName, object.AttributeFilePath}, + } + + body, err := json.Marshal(search) + require.NoError(t, err) + + var nextCursor string + + for i, name := range fileNames { + t.Run("limit 1, step="+strconv.Itoa(i), func(t *testing.T) { + query := make(url.Values) + query.Add(walletConnectQuery, strconv.FormatBool(useWalletConnect)) + query.Add("limit", "1") + if i > 0 { + query.Add("cursor", nextCursor) + } + + request, err := http.NewRequest(http.MethodPost, testHost+"/v2/objects/"+cnrID.EncodeToString()+"/search?"+query.Encode(), bytes.NewReader(body)) + require.NoError(t, err) + prepareCommonHeaders(request.Header, bearerToken) + + resp := &apiserver.ObjectListV2{} + doRequest(t, httpClient, request, http.StatusOK, resp) + nextCursor = resp.Cursor + + if i < len(fileNames)-1 { + require.NotEmpty(t, nextCursor) + } else { + require.Empty(t, nextCursor) + } + + require.Len(t, resp.Objects, 1) + require.Equal(t, name, resp.Objects[0].Attributes[object.AttributeFileName]) + }) + } + + for i := range 2 { + t.Run("limit 3, step="+strconv.Itoa(i), func(t *testing.T) { + query := make(url.Values) + query.Add(walletConnectQuery, strconv.FormatBool(useWalletConnect)) + query.Add("limit", "3") + if i > 0 { + query.Add("cursor", nextCursor) + } + + request, err := http.NewRequest(http.MethodPost, testHost+"/v2/objects/"+cnrID.EncodeToString()+"/search?"+query.Encode(), bytes.NewReader(body)) + require.NoError(t, err) + prepareCommonHeaders(request.Header, bearerToken) + + resp := &apiserver.ObjectListV2{} + doRequest(t, httpClient, request, http.StatusOK, resp) + nextCursor = resp.Cursor + + if i == 0 { + require.NotEmpty(t, nextCursor) + require.Len(t, resp.Objects, 3) + } else { + require.Empty(t, nextCursor) + require.Len(t, resp.Objects, 1) + } + }) + } +} + func restObjectsSearchV2Filters(ctx context.Context, t *testing.T, p *pool.Pool, owner *user.ID, signer user.Signer) { var ( cnrName = strconv.FormatInt(time.Now().UnixNano(), 16) diff --git a/handlers/apiserver/rest-server.gen.go b/handlers/apiserver/rest-server.gen.go index d118ef4..6daf30a 100644 --- a/handlers/apiserver/rest-server.gen.go +++ b/handlers/apiserver/rest-server.gen.go @@ -2951,161 +2951,161 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "H4sIAAAAAAAC/+x9eXPbthPoV8HwvZkk/en2Eccz/UOWZVuJb8tO0yYvgUhIQk0SDABaVjL+7m9wkAQP", - "SZRjpTnUfxpTOBaLxWIv7H61bOIFxEc+Z9buVyuAFHqIIyr/gpzTN2gq/ukgZlMccEx8a9c6G/yLbA7E", - "73gQcgRu0RRwAhiC1B7XrIqFRbMA8rFVsXzoIWs3Hq1iUfQ5xBQ51i6nIapYzB4jD4pp+DQQTRmn2B9Z", - "Dw8V2esGuiVguINuiAQUHuRzgRDDLQeETXwOsY9oz8kDsgcZ2toByLeJgxwQtwXYmQGEOdxygBC56BJQ", - "qIazQYgHWm5+Cv0Ryk9+iT6HiHEAAQuQjYfYBrIlIEMwmHLEwJASD/Ax0oDFUI0RdBBN4LqUE5hAoHvo", - "Ba74TY7051ajUX316pVVKQCP4ZEPeUjRGzQ9F6ScB/UI3cdIEvAE4cDFNggg5QJa8UkS8xhyIIbTzQYI", - "UkQBJ7fInwn8X9U92ax6FcFRVQQ/D6UxzDMAFhu7vRnDHDcHQ0IfC1ZZkK5Eo4L9vmYITKDrIi7I3ReU", - "lsAlR0aAUOBDju8QOEXk4CppEMP5OUR0moCpBuyo8VIQOmgIQ5dbu0PoMhRv/IAQF0HfepCUiVhAfIYk", - "4zpFE8UeOsTnyOdnb8RXW/0h/vlH/Q/xv2SKIaEe5GJQ7EMJVRYtD5VCBiRWoxAuZ27bNgp4VZIxS0+R", - "x7NozFhVAEmJW227LplUzygeCfTM76oXVt3HLCAMK5DKdTlG/oiPy7buy1/mtz2GjFdPiIOHGDmLGv9V", - "bUcsm+Upq+26Ee+KOTsDkCKAfdsNxQkYI/kXeH11dgrUvnHkiFNbVVeAB4MKQPdiI+Qh+fRXVe1Vted8", - "qog/OxEDjr+cTfRftQVnI9158WLjmUs0nZQZVLSN6fsIQWeFxA2wPyRrCl9T+Hen8P+Qff/O9Fo9wC46", - "hR5apk8fe4hx6AWFnbDP0QjRH420/iPOuSau34G45OW4Euo6h5Rj6AK9X6AKrkJJVsPQdaeAIk4xukMO", - "gFKlEU31ZTOATOiFvlRnJIBA0eavfr9fFuusPd/BNhR3r0BIRl0dIOyPBDZDKjRArLAW6RiLbtC1ZPHD", - "ShYPEYSa1iOyy9gzQhcBdI/sUHwQ+x66HEDZWqBPabTddue4BrqYjxEFUJA+E1qvg3ws8C6PBsDKpkBD", - "Fz1jYIhdjihLTFTIDz1r9x+rfXx89taqWPvd03fWhxwjqFhtx6GIFe26+iEyXkSGHw2knCOyoHxNG7Ks", - "raO/+/7W59tL3xtdfXk1uqKTVqvTdc7Pb7f9i/HtZNg6GX2Z3t3i2zvLND5ZO6cb5OU+p9v95j1HHb6N", - "LifjwHv98vX4pLu1czQNm84dZJOwv+8I6ANKAkQ5VmSbMafl1mpauQpsULG96p+MJS3ulyBQfTIQeEDo", - "deAS6DwVJj/iR6NSdX0iXMrBZiKz+NdZ2BStzZ6F+IxYTAEiY5ssZvIiwlQgVc3KlG3Nhj4YIMGooD1G", - "DuAEQMN2SiiAvmEsNDB/i6bKBEWr+2iIfeRU+3BkVSzJwaxdi8ORMgbnsXWrrNk5JOmuixB0K615qnER", - "TvagC31bDpSeFyanNzd3QJGNmeZDsUgQYp9vtBKRIJZ0SgMbzWnOMBd4aSQsMEAaNka1d5gBdB8gm6t9", - "G0hbpIec1Eb98zUy7HnTqrJTVuUYMWXJNtCOiEZzQM0ird1/PlQsgUOoGxx2+wIdkI4QZ7LvLZrqdpRI", - "C/FZ/6h7eWU9fHj48FAxzoZY1B2iAyFAXffFYmPQonURYFMEOUpo0Hr4MPOwiT/+L0VDa9f6P/XEhVLX", - "d0tdXCDJNNmdqlj31RGpio9VdouDKpG4hm41IGKfqTLFPySI+mphjjy2cFpkEyqZhJ4QUgqnOcrQoxYS", - "gZRES5GCEA80j4y3icUEQlFAEUM+V+KTknAlnWSOs6KJXasz7r3Zb5P24WjUa1+293qjXq99Tzqdw4ur", - "v0dk3P7f661/D94enOCzYHp38vde+GoyOe+/YW/ZYeNzq7F9e4O2N3D49rw+6d52u5tXvZvGhT/y3wTB", - "/nBr8wJ9uX7jQfry+mIw3T76Eg77W9Ob3tndvy8vup//9s/gHX3ztmGPO6gzOW/cjh1Y//fVbaNh8+3T", - "k+7+/cXB2/+N/vwzz1T0ChYY7rOm+vmHV41ZtEOxCNXzh6RIrFUsREgqcEBCnhB0BvEwYeD/RFw10bYS", - "dtrc3tzZaTYaL1uWOFSqoVTjkjbpQzOADNtt27V2tzZa21utxkaz8m2iR9z5NONBE8xkEg16Orge9a8O", - "7s49dnnvHaK3QRgeotfX5JLg7fMutU8EM3ShjTzk83PiYlus5bJ7DgSnvUNUsWGrVWs28/sMU7J3qQOZ", - "XJK5M2miqeBWsKHvI0f/mt7i/hiBIcXId9wpEBxGHkXppdIjgiFGrlNAZZWFslcG00UCxWR27xxyi+7a", - "CM0LL7AE3wayKhmhLw1wAl4emGTquefqGDOeR7r4KoSYeDomTTwzhEJ1P61P2KITVoyjWUtvlV37Aeu+", - "PDq+2Nt7Z7feHrz+Evb/OrEDFux3vcn1PdvfeuedDlq0tRVeh/PW3nqqxTcLFv+hYjH8BVm7rdlCfXlO", - "k74WCriNmqvQclaoA4hDJ/vMPSznhPHii+h92Ghs2IH8H4oCBAbEmRbJWjXQJzp2YGpoAZK5hQwBGAgE", - "USw6aVRNwXP5c0DJHXaUlGGYPSbYdYVkikc+och5UUvB895P/dmPITJ1kCkJgRcyHk0BVB9xnatu5+m9", - "Vj/Xk98B9J1cpz1Jvp3jXGsNYT0BUQM53spMBwJzvujnzJqyrSMLhViVrex1YCLtQQLKMZnIGyRZ/XPx", - "GXOmZbwXQqhjXOCyBg4IBZrtVeSAE+hzGQAkGoANYJMAI6lJoztEp3qMCmBEzQ99ua1ixiERcGF/pOHc", - "zaFBrYpqNGXxKY7XRg6Z0SBxrzRy1B8QjCka/vneGnMesN16fYT5OBzUbOLVfRbYdtVBd3UfkSGrCuKs", - "D1wyqHuQcUTrjWYVUntcb7SqCvCa57xXVI9OBBaU9JXaKlhypyWNgIRIZmxx3CzSs5MYlmQfGaehzUOK", - "KkDtqGzsTuCUaaJ3AMNe6HLoIxIydwommI/To9RAX5DKkIhh1BC+2FnAQqUBCPXdnwJ7LM3GNdBT04CN", - "VnUg2ituo0aGQHySIkpkWU2IQEmvs4jA3D3sjQCjtrF9FE5qagtDhqi2vM/ezcbmNtpubTh2y9lpbmzC", - "QWuwszW04XBno9l4+dLZerm5td2ErXirA2zXoe1W5Q1UDSi+gxzV2N3ovQWgy/98b4m9kLsSUcKsneZw", - "4MakCQDQbIKPEXTMz8ZPNPvd7KZ+u5p6A+LqOaOP8zqcIOhjf7REj/2Eyc/sFf1A8wus51aohxc3wyMW", - "rofai0Z3SrSVitgSHdqKcYZM0KfoDfpSARabTUMXMUH9FMmbH6D468wZCtGz3HqvlwD/mi21WqFdSJkn", - "z0qwg3wuHRVgMDWj527RFLjYv1X2oFSnVWLhaollXU0ZR94SHXq+WPKl2HPoO3VCTbmEOIhFvMsOKRXX", - "rJbvBNp8xCeE3gIPBjXQu9Ttxa1HfHcKAkQFm8uJBodIeQ6PIBvnbrRKrvlRdJLSzYqEjisZmJsXUHxk", - "I8a0ZQY4kEMAQwfzGuhkFhsD74gNlnbcSGyM1U9xBrAtbQ+1Ve772RLbeMbHiLIlOnRcLARrZchyCPAJ", - "V+4aecFFZwJyNCJU+nkG5A6tcrUHSwB/gH3oLtPehSPgIH8qyLx7z5EvJGnp1+oNAUO8AhIhwx4j+1Zc", - "60MxSyXVXnzWovYqcfHXMieeY/t2+lhkOHg4RPJcS2YYe4VoFOrsO2Y8c4yuxGuU0xZCnj+A0XBSzxjD", - "OwSIn1c0pHezWL0YoChMOZbamFCLknBbAZogYgme4diSUw4Eq6ZUBgiEsVeGDBWxTyLRTzOBIXRdLaTl", - "Wcy7q373pGCFxEXSCa28ytJIrKPBMZM3pdIn+Bh5Cr6BEjA1Oa2UkzSWII995E+Xay5VoMg0HhGQcYlq", - "LjJd5Qqbywo6ywtGT7/E6KMpFEbfTME5q8SH0rOrCZzF2obptZiS0LzJk3OnfRsDofIyxAuU3EhrzVJ+", - "475xsHewd3BwkKd+QkFAkaP8lLmeSGgTSoaqUgSd6oRijvKjSEsYq81VitouIxXgEP+ZjNwYIaWQI54y", - "nkjxVIqrjFNs8ww+aiX0rqfRml9Woe0Wq8yJ3jtLX57hyGCGDbETMk68JF7GsCdq33DKlGjldmGBTbTY", - "zrexYq9Bec/hbOdC+TEW+ALKD7TQLVB2qIcCW2QXFjlJuoLQVZyOZBlPGQhDpZuVpf3Xyj2deK+/6qA6", - "FQRmne297nZEC0WecShkxZLCpW511b/snR5+7F5ct48NivWmQ+wqkjU94pHL3PSJF3nClwy/iZf3tF7n", - "aNi0sb7IutyllNBLHWy3wLIs2yaReXP5l8Fj9JskDnnIgOC0MYcfYqE/+dEl9E3crtWowgBX71p1NZPB", - "78aIoqW4nADS2m02WpsVyxNK20iZ8cWGuIjHYt35dV9o5/GRS5yA7fNeUfyQg0oFnpQ/7TF0BbTFdUjk", - "PHqSWyoPRJaEopH1ODNpJwq8zLAESSqiRw1I0QU4iCPqYR8BRkJqo0iAQaKlGZ53KI6ZwF9RaN6BPPP5", - "+dT3dLygdH5IPUqG59qhCylIdiSrZWjFujAO6vHs5fSsP5PFZOnDnGX+th0lLR8qMyOtDHDmD3cSNywf", - "8mQAW9HBWsl882KfjlKrzJCNH3qGgBsQxvDAjUhGbpnqLu2AMAjcaRznmY4VNQjqsntx3b0SGxbv3FX3", - "8qbX6RaS2ImJtTR48idJ1RlKUzCYk2Zulxw1FM18qkxZPX9IVEB7enb9s/SFR2EnUrsripmUpqUDhKzd", - "hnEJRB9QQOzxfhjdbq3NRsUaE494hAZjbB9BNsb+aB8zcZ078WNQD96rOOEr6eDcftls7Oxsb6rYK6eT", - "nYVxQuEInVNsqw9CSXAonEBXNckLcDHUGS65vVkYnpdeWLk+mbWX6zQPOV9zj2RzmCo3SQEWy3VMI7pc", - "n8xelOk0y30tBqgke5cdu2hh2W3IYmwuxjMLLmIyaqg9yFCxx1xZ2kjyfkgfqOwpSmJJ/6twbnFVnEM+", - "tnatujetq5HqAqM1fs+TJ93xl/yhShYxVxPSzVJzFtwqxXGWsyJiF2/OTevR27M0bp4wsD6ta0LHwUpE", - "OzdaqSQPufWXj7k3UkcY883GaTGxny0k8ycMnopA+lD5b47MklFEK488/IYHGNGP0R1SuKvD0HVBAKfS", - "GscU7yzD/+eGFqrhFsbZ6gMaNa/MHKl4BecG1EKgijRLcwUl76JU/OKMlyopdKaCFw0gZ5+t+bGK2g6a", - "OVj6q7Je/Pd3iWaHGV6pYgOfHrqNw4F38jZk8O3o5Ijcvg1x68t+6N+f9L/shTy8OLk5HvDjDXvf32HF", - "0DHioTrhY0Q1oHPi+GJUlzy0GQnh8VF80cRzQvgSAiq67NYk9IOQkB1SRgqMCzdRtivGIeXSSuCjew4G", - "Uh0UKlhh+Pe3UeRNq+TbEsnxFOSzaW/WO7wykaPaIjLX3GdEdUZPyRbHdBpUUi6ec6hNLQXxnH47lsDc", - "aeJDmjW1Zvn5aZ8P0lecAzl8UQhMcuUsDi8FM//LepbM53zJU2EZLRI991GRoYkPOnKLv0FTCah+Xaxd", - "ztgH1/2D6o6O9pMt5G8+kb8jL+DT0gBnwL2BLnaSUOAZoYShmwyrvri4OMD0ZBojYBc8E2dXrebZrKDT", - "eKDIZ2nOVXIRPf9upctYKfDKFZkO9MXMSNXHCRiGVL6b1udSZQ7E/ugxvj75FrTI0yc2q5q4+77pBhjG", - "ySssb3qA3Uh5i+VS613rVegc3oROZ+/ub7znwbf37g/jD1wk8g+N3BzzZO9l3mPHYxbeAYkja0Y6wWdm", - "aIE0cEbJHTOWTuONvYw6DmQY2sBF6lWxYWnXdvWUaV/67Y667X2rIl+HVqz97nG335Um2fZl58iqWJft", - "08Nu9P+j9tVRoa30nDAeW5SUtfRpXI5LuvDmbErRTmj/Xf4ZN2DYH7nIRLWM18kcydW84M2dmzhXw9yj", - "olo9GFCUPGTai1MgcxOTUucKS3HDB2OZJefvy/YL5SuNhmR9JnzJrIX7TNyi3J3E1Q8IZVdxtLLOiuur", - "7qU4DTLCy6pEm1Sx3nTfXRWeBPn+OTdVElPKEJOxsiomp4Co0odl+9+7N687F3Qbbb58d79zxQZXpxvD", - "09EXSq5f39y+296+eDX5fP/Obv9rq5dWA2s3OsZL+79V9/m7dSPaZPdGdizCvAq/neUnVL9qf428G7Hv", - "zNC8it17kRvoSq6h+zmUGW7T1q+q1olKZkTQ487HgoJcTp3y0mV8RKGHKLZjp5hsfxp6h/1K8u9u8u9j", - "4/txN4pJxL5O0vNPtfX/WltbFSD/B6rND4ufUxu+wLl+QHOj2Gyt2GwGkCv97CxvB44jQebvWod4HvHP", - "KRri+4zwUg/U18SyqeKaTGGnBAVwOIrFoBwFDGettqdjRPV5AS/jHYQMePAee6FUMkuxt9QRWMTkIpBm", - "b9FJRJ6FR8mLfaImGytAkPHplPDU11PCz1UGg+hLZp8SMjb/6Bp/HJu/HBd7dhXEWuL5NopLycYmtR1E", - "LokPlZ+HLOG8TFexJuEK/KgcJHG2LnGZIWiPk9jsHCGb+bFStJxkm459DRUQYUj9S2CyAoTOodPPpM7A", - "jIiXRJr4gY/bQoeOzjU3OzRLN0hlSjMolKmfk7jA1I7Hv+ad1xmAo5ZFMGo5Kp81AUYxsSpEQ2gMsUQL", - "OjodUfSg8RlTgeu2C5nM6gUVqZGh8eaJJQrJcyEKyS4v8je2PI+NVtOxt7aH9raz03S2dpoQvdxubMEd", - "1GigBmoM4GDbHkBna3sbvmptwq3Wy42NV5svt+Crl3AHbezIG0uLyVLwKrrL0/LmQmKkWiScG94n2hRc", - "qIJeZP/CXRCC3Ww6yfhsPEjZGLry+ZgQCJ8PU8+tCC1ONvMim3AoziXjvnuz1x51uu0G7LRH+912F7dH", - "o32dW6ajc8v0Ou3eRRv3Op32iW7Xi9vt7Zntrs12h6l291G73qAzvm3utN529w/C9ufPGz5j9PAMHjVO", - "3zT+Hn852BmE/3t3OLrowb1R18pjzUyG0wmg39t73Qleh6+/bLbenHmHJ1d+d8zeHPbffg7hX63jz9uH", - "4/HZ5hCevbs93m8MX729/St899r9vAn32mP/sH2CexevRwd2rzsaX+xtuZ832q//Prthk54/sZu9w7F7", - "8fK0cz3e3D8427hu93vdTrt70b74888EuHnpkPxZ9oI4I86j4v8k7RTG/0X5o2ZG/yVd8+d/Gqj4vigB", - "TyQW6N6GiaTwor7RWkHGDI/oQD8Vk98HOp+kfGyfqgaRmDKkspWFImd56AstrACSh4rFkB1SzKcqPb/c", - "CvV6oR3y8YKsTZEdPTJCS4utUvAj4wg4iR9FPFN9nwF14c8sMSAmJhR/idVQzWcC/AZNVcIIcovRXPhs", - "2UQBpAze1bhQgwRdP+hmM6FQI+SnFzjDhVEIl92rPmif9+Se6HIF0qemtyrBTg1cy/e/0pIpekTmTWlm", - "gzY3MaleS0mrNvThCJlZY2Bat+OYS44eQyJHSKULuWvUms1aU5sifBhga9faqDVqTWl+5GNJAfW7Zh3a", - "Ngl9jv1RfaBS0dW/ag/Yg2hTeDEeIi56AN1DXnFRTg1d5EGPkcqFGNOz1NAPEY+S31VSVWT+WVCoJD3D", - "rKotcSq78sVKPmRqQrQajUw+Xm0nFHDV/2XZ9LPzOFS01IIEvXsJFrNYe6Js0GLOzSdcTDravnBJTsQb", - "UuxHGe5Y6HmQThUNxEQUr1kSrbytpeM4RTRn6oefg3AypqyzyzL7eZT8vnQa5RPEx8RZXQrmh+xeir8l", - "F9FcetG+SW7+2yKrYgVEaexp5GiszCVl+Z4X9BzwPE3FL5QoIXMXMTxS+QVKFveJMyAvVdEpJyXJm9bF", - "Q8SxJ4+xjIldPP2x7lJcuKfZaBSFS+VeTBDqGdkloeuCkMnH11QlH1CZBjADI8jRYqAOCBV7XBXKOluu", - "pNAHhUbE+B5xpksx21IKuk6xmVfN8+zXEN+kxhkl0Uxv88M33nflnBQpta4M8JnqVfItXpQNNFH7BhkR", - "FSNW+9WvS0nsqYUbbnE9AJMeXoG7EfKr+mNVyPBVTeuKLCyTd9cHcfpWLfClOZSYOJXnNcetitafNKln", - "SpaJc1y2R1yYbZlOugzZakU6EyFPQ8i/DgVnaFYt2lxqGTFPXIwxwf3eElY6v2PhIT3GRiwBW1I2Vvmb", - "jOKPmVJ7SZjxt4gKYwT80BuoTFGGhssJYLc4AAOZL04FKErVmQCbuK5MF6eqaYSuTEsyE8zhkKEZpQAb", - "FcvDPvZCT/57sWyRgMvy8CrfwSw4XOxhPkew0cZ5+VfDBKxZANhiJparE1Mq76cMBS84zJ10wtrVMqWl", - "QF+GD9UWap5uLkFvGaaUYOc8VNH0a4Umg6lUVNNPIyvkzv+5NnhK9SHuqQ7/CDOOaDbxLPbB6ekVYIje", - "YXtm2VLxvyqzSYCqI5cMpIPzqfSMx3GCOCfvPG4QZa9epEQ0vwWkbEDcXIB0MtKnK5p2TGy4uKzU92dk", - "Yr6Nlc6nkKYqETlqws2VTnhKOBiS0Hfk8rYarZWjcwQ5msCpnm+1qztUcwGOPUTCrEzcUW8MfDQxU2Um", - "Nt/5+pvhX6tYQajt8wFFtjgMkViW4cjhmiH/tgy5sWKG3IuStyUJYHWW6FQhkZ9Thlyz3t+H9dbANUPg", - "/OyqDzwpTBvPx2CamEuz6Jz+Xv9qRBM/KAbjIlUULc209+X3x/NtM2p5Gf77w9noliKQbMRZAYkkBVCB", - "xL1OJbBmUGsG9Z8zKHXoDeY0mAIssV5o9DtE/IkYxKqsTOXEmF/WyFSwkeUtTIeIK3pYydb+jtbz9O1b", - "RzoT6MKzJUPrfqTzJXOYzj1W6qFjOlvOL37E5JIfcc5Wtru/hxE4LLIBh095eH5w6fVJlP9ZJ1qlZjTD", - "22urVvqXk6ElgGHgQI790VqQ/mEF6c3Gq5XOlq3u4ehMh0kMlkHBv51gfzXrplpkTECKLyhJZoR4RoT5", - "GiUaSsdrz7cHm6LNWfSaYaX8OU6HlDfrCszwMZIFhJDPq/uYBYTJNDhAsRIAma77LssTGknWaqAvCMuD", - "t6o24ICSCVM2YYdMfKO4gxhjiF0EsM84Ep+HgI1VCTnMAVGhkwEczTQTRwOmrMPJ879mBfAK6FeARDjo", - "X153K6Av/z2tgCliFfCuAt51ryrgnUzwVjKMuAixcTudbkmj7uyNtTDyh9gc8SrjFEFvpbx08/sDYfK7", - "tJzyVZCd+eTlH1nv3Xxk8s+Hh5xoqUlnYJYY7e0bLzJAb78G2i6LAkIYsOW7VhWF+iym3+T16Ke/ksQz", - "1T8+ybemUV9BgSe9k67KXTKADDkgPgQqplXNGj1skfUx5eshm4fQjY+QfLpkQ18XJYrK5+jXr7oM2Xsr", - "wmU0npz3vQUYkjkjauDcRZCpgqqf9BHOqlCD6UfsGFzoE2if9yQJCLDLMCMh76650S/EjcSGzmJFq5bg", - "vp9A9ZQMRqjp4LkgrxcrZTYZtXjRycwqyt/7cP72hqsR4h8H04/xjmZlP/HDGzTV/7qB7pJC4N7UTMCw", - "0l3VoJZtegPd1TFntpYV17LiU7LyA+w7klGPEDdyhz6PMlqLnxK2LHk81NXrsZ38IisveoQK6UFWT41r", - "9GCmgK2I0SEdYE4hncoWUd36KJvJryBRGgwvz+IeJ2GuWd1aEF0LoosEUUN2XAWPCpkq+C3ZZDzVI8XS", - "H/xE//bCq65pXo0SacxyshoFo6wVvtdL16UqOlMLK1P97G/zFvtSozr0TKX4KPUiZvH+/T40b2TLX56h", - "qUuLnYe/95ui0iHtjzRH/JCu4sczgFRphILzb9RNElevqnj95MkAStXkKnCJ6ow3ZKgBi+vxsF/vLfS1", - "WWxc7EW5Bx9RsrI0i8nHEc/k06doojmMguA72/N+sMDi3/hh5ima/FYUkFOq266byuRK5RMhCF5fnZ1W", - "ldTHZXbJQHCkpHJJADFlFTAZI6o8O7doKvQdafTwkzIV8tER9B35g+qqWyVt5Ofae/+dTgcHXUZ0yQuk", - "9C3omlU8/Cr49PHjaffs4Orjx+5f573Ldr93dvqxe37WOfoEqpGOplV9dB9gnYtOJuJROtdgGj1xeO/3", - "06U12JiErhNrZ3goE9UJ1Ayhh10MaVKkRSWrU+OyKePIEwPKKtmm1KwTcEttEAic7YJ/VNcrrU+qdJwf", - "nj+mRnajWYXUHov/+4h7MKh5zovae7+XWDAy1UPMwiJSYR2CT39VT+Xw3Rhf1T8+xYaxAXLJpCZricxI", - "GNQ2a7UtkQThatZuRemTLg86Gxsbr3SlmxroKlMKk5Tw3mo1WpvVZqu60ey3Nna3Xu1uvfr7vQWoEJeY", - "OBHKKgcZBx6RhiEyBKKTqqHTqeWGaW6pYaqNnd1GIz2WmAGcnwDig31kI5m7YaNZkQNWwDlUxoE+9lDt", - "/fv3fo8n5kix+Urbj0tNKcIR5yMyBDBt5ZpD4eb5yrwvi2o6zdmm3CZr9H7bpkFxf0fpnpOqZ8Z2Sits", - "OVzoSkjahjrvrC9CxBJoMAtjPhoRji58C0KfYzePBLGmQ/KMJQ1nEPVGo8HShLcFPOxL45Cm1/Hmlpdu", - "0gJjEur8mJtJe7AqQgRPSodG0eAFmQXLqAyznST5nCbS3BtrAjUAekPgE20FZkDjV9EjZmCIkSttelMg", - "K9CpD+qqi3AMbRsFHDkVgO7Fv1QyNl+V5RIst2ZWw1TpgApMvQ/fQQs5IHS2rjRHHfkl7T+PMBbPUGLm", - "aicLXTozzYOnaPJTuKl/XAF4QRdZIWXtfnpi95PQuPPO9lZju6zn6lJsy9pFnwpfb25/fxDkPsgikwxy", - "zIYYDlz0k0UMKH2AI8bl788nlINPsfxniDUvEq/+EFPGQbPRaMgTqYrkqPxrLBdxAJ7Pc+erztJpr+ru", - "YSaAEzh1EMMUOS9+7JAFVZyyOOQu7zbFMX80g+/Yp1TAQu6S+zkiFH4WM8/68nqSy2sdPvHfhE98O8P+", - "Dhz7CbliCcfFmjeunSDf5JFf8GplgQL6Xz5PWauW6xc2a81yrVmu5t3iE1zhP7LytlDpWnP276ZOrbWp", - "tTa1yleR308bWTONtZ5RTs9QqnSZ2mg6+FeVYV6yeoeRytSZUdfOJLknr223olI3P2vQ3aLQZbXHZ3GY", - "60+TjntJtrau/vJU1V+eJMGYWeG9MBhb/6TCYaT90Ih9WGnCMXUWZhWkOdaFWr5HYPjKJLEyotGHdMIo", - "cwuEAJRU3Z8fMM4yGz3vgkqbwOanol5LO+uc1U8WhBTT+SXyyF3sBUke3Bk5j0tkslC0qd+grVX4r4XW", - "JnVBSv4uLllAEXTETetADmddZtKKWy24WuNwPuzz7U1r2fv1GPkjPhZsXcwO5DTzYXBlj5IwNMvAcALv", - "QRRwwfAXBJ5jHwymMuBC1tXVgezYt93QSWJ0Y+PGe783NK1XchDMwEgGhlLl40vKlTBtwlAzToj/jC8Y", - "fgZCPHhf1cNUxZzFwsZm89XmRmPTEDi2WputnZ200NFYfck543DOf6D2m1ztWRvHYBpXJf+2lGsllcwn", - "yiu+TuW0hH1AxRPPfbVX8pnwCp5wrZ/KLcb+al7OZZVO891SRT5O86fAJt4A++oFhQxNDxCtu2SCKLAh", - "Q5UkDt8xXjokZnX5sOEAu+gUeuhTKhhFv5OQj9DMAJE5veSrjm6/ftRt78sYERu6LtNZfuNpn8/NVfsi", - "fiX3yZejY18V3hFjRdqnfJqX2Laez7WxvaiVeKtVFcuRn5csXLvabTmHfLz8tmR6Pc226NafhvEE33Fn", - "tMnyke9hvNDlOICU14VYWBViZZobBFScaI4Vj9Py08/2Rib+Ej8LX7+a+VlfzZSR9iLhTooRrW92M9y0", - "Fliff2hHgxBBar/Nc/2Fe/WLegpu5MP52EoRv9ocQG6PpYUoF3Oiwl+Rizz5NFS1xEPNXKNH/Iwhpwbe", - "kTB69M7hLQKf7JAyQj/pZtICFVB0h0nIYl1cgCOY+EDdCyoKhSOPzbJZqEGLFXOriK8vcEBEduCn9T58", - "Z+fDZaww/5DOh5vW2v3w9O6HzMTlbk5E7yIuF1JXyI6cB7v1ukts6I4J47s7jVcN6+HDw/8PAAD//6Z0", - "shCS9gAA", + "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", + "ErYwkvYAAA==", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/spec/rest.yaml b/spec/rest.yaml index 251f1c5..4d823f4 100644 --- a/spec/rest.yaml +++ b/spec/rest.yaml @@ -3,7 +3,7 @@ openapi: 3.0.1 info: title: REST API NeoFS description: REST API for native integration with NeoFS. Using this API you can interact with NeoFS nodes and manage containers and objects. - version: v0.11.1 + version: v0.12.0 servers: - url: http://localhost:8090