diff --git a/api/client/client.gen.go b/api/client/client.gen.go index ddfdc5526..01c88ec5c 100644 --- a/api/client/client.gen.go +++ b/api/client/client.gen.go @@ -90,6 +90,27 @@ func WithRequestEditorFn(fn RequestEditorFn) ClientOption { // The interface specification for the client above. type ClientInterface interface { + // GetAssetScanEstimations request + GetAssetScanEstimations(ctx context.Context, params *GetAssetScanEstimationsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + + // PostAssetScanEstimations request with any body + PostAssetScanEstimationsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + PostAssetScanEstimations(ctx context.Context, body PostAssetScanEstimationsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // GetAssetScanEstimationsAssetScanEstimationID request + GetAssetScanEstimationsAssetScanEstimationID(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *GetAssetScanEstimationsAssetScanEstimationIDParams, reqEditors ...RequestEditorFn) (*http.Response, error) + + // PatchAssetScanEstimationsAssetScanEstimationID request with any body + PatchAssetScanEstimationsAssetScanEstimationIDWithBody(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *PatchAssetScanEstimationsAssetScanEstimationIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + PatchAssetScanEstimationsAssetScanEstimationID(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *PatchAssetScanEstimationsAssetScanEstimationIDParams, body PatchAssetScanEstimationsAssetScanEstimationIDJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // PutAssetScanEstimationsAssetScanEstimationID request with any body + PutAssetScanEstimationsAssetScanEstimationIDWithBody(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *PutAssetScanEstimationsAssetScanEstimationIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + PutAssetScanEstimationsAssetScanEstimationID(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *PutAssetScanEstimationsAssetScanEstimationIDParams, body PutAssetScanEstimationsAssetScanEstimationIDJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetAssetScans request GetAssetScans(ctx context.Context, params *GetAssetScansParams, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -186,6 +207,30 @@ type ClientInterface interface { PutScanConfigsScanConfigID(ctx context.Context, scanConfigID ScanConfigID, params *PutScanConfigsScanConfigIDParams, body PutScanConfigsScanConfigIDJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetScanEstimations request + GetScanEstimations(ctx context.Context, params *GetScanEstimationsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + + // PostScanEstimations request with any body + PostScanEstimationsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + PostScanEstimations(ctx context.Context, body PostScanEstimationsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // DeleteScanEstimationsScanEstimationID request + DeleteScanEstimationsScanEstimationID(ctx context.Context, scanEstimationID ScanEstimationID, reqEditors ...RequestEditorFn) (*http.Response, error) + + // GetScanEstimationsScanEstimationID request + GetScanEstimationsScanEstimationID(ctx context.Context, scanEstimationID ScanEstimationID, params *GetScanEstimationsScanEstimationIDParams, reqEditors ...RequestEditorFn) (*http.Response, error) + + // PatchScanEstimationsScanEstimationID request with any body + PatchScanEstimationsScanEstimationIDWithBody(ctx context.Context, scanEstimationID ScanEstimationID, params *PatchScanEstimationsScanEstimationIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + PatchScanEstimationsScanEstimationID(ctx context.Context, scanEstimationID ScanEstimationID, params *PatchScanEstimationsScanEstimationIDParams, body PatchScanEstimationsScanEstimationIDJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // PutScanEstimationsScanEstimationID request with any body + PutScanEstimationsScanEstimationIDWithBody(ctx context.Context, scanEstimationID ScanEstimationID, params *PutScanEstimationsScanEstimationIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + PutScanEstimationsScanEstimationID(ctx context.Context, scanEstimationID ScanEstimationID, params *PutScanEstimationsScanEstimationIDParams, body PutScanEstimationsScanEstimationIDJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetScans request GetScans(ctx context.Context, params *GetScansParams, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -211,6 +256,102 @@ type ClientInterface interface { PutScansScanID(ctx context.Context, scanID ScanID, params *PutScansScanIDParams, body PutScansScanIDJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) } +func (c *Client) GetAssetScanEstimations(ctx context.Context, params *GetAssetScanEstimationsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetAssetScanEstimationsRequest(c.Server, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) PostAssetScanEstimationsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPostAssetScanEstimationsRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) PostAssetScanEstimations(ctx context.Context, body PostAssetScanEstimationsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPostAssetScanEstimationsRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) GetAssetScanEstimationsAssetScanEstimationID(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *GetAssetScanEstimationsAssetScanEstimationIDParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetAssetScanEstimationsAssetScanEstimationIDRequest(c.Server, assetScanEstimationID, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) PatchAssetScanEstimationsAssetScanEstimationIDWithBody(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *PatchAssetScanEstimationsAssetScanEstimationIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPatchAssetScanEstimationsAssetScanEstimationIDRequestWithBody(c.Server, assetScanEstimationID, params, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) PatchAssetScanEstimationsAssetScanEstimationID(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *PatchAssetScanEstimationsAssetScanEstimationIDParams, body PatchAssetScanEstimationsAssetScanEstimationIDJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPatchAssetScanEstimationsAssetScanEstimationIDRequest(c.Server, assetScanEstimationID, params, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) PutAssetScanEstimationsAssetScanEstimationIDWithBody(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *PutAssetScanEstimationsAssetScanEstimationIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPutAssetScanEstimationsAssetScanEstimationIDRequestWithBody(c.Server, assetScanEstimationID, params, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) PutAssetScanEstimationsAssetScanEstimationID(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *PutAssetScanEstimationsAssetScanEstimationIDParams, body PutAssetScanEstimationsAssetScanEstimationIDJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPutAssetScanEstimationsAssetScanEstimationIDRequest(c.Server, assetScanEstimationID, params, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + func (c *Client) GetAssetScans(ctx context.Context, params *GetAssetScansParams, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewGetAssetScansRequest(c.Server, params) if err != nil { @@ -643,6 +784,114 @@ func (c *Client) PutScanConfigsScanConfigID(ctx context.Context, scanConfigID Sc return c.Client.Do(req) } +func (c *Client) GetScanEstimations(ctx context.Context, params *GetScanEstimationsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetScanEstimationsRequest(c.Server, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) PostScanEstimationsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPostScanEstimationsRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) PostScanEstimations(ctx context.Context, body PostScanEstimationsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPostScanEstimationsRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) DeleteScanEstimationsScanEstimationID(ctx context.Context, scanEstimationID ScanEstimationID, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewDeleteScanEstimationsScanEstimationIDRequest(c.Server, scanEstimationID) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) GetScanEstimationsScanEstimationID(ctx context.Context, scanEstimationID ScanEstimationID, params *GetScanEstimationsScanEstimationIDParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetScanEstimationsScanEstimationIDRequest(c.Server, scanEstimationID, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) PatchScanEstimationsScanEstimationIDWithBody(ctx context.Context, scanEstimationID ScanEstimationID, params *PatchScanEstimationsScanEstimationIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPatchScanEstimationsScanEstimationIDRequestWithBody(c.Server, scanEstimationID, params, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) PatchScanEstimationsScanEstimationID(ctx context.Context, scanEstimationID ScanEstimationID, params *PatchScanEstimationsScanEstimationIDParams, body PatchScanEstimationsScanEstimationIDJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPatchScanEstimationsScanEstimationIDRequest(c.Server, scanEstimationID, params, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) PutScanEstimationsScanEstimationIDWithBody(ctx context.Context, scanEstimationID ScanEstimationID, params *PutScanEstimationsScanEstimationIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPutScanEstimationsScanEstimationIDRequestWithBody(c.Server, scanEstimationID, params, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) PutScanEstimationsScanEstimationID(ctx context.Context, scanEstimationID ScanEstimationID, params *PutScanEstimationsScanEstimationIDParams, body PutScanEstimationsScanEstimationIDJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPutScanEstimationsScanEstimationIDRequest(c.Server, scanEstimationID, params, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + func (c *Client) GetScans(ctx context.Context, params *GetScansParams, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewGetScansRequest(c.Server, params) if err != nil { @@ -751,8 +1000,8 @@ func (c *Client) PutScansScanID(ctx context.Context, scanID ScanID, params *PutS return c.Client.Do(req) } -// NewGetAssetScansRequest generates requests for GetAssetScans -func NewGetAssetScansRequest(server string, params *GetAssetScansParams) (*http.Request, error) { +// NewGetAssetScanEstimationsRequest generates requests for GetAssetScanEstimations +func NewGetAssetScanEstimationsRequest(server string, params *GetAssetScanEstimationsParams) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -760,7 +1009,7 @@ func NewGetAssetScansRequest(server string, params *GetAssetScansParams) (*http. return nil, err } - operationPath := fmt.Sprintf("/assetScans") + operationPath := fmt.Sprintf("/assetScanEstimations") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -894,19 +1143,19 @@ func NewGetAssetScansRequest(server string, params *GetAssetScansParams) (*http. return req, nil } -// NewPostAssetScansRequest calls the generic PostAssetScans builder with application/json body -func NewPostAssetScansRequest(server string, body PostAssetScansJSONRequestBody) (*http.Request, error) { +// NewPostAssetScanEstimationsRequest calls the generic PostAssetScanEstimations builder with application/json body +func NewPostAssetScanEstimationsRequest(server string, body PostAssetScanEstimationsJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewPostAssetScansRequestWithBody(server, "application/json", bodyReader) + return NewPostAssetScanEstimationsRequestWithBody(server, "application/json", bodyReader) } -// NewPostAssetScansRequestWithBody generates requests for PostAssetScans with any type of body -func NewPostAssetScansRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { +// NewPostAssetScanEstimationsRequestWithBody generates requests for PostAssetScanEstimations with any type of body +func NewPostAssetScanEstimationsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -914,7 +1163,7 @@ func NewPostAssetScansRequestWithBody(server string, contentType string, body io return nil, err } - operationPath := fmt.Sprintf("/assetScans") + operationPath := fmt.Sprintf("/assetScanEstimations") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -934,13 +1183,13 @@ func NewPostAssetScansRequestWithBody(server string, contentType string, body io return req, nil } -// NewGetAssetScansAssetScanIDRequest generates requests for GetAssetScansAssetScanID -func NewGetAssetScansAssetScanIDRequest(server string, assetScanID AssetScanID, params *GetAssetScansAssetScanIDParams) (*http.Request, error) { +// NewGetAssetScanEstimationsAssetScanEstimationIDRequest generates requests for GetAssetScanEstimationsAssetScanEstimationID +func NewGetAssetScanEstimationsAssetScanEstimationIDRequest(server string, assetScanEstimationID AssetScanEstimationID, params *GetAssetScanEstimationsAssetScanEstimationIDParams) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetScanID", runtime.ParamLocationPath, assetScanID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetScanEstimationID", runtime.ParamLocationPath, assetScanEstimationID) if err != nil { return nil, err } @@ -950,7 +1199,7 @@ func NewGetAssetScansAssetScanIDRequest(server string, assetScanID AssetScanID, return nil, err } - operationPath := fmt.Sprintf("/assetScans/%s", pathParam0) + operationPath := fmt.Sprintf("/assetScanEstimations/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -1004,24 +1253,24 @@ func NewGetAssetScansAssetScanIDRequest(server string, assetScanID AssetScanID, return req, nil } -// NewPatchAssetScansAssetScanIDRequest calls the generic PatchAssetScansAssetScanID builder with application/json body -func NewPatchAssetScansAssetScanIDRequest(server string, assetScanID AssetScanID, params *PatchAssetScansAssetScanIDParams, body PatchAssetScansAssetScanIDJSONRequestBody) (*http.Request, error) { +// NewPatchAssetScanEstimationsAssetScanEstimationIDRequest calls the generic PatchAssetScanEstimationsAssetScanEstimationID builder with application/json body +func NewPatchAssetScanEstimationsAssetScanEstimationIDRequest(server string, assetScanEstimationID AssetScanEstimationID, params *PatchAssetScanEstimationsAssetScanEstimationIDParams, body PatchAssetScanEstimationsAssetScanEstimationIDJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewPatchAssetScansAssetScanIDRequestWithBody(server, assetScanID, params, "application/json", bodyReader) + return NewPatchAssetScanEstimationsAssetScanEstimationIDRequestWithBody(server, assetScanEstimationID, params, "application/json", bodyReader) } -// NewPatchAssetScansAssetScanIDRequestWithBody generates requests for PatchAssetScansAssetScanID with any type of body -func NewPatchAssetScansAssetScanIDRequestWithBody(server string, assetScanID AssetScanID, params *PatchAssetScansAssetScanIDParams, contentType string, body io.Reader) (*http.Request, error) { +// NewPatchAssetScanEstimationsAssetScanEstimationIDRequestWithBody generates requests for PatchAssetScanEstimationsAssetScanEstimationID with any type of body +func NewPatchAssetScanEstimationsAssetScanEstimationIDRequestWithBody(server string, assetScanEstimationID AssetScanEstimationID, params *PatchAssetScanEstimationsAssetScanEstimationIDParams, contentType string, body io.Reader) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetScanID", runtime.ParamLocationPath, assetScanID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetScanEstimationID", runtime.ParamLocationPath, assetScanEstimationID) if err != nil { return nil, err } @@ -1031,7 +1280,7 @@ func NewPatchAssetScansAssetScanIDRequestWithBody(server string, assetScanID Ass return nil, err } - operationPath := fmt.Sprintf("/assetScans/%s", pathParam0) + operationPath := fmt.Sprintf("/assetScanEstimations/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -1062,24 +1311,24 @@ func NewPatchAssetScansAssetScanIDRequestWithBody(server string, assetScanID Ass return req, nil } -// NewPutAssetScansAssetScanIDRequest calls the generic PutAssetScansAssetScanID builder with application/json body -func NewPutAssetScansAssetScanIDRequest(server string, assetScanID AssetScanID, params *PutAssetScansAssetScanIDParams, body PutAssetScansAssetScanIDJSONRequestBody) (*http.Request, error) { +// NewPutAssetScanEstimationsAssetScanEstimationIDRequest calls the generic PutAssetScanEstimationsAssetScanEstimationID builder with application/json body +func NewPutAssetScanEstimationsAssetScanEstimationIDRequest(server string, assetScanEstimationID AssetScanEstimationID, params *PutAssetScanEstimationsAssetScanEstimationIDParams, body PutAssetScanEstimationsAssetScanEstimationIDJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewPutAssetScansAssetScanIDRequestWithBody(server, assetScanID, params, "application/json", bodyReader) + return NewPutAssetScanEstimationsAssetScanEstimationIDRequestWithBody(server, assetScanEstimationID, params, "application/json", bodyReader) } -// NewPutAssetScansAssetScanIDRequestWithBody generates requests for PutAssetScansAssetScanID with any type of body -func NewPutAssetScansAssetScanIDRequestWithBody(server string, assetScanID AssetScanID, params *PutAssetScansAssetScanIDParams, contentType string, body io.Reader) (*http.Request, error) { +// NewPutAssetScanEstimationsAssetScanEstimationIDRequestWithBody generates requests for PutAssetScanEstimationsAssetScanEstimationID with any type of body +func NewPutAssetScanEstimationsAssetScanEstimationIDRequestWithBody(server string, assetScanEstimationID AssetScanEstimationID, params *PutAssetScanEstimationsAssetScanEstimationIDParams, contentType string, body io.Reader) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetScanID", runtime.ParamLocationPath, assetScanID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetScanEstimationID", runtime.ParamLocationPath, assetScanEstimationID) if err != nil { return nil, err } @@ -1089,7 +1338,7 @@ func NewPutAssetScansAssetScanIDRequestWithBody(server string, assetScanID Asset return nil, err } - operationPath := fmt.Sprintf("/assetScans/%s", pathParam0) + operationPath := fmt.Sprintf("/assetScanEstimations/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -1120,8 +1369,8 @@ func NewPutAssetScansAssetScanIDRequestWithBody(server string, assetScanID Asset return req, nil } -// NewGetAssetsRequest generates requests for GetAssets -func NewGetAssetsRequest(server string, params *GetAssetsParams) (*http.Request, error) { +// NewGetAssetScansRequest generates requests for GetAssetScans +func NewGetAssetScansRequest(server string, params *GetAssetScansParams) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -1129,7 +1378,7 @@ func NewGetAssetsRequest(server string, params *GetAssetsParams) (*http.Request, return nil, err } - operationPath := fmt.Sprintf("/assets") + operationPath := fmt.Sprintf("/assetScans") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -1263,19 +1512,19 @@ func NewGetAssetsRequest(server string, params *GetAssetsParams) (*http.Request, return req, nil } -// NewPostAssetsRequest calls the generic PostAssets builder with application/json body -func NewPostAssetsRequest(server string, body PostAssetsJSONRequestBody) (*http.Request, error) { +// NewPostAssetScansRequest calls the generic PostAssetScans builder with application/json body +func NewPostAssetScansRequest(server string, body PostAssetScansJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewPostAssetsRequestWithBody(server, "application/json", bodyReader) + return NewPostAssetScansRequestWithBody(server, "application/json", bodyReader) } -// NewPostAssetsRequestWithBody generates requests for PostAssets with any type of body -func NewPostAssetsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { +// NewPostAssetScansRequestWithBody generates requests for PostAssetScans with any type of body +func NewPostAssetScansRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -1283,7 +1532,7 @@ func NewPostAssetsRequestWithBody(server string, contentType string, body io.Rea return nil, err } - operationPath := fmt.Sprintf("/assets") + operationPath := fmt.Sprintf("/assetScans") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -1303,13 +1552,13 @@ func NewPostAssetsRequestWithBody(server string, contentType string, body io.Rea return req, nil } -// NewDeleteAssetsAssetIDRequest generates requests for DeleteAssetsAssetID -func NewDeleteAssetsAssetIDRequest(server string, assetID AssetID) (*http.Request, error) { +// NewGetAssetScansAssetScanIDRequest generates requests for GetAssetScansAssetScanID +func NewGetAssetScansAssetScanIDRequest(server string, assetScanID AssetScanID, params *GetAssetScansAssetScanIDParams) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetID", runtime.ParamLocationPath, assetID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetScanID", runtime.ParamLocationPath, assetScanID) if err != nil { return nil, err } @@ -1319,7 +1568,7 @@ func NewDeleteAssetsAssetIDRequest(server string, assetID AssetID) (*http.Reques return nil, err } - operationPath := fmt.Sprintf("/assets/%s", pathParam0) + operationPath := fmt.Sprintf("/assetScans/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -1329,43 +1578,9 @@ func NewDeleteAssetsAssetIDRequest(server string, assetID AssetID) (*http.Reques return nil, err } - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - -// NewGetAssetsAssetIDRequest generates requests for GetAssetsAssetID -func NewGetAssetsAssetIDRequest(server string, assetID AssetID, params *GetAssetsAssetIDParams) (*http.Request, error) { - var err error + queryValues := queryURL.Query() - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetID", runtime.ParamLocationPath, assetID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/assets/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Select != nil { + if params.Select != nil { if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$select", runtime.ParamLocationQuery, *params.Select); err != nil { return nil, err @@ -1407,24 +1622,24 @@ func NewGetAssetsAssetIDRequest(server string, assetID AssetID, params *GetAsset return req, nil } -// NewPatchAssetsAssetIDRequest calls the generic PatchAssetsAssetID builder with application/json body -func NewPatchAssetsAssetIDRequest(server string, assetID AssetID, params *PatchAssetsAssetIDParams, body PatchAssetsAssetIDJSONRequestBody) (*http.Request, error) { +// NewPatchAssetScansAssetScanIDRequest calls the generic PatchAssetScansAssetScanID builder with application/json body +func NewPatchAssetScansAssetScanIDRequest(server string, assetScanID AssetScanID, params *PatchAssetScansAssetScanIDParams, body PatchAssetScansAssetScanIDJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewPatchAssetsAssetIDRequestWithBody(server, assetID, params, "application/json", bodyReader) + return NewPatchAssetScansAssetScanIDRequestWithBody(server, assetScanID, params, "application/json", bodyReader) } -// NewPatchAssetsAssetIDRequestWithBody generates requests for PatchAssetsAssetID with any type of body -func NewPatchAssetsAssetIDRequestWithBody(server string, assetID AssetID, params *PatchAssetsAssetIDParams, contentType string, body io.Reader) (*http.Request, error) { +// NewPatchAssetScansAssetScanIDRequestWithBody generates requests for PatchAssetScansAssetScanID with any type of body +func NewPatchAssetScansAssetScanIDRequestWithBody(server string, assetScanID AssetScanID, params *PatchAssetScansAssetScanIDParams, contentType string, body io.Reader) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetID", runtime.ParamLocationPath, assetID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetScanID", runtime.ParamLocationPath, assetScanID) if err != nil { return nil, err } @@ -1434,7 +1649,7 @@ func NewPatchAssetsAssetIDRequestWithBody(server string, assetID AssetID, params return nil, err } - operationPath := fmt.Sprintf("/assets/%s", pathParam0) + operationPath := fmt.Sprintf("/assetScans/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -1465,24 +1680,24 @@ func NewPatchAssetsAssetIDRequestWithBody(server string, assetID AssetID, params return req, nil } -// NewPutAssetsAssetIDRequest calls the generic PutAssetsAssetID builder with application/json body -func NewPutAssetsAssetIDRequest(server string, assetID AssetID, params *PutAssetsAssetIDParams, body PutAssetsAssetIDJSONRequestBody) (*http.Request, error) { +// NewPutAssetScansAssetScanIDRequest calls the generic PutAssetScansAssetScanID builder with application/json body +func NewPutAssetScansAssetScanIDRequest(server string, assetScanID AssetScanID, params *PutAssetScansAssetScanIDParams, body PutAssetScansAssetScanIDJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewPutAssetsAssetIDRequestWithBody(server, assetID, params, "application/json", bodyReader) + return NewPutAssetScansAssetScanIDRequestWithBody(server, assetScanID, params, "application/json", bodyReader) } -// NewPutAssetsAssetIDRequestWithBody generates requests for PutAssetsAssetID with any type of body -func NewPutAssetsAssetIDRequestWithBody(server string, assetID AssetID, params *PutAssetsAssetIDParams, contentType string, body io.Reader) (*http.Request, error) { +// NewPutAssetScansAssetScanIDRequestWithBody generates requests for PutAssetScansAssetScanID with any type of body +func NewPutAssetScansAssetScanIDRequestWithBody(server string, assetScanID AssetScanID, params *PutAssetScansAssetScanIDParams, contentType string, body io.Reader) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetID", runtime.ParamLocationPath, assetID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetScanID", runtime.ParamLocationPath, assetScanID) if err != nil { return nil, err } @@ -1492,7 +1707,7 @@ func NewPutAssetsAssetIDRequestWithBody(server string, assetID AssetID, params * return nil, err } - operationPath := fmt.Sprintf("/assets/%s", pathParam0) + operationPath := fmt.Sprintf("/assetScans/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -1523,8 +1738,8 @@ func NewPutAssetsAssetIDRequestWithBody(server string, assetID AssetID, params * return req, nil } -// NewGetFindingsRequest generates requests for GetFindings -func NewGetFindingsRequest(server string, params *GetFindingsParams) (*http.Request, error) { +// NewGetAssetsRequest generates requests for GetAssets +func NewGetAssetsRequest(server string, params *GetAssetsParams) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -1532,7 +1747,7 @@ func NewGetFindingsRequest(server string, params *GetFindingsParams) (*http.Requ return nil, err } - operationPath := fmt.Sprintf("/findings") + operationPath := fmt.Sprintf("/assets") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -1666,19 +1881,19 @@ func NewGetFindingsRequest(server string, params *GetFindingsParams) (*http.Requ return req, nil } -// NewPostFindingsRequest calls the generic PostFindings builder with application/json body -func NewPostFindingsRequest(server string, body PostFindingsJSONRequestBody) (*http.Request, error) { +// NewPostAssetsRequest calls the generic PostAssets builder with application/json body +func NewPostAssetsRequest(server string, body PostAssetsJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewPostFindingsRequestWithBody(server, "application/json", bodyReader) + return NewPostAssetsRequestWithBody(server, "application/json", bodyReader) } -// NewPostFindingsRequestWithBody generates requests for PostFindings with any type of body -func NewPostFindingsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { +// NewPostAssetsRequestWithBody generates requests for PostAssets with any type of body +func NewPostAssetsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -1686,7 +1901,7 @@ func NewPostFindingsRequestWithBody(server string, contentType string, body io.R return nil, err } - operationPath := fmt.Sprintf("/findings") + operationPath := fmt.Sprintf("/assets") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -1706,13 +1921,13 @@ func NewPostFindingsRequestWithBody(server string, contentType string, body io.R return req, nil } -// NewDeleteFindingsFindingIDRequest generates requests for DeleteFindingsFindingID -func NewDeleteFindingsFindingIDRequest(server string, findingID FindingID) (*http.Request, error) { +// NewDeleteAssetsAssetIDRequest generates requests for DeleteAssetsAssetID +func NewDeleteAssetsAssetIDRequest(server string, assetID AssetID) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "findingID", runtime.ParamLocationPath, findingID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetID", runtime.ParamLocationPath, assetID) if err != nil { return nil, err } @@ -1722,7 +1937,7 @@ func NewDeleteFindingsFindingIDRequest(server string, findingID FindingID) (*htt return nil, err } - operationPath := fmt.Sprintf("/findings/%s", pathParam0) + operationPath := fmt.Sprintf("/assets/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -1740,13 +1955,13 @@ func NewDeleteFindingsFindingIDRequest(server string, findingID FindingID) (*htt return req, nil } -// NewGetFindingsFindingIDRequest generates requests for GetFindingsFindingID -func NewGetFindingsFindingIDRequest(server string, findingID FindingID, params *GetFindingsFindingIDParams) (*http.Request, error) { +// NewGetAssetsAssetIDRequest generates requests for GetAssetsAssetID +func NewGetAssetsAssetIDRequest(server string, assetID AssetID, params *GetAssetsAssetIDParams) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "findingID", runtime.ParamLocationPath, findingID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetID", runtime.ParamLocationPath, assetID) if err != nil { return nil, err } @@ -1756,7 +1971,7 @@ func NewGetFindingsFindingIDRequest(server string, findingID FindingID, params * return nil, err } - operationPath := fmt.Sprintf("/findings/%s", pathParam0) + operationPath := fmt.Sprintf("/assets/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -1810,24 +2025,24 @@ func NewGetFindingsFindingIDRequest(server string, findingID FindingID, params * return req, nil } -// NewPatchFindingsFindingIDRequest calls the generic PatchFindingsFindingID builder with application/json body -func NewPatchFindingsFindingIDRequest(server string, findingID FindingID, body PatchFindingsFindingIDJSONRequestBody) (*http.Request, error) { +// NewPatchAssetsAssetIDRequest calls the generic PatchAssetsAssetID builder with application/json body +func NewPatchAssetsAssetIDRequest(server string, assetID AssetID, params *PatchAssetsAssetIDParams, body PatchAssetsAssetIDJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewPatchFindingsFindingIDRequestWithBody(server, findingID, "application/json", bodyReader) + return NewPatchAssetsAssetIDRequestWithBody(server, assetID, params, "application/json", bodyReader) } -// NewPatchFindingsFindingIDRequestWithBody generates requests for PatchFindingsFindingID with any type of body -func NewPatchFindingsFindingIDRequestWithBody(server string, findingID FindingID, contentType string, body io.Reader) (*http.Request, error) { +// NewPatchAssetsAssetIDRequestWithBody generates requests for PatchAssetsAssetID with any type of body +func NewPatchAssetsAssetIDRequestWithBody(server string, assetID AssetID, params *PatchAssetsAssetIDParams, contentType string, body io.Reader) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "findingID", runtime.ParamLocationPath, findingID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetID", runtime.ParamLocationPath, assetID) if err != nil { return nil, err } @@ -1837,7 +2052,7 @@ func NewPatchFindingsFindingIDRequestWithBody(server string, findingID FindingID return nil, err } - operationPath := fmt.Sprintf("/findings/%s", pathParam0) + operationPath := fmt.Sprintf("/assets/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -1854,27 +2069,38 @@ func NewPatchFindingsFindingIDRequestWithBody(server string, findingID FindingID req.Header.Add("Content-Type", contentType) + if params.IfMatch != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "If-Match", runtime.ParamLocationHeader, *params.IfMatch) + if err != nil { + return nil, err + } + + req.Header.Set("If-Match", headerParam0) + } + return req, nil } -// NewPutFindingsFindingIDRequest calls the generic PutFindingsFindingID builder with application/json body -func NewPutFindingsFindingIDRequest(server string, findingID FindingID, body PutFindingsFindingIDJSONRequestBody) (*http.Request, error) { +// NewPutAssetsAssetIDRequest calls the generic PutAssetsAssetID builder with application/json body +func NewPutAssetsAssetIDRequest(server string, assetID AssetID, params *PutAssetsAssetIDParams, body PutAssetsAssetIDJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewPutFindingsFindingIDRequestWithBody(server, findingID, "application/json", bodyReader) + return NewPutAssetsAssetIDRequestWithBody(server, assetID, params, "application/json", bodyReader) } -// NewPutFindingsFindingIDRequestWithBody generates requests for PutFindingsFindingID with any type of body -func NewPutFindingsFindingIDRequestWithBody(server string, findingID FindingID, contentType string, body io.Reader) (*http.Request, error) { +// NewPutAssetsAssetIDRequestWithBody generates requests for PutAssetsAssetID with any type of body +func NewPutAssetsAssetIDRequestWithBody(server string, assetID AssetID, params *PutAssetsAssetIDParams, contentType string, body io.Reader) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "findingID", runtime.ParamLocationPath, findingID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "assetID", runtime.ParamLocationPath, assetID) if err != nil { return nil, err } @@ -1884,7 +2110,7 @@ func NewPutFindingsFindingIDRequestWithBody(server string, findingID FindingID, return nil, err } - operationPath := fmt.Sprintf("/findings/%s", pathParam0) + operationPath := fmt.Sprintf("/assets/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -1901,38 +2127,22 @@ func NewPutFindingsFindingIDRequestWithBody(server string, findingID FindingID, req.Header.Add("Content-Type", contentType) - return req, nil -} - -// NewGetOpenAPISpecRequest generates requests for GetOpenAPISpec -func NewGetOpenAPISpecRequest(server string) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/openapi.json") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + if params.IfMatch != nil { + var headerParam0 string - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "If-Match", runtime.ParamLocationHeader, *params.IfMatch) + if err != nil { + return nil, err + } - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err + req.Header.Set("If-Match", headerParam0) } return req, nil } -// NewGetScanConfigsRequest generates requests for GetScanConfigs -func NewGetScanConfigsRequest(server string, params *GetScanConfigsParams) (*http.Request, error) { +// NewGetFindingsRequest generates requests for GetFindings +func NewGetFindingsRequest(server string, params *GetFindingsParams) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -1940,7 +2150,7 @@ func NewGetScanConfigsRequest(server string, params *GetScanConfigsParams) (*htt return nil, err } - operationPath := fmt.Sprintf("/scanConfigs") + operationPath := fmt.Sprintf("/findings") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -2074,19 +2284,19 @@ func NewGetScanConfigsRequest(server string, params *GetScanConfigsParams) (*htt return req, nil } -// NewPostScanConfigsRequest calls the generic PostScanConfigs builder with application/json body -func NewPostScanConfigsRequest(server string, body PostScanConfigsJSONRequestBody) (*http.Request, error) { +// NewPostFindingsRequest calls the generic PostFindings builder with application/json body +func NewPostFindingsRequest(server string, body PostFindingsJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewPostScanConfigsRequestWithBody(server, "application/json", bodyReader) + return NewPostFindingsRequestWithBody(server, "application/json", bodyReader) } -// NewPostScanConfigsRequestWithBody generates requests for PostScanConfigs with any type of body -func NewPostScanConfigsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { +// NewPostFindingsRequestWithBody generates requests for PostFindings with any type of body +func NewPostFindingsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -2094,7 +2304,7 @@ func NewPostScanConfigsRequestWithBody(server string, contentType string, body i return nil, err } - operationPath := fmt.Sprintf("/scanConfigs") + operationPath := fmt.Sprintf("/findings") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -2114,13 +2324,13 @@ func NewPostScanConfigsRequestWithBody(server string, contentType string, body i return req, nil } -// NewDeleteScanConfigsScanConfigIDRequest generates requests for DeleteScanConfigsScanConfigID -func NewDeleteScanConfigsScanConfigIDRequest(server string, scanConfigID ScanConfigID) (*http.Request, error) { +// NewDeleteFindingsFindingIDRequest generates requests for DeleteFindingsFindingID +func NewDeleteFindingsFindingIDRequest(server string, findingID FindingID) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanConfigID", runtime.ParamLocationPath, scanConfigID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "findingID", runtime.ParamLocationPath, findingID) if err != nil { return nil, err } @@ -2130,7 +2340,7 @@ func NewDeleteScanConfigsScanConfigIDRequest(server string, scanConfigID ScanCon return nil, err } - operationPath := fmt.Sprintf("/scanConfigs/%s", pathParam0) + operationPath := fmt.Sprintf("/findings/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -2148,13 +2358,13 @@ func NewDeleteScanConfigsScanConfigIDRequest(server string, scanConfigID ScanCon return req, nil } -// NewGetScanConfigsScanConfigIDRequest generates requests for GetScanConfigsScanConfigID -func NewGetScanConfigsScanConfigIDRequest(server string, scanConfigID ScanConfigID, params *GetScanConfigsScanConfigIDParams) (*http.Request, error) { +// NewGetFindingsFindingIDRequest generates requests for GetFindingsFindingID +func NewGetFindingsFindingIDRequest(server string, findingID FindingID, params *GetFindingsFindingIDParams) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanConfigID", runtime.ParamLocationPath, scanConfigID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "findingID", runtime.ParamLocationPath, findingID) if err != nil { return nil, err } @@ -2164,7 +2374,7 @@ func NewGetScanConfigsScanConfigIDRequest(server string, scanConfigID ScanConfig return nil, err } - operationPath := fmt.Sprintf("/scanConfigs/%s", pathParam0) + operationPath := fmt.Sprintf("/findings/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -2218,24 +2428,24 @@ func NewGetScanConfigsScanConfigIDRequest(server string, scanConfigID ScanConfig return req, nil } -// NewPatchScanConfigsScanConfigIDRequest calls the generic PatchScanConfigsScanConfigID builder with application/json body -func NewPatchScanConfigsScanConfigIDRequest(server string, scanConfigID ScanConfigID, params *PatchScanConfigsScanConfigIDParams, body PatchScanConfigsScanConfigIDJSONRequestBody) (*http.Request, error) { +// NewPatchFindingsFindingIDRequest calls the generic PatchFindingsFindingID builder with application/json body +func NewPatchFindingsFindingIDRequest(server string, findingID FindingID, body PatchFindingsFindingIDJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewPatchScanConfigsScanConfigIDRequestWithBody(server, scanConfigID, params, "application/json", bodyReader) + return NewPatchFindingsFindingIDRequestWithBody(server, findingID, "application/json", bodyReader) } -// NewPatchScanConfigsScanConfigIDRequestWithBody generates requests for PatchScanConfigsScanConfigID with any type of body -func NewPatchScanConfigsScanConfigIDRequestWithBody(server string, scanConfigID ScanConfigID, params *PatchScanConfigsScanConfigIDParams, contentType string, body io.Reader) (*http.Request, error) { +// NewPatchFindingsFindingIDRequestWithBody generates requests for PatchFindingsFindingID with any type of body +func NewPatchFindingsFindingIDRequestWithBody(server string, findingID FindingID, contentType string, body io.Reader) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanConfigID", runtime.ParamLocationPath, scanConfigID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "findingID", runtime.ParamLocationPath, findingID) if err != nil { return nil, err } @@ -2245,7 +2455,7 @@ func NewPatchScanConfigsScanConfigIDRequestWithBody(server string, scanConfigID return nil, err } - operationPath := fmt.Sprintf("/scanConfigs/%s", pathParam0) + operationPath := fmt.Sprintf("/findings/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -2262,38 +2472,27 @@ func NewPatchScanConfigsScanConfigIDRequestWithBody(server string, scanConfigID req.Header.Add("Content-Type", contentType) - if params.IfMatch != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "If-Match", runtime.ParamLocationHeader, *params.IfMatch) - if err != nil { - return nil, err - } - - req.Header.Set("If-Match", headerParam0) - } - return req, nil } -// NewPutScanConfigsScanConfigIDRequest calls the generic PutScanConfigsScanConfigID builder with application/json body -func NewPutScanConfigsScanConfigIDRequest(server string, scanConfigID ScanConfigID, params *PutScanConfigsScanConfigIDParams, body PutScanConfigsScanConfigIDJSONRequestBody) (*http.Request, error) { +// NewPutFindingsFindingIDRequest calls the generic PutFindingsFindingID builder with application/json body +func NewPutFindingsFindingIDRequest(server string, findingID FindingID, body PutFindingsFindingIDJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewPutScanConfigsScanConfigIDRequestWithBody(server, scanConfigID, params, "application/json", bodyReader) + return NewPutFindingsFindingIDRequestWithBody(server, findingID, "application/json", bodyReader) } -// NewPutScanConfigsScanConfigIDRequestWithBody generates requests for PutScanConfigsScanConfigID with any type of body -func NewPutScanConfigsScanConfigIDRequestWithBody(server string, scanConfigID ScanConfigID, params *PutScanConfigsScanConfigIDParams, contentType string, body io.Reader) (*http.Request, error) { +// NewPutFindingsFindingIDRequestWithBody generates requests for PutFindingsFindingID with any type of body +func NewPutFindingsFindingIDRequestWithBody(server string, findingID FindingID, contentType string, body io.Reader) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanConfigID", runtime.ParamLocationPath, scanConfigID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "findingID", runtime.ParamLocationPath, findingID) if err != nil { return nil, err } @@ -2303,7 +2502,7 @@ func NewPutScanConfigsScanConfigIDRequestWithBody(server string, scanConfigID Sc return nil, err } - operationPath := fmt.Sprintf("/scanConfigs/%s", pathParam0) + operationPath := fmt.Sprintf("/findings/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -2320,22 +2519,11 @@ func NewPutScanConfigsScanConfigIDRequestWithBody(server string, scanConfigID Sc req.Header.Add("Content-Type", contentType) - if params.IfMatch != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "If-Match", runtime.ParamLocationHeader, *params.IfMatch) - if err != nil { - return nil, err - } - - req.Header.Set("If-Match", headerParam0) - } - return req, nil } -// NewGetScansRequest generates requests for GetScans -func NewGetScansRequest(server string, params *GetScansParams) (*http.Request, error) { +// NewGetOpenAPISpecRequest generates requests for GetOpenAPISpec +func NewGetOpenAPISpecRequest(server string) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -2343,7 +2531,7 @@ func NewGetScansRequest(server string, params *GetScansParams) (*http.Request, e return nil, err } - operationPath := fmt.Sprintf("/scans") + operationPath := fmt.Sprintf("/openapi.json") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -2353,15 +2541,42 @@ func NewGetScansRequest(server string, params *GetScansParams) (*http.Request, e return nil, err } - queryValues := queryURL.Query() + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } - if params.Filter != nil { + return req, nil +} - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$filter", runtime.ParamLocationQuery, *params.Filter); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { +// NewGetScanConfigsRequest generates requests for GetScanConfigs +func NewGetScanConfigsRequest(server string, params *GetScanConfigsParams) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/scanConfigs") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + queryValues := queryURL.Query() + + if params.Filter != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$filter", runtime.ParamLocationQuery, *params.Filter); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { for k, v := range parsed { for _, v2 := range v { queryValues.Add(k, v2) @@ -2477,19 +2692,19 @@ func NewGetScansRequest(server string, params *GetScansParams) (*http.Request, e return req, nil } -// NewPostScansRequest calls the generic PostScans builder with application/json body -func NewPostScansRequest(server string, body PostScansJSONRequestBody) (*http.Request, error) { +// NewPostScanConfigsRequest calls the generic PostScanConfigs builder with application/json body +func NewPostScanConfigsRequest(server string, body PostScanConfigsJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewPostScansRequestWithBody(server, "application/json", bodyReader) + return NewPostScanConfigsRequestWithBody(server, "application/json", bodyReader) } -// NewPostScansRequestWithBody generates requests for PostScans with any type of body -func NewPostScansRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { +// NewPostScanConfigsRequestWithBody generates requests for PostScanConfigs with any type of body +func NewPostScanConfigsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -2497,7 +2712,7 @@ func NewPostScansRequestWithBody(server string, contentType string, body io.Read return nil, err } - operationPath := fmt.Sprintf("/scans") + operationPath := fmt.Sprintf("/scanConfigs") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -2517,13 +2732,13 @@ func NewPostScansRequestWithBody(server string, contentType string, body io.Read return req, nil } -// NewDeleteScansScanIDRequest generates requests for DeleteScansScanID -func NewDeleteScansScanIDRequest(server string, scanID ScanID) (*http.Request, error) { +// NewDeleteScanConfigsScanConfigIDRequest generates requests for DeleteScanConfigsScanConfigID +func NewDeleteScanConfigsScanConfigIDRequest(server string, scanConfigID ScanConfigID) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanID", runtime.ParamLocationPath, scanID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanConfigID", runtime.ParamLocationPath, scanConfigID) if err != nil { return nil, err } @@ -2533,7 +2748,7 @@ func NewDeleteScansScanIDRequest(server string, scanID ScanID) (*http.Request, e return nil, err } - operationPath := fmt.Sprintf("/scans/%s", pathParam0) + operationPath := fmt.Sprintf("/scanConfigs/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -2551,13 +2766,13 @@ func NewDeleteScansScanIDRequest(server string, scanID ScanID) (*http.Request, e return req, nil } -// NewGetScansScanIDRequest generates requests for GetScansScanID -func NewGetScansScanIDRequest(server string, scanID ScanID, params *GetScansScanIDParams) (*http.Request, error) { +// NewGetScanConfigsScanConfigIDRequest generates requests for GetScanConfigsScanConfigID +func NewGetScanConfigsScanConfigIDRequest(server string, scanConfigID ScanConfigID, params *GetScanConfigsScanConfigIDParams) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanID", runtime.ParamLocationPath, scanID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanConfigID", runtime.ParamLocationPath, scanConfigID) if err != nil { return nil, err } @@ -2567,7 +2782,7 @@ func NewGetScansScanIDRequest(server string, scanID ScanID, params *GetScansScan return nil, err } - operationPath := fmt.Sprintf("/scans/%s", pathParam0) + operationPath := fmt.Sprintf("/scanConfigs/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -2621,24 +2836,24 @@ func NewGetScansScanIDRequest(server string, scanID ScanID, params *GetScansScan return req, nil } -// NewPatchScansScanIDRequest calls the generic PatchScansScanID builder with application/json body -func NewPatchScansScanIDRequest(server string, scanID ScanID, params *PatchScansScanIDParams, body PatchScansScanIDJSONRequestBody) (*http.Request, error) { +// NewPatchScanConfigsScanConfigIDRequest calls the generic PatchScanConfigsScanConfigID builder with application/json body +func NewPatchScanConfigsScanConfigIDRequest(server string, scanConfigID ScanConfigID, params *PatchScanConfigsScanConfigIDParams, body PatchScanConfigsScanConfigIDJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewPatchScansScanIDRequestWithBody(server, scanID, params, "application/json", bodyReader) + return NewPatchScanConfigsScanConfigIDRequestWithBody(server, scanConfigID, params, "application/json", bodyReader) } -// NewPatchScansScanIDRequestWithBody generates requests for PatchScansScanID with any type of body -func NewPatchScansScanIDRequestWithBody(server string, scanID ScanID, params *PatchScansScanIDParams, contentType string, body io.Reader) (*http.Request, error) { +// NewPatchScanConfigsScanConfigIDRequestWithBody generates requests for PatchScanConfigsScanConfigID with any type of body +func NewPatchScanConfigsScanConfigIDRequestWithBody(server string, scanConfigID ScanConfigID, params *PatchScanConfigsScanConfigIDParams, contentType string, body io.Reader) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanID", runtime.ParamLocationPath, scanID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanConfigID", runtime.ParamLocationPath, scanConfigID) if err != nil { return nil, err } @@ -2648,7 +2863,7 @@ func NewPatchScansScanIDRequestWithBody(server string, scanID ScanID, params *Pa return nil, err } - operationPath := fmt.Sprintf("/scans/%s", pathParam0) + operationPath := fmt.Sprintf("/scanConfigs/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -2679,24 +2894,24 @@ func NewPatchScansScanIDRequestWithBody(server string, scanID ScanID, params *Pa return req, nil } -// NewPutScansScanIDRequest calls the generic PutScansScanID builder with application/json body -func NewPutScansScanIDRequest(server string, scanID ScanID, params *PutScansScanIDParams, body PutScansScanIDJSONRequestBody) (*http.Request, error) { +// NewPutScanConfigsScanConfigIDRequest calls the generic PutScanConfigsScanConfigID builder with application/json body +func NewPutScanConfigsScanConfigIDRequest(server string, scanConfigID ScanConfigID, params *PutScanConfigsScanConfigIDParams, body PutScanConfigsScanConfigIDJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewPutScansScanIDRequestWithBody(server, scanID, params, "application/json", bodyReader) + return NewPutScanConfigsScanConfigIDRequestWithBody(server, scanConfigID, params, "application/json", bodyReader) } -// NewPutScansScanIDRequestWithBody generates requests for PutScansScanID with any type of body -func NewPutScansScanIDRequestWithBody(server string, scanID ScanID, params *PutScansScanIDParams, contentType string, body io.Reader) (*http.Request, error) { +// NewPutScanConfigsScanConfigIDRequestWithBody generates requests for PutScanConfigsScanConfigID with any type of body +func NewPutScanConfigsScanConfigIDRequestWithBody(server string, scanConfigID ScanConfigID, params *PutScanConfigsScanConfigIDParams, contentType string, body io.Reader) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanID", runtime.ParamLocationPath, scanID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanConfigID", runtime.ParamLocationPath, scanConfigID) if err != nil { return nil, err } @@ -2706,7 +2921,7 @@ func NewPutScansScanIDRequestWithBody(server string, scanID ScanID, params *PutS return nil, err } - operationPath := fmt.Sprintf("/scans/%s", pathParam0) + operationPath := fmt.Sprintf("/scanConfigs/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -2737,107 +2952,934 @@ func NewPutScansScanIDRequestWithBody(server string, scanID ScanID, params *PutS return req, nil } -func (c *Client) applyEditors(ctx context.Context, req *http.Request, additionalEditors []RequestEditorFn) error { - for _, r := range c.RequestEditors { - if err := r(ctx, req); err != nil { - return err - } - } - for _, r := range additionalEditors { - if err := r(ctx, req); err != nil { - return err - } - } - return nil -} - -// ClientWithResponses builds on ClientInterface to offer response payloads -type ClientWithResponses struct { - ClientInterface -} +// NewGetScanEstimationsRequest generates requests for GetScanEstimations +func NewGetScanEstimationsRequest(server string, params *GetScanEstimationsParams) (*http.Request, error) { + var err error -// NewClientWithResponses creates a new ClientWithResponses, which wraps -// Client with return type handling -func NewClientWithResponses(server string, opts ...ClientOption) (*ClientWithResponses, error) { - client, err := NewClient(server, opts...) + serverURL, err := url.Parse(server) if err != nil { return nil, err } - return &ClientWithResponses{client}, nil -} -// WithBaseURL overrides the baseURL. -func WithBaseURL(baseURL string) ClientOption { - return func(c *Client) error { - newBaseURL, err := url.Parse(baseURL) - if err != nil { - return err - } - c.Server = newBaseURL.String() - return nil + operationPath := fmt.Sprintf("/scanEstimations") + if operationPath[0] == '/' { + operationPath = "." + operationPath } -} -// ClientWithResponsesInterface is the interface specification for the client with responses above. -type ClientWithResponsesInterface interface { - // GetAssetScans request - GetAssetScansWithResponse(ctx context.Context, params *GetAssetScansParams, reqEditors ...RequestEditorFn) (*GetAssetScansResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // PostAssetScans request with any body - PostAssetScansWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostAssetScansResponse, error) + queryValues := queryURL.Query() - PostAssetScansWithResponse(ctx context.Context, body PostAssetScansJSONRequestBody, reqEditors ...RequestEditorFn) (*PostAssetScansResponse, error) + if params.Filter != nil { - // GetAssetScansAssetScanID request - GetAssetScansAssetScanIDWithResponse(ctx context.Context, assetScanID AssetScanID, params *GetAssetScansAssetScanIDParams, reqEditors ...RequestEditorFn) (*GetAssetScansAssetScanIDResponse, error) + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$filter", runtime.ParamLocationQuery, *params.Filter); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - // PatchAssetScansAssetScanID request with any body - PatchAssetScansAssetScanIDWithBodyWithResponse(ctx context.Context, assetScanID AssetScanID, params *PatchAssetScansAssetScanIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PatchAssetScansAssetScanIDResponse, error) + } - PatchAssetScansAssetScanIDWithResponse(ctx context.Context, assetScanID AssetScanID, params *PatchAssetScansAssetScanIDParams, body PatchAssetScansAssetScanIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PatchAssetScansAssetScanIDResponse, error) + if params.Select != nil { - // PutAssetScansAssetScanID request with any body - PutAssetScansAssetScanIDWithBodyWithResponse(ctx context.Context, assetScanID AssetScanID, params *PutAssetScansAssetScanIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PutAssetScansAssetScanIDResponse, error) + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$select", runtime.ParamLocationQuery, *params.Select); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - PutAssetScansAssetScanIDWithResponse(ctx context.Context, assetScanID AssetScanID, params *PutAssetScansAssetScanIDParams, body PutAssetScansAssetScanIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PutAssetScansAssetScanIDResponse, error) + } - // GetAssets request - GetAssetsWithResponse(ctx context.Context, params *GetAssetsParams, reqEditors ...RequestEditorFn) (*GetAssetsResponse, error) + if params.Count != nil { - // PostAssets request with any body - PostAssetsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostAssetsResponse, error) + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$count", runtime.ParamLocationQuery, *params.Count); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - PostAssetsWithResponse(ctx context.Context, body PostAssetsJSONRequestBody, reqEditors ...RequestEditorFn) (*PostAssetsResponse, error) + } - // DeleteAssetsAssetID request - DeleteAssetsAssetIDWithResponse(ctx context.Context, assetID AssetID, reqEditors ...RequestEditorFn) (*DeleteAssetsAssetIDResponse, error) + if params.Top != nil { - // GetAssetsAssetID request - GetAssetsAssetIDWithResponse(ctx context.Context, assetID AssetID, params *GetAssetsAssetIDParams, reqEditors ...RequestEditorFn) (*GetAssetsAssetIDResponse, error) + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$top", runtime.ParamLocationQuery, *params.Top); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - // PatchAssetsAssetID request with any body - PatchAssetsAssetIDWithBodyWithResponse(ctx context.Context, assetID AssetID, params *PatchAssetsAssetIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PatchAssetsAssetIDResponse, error) + } - PatchAssetsAssetIDWithResponse(ctx context.Context, assetID AssetID, params *PatchAssetsAssetIDParams, body PatchAssetsAssetIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PatchAssetsAssetIDResponse, error) + if params.Skip != nil { - // PutAssetsAssetID request with any body - PutAssetsAssetIDWithBodyWithResponse(ctx context.Context, assetID AssetID, params *PutAssetsAssetIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PutAssetsAssetIDResponse, error) + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$skip", runtime.ParamLocationQuery, *params.Skip); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - PutAssetsAssetIDWithResponse(ctx context.Context, assetID AssetID, params *PutAssetsAssetIDParams, body PutAssetsAssetIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PutAssetsAssetIDResponse, error) + } - // GetFindings request - GetFindingsWithResponse(ctx context.Context, params *GetFindingsParams, reqEditors ...RequestEditorFn) (*GetFindingsResponse, error) + if params.Expand != nil { - // PostFindings request with any body - PostFindingsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostFindingsResponse, error) + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$expand", runtime.ParamLocationQuery, *params.Expand); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - PostFindingsWithResponse(ctx context.Context, body PostFindingsJSONRequestBody, reqEditors ...RequestEditorFn) (*PostFindingsResponse, error) + } - // DeleteFindingsFindingID request - DeleteFindingsFindingIDWithResponse(ctx context.Context, findingID FindingID, reqEditors ...RequestEditorFn) (*DeleteFindingsFindingIDResponse, error) + if params.OrderBy != nil { - // GetFindingsFindingID request - GetFindingsFindingIDWithResponse(ctx context.Context, findingID FindingID, params *GetFindingsFindingIDParams, reqEditors ...RequestEditorFn) (*GetFindingsFindingIDResponse, error) + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$orderby", runtime.ParamLocationQuery, *params.OrderBy); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewPostScanEstimationsRequest calls the generic PostScanEstimations builder with application/json body +func NewPostScanEstimationsRequest(server string, body PostScanEstimationsJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewPostScanEstimationsRequestWithBody(server, "application/json", bodyReader) +} + +// NewPostScanEstimationsRequestWithBody generates requests for PostScanEstimations with any type of body +func NewPostScanEstimationsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/scanEstimations") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewDeleteScanEstimationsScanEstimationIDRequest generates requests for DeleteScanEstimationsScanEstimationID +func NewDeleteScanEstimationsScanEstimationIDRequest(server string, scanEstimationID ScanEstimationID) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanEstimationID", runtime.ParamLocationPath, scanEstimationID) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/scanEstimations/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetScanEstimationsScanEstimationIDRequest generates requests for GetScanEstimationsScanEstimationID +func NewGetScanEstimationsScanEstimationIDRequest(server string, scanEstimationID ScanEstimationID, params *GetScanEstimationsScanEstimationIDParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanEstimationID", runtime.ParamLocationPath, scanEstimationID) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/scanEstimations/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + queryValues := queryURL.Query() + + if params.Select != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$select", runtime.ParamLocationQuery, *params.Select); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Expand != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$expand", runtime.ParamLocationQuery, *params.Expand); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewPatchScanEstimationsScanEstimationIDRequest calls the generic PatchScanEstimationsScanEstimationID builder with application/json body +func NewPatchScanEstimationsScanEstimationIDRequest(server string, scanEstimationID ScanEstimationID, params *PatchScanEstimationsScanEstimationIDParams, body PatchScanEstimationsScanEstimationIDJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewPatchScanEstimationsScanEstimationIDRequestWithBody(server, scanEstimationID, params, "application/json", bodyReader) +} + +// NewPatchScanEstimationsScanEstimationIDRequestWithBody generates requests for PatchScanEstimationsScanEstimationID with any type of body +func NewPatchScanEstimationsScanEstimationIDRequestWithBody(server string, scanEstimationID ScanEstimationID, params *PatchScanEstimationsScanEstimationIDParams, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanEstimationID", runtime.ParamLocationPath, scanEstimationID) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/scanEstimations/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PATCH", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + if params.IfMatch != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "If-Match", runtime.ParamLocationHeader, *params.IfMatch) + if err != nil { + return nil, err + } + + req.Header.Set("If-Match", headerParam0) + } + + return req, nil +} + +// NewPutScanEstimationsScanEstimationIDRequest calls the generic PutScanEstimationsScanEstimationID builder with application/json body +func NewPutScanEstimationsScanEstimationIDRequest(server string, scanEstimationID ScanEstimationID, params *PutScanEstimationsScanEstimationIDParams, body PutScanEstimationsScanEstimationIDJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewPutScanEstimationsScanEstimationIDRequestWithBody(server, scanEstimationID, params, "application/json", bodyReader) +} + +// NewPutScanEstimationsScanEstimationIDRequestWithBody generates requests for PutScanEstimationsScanEstimationID with any type of body +func NewPutScanEstimationsScanEstimationIDRequestWithBody(server string, scanEstimationID ScanEstimationID, params *PutScanEstimationsScanEstimationIDParams, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanEstimationID", runtime.ParamLocationPath, scanEstimationID) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/scanEstimations/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + if params.IfMatch != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "If-Match", runtime.ParamLocationHeader, *params.IfMatch) + if err != nil { + return nil, err + } + + req.Header.Set("If-Match", headerParam0) + } + + return req, nil +} + +// NewGetScansRequest generates requests for GetScans +func NewGetScansRequest(server string, params *GetScansParams) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/scans") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + queryValues := queryURL.Query() + + if params.Filter != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$filter", runtime.ParamLocationQuery, *params.Filter); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Select != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$select", runtime.ParamLocationQuery, *params.Select); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Count != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$count", runtime.ParamLocationQuery, *params.Count); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Top != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$top", runtime.ParamLocationQuery, *params.Top); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Skip != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$skip", runtime.ParamLocationQuery, *params.Skip); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Expand != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$expand", runtime.ParamLocationQuery, *params.Expand); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.OrderBy != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$orderby", runtime.ParamLocationQuery, *params.OrderBy); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewPostScansRequest calls the generic PostScans builder with application/json body +func NewPostScansRequest(server string, body PostScansJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewPostScansRequestWithBody(server, "application/json", bodyReader) +} + +// NewPostScansRequestWithBody generates requests for PostScans with any type of body +func NewPostScansRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/scans") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewDeleteScansScanIDRequest generates requests for DeleteScansScanID +func NewDeleteScansScanIDRequest(server string, scanID ScanID) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanID", runtime.ParamLocationPath, scanID) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/scans/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetScansScanIDRequest generates requests for GetScansScanID +func NewGetScansScanIDRequest(server string, scanID ScanID, params *GetScansScanIDParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanID", runtime.ParamLocationPath, scanID) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/scans/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + queryValues := queryURL.Query() + + if params.Select != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$select", runtime.ParamLocationQuery, *params.Select); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Expand != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "$expand", runtime.ParamLocationQuery, *params.Expand); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewPatchScansScanIDRequest calls the generic PatchScansScanID builder with application/json body +func NewPatchScansScanIDRequest(server string, scanID ScanID, params *PatchScansScanIDParams, body PatchScansScanIDJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewPatchScansScanIDRequestWithBody(server, scanID, params, "application/json", bodyReader) +} + +// NewPatchScansScanIDRequestWithBody generates requests for PatchScansScanID with any type of body +func NewPatchScansScanIDRequestWithBody(server string, scanID ScanID, params *PatchScansScanIDParams, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanID", runtime.ParamLocationPath, scanID) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/scans/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PATCH", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + if params.IfMatch != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "If-Match", runtime.ParamLocationHeader, *params.IfMatch) + if err != nil { + return nil, err + } + + req.Header.Set("If-Match", headerParam0) + } + + return req, nil +} + +// NewPutScansScanIDRequest calls the generic PutScansScanID builder with application/json body +func NewPutScansScanIDRequest(server string, scanID ScanID, params *PutScansScanIDParams, body PutScansScanIDJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewPutScansScanIDRequestWithBody(server, scanID, params, "application/json", bodyReader) +} + +// NewPutScansScanIDRequestWithBody generates requests for PutScansScanID with any type of body +func NewPutScansScanIDRequestWithBody(server string, scanID ScanID, params *PutScansScanIDParams, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scanID", runtime.ParamLocationPath, scanID) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/scans/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + if params.IfMatch != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "If-Match", runtime.ParamLocationHeader, *params.IfMatch) + if err != nil { + return nil, err + } + + req.Header.Set("If-Match", headerParam0) + } + + return req, nil +} + +func (c *Client) applyEditors(ctx context.Context, req *http.Request, additionalEditors []RequestEditorFn) error { + for _, r := range c.RequestEditors { + if err := r(ctx, req); err != nil { + return err + } + } + for _, r := range additionalEditors { + if err := r(ctx, req); err != nil { + return err + } + } + return nil +} + +// ClientWithResponses builds on ClientInterface to offer response payloads +type ClientWithResponses struct { + ClientInterface +} + +// NewClientWithResponses creates a new ClientWithResponses, which wraps +// Client with return type handling +func NewClientWithResponses(server string, opts ...ClientOption) (*ClientWithResponses, error) { + client, err := NewClient(server, opts...) + if err != nil { + return nil, err + } + return &ClientWithResponses{client}, nil +} + +// WithBaseURL overrides the baseURL. +func WithBaseURL(baseURL string) ClientOption { + return func(c *Client) error { + newBaseURL, err := url.Parse(baseURL) + if err != nil { + return err + } + c.Server = newBaseURL.String() + return nil + } +} + +// ClientWithResponsesInterface is the interface specification for the client with responses above. +type ClientWithResponsesInterface interface { + // GetAssetScanEstimations request + GetAssetScanEstimationsWithResponse(ctx context.Context, params *GetAssetScanEstimationsParams, reqEditors ...RequestEditorFn) (*GetAssetScanEstimationsResponse, error) + + // PostAssetScanEstimations request with any body + PostAssetScanEstimationsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostAssetScanEstimationsResponse, error) + + PostAssetScanEstimationsWithResponse(ctx context.Context, body PostAssetScanEstimationsJSONRequestBody, reqEditors ...RequestEditorFn) (*PostAssetScanEstimationsResponse, error) + + // GetAssetScanEstimationsAssetScanEstimationID request + GetAssetScanEstimationsAssetScanEstimationIDWithResponse(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *GetAssetScanEstimationsAssetScanEstimationIDParams, reqEditors ...RequestEditorFn) (*GetAssetScanEstimationsAssetScanEstimationIDResponse, error) + + // PatchAssetScanEstimationsAssetScanEstimationID request with any body + PatchAssetScanEstimationsAssetScanEstimationIDWithBodyWithResponse(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *PatchAssetScanEstimationsAssetScanEstimationIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PatchAssetScanEstimationsAssetScanEstimationIDResponse, error) + + PatchAssetScanEstimationsAssetScanEstimationIDWithResponse(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *PatchAssetScanEstimationsAssetScanEstimationIDParams, body PatchAssetScanEstimationsAssetScanEstimationIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PatchAssetScanEstimationsAssetScanEstimationIDResponse, error) + + // PutAssetScanEstimationsAssetScanEstimationID request with any body + PutAssetScanEstimationsAssetScanEstimationIDWithBodyWithResponse(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *PutAssetScanEstimationsAssetScanEstimationIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PutAssetScanEstimationsAssetScanEstimationIDResponse, error) + + PutAssetScanEstimationsAssetScanEstimationIDWithResponse(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *PutAssetScanEstimationsAssetScanEstimationIDParams, body PutAssetScanEstimationsAssetScanEstimationIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PutAssetScanEstimationsAssetScanEstimationIDResponse, error) + + // GetAssetScans request + GetAssetScansWithResponse(ctx context.Context, params *GetAssetScansParams, reqEditors ...RequestEditorFn) (*GetAssetScansResponse, error) + + // PostAssetScans request with any body + PostAssetScansWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostAssetScansResponse, error) + + PostAssetScansWithResponse(ctx context.Context, body PostAssetScansJSONRequestBody, reqEditors ...RequestEditorFn) (*PostAssetScansResponse, error) + + // GetAssetScansAssetScanID request + GetAssetScansAssetScanIDWithResponse(ctx context.Context, assetScanID AssetScanID, params *GetAssetScansAssetScanIDParams, reqEditors ...RequestEditorFn) (*GetAssetScansAssetScanIDResponse, error) + + // PatchAssetScansAssetScanID request with any body + PatchAssetScansAssetScanIDWithBodyWithResponse(ctx context.Context, assetScanID AssetScanID, params *PatchAssetScansAssetScanIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PatchAssetScansAssetScanIDResponse, error) + + PatchAssetScansAssetScanIDWithResponse(ctx context.Context, assetScanID AssetScanID, params *PatchAssetScansAssetScanIDParams, body PatchAssetScansAssetScanIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PatchAssetScansAssetScanIDResponse, error) + + // PutAssetScansAssetScanID request with any body + PutAssetScansAssetScanIDWithBodyWithResponse(ctx context.Context, assetScanID AssetScanID, params *PutAssetScansAssetScanIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PutAssetScansAssetScanIDResponse, error) + + PutAssetScansAssetScanIDWithResponse(ctx context.Context, assetScanID AssetScanID, params *PutAssetScansAssetScanIDParams, body PutAssetScansAssetScanIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PutAssetScansAssetScanIDResponse, error) + + // GetAssets request + GetAssetsWithResponse(ctx context.Context, params *GetAssetsParams, reqEditors ...RequestEditorFn) (*GetAssetsResponse, error) + + // PostAssets request with any body + PostAssetsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostAssetsResponse, error) + + PostAssetsWithResponse(ctx context.Context, body PostAssetsJSONRequestBody, reqEditors ...RequestEditorFn) (*PostAssetsResponse, error) + + // DeleteAssetsAssetID request + DeleteAssetsAssetIDWithResponse(ctx context.Context, assetID AssetID, reqEditors ...RequestEditorFn) (*DeleteAssetsAssetIDResponse, error) + + // GetAssetsAssetID request + GetAssetsAssetIDWithResponse(ctx context.Context, assetID AssetID, params *GetAssetsAssetIDParams, reqEditors ...RequestEditorFn) (*GetAssetsAssetIDResponse, error) + + // PatchAssetsAssetID request with any body + PatchAssetsAssetIDWithBodyWithResponse(ctx context.Context, assetID AssetID, params *PatchAssetsAssetIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PatchAssetsAssetIDResponse, error) + + PatchAssetsAssetIDWithResponse(ctx context.Context, assetID AssetID, params *PatchAssetsAssetIDParams, body PatchAssetsAssetIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PatchAssetsAssetIDResponse, error) + + // PutAssetsAssetID request with any body + PutAssetsAssetIDWithBodyWithResponse(ctx context.Context, assetID AssetID, params *PutAssetsAssetIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PutAssetsAssetIDResponse, error) + + PutAssetsAssetIDWithResponse(ctx context.Context, assetID AssetID, params *PutAssetsAssetIDParams, body PutAssetsAssetIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PutAssetsAssetIDResponse, error) + + // GetFindings request + GetFindingsWithResponse(ctx context.Context, params *GetFindingsParams, reqEditors ...RequestEditorFn) (*GetFindingsResponse, error) + + // PostFindings request with any body + PostFindingsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostFindingsResponse, error) + + PostFindingsWithResponse(ctx context.Context, body PostFindingsJSONRequestBody, reqEditors ...RequestEditorFn) (*PostFindingsResponse, error) + + // DeleteFindingsFindingID request + DeleteFindingsFindingIDWithResponse(ctx context.Context, findingID FindingID, reqEditors ...RequestEditorFn) (*DeleteFindingsFindingIDResponse, error) + + // GetFindingsFindingID request + GetFindingsFindingIDWithResponse(ctx context.Context, findingID FindingID, params *GetFindingsFindingIDParams, reqEditors ...RequestEditorFn) (*GetFindingsFindingIDResponse, error) // PatchFindingsFindingID request with any body PatchFindingsFindingIDWithBodyWithResponse(ctx context.Context, findingID FindingID, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PatchFindingsFindingIDResponse, error) @@ -2876,6 +3918,30 @@ type ClientWithResponsesInterface interface { PutScanConfigsScanConfigIDWithResponse(ctx context.Context, scanConfigID ScanConfigID, params *PutScanConfigsScanConfigIDParams, body PutScanConfigsScanConfigIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PutScanConfigsScanConfigIDResponse, error) + // GetScanEstimations request + GetScanEstimationsWithResponse(ctx context.Context, params *GetScanEstimationsParams, reqEditors ...RequestEditorFn) (*GetScanEstimationsResponse, error) + + // PostScanEstimations request with any body + PostScanEstimationsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostScanEstimationsResponse, error) + + PostScanEstimationsWithResponse(ctx context.Context, body PostScanEstimationsJSONRequestBody, reqEditors ...RequestEditorFn) (*PostScanEstimationsResponse, error) + + // DeleteScanEstimationsScanEstimationID request + DeleteScanEstimationsScanEstimationIDWithResponse(ctx context.Context, scanEstimationID ScanEstimationID, reqEditors ...RequestEditorFn) (*DeleteScanEstimationsScanEstimationIDResponse, error) + + // GetScanEstimationsScanEstimationID request + GetScanEstimationsScanEstimationIDWithResponse(ctx context.Context, scanEstimationID ScanEstimationID, params *GetScanEstimationsScanEstimationIDParams, reqEditors ...RequestEditorFn) (*GetScanEstimationsScanEstimationIDResponse, error) + + // PatchScanEstimationsScanEstimationID request with any body + PatchScanEstimationsScanEstimationIDWithBodyWithResponse(ctx context.Context, scanEstimationID ScanEstimationID, params *PatchScanEstimationsScanEstimationIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PatchScanEstimationsScanEstimationIDResponse, error) + + PatchScanEstimationsScanEstimationIDWithResponse(ctx context.Context, scanEstimationID ScanEstimationID, params *PatchScanEstimationsScanEstimationIDParams, body PatchScanEstimationsScanEstimationIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PatchScanEstimationsScanEstimationIDResponse, error) + + // PutScanEstimationsScanEstimationID request with any body + PutScanEstimationsScanEstimationIDWithBodyWithResponse(ctx context.Context, scanEstimationID ScanEstimationID, params *PutScanEstimationsScanEstimationIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PutScanEstimationsScanEstimationIDResponse, error) + + PutScanEstimationsScanEstimationIDWithResponse(ctx context.Context, scanEstimationID ScanEstimationID, params *PutScanEstimationsScanEstimationIDParams, body PutScanEstimationsScanEstimationIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PutScanEstimationsScanEstimationIDResponse, error) + // GetScans request GetScansWithResponse(ctx context.Context, params *GetScansParams, reqEditors ...RequestEditorFn) (*GetScansResponse, error) @@ -2895,10 +3961,136 @@ type ClientWithResponsesInterface interface { PatchScansScanIDWithResponse(ctx context.Context, scanID ScanID, params *PatchScansScanIDParams, body PatchScansScanIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PatchScansScanIDResponse, error) - // PutScansScanID request with any body - PutScansScanIDWithBodyWithResponse(ctx context.Context, scanID ScanID, params *PutScansScanIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PutScansScanIDResponse, error) + // PutScansScanID request with any body + PutScansScanIDWithBodyWithResponse(ctx context.Context, scanID ScanID, params *PutScansScanIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PutScansScanIDResponse, error) + + PutScansScanIDWithResponse(ctx context.Context, scanID ScanID, params *PutScansScanIDParams, body PutScansScanIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PutScansScanIDResponse, error) +} + +type GetAssetScanEstimationsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *AssetScanEstimations + JSONDefault *ApiResponse +} + +// Status returns HTTPResponse.Status +func (r GetAssetScanEstimationsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetAssetScanEstimationsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type PostAssetScanEstimationsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON201 *AssetScanEstimation + JSON400 *ApiResponse + JSON409 *AssetScanEstimationExists + JSONDefault *ApiResponse +} + +// Status returns HTTPResponse.Status +func (r PostAssetScanEstimationsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r PostAssetScanEstimationsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetAssetScanEstimationsAssetScanEstimationIDResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *AssetScanEstimation + JSON404 *ApiResponse + JSONDefault *ApiResponse +} + +// Status returns HTTPResponse.Status +func (r GetAssetScanEstimationsAssetScanEstimationIDResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetAssetScanEstimationsAssetScanEstimationIDResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type PatchAssetScanEstimationsAssetScanEstimationIDResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *AssetScanEstimation + JSON400 *ApiResponse + JSON404 *ApiResponse + JSON409 *AssetScanEstimationExists + JSON412 *ApiResponse + JSONDefault *ApiResponse +} + +// Status returns HTTPResponse.Status +func (r PatchAssetScanEstimationsAssetScanEstimationIDResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r PatchAssetScanEstimationsAssetScanEstimationIDResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type PutAssetScanEstimationsAssetScanEstimationIDResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *AssetScanEstimation + JSON400 *ApiResponse + JSON404 *ApiResponse + JSON409 *AssetScanEstimationExists + JSON412 *ApiResponse + JSONDefault *ApiResponse +} + +// Status returns HTTPResponse.Status +func (r PutAssetScanEstimationsAssetScanEstimationIDResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} - PutScansScanIDWithResponse(ctx context.Context, scanID ScanID, params *PutScansScanIDParams, body PutScansScanIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PutScansScanIDResponse, error) +// StatusCode returns HTTPResponse.StatusCode +func (r PutAssetScanEstimationsAssetScanEstimationIDResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 } type GetAssetScansResponse struct { @@ -3496,6 +4688,156 @@ func (r PutScanConfigsScanConfigIDResponse) StatusCode() int { return 0 } +type GetScanEstimationsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *ScanEstimations + JSONDefault *ApiResponse +} + +// Status returns HTTPResponse.Status +func (r GetScanEstimationsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetScanEstimationsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type PostScanEstimationsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON201 *ScanEstimation + JSON400 *ApiResponse + JSON409 *ScanEstimationExists + JSONDefault *ApiResponse +} + +// Status returns HTTPResponse.Status +func (r PostScanEstimationsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r PostScanEstimationsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteScanEstimationsScanEstimationIDResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *SuccessResponse + JSON404 *ApiResponse + JSONDefault *ApiResponse +} + +// Status returns HTTPResponse.Status +func (r DeleteScanEstimationsScanEstimationIDResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteScanEstimationsScanEstimationIDResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetScanEstimationsScanEstimationIDResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *ScanEstimation + JSON404 *ApiResponse + JSONDefault *ApiResponse +} + +// Status returns HTTPResponse.Status +func (r GetScanEstimationsScanEstimationIDResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetScanEstimationsScanEstimationIDResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type PatchScanEstimationsScanEstimationIDResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *ScanEstimation + JSON400 *ApiResponse + JSON404 *ApiResponse + JSON409 *ScanEstimationExists + JSON412 *ApiResponse + JSONDefault *ApiResponse +} + +// Status returns HTTPResponse.Status +func (r PatchScanEstimationsScanEstimationIDResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r PatchScanEstimationsScanEstimationIDResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type PutScanEstimationsScanEstimationIDResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *ScanEstimation + JSON400 *ApiResponse + JSON404 *ApiResponse + JSON409 *ScanEstimationExists + JSON412 *ApiResponse + JSONDefault *ApiResponse +} + +// Status returns HTTPResponse.Status +func (r PutScanEstimationsScanEstimationIDResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r PutScanEstimationsScanEstimationIDResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + type GetScansResponse struct { Body []byte HTTPResponse *http.Response @@ -3646,6 +4988,75 @@ func (r PutScansScanIDResponse) StatusCode() int { return 0 } +// GetAssetScanEstimationsWithResponse request returning *GetAssetScanEstimationsResponse +func (c *ClientWithResponses) GetAssetScanEstimationsWithResponse(ctx context.Context, params *GetAssetScanEstimationsParams, reqEditors ...RequestEditorFn) (*GetAssetScanEstimationsResponse, error) { + rsp, err := c.GetAssetScanEstimations(ctx, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetAssetScanEstimationsResponse(rsp) +} + +// PostAssetScanEstimationsWithBodyWithResponse request with arbitrary body returning *PostAssetScanEstimationsResponse +func (c *ClientWithResponses) PostAssetScanEstimationsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostAssetScanEstimationsResponse, error) { + rsp, err := c.PostAssetScanEstimationsWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePostAssetScanEstimationsResponse(rsp) +} + +func (c *ClientWithResponses) PostAssetScanEstimationsWithResponse(ctx context.Context, body PostAssetScanEstimationsJSONRequestBody, reqEditors ...RequestEditorFn) (*PostAssetScanEstimationsResponse, error) { + rsp, err := c.PostAssetScanEstimations(ctx, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePostAssetScanEstimationsResponse(rsp) +} + +// GetAssetScanEstimationsAssetScanEstimationIDWithResponse request returning *GetAssetScanEstimationsAssetScanEstimationIDResponse +func (c *ClientWithResponses) GetAssetScanEstimationsAssetScanEstimationIDWithResponse(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *GetAssetScanEstimationsAssetScanEstimationIDParams, reqEditors ...RequestEditorFn) (*GetAssetScanEstimationsAssetScanEstimationIDResponse, error) { + rsp, err := c.GetAssetScanEstimationsAssetScanEstimationID(ctx, assetScanEstimationID, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetAssetScanEstimationsAssetScanEstimationIDResponse(rsp) +} + +// PatchAssetScanEstimationsAssetScanEstimationIDWithBodyWithResponse request with arbitrary body returning *PatchAssetScanEstimationsAssetScanEstimationIDResponse +func (c *ClientWithResponses) PatchAssetScanEstimationsAssetScanEstimationIDWithBodyWithResponse(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *PatchAssetScanEstimationsAssetScanEstimationIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PatchAssetScanEstimationsAssetScanEstimationIDResponse, error) { + rsp, err := c.PatchAssetScanEstimationsAssetScanEstimationIDWithBody(ctx, assetScanEstimationID, params, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePatchAssetScanEstimationsAssetScanEstimationIDResponse(rsp) +} + +func (c *ClientWithResponses) PatchAssetScanEstimationsAssetScanEstimationIDWithResponse(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *PatchAssetScanEstimationsAssetScanEstimationIDParams, body PatchAssetScanEstimationsAssetScanEstimationIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PatchAssetScanEstimationsAssetScanEstimationIDResponse, error) { + rsp, err := c.PatchAssetScanEstimationsAssetScanEstimationID(ctx, assetScanEstimationID, params, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePatchAssetScanEstimationsAssetScanEstimationIDResponse(rsp) +} + +// PutAssetScanEstimationsAssetScanEstimationIDWithBodyWithResponse request with arbitrary body returning *PutAssetScanEstimationsAssetScanEstimationIDResponse +func (c *ClientWithResponses) PutAssetScanEstimationsAssetScanEstimationIDWithBodyWithResponse(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *PutAssetScanEstimationsAssetScanEstimationIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PutAssetScanEstimationsAssetScanEstimationIDResponse, error) { + rsp, err := c.PutAssetScanEstimationsAssetScanEstimationIDWithBody(ctx, assetScanEstimationID, params, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePutAssetScanEstimationsAssetScanEstimationIDResponse(rsp) +} + +func (c *ClientWithResponses) PutAssetScanEstimationsAssetScanEstimationIDWithResponse(ctx context.Context, assetScanEstimationID AssetScanEstimationID, params *PutAssetScanEstimationsAssetScanEstimationIDParams, body PutAssetScanEstimationsAssetScanEstimationIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PutAssetScanEstimationsAssetScanEstimationIDResponse, error) { + rsp, err := c.PutAssetScanEstimationsAssetScanEstimationID(ctx, assetScanEstimationID, params, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePutAssetScanEstimationsAssetScanEstimationIDResponse(rsp) +} + // GetAssetScansWithResponse request returning *GetAssetScansResponse func (c *ClientWithResponses) GetAssetScansWithResponse(ctx context.Context, params *GetAssetScansParams, reqEditors ...RequestEditorFn) (*GetAssetScansResponse, error) { rsp, err := c.GetAssetScans(ctx, params, reqEditors...) @@ -3877,85 +5288,163 @@ func (c *ClientWithResponses) GetOpenAPISpecWithResponse(ctx context.Context, re if err != nil { return nil, err } - return ParseGetOpenAPISpecResponse(rsp) + return ParseGetOpenAPISpecResponse(rsp) +} + +// GetScanConfigsWithResponse request returning *GetScanConfigsResponse +func (c *ClientWithResponses) GetScanConfigsWithResponse(ctx context.Context, params *GetScanConfigsParams, reqEditors ...RequestEditorFn) (*GetScanConfigsResponse, error) { + rsp, err := c.GetScanConfigs(ctx, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetScanConfigsResponse(rsp) +} + +// PostScanConfigsWithBodyWithResponse request with arbitrary body returning *PostScanConfigsResponse +func (c *ClientWithResponses) PostScanConfigsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostScanConfigsResponse, error) { + rsp, err := c.PostScanConfigsWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePostScanConfigsResponse(rsp) +} + +func (c *ClientWithResponses) PostScanConfigsWithResponse(ctx context.Context, body PostScanConfigsJSONRequestBody, reqEditors ...RequestEditorFn) (*PostScanConfigsResponse, error) { + rsp, err := c.PostScanConfigs(ctx, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePostScanConfigsResponse(rsp) +} + +// DeleteScanConfigsScanConfigIDWithResponse request returning *DeleteScanConfigsScanConfigIDResponse +func (c *ClientWithResponses) DeleteScanConfigsScanConfigIDWithResponse(ctx context.Context, scanConfigID ScanConfigID, reqEditors ...RequestEditorFn) (*DeleteScanConfigsScanConfigIDResponse, error) { + rsp, err := c.DeleteScanConfigsScanConfigID(ctx, scanConfigID, reqEditors...) + if err != nil { + return nil, err + } + return ParseDeleteScanConfigsScanConfigIDResponse(rsp) +} + +// GetScanConfigsScanConfigIDWithResponse request returning *GetScanConfigsScanConfigIDResponse +func (c *ClientWithResponses) GetScanConfigsScanConfigIDWithResponse(ctx context.Context, scanConfigID ScanConfigID, params *GetScanConfigsScanConfigIDParams, reqEditors ...RequestEditorFn) (*GetScanConfigsScanConfigIDResponse, error) { + rsp, err := c.GetScanConfigsScanConfigID(ctx, scanConfigID, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetScanConfigsScanConfigIDResponse(rsp) +} + +// PatchScanConfigsScanConfigIDWithBodyWithResponse request with arbitrary body returning *PatchScanConfigsScanConfigIDResponse +func (c *ClientWithResponses) PatchScanConfigsScanConfigIDWithBodyWithResponse(ctx context.Context, scanConfigID ScanConfigID, params *PatchScanConfigsScanConfigIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PatchScanConfigsScanConfigIDResponse, error) { + rsp, err := c.PatchScanConfigsScanConfigIDWithBody(ctx, scanConfigID, params, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePatchScanConfigsScanConfigIDResponse(rsp) +} + +func (c *ClientWithResponses) PatchScanConfigsScanConfigIDWithResponse(ctx context.Context, scanConfigID ScanConfigID, params *PatchScanConfigsScanConfigIDParams, body PatchScanConfigsScanConfigIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PatchScanConfigsScanConfigIDResponse, error) { + rsp, err := c.PatchScanConfigsScanConfigID(ctx, scanConfigID, params, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePatchScanConfigsScanConfigIDResponse(rsp) +} + +// PutScanConfigsScanConfigIDWithBodyWithResponse request with arbitrary body returning *PutScanConfigsScanConfigIDResponse +func (c *ClientWithResponses) PutScanConfigsScanConfigIDWithBodyWithResponse(ctx context.Context, scanConfigID ScanConfigID, params *PutScanConfigsScanConfigIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PutScanConfigsScanConfigIDResponse, error) { + rsp, err := c.PutScanConfigsScanConfigIDWithBody(ctx, scanConfigID, params, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePutScanConfigsScanConfigIDResponse(rsp) +} + +func (c *ClientWithResponses) PutScanConfigsScanConfigIDWithResponse(ctx context.Context, scanConfigID ScanConfigID, params *PutScanConfigsScanConfigIDParams, body PutScanConfigsScanConfigIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PutScanConfigsScanConfigIDResponse, error) { + rsp, err := c.PutScanConfigsScanConfigID(ctx, scanConfigID, params, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePutScanConfigsScanConfigIDResponse(rsp) } -// GetScanConfigsWithResponse request returning *GetScanConfigsResponse -func (c *ClientWithResponses) GetScanConfigsWithResponse(ctx context.Context, params *GetScanConfigsParams, reqEditors ...RequestEditorFn) (*GetScanConfigsResponse, error) { - rsp, err := c.GetScanConfigs(ctx, params, reqEditors...) +// GetScanEstimationsWithResponse request returning *GetScanEstimationsResponse +func (c *ClientWithResponses) GetScanEstimationsWithResponse(ctx context.Context, params *GetScanEstimationsParams, reqEditors ...RequestEditorFn) (*GetScanEstimationsResponse, error) { + rsp, err := c.GetScanEstimations(ctx, params, reqEditors...) if err != nil { return nil, err } - return ParseGetScanConfigsResponse(rsp) + return ParseGetScanEstimationsResponse(rsp) } -// PostScanConfigsWithBodyWithResponse request with arbitrary body returning *PostScanConfigsResponse -func (c *ClientWithResponses) PostScanConfigsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostScanConfigsResponse, error) { - rsp, err := c.PostScanConfigsWithBody(ctx, contentType, body, reqEditors...) +// PostScanEstimationsWithBodyWithResponse request with arbitrary body returning *PostScanEstimationsResponse +func (c *ClientWithResponses) PostScanEstimationsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostScanEstimationsResponse, error) { + rsp, err := c.PostScanEstimationsWithBody(ctx, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParsePostScanConfigsResponse(rsp) + return ParsePostScanEstimationsResponse(rsp) } -func (c *ClientWithResponses) PostScanConfigsWithResponse(ctx context.Context, body PostScanConfigsJSONRequestBody, reqEditors ...RequestEditorFn) (*PostScanConfigsResponse, error) { - rsp, err := c.PostScanConfigs(ctx, body, reqEditors...) +func (c *ClientWithResponses) PostScanEstimationsWithResponse(ctx context.Context, body PostScanEstimationsJSONRequestBody, reqEditors ...RequestEditorFn) (*PostScanEstimationsResponse, error) { + rsp, err := c.PostScanEstimations(ctx, body, reqEditors...) if err != nil { return nil, err } - return ParsePostScanConfigsResponse(rsp) + return ParsePostScanEstimationsResponse(rsp) } -// DeleteScanConfigsScanConfigIDWithResponse request returning *DeleteScanConfigsScanConfigIDResponse -func (c *ClientWithResponses) DeleteScanConfigsScanConfigIDWithResponse(ctx context.Context, scanConfigID ScanConfigID, reqEditors ...RequestEditorFn) (*DeleteScanConfigsScanConfigIDResponse, error) { - rsp, err := c.DeleteScanConfigsScanConfigID(ctx, scanConfigID, reqEditors...) +// DeleteScanEstimationsScanEstimationIDWithResponse request returning *DeleteScanEstimationsScanEstimationIDResponse +func (c *ClientWithResponses) DeleteScanEstimationsScanEstimationIDWithResponse(ctx context.Context, scanEstimationID ScanEstimationID, reqEditors ...RequestEditorFn) (*DeleteScanEstimationsScanEstimationIDResponse, error) { + rsp, err := c.DeleteScanEstimationsScanEstimationID(ctx, scanEstimationID, reqEditors...) if err != nil { return nil, err } - return ParseDeleteScanConfigsScanConfigIDResponse(rsp) + return ParseDeleteScanEstimationsScanEstimationIDResponse(rsp) } -// GetScanConfigsScanConfigIDWithResponse request returning *GetScanConfigsScanConfigIDResponse -func (c *ClientWithResponses) GetScanConfigsScanConfigIDWithResponse(ctx context.Context, scanConfigID ScanConfigID, params *GetScanConfigsScanConfigIDParams, reqEditors ...RequestEditorFn) (*GetScanConfigsScanConfigIDResponse, error) { - rsp, err := c.GetScanConfigsScanConfigID(ctx, scanConfigID, params, reqEditors...) +// GetScanEstimationsScanEstimationIDWithResponse request returning *GetScanEstimationsScanEstimationIDResponse +func (c *ClientWithResponses) GetScanEstimationsScanEstimationIDWithResponse(ctx context.Context, scanEstimationID ScanEstimationID, params *GetScanEstimationsScanEstimationIDParams, reqEditors ...RequestEditorFn) (*GetScanEstimationsScanEstimationIDResponse, error) { + rsp, err := c.GetScanEstimationsScanEstimationID(ctx, scanEstimationID, params, reqEditors...) if err != nil { return nil, err } - return ParseGetScanConfigsScanConfigIDResponse(rsp) + return ParseGetScanEstimationsScanEstimationIDResponse(rsp) } -// PatchScanConfigsScanConfigIDWithBodyWithResponse request with arbitrary body returning *PatchScanConfigsScanConfigIDResponse -func (c *ClientWithResponses) PatchScanConfigsScanConfigIDWithBodyWithResponse(ctx context.Context, scanConfigID ScanConfigID, params *PatchScanConfigsScanConfigIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PatchScanConfigsScanConfigIDResponse, error) { - rsp, err := c.PatchScanConfigsScanConfigIDWithBody(ctx, scanConfigID, params, contentType, body, reqEditors...) +// PatchScanEstimationsScanEstimationIDWithBodyWithResponse request with arbitrary body returning *PatchScanEstimationsScanEstimationIDResponse +func (c *ClientWithResponses) PatchScanEstimationsScanEstimationIDWithBodyWithResponse(ctx context.Context, scanEstimationID ScanEstimationID, params *PatchScanEstimationsScanEstimationIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PatchScanEstimationsScanEstimationIDResponse, error) { + rsp, err := c.PatchScanEstimationsScanEstimationIDWithBody(ctx, scanEstimationID, params, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParsePatchScanConfigsScanConfigIDResponse(rsp) + return ParsePatchScanEstimationsScanEstimationIDResponse(rsp) } -func (c *ClientWithResponses) PatchScanConfigsScanConfigIDWithResponse(ctx context.Context, scanConfigID ScanConfigID, params *PatchScanConfigsScanConfigIDParams, body PatchScanConfigsScanConfigIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PatchScanConfigsScanConfigIDResponse, error) { - rsp, err := c.PatchScanConfigsScanConfigID(ctx, scanConfigID, params, body, reqEditors...) +func (c *ClientWithResponses) PatchScanEstimationsScanEstimationIDWithResponse(ctx context.Context, scanEstimationID ScanEstimationID, params *PatchScanEstimationsScanEstimationIDParams, body PatchScanEstimationsScanEstimationIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PatchScanEstimationsScanEstimationIDResponse, error) { + rsp, err := c.PatchScanEstimationsScanEstimationID(ctx, scanEstimationID, params, body, reqEditors...) if err != nil { return nil, err } - return ParsePatchScanConfigsScanConfigIDResponse(rsp) + return ParsePatchScanEstimationsScanEstimationIDResponse(rsp) } -// PutScanConfigsScanConfigIDWithBodyWithResponse request with arbitrary body returning *PutScanConfigsScanConfigIDResponse -func (c *ClientWithResponses) PutScanConfigsScanConfigIDWithBodyWithResponse(ctx context.Context, scanConfigID ScanConfigID, params *PutScanConfigsScanConfigIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PutScanConfigsScanConfigIDResponse, error) { - rsp, err := c.PutScanConfigsScanConfigIDWithBody(ctx, scanConfigID, params, contentType, body, reqEditors...) +// PutScanEstimationsScanEstimationIDWithBodyWithResponse request with arbitrary body returning *PutScanEstimationsScanEstimationIDResponse +func (c *ClientWithResponses) PutScanEstimationsScanEstimationIDWithBodyWithResponse(ctx context.Context, scanEstimationID ScanEstimationID, params *PutScanEstimationsScanEstimationIDParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PutScanEstimationsScanEstimationIDResponse, error) { + rsp, err := c.PutScanEstimationsScanEstimationIDWithBody(ctx, scanEstimationID, params, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParsePutScanConfigsScanConfigIDResponse(rsp) + return ParsePutScanEstimationsScanEstimationIDResponse(rsp) } -func (c *ClientWithResponses) PutScanConfigsScanConfigIDWithResponse(ctx context.Context, scanConfigID ScanConfigID, params *PutScanConfigsScanConfigIDParams, body PutScanConfigsScanConfigIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PutScanConfigsScanConfigIDResponse, error) { - rsp, err := c.PutScanConfigsScanConfigID(ctx, scanConfigID, params, body, reqEditors...) +func (c *ClientWithResponses) PutScanEstimationsScanEstimationIDWithResponse(ctx context.Context, scanEstimationID ScanEstimationID, params *PutScanEstimationsScanEstimationIDParams, body PutScanEstimationsScanEstimationIDJSONRequestBody, reqEditors ...RequestEditorFn) (*PutScanEstimationsScanEstimationIDResponse, error) { + rsp, err := c.PutScanEstimationsScanEstimationID(ctx, scanEstimationID, params, body, reqEditors...) if err != nil { return nil, err } - return ParsePutScanConfigsScanConfigIDResponse(rsp) + return ParsePutScanEstimationsScanEstimationIDResponse(rsp) } // GetScansWithResponse request returning *GetScansResponse @@ -4036,6 +5525,248 @@ func (c *ClientWithResponses) PutScansScanIDWithResponse(ctx context.Context, sc return ParsePutScansScanIDResponse(rsp) } +// ParseGetAssetScanEstimationsResponse parses an HTTP response from a GetAssetScanEstimationsWithResponse call +func ParseGetAssetScanEstimationsResponse(rsp *http.Response) (*GetAssetScanEstimationsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetAssetScanEstimationsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest AssetScanEstimations + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} + +// ParsePostAssetScanEstimationsResponse parses an HTTP response from a PostAssetScanEstimationsWithResponse call +func ParsePostAssetScanEstimationsResponse(rsp *http.Response) (*PostAssetScanEstimationsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &PostAssetScanEstimationsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: + var dest AssetScanEstimation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON201 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + var dest AssetScanEstimationExists + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON409 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} + +// ParseGetAssetScanEstimationsAssetScanEstimationIDResponse parses an HTTP response from a GetAssetScanEstimationsAssetScanEstimationIDWithResponse call +func ParseGetAssetScanEstimationsAssetScanEstimationIDResponse(rsp *http.Response) (*GetAssetScanEstimationsAssetScanEstimationIDResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetAssetScanEstimationsAssetScanEstimationIDResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest AssetScanEstimation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} + +// ParsePatchAssetScanEstimationsAssetScanEstimationIDResponse parses an HTTP response from a PatchAssetScanEstimationsAssetScanEstimationIDWithResponse call +func ParsePatchAssetScanEstimationsAssetScanEstimationIDResponse(rsp *http.Response) (*PatchAssetScanEstimationsAssetScanEstimationIDResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &PatchAssetScanEstimationsAssetScanEstimationIDResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest AssetScanEstimation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + var dest AssetScanEstimationExists + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON409 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 412: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON412 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} + +// ParsePutAssetScanEstimationsAssetScanEstimationIDResponse parses an HTTP response from a PutAssetScanEstimationsAssetScanEstimationIDWithResponse call +func ParsePutAssetScanEstimationsAssetScanEstimationIDResponse(rsp *http.Response) (*PutAssetScanEstimationsAssetScanEstimationIDResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &PutAssetScanEstimationsAssetScanEstimationIDResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest AssetScanEstimation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + var dest AssetScanEstimationExists + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON409 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 412: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON412 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} + // ParseGetAssetScansResponse parses an HTTP response from a GetAssetScansWithResponse call func ParseGetAssetScansResponse(rsp *http.Response) (*GetAssetScansResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) @@ -5129,6 +6860,288 @@ func ParsePutScanConfigsScanConfigIDResponse(rsp *http.Response) (*PutScanConfig return response, nil } +// ParseGetScanEstimationsResponse parses an HTTP response from a GetScanEstimationsWithResponse call +func ParseGetScanEstimationsResponse(rsp *http.Response) (*GetScanEstimationsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetScanEstimationsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest ScanEstimations + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} + +// ParsePostScanEstimationsResponse parses an HTTP response from a PostScanEstimationsWithResponse call +func ParsePostScanEstimationsResponse(rsp *http.Response) (*PostScanEstimationsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &PostScanEstimationsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: + var dest ScanEstimation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON201 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + var dest ScanEstimationExists + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON409 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} + +// ParseDeleteScanEstimationsScanEstimationIDResponse parses an HTTP response from a DeleteScanEstimationsScanEstimationIDWithResponse call +func ParseDeleteScanEstimationsScanEstimationIDResponse(rsp *http.Response) (*DeleteScanEstimationsScanEstimationIDResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &DeleteScanEstimationsScanEstimationIDResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest SuccessResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} + +// ParseGetScanEstimationsScanEstimationIDResponse parses an HTTP response from a GetScanEstimationsScanEstimationIDWithResponse call +func ParseGetScanEstimationsScanEstimationIDResponse(rsp *http.Response) (*GetScanEstimationsScanEstimationIDResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetScanEstimationsScanEstimationIDResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest ScanEstimation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} + +// ParsePatchScanEstimationsScanEstimationIDResponse parses an HTTP response from a PatchScanEstimationsScanEstimationIDWithResponse call +func ParsePatchScanEstimationsScanEstimationIDResponse(rsp *http.Response) (*PatchScanEstimationsScanEstimationIDResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &PatchScanEstimationsScanEstimationIDResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest ScanEstimation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + var dest ScanEstimationExists + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON409 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 412: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON412 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} + +// ParsePutScanEstimationsScanEstimationIDResponse parses an HTTP response from a PutScanEstimationsScanEstimationIDWithResponse call +func ParsePutScanEstimationsScanEstimationIDResponse(rsp *http.Response) (*PutScanEstimationsScanEstimationIDResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &PutScanEstimationsScanEstimationIDResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest ScanEstimation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + var dest ScanEstimationExists + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON409 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 412: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON412 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest ApiResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} + // ParseGetScansResponse parses an HTTP response from a GetScansWithResponse call func ParseGetScansResponse(rsp *http.Response) (*GetScansResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) diff --git a/api/models/models.gen.go b/api/models/models.gen.go index fb0b09881..026612ea8 100644 --- a/api/models/models.gen.go +++ b/api/models/models.gen.go @@ -11,6 +11,14 @@ import ( "github.com/deepmap/oapi-codegen/pkg/runtime" ) +// Defines values for AssetScanEstimationStateState. +const ( + AssetScanEstimationStateStateAborted AssetScanEstimationStateState = "Aborted" + AssetScanEstimationStateStateDone AssetScanEstimationStateState = "Done" + AssetScanEstimationStateStateFailed AssetScanEstimationStateState = "Failed" + AssetScanEstimationStateStatePending AssetScanEstimationStateState = "Pending" +) + // Defines values for AssetScanStateState. const ( AssetScanStateStateAborted AssetScanStateState = "Aborted" @@ -83,6 +91,27 @@ const ( ScanStateReasonUnexpected ScanStateReason = "Unexpected" ) +// Defines values for ScanEstimationState. +const ( + ScanEstimationStateAborted ScanEstimationState = "Aborted" + ScanEstimationStateDiscovered ScanEstimationState = "Discovered" + ScanEstimationStateDone ScanEstimationState = "Done" + ScanEstimationStateFailed ScanEstimationState = "Failed" + ScanEstimationStateInProgress ScanEstimationState = "InProgress" + ScanEstimationStatePending ScanEstimationState = "Pending" +) + +// Defines values for ScanEstimationStateReason. +const ( + ScanEstimationStateReasonAborted ScanEstimationStateReason = "Aborted" + ScanEstimationStateReasonDiscoveryFailed ScanEstimationStateReason = "DiscoveryFailed" + ScanEstimationStateReasonNothingToEstimate ScanEstimationStateReason = "NothingToEstimate" + ScanEstimationStateReasonOneOrMoreAssetFailedToEstimate ScanEstimationStateReason = "OneOrMoreAssetFailedToEstimate" + ScanEstimationStateReasonSuccess ScanEstimationStateReason = "Success" + ScanEstimationStateReasonTimedOut ScanEstimationStateReason = "TimedOut" + ScanEstimationStateReasonUnexpected ScanEstimationStateReason = "Unexpected" +) + // Defines values for ScanRelationshipState. const ( ScanRelationshipStateAborted ScanRelationshipState = "Aborted" @@ -204,6 +233,45 @@ type AssetScan struct { Vulnerabilities *VulnerabilityScan `json:"vulnerabilities,omitempty"` } +// AssetScanEstimation defines model for AssetScanEstimation. +type AssetScanEstimation struct { + // Asset Describes an asset object. + Asset *Asset `json:"asset,omitempty"` + AssetScanTemplate *AssetScanTemplate `json:"assetScanTemplate,omitempty"` + Estimation *Estimation `json:"estimation,omitempty"` + Id *string `json:"id,omitempty"` + Revision *int `json:"revision,omitempty"` + ScanEstimation *ScanEstimationRelationship `json:"scanEstimation,omitempty"` + State *AssetScanEstimationState `json:"state,omitempty"` +} + +// AssetScanEstimationExists defines model for AssetScanEstimationExists. +type AssetScanEstimationExists struct { + AssetScanEstimation *AssetScanEstimation `json:"assetScanEstimation,omitempty"` + + // Message Describes which unique constraint combination causes the conflict. + Message *string `json:"message,omitempty"` +} + +// AssetScanEstimationState defines model for AssetScanEstimationState. +type AssetScanEstimationState struct { + Errors *[]string `json:"errors"` + LastTransitionTime *time.Time `json:"lastTransitionTime,omitempty"` + State *AssetScanEstimationStateState `json:"state,omitempty"` +} + +// AssetScanEstimationStateState defines model for AssetScanEstimationState.State. +type AssetScanEstimationStateState string + +// AssetScanEstimations defines model for AssetScanEstimations. +type AssetScanEstimations struct { + // Count Total AssetScanEstimations count according to the given filters + Count *int `json:"count,omitempty"` + + // Items List of AssetScanEstimations according to the given filters + Items *[]AssetScanEstimation `json:"items,omitempty"` +} + // AssetScanExists defines model for AssetScanExists. type AssetScanExists struct { AssetScan *AssetScan `json:"assetScan,omitempty"` @@ -375,6 +443,19 @@ type DirInfo struct { ObjectType string `json:"objectType"` } +// Estimation defines model for Estimation. +type Estimation struct { + // Cost Total cost of the scan ($) + Cost *float32 `json:"cost,omitempty"` + Recipe *[]RecipeComponent `json:"recipe,omitempty"` + + // Size Total size of the scan (GB) + Size *int `json:"size,omitempty"` + + // Time Total time the scan will take (seconds) + Time *int `json:"time,omitempty"` +} + // Exploit defines model for Exploit. type Exploit struct { CveID *string `json:"cveID,omitempty"` @@ -548,6 +629,12 @@ type PodInfo struct { PodName *string `json:"podName,omitempty"` } +// RecipeComponent defines model for RecipeComponent. +type RecipeComponent struct { + Cost *float32 `json:"cost,omitempty"` + Operation *string `json:"operation,omitempty"` +} + // ResourceCleanupState defines model for ResourceCleanupState. type ResourceCleanupState string @@ -700,6 +787,61 @@ type ScanConfigs struct { Items *[]ScanConfig `json:"items,omitempty"` } +// ScanEstimation defines model for ScanEstimation. +type ScanEstimation struct { + // AssetIDs List of asset IDs to be estimated + AssetIDs *[]string `json:"assetIDs"` + EndTime *time.Time `json:"endTime,omitempty"` + Estimation *Estimation `json:"estimation,omitempty"` + Id *string `json:"id,omitempty"` + Revision *int `json:"revision,omitempty"` + ScanTemplate *ScanTemplate `json:"scanTemplate,omitempty"` + StartTime *time.Time `json:"startTime,omitempty"` + + // State The lifecycle state of this scan estimation. + State *ScanEstimationState `json:"state,omitempty"` + + // StateMessage Human-readable message indicating details about the last state transition. + StateMessage *string `json:"stateMessage,omitempty"` + + // StateReason Machine-readable, UpperCamelCase text indicating the reason for the condition's last transition. + StateReason *ScanEstimationStateReason `json:"stateReason,omitempty"` + Summary *ScanEstimationSummary `json:"summary,omitempty"` +} + +// ScanEstimationState The lifecycle state of this scan estimation. +type ScanEstimationState string + +// ScanEstimationStateReason Machine-readable, UpperCamelCase text indicating the reason for the condition's last transition. +type ScanEstimationStateReason string + +// ScanEstimationExists defines model for ScanEstimationExists. +type ScanEstimationExists struct { + // Message Describes which unique constraint combination causes the conflict. + Message *string `json:"message,omitempty"` + ScanEstimation *ScanEstimation `json:"scanEstimation,omitempty"` +} + +// ScanEstimationRelationship defines model for ScanEstimationRelationship. +type ScanEstimationRelationship struct { + Id *string `json:"id,omitempty"` +} + +// ScanEstimationSummary defines model for ScanEstimationSummary. +type ScanEstimationSummary struct { + JobsCompleted *int `json:"jobsCompleted,omitempty"` + JobsLeftToRun *int `json:"jobsLeftToRun,omitempty"` +} + +// ScanEstimations defines model for ScanEstimations. +type ScanEstimations struct { + // Count Total ScanEstimations count according to the given filters + Count *int `json:"count,omitempty"` + + // Items List of ScanEstimations according to the given filters + Items *[]ScanEstimation `json:"items,omitempty"` +} + // ScanExists defines model for ScanExists. type ScanExists struct { // Message Describes which unique constraint combination causes the conflict. @@ -1037,6 +1179,9 @@ type VulnerabilitySeverity string // AssetID defines model for assetID. type AssetID = string +// AssetScanEstimationID defines model for assetScanEstimationID. +type AssetScanEstimationID = string + // AssetScanID defines model for assetScanID. type AssetScanID = string @@ -1070,6 +1215,9 @@ type OdataTop = int // ScanConfigID defines model for scanConfigID. type ScanConfigID = string +// ScanEstimationID defines model for scanEstimationID. +type ScanEstimationID = string + // ScanID defines model for scanID. type ScanID = string @@ -1079,6 +1227,33 @@ type Success = SuccessResponse // UnknownError An object that is returned in all cases of failures. type UnknownError = ApiResponse +// GetAssetScanEstimationsParams defines parameters for GetAssetScanEstimations. +type GetAssetScanEstimationsParams struct { + Filter *OdataFilter `form:"$filter,omitempty" json:"$filter,omitempty"` + Select *OdataSelect `form:"$select,omitempty" json:"$select,omitempty"` + Count *OdataCount `form:"$count,omitempty" json:"$count,omitempty"` + Top *OdataTop `form:"$top,omitempty" json:"$top,omitempty"` + Skip *OdataSkip `form:"$skip,omitempty" json:"$skip,omitempty"` + Expand *OdataExpand `form:"$expand,omitempty" json:"$expand,omitempty"` + OrderBy *OrderBy `form:"$orderby,omitempty" json:"$orderby,omitempty"` +} + +// GetAssetScanEstimationsAssetScanEstimationIDParams defines parameters for GetAssetScanEstimationsAssetScanEstimationID. +type GetAssetScanEstimationsAssetScanEstimationIDParams struct { + Select *OdataSelect `form:"$select,omitempty" json:"$select,omitempty"` + Expand *OdataExpand `form:"$expand,omitempty" json:"$expand,omitempty"` +} + +// PatchAssetScanEstimationsAssetScanEstimationIDParams defines parameters for PatchAssetScanEstimationsAssetScanEstimationID. +type PatchAssetScanEstimationsAssetScanEstimationIDParams struct { + IfMatch *Ifmatch `json:"If-Match,omitempty"` +} + +// PutAssetScanEstimationsAssetScanEstimationIDParams defines parameters for PutAssetScanEstimationsAssetScanEstimationID. +type PutAssetScanEstimationsAssetScanEstimationIDParams struct { + IfMatch *Ifmatch `json:"If-Match,omitempty"` +} + // GetAssetScansParams defines parameters for GetAssetScans. type GetAssetScansParams struct { Filter *OdataFilter `form:"$filter,omitempty" json:"$filter,omitempty"` @@ -1177,6 +1352,33 @@ type PutScanConfigsScanConfigIDParams struct { IfMatch *Ifmatch `json:"If-Match,omitempty"` } +// GetScanEstimationsParams defines parameters for GetScanEstimations. +type GetScanEstimationsParams struct { + Filter *OdataFilter `form:"$filter,omitempty" json:"$filter,omitempty"` + Select *OdataSelect `form:"$select,omitempty" json:"$select,omitempty"` + Count *OdataCount `form:"$count,omitempty" json:"$count,omitempty"` + Top *OdataTop `form:"$top,omitempty" json:"$top,omitempty"` + Skip *OdataSkip `form:"$skip,omitempty" json:"$skip,omitempty"` + Expand *OdataExpand `form:"$expand,omitempty" json:"$expand,omitempty"` + OrderBy *OrderBy `form:"$orderby,omitempty" json:"$orderby,omitempty"` +} + +// GetScanEstimationsScanEstimationIDParams defines parameters for GetScanEstimationsScanEstimationID. +type GetScanEstimationsScanEstimationIDParams struct { + Select *OdataSelect `form:"$select,omitempty" json:"$select,omitempty"` + Expand *OdataExpand `form:"$expand,omitempty" json:"$expand,omitempty"` +} + +// PatchScanEstimationsScanEstimationIDParams defines parameters for PatchScanEstimationsScanEstimationID. +type PatchScanEstimationsScanEstimationIDParams struct { + IfMatch *Ifmatch `json:"If-Match,omitempty"` +} + +// PutScanEstimationsScanEstimationIDParams defines parameters for PutScanEstimationsScanEstimationID. +type PutScanEstimationsScanEstimationIDParams struct { + IfMatch *Ifmatch `json:"If-Match,omitempty"` +} + // GetScansParams defines parameters for GetScans. type GetScansParams struct { Filter *OdataFilter `form:"$filter,omitempty" json:"$filter,omitempty"` @@ -1204,6 +1406,15 @@ type PutScansScanIDParams struct { IfMatch *Ifmatch `json:"If-Match,omitempty"` } +// PostAssetScanEstimationsJSONRequestBody defines body for PostAssetScanEstimations for application/json ContentType. +type PostAssetScanEstimationsJSONRequestBody = AssetScanEstimation + +// PatchAssetScanEstimationsAssetScanEstimationIDJSONRequestBody defines body for PatchAssetScanEstimationsAssetScanEstimationID for application/json ContentType. +type PatchAssetScanEstimationsAssetScanEstimationIDJSONRequestBody = AssetScanEstimation + +// PutAssetScanEstimationsAssetScanEstimationIDJSONRequestBody defines body for PutAssetScanEstimationsAssetScanEstimationID for application/json ContentType. +type PutAssetScanEstimationsAssetScanEstimationIDJSONRequestBody = AssetScanEstimation + // PostAssetScansJSONRequestBody defines body for PostAssetScans for application/json ContentType. type PostAssetScansJSONRequestBody = AssetScan @@ -1240,6 +1451,15 @@ type PatchScanConfigsScanConfigIDJSONRequestBody = ScanConfig // PutScanConfigsScanConfigIDJSONRequestBody defines body for PutScanConfigsScanConfigID for application/json ContentType. type PutScanConfigsScanConfigIDJSONRequestBody = ScanConfig +// PostScanEstimationsJSONRequestBody defines body for PostScanEstimations for application/json ContentType. +type PostScanEstimationsJSONRequestBody = ScanEstimation + +// PatchScanEstimationsScanEstimationIDJSONRequestBody defines body for PatchScanEstimationsScanEstimationID for application/json ContentType. +type PatchScanEstimationsScanEstimationIDJSONRequestBody = ScanEstimation + +// PutScanEstimationsScanEstimationIDJSONRequestBody defines body for PutScanEstimationsScanEstimationID for application/json ContentType. +type PutScanEstimationsScanEstimationIDJSONRequestBody = ScanEstimation + // PostScansJSONRequestBody defines body for PostScans for application/json ContentType. type PostScansJSONRequestBody = Scan diff --git a/api/openapi.yaml b/api/openapi.yaml index c829a65fc..a90e7d597 100644 --- a/api/openapi.yaml +++ b/api/openapi.yaml @@ -905,6 +905,361 @@ paths: default: $ref: '#/components/responses/UnknownError' + /scanEstimations: + get: + summary: Get all scans. Each scan estimation contains details about a multi-asset scan estimation. + operationId: GetScanEstimations + parameters: + - $ref: '#/components/parameters/odataFilter' + - $ref: '#/components/parameters/odataSelect' + - $ref: '#/components/parameters/odataCount' + - $ref: '#/components/parameters/odataTop' + - $ref: '#/components/parameters/odataSkip' + - $ref: '#/components/parameters/odataExpand' + - $ref: '#/components/parameters/odataOrderBy' + responses: + 200: + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ScanEstimations' + default: + $ref: '#/components/responses/UnknownError' + post: + summary: Create a multi-asset scan estimation + operationId: PostScanEstimations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ScanEstimation' + required: true + responses: + 201: + description: A new scan estimation was created. + content: + application/json: + schema: + $ref: '#/components/schemas/ScanEstimation' + 400: + description: Invalid scan estimation supplied. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + 409: + description: Scan estimation already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/ScanEstimationExists' + default: + $ref: '#/components/responses/UnknownError' + x-codegen-request-body-name: body + + /scanEstimations/{scanEstimationID}: + get: + summary: Get the details for a given multi-asset scan estimation. + operationId: GetScanEstimationsScanEstimationID + parameters: + - $ref: '#/components/parameters/scanEstimationID' + - $ref: '#/components/parameters/odataSelect' + - $ref: '#/components/parameters/odataExpand' + responses: + 200: + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ScanEstimation' + 404: + description: Scan estimation ID not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + default: + $ref: '#/components/responses/UnknownError' + put: + summary: Update a scan estimation. + operationId: PutScanEstimationsScanEstimationID + parameters: + - $ref: '#/components/parameters/scanEstimationID' + - $ref: '#/components/parameters/ifmatch' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ScanEstimation' + required: true + responses: + 200: + description: Updated scan estimation successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/ScanEstimation' + 400: + description: Invalid scan estimation supplied. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + 404: + description: Scan estimation ID not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + 409: + description: Scan estimation already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/ScanEstimationExists' + 412: + description: Etag didn't match. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + default: + $ref: '#/components/responses/UnknownError' + x-codegen-request-body-name: body + patch: + summary: Patch a scan estimation. + operationId: PatchScanEstimationsScanEstimationID + parameters: + - $ref: '#/components/parameters/scanEstimationID' + - $ref: '#/components/parameters/ifmatch' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ScanEstimation' + required: true + responses: + 200: + description: Patched scan estimation successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/ScanEstimation' + 400: + description: Invalid scan estimation supplied. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + 404: + description: Scan estimation ID not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + 409: + description: Scan estimation already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/ScanEstimationExists' + 412: + description: Etag didn't match. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + default: + $ref: '#/components/responses/UnknownError' + x-codegen-request-body-name: body + delete: + summary: Delete a scan estimation. + operationId: DeleteScanEstimationsScanEstimationID + parameters: + - $ref: '#/components/parameters/scanEstimationID' + responses: + 200: + $ref: '#/components/responses/Success' + 404: + description: Scan estimation ID not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + default: + $ref: '#/components/responses/UnknownError' + + /assetScanEstimations: + get: + summary: Get asset scan estimations according to the given filters + operationId: GetAssetScanEstimations + parameters: + - $ref: '#/components/parameters/odataFilter' + - $ref: '#/components/parameters/odataSelect' + - $ref: '#/components/parameters/odataCount' + - $ref: '#/components/parameters/odataTop' + - $ref: '#/components/parameters/odataSkip' + - $ref: '#/components/parameters/odataExpand' + - $ref: '#/components/parameters/odataOrderBy' + responses: + 200: + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/AssetScanEstimations' + + default: + $ref: '#/components/responses/UnknownError' + post: + summary: Create an asset scan estimation for a specified asset + operationId: PostAssetScanEstimations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AssetScanEstimation' + required: true + responses: + 201: + description: AssetScanEstimation was created. + content: + application/json: + schema: + $ref: '#/components/schemas/AssetScanEstimation' + 400: + description: Invalid asset scan estimation supplied. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + 409: + description: Conflicting asset scan estimation found. + content: + application/json: + schema: + $ref: '#/components/schemas/AssetScanEstimationExists' + default: + $ref: '#/components/responses/UnknownError' + x-codegen-request-body-name: body + + /assetScanEstimations/{assetScanEstimationID}: + get: + summary: Get an asset scan stimation. + operationId: GetAssetScanEstimationsAssetScanEstimationID + parameters: + - $ref: '#/components/parameters/assetScanEstimationID' + - $ref: '#/components/parameters/odataSelect' + - $ref: '#/components/parameters/odataExpand' + responses: + 200: + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/AssetScanEstimation' + 404: + description: AssetScanEstimation ID not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + default: + $ref: '#/components/responses/UnknownError' + put: + summary: Update an asset scan estimation. + operationId: PutAssetScanEstimationsAssetScanEstimationID + parameters: + - $ref: '#/components/parameters/assetScanEstimationID' + - $ref: '#/components/parameters/ifmatch' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AssetScanEstimation' + required: true + responses: + 200: + description: Updated an asset scan estimation successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/AssetScanEstimation' + 400: + description: Invalid asset scan estimation supplied. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + 404: + description: AssetScanEstimation ID not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + 409: + description: Conflicting asset scan estimation found. + content: + application/json: + schema: + $ref: '#/components/schemas/AssetScanEstimationExists' + 412: + description: Etag didn't match. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + default: + $ref: '#/components/responses/UnknownError' + x-codegen-request-body-name: body + patch: + summary: Patch an asset scan estimation + operationId: PatchAssetScanEstimationsAssetScanEstimationID + parameters: + - $ref: '#/components/parameters/assetScanEstimationID' + - $ref: '#/components/parameters/ifmatch' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AssetScanEstimation' + required: true + responses: + 200: + description: Updated an asset scan estimation successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/AssetScanEstimation' + 400: + description: Invalid asset scan estimation supplied. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + 404: + description: AssetScanEstimation ID not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + 409: + description: Conflicting asset scan estimation found. + content: + application/json: + schema: + $ref: '#/components/schemas/AssetScanEstimationExists' + 412: + description: Etag didn't match. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + default: + $ref: '#/components/responses/UnknownError' + x-codegen-request-body-name: body + components: schemas: ApiResponse: @@ -1945,6 +2300,25 @@ components: type: string nullable: true + AssetScanEstimationState: + type: object + properties: + state: + type: string + enum: + - Pending + - Aborted + - Failed + - Done + lastTransitionTime: + type: string + format: date-time + errors: + type: array + items: + type: string + nullable: true + Package: type: object properties: @@ -2407,6 +2781,160 @@ components: Rootkit: '#/components/schemas/RootkitFindingInfo' Exploit: '#/components/schemas/ExploitFindingInfo' + ScanEstimations: + type: object + properties: + count: + description: Total ScanEstimations count according to the given filters + type: integer + items: + description: List of ScanEstimations according to the given filters + type: array + items: + $ref: '#/components/schemas/ScanEstimation' + + ScanEstimation: + type: object + properties: + id: + type: string + assetIDs: + description: List of asset IDs to be estimated + type: array + items: + type: string + nullable: true + state: + description: The lifecycle state of this scan estimation. + type: string + enum: + - Pending + - Discovered + - InProgress + - Aborted + - Failed + - Done + stateMessage: + description: Human-readable message indicating details about the last state transition. + type: string + stateReason: + description: Machine-readable, UpperCamelCase text indicating the reason for the condition's last transition. + type: string + enum: + - Aborted + - TimedOut + - OneOrMoreAssetFailedToEstimate + - DiscoveryFailed + - Unexpected + - NothingToEstimate + - Success + startTime: + type: string + format: date-time + endTime: + type: string + format: date-time + estimation: + $ref: '#/components/schemas/Estimation' + scanTemplate: + $ref: '#/components/schemas/ScanTemplate' + summary: + $ref: '#/components/schemas/ScanEstimationSummary' + revision: + type: integer + + ScanEstimationExists: + type: object + properties: + message: + description: Describes which unique constraint combination causes the conflict. + type: string + readOnly: true + scanEstimation: + $ref: '#/components/schemas/ScanEstimation' + + Estimation: + type: object + properties: + time: + description: Total time the scan will take (seconds) + type: integer + size: + description: Total size of the scan (GB) + type: integer + cost: + description: Total cost of the scan ($) + type: number + format: float + recipe: + type: array + items: + $ref: '#/components/schemas/RecipeComponent' + + RecipeComponent: + type: object + properties: + operation: + type: string + cost: + type: number + format: float + + AssetScanEstimations: + type: object + properties: + count: + description: Total AssetScanEstimations count according to the given filters + type: integer + items: + description: List of AssetScanEstimations according to the given filters + type: array + items: + $ref: '#/components/schemas/AssetScanEstimation' + + ScanEstimationRelationship: + type: object + properties: + id: + type: string + + AssetScanEstimation: + type: object + properties: + id: + type: string + asset: + $ref: '#/components/schemas/Asset' + # TODO (erezf) replace with ScanEstimationRelationship object (?) + scanEstimation: + $ref: '#/components/schemas/ScanEstimationRelationship' + state: + $ref: '#/components/schemas/AssetScanEstimationState' + estimation: + $ref: '#/components/schemas/Estimation' + assetScanTemplate: + $ref: '#/components/schemas/AssetScanTemplate' + revision: + type: integer + + AssetScanEstimationExists: + type: object + properties: + message: + description: Describes which unique constraint combination causes the conflict. + type: string + readOnly: true + assetScanEstimation: + $ref: '#/components/schemas/AssetScanEstimation' + + ScanEstimationSummary: + type: object + properties: + jobsLeftToRun: + type: integer + jobsCompleted: + type: integer + responses: Success: description: Success message @@ -2500,7 +3028,21 @@ components: required: true schema: type: string - + + scanEstimationID: + name: scanEstimationID + in: path + required: true + schema: + type: string + + assetScanEstimationID: + name: assetScanEstimationID + in: path + required: true + schema: + type: string + ifmatch: name: If-Match in: header diff --git a/api/server/server.gen.go b/api/server/server.gen.go index 0e66958fe..313ff6a97 100644 --- a/api/server/server.gen.go +++ b/api/server/server.gen.go @@ -21,6 +21,21 @@ import ( // ServerInterface represents all server handlers. type ServerInterface interface { + // Get asset scan estimations according to the given filters + // (GET /assetScanEstimations) + GetAssetScanEstimations(ctx echo.Context, params GetAssetScanEstimationsParams) error + // Create an asset scan estimation for a specified asset + // (POST /assetScanEstimations) + PostAssetScanEstimations(ctx echo.Context) error + // Get an asset scan stimation. + // (GET /assetScanEstimations/{assetScanEstimationID}) + GetAssetScanEstimationsAssetScanEstimationID(ctx echo.Context, assetScanEstimationID AssetScanEstimationID, params GetAssetScanEstimationsAssetScanEstimationIDParams) error + // Patch an asset scan estimation + // (PATCH /assetScanEstimations/{assetScanEstimationID}) + PatchAssetScanEstimationsAssetScanEstimationID(ctx echo.Context, assetScanEstimationID AssetScanEstimationID, params PatchAssetScanEstimationsAssetScanEstimationIDParams) error + // Update an asset scan estimation. + // (PUT /assetScanEstimations/{assetScanEstimationID}) + PutAssetScanEstimationsAssetScanEstimationID(ctx echo.Context, assetScanEstimationID AssetScanEstimationID, params PutAssetScanEstimationsAssetScanEstimationIDParams) error // Get asset scans according to the given filters // (GET /assetScans) GetAssetScans(ctx echo.Context, params GetAssetScansParams) error @@ -93,6 +108,24 @@ type ServerInterface interface { // Update a scan config. // (PUT /scanConfigs/{scanConfigID}) PutScanConfigsScanConfigID(ctx echo.Context, scanConfigID ScanConfigID, params PutScanConfigsScanConfigIDParams) error + // Get all scans. Each scan estimation contains details about a multi-asset scan estimation. + // (GET /scanEstimations) + GetScanEstimations(ctx echo.Context, params GetScanEstimationsParams) error + // Create a multi-asset scan estimation + // (POST /scanEstimations) + PostScanEstimations(ctx echo.Context) error + // Delete a scan estimation. + // (DELETE /scanEstimations/{scanEstimationID}) + DeleteScanEstimationsScanEstimationID(ctx echo.Context, scanEstimationID ScanEstimationID) error + // Get the details for a given multi-asset scan estimation. + // (GET /scanEstimations/{scanEstimationID}) + GetScanEstimationsScanEstimationID(ctx echo.Context, scanEstimationID ScanEstimationID, params GetScanEstimationsScanEstimationIDParams) error + // Patch a scan estimation. + // (PATCH /scanEstimations/{scanEstimationID}) + PatchScanEstimationsScanEstimationID(ctx echo.Context, scanEstimationID ScanEstimationID, params PatchScanEstimationsScanEstimationIDParams) error + // Update a scan estimation. + // (PUT /scanEstimations/{scanEstimationID}) + PutScanEstimationsScanEstimationID(ctx echo.Context, scanEstimationID ScanEstimationID, params PutScanEstimationsScanEstimationIDParams) error // Get all scans. Each scan contains details about a multi-asset scheduled scan. // (GET /scans) GetScans(ctx echo.Context, params GetScansParams) error @@ -118,6 +151,179 @@ type ServerInterfaceWrapper struct { Handler ServerInterface } +// GetAssetScanEstimations converts echo context to params. +func (w *ServerInterfaceWrapper) GetAssetScanEstimations(ctx echo.Context) error { + var err error + + // Parameter object where we will unmarshal all parameters from the context + var params GetAssetScanEstimationsParams + // ------------- Optional query parameter "$filter" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$filter", ctx.QueryParams(), ¶ms.Filter) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $filter: %s", err)) + } + + // ------------- Optional query parameter "$select" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$select", ctx.QueryParams(), ¶ms.Select) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $select: %s", err)) + } + + // ------------- Optional query parameter "$count" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$count", ctx.QueryParams(), ¶ms.Count) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $count: %s", err)) + } + + // ------------- Optional query parameter "$top" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$top", ctx.QueryParams(), ¶ms.Top) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $top: %s", err)) + } + + // ------------- Optional query parameter "$skip" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$skip", ctx.QueryParams(), ¶ms.Skip) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $skip: %s", err)) + } + + // ------------- Optional query parameter "$expand" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$expand", ctx.QueryParams(), ¶ms.Expand) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $expand: %s", err)) + } + + // ------------- Optional query parameter "$orderby" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$orderby", ctx.QueryParams(), ¶ms.OrderBy) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $orderby: %s", err)) + } + + // Invoke the callback with all the unmarshalled arguments + err = w.Handler.GetAssetScanEstimations(ctx, params) + return err +} + +// PostAssetScanEstimations converts echo context to params. +func (w *ServerInterfaceWrapper) PostAssetScanEstimations(ctx echo.Context) error { + var err error + + // Invoke the callback with all the unmarshalled arguments + err = w.Handler.PostAssetScanEstimations(ctx) + return err +} + +// GetAssetScanEstimationsAssetScanEstimationID converts echo context to params. +func (w *ServerInterfaceWrapper) GetAssetScanEstimationsAssetScanEstimationID(ctx echo.Context) error { + var err error + // ------------- Path parameter "assetScanEstimationID" ------------- + var assetScanEstimationID AssetScanEstimationID + + err = runtime.BindStyledParameterWithLocation("simple", false, "assetScanEstimationID", runtime.ParamLocationPath, ctx.Param("assetScanEstimationID"), &assetScanEstimationID) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter assetScanEstimationID: %s", err)) + } + + // Parameter object where we will unmarshal all parameters from the context + var params GetAssetScanEstimationsAssetScanEstimationIDParams + // ------------- Optional query parameter "$select" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$select", ctx.QueryParams(), ¶ms.Select) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $select: %s", err)) + } + + // ------------- Optional query parameter "$expand" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$expand", ctx.QueryParams(), ¶ms.Expand) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $expand: %s", err)) + } + + // Invoke the callback with all the unmarshalled arguments + err = w.Handler.GetAssetScanEstimationsAssetScanEstimationID(ctx, assetScanEstimationID, params) + return err +} + +// PatchAssetScanEstimationsAssetScanEstimationID converts echo context to params. +func (w *ServerInterfaceWrapper) PatchAssetScanEstimationsAssetScanEstimationID(ctx echo.Context) error { + var err error + // ------------- Path parameter "assetScanEstimationID" ------------- + var assetScanEstimationID AssetScanEstimationID + + err = runtime.BindStyledParameterWithLocation("simple", false, "assetScanEstimationID", runtime.ParamLocationPath, ctx.Param("assetScanEstimationID"), &assetScanEstimationID) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter assetScanEstimationID: %s", err)) + } + + // Parameter object where we will unmarshal all parameters from the context + var params PatchAssetScanEstimationsAssetScanEstimationIDParams + + headers := ctx.Request().Header + // ------------- Optional header parameter "If-Match" ------------- + if valueList, found := headers[http.CanonicalHeaderKey("If-Match")]; found { + var IfMatch Ifmatch + n := len(valueList) + if n != 1 { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Expected one value for If-Match, got %d", n)) + } + + err = runtime.BindStyledParameterWithLocation("simple", false, "If-Match", runtime.ParamLocationHeader, valueList[0], &IfMatch) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter If-Match: %s", err)) + } + + params.IfMatch = &IfMatch + } + + // Invoke the callback with all the unmarshalled arguments + err = w.Handler.PatchAssetScanEstimationsAssetScanEstimationID(ctx, assetScanEstimationID, params) + return err +} + +// PutAssetScanEstimationsAssetScanEstimationID converts echo context to params. +func (w *ServerInterfaceWrapper) PutAssetScanEstimationsAssetScanEstimationID(ctx echo.Context) error { + var err error + // ------------- Path parameter "assetScanEstimationID" ------------- + var assetScanEstimationID AssetScanEstimationID + + err = runtime.BindStyledParameterWithLocation("simple", false, "assetScanEstimationID", runtime.ParamLocationPath, ctx.Param("assetScanEstimationID"), &assetScanEstimationID) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter assetScanEstimationID: %s", err)) + } + + // Parameter object where we will unmarshal all parameters from the context + var params PutAssetScanEstimationsAssetScanEstimationIDParams + + headers := ctx.Request().Header + // ------------- Optional header parameter "If-Match" ------------- + if valueList, found := headers[http.CanonicalHeaderKey("If-Match")]; found { + var IfMatch Ifmatch + n := len(valueList) + if n != 1 { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Expected one value for If-Match, got %d", n)) + } + + err = runtime.BindStyledParameterWithLocation("simple", false, "If-Match", runtime.ParamLocationHeader, valueList[0], &IfMatch) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter If-Match: %s", err)) + } + + params.IfMatch = &IfMatch + } + + // Invoke the callback with all the unmarshalled arguments + err = w.Handler.PutAssetScanEstimationsAssetScanEstimationID(ctx, assetScanEstimationID, params) + return err +} + // GetAssetScans converts echo context to params. func (w *ServerInterfaceWrapper) GetAssetScans(ctx echo.Context) error { var err error @@ -827,6 +1033,195 @@ func (w *ServerInterfaceWrapper) PutScanConfigsScanConfigID(ctx echo.Context) er return err } +// GetScanEstimations converts echo context to params. +func (w *ServerInterfaceWrapper) GetScanEstimations(ctx echo.Context) error { + var err error + + // Parameter object where we will unmarshal all parameters from the context + var params GetScanEstimationsParams + // ------------- Optional query parameter "$filter" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$filter", ctx.QueryParams(), ¶ms.Filter) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $filter: %s", err)) + } + + // ------------- Optional query parameter "$select" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$select", ctx.QueryParams(), ¶ms.Select) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $select: %s", err)) + } + + // ------------- Optional query parameter "$count" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$count", ctx.QueryParams(), ¶ms.Count) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $count: %s", err)) + } + + // ------------- Optional query parameter "$top" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$top", ctx.QueryParams(), ¶ms.Top) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $top: %s", err)) + } + + // ------------- Optional query parameter "$skip" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$skip", ctx.QueryParams(), ¶ms.Skip) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $skip: %s", err)) + } + + // ------------- Optional query parameter "$expand" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$expand", ctx.QueryParams(), ¶ms.Expand) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $expand: %s", err)) + } + + // ------------- Optional query parameter "$orderby" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$orderby", ctx.QueryParams(), ¶ms.OrderBy) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $orderby: %s", err)) + } + + // Invoke the callback with all the unmarshalled arguments + err = w.Handler.GetScanEstimations(ctx, params) + return err +} + +// PostScanEstimations converts echo context to params. +func (w *ServerInterfaceWrapper) PostScanEstimations(ctx echo.Context) error { + var err error + + // Invoke the callback with all the unmarshalled arguments + err = w.Handler.PostScanEstimations(ctx) + return err +} + +// DeleteScanEstimationsScanEstimationID converts echo context to params. +func (w *ServerInterfaceWrapper) DeleteScanEstimationsScanEstimationID(ctx echo.Context) error { + var err error + // ------------- Path parameter "scanEstimationID" ------------- + var scanEstimationID ScanEstimationID + + err = runtime.BindStyledParameterWithLocation("simple", false, "scanEstimationID", runtime.ParamLocationPath, ctx.Param("scanEstimationID"), &scanEstimationID) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter scanEstimationID: %s", err)) + } + + // Invoke the callback with all the unmarshalled arguments + err = w.Handler.DeleteScanEstimationsScanEstimationID(ctx, scanEstimationID) + return err +} + +// GetScanEstimationsScanEstimationID converts echo context to params. +func (w *ServerInterfaceWrapper) GetScanEstimationsScanEstimationID(ctx echo.Context) error { + var err error + // ------------- Path parameter "scanEstimationID" ------------- + var scanEstimationID ScanEstimationID + + err = runtime.BindStyledParameterWithLocation("simple", false, "scanEstimationID", runtime.ParamLocationPath, ctx.Param("scanEstimationID"), &scanEstimationID) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter scanEstimationID: %s", err)) + } + + // Parameter object where we will unmarshal all parameters from the context + var params GetScanEstimationsScanEstimationIDParams + // ------------- Optional query parameter "$select" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$select", ctx.QueryParams(), ¶ms.Select) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $select: %s", err)) + } + + // ------------- Optional query parameter "$expand" ------------- + + err = runtime.BindQueryParameter("form", true, false, "$expand", ctx.QueryParams(), ¶ms.Expand) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter $expand: %s", err)) + } + + // Invoke the callback with all the unmarshalled arguments + err = w.Handler.GetScanEstimationsScanEstimationID(ctx, scanEstimationID, params) + return err +} + +// PatchScanEstimationsScanEstimationID converts echo context to params. +func (w *ServerInterfaceWrapper) PatchScanEstimationsScanEstimationID(ctx echo.Context) error { + var err error + // ------------- Path parameter "scanEstimationID" ------------- + var scanEstimationID ScanEstimationID + + err = runtime.BindStyledParameterWithLocation("simple", false, "scanEstimationID", runtime.ParamLocationPath, ctx.Param("scanEstimationID"), &scanEstimationID) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter scanEstimationID: %s", err)) + } + + // Parameter object where we will unmarshal all parameters from the context + var params PatchScanEstimationsScanEstimationIDParams + + headers := ctx.Request().Header + // ------------- Optional header parameter "If-Match" ------------- + if valueList, found := headers[http.CanonicalHeaderKey("If-Match")]; found { + var IfMatch Ifmatch + n := len(valueList) + if n != 1 { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Expected one value for If-Match, got %d", n)) + } + + err = runtime.BindStyledParameterWithLocation("simple", false, "If-Match", runtime.ParamLocationHeader, valueList[0], &IfMatch) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter If-Match: %s", err)) + } + + params.IfMatch = &IfMatch + } + + // Invoke the callback with all the unmarshalled arguments + err = w.Handler.PatchScanEstimationsScanEstimationID(ctx, scanEstimationID, params) + return err +} + +// PutScanEstimationsScanEstimationID converts echo context to params. +func (w *ServerInterfaceWrapper) PutScanEstimationsScanEstimationID(ctx echo.Context) error { + var err error + // ------------- Path parameter "scanEstimationID" ------------- + var scanEstimationID ScanEstimationID + + err = runtime.BindStyledParameterWithLocation("simple", false, "scanEstimationID", runtime.ParamLocationPath, ctx.Param("scanEstimationID"), &scanEstimationID) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter scanEstimationID: %s", err)) + } + + // Parameter object where we will unmarshal all parameters from the context + var params PutScanEstimationsScanEstimationIDParams + + headers := ctx.Request().Header + // ------------- Optional header parameter "If-Match" ------------- + if valueList, found := headers[http.CanonicalHeaderKey("If-Match")]; found { + var IfMatch Ifmatch + n := len(valueList) + if n != 1 { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Expected one value for If-Match, got %d", n)) + } + + err = runtime.BindStyledParameterWithLocation("simple", false, "If-Match", runtime.ParamLocationHeader, valueList[0], &IfMatch) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter If-Match: %s", err)) + } + + params.IfMatch = &IfMatch + } + + // Invoke the callback with all the unmarshalled arguments + err = w.Handler.PutScanEstimationsScanEstimationID(ctx, scanEstimationID, params) + return err +} + // GetScans converts echo context to params. func (w *ServerInterfaceWrapper) GetScans(ctx echo.Context) error { var err error @@ -1044,6 +1439,11 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL Handler: si, } + router.GET(baseURL+"/assetScanEstimations", wrapper.GetAssetScanEstimations) + router.POST(baseURL+"/assetScanEstimations", wrapper.PostAssetScanEstimations) + router.GET(baseURL+"/assetScanEstimations/:assetScanEstimationID", wrapper.GetAssetScanEstimationsAssetScanEstimationID) + router.PATCH(baseURL+"/assetScanEstimations/:assetScanEstimationID", wrapper.PatchAssetScanEstimationsAssetScanEstimationID) + router.PUT(baseURL+"/assetScanEstimations/:assetScanEstimationID", wrapper.PutAssetScanEstimationsAssetScanEstimationID) router.GET(baseURL+"/assetScans", wrapper.GetAssetScans) router.POST(baseURL+"/assetScans", wrapper.PostAssetScans) router.GET(baseURL+"/assetScans/:assetScanID", wrapper.GetAssetScansAssetScanID) @@ -1068,6 +1468,12 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL router.GET(baseURL+"/scanConfigs/:scanConfigID", wrapper.GetScanConfigsScanConfigID) router.PATCH(baseURL+"/scanConfigs/:scanConfigID", wrapper.PatchScanConfigsScanConfigID) router.PUT(baseURL+"/scanConfigs/:scanConfigID", wrapper.PutScanConfigsScanConfigID) + router.GET(baseURL+"/scanEstimations", wrapper.GetScanEstimations) + router.POST(baseURL+"/scanEstimations", wrapper.PostScanEstimations) + router.DELETE(baseURL+"/scanEstimations/:scanEstimationID", wrapper.DeleteScanEstimationsScanEstimationID) + router.GET(baseURL+"/scanEstimations/:scanEstimationID", wrapper.GetScanEstimationsScanEstimationID) + router.PATCH(baseURL+"/scanEstimations/:scanEstimationID", wrapper.PatchScanEstimationsScanEstimationID) + router.PUT(baseURL+"/scanEstimations/:scanEstimationID", wrapper.PutScanEstimationsScanEstimationID) router.GET(baseURL+"/scans", wrapper.GetScans) router.POST(baseURL+"/scans", wrapper.PostScans) router.DELETE(baseURL+"/scans/:scanID", wrapper.DeleteScansScanID) @@ -1080,106 +1486,116 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", - "qXurAMsAAA==", + "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", + "BivxBki+ffv/AAAA///zOl12s/4AAA==", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/pkg/apiserver/database/gorm/asset_scan_estimation.go b/pkg/apiserver/database/gorm/asset_scan_estimation.go new file mode 100644 index 000000000..94dae0898 --- /dev/null +++ b/pkg/apiserver/database/gorm/asset_scan_estimation.go @@ -0,0 +1,293 @@ +// Copyright © 2023 Cisco Systems, Inc. and its affiliates. +// All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package gorm + +import ( + "encoding/json" + "errors" + "fmt" + + "github.com/google/uuid" + "gorm.io/gorm" + + "github.com/openclarity/vmclarity/api/models" + "github.com/openclarity/vmclarity/pkg/apiserver/common" + "github.com/openclarity/vmclarity/pkg/apiserver/database/types" + "github.com/openclarity/vmclarity/pkg/shared/utils" +) + +const ( + assetScanEstimationsSchemaName = "AssetScanEstimation" +) + +type AssetScanEstimation struct { + ODataObject +} + +type AssetScanEstimationsTableHandler struct { + DB *gorm.DB +} + +func (db *Handler) AssetScanEstimationsTable() types.AssetScanEstimationsTable { + return &AssetScanEstimationsTableHandler{ + DB: db.DB, + } +} + +func (s *AssetScanEstimationsTableHandler) GetAssetScanEstimations(params models.GetAssetScanEstimationsParams) (models.AssetScanEstimations, error) { + var assetScanEstimations []AssetScanEstimation + err := ODataQuery(s.DB, assetScanEstimationsSchemaName, params.Filter, params.Select, params.Expand, params.OrderBy, params.Top, params.Skip, true, &assetScanEstimations) + if err != nil { + return models.AssetScanEstimations{}, err + } + + items := make([]models.AssetScanEstimation, len(assetScanEstimations)) + for i, assetScanEstimation := range assetScanEstimations { + var ase models.AssetScanEstimation + if err = json.Unmarshal(assetScanEstimation.Data, &ase); err != nil { + return models.AssetScanEstimations{}, fmt.Errorf("failed to convert DB model to API model: %w", err) + } + items[i] = ase + } + + output := models.AssetScanEstimations{Items: &items} + + if params.Count != nil && *params.Count { + count, err := ODataCount(s.DB, assetScanEstimationsSchemaName, params.Filter) + if err != nil { + return models.AssetScanEstimations{}, fmt.Errorf("failed to count records: %w", err) + } + output.Count = &count + } + + return output, nil +} + +func (s *AssetScanEstimationsTableHandler) GetAssetScanEstimation(assetScanEstimationID models.AssetScanEstimationID, params models.GetAssetScanEstimationsAssetScanEstimationIDParams) (models.AssetScanEstimation, error) { + var dbAssetScanEstimation AssetScanEstimation + filter := fmt.Sprintf("id eq '%s'", assetScanEstimationID) + err := ODataQuery(s.DB, assetScanEstimationsSchemaName, &filter, params.Select, params.Expand, nil, nil, nil, false, &dbAssetScanEstimation) + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return models.AssetScanEstimation{}, types.ErrNotFound + } + return models.AssetScanEstimation{}, err + } + + var ase models.AssetScanEstimation + err = json.Unmarshal(dbAssetScanEstimation.Data, &ase) + if err != nil { + return models.AssetScanEstimation{}, fmt.Errorf("failed to convert DB model to API model: %w", err) + } + + return ase, nil +} + +// nolint:cyclop +func (s *AssetScanEstimationsTableHandler) CreateAssetScanEstimation(assetScanEstimation models.AssetScanEstimation) (models.AssetScanEstimation, error) { + // Check the user provided asset id field + if assetScanEstimation.Asset == nil || assetScanEstimation.Asset.Id == nil || *assetScanEstimation.Asset.Id == "" { + return models.AssetScanEstimation{}, &common.BadRequestError{ + Reason: "asset.id is a required field", + } + } + + // Check the user didn't provide an ID + if assetScanEstimation.Id != nil { + return models.AssetScanEstimation{}, &common.BadRequestError{ + Reason: "can not specify id field when creating a new AssetScanEstimation", + } + } + + // Generate a new UUID + assetScanEstimation.Id = utils.PointerTo(uuid.New().String()) + + // Initialise revision + assetScanEstimation.Revision = utils.PointerTo(1) + + // Check the existing DB entries to ensure that the scan id and asset id fields are unique + existingAssetScanEstimation, err := s.checkUniqueness(assetScanEstimation) + if err != nil { + var conflictErr *common.ConflictError + if errors.As(err, &conflictErr) { + return existingAssetScanEstimation, err + } + return models.AssetScanEstimation{}, fmt.Errorf("failed to check existing scan: %w", err) + } + + marshaled, err := json.Marshal(assetScanEstimation) + if err != nil { + return models.AssetScanEstimation{}, fmt.Errorf("failed to convert API model to DB model: %w", err) + } + + newAssetScanEstimation := AssetScanEstimation{} + newAssetScanEstimation.Data = marshaled + + if err := s.DB.Create(&newAssetScanEstimation).Error; err != nil { + return models.AssetScanEstimation{}, fmt.Errorf("failed to create asset scan estimation in db: %w", err) + } + + var ase models.AssetScanEstimation + err = json.Unmarshal(newAssetScanEstimation.Data, &ase) + if err != nil { + return models.AssetScanEstimation{}, fmt.Errorf("failed to convert DB model to API model: %w", err) + } + + return ase, nil +} + +// nolint:cyclop,gocognit +func (s *AssetScanEstimationsTableHandler) SaveAssetScanEstimation(assetScanEstimation models.AssetScanEstimation, params models.PutAssetScanEstimationsAssetScanEstimationIDParams) (models.AssetScanEstimation, error) { + if assetScanEstimation.Id == nil || *assetScanEstimation.Id == "" { + return models.AssetScanEstimation{}, &common.BadRequestError{ + Reason: "id is required to save asset scan Estimation", + } + } + + // Check the user provided asset id field + if assetScanEstimation.Asset == nil || assetScanEstimation.Asset.Id == nil || *assetScanEstimation.Asset.Id == "" { + return models.AssetScanEstimation{}, &common.BadRequestError{ + Reason: "asset.id is a required field", + } + } + + // Check the existing DB entries to ensure that the scan id and asset id fields are unique + existingAssetScanEstimation, err := s.checkUniqueness(assetScanEstimation) + if err != nil { + var conflictErr *common.ConflictError + if errors.As(err, &conflictErr) { + return existingAssetScanEstimation, err + } + return models.AssetScanEstimation{}, fmt.Errorf("failed to check existing asset scan estimation: %w", err) + } + + var dbObj AssetScanEstimation + if err := getExistingObjByID(s.DB, assetScanEstimationsSchemaName, *assetScanEstimation.Id, &dbObj); err != nil { + return models.AssetScanEstimation{}, err + } + + var dbAssetScanEstimation models.AssetScanEstimation + err = json.Unmarshal(dbObj.Data, &dbAssetScanEstimation) + if err != nil { + return models.AssetScanEstimation{}, fmt.Errorf("failed to convert DB model to API model: %w", err) + } + + if err := checkRevisionEtag(params.IfMatch, dbAssetScanEstimation.Revision); err != nil { + return models.AssetScanEstimation{}, err + } + + assetScanEstimation.Revision = bumpRevision(dbAssetScanEstimation.Revision) + + marshaled, err := json.Marshal(assetScanEstimation) + if err != nil { + return models.AssetScanEstimation{}, fmt.Errorf("failed to convert API model to DB model: %w", err) + } + + dbObj.Data = marshaled + + if err := s.DB.Save(&dbObj).Error; err != nil { + return models.AssetScanEstimation{}, fmt.Errorf("failed to save asset scan estimation in db: %w", err) + } + + var ase models.AssetScanEstimation + err = json.Unmarshal(dbObj.Data, &ase) + if err != nil { + return models.AssetScanEstimation{}, fmt.Errorf("failed to convert DB model to API model: %w", err) + } + + return ase, nil +} + +// nolint:cyclop +func (s *AssetScanEstimationsTableHandler) UpdateAssetScanEstimation(assetScanEstimation models.AssetScanEstimation, params models.PatchAssetScanEstimationsAssetScanEstimationIDParams) (models.AssetScanEstimation, error) { + if assetScanEstimation.Id == nil || *assetScanEstimation.Id == "" { + return models.AssetScanEstimation{}, &common.BadRequestError{ + Reason: "id is required to update asset scan estimation", + } + } + + var dbObj AssetScanEstimation + if err := getExistingObjByID(s.DB, assetScanEstimationsSchemaName, *assetScanEstimation.Id, &dbObj); err != nil { + return models.AssetScanEstimation{}, err + } + + var err error + var dbAssetScanEstimation models.AssetScanEstimation + err = json.Unmarshal(dbObj.Data, &dbAssetScanEstimation) + if err != nil { + return models.AssetScanEstimation{}, fmt.Errorf("failed to convert DB model to API model: %w", err) + } + + if err := checkRevisionEtag(params.IfMatch, dbAssetScanEstimation.Revision); err != nil { + return models.AssetScanEstimation{}, err + } + + assetScanEstimation.Revision = bumpRevision(dbAssetScanEstimation.Revision) + + dbObj.Data, err = patchObject(dbObj.Data, assetScanEstimation) + if err != nil { + return models.AssetScanEstimation{}, fmt.Errorf("failed to apply patch: %w", err) + } + + var ase models.AssetScanEstimation + err = json.Unmarshal(dbObj.Data, &ase) + if err != nil { + return models.AssetScanEstimation{}, fmt.Errorf("failed to convert DB model to API model: %w", err) + } + + // Check the existing DB entries to ensure that the scanEstimation id and asset id fields are unique + existingAssetScanEstimation, err := s.checkUniqueness(ase) + if err != nil { + var conflictErr *common.ConflictError + if errors.As(err, &conflictErr) { + return existingAssetScanEstimation, err + } + return models.AssetScanEstimation{}, fmt.Errorf("failed to check existing asset scan estimation: %w", err) + } + + if err := s.DB.Save(&dbObj).Error; err != nil { + return models.AssetScanEstimation{}, fmt.Errorf("failed to save asset scan estimation in db: %w", err) + } + + return ase, nil +} + +func (s *AssetScanEstimationsTableHandler) checkUniqueness(assetScanEstimation models.AssetScanEstimation) (models.AssetScanEstimation, error) { + // We only check unique if ScanEstimation is set, so return early if it's not set. + if assetScanEstimation.ScanEstimation == nil || assetScanEstimation.ScanEstimation.Id == nil || *assetScanEstimation.ScanEstimation.Id == "" { + return models.AssetScanEstimation{}, nil + } + + // If ScanEstimation is set we need to check if there is another asset scan estimation with + // the same scanEstimation id and asset id. + var assetScanEstimations []AssetScanEstimation + filter := fmt.Sprintf("id ne '%s' and asset/id eq '%s' and scanEstimation/id eq '%s'", *assetScanEstimation.Id, assetScanEstimation.Asset.Id, assetScanEstimation.ScanEstimation.Id) + err := ODataQuery(s.DB, assetScanEstimationsSchemaName, &filter, nil, nil, nil, nil, nil, true, &assetScanEstimations) + if err != nil { + return models.AssetScanEstimation{}, err + } + + if len(assetScanEstimations) > 0 { + var as models.AssetScanEstimation + if err = json.Unmarshal(assetScanEstimations[0].Data, &as); err != nil { + return models.AssetScanEstimation{}, fmt.Errorf("failed to convert DB model to API model: %w", err) + } + return as, &common.ConflictError{ + Reason: fmt.Sprintf("AssetScanEstimation exists with same asset id=%s and scanEstimation id=%s)", assetScanEstimation.Asset.Id, assetScanEstimation.ScanEstimation.Id), + } + } + return models.AssetScanEstimation{}, nil +} diff --git a/pkg/apiserver/database/gorm/database.go b/pkg/apiserver/database/gorm/database.go index 85a40ce92..2204decf7 100644 --- a/pkg/apiserver/database/gorm/database.go +++ b/pkg/apiserver/database/gorm/database.go @@ -75,6 +75,8 @@ func initDataBase(config types.DBConfig) (*gorm.DB, error) { ScanConfig{}, Scan{}, Finding{}, + AssetScanEstimation{}, + ScanEstimation{}, ); err != nil { return nil, fmt.Errorf("failed to run auto migration: %w", err) } @@ -94,6 +96,11 @@ func initDataBase(config types.DBConfig) (*gorm.DB, error) { return nil, fmt.Errorf("failed to create index asset_scans_id_idx: %w", idb.Error) } + idb = db.Exec(fmt.Sprintf("CREATE INDEX IF NOT EXISTS asset_scan_estimations_id_idx ON asset_scan_estimations((%s))", SQLVariant.JSONExtract("Data", "$.id"))) + if idb.Error != nil { + return nil, fmt.Errorf("failed to create index asset_scan_estimations_id_idx: %w", idb.Error) + } + idb = db.Exec(fmt.Sprintf("CREATE INDEX IF NOT EXISTS scan_configs_id_idx ON scan_configs((%s))", SQLVariant.JSONExtract("Data", "$.id"))) if idb.Error != nil { return nil, fmt.Errorf("failed to create index scan_configs_id_idx: %w", idb.Error) @@ -104,6 +111,11 @@ func initDataBase(config types.DBConfig) (*gorm.DB, error) { return nil, fmt.Errorf("failed to create index scans_id_idx: %w", idb.Error) } + idb = db.Exec(fmt.Sprintf("CREATE INDEX IF NOT EXISTS scan_estimations_id_idx ON scan_estimations((%s))", SQLVariant.JSONExtract("Data", "$.id"))) + if idb.Error != nil { + return nil, fmt.Errorf("failed to create index scan_estimations_id_idx: %w", idb.Error) + } + idb = db.Exec(fmt.Sprintf("CREATE INDEX IF NOT EXISTS findings_id_idx ON findings((%s))", SQLVariant.JSONExtract("Data", "$.id"))) if idb.Error != nil { return nil, fmt.Errorf("failed to create index findings_id_idx: %w", idb.Error) diff --git a/pkg/apiserver/database/gorm/odata.go b/pkg/apiserver/database/gorm/odata.go index db34c5733..34e2a52fd 100644 --- a/pkg/apiserver/database/gorm/odata.go +++ b/pkg/apiserver/database/gorm/odata.go @@ -879,6 +879,96 @@ var schemaMetas = map[string]odatasql.SchemaMeta{ }, }, }, + scanEstimationSchemaName: { + Table: "scan_estimations", + Fields: odatasql.Schema{ + "id": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType}, + "startTime": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType}, + "endTime": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType}, + "assetIDs": odatasql.FieldMeta{ + FieldType: odatasql.CollectionFieldType, + CollectionItemMeta: &odatasql.FieldMeta{ + FieldType: odatasql.PrimitiveFieldType, + }, + }, + "state": odatasql.FieldMeta{ + FieldType: odatasql.PrimitiveFieldType, + }, + "stateMessage": odatasql.FieldMeta{ + FieldType: odatasql.PrimitiveFieldType, + }, + "stateReason": odatasql.FieldMeta{ + FieldType: odatasql.PrimitiveFieldType, + }, + "estimation": odatasql.FieldMeta{ + FieldType: odatasql.ComplexFieldType, + ComplexFieldSchemas: []string{"Estimation"}, + }, + "scanTemplate": odatasql.FieldMeta{ + FieldType: odatasql.ComplexFieldType, + ComplexFieldSchemas: []string{"ScanTemplate"}, + }, + "summary": odatasql.FieldMeta{ + FieldType: odatasql.ComplexFieldType, + ComplexFieldSchemas: []string{"ScanEstimationSummary"}, + }, + }, + }, + "Estimation": { + Fields: odatasql.Schema{ + "time": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType}, + "size": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType}, + "cost": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType}, // TODO are we handling float numbers in the db? + }, + }, + "ScanEstimationSummary": { + Fields: odatasql.Schema{ + "jobsLeftToRun": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType}, + "jobsCompleted": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType}, + }, + }, + assetScanEstimationsSchemaName: { + Table: "asset_scan_estimations", + Fields: odatasql.Schema{ + "id": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType}, + "asset": odatasql.FieldMeta{ + FieldType: odatasql.RelationshipFieldType, + RelationshipSchema: assetSchemaName, + RelationshipProperty: "id", + }, + "scanEstimation": odatasql.FieldMeta{ + FieldType: odatasql.ComplexFieldType, + ComplexFieldSchemas: []string{"ScanEstimationFakeRelationship"}, + }, + "estimation": odatasql.FieldMeta{ + FieldType: odatasql.ComplexFieldType, + ComplexFieldSchemas: []string{"Estimation"}, + }, + "assetScanTemplate": odatasql.FieldMeta{ + FieldType: odatasql.ComplexFieldType, + ComplexFieldSchemas: []string{"AssetScanTemplate"}, + }, + "state": odatasql.FieldMeta{ + FieldType: odatasql.ComplexFieldType, + ComplexFieldSchemas: []string{"AssetScanEstimationState"}, + }, + }, + }, + "AssetScanEstimationState": { + Fields: odatasql.Schema{ + "state": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType}, + "lastTransitionTime": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType}, + "errors": odatasql.FieldMeta{ + FieldType: odatasql.CollectionFieldType, + CollectionItemMeta: &odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType}, + }, + }, + }, + "ScanEstimationFakeRelationship": { + Fields: odatasql.Schema{ + "id": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType}, + }, + }, } func ODataQuery(db *gorm.DB, schema string, filterString, selectString, expandString, orderby *string, top, skip *int, collection bool, result interface{}) error { diff --git a/pkg/apiserver/database/gorm/scan_estimation.go b/pkg/apiserver/database/gorm/scan_estimation.go new file mode 100644 index 000000000..74115ae7d --- /dev/null +++ b/pkg/apiserver/database/gorm/scan_estimation.go @@ -0,0 +1,227 @@ +// Copyright © 2023 Cisco Systems, Inc. and its affiliates. +// All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package gorm + +import ( + "encoding/json" + "errors" + "fmt" + + "github.com/google/uuid" + "gorm.io/gorm" + + "github.com/openclarity/vmclarity/api/models" + "github.com/openclarity/vmclarity/pkg/apiserver/common" + "github.com/openclarity/vmclarity/pkg/apiserver/database/types" + "github.com/openclarity/vmclarity/pkg/shared/utils" +) + +const ( + scanEstimationSchemaName = "ScanEstimation" +) + +type ScanEstimation struct { + ODataObject +} + +type ScanEstimationsTableHandler struct { + DB *gorm.DB +} + +func (db *Handler) ScanEstimationsTable() types.ScanEstimationsTable { + return &ScanEstimationsTableHandler{ + DB: db.DB, + } +} + +func (s *ScanEstimationsTableHandler) GetScanEstimations(params models.GetScanEstimationsParams) (models.ScanEstimations, error) { + var scanEstimations []ScanEstimation + err := ODataQuery(s.DB, scanEstimationSchemaName, params.Filter, params.Select, params.Expand, params.OrderBy, params.Top, params.Skip, true, &scanEstimations) + if err != nil { + return models.ScanEstimations{}, err + } + + items := make([]models.ScanEstimation, len(scanEstimations)) + for i, sc := range scanEstimations { + var scanEstimation models.ScanEstimation + err = json.Unmarshal(sc.Data, &scanEstimation) + if err != nil { + return models.ScanEstimations{}, fmt.Errorf("failed to convert DB model to API model: %w", err) + } + items[i] = scanEstimation + } + + output := models.ScanEstimations{Items: &items} + + if params.Count != nil && *params.Count { + count, err := ODataCount(s.DB, scanEstimationSchemaName, params.Filter) + if err != nil { + return models.ScanEstimations{}, fmt.Errorf("failed to count records: %w", err) + } + output.Count = &count + } + + return output, nil +} + +func (s *ScanEstimationsTableHandler) GetScanEstimation(scanEstimationID models.ScanEstimationID, params models.GetScanEstimationsScanEstimationIDParams) (models.ScanEstimation, error) { + var dbScanEstimation ScanEstimation + filter := fmt.Sprintf("id eq '%s'", scanEstimationID) + err := ODataQuery(s.DB, scanEstimationSchemaName, &filter, params.Select, params.Expand, nil, nil, nil, false, &dbScanEstimation) + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return models.ScanEstimation{}, types.ErrNotFound + } + return models.ScanEstimation{}, err + } + + var apiScanEstimation models.ScanEstimation + err = json.Unmarshal(dbScanEstimation.Data, &apiScanEstimation) + if err != nil { + return models.ScanEstimation{}, fmt.Errorf("failed to convert DB model to API model: %w", err) + } + + return apiScanEstimation, nil +} + +func (s *ScanEstimationsTableHandler) CreateScanEstimation(scanEstimation models.ScanEstimation) (models.ScanEstimation, error) { + // Check the user didn't provide an ID + if scanEstimation.Id != nil { + return models.ScanEstimation{}, &common.BadRequestError{ + Reason: "can not specify id field when creating a new ScanEstimation", + } + } + + // Generate a new UUID + scanEstimation.Id = utils.PointerTo(uuid.New().String()) + + // Initialise revision + scanEstimation.Revision = utils.PointerTo(1) + + marshaled, err := json.Marshal(scanEstimation) + if err != nil { + return models.ScanEstimation{}, fmt.Errorf("failed to convert API model to DB model: %w", err) + } + + newScanEstimation := ScanEstimation{} + newScanEstimation.Data = marshaled + + if err = s.DB.Create(&newScanEstimation).Error; err != nil { + return models.ScanEstimation{}, fmt.Errorf("failed to create scan estimation in db: %w", err) + } + + var apiScanEstimation models.ScanEstimation + err = json.Unmarshal(newScanEstimation.Data, &apiScanEstimation) + if err != nil { + return models.ScanEstimation{}, fmt.Errorf("failed to convert DB model to API model: %w", err) + } + + return apiScanEstimation, nil +} + +// nolint:cyclop +func (s *ScanEstimationsTableHandler) SaveScanEstimation(scanEstimation models.ScanEstimation, params models.PutScanEstimationsScanEstimationIDParams) (models.ScanEstimation, error) { + if scanEstimation.Id == nil || *scanEstimation.Id == "" { + return models.ScanEstimation{}, &common.BadRequestError{ + Reason: "id is required to save scan estimation", + } + } + + var dbObj ScanEstimation + if err := getExistingObjByID(s.DB, scanEstimationSchemaName, *scanEstimation.Id, &dbObj); err != nil { + return models.ScanEstimation{}, fmt.Errorf("failed to get scan estimation from db: %w", err) + } + + var dbScanEstimation models.ScanEstimation + if err := json.Unmarshal(dbObj.Data, &dbScanEstimation); err != nil { + return models.ScanEstimation{}, fmt.Errorf("failed to convert DB object to API model: %w", err) + } + + if err := checkRevisionEtag(params.IfMatch, dbScanEstimation.Revision); err != nil { + return models.ScanEstimation{}, err + } + + scanEstimation.Revision = bumpRevision(dbScanEstimation.Revision) + + marshaled, err := json.Marshal(scanEstimation) + if err != nil { + return models.ScanEstimation{}, fmt.Errorf("failed to convert API model to DB model: %w", err) + } + + dbObj.Data = marshaled + + if err = s.DB.Save(&dbObj).Error; err != nil { + return models.ScanEstimation{}, fmt.Errorf("failed to save scan estimation in db: %w", err) + } + + var apiScanEstimation models.ScanEstimation + if err = json.Unmarshal(dbObj.Data, &apiScanEstimation); err != nil { + return models.ScanEstimation{}, fmt.Errorf("failed to convert DB model to API model: %w", err) + } + + return apiScanEstimation, nil +} + +// nolint:cyclop +func (s *ScanEstimationsTableHandler) UpdateScanEstimation(scanEstimation models.ScanEstimation, params models.PatchScanEstimationsScanEstimationIDParams) (models.ScanEstimation, error) { + if scanEstimation.Id == nil || *scanEstimation.Id == "" { + return models.ScanEstimation{}, &common.BadRequestError{ + Reason: "id is required to update scan estimation", + } + } + + var dbObj ScanEstimation + if err := getExistingObjByID(s.DB, scanEstimationSchemaName, *scanEstimation.Id, &dbObj); err != nil { + return models.ScanEstimation{}, err + } + + var dbScanEstimation models.ScanEstimation + if err := json.Unmarshal(dbObj.Data, &dbScanEstimation); err != nil { + return models.ScanEstimation{}, fmt.Errorf("failed to convert DB object to API model: %w", err) + } + + if err := checkRevisionEtag(params.IfMatch, dbScanEstimation.Revision); err != nil { + return models.ScanEstimation{}, err + } + + scanEstimation.Revision = bumpRevision(dbScanEstimation.Revision) + + var err error + dbObj.Data, err = patchObject(dbObj.Data, scanEstimation) + if err != nil { + return models.ScanEstimation{}, fmt.Errorf("failed to apply patch: %w", err) + } + + var ret models.ScanEstimation + err = json.Unmarshal(dbObj.Data, &ret) + if err != nil { + return models.ScanEstimation{}, fmt.Errorf("failed to convert DB model to API model: %w", err) + } + + if err := s.DB.Save(&dbObj).Error; err != nil { + return models.ScanEstimation{}, fmt.Errorf("failed to save scan estimation in db: %w", err) + } + + return ret, nil +} + +func (s *ScanEstimationsTableHandler) DeleteScanEstimation(scanEstimationID models.ScanEstimationID) error { + if err := deleteObjByID(s.DB, scanEstimationID, &ScanEstimation{}); err != nil { + return fmt.Errorf("failed to delete scan estimation: %w", err) + } + + return nil +} diff --git a/pkg/apiserver/database/types/database.go b/pkg/apiserver/database/types/database.go index 9abfd61f4..3247a32e0 100644 --- a/pkg/apiserver/database/types/database.go +++ b/pkg/apiserver/database/types/database.go @@ -55,6 +55,8 @@ type Database interface { ScansTable() ScansTable AssetsTable() AssetsTable FindingsTable() FindingsTable + ScanEstimationsTable() ScanEstimationsTable + AssetScanEstimationsTable() AssetScanEstimationsTable } type ScansTable interface { @@ -111,3 +113,23 @@ type FindingsTable interface { DeleteFinding(findingID models.FindingID) error } + +type ScanEstimationsTable interface { + GetScanEstimations(params models.GetScanEstimationsParams) (models.ScanEstimations, error) + GetScanEstimation(scanEstimationID models.ScanEstimationID, params models.GetScanEstimationsScanEstimationIDParams) (models.ScanEstimation, error) + + CreateScanEstimation(scanEstimation models.ScanEstimation) (models.ScanEstimation, error) + UpdateScanEstimation(scanEstimation models.ScanEstimation, params models.PatchScanEstimationsScanEstimationIDParams) (models.ScanEstimation, error) + SaveScanEstimation(scanEstimation models.ScanEstimation, params models.PutScanEstimationsScanEstimationIDParams) (models.ScanEstimation, error) + + DeleteScanEstimation(scanEstimationID models.ScanEstimationID) error +} + +type AssetScanEstimationsTable interface { + GetAssetScanEstimations(params models.GetAssetScanEstimationsParams) (models.AssetScanEstimations, error) + GetAssetScanEstimation(assetScanEstimationID models.AssetScanEstimationID, params models.GetAssetScanEstimationsAssetScanEstimationIDParams) (models.AssetScanEstimation, error) + + CreateAssetScanEstimation(assetScanEstimations models.AssetScanEstimation) (models.AssetScanEstimation, error) + UpdateAssetScanEstimation(assetScanEstimations models.AssetScanEstimation, params models.PatchAssetScanEstimationsAssetScanEstimationIDParams) (models.AssetScanEstimation, error) + SaveAssetScanEstimation(assetScanEstimations models.AssetScanEstimation, params models.PutAssetScanEstimationsAssetScanEstimationIDParams) (models.AssetScanEstimation, error) +} diff --git a/pkg/apiserver/rest/asset_scan_estimation_controller.go b/pkg/apiserver/rest/asset_scan_estimation_controller.go new file mode 100644 index 000000000..4f67c7e6f --- /dev/null +++ b/pkg/apiserver/rest/asset_scan_estimation_controller.go @@ -0,0 +1,151 @@ +package rest + +import ( + "errors" + "fmt" + "net/http" + + "github.com/labstack/echo/v4" + "gorm.io/gorm" + + "github.com/openclarity/vmclarity/api/models" + "github.com/openclarity/vmclarity/pkg/apiserver/common" + databaseTypes "github.com/openclarity/vmclarity/pkg/apiserver/database/types" + "github.com/openclarity/vmclarity/pkg/shared/utils" +) + +func (s *ServerImpl) GetAssetScanEstimations(ctx echo.Context, params models.GetAssetScanEstimationsParams) error { + dbAssetScanEstimations, err := s.dbHandler.AssetScanEstimationsTable().GetAssetScanEstimations(params) + if err != nil { + return sendError(ctx, http.StatusInternalServerError, fmt.Sprintf("failed to get asset scan estimations results from db: %v", err)) + } + + return sendResponse(ctx, http.StatusOK, dbAssetScanEstimations) +} + +func (s *ServerImpl) PostAssetScanEstimations(ctx echo.Context) error { + var assetScanEstimation models.AssetScanEstimation + err := ctx.Bind(&assetScanEstimation) + if err != nil { + return sendError(ctx, http.StatusBadRequest, fmt.Sprintf("failed to bind request: %v", err)) + } + + createdAssetScanEstimation, err := s.dbHandler.AssetScanEstimationsTable().CreateAssetScanEstimation(assetScanEstimation) + if err != nil { + var conflictErr *common.ConflictError + if errors.As(err, &conflictErr) { + existResponse := &models.AssetScanEstimationExists{ + Message: utils.PointerTo(conflictErr.Reason), + AssetScanEstimation: &createdAssetScanEstimation, + } + return sendResponse(ctx, http.StatusConflict, existResponse) + } + return sendError(ctx, http.StatusInternalServerError, fmt.Sprintf("failed to create asset scan estimation in db: %v", err)) + } + + return sendResponse(ctx, http.StatusCreated, createdAssetScanEstimation) +} + +func (s *ServerImpl) GetAssetScanEstimationsAssetScanEstimationID(ctx echo.Context, assetScanEstimationID models.AssetScanEstimationID, params models.GetAssetScanEstimationsAssetScanEstimationIDParams) error { + dbAssetScanEstimation, err := s.dbHandler.AssetScanEstimationsTable().GetAssetScanEstimation(assetScanEstimationID, params) + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return sendError(ctx, http.StatusNotFound, err.Error()) + } + return sendError(ctx, http.StatusInternalServerError, fmt.Sprintf("failed to get asset scan estimation from db. assetScanEstimationID=%v: %v", assetScanEstimationID, err)) + } + + return sendResponse(ctx, http.StatusOK, dbAssetScanEstimation) +} +func (s *ServerImpl) PatchAssetScanEstimationsAssetScanEstimationID(ctx echo.Context, assetScanEstimationID models.AssetScanEstimationID, params models.PatchAssetScanEstimationsAssetScanEstimationIDParams) error { + var assetScanEstimation models.AssetScanEstimation + err := ctx.Bind(&assetScanEstimation) + if err != nil { + return sendError(ctx, http.StatusBadRequest, fmt.Sprintf("failed to bind request: %v", err)) + } + + // check that an asset scan estimation with that id exists. + _, err = s.dbHandler.AssetScanEstimationsTable().GetAssetScanEstimation(assetScanEstimationID, models.GetAssetScanEstimationsAssetScanEstimationIDParams{}) + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return sendError(ctx, http.StatusNotFound, fmt.Sprintf("asset scan estimation was not found. assetScanEstimationID=%v: %v", assetScanEstimationID, err)) + } + return sendError(ctx, http.StatusInternalServerError, fmt.Sprintf("failed to get asset scan estimation. assetScanEstimationID=%v: %v", assetScanEstimationID, err)) + } + + // PATCH request might not contain the ID in the body, so set it from + // the URL field so that the DB layer knows which object is being updated. + if assetScanEstimation.Id != nil && *assetScanEstimation.Id != assetScanEstimationID { + return sendError(ctx, http.StatusBadRequest, fmt.Sprintf("id in body %s does not match object %s to be updated", *assetScanEstimation.Id, assetScanEstimationID)) + } + assetScanEstimation.Id = &assetScanEstimationID + + updatedAssetScanEstimation, err := s.dbHandler.AssetScanEstimationsTable().UpdateAssetScanEstimation(assetScanEstimation, params) + if err != nil { + var validationErr *common.BadRequestError + var conflictErr *common.ConflictError + var preconditionFailedErr *databaseTypes.PreconditionFailedError + switch true { + case errors.As(err, &conflictErr): + existResponse := &models.AssetScanEstimationExists{ + Message: utils.PointerTo(conflictErr.Reason), + AssetScanEstimation: &updatedAssetScanEstimation, + } + return sendResponse(ctx, http.StatusConflict, existResponse) + case errors.As(err, &validationErr): + return sendError(ctx, http.StatusBadRequest, err.Error()) + case errors.As(err, &preconditionFailedErr): + return sendError(ctx, http.StatusPreconditionFailed, err.Error()) + default: + return sendError(ctx, http.StatusInternalServerError, fmt.Sprintf("failed to update asset scan estimation in db. assetScanEstimationID=%v: %v", assetScanEstimationID, err)) + } + } + + return sendResponse(ctx, http.StatusOK, updatedAssetScanEstimation) +} +func (s *ServerImpl) PutAssetScanEstimationsAssetScanEstimationID(ctx echo.Context, assetScanEstimationID models.AssetScanEstimationID, params models.PutAssetScanEstimationsAssetScanEstimationIDParams) error { + var assetScanEstimation models.AssetScanEstimation + err := ctx.Bind(&assetScanEstimation) + if err != nil { + return sendError(ctx, http.StatusBadRequest, fmt.Sprintf("failed to bind request: %v", err)) + } + + // check that an asset scan estimation with that id exists. + _, err = s.dbHandler.AssetScanEstimationsTable().GetAssetScanEstimation(assetScanEstimationID, models.GetAssetScanEstimationsAssetScanEstimationIDParams{}) + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return sendError(ctx, http.StatusNotFound, fmt.Sprintf("asset scan estimation was not found. assetScanEstimationID=%v: %v", assetScanEstimationID, err)) + } + return sendError(ctx, http.StatusInternalServerError, fmt.Sprintf("failed to get asset scan estimation. assetScanEstimationID=%v: %v", assetScanEstimationID, err)) + } + + // PUT request might not contain the ID in the body, so set it from + // the URL field so that the DB layer knows which object is being updated. + if assetScanEstimation.Id != nil && *assetScanEstimation.Id != assetScanEstimationID { + return sendError(ctx, http.StatusBadRequest, fmt.Sprintf("id in body %s does not match object %s to be updated", *assetScanEstimation.Id, assetScanEstimationID)) + } + assetScanEstimation.Id = &assetScanEstimationID + + updatedAssetScanEstimation, err := s.dbHandler.AssetScanEstimationsTable().SaveAssetScanEstimation(assetScanEstimation, params) + if err != nil { + var validationErr *common.BadRequestError + var conflictErr *common.ConflictError + var preconditionFailedErr *databaseTypes.PreconditionFailedError + switch true { + case errors.As(err, &conflictErr): + existResponse := &models.AssetScanEstimationExists{ + Message: utils.PointerTo(conflictErr.Reason), + AssetScanEstimation: &updatedAssetScanEstimation, + } + return sendResponse(ctx, http.StatusConflict, existResponse) + case errors.As(err, &validationErr): + return sendError(ctx, http.StatusBadRequest, err.Error()) + case errors.As(err, &preconditionFailedErr): + return sendError(ctx, http.StatusPreconditionFailed, err.Error()) + default: + return sendError(ctx, http.StatusInternalServerError, fmt.Sprintf("failed to update asset scan estimation in db. assetScanEstimationID=%v: %v", assetScanEstimationID, err)) + } + } + + return sendResponse(ctx, http.StatusOK, updatedAssetScanEstimation) +} diff --git a/pkg/apiserver/rest/scan_estimation_controller.go b/pkg/apiserver/rest/scan_estimation_controller.go new file mode 100644 index 000000000..bf897a269 --- /dev/null +++ b/pkg/apiserver/rest/scan_estimation_controller.go @@ -0,0 +1,152 @@ +package rest + +import ( + "errors" + "fmt" + "net/http" + + "github.com/labstack/echo/v4" + + "github.com/openclarity/vmclarity/api/models" + "github.com/openclarity/vmclarity/pkg/apiserver/common" + databaseTypes "github.com/openclarity/vmclarity/pkg/apiserver/database/types" + "github.com/openclarity/vmclarity/pkg/shared/utils" +) + +func (s *ServerImpl) GetScanEstimations(ctx echo.Context, params models.GetScanEstimationsParams) error { + scanEstimations, err := s.dbHandler.ScanEstimationsTable().GetScanEstimations(params) + if err != nil { + return sendError(ctx, http.StatusInternalServerError, fmt.Sprintf("failed to get scan estimations from db: %v", err)) + } + + return sendResponse(ctx, http.StatusOK, scanEstimations) +} +func (s *ServerImpl) PostScanEstimations(ctx echo.Context) error { + var scanEstimation models.ScanEstimation + err := ctx.Bind(&scanEstimation) + if err != nil { + return sendError(ctx, http.StatusBadRequest, fmt.Sprintf("failed to bind request: %v", err)) + } + + createdScanEstimation, err := s.dbHandler.ScanEstimationsTable().CreateScanEstimation(scanEstimation) + if err != nil { + var conflictErr *common.ConflictError + var validationErr *common.BadRequestError + switch true { + case errors.As(err, &conflictErr): + existResponse := &models.ScanEstimationExists{ + Message: utils.PointerTo(conflictErr.Reason), + ScanEstimation: &createdScanEstimation, + } + return sendResponse(ctx, http.StatusConflict, existResponse) + case errors.As(err, &validationErr): + return sendError(ctx, http.StatusBadRequest, err.Error()) + default: + return sendError(ctx, http.StatusInternalServerError, fmt.Sprintf("failed to create scan estimation in db: %v", err)) + } + } + + return sendResponse(ctx, http.StatusCreated, createdScanEstimation) +} +func (s *ServerImpl) DeleteScanEstimationsScanEstimationID(ctx echo.Context, scanEstimationID models.ScanEstimationID) error { + success := models.Success{ + Message: utils.PointerTo(fmt.Sprintf("scan estimation %v deleted", scanEstimationID)), + } + + if err := s.dbHandler.ScanEstimationsTable().DeleteScanEstimation(scanEstimationID); err != nil { + if errors.Is(err, databaseTypes.ErrNotFound) { + return sendError(ctx, http.StatusNotFound, fmt.Sprintf("ScanEstimation with ID %v not found", scanEstimationID)) + } + return sendError(ctx, http.StatusInternalServerError, fmt.Sprintf("failed to delete scan estimation from db. scanEstimationID=%v: %v", scanEstimationID, err)) + } + + return sendResponse(ctx, http.StatusOK, &success) +} +func (s *ServerImpl) GetScanEstimationsScanEstimationID(ctx echo.Context, scanEstimationID models.ScanEstimationID, params models.GetScanEstimationsScanEstimationIDParams) error { + scanEstimation, err := s.dbHandler.ScanEstimationsTable().GetScanEstimation(scanEstimationID, params) + if err != nil { + if errors.Is(err, databaseTypes.ErrNotFound) { + return sendError(ctx, http.StatusNotFound, fmt.Sprintf("ScanEstimation with ID %v not found", scanEstimationID)) + } + return sendError(ctx, http.StatusInternalServerError, fmt.Sprintf("failed to get scan estimation from db. id=%v: %v", scanEstimationID, err)) + } + return sendResponse(ctx, http.StatusOK, scanEstimation) +} +func (s *ServerImpl) PatchScanEstimationsScanEstimationID(ctx echo.Context, scanEstimationID models.ScanEstimationID, params models.PatchScanEstimationsScanEstimationIDParams) error { + var scanEstimation models.ScanEstimation + err := ctx.Bind(&scanEstimation) + if err != nil { + return sendError(ctx, http.StatusBadRequest, fmt.Sprintf("failed to bind request: %v", err)) + } + + // PATCH request might not contain the ID in the body, so set it from + // the URL field so that the DB layer knows which object is being updated. + if scanEstimation.Id != nil && *scanEstimation.Id != scanEstimationID { + return sendError(ctx, http.StatusBadRequest, fmt.Sprintf("id in body %s does not match object %s to be updated", *scanEstimation.Id, scanEstimationID)) + } + scanEstimation.Id = &scanEstimationID + + updatedScanEstimation, err := s.dbHandler.ScanEstimationsTable().UpdateScanEstimation(scanEstimation, params) + if err != nil { + var validationErr *common.BadRequestError + var conflictErr *common.BadRequestError + var preconditionFailedErr *databaseTypes.PreconditionFailedError + switch true { + case errors.Is(err, databaseTypes.ErrNotFound): + return sendError(ctx, http.StatusNotFound, fmt.Sprintf("ScanEstimation with ID %v not found", scanEstimationID)) + case errors.As(err, &conflictErr): + existResponse := &models.ScanEstimationExists{ + Message: utils.PointerTo(conflictErr.Reason), + ScanEstimation: &updatedScanEstimation, + } + return sendResponse(ctx, http.StatusConflict, existResponse) + case errors.As(err, &validationErr): + return sendError(ctx, http.StatusBadRequest, err.Error()) + case errors.As(err, &preconditionFailedErr): + return sendError(ctx, http.StatusPreconditionFailed, err.Error()) + default: + return sendError(ctx, http.StatusInternalServerError, fmt.Sprintf("failed to update scan estimation in db. scanEstimationID=%v: %v", scanEstimationID, err)) + } + } + + return sendResponse(ctx, http.StatusOK, updatedScanEstimation) +} +func (s *ServerImpl) PutScanEstimationsScanEstimationID(ctx echo.Context, scanEstimationID models.ScanEstimationID, params models.PutScanEstimationsScanEstimationIDParams) error { + var scanEstimation models.ScanEstimation + err := ctx.Bind(&scanEstimation) + if err != nil { + return sendError(ctx, http.StatusBadRequest, fmt.Sprintf("failed to bind request: %v", err)) + } + + // PUT request might not contain the ID in the body, so set it from the + // URL field so that the DB layer knows which object is being updated. + if scanEstimation.Id != nil && *scanEstimation.Id != scanEstimationID { + return sendError(ctx, http.StatusBadRequest, fmt.Sprintf("id in body %s does not match object %s to be updated", *scanEstimation.Id, scanEstimationID)) + } + scanEstimation.Id = &scanEstimationID + + updatedScanEstimation, err := s.dbHandler.ScanEstimationsTable().SaveScanEstimation(scanEstimation, params) + if err != nil { + var validationErr *common.BadRequestError + var conflictErr *common.ConflictError + var preconditionFailedErr *databaseTypes.PreconditionFailedError + switch true { + case errors.Is(err, databaseTypes.ErrNotFound): + return sendError(ctx, http.StatusNotFound, fmt.Sprintf("ScanEstimation with ID %v not found", scanEstimationID)) + case errors.As(err, &conflictErr): + existResponse := &models.ScanEstimationExists{ + Message: utils.PointerTo(conflictErr.Reason), + ScanEstimation: &updatedScanEstimation, + } + return sendResponse(ctx, http.StatusConflict, existResponse) + case errors.As(err, &validationErr): + return sendError(ctx, http.StatusBadRequest, err.Error()) + case errors.As(err, &preconditionFailedErr): + return sendError(ctx, http.StatusPreconditionFailed, err.Error()) + default: + return sendError(ctx, http.StatusInternalServerError, fmt.Sprintf("failed to save scan estimation in db. scanEstimationID=%v: %v", scanEstimationID, err)) + } + } + + return sendResponse(ctx, http.StatusOK, updatedScanEstimation) +}